【问题标题】:In Verilog, how to wait for level-sensitive and edge-sensitive events simultaneously?在 Verilog 中,如何同时等待电平敏感和边缘敏感事件?
【发布时间】:2017-03-28 06:16:24
【问题描述】:

在 Verilog 中编写测试台时,在“任务”中我需要等待这样的事件发生,即:而 signal_a1'b1signal_b 有一个 posedge。但是,不幸的是,我尝试了但没有得到很好的解决方案:

@(tb_hready and posedge tb_hclk)        ;//(1)
wait(tb_hready) @(posedge tb_hclk)      ;//(2)
wait(tb_hready && posedge tb_hclk)      ;//(3)
if(tb_hready) @(posedge tb_hclk)        ;//(4)

(1)是语法错误;

(2) 语法不错,但是会先等tb_hready变高,再tb_hready再变低再拾取posege; -- 这不是我想要的。

(3)是语法错误;

(4) 语法很好,但没有实现我想要的,在这样的表达中,它似乎根本没有“等待” tb_hready 变高。

我认为这应该是一件相当容易的事情,但我就是无法得到我想要的东西,Google 也没有太大帮助。有人有什么建议吗?谢谢~~

【问题讨论】:

  • 等待signal_b 上升沿并在发生时检查signal_a 是否处于活动状态会不会更容易?
  • 那代码会是怎样的呢?
  • @(posedge signal_b) if (signal_a)
  • 知道了,谢谢哥们~~@Prashant

标签: verilog wait test-bench


【解决方案1】:
@(posedge tb_hclk iff tb_hready)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多