Verilog HDL中的数据类型
Verilog HDL有两大类数据类型:线网类型和寄存器类型
线网类型(nets type)表示Verilog结构化元件间的物理连线。它的值由驱动元件的值决定,例如连续赋值或门的输出。如果没有驱动元件连接到线网,线网的缺省值为z。
寄存器类型(register type)表示一个抽象的数据存储单元,它只能在always语句和initial语句中被赋值,并且它的值从一个赋值到另一个赋值被保存下来。寄存器类型的变量具有x的缺省值。
(1)线网类型(nets type)
线网类型包含多种类的线网子类型,其中wire是最常用的连线型变量,这里主要对其进行介绍。wire型数据常量用来表示以assign语句赋值的组合逻辑信号。
Verilong HDL 模块中的输入/输出信号类型缺省时自动定义为wire型。wire型信号可以用作任何方程式的输入,也可以用做“assign”语句和实例元件的输出。对于综合而言,其取值为0,1,X,Z。
wire 型变量的定义格式如下:
wire数据名1,数据名2,数据名3,……,数据名n;
例如:
wire a,b;
//定义了两个wire型变量a,b
wire型向量可按以下方式使用:
wire[7:0]in,out;
//定义了两个8位wire型向量in,out
assign out =in;
若只使用其中某几位,可直接指明,但应注意宽度要一致。如:
wire[7:0]out;
wire[3:0]in
assign out[5:2]=in;
//out向量的第2到第5位与in向量相等
即等效于:Assign out[5]=in[3]
Assign out[4]=in[2];
Assign out[3]=in[1];
Assign out[2]=in[0]。
(2)寄存器类型(register type)
寄存器数据类型的reg是最常见的数据类型。reg类型使用保留字reg加以说明,形式如下:
Reg 数据名1,数据名2,……,数据名n;
例如:
reg a,b;
//定义了两个reg型变量a,b
reg[7:0]data;
//定义data 为8位宽的reg型向量
(3)存储器
存储器是一个寄存器数组,若干个相同宽度的向量构成数组,reg型数组变量即为memory型变量,既可定义存储器型数据,如:
reg[7:0]mymem[1023:0];
//定义了一个宽度为8位、1024个存储单元的存储器,该存储器的名字是 mymem。