阻塞赋值和非阻塞赋值的区别

阻塞赋值:

往往与触发沿没有关系,只与输入电平的变化有关系。它的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句,此时不允许有来自任何其他 verilog语句的干扰,直到现行的赋值完成,才允许下一条的赋值语句的执行。
串行块( begin-end)中,各条阻塞赋值语句将以它们在顺序块中的排列次序依次执行。

代码如下:

a = 1; b = 2; c = 3;
begin 
	a = b + 1;  //①
	b = a + 2;  //②
	c = a - 1;  //③
end

运行顺序是:① ---->②----->③,依次运行,结果为:a = 3;b = 5;c = 2。 将右边的值赋给左边变量。一般用于组合逻辑电路。

非阻塞赋值:

对应的电路结构往往与触发沿有关系,只有在触发沿的时刻才能进行非阻塞赋值。
它的操作可以看作为两个步骤的过程:在赋值开始时刻,计算赋值号右边的语句。在赋值结束时刻,更新赋值号左边的语句。
在计算非阻塞语句赋值号右边的语句和更新赋值号左边的语句期间,允许其他的 Verilog语句同时进行操作,非阻塞操作只能用于对寄存器类型变量进行赋值,因此只能用于“ initial”和“ always”块中,不允许用于连续赋值assign

代码如下:

a = 1; b = 2; c = 3;
begin 
	a <= b + 1;  //①
	b <= a + 2;  //②
	c <= a - 1;  //③
end

程序分析:① ----②-----③是并向执行的,在begin中“<=”右边的语句先执行完,执行完end后,将“<=”左边的值更新,a = 3;b = 3;c = 0;一般用于时序逻辑电路。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琅中之嶹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值