清霜一梦

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

0
阅读(1582)

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


Baidu
map