【Verilog】阻塞/非阻塞赋值

目录

阻塞赋值

非阻塞赋值

Verilog模块编码的8个原则


阻塞赋值

阻塞赋值使用的赋值运算符为"="

阻塞赋值的过程是立刻执行的,即阻塞赋值运算符右侧表达式求值完后立刻会更新至运算符左侧,并且这个执行的过程不受其他语句执行的影响,其后的语句只有当前的赋值操作执行完成后才能顺利执行

非阻塞赋值

非阻塞赋值使用的赋值运算符为"<="

非阻塞赋值执行过程为:当当前仿真时间槽(time-slot)开始分析计算获得右侧表达式的值,在当前时间槽执行结束时更新左侧表达式的值,在右侧表达式分析计算和左侧表达式被更新之前,任何其他事件都可以执行,同时也有可能修改已经计算完成的右侧表达式的值,即非阻塞赋值的过程不影响其他语句的执行

根据非阻塞赋值的特点,其赋值运算符左侧操作数只能作为寄存器类型,因此非阻塞赋值只能用于过程语句中(initial和always),不允许在连续赋值语句中使用非阻塞赋值

所谓阻塞的概念是指在同一个always块中,其后面的赋值语句从概念上是前一条赋值语句结束后开始赋值的

Verilog模块编码的8个原则

  • 时序电路建模时,用非阻塞赋值
  • 锁存器电路建模时,用非阻塞赋值
  • 用always块建立组合逻辑模型时,用阻塞赋值
  • 在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值
  • 在同一个always块中不要既用非阻塞赋值又用阻塞赋值
  • 不要在一个以上的always块中为同一个变量赋值
  • 用$strobe系统任务来显示用非阻塞赋值的变量值
  • 在赋值时不要使用#0延时

下面两段代码中in、q1、q2和q3的初值分别为0、1、2、3,那么经历1个时钟周期后,左侧q3的值和右侧q3的值分别变成了()

always@(posedge clk)begin

q1=in;

q2=q1;

q3=q2;

end

always@(posedge clk)begin

q1<=in;

q2<=q1;

q3<=q2;

end

A. 0、0

B. 0、3

C. 2、0

D. 0、2

D
"="是阻塞赋值,当 clk 的上升沿到来时,in 的值赋给 q1,然后 q1 的值赋给 q2,然
后 q2 的值赋给 q3。最终结果 q3 等于 in 的值,为 0。"<="是非阻塞赋值,当 clk 的上升沿
到来时,in 的值赋给 q1,同时 q1 的值赋给 q2,同时 q2 的值赋给 q3。最终结果 q3 等于 q2
的值,为 2

复制代码
       ┌─────┐
 in ──►│  D  │──► q1
       │  Q  │──► q2
       │     │──► q3
       └──▲──┘
          │ clk

       ┌─────┐      ┌─────┐      ┌─────┐
 in ──►│ D Q │──►──►│ D Q │──►──►│ D Q │──► q3
       │     │ q1   │     │ q2   │     │
       └──▲──┘      └──▲──┘      └──▲──┘
          │ clk         │ clk         │ clk
          └─────────────┴─────────────┘
相关推荐
szxinmai主板定制专家18 小时前
RK3568 + CODESYS+实时系统运动控制器PLC,支持 AI 视觉目标检测,预测性维护,混合多系统部署,多路模拟量采集
arm开发·人工智能·嵌入式硬件·fpga开发
GateWorld20 小时前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之驱动二
fpga开发·lcd显示·fpga点亮屏幕·minilvds
GateWorld1 天前
LCD显示技术完全指南:原理·制造·驱动·FPGA实现之驱动一
fpga开发·lcd显示·minilvds·fpga点屏
XMAIPC_Robot1 天前
深度无人机自动驾驶仪,中小型无人机硬件在环仿真飞行
运维·arm开发·人工智能·fpga开发·无人机·边缘计算
小眼睛FPGA2 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程1-基于紫光FPGA 的LED 流水灯
fpga开发
不会武功的火柴2 天前
SystemVerilog语法(8)-有限状态机(FSM)
嵌入式硬件·fpga开发·自动化·ic验证·rtl·uvm方法学
Kent Gu2 天前
Lattice FPGA选型
fpga开发
Terasic友晶科技2 天前
答疑解惑|为DE25-Nano开发板配置Linux kernel时.config文件没有起作用是什么原因?
linux·服务器·fpga开发·linux kernel·de25-nano
8K超高清2 天前
CCBN展会多图回顾
人工智能·算法·fpga开发·接口隔离原则·智能硬件
小眼睛FPGA2 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程5-DDR3 读写实验例程
fpga开发