首页 > 其他 > 详细

Verilog中的文件的读取和写入

时间:2020-03-26 22:59:10      阅读:301      评论:0      收藏:0      [点我收藏+]

在仿真验证的时候,需要一个合适的数据激励,在testbech一个一个的写很麻烦,如果能直接从数据文本里读取,然后输入到已经编写好功能程序中,就很方便。

还有的时候,我们需要将程序输出的内容写到文本里面,然后用其他工具(例如matlab、python等)进行处理。

 

代码和解释说明如下:

  

 1 `timescale 1ns/1ns
 2 
 3 module file_ctrl;
 4 
 5 reg           clk;         
 6 reg            rst_n;
 7 
 8 reg  [7:0]  data_in;                //定义的数据输入寄存器
 9 reg  [7:0]  data_out;                        
10 reg  [7:0]  cnt;
11 
12 integer  file_rd;                //定义数据读指针    
13 integer  file_wr;                //定义数据写指针
14 
15 initial begin                        //定义时钟    
16     clk = 1b1;
17     forever
18     #10
19     clk = ~clk;                
20 end    
21 
22 initial begin                        //定义复位
23     rst_n = 1b0;
24     #21
25     rst_n = 1b1;
26 end
27 
28 initial begin                        //打开读取和写入的文件,这里的路径要对    
29     file_rd = $fopen("E:/Project/file_ctrl/sim/tb/data_in.txt","r");
30     file_wr = $fopen("E:/Project/file_ctrl/sim/tb/data_out.txt","w");
31 end    
32         
33 always@(posedge clk or negedge rst_n)    
34 begin
35     if(rst_n == 1b0)begin
36         data_in <= 8d0;        
37         cnt <= 8d0;
38     end
39     else if(cnt < 10)begin
40         $fscanf(file_rd,"%h",data_in);            //读取每行    
41         cnt <= cnt +1;        
42         $fwrite(file_wr,"%h\n",    data_in);      //换行写入    
43     end
44     else begin
45         data_in <= 8d0;
46         $fclose(file_rd);                        //关闭文件
47         $fclose(file_wr);        
48         cnt <= 8d11;
49     end
50 end    
51 
52 
53 
54 endmodule

 

Verilog中的文件的读取和写入

原文:https://www.cnblogs.com/jayer/p/12577783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!