$fscanf,對文件一行進行讀寫


轉:

http://zengbo.blogbus.com/logs/19569780.htmlVerilog

提供了豐富的系統函數,這為Testbench的編寫提供了方便。尤其是IEEE1364-2005,其系統級建模的能力更強。

   以前我一般常用到的系統函數只有幾個:$readmemb,$readmemh,$display,$fmonitor,$fwrite,$fopen,$fclose等。通常需要對文件作預處理,才能用於Testbench讀取。今天又嘗試了幾個其他的文件輸入輸出函數,不需要對文件進行預處理,直接使用需要的文件,只對需要的部分進行讀取。

   $fseek,文件定位,可以從任意點對文件進行操作;

   $fscanf,對文件一行進行讀寫。

   下面是一些常見的應用:

   1、讀寫文件

`timescale 1 ns/1 ns

module FileIO_tb;

integer fp_r, fp_w, cnt;

reg [7:0] reg1, reg2, reg3;

initial begin

  fp_r = $fopen("data_in.txt", "r");

  fp_w = $fopen("data_out.txt", "w");

 

  while(!$feof(fp_r)) begin

   cnt = $fscanf(fp_r, "%d %d %d", reg1, reg2, reg3);

   $display("%d %d %d", reg1, reg2, reg3);

   $fwrite(fp_w, "%d %d %d\n", reg3, reg2, reg1);

  end

  $fclose(fp_r);

  $fclose(fp_w);

end

endmodule


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM