- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九篇 章 VHDL综合 VHDL语言 ppt.ppt
9.1 VHDL综合
综合就是将软件描述与硬件结构相联系的关键步骤,是文字描述与硬件实现的一做桥梁。综合就是将电路的高级语言转换成低级的、可与FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件或程序。;9.3 寄存器的引入方法
寄存器的引入通常使用WAIT和IF语句。
引入寄存器需要注意以下几点:
(1)一个进程中只能引入一种类型的寄存器,它们可以分为锁存器、有异步置位或复位的锁存器、触发器、有异步复位或同步置位的触发器。
(2)在IF_THEN或IF_THEN_ELSE语句中,只能存在一个边沿测试描述分句。这就是说,由一个进程综合得到的电路只能受控于一个时钟信号,并是一个同步逻辑模块(包括异步进程)。; (3)边沿描述表达式不能作为操作数来对待,不能作为一个函数的变量。
(4)引入寄存器的优选语句应该是IF语句,因为口语句更容易控制寄存器的引入。
(5)含有边沿检测子句的IF语句可以出现在进程的任何地方,此进程必须将所有可读入进程的信号,包括边沿信号全部列入敏感表。
(6)一般情况下,不要将用于产生寄存器的赋值语句放在IF(边沿)语句的ELSE条件分支上,但可以放在ELSIF子句上。;9.3.1 容易发生的错误 ;(1)程序9-1进程中的描述方式是错误的,因为在一个进程中引入了两个边沿检测子句。
[程序9-1]
PROCESS(clk_a,clk_b)
BEGIN
IF(clk_a’EVENT AND clk_a=’1’)
a=b;
END IF;
IF(clk_b’EVENT AND clk_b=’1’)
c=b;
END IF;
END PROCESS; ; (4)以下描述的错误是将边沿表达式当成了操作数。
IF NOT(clock’EVENT AND clock=’1’) THEN ……; (5)在条件语句中,由于条件涵盖的不完整,综合器将引入锁存器,这是不希望发生的事情。在程序9-4的IF语句中,由于没有ELSE语句,将引入一个锁存器。引入存器将gate当成了自己的时钟信号,data作为数据输入。 ;[程序9-4]
PROCESS(gate,data)
BEGIN
IF(gate=’1’,) THEN
q=data;
END IF;
END PROCESS;; (6)锁存器的引入是为了能使信号和变量保持状态,这种状态必须保持到下一次赋值为止。但是,在子程序中,由于变量具有局部特性,每当调用子程序时,其中的变量都要被初始化,所以在子程序中定义的变量不可能引出锁存器。 ;程序9-5所描述的电路中不可能产生锁存器。
[程序9-5]
FUNCTION my_func(data,gate: BIT) return bit is
VARIABLE s1:BIT;
BEGIN
IF(gate=’1’) THEN
s1:=gate;
END;
………
q=my_func(data,gate);
………; (7)误将输出赋值信号放在了进程内部。从程序9-6可以判断,设计者的本意是希望将锁存在信号工和B中的数据向A和H端口输出,但误将赋值语句放在了进程内,结果导致综合后的电路中多了两个不必要的寄存器(如图9-1所示)。; (8)由于不当地使用了信号赋值语句,程序9-8中被引人了不必要的寄存器。
[程序9-8]
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY EXAP IS
PORT(clk,a,b:IN STD_LOGIC;
y:OUT STD_LOGIC);
END EXAP;
ARCHITECTURE behav OF EXAP
SIGNAL x:STD_LOGIC;;BEGIN
PROCESS
BEGIN
WAIT UNTIL CLK=‘1’;
x=‘0’;
y =‘0’;
IF a=b THEN
x=‘1’;
END IF;
IF x=‘1’ THEN
y =‘1’;
END IF;
END PROCESS
END behav;;9.3.2 常规寄存器的引入
描述寄存器行为有两种常用的语句方法,即IF_THEN语句和WAIT语句。
使用条件语句描述时序逻辑的一般方式如下:
PROCESS(cl
您可能关注的文档
- 第三篇 章几何作图及平面图形的绘制 园林工程制图课件.ppt
- 第三篇 章劳动力市场均衡 劳动经济学课件.ppt
- 第三篇 章包装件的流通环境 包装动力学.ppt
- 第三篇 章化学反应热力学 物化课件(修改版1209).ppt
- 第三篇 章原料乳的处理及消毒奶的加工 畜产食品工艺学课件.ppt
- 第三篇 章土壤肥力的物质基础土壤学课件.ppt
- 第三篇 章如何解读利润表 财务报表阅读分析课件.ppt
- 第三篇 章小结 毛概 .ppt
- 第三篇 章工程师的责任 工程伦理学课件.ppt
- 第三篇 章市场比较法 房地产估价解析 .ppt
- 数据仓库:Redshift:Redshift与BI工具集成.docx
- 数据仓库:Redshift:数据仓库原理与设计.docx
- 数据仓库:Snowflake:数据仓库成本控制与Snowflake定价策略.docx
- 大数据基础:大数据概述:大数据处理框架MapReduce.docx
- 实时计算:GoogleDataflow服务架构解析.docx
- 分布式存储系统:HDFS与MapReduce集成教程.docx
- 实时计算:Azure Stream Analytics:数据流窗口与聚合操作.docx
- 实时计算:Kafka Streams:Kafka Streams架构与原理.docx
- 实时计算:Kafka Streams:Kafka Streams连接器开发与使用.docx
- 数据仓库:BigQuery:BigQuery数据分区与索引优化.docx
文档评论(0)