MBD-FPGA 開發與實作 http://blog.sina.com.cn/McCrocodile
這個簡單的例子主要說明使用Simulink的MBD-FPGA基本開發流程。你将體會到這種開發解決方案是多麼的高效和簡單。
目的:
實作一個循環點亮的LED燈。
模型建構:
- 實作的基本思路:使用兩個計數器,計數器的1在時鐘上升沿時加1,計數到255時,輸出一個時鐘周期的脈沖溢出信号。将此溢出信号作為計數器2的計數控制信号,最後對計數器2的輸出信号與常數比較,控制LED的亮和滅。
- 建構的仿真模型: 螢幕剪輯的捕獲時間: 2011/10/5 21:31
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 21:15基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 21:15基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 - 對模型作以下設定:
- 設定信号/端口的顯示屬性:
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 - 設定模型求解器參數:
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 - 設定錯誤報告屬性:
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
- 設定信号/端口的顯示屬性:
- 建構子系統設定各子產品的信号屬性:
- 子系統:選中需要的子產品,右鍵選擇建構子系統。
-
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 - 計數器屬性: 螢幕剪輯的捕獲時間: 2011/10/5 21:36
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
- 生成HDL代碼,聯合仿真模型以及FPGA工程:
- 生成HDL代碼:Tools下面的HDL Code Generation中的Options。 設定要生成HDL代碼的子系統,選擇要生成的語言,以及生成HDL代碼的檔案夾,設定好這些之後,單擊Run Compatibilty Checker檢查是否有代碼不能生成代碼或者有設定不支援。
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 21:46基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 21:53
可以看出這裡選擇的計數器子產品不支援生成HDL代碼,初學者經常遇到這個問題,在指令行視窗輸入:hdllib(還有一個是eml_hdl_design_patterns),裡面的子產品都可以生成HDL代碼,隻要找到替換上面的子產品就可以了。綠色的為替換後的模型如右側。
螢幕剪輯的捕獲時間: 2011/10/5 22:05基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 22:07
可以看出來替換後的仿真結構一緻,再來看看檢查的結果。
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 22:10
之後可以單擊Generation生成HDL代碼,下面是生成的報告。
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 22:10
好了,這兒生成的代碼,你可以內建到你的工程中了。不過時序邏輯,會自動加入時鐘複位,時鐘使能等端口。
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 22:13
全局設定:對複位形式,高電平還是低電平複位等作設定。
螢幕剪輯的捕獲時間: 2011/10/5 22:17基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 - 生成測試激勵和聯合仿真模型:
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 22:20
單擊生成測試激勵,生成聯合仿真測試模型,如下圖。輕按兩下Start Simulator子產品啟動ModelSim,如果你的ModelSim安裝正确(ModelSim® SE 6.6c, 6.5f, 6.4g ModelSim PE 6.6c, 6.5f, 6.4g ModelSim DE 6.6c R2011a隻支援這幾個版本 ),ModelSim将自動啟動,并編譯HDL檔案,最後會顯示Ready for Simulation,表示可以開始啟動Simulink開始仿真。
螢幕剪輯的捕獲時間: 2011/10/5 22:22基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 觀察結果:可以看得出來ModelSim的仿真結構和Simulink的行為一緻。基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 - 生成FPGA工程:Tools下面的HDL Code Generation中的HDL Workflow Advisor,這兒的檢查更詳細些。
基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈 螢幕剪輯的捕獲時間: 2011/10/5 22:40
這兒這個FlashLED的程式就可以作為頂層檔案,那麼直接配置設定管教之後就可以下載下傳到FPGA就可以工作了,不過你似乎要注意這兒有個時鐘時能端口的處理。
- FIL (FPGA In Loop):目前隻支援Xilinx
思考一問題:
如果你現在要增加燈的數量,你需要修改那些地方就可以了?如果你是寫的HDL代碼又怎樣修改?
- 生成HDL代碼:Tools下面的HDL Code Generation中的Options。