Verilog数据类型(Data Types)

Verilog数据类型(Data Types)


Verilog有两组主要的数据类型:网络数据类型(Net Data Type)和寄存器数据类型(Register Data Type)。其他的数据类型有:事件(Event)、参数(Parameter)和范围(Specparam)以及其他数据类型。


网络数据类型(Net Data Type)


网络数据用来将元件连接起来。


语法


net_type [ expansion ] [ size ] #( delay ) net_name, net_name, ...;
net_type [ expansion ] [ ( strength ) ] [ size ] #( delay ) net_name = expression; // declaration with 
                                                                                   // continuous assignment
net_type [ size ] memory_name [ array_size [ array_size] ...;     // Multi-dimensional array

expansion = scalared | vectored

网络数据类型类型如下:


wire or tri

simple interconnecting wire

wor or trior

wired outputs OR together

wand or triand

wired outputs AND together

tri0

pulls down when tri-stated

tri1

pulls up when tri-stated

supply0

constant logic 0 (supply strength)

supply1

constant logic 1 (supply strength)

trireg

stores last value when tri-stated (capacitance strength)


例程


wire [7:0] Data;
trireg (large) C1;
wire Q = A || B;                          // continuous assignment
wire [7:0] Array [0:255][0:255][0:255];   // Verilog-2001 Multidimensional array

寄存器数据类型(Register Data Type)

寄存器数据类型用来存储值。


语法



register_type [ size ] variable_name, variable_name, ...;
register_type [ size ] variable_name = initial_value;
register_type [ size ] memory_name [ array_size ]; 
register_type [ size ] memory_name [ array_size ] [ array_size ] ...;     // Multi-dimensional array


寄存器数据类型如下:


reg

unsigned variable of any bit size

integer

signed 32-bit variable

time

unsigned 64-bit variable

real or realtime

double-precision floating point variable


例程

reg [7:0] Data;
integer Int;
time Now;
reg [15:0] Memory [0:1023]; 
reg [7:0] A = 8'h3C;                      // Verilog-2001
reg [7:0] Array [0:255][0:255][0:255];    // Verilog-2001

事件(Event)

事件用来同步并发操作。


语法


event event_name, ...;    // event declaration
-> event_name;            // trigger the event


例程


event EventName;     // event declaration
initial begin
  #50;
  -> EventName;      // example of event triggering
end
always @EventName    // example of waiting for an event
  Q <= 0;

参数(Parameter)


参数为常量值。


语法


parameter parameter_name = constant_expression;

例程


parameter Size = 4;
parameter Number = 3.82;
parameter ClkCycle = Frequency / 2; 

范围(Specparam)

范围表示值在一个范围内变话。其用法类似于参数常量值,但只能在特定块内使用。


语法


specparam parameter_name = constant_expression;

例程


specparam TRise = 1.2;
specparam T1 = 2:3:4;        // min:typ:max 




你可能感兴趣的:(HDL)