第九篇 章 VHDL综合 VHDL语言 ppt.pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

youngyu0329 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档