hxing

拒绝思维懒惰,习惯深度思考,提升认知水平。

导航

常用功能语句归纳

归纳一些常用的功能语句,方便在仿真中使用。

1. 文件的读取写入

task tc_temp;
begin
 reg [15:0] data_0;
 reg [15:0] data_1;
 reg [15:0] data_2;
 integer js;

 integer file_wr_0;
 integer file_wr_1;
 integer file_wr_2;

 file_wr_0 = $fopen("./data_out_0.txt","w");
 file_wr_1 = $fopen("./data_out_1.txt","w");
 file_wr_2 = $fopen("./data_out_2.txt","w");

 for(js = 0; js < 1024; js++) begin

  data_0 = $random%65535;
  data_1 = $random%65535;
  data_2 = $random%65535;

  $fwrite(file_wr_0,"%h\n", data_0);
  $fwrite(file_wr_1,"%h\n", data_1);
  $fwrite(file_wr_2,"%h\n", data_2);
  #10ns;
 end

 $fclose(file_wr_0);

 $fclose(file_wr_1);
 $fclose(file_wr_2);
end
endtask

 

2. 十六进制数据的读取写入

    $readmemh("file_name.mem",mem);
    //16进制数据读入
    $readmemb("file_name.mem",mem);
    //2进制数据读入

3. 十进制数据的读取写入

     reg signed [8:0] dataa1[1:784];
     integer i;
     integer s;
     integer fid1;
     initial
     begin
        fid1 = $fopen("C:/Users/Desktop/conv_data.txt","r");//这里的斜杠与计算机里面的斜杠不一样
                                                       //计算机里面的斜杠为‘\’,这里为‘/’
        for(i=1;i<=784;i=i+1)
           begin
               s= $fscanf(fid1,"%d",dataa1[i]);
           end
        $fclose(fid1);
    end

4. 存入有符号数

  integer fid3;
  initial
  begin
     fid3 = $fopen("C:/Users/pooling1.txt","w");
     #20000
     $fclose(fid3) ;
  end

  always@(posedge clk2)
  begin
     if(result_pooling_valid1)
      begin
          $fwrite(fid3,"%d\n",$signed(result_pooling1));
      end
  end

 5. 产生随机数

  $random是产生随机数函数,产生的随机数是有符号的。

  产生有符号随机数

    dt = $random%10;会产生介于-9到9的数。

  产生无符号随机数

    dt = {$random}%10;会产生介于0~9的数。

  产生min到max的数

    dt = min + {$random}%(max-min-1);会产生介于min到max的数。

posted on 2022-04-29 09:48  hxing  阅读(198)  评论(0编辑  收藏  举报