用ISE System Generator與Matlab聯合開發FPGA


1. 軟件版本問題
Matlab這里有個版本限制,即ISE/System Generator12.1只能完全支持Maltab2009a/b,對Maltab2010a只能beta支持。

 

ISE版本為Xilinx ISE Design Suite 12.1(提示:在ISE_DS\ISE\sysgen目錄下,包含System Generator12.1,但是那個著名的AccelDSP組件找不到了,據說AccelDSP項目暫停,不清楚具體原因,猜測是戰略調整)。
備注:
ACCEL DSP的確是很好用,但是ISE12.1以后的版本已經不支持這個軟件了,所以建議大家最好尋找替代品。
另外,Matlab的generate HDL coder工具和ACCEL DSP的不同是:ACCEL DSP直接寫.m文件就可以生成了,但是Matlab中就得用simulink,比較麻煩。。。

 


2. 軟件安裝
首先是安裝Matlab,這里要注意的是Matlab的安裝路徑必須與英文開頭,中間可以包含數字;其次是路徑中不能有空格(貌似有空格也可以),否則System Generator將無法識別Matlab的路徑。

 

然后安裝ISE 12.1,完成之后點擊“C:\Documents and Settings\All Users\「開始」菜單\程序\Xilinx ISE Design Suite 12.1”里面的“System Generator MATLAB Configurator”,如果Matlab安裝正確,System Generator會識別出Maltab,否則需要手動選擇Maltab的路徑。

 

 

 

3. Enjoy it!
打開Matlab→Simulink,可以發現左側的Simulink Library Browser出現了Xilinx的三個工具箱菜單:Xilinx Blocket,Xilinx Reference Blockset,XilinxBlockset。
如果是第一次打開Xilinx的工具箱菜單,需要有一個建立Xilinx緩存的過程,時間比較長,要把它當成電腦的假死。

 

 

 

4. 開發流程簡述
首先,每個工程里面都要有一個System Generator的工具箱(在Xilinx Blocket—tools里面),在這里可以配置的有
[1]. System Generator生成的工程類型,比如ISE工程、EDK工程等,甚至可以直接生產.bit配置文件;
[2]. 器件的型號,包括封裝、速度等;
[3]. System Generator的輸出路徑(文件夾);
[4]. 綜合工具(如XST、Synplify等,經常找不到Synplify,干脆就XST好了);
[5]. 編程語言選擇:只有VHDL和Verilog HDL;
[6]. 可以選擇是否生產測試文件;
[7]. 配置FPGA的時鍾,並選擇時鍾管理方式,這里給出了時鍾管腳的配置,不過應該先不填,不然在后面的綜合中會有很多警告;其次是若選擇了DCM方式,則只能支持Virtex4\5的器件(用Spartan3、3E編譯時提示的;奇怪是為什么沒有說支持最新的Spartan6、Virtex6器件);
[8]. 最后是選擇Simulink的仿真周期,以及各個模塊的顯示方式(比如選擇default顯示各個模塊的默認值,選擇Sampling Frequency則在各模塊的輸入輸出引腳上顯示其時鍾頻率,如50MHz、10MHz等)。

 


完成System Generator的配置之后,剩下的仿真環境的搭建、運行步驟和Simulink的普通應用是一樣的,只不過必須是從Xilinx的菜單下拖出來的模塊才能被物理實現(即可綜合);對應Simulink庫中的其他模塊和Xilinx模塊之間的連接,要使用Gateway In和Gateway Out做為接口。
搭建完整個系統之后,把需要觀察的變量通過Gateway Out接到示波器上,點擊Simulink的運行按鈕,就可以觀測結果了。System Generator的差錯機制非常嚴格,即使是數據位數不對都會停止仿真並報錯。
仿真無誤之后,可以運行的操作更加豐富,比如調用Modelsim進行仿真(System Generator的輸出文件夾中已自動生產了.do文件),調用Resource Estimator預估資源(過程比較漫長,因為需要綜合等過程)等。完成之后在System Generator工具箱中點擊generate,就可以在輸出文件夾中生產ISE的工程了(.xise)。

 


打開生產的ISE工程,接下來的操作跟平時沒有什么區別,只不過這里的代碼全部是自動生成的:)。當然,還有一點需要特別交待的就是,生成的工程中的約束文件中,只有時序約束,是沒有管腳約束的(雖然沒有管腳約束,也可以綜合、映射、生成下載文件,有點奇怪)。可以給工程添加輸入輸出、信號,然后在Floorplan里面分配管腳。再經過綜合、映射、生成下載文件,燒寫到PROM里面,就可以運行了。

 


最后附上一點在System Generator開發、調試過程中的一點小經驗:
[1]. 一些Xilinx Blocket沒有的邏輯結構,比如說case---switch語句,用模塊搭比較麻煩,這時可以用Matlab的m文件書寫,並保存為Matlab的函數,然后使用XilinxBlocket的Mcode模塊調用,這樣比搭模塊還要簡單的多;
[2]. 浮點數的處理是個大麻煩,幸運的是Xilinx Blocket提供了Xfix語句,可以將浮點轉換為需要的寬度、位數的定點,比如a = xfix({xlUnsigned, 8, 3}, 1.53),就把浮點數1.53轉換為無符號數,其前8位代表整數,后3位代表小數;
[3]. Xilinx Blocket一些模塊是不消耗硬件資源的,比如scale模塊;另一些則是消耗的,比如shift模塊;這些詳細說明在每個模塊的幫助里面都有;
[4]. Xilinx Blocket中有的模塊,不一定在所選擇的器件上適用,比如DSP48、DSP48E等,此時需要結合具體器件的特點。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM