如何在Verilog中一个周期后检查数据?

时间:2016-04-12 07:43:40

标签: verilog

在时钟的位置,如果我复位,我想在复位后的一个周期检查数据是否为零。我无法弄清楚如何在重置后的一个周期检查数据。这是我想出来的,但我知道这是错误的,因为我在同一个时钟周期检查数据,重置是高。请有人告诉我如何在verilog中执行此操作?

always @(posedge clk)
   if(reset)
      if(data == 0) 
         $display("ok");
      else 
         $display("error");

2 个答案:

答案 0 :(得分:0)

您似乎不想尝试使用DiYhh.png块 试验台。在您的测试平台中使用always循环是个好主意 forever块的替代方案,因为它可以具有一定的灵活性 控制你的测试平台。

有人告诉我:always块用于RTL设计和always 循环用于RTL验证

你可以试试这个:

forever

答案 1 :(得分:0)

有一种简单的方法可以做到这一点:

always @(posedge clk)
   reset_q <= reset;

always @(posedge clk)
   if(reset_q == 1) && (data == 0) 
      $display("reset ok");
   else 
      $display("reset error");

我将这些放在单独的块中,以强调一个是对复位信号进行流水线操作而另一个是检查逻辑,但它们可以存在于同一个块中。