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