ISE與MATLAB的聯合使用
本文參考《Xilinx FPGA開發實用教程》
1.MATLAB輔助ISE完成FPGA
所謂輔助,就是利用matlab來加速浮點演算法的實現和功能測試。在進行FPGA設計之前,先用MATLAB實現浮點演算法,分析出演算法的瓶頸所在,將程式的序列結構改成並行結構,接著利用MATLAB完成定點模擬,得到滿足效能需求的最小定點位寬以及中間步驟計算結果的擷取範圍,然後再ISE中完成設計。最後再利用MATLAB的定點模擬結果對設計進行功能驗證。
首先,在matlab中產生模擬所需的輸入訊號,以16進位制的形式存放在資料檔案中,通常為.txt文字檔案。其次,在modelsim中用verilog編寫模擬測試檔案,並通過系統函式$readmemh將上述模擬資料檔案中的測試向量讀入,在modelsim中做功能模擬和時序模擬,並呼叫$fopen函式開啟另外一個數據檔案,用$fdisplay函式將modelsim的模擬結果寫入,再次,在matlab中將modelsim模擬輸出資料檔案中的資料讀入一個數組中,可以作圖分析或者利用統計手段分析。
舉例介紹Verilog語言中檔案輸入輸出函式的使用方法。
(1)系統函式$fopen用於開啟一個檔案,並返回一個證書的檔案指標,然後,$fdisplay就可以使用這個檔案指標在檔案中寫入資訊。寫完後,用$fclose關閉檔案。例如:
integer W_file;//定義檔案指標
W_file=$fopen("W_file.txt");
$fdisplay(W_file,"@%h\n%h",a,b);
$fclose(W_file);
以上語句將“a”和“b”分別顯示在“@%h\n%h”中的亮哥%h位置,並寫入Write_out_file指標所指的檔案“W_file.txt”中。
(2)讀檔案操作通過$readmemh和$readmemb來完成,分別對應的資料檔案為十六進位制和二進位制。其語法格式如下:
reg[<memory_width>]<reg_name>[<memory_depth>];
$readmemh("<file_name>",<reg_name>);
例如:
reg[15:0]c[0:15;
$readmemh("R_filr.txt",c);
上例就是將R_file檔案中的資料讀入陣列c中,然後就可以直接使用這些資料了。其中資料檔案格式如下:
@2c
45
其中,@2c表示地址,為十六進位制數,45表示該地址的資料。