verilog系统函数

描述

 

1、$fwrite 向文件写入数据

$fdisplay


格式:$fwrite(fid,"%h%hn",dout_r1,dout_r2);

 

(1)fwrite是需要触发条件的,需要手动添加换行。

(2)如果写放文件的格式为%d,则认为是无符号数,如下例: wire [27:0] data; fp_re = $fopen("dout.txt","w"); always @(posedge clk) begin if(dout_rdy == 1'b1) $fwrite(fileid,"%d",data); end

如果要输出有符号数据,需要将信号定义为有符号数。

eg:wire signed [27:0] data;

(3)输出顶层文件中例化的信号(或下一级例化的文件的信号)

 eg:$fwrite(file_id,"%d%12dn",u_coef_update.ekxdn_i,

u_coef_update.u_mult.mult_out);

  在文件coef_update中定义的信号或REG ekxdn_i,如果要输出有符号数,

要在coef_update中把ekxdn_i定义为signed;

  在文件coef_update文件中例化文件u_mult,输出相应的信号mult_out. 2、$fscanf 从文件中读取数据 (1)读取格式为按行读取,一行读完之后再转向下一行; (2)读取也是需要触发条件的;  always @ ( posedge clk ) begin   if(cnt_test == 3'd7)              begin           $fscanf(coef_file,"%d%d%d%d",coef01_i,coef01_q,coef02_i,coef02_q);          $fscanf(ref_file,"%d%d%d%d",ref01_i,ref01_q,ref02_i,ref02_q);      end                        end 3、$fopen 打开文件 (1) 在读写文件之前,一定要用fopen打开文件 (2)读写路径的设置   file_id = $fopen("F:/modelsim/coef.txt"),注意这里的斜杠方向。

4、$random

 random_function ::=       $random [ ( seed ) ]

$random产生一个32位的有符号数,seed可以是reg,integer,time类型

Example 1—Where b is greater than 0, the expression ($random % b) gives a number in the following range: [(-b+1): (b-1)].

产生–59 到59的数: reg [23:0] rand; rand = $random % 60; Example 2—用连接符产生 0 to 59: reg [23:0] rand; rand = {$random} % 60;

=====================================

操作实例:

=====================================

 

integer step_file; //文件要定义成integer

 

 

         //open the fileInitialBeginstep_file = $fopen("F:/Company/Src/txt/step.v","r");      file_ekxdn =$fopen("F:/Company/Src/txt/ekxdn.v","w");end always #5 clk = !clk;    //read data from file

 

 

   always @ ( posedge clk )//read from the file   begin      if( cnt_test[2:0] == 0 )               $fscanf(step_file,"%d%d",ref01_i,ref01_q);
    end

 

 

    //write data to file    wire signed[24:0]  ekxdn_i,ekxdn_q;    always @( posedge clk )    begin      if( cnt_test[2:0] == 3'b111 )   $fwrite(nx_coef_file,"%d%12dn",nx01_coef_i,nx01_coef_q);end

 

读写文件的数据格式如下:

  Verilog                     

以下点要注意:

1、可能由于加密的原因,读不了txt文件,只能读。V的了

2、打开文件的$fopen语句必须放在initial 中才可以

3、必须注意路径中斜杠的方向“/”

4、相对路径的设置(请参考积累中的“相对路径与绝对路径”)

5、如果读入的是有符号数,那么要把数据的类型定义为signed

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分