- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
时序电路的VHDL设计
第5章
5.1基本时序元件的VHDL表述
基本时序元件主要包括不同结构功能和不同用途的触发器和锁存器,它们是时序逻辑电路,乃至实用数字系统构建的最基本单元。
掌握这些基础单元的VHDL表述方法,有利于深入了解和掌握VHDL编程技术和系统设计方法。
5.1.1D触发器的VHDL描述
最简单、最常用、最具代表性的时序元件是D触发器,它是现代数字系统设计中最基本的底层时序单元,甚至是ASIC设计的标准单元。JK和T等触发器都可由D触发器构建而来。D触发器的描述包含了VHDL对时序电路的最基本和典型的表达方式,同时也包含了VHDL许多最具特色的语言现象。
具有边沿触发性能的D触发器,如图5-1所示,其工作时序如图5-2所示。波形显示,只有当时钟上升沿到来时,其输出Q的数值才会随
输入口D的数据而改变,在这里称之为更新。
例5-1给出了VHDL对D触发器的一种常用描述形式。
【例5-1】
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYDFF1IS
PORT(CLK,D:INSTD_LOGIC;
Q:OUTSTD_LOGIC);
END;
ARCHITECTUREbhvOFDFF1IS
SIGNALQ1:STD_LOGIC;
BEGIN
PROCESS(CLK,Q1)BEGIN
IFCLKEVENTANDCLK=11THENQ1=D;
ENDIF;
ENDPROCESS;
Q=Q1;
ENDbhv;
5.1基本时序元件的VHDL表述
5.1.1D触发器的VHDL描述
图5-1D触发器模块图
ENA
CLR
Q
5.1基本时序元件的VHDL表述
1.上升沿检测表达式和信号属性函数EVENT
例5-1中的条件语句的判断表达式“CLKEVENTANDCLK=‘1’”
是用于检测时钟信号CLK的上升沿的,即如果检测到CLK的上升沿,此表达式将输出TRUE。VHDL通过以下表达式来测定某信号的跳变情况:
信号名EVENT
如果CLK的数据类型定义为STD_LOGIC,则在时间段内,CLK从其
数据类型允许的9种值中的任何一个值向另一值跳变,如由‘0变成‘1’、由‘1变成‘0’或由‘Z’变成‘0,都认为发生了事
件,于是此表达式将输出一个布尔值TRUE,否则为FALSE。
如果将以上短语“CLK`EVENT”改成语句“CLK`EVENTAND
CLK=‘1”,则表示一旦“CLK`EVENT”在时间内测得CLK有一个跳变,而此小时间段之后又测得CLK为高电平‘1,即满足此语句右
侧的CLK=‘1’的条件,于是二者逻辑相与(AND)后输出为TRUE
(对应数值为‘1),从而IF语句推断CLK在此刻有了一个上升沿。
5.1.1D触发器的VHDL描述
5.1基本时序元件的VHDL表述
2.不完整条件语句与时序电路
当CLK发生变化时,PROCESS语句被启动,IF语句将测定表达式“CLKEVENTANDCLK=‘1”是否满足条件,如果CLK的确出现上升沿信号,于是执行语句Q1=D,将D的数据向内部信号Q1赋值,即更新Q1,并结束IF语句。最后将Q1的值向端口信号Q输出。
是否可认为CLK上升沿测定语句“CLKEVENTANDCLK=‘1”为综合器构建时序电路的必要描述(或依据)?回答是“否”。
还需再考查如果CLK没有发生变化,即没出现上升沿方式跳变时
IF语句的行为。这时由于IF语句不满足条件,即条件表达式给出
FALSE,于是将跳过赋值表达式Q1=D,不执行此赋值表达式而结束IF语句。由于在此IF语句中没有利用通常的ELSE语句明确指出当IF语句不满足条件时作何操作,显然这是一种不完整的条件语句处理
方式
文档评论(0)