modelsim中的文件操作—— 大数据测试
0赞
发表于 7/25/2014 11:42:21 AM
阅读(2996)
在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个时钟

