modelsim中的文件操作—— 大数据测试

  在modelsim中不可避免的需要进行文件操作,在窗口中查看代码的操作情况,下面是我自己M序列实验中的一段测试代码

 

 1 integer i,j ,k,m; 
 2 
 3 integer m_dataFILE ,
 4         indataFILE ,
 5         oudataFILE ;
 6     
 7 reg [3:0] i_data[0:9999] ;    
 8     
 9     
10 initial 
11     begin 
12         m_dataFILE = $fopen ("./m_data.dat"); // m序列存储文件
13         indataFILE = $fopen ("./indata.dat"); // 随机数(用于发送的数据)存储文件
14         oudataFILE = $fopen ("./oudata.dat"); // 接收数据的存储文件
15         for(i=0;i<10000;i=i+1)
16             begin 
17                 i_data[i] = $random%16;
18                 $fdisplay (indataFILE,"%b",i_data[i]); 
19             end 
20         $fclose (indataFILE);
21     end 
22 
23 always @ (posedge clock)
24     if(reset)
25         begin  : wirte_file
26             $fdisplay (m_dataFILE,"%b",my_m.m_sequ); //m序列保存
27         end 

 

下面一段是校验输出,接收和发送的数据如果出现错误就有错误提示

 1 reg [3:0] decode_data[0:9999] ;            
 2         
 3 always @ (posedge clk1)
 4     if(!reset1) 
 5         begin 
 6             k <= 0 ; 
 7             m <= 0 ; 
 8         end 
 9     else if((reset)&&(fi_flag))
10         begin 
11             //decode_data[k] <= my_encode.ana_sign;
12             k <= k+ 1; 
13             $fdisplay (oudataFILE,"%b",my_encode.ana_sign); // 接收到的数据进行保存
14             
15             
16             if(i_data[k-2] == my_encode.ana_sign) 
17                 $display ("%b  OK! %b " ,i_data[k-2],my_encode.ana_sign);
18             else 
19                 begin 
20                     m <= m + 1 ; 
21                     $display ("%b  ERROR! %b " ,i_data[k-2],my_encode.ana_sign);
22                 end 

至于i_data[k-2], 这个为什么是-2,是因为数据数据停滞期是2个时钟

 

posted on 2014-07-25 20:49  清霜一梦  阅读(1263)  评论(0编辑  收藏  举报