Verilog——信号类型

Verilog HDL 的信号类型有很多种,主要包括两种数据类型:线网类型 (net type) 和寄存器类型
( reg type )。在进行工程设计的过程中也只会使用到这两个类型的信号。

4.1****信号位宽

定义信号类型的同时,必须定义好信号的位宽。默认信号的位宽是 1 位,当信号的位宽为 1 时可不表述,如定义位宽为 1 的 wire 型信号 a 可直接用" wire a; "来表示。但信号的位宽大于 1 位时就一定要表示出来,如用"wire 7:0 "来表示该 wire 型信号的位宽为 8 位。
信号的位宽取决于要该信号要表示的最大值。该信号能表示的无符号数最大值是:2 n -1 ,其中 n表示该信号的位宽。例如,信号 a 的最大值为 1000 ,那么信号 a 的位宽必须大于或等于 10 位。
下面分享一个位宽计算技巧:打开电脑的"计算器"后选用程序员模式,在在 10 进制下
输入信号值,如 1000 ,随后可以查看信号位宽。

4.2线网类型wire

线网类型用于对结构化器件之间的物理连线的建模,如器件的管脚,芯片内部器件如与门的输出等。由于线网类型代表的是物理连接线,因此其不存储逻辑值,必须由器件驱动。通常用 assign 进行赋值,如 assign A = B ^ C 。


4.3 寄存器类型 reg
reg 是最常用的寄存器类型,寄存器类型通常用于对存储单元的描述,如 D 型触发器、 ROM
等。寄存器类型信号的特点是在某种触发机制下分配了一个值,在下一触发机制到来之前保留原值。
但必须注意的是:reg 类型的变量不一定是存储单元,如在 always 语句中进行描述的必须是用 reg类型的变量。
reg 类型定义语法如下:
reg msb: lsb reg1, reg2, . . . reg N;

4.4 wirereg****的区别

reg 型信号并不一定生成寄存器。针对什么时候使用 wire 类型,什么时候用 reg 类型这一
问题,本书总结出一套解决方法:在本模块中使用 always 设计的信号都定义为 reg 型,其他信
号都定义为 wire 型。

上述代码中, cnt1 是用 always 设计的,所以定义为 reg 型。 add_cnt1 和 end_cnt 不是由 alwa
ys 产生的,所以定义为 wire 型。

上述代码中,信号 x 是用 always 设计的,所以要定义为 reg 型。注意:实际的电路中信号 x 不
是寄存器类型,但仍然定义为 reg 型。

以上是例化的代码,其中 df 是例化模块的输出。由于 df 不是由 always 产生的,而是例化产生
的,因此要定义成 wire 型。

相关推荐
坏孩子的诺亚方舟4 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐4 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐4 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH5 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡5 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安5 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐6 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯6 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客6 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA6 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发