Verilog 标量和矢量

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

Verilog 需要表示单个比特以及比特组。 单个比特顺序元素是触发器,16 位顺序元素是寄存器。 对于这些类型的任务,Verilog标量矢量

标量和矢量

一个没有范围规格的 netreg 声明被认为是 1 位宽,是一个标量。如果指定了范围,则 net 或 reg 变为一个多位实体,称为向量。

Verilog Scalar and Vector

向量范围规范包含两个常量表达式,例如

  1. MSB: 常量表达式的最高有效位,即范围的左侧值。
  2. LSB: 常量表达式的最低有效位,即范围的右侧值。

一个冒号应分隔 MSB 和 LSB 常量表达式。

MSB 常量表达式和 LSB 常量表达式可以是正数、负数和零的任何值。

LSB 常量表达式可以高于、等于或小于 MSB 常量表达式。

MSB 和 LSB 表达式都应该是常量表达式。

可以为所有类型的 net 数据类型reg 数据类型声明向量。 为 integer、real、realtimetime 数据类型指定向量是非法的。 向量 net 和寄存器被视为无符号值。

语法

以下是向量的简化语法,例如

示例

该范围提供了访问向量中各个比特的能力。 向量的最高有效位应指定为范围的左侧值。 而向量的最低有效位应指定在右侧。

MSB 和 LSB 应该是常量表达式,不能用变量代替。 但是它们可以是任何整数值,例如正数、负数或零。

LSB 值可以高于、低于或等于 MSB 值。

位选择

可以单独选择和分配一个新值给向量变量中的任何位,如下图所示。 这称为位选择。

Verilog Scalar and Vector

如果位选择超出范围或位选择是 x 或 z,则返回的值将是 x。

部分选择

连续位的范围的选择称为部分选择。 部分选择有两种类型。

  1. 常量部分选择
  2. 索引部分选择
Verilog Scalar and Vector

可变部分选择允许它在循环中有效地用于选择向量的部分。 虽然起始位可以变化,但宽度必须是恒定的。

语法

示例


下一主题Verilog 数组