- 1、本文档共269页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
(1)信号属性函数’EVENT对确定信号的边沿是十分有效的。例如,在对D触发器进行描述时,需要检测时钟脉冲的上升沿,当上升沿到来时,D触发器的输入值才传送到输出端,并锁存此值,直到下一个时钟上升沿来到时止。
(2)信号属性函数’LAST_EVENT在VHDL程序中常常用作定时检查,如检查信号的建立时间等。【例6.34】阅读以下程序,分析信号属性函数语句的功能。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdffIS
GENERIC(setup_time:time);
PROT(d,clk:INSTD_LOGIC;
q:OUTSTD_LOGIC);
BEGIN s_t_check:PROCESS(clk)
BEGIN
IF(clkevenANDclk=1)THEN
ASSERT(dLAST_EVENT=setup_time)
REPORTsetuptimeerror.
SEVERITYERROR;
ENDIF;
ENDPROCESSs_t_check;
ENDdff;ARCHITECTURErtlOFdffIS
BEGIN
d_f:PROCESS(clk)
BEGIN
IF(clk‘evenANDclk=’1‘)THEN
q=d;
ENDIF;
ENDPROCESSd_f;
ENDrtl;(1)在实体说明部分,被动进程s_t_check用来检查建立时间;在结构体中,进程d_f完成D触发器的功能。
(2)每当时钟信号clk变化一次,被动进程s_t_check将被执行一次,断言语句将检查在建立时间期间输入端口d有无事件发生;属性函数d’LAST_EVENT将返回信号d自最近一次变化以来到现在所经历的时间;如果属性函数d’LAST_EVENT返回的时间值小于规定的建立时间(通过类属参数setup_time传递),这时被动进程s_t_check将会给出一个字符串“setuptimeerror”作为报警信息。6.3.3信号类属性
1.?T’DELAYED[(time)]
该属性用来建立一个与所加属性的信号同类型的信号,它是经过延时time时间后所得的延时信号。其语句格式为
//--------------------------------
T‘DELAYED(time)
---------------------------------//说明:
(1)?T’DELAYED(time)是一个应用十分广泛的信号类属性,它的典型应用是检查信号的保持时间。
(2)在硬件电路中,保持时间是指当时钟信号的边沿加于时钟端之前,加在触发器的输入信号需要保持稳定的时间。
(3)通常,在电路设计中要求输入端口信号的建立时间和保持时间应大于规定的时间,否则将会导致不稳定的事件发生。【例6.35】阅读下列描述D触发器的VHDL程序,分析信号类属性语句的功能。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYdffIS
GENERIC(setup_time,hold_time:time);
PROT(d,clk:INSTD_LOGIC;
q:OUTSTD_LOGIC);
BEGIN s_t_check:PROCESS(clk)
BEGIN
IF(clkevenANDclk=1)THEN
ASSERT(dLAST_EVENT=setup_time)
REPORTsetuptimeerror.
SEVERITYERROR;
ENDIF;
ENDPROCESSs_t_check; h_t_check:PROCESS(clkDELAYED(hold_time))
BEGIN
IF(clkDELAYED(hold_time)evenAND
clkDELAYED(hold_time)=1)THEN
ASSERT((dLAST_EVE
文档评论(0)