返回介绍

8.11 电平敏感的序列控制

发布于 2020-09-09 22:55:48 字数 781 浏览 1076 评论 0 收藏 0

我们可以延迟过程代码的执行直到一个序列终结状态为“真”。为了达到这个目的,我们可以使用电平敏感的wait语句并结合内建方法triggered来实现,这个内建方法能够返回一个命名序列当前的结束状态。

如果指定的序列已经在特定的时间点(在当前的时间步值内)上到达了它的结束点,那么triggered方法返回“真”,否则返回“假”。一个序列的触发状态在Observe区域内设置,并且在时间步值的余下部分保持(也就是说直到仿真时间进入到下一步)。

例如:

sequence abc;
    @(posedge clk) a ##1 b ##1 c;
endsequence

sequence de;
    @(negedge clk) d ##[2:5] e;
endsequence

program check;
    initial begin
        wait(abc.triggered || de.triggered);

        if(abc.triggered)
            $display("abc succeeded");

        if(de.triggered)
            $display("de succeeded");

        L2 : ...
    end
endprogram

在上面的例子中,程序check中的initial块或者等待序列abc的结束点(成功)或者等待序列de的结束点。当其中一个条件满足的时候,wait语句解除进程的阻塞,它显示引起进程解除阻塞的序列,然后继续执行标记为L2的语句。

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

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

发布评论

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