集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 63|回复: 2

【verilog入门】赋值运算符‘<=‘和‘=‘

[复制链接]
在Verilog中,<= 和 = 都是赋值运算符,但它们有不同的用途和行为:

1. 阻塞赋值 (=)
用途:用于组合逻辑和过程块内的赋值。
行为:立即执行赋值操作。
使用场景:
在 initial 和 always 块中,阻塞赋值语句在赋值发生时立即更新变量的值,阻塞后续语句的执行,直到赋值完成。
常用于组合逻辑。
示例:

always @(*) begin
  a = b;  // 阻塞赋值
  c = a;  // a 在此语句之前已被更新
end
2. 非阻塞赋值 (<=)
用途:用于时序逻辑(特别是在时钟触发的过程块中)。
行为:在当前时间步的末尾更新变量的值,不阻塞后续语句的执行。
使用场景:
在 always 块中,非阻塞赋值语句将在时间步结束时更新变量的值。不会立即更新变量的值,而是将赋值推迟到时间步的末尾。
常用于时序逻辑,以模拟寄存器行为。
示例:

always @(posedge clk) begin
  a <= b;  // 非阻塞赋值
  c <= a;  // a 在此语句执行时尚未更新
end
主要区别总结
执行顺序:
=:立即赋值并更新变量,阻塞后续语句的执行。
<=:在时间步结束时赋值,不阻塞后续语句的执行。
适用场景:
=:适用于组合逻辑和需要立即更新变量的情况。
<=:适用于时序逻辑,特别是寄存器行为的建模。
使用非阻塞赋值 (<=) 可以确保在一个时钟周期内所有的赋值操作同时发生,这对于时序逻辑的正确建模是非常重要的。而使用阻塞赋值 (=) 则可以确保在组合逻辑中,前一个赋值操作完成后,后续操作才能进行。
大鹏 发表于 7 天前 | 显示全部楼层
【verilog入门】赋值运算符‘<=‘和‘=‘

点评

海!外直播 bitly.net/nnqnn 禁闻视频 bitly.net/hhxhh 本来,英国脱欧非常复杂,难言好坏。但是,一看到环球某报批评脱欧,大家就支持英国脱欧了。呵呵!看这个就知道了  发表于 7 天前
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-5 14:02 , Processed in 0.331272 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表