今天摸索了一下hdl coder的使用方法,各個步驟主要是照貓畫虎,有些地方還是不理解,先總結一下:
1.要想調用quartus或者Xilinx綜合布局布線需要先設置,設置的方法有兩種,命令窗口輸入
hdlsetuptoolpath('ToolName', 'Altera Quartus II', ...
'ToolPath', 'D:\altera\10.1\quartus\bin\quartus.exe');或者在matlab安裝目錄下找到toolbox\local新建一個startup.m把這條命令寫進去,如果用的是quartus只需要把路徑改一下,賽靈思的話就把工具名路徑都改一下(startup.m也可以加其他命令,matlab會在啟動時執行,比如把默認路徑給改成經常使用的地址,等等)。
2.目錄切換到工程目錄下后,在命令行輸入hdlcoder就會啟動,輸入工程名,工程路徑,保存就建好工程了,這時候在matlab的右邊會有一個提示框,分成兩部分,function和test bench 把兩個文件分別添加進來。
3.點擊workflow advisor 就進入轉換界面,我認為轉換主要有3大塊,1.浮點轉定點。2.生成hdl文件。3.仿真文件生成。至於綜合布局布線還是用quartus或者xilinx比較好,更順手。分點來說,1.浮點轉定點,轉之前先執行第一步 define input types, 如果文件沒問題的話運行一下就自動捕獲到輸入數據類型了。在定點轉化之前,先固定一個長度,設置建議長度,有兩個長度,一個是小數長度,一個是數據位寬,也就是生成Verilog后寄存器型數據的長度。毫無疑問肯定是固定小數長度選建議數據位寬了,看數據手冊貌似有4%的余量,沒有深究,之后點simulation就會仿真,仿真過程軟件自動捕獲數據范圍並給出合理的位寬,當然如果覺得不合適還可以手動修改只需要在建議位寬處點擊便會出現對話框更改。之后就是生成定點數表示的matlab程序,然后就是檢查定點化的設計跟浮點設計相比的誤差,會有相應的報告。當然選的位寬越大那誤差相應就越小了。
4.轉完定點就是hdl生成了,hdl生成有很多選項,其中我認為最主要的就是優化選項,包括pipeline的設置,資源共享,循環的展開等等,但是看了個視頻人家可以用streaming減少乘法器和加法器的數量,但是我找不到streaming選項,不知道是版本的問題?(我用的2014a,視頻用的2012a)還是其他問題,用user guide里的例子發現不是太復雜的例子就消耗了fpga25個乘法器,如果能找到優化辦法就比較好了。算法設計中資源和速度的瓶頸就在於加法器乘法器,能夠提高的話系統的速度就會上去。
5.仿真文件不僅包含hdl文件,還可以生成cosimulation文件matlab和modelsim同時仿真用得到,還有fpga-in-the-loop仿真文件,是matlab和fpga硬件的協同仿真需要的文件,暫時還用不到,不去深究。
6.把整個流程走了一遍,但是問題還有,需要下面進一步研究。