摘要:本篇文章介绍Verilog语法中的数据类型的用法以及是否可综合的性质,可实现为硬件电路的语法常称为可综合的语法,而不能够实现到硬件电路中、却可以作为仿真验证的高层次语法则称为行为级语法。
1.数值0,1,x,z
Verilog中支持的数值包括0、1、x、z。0和1分别表示高低电平或false/true状态。x代表未知值,在仿真中x是寄存器类型变量的默认值。在实际的硬件电路中不存在这种状态,因此是行为级语法。z代表高阻态。
2.线网wire与寄存器reg
wire和reg分别是最典型、最常用、可综合的线网和变量类型,而integer则是较为常用的行为级的变量类型,其他线网或变量类型并不常用。
wire是线网数据类型,相当于物理连线,表示直通;即只要输入有变化,输出马上无条件地反映输入的变化。reg是寄存器类型的数据类型,通常用于精简寄存器的建模。寄存器一定要有触发逻辑,输出才会输入。
wire [MSB:LSB] name1,name2;
reg [MSB:LSB] name1,name2;
3.数组类型
Verilog支持对线网或变量定义一些多维的数组。
wire [MSB:LSB] name [M:N];
reg [MSB:LSB] name [M:N];
// example
reg [7:0] mem[255:0]; //数组深度256,单个数据位宽8bits
always @(posedge clk) begin
mem[0] = 8'd0;
mem[100] = 8'd35;
end
4.整数integer
integer意为整数,表示对integer后参数的数据类型定义为integer类型,是寄存器类型的数据类型/整数寄存器是一个32位的有符号数,表示整数值以及符号。
integer name1,name2,name3;
integer name[MSB:LSB]; //定义一个数组
End!