FPGA的wire和reg类型变量

        1:wire型

        网络类型变量表示结构实体(如门)之间的物理链接。网络类型变量不能存储值,并且它必需要受到驱动器(如门或连续赋值语句,如assign)的驱动。若是没有驱动器链接到网络类型变量上,则该变量就是高阻的,即值为Z。经常使用的网络类型变量有wire和tri型。这两种网络类型变量都是用于链接器件单元。它们有相同的语法格式和功能。之因此提供wire和tri两种网络类型变量,是为了与模型中所使用的变量的实际状况一致。 wire型变量表示单个门驱动或连续赋值语句(如assign)驱动的网络型数据,tri型变量多驱动器驱动的网络类型数据。若是wire和tri型变量没有定义逻辑强度,在多驱动源的状况下,逻辑值会发生冲突,从而产生不肯定值。网络

        wire型数据经常使用来表示用以assign赋值语句指定的组合逻辑信号。VERILOG程序模块中的输入、输出信号默认为wire型。wire型信号能够用做输入,也能够用做assign语句或实例元件的输出。格式以下:spa

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经常是寄存器或触发器的输出,但并不必定老是这样。

相关文章
相关标签/搜索