天天看點

基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈

MBD-FPGA 開發與實作 http://blog.sina.com.cn/McCrocodile

這個簡單的例子主要說明使用Simulink的MBD-FPGA基本開發流程。你将體會到這種開發解決方案是多麼的高效和簡單。

目的:

實作一個循環點亮的LED燈。

模型建構:

  1. 實作的基本思路:使用兩個計數器,計數器的1在時鐘上升沿時加1,計數到255時,輸出一個時鐘周期的脈沖溢出信号。将此溢出信号作為計數器2的計數控制信号,最後對計數器2的輸出信号與常數比較,控制LED的亮和滅。
  2. 建構的仿真模型:
    基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
    螢幕剪輯的捕獲時間: 2011/10/5 21:31
    基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
    螢幕剪輯的捕獲時間: 2011/10/5 21:15
    基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
    螢幕剪輯的捕獲時間: 2011/10/5 21:15
  3. 對模型作以下設定:
    1. 設定信号/端口的顯示屬性:
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
    2. 設定模型求解器參數:
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
    3. 設定錯誤報告屬性:
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
  4. 建構子系統設定各子產品的信号屬性:
    1. 子系統:選中需要的子產品,右鍵選擇建構子系統。
    2. 基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
    3. 計數器屬性:
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
      螢幕剪輯的捕獲時間: 2011/10/5 21:36
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
  5. 生成HDL代碼,聯合仿真模型以及FPGA工程:
    1. 生成HDL代碼:Tools下面的HDL Code Generation中的Options。
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
      設定要生成HDL代碼的子系統,選擇要生成的語言,以及生成HDL代碼的檔案夾,設定好這些之後,單擊Run Compatibilty Checker檢查是否有代碼不能生成代碼或者有設定不支援。
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
      螢幕剪輯的捕獲時間: 2011/10/5 21:46
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈

      螢幕剪輯的捕獲時間: 2011/10/5 21:53

      可以看出這裡選擇的計數器子產品不支援生成HDL代碼,初學者經常遇到這個問題,在指令行視窗輸入:hdllib(還有一個是eml_hdl_design_patterns),裡面的子產品都可以生成HDL代碼,隻要找到替換上面的子產品就可以了。綠色的為替換後的模型如右側。

      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
      螢幕剪輯的捕獲時間: 2011/10/5 22:05
      基于模型設計的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

      全局設定:對複位形式,高電平還是低電平複位等作設定。

      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
      螢幕剪輯的捕獲時間: 2011/10/5 22:17
    2. 生成測試激勵和聯合仿真模型:
      基于模型設計的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開始仿真。

      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
      螢幕剪輯的捕獲時間: 2011/10/5 22:22
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
      觀察結果:可以看得出來ModelSim的仿真結構和Simulink的行為一緻。
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈
    3. 生成FPGA工程:Tools下面的HDL Code Generation中的HDL Workflow Advisor,這兒的檢查更詳細些。
      基于模型設計的FPGA開發與實作:基本流程(一)之入門小例子(一):跑馬燈

      螢幕剪輯的捕獲時間: 2011/10/5 22:40

      這兒這個FlashLED的程式就可以作為頂層檔案,那麼直接配置設定管教之後就可以下載下傳到FPGA就可以工作了,不過你似乎要注意這兒有個時鐘時能端口的處理。

    4. FIL (FPGA In Loop):目前隻支援Xilinx

    思考一問題:

    如果你現在要增加燈的數量,你需要修改那些地方就可以了?如果你是寫的HDL代碼又怎樣修改?

繼續閱讀