返回介绍

17.7.8 序列上的条件

发布于 2020-09-09 22:55:53 字数 1513 浏览 1011 评论 0 收藏 0

序列经常发生在某种假设的条件下以获得正确的行为。一个逻辑条件必须保持为“真”,例如在处理一个事物的时候。而且,在处理一个事务的时候,是禁止出现某些值的 。这样的情形可以直接使用下面的结构来表达:

sequence_expr ::=       // 引用自附录A.2.10
    ...
  | expression_or_dist throughout sequence_expr

语法17-10 — throughout结构的语法(摘录自附录A)

exp throughout seq结构是下列语句的缩写:

(exp) [*0:$] intersect seq

对于复合序列exp throughout seq,只要seq在一个有限的连续时钟标记间隔上匹配并且exp在这个间隔的每一个时钟标记上为“真”,那么这个复合序列就在这段间隔上匹配。

图17-11演示了如下的例子。

sequence burst_rule1;
    @(posedge mclk)
        $fell(burst_mode) ##0
        (!burst_mode) throughout (##2 ((trdy==0)&&(irdy==0)) [*7]);
endsequence

图17-11 — throughout限制失败的匹配

图17-11演示了起始于时钟标记2处针对序列burst_rule1的计算尝试。由于信号burst_mode在时钟标记1处为高并且在时钟标记2处为低,所以$fell(burst_mode)在时钟标记2处为“真”。为了实现burst_rule1的匹配,要求burst_mode的值在起始于时钟标记2处的子序列(##2 ((trdy==0)&&(irdy==0)) [*7])的一次匹配期间内为低。这个子序列在时钟标记2到时钟标记10之间匹配。然而,在时钟标记9处burst_mode变为高,因此,根据througout的规则,序列的匹配失败。

相反,如果信号burst_mode能够至少在时钟标记10处保持为低,那么从时钟标记2到时钟标记10之间burst_rule1会有一次匹配,如图17-12所示。

图17-12 — throughout限制成功的匹配

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文