3第3章 VHDL设计初步.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EDA 技术实用教程 第 3 章 VHDL设计初步 3.1 组合电路的VHDL描述 3.1.5 1位二进制全加器的VHDL描述 3.2 基本时序电路的VHDL描述 3.3 计数器的VHDL设计 3.4 多功能计数器的VHDL设计 习 题 习 题 习 题 习 题 习 题 习 题 3.3.3 计数器设计的其他表述方法 LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; USE IEEE.STD_LOGIC_UNSIGNED.ALL ; ENTITY CNT4 IS PORT ( CLK : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END ; 输入信号CLK定义为标准逻辑位STD_LOGIC,输出信号Q的数据类型为STD_LOGIC_VECTOR(3 DOWNTO 0),必须用IEEE库和1164程序包。 Q的端口模式是OUT,因此Q不能作为双向信号端口,必须定义一个信号SIGNAL,用于计数时Q=Q+1的自赋值模式。 SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0) ARCHITECTURE bhv OF CNT4 IS SIGNAL Q1 : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN Q1 = Q1 + 1 ; END IF; END PROCESS ; Q = Q1 ; END bhv; Q1是内部信号,不必定义方向,可利用Q1来完成Q=Q+1的累加任务 VHDL不允许在不同数据类型的操作数之间进行直接的操作或运算。其中Q1为STD_LOGIC_VECTOR,而1为整数。进行相加+操作,必须数据类型相同。 要进行运算,方法为调用运算符重载函数。调用“+”号的算符重载函数,完成整数与标准矢量间的加法运算,并使计算结果自动转换为位矢量。(P87) 3.3.3 计数器设计的其他表述方法 图3-12 4位加法计数器RTL电路(Synplify综合) 4位加法器的组成: 完成加1操作的纯组合电路加法器,右端输出的数始终比左端的数多1,它完成的是一个二进制码的转换功能,转换时间为此加法器的运算延迟时间。 4位边沿触发方式锁存器。纯时序电路,计数信号CLK实际上是锁存允许信号。 输出端还有一个反馈通道,一方面将锁存器中的数据向外输出,另一方面将此数反馈回加1器,以作为下一次累加的基数。 3.3.3 计数器设计的其他表述方法 图3-13 4位加法计数器工作时序 带有异步复位、同步加载及时钟使能的十进制计数器的设计 已知模计数器的实现(如十进制、12进制、30进制等等) SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0):=“0000”;--可设置16进制计数器 …… IF CLK’EVENT AND CLK=‘1’ THEN IF Q9 THEN Q=Q+1;--检测Q在当前时钟周期数值,若小于9,自赋值 ELSE Q=“0000”;--若大于等于9,清零,完成一次计数周期 END IF; …… SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0):=“0000”;--可设置16进制计数器 …… IF CLK’EVENT AND CLK=‘1’ THEN IF Q9 THEN Q=Q+1;--检测Q在当前时钟周期数值,若小于9,自赋值 ELSE Q=“0000”;--若大于等于9,清零,完成一次计数周期 END IF; …… 设置12进制计数器,需要把Q9改成Q11,完成计数模的改变。 若设置30进制计数器,条件判定需改成Q29,相应Q的位宽需要展宽至5位 SIGNAL Q : STD_LOGIC_VECTOR(4 DOWNTO 0) D触发器的使能EN的功能,当EN为高电平时,时钟的上升沿才有效。EN的功能是控制时钟CLK。即必须EN允许计数,才能进行计数。 IF EN=‘1’ THEN IF Q9 THEN Q=Q+1; ELSE Q=“0000”; …… 时钟使能和同步加载 时钟信号的输入 IF CLK’EVENT AND CLK=‘1’ THEN 当EN为0时,计数使能无效,执行至IF语句时跳出进程,保留Q原值

文档评论(0)

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

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

1亿VIP精品文档

相关文档