1:wire型
网络类型变量表示结构实体(如门)之间的物理连接。网络类型变量不能存储值,而且它必须要受到驱动器(如门或连续赋值语句,如assign)的驱动。如果没有驱动器连接到网络类型变量上,则该变量就是高阻的,即值为Z。常用的网络类型变量有wire和tri型。这两种网络类型变量都是用于连接器件单元。它们有相同的语法格式和功能。之所以提供wire和tri两种网络类型变量,是为了与模型中所使用的变量的实际情况一致。
wire型变量表示单个门驱动或连续赋值语句(如assign)驱动的网络型数据,tri型变量多驱动器驱动的网络类型数据。如果wire和tri型变量没有定义逻辑强度,在多驱动源的情况下,逻辑值会发生冲突,从而产生不确定值。
wire型数据常用来表示用以assign赋值语句指定的组合逻辑信号。VERILOG程序模块中的输入、输出信号默认为wire型。wire型信号可以用作输入,也可以用作assign语句或实例元件的输出。格式如下:
wire a;
//定义一个1位的wire型变量
wire[7:0]
a;//定义一个8位的wire型变量
wire[4:1]
a;//定义了二个4位的wire型变量
2:reg型
寄存器是数据存储单元的抽象。寄存器数据类型的关键字是reg。通过赋值语句可以改变寄存器存储的值,其作用与触发器储存的值相当。
reg型数据常用来表示"always"模块内的指定信号,常代表触发器。通常,在设计中要由always模块中的行为描述语句来表达逻辑关系。在always模块中内被赋值的每一个信号都必须要定义成reg型。
reg a;//定义一个1位的reg型数据
reg[3:0] a;//定义一个4位的reg型数据
reg[4:1] a,b; //定义二个4位的reg型数据
reg型数据的初始值是不确定的。reg型数据可以为正值,也可以为负值。但当一个reg型数据是表达式中的操作数据时,它的值被当作无符号数值,即正值。如reg[3:0]
a被用作操作数表达式中时,-1表示+15.
注意:reg型中表示被定义的信号将用在always模块内,理解这点很重要。并不是说reg型信号一定是寄存器或触发器的输出,虽然reg常常是寄存器或触发器的输出,但并不一定总是这样。
加载中,请稍候......