清霜一梦

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

0
阅读(1711)

在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_file26             $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个时钟