3、时间
声明时间的关键词是time,它是unsigned 的64位数据,用以转存仿真时的系统时间,通常利用系统函数“$time"来取得系统时间。声明时间类型变量的格式如下:
time time_id1, time_id2, ..., time_idn[ msb:lsb ];
其中,time 为关键词,表示变量为时间类型变量; msb 和lsb 是表明范围界限的常量表达式,如果未定义界限,每个标识符存储一个至少 64位的时间值;
time_id1, time_id2, ...为定义的时间类型变量名称;
时间类型的寄存器只存储无符号数。举例如下:
time condition_happen_time;
'''
if (condition)
condition_happen_time = $ time;
'''
always@ (posedgeclk)
bedin
$monitor($time, "dataoutput = % d",dout);
end
4、参数
参数数据类型用来定义在程序内部仿真时保持不变的常数,以增进程序的可读性。其声明格式如下:
parameter paraml = constexpr1, param2 = constexpr2 ... , paramN = constexprN;
其中parameter为关键词,表示变量为参数数据类型变量;
paraml , param2 ... , paramN为定义参数数据类型变量名称;
constexpr1, constexpr2 ... ,constexprN为参数数据类型变量的初始值。举例如下:
parameter fetch = 2'b01,
decode =2'b01,
execute,
width = 1024,
heigh = 768;
...
resolution = width* heigh;
5、存储器
将多个位的寄存器组合而成的数据类型称为存储器,存储器的下标即为地址。存储器使用如下方式说明:
reg [msb:1sb] memory1[upper1 :lower1], memory2[ upper2:lower2], ... ;
其中,reg 为关键词,表示变量为寄存器类型变量; msb 和Isb是表明范围界限的常量表达式; memory1, memor2 为定义的寄存器类型变量名称; upper1 、lower1 为每个寄存器的位宽。举例如下:
reg[ 7 : 0 ] men[ 0 : 1023 ]; //声明一个深度1K,宽度为8位的存储器