Verilog 赋值语句

2025年3月17日 | 阅读 3 分钟

赋值语句用于驱动网络上的值。它也用于数据流建模

类型为wire或数据类型的信号需要连续赋值一个值。只要将+5V电池连接到导线的一端,连接到导线另一端的组件就会获得所需的电压。

这个概念通过赋值语句来实现,其中任何wire或其他类似的wire(数据类型)都可以持续地驱动一个值。该值可以是常量,也可以是包含一组信号的表达式。

语法

赋值语法以关键字assign开头,后跟信号名称,它可以是单个信号或不同信号网络的组合。

驱动强度延迟是可选的,主要用于数据流建模,而不是合成到实际硬件中。

右侧的信号被求值并赋值给左侧的网络或网络表达式。

延迟值对于指定门的延迟很有用,并且用于模拟实际硬件中的时序行为。该值决定了何时应将网络赋值为求值后的值。

规则

在使用赋值语句时需要遵循一些规则

  • LHS 应该始终是标量、向量或标量和向量网络的组合,但永远不是标量或向量寄存器。
  • RHS 可以包含标量或向量寄存器和函数调用。
  • 每当 RHS 上的任何操作数的值发生变化时,LHS 将使用新值进行更新。
  • 赋值语句也称为连续赋值。

赋值 reg 变量

我们不能使用赋值语句驱动或赋值reg类型变量,因为reg变量能够存储数据,并且不能连续驱动。

Reg 信号只能在过程块中驱动,例如 always 和 initial。

隐式连续赋值

当使用赋值语句将给定网络赋值为某个值时,这称为显式赋值

如果在声明网络时进行赋值,则称为隐式赋值。

组合逻辑设计

考虑以下由组合门组成的数字电路以及相应的Verilog代码。

Verilog assign Statement

组合逻辑要求连续驱动输入以维持输出,这与顺序元件(如触发器)不同,后者在时钟的边沿捕获和存储值。

赋值语句满足了这一目的,因为只要右侧的任何输入发生变化,输出o就会更新。

硬件原理图

在设计细化和综合之后,组合电路的行为方式与赋值语句建模的方式相同。

Verilog assign Statement

每当 RHS 上的组合表达式为真时,信号 o 变为 1。

同样,当 RHS 为假时,o 变为 0。由于输入在相同时间内为 X,因此输出 o 从 0ns 到 10ns 都是 X。


下一主题Verilog 运算符