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

本文通过一个测试平台示例,探讨了Verilog中@(posedge)触发器的行为特性及其如何影响后续语句的执行。实验表明,@(posedge)语句会阻塞后续操作,类似于wait指令的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

不知道这个@(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。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值