一 基础语法
1 初始化
initial可以初始化信号,如clk, rst等信号都需要一个初始化值。#+数字表示等待一定时间后执行下一步操作,如下面的代码中rst初始化为0,10ns后置为1。时钟的生成可以通过#产生,每隔2ns时钟翻转一次,即产生一个4ns的时钟。
initial begin
clk = 1'b0;
rst = 1'b0;
#10;
rst = 1'b1;
end
always #2 clk <= ~clk;
2 文件读写
文件的读写需要先定义存储的变量再进行文件的读取。如下定义了位宽为32bit深度为1024的内存来读取文件,文件为16进制。
logic [31:0] mem [1024];
$readmemh("..//testdata//dat.hex", mem);
写文件的定义如下,可以结合时钟和使能信号写数据。
integer fp_wr;
initial fp_wr = $fopen("..//wr.dat","w");
$fwrite(fp_wr,"%h\n",dat[31:0]);