关于Verilog中的赋值问题

原作网址:http://zhidao.baidu.com/link?url=mgnbsHXze14-cB2ul5ZgqtU3iw8w9wVD4So32pssux-Kf4_kgpPju3Bb6eElcjAkby7FWexd4ntVO5L2fLuWE_


assign 语句后的赋值会生成组合逻辑,也就是从b到a会生成一条导线,将他们连接,b的值如果改变,a的值同时也会改变;

a<=b 这种赋值方式为“非阻塞赋值”,这种方式是等所在的begin....end块执行完毕后,才会把b的值赋给a,在这之前,a的值仍然保持原值。例如:

假设a中的值为十进制数 10,b为15,c为20;

begin
   b=a;     //b的值立即改变,现在b的值为10
   c=b;     //c的值立即改变,现在c的值为10
end

但是,以下例子又不同:

假设a中的值为十进制数 10,b为15,c为20
begin
   b<=a;     //b的值不立即改变,现在b的值仍为15
   c<=b;     //c的值不立即改变,现在c的值仍为20
end

begin块结束后,b被赋给a的值,b为10,c被赋给b的值,c为15。

发现了吗?实际上阻塞赋值生成了一个移位寄存器。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值