標籤:style blog color os 檔案 資料 for re
在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個時鐘