【FPGA】【Verilog】【基础模块】“阻塞”与非阻塞”的对比

本文通过实例对比分析了FPGA设计中Verilog语言的阻塞赋值(blocking)与非阻塞赋值(non-blocking)的区别。在Testbench中,展示了两者在时序上的不同表现,并通过练习进一步巩固这一概念。同时,通过for语句的应用,说明了在特定情境下非阻塞赋值可能导致的功能异常。

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

module blocking(clk,a,b,c);
	output [3:0] b,c;
	input [3:0] a;
	input clk;
	
	reg [3:0] b,c;
	
	always @(posedge clk)
		begin
			b = a;
			c = b;
			$display("Blcoking : a = %d ,b = %d, c = %d." ,a,b,c);
		end
endmodule 
module non_blocking(clk,a,b,c);
	output 	[3:0] b,c;
	input 	[3:0] a;
	input		clk;
	reg [3:0] b,c;
always @(posedge clk)
 begin
	b <= a;
	c <= b;
	$display("Non_Blocking: a = %d, b = %d, c = %d.",a,b,c);
 end
 endmodule 

    Testbench:

`timescale 1 ns / 100 ps 
`include "C:/*****/blocking.v"
`include "C:/*****/non_blocking.v"
//前面两个include中填入上述两个module的文件地址
module compareTop;
	wire  [3:0] b1,c1,b2,c2;
	reg	[3:0] a;
	reg 		 clk;
	
	initial 
	begin 
		clk = 0;
		forever #50 clk = ~clk;	//frequency = 10M
	end
	
	initial
	begin 
		a = 4'h3;
 $display("____________________________");
 # 100 a = 4'h7;
 $display("_______________
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值