Verilog HDL的数据类型分为两大类:线网类型和寄存器类型。线网类型主要表示Verilog HDL中结构化元件之间的物理连线,其数值由驱动元件决定。如果没有驱动元件接到线网上,则其默认值为高阻z。寄存器类型主要表示数据的存储单元,其默认值为不定x。二者最大的区别在于:寄存器类型数据保持最后一次的赋值,而线网类型数据则需要持续的驱动。
一、线网类型:
- wire:标准连线(默认为该类型);
- tri:具备高阻状态的标准连线;
- wor:线或类型驱动;
- trior:三态线或特性的连线;
- wand:线与类型驱动;
- triand:三态线与特性的连线;
- trireg:具有电荷保持特性的连线;
- tri1:上拉电阻(pullup);
- tri0:下拉电阻(pulldown);
- supply0:地线,逻辑0;
- supply1:电源线,逻辑1。
注意,其中只有wire、tri、supply0和supply1是可综合的,其余都是不可综合的,只能用于仿真。
Verilog HDL程序模块中输入、输出信号类型默认为wire型。
线网数据类型的通用说明语法为:net_kind [msb:lsb] net1,net2,…;
线网类型变量的赋值(也就是驱动)只能通过数据流assign操作来完成,不能用于always语句中。
二、寄存器类型:
- reg:常用的寄存器型变量,用于行为描述中对寄存器类的说明,由过程赋值语句赋值;
- integer:32位带符号整型变量;
- time:64位无符号时间变量;
- real:64位浮点、双精度、带符号实型变量;
- realtime:其特征和real型一致;
- reg的扩展类型--memory类型。
Verilog HDL通过对reg型变量建立数组来对存储器建模。其定义格式为:reg [m-1:0] mem [n-1:0]; 定义了一个存储位宽为m、存储深度为n的存储器。