FPGA学习笔记:单次调用@(posedge clk)(没有always)

it2025-04-18  4

之前看小梅哥视频,对下面语句有所疑惑:

不知道这个@(posedge)触发后只执行一句还是后面的都执行,能不能加begin end只触发某几句;如果能用begin end的话,没有触发上升沿那么这个语句会不会阻塞后面的语句,自己就写了个testbench,代码如下:

`timescale 1ns/1ns `define tm 20 module tb(); reg clk; reg test1; reg test2; reg test3; reg clk1; initial clk = 1'b0; always#(`tm/2) clk = ~clk; initial begin test1 = 1'b0; test2 = 1'b0; test3 = 1'b0; clk1 = 1'b0; #(`tm*3); @(posedge clk)begin test1 = 1'b1; test2 = 1'b1; end #(`tm*3); @(posedge clk1)begin test3 = 1'b1; end #(`tm*3); test1 = 1'b0; test2 = 1'b0; test3 = 1'b0; @(posedge clk)begin test1 = 1'b1; end #(`tm*10); $stop; end endmodule

波形结果:

结论是会阻塞,@(posedge clk)语句其实等同于wait。

最新回复(0)