Verilog语法(三)——赋值语句

在 Verilog 中,阻塞赋值、非阻塞赋值和连续赋值是用于赋值操作的不同语法。它们之间的区别主要在于赋值时机和对后续代码执行的影响。

阻塞赋值

阻塞赋值使用等号 = 进行赋值,它的作用是在当前时钟周期内立即更新目标变量的值,然后继续执行下一条语句。因为它会阻塞后续语句的执行,所以称为阻塞赋值。阻塞赋值通常用于顺序逻辑电路中,例如在 always 块中使用。

下面是阻塞赋值的一个例子:


always @(posedge clk)
    a = b;

在上面的代码中,当时钟上升沿到来时,将 b 的值赋给 a,然后继续执行下一条语句。

非阻塞赋值

非阻塞赋值使用 <= 进行赋值,它的作用是在当前时钟周期内不立即更新目标变量的值,而是在下一个时钟周期生效。因此,它不会阻塞后续语句的执行,称为非阻塞赋值。在组合逻辑电路中,通常使用非阻塞赋值。

下面是非阻塞赋值的一个例子:


always @*
    y <= a&b;

在上面的代码中,将 a 和 b 的与运算结果赋给 y,这个赋值是非阻塞的,即在当前时钟周期内不会立即生效,而是在下一个时钟周期生效。

连续赋值

连续赋值通常用于模块实例化中,它的作用是

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值