在嵌入式系統的設計中, IP技術為SoC的設計提供了有效途徑, 是SoC的技術支撐。當然, 在國內開發出具有自主知識產權的IP模塊還面臨著許多問題, 如核心算法的優化、不同層次模塊的建立、模塊的可重用問題以及IP模塊的標準化問題等。對于嵌入式處理器IP 核, 面對的挑戰就是如何選擇一個滿足其應用需求的處理器。現已有數百種嵌入式處理器, 每組都具備一組不同的外設、存儲器、接口和性能特性, 用戶很難做出一個合理的選擇。本文設計的微處理器的指令集與標準8051單片機完全兼容, 這樣有利于開發人員的使用。
1 總體設計方案的擬定
1.1 提出改進方案
首先在對典型八位微處理器進行了詳盡地剖析的基礎上, 指出在傳統典型微處理器內核中制約微處理器整體性能的主要因素, 然后提出以下改進方案:
(1) 微處理器的內核結構上, 將乘、除法單元各自獨立出來來完成算術邏輯指令中的乘、除法運算。這樣可以回避傳統典型微處理器基于累加器的ALU結構及算術邏輯指令, 從而提高邏輯指令的執行效率。
(2) 在指令系統上, 通過采用類RISC的指令系統和硬布線直接產生控制信號的方式來簡化指令譯碼器的設計。同時為內核添加指令緩沖區、采用指令流水線技術、多管道并行執行指令。
(3) 指令時序上, 設計中盡量減少指令執行所需的時鐘周期, 提高微處理器的運行效率。
1.2 總體設計思路
根據IP core通用的設計方法, 本文采用了標準的自頂向下的設計方法。就是根據系統級的內容,把系統劃分為單元, 然后再把每個單元劃分為下一層次的單元, 這樣一直劃分下去, 直到最底層的單元可以用硬件描述語言進行設計, 如圖1所示; 接著在完成各個模塊設計的基礎上完成系統級設計;然后進行整個系統的仿真驗證; 最后選用特定的FPGA芯片進行綜合、布局布線以及功能后仿真。
圖1 微處理器系統級劃分圖
2 各子模塊的設計
2.1 ALU模塊
算術邏輯單元(ALU) 是微控制器的核心部件, ALU的設計依賴于指令系統, ALU采用什么樣的結構、設置那些功能都是建立在對系統指令集分析的基礎上來完成。
根據算術運算類指令可知, ALU單元主要要完成的功能有: 帶/不帶進位加/減法、乘法、除法、十進制調整、邏輯運算以及布爾操作的實現。整個操作的完成是通過多路選擇器控制來完成。因此, 我們可以對整個ALU系統進行如圖2劃分, 然后對各個子模塊進行設計。
圖2 ALU系統劃分框圖
2.2 控制通路的設計
本文中的控制通路由譯碼器模塊和控制器模塊兩部分組成。這部分的設計是在對指令系統進行正確分析的基礎上來完成。
設計控制通路有兩種主要的方法。微程序控制(或微序列控制) 方式使用存儲器查表方式來輸出控制信號, 而硬連線控制使用時序邏輯和組合邏輯來產生控制信號。硬件直接實現的控制單元一般用有限狀態機實現, 通常有較高的運算速度;但是通用性差, 每個電路都必須專門設計控制單元。每一種方法都有一些變形形式。由于本文中微處理器的控制相對簡單, 所以在設計中采用了硬連線控制方法。
(1) 控制器模塊的狀態機實現
根據本文中多數輸出要保持一個完整的時鐘周期, 此時鐘周期內輸出不能受時鐘信號的影響,所以采用Moore型有限狀態機來完成控制器模塊的設計。整個控制模塊的設計通過主狀態機和子狀態機兩步來完成。注狀態機模型如圖3所示。
圖3 控制單元的主狀態機模型
以中斷處理子狀態機設計為例, 對子狀態機的設計進行說明, 狀態轉換圖如圖4所示。
圖4 中斷處理狀態機狀態轉換圖
(2) 存儲器模塊的設計
存儲器是數字系統的重要組成部分, 數據處理單元的處理結果需要存儲, 許多處理單元的初始化數據也需要存放在存儲器中。本文的存儲器結構, 采用的是將程序存儲器和數據存儲器分開尋址的哈佛結構。同時又將數據存儲器分為內部數據存儲器和外部數據存儲器兩部分來設計。
(3) 中斷系統設計
本文中的中斷系統在控制通路來完成, 共提供了5個中斷源, 同時通過對中斷優先級寄存器IP中的某位的置位或清除, 可以把每個中斷源分別編程為高優先級或低優先級。如表1所示。
表1 中斷源表
(4) 定時器/計數器模塊的設計
定時器/計數器是微處理器中重要的外圍模塊,它主要是完成作為定時器和事件計數器的功能。
在作為定時器工作時, 每一個機器周期使定時寄存器加1計數。在作為事件計數器工作時, 是對外部輸入負跳變信號做加法計數, 規定在每個機器周期的某一狀態采樣此信號, 在前一個周期采樣到"1", 后一個周期采樣到"0" 時計數加1, 而在檢測到跳變信號后的那個周期的下一個狀態時,新的計數值裝入計數寄存器。
3 系統綜合、仿真驗證與性能分析
在整個微處理器IP核的設計過程中, 利用可編程邏輯器件進行電路驗證對于保證設計的正確性和投片成功十分重要。在FPGA的設計流程中包括三種基本的驗證方法: HDL、RTL級描述仿真, 門級仿真和布線后的時序仿真。具體驗證流程如圖5所示。仿真的目的就是要確認設計的正確性。如果出錯的話, 則通過分析仿真器的輸出波形, 找出出錯的原因, 并對原設計進行修改。
圖5 系統驗證流圖
3.1 仿真驗證
驗證方法: 首先編寫各種測試代碼; 然后轉化為vhdl文件, 再寫入ROM模塊; 最后在仿真環境中運行IP核, 完成對整個系統的全指令集測試。一般內部RAM和寄存器的值無法直接檢測, 可以通過多條指令將其輸出到IP核的四個輸出端口供檢查。本文采用Model Tech公司的仿真工具Moledsim來進行功能仿真和時序仿真。
圖6是對基本子程序調用指令的測試仿真時序。包括子程序調用、傳送、加法以及返回等指令。根據測試指令集, 如果程序執行正確, 那么在程序執行完后, 輸出端口P0口就會出現21H。
圖6 基本子程序調用指令的測試仿真波形圖
測試指令集: MOV A, #20H; ACALL DELEY;MOV P0, A; DELAY: INC A; MOV P0, A。
3.2 綜合及綜合結果分析
本文中的綜合及優化都是由綜合工具SynplifyPro來完成的。利用Synplify Pro工具提供的邏輯綜合與適配工具和設計的約束條件, 可以方便的實現本文各模塊的邏輯綜合和布局布線。
對于本文中的八位微處理器來說, 由于它是一個非常復雜的數字邏輯電路, 不僅包含大量的組合邏輯電路, 而且包含了時序復雜的時序邏輯電路。通過邏輯綜合估計整個系統超過一百萬門,因此要用大容量的可編程邏輯器件來做電路驗證。
通過比較各種可編程邏輯器件的性能和結構特點(見表2), 決定采用器件Xilinx Virtex2 XC2V1000bg575-6來完成本文的電路驗證。
表2 Virtex2系列器件性能和結構特點表
綜合結果分析主要是利用結構視圖、綜合報告分析綜合結果是否滿足時序要求, 分析綜合的頻率、面積等信息。
3.3 性能分析
本文的器件資源的占用情況如表3.(由于內部存儲器要占用很多的資源, 故此表列出的是縮減內部內存后器件的資源占用情況)。
表3 器件資源占用情況表
將經過FPGA驗證的MCU核與傳統的微處理器做比較, 可以看出, 由于所設計的微處理器核是采用硬布線邏輯產生控制信號, 所以其工作時鐘頻率要大大優于傳統的微處理器。FPGA驗證的結果是, 工作時鐘頻率大于60MHz, 是傳統微控制器工作時鐘頻率的五倍; 在每MHz時鐘頻率的指令執行效率指標上, 所設計微處理器核的性能約為傳統微控制器的12倍。這得益于微控制器內核采用類RISC指令結構, 及設計指令執行周期的大大減小。
4 結束語
由于整個微控制器內核都是采用可綜合的VHDL語言描述, 這使得該內核具有很好的可移植性、可重復利用性和實用性。也可以適當地拓寬數據總線的寬度, 以減少內存訪問的次數, 從而提高指令執行效率。此外, 還可借助EDA工具,方便地與AD/DA轉換器、LCD顯示驅動器、串行通信接口等外圍功能模塊綜合成各種嵌入式控制系統。
-
FPGA
+關注
關注
1629文章
21752瀏覽量
604116 -
嵌入式
+關注
關注
5086文章
19142瀏覽量
305978 -
微處理器
+關注
關注
11文章
2264瀏覽量
82532
發布評論請先 登錄
相關推薦
評論