在时钟的位置,如果我复位,我想在复位后的一个周期检查数据是否为零。我无法弄清楚如何在重置后的一个周期检查数据。这是我想出来的,但我知道这是错误的,因为我在同一个时钟周期检查数据,重置是高。请有人告诉我如何在verilog中执行此操作?
always @(posedge clk)
if(reset)
if(data == 0)
$display("ok");
else
$display("error");
答案 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");
我将这些放在单独的块中,以强调一个是对复位信号进行流水线操作而另一个是检查逻辑,但它们可以存在于同一个块中。