
testbench
initial begin: TEST1
@(posedge s1);
$display("start to get data");
@(posedge s2);
@(posedge clk);
$display("The data is %h", data_in);
end
说明:s1的上升沿,s2的上升沿以及对应的clk的第二个时钟上升沿实际上是在一个时间点上,因此打印出的信息是
start to get data
The data is d1
若以上代码改写为:
initial begin: TEST1
@(posedge s1);
$display("start to get data");
#2; //加一个小延时,小于一个clk周期
@(posedge s2);
@(posedge clk);
$display("The data is %h", data_in);
end
则打印出来的信息为:
start to get data
The data is d2
本文探讨了使用Verilog进行时序控制的方法,通过两个不同的initial块对比展示如何利用小延时来改变信号的采样时刻,从而影响最终的数据读取结果。这种技巧对于精确控制时序逻辑行为尤为重要。

1898

被折叠的 条评论
为什么被折叠?



