《EDA技术及应用》第三章3.4VHDL顺序语句.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
属性STABLE的测试功能与EVENT相反,它是信号在Δ时间段内无事件发生,则返还TRUE值。 (CLOCKEVENT AND CLOCK=‘1’) (NOT CLOCKSTABLE AND CLOCK=1‘) 以上两句功能一样 (CLOCKEVENT AND CLOCK=‘1’) 对于普通的BIT数据类型的CLOCK,它只是有1和0两种取值,以上表述作为对信号上升沿到来的测试是正确的。 如果CLOCK的数据类型已定义为STD_LOGIC,则其可能的值有9种。则不能 “(CLOCK=‘1’)=TRUE”来推断Δ时刻前CLOCK一定是0。对于这种数据类型的时钟信号边沿检测,可用以下表达式来完成: RISING_EDGE(CLOCK) 这条语句只能用于标准逻辑位数据类型的信号,其用法如下: IF RISING_EDGE(CLOCK) THEN    或 WAIT UNTIL RISING_EDGE(CLOCK) 在实际使用中,EVENT比STABLE更常用。对于目前常用的VHDL综合器来说,EVENT只能用于IF和WAIT语句中。 2) 数据区间类属性 区间类属性有‘RANGE[(N)]和’REVERSE_RANGE[(N)],这类属性函数主要是对属性项目取值区间进行测试,返还的内容不是一个具体值,而是一个区间。对于同一属性项目,‘RANGE和’REVERSE_RANGE返回的区间次序相反,前者与原项目次序相同,后者相反,见下例。 【例3.40】 … SIGNAL RANGE1: IN STD_LOGIC_VECTOR(0 TO 7); … FOR I IN RANGE1RANGE LOOP … 本例中的FOR_LOOP语句与语句“FOR I IN 0 TO 7 LOOP”的功能是一样的,这说明RANGE1‘RANGE返回的区间即为位矢RANGE1定义的元素范围。如果用’REVERSE RANGE,则返回的区间相反,为(7 DOWNTO 0)。 3) 数值类属性 在VHDL中的数值类属性测试函数主要有LEFT, RIGHT,HIGH,LOW,它们的功能如表3.4所示。这些属性函数主要用于对属性目标的一些数值特性进行测试。例如: 【例3.41】 … PROCESS(CLOCK, A,B); TYPE OBJ IS ARRAY(0 TO 15) OF BIT; SIGNAL S1,S2:INTEGER; BEGIN S1=OBJRIGHT; S2=OBJLEFT; … 信号S1、S2获得的赋值分别为 15、0。 4) 数组属性LENGTH 此函数的用法同前,只是对数组的宽度或元素的个数进行测定。例如: … TYPE ARRY1 IS ARRAY (0 TO 7) OF BIT; VARIABLE WTH1:INTEGER; … WTH1:=ARRY1LENGTH; --WTH1=8 …   断言(ASSERT)语句   断言语句判断指定的条件是否为TRUE,如果为FALSE则报告错误。语句格式是: ASSERT 条件表达式 REPORT 字符串 SEVERITY 错误等级[SEVERITY_LEVEL]; 【例】 ASSERT NOT (S=‘1’ AND R=‘1’) REPORT BOTH VALUES OF SIGNALS S AND R ARE EQUAL TO‘1’ SEVERITY ERROR; 如果出现SEVERITY子句,则该子句一定要指定一个类型为SEVERITY_LEVEL的值。 SEVERITY_LEVEL共有如下四种可能的值: ● NOTE:在仿真时传递信息。 ● WARNING:用在非平常的情形,此时仿真过程仍可继续,但结果可能是不可预知的。 ● ERROR:用在仿真过程继续执行下去已经不可能的情况。 ● FAILURE:用在发生了致命错误,仿真过程必须立即停止的情况。   REPORT语句 REPORT语句类似于ASSERT语句,区别是它没有条件。其语句格式如下: REPORT 字符串 REPORT 字符串 SEVERITY SEVERITY_LEVEL; 【例】 WHILE COUNTER =100 LOOP IF COUNTER50 TH

文档评论(0)

autohhh + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档