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