<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 汽車電子 > 設(shè)計應(yīng)用 > 基于FPGA的微處理器內(nèi)核設(shè)計與實現(xiàn)

          基于FPGA的微處理器內(nèi)核設(shè)計與實現(xiàn)

          ——
          作者:宋學(xué)瑞,王英茂 時間:2007-05-24 來源:電子技術(shù)應(yīng)用 收藏
          與傳統(tǒng)投片實現(xiàn)ASIC相比,具有實現(xiàn)速度快、風(fēng)險小、可編程、可隨時更改升級等一系列優(yōu)點,因而得到了越米越廣泛的應(yīng)用。MCS-51應(yīng)用時間長、范圍廣,相關(guān)的軟硬件資源豐富,因而往往在應(yīng)用中嵌人MCS-51內(nèi)核作為微控制器。但是傳統(tǒng)MCS-51的指令效率太低,每個機器周期高達12時鐘周期,因此必須對內(nèi)核加以改進,提高指令執(zhí)行速度和效率,才能更好地滿足的應(yīng)用。

          通過對傳統(tǒng)MCS-51指令時序和體系結(jié)構(gòu)的分析,使用VHDL語言采用自頂向下的設(shè)計方法重新設(shè)計了一個高效的微控制器內(nèi)核。改進了的體系結(jié)構(gòu),可以兼容MCS-51所有指令,每個機器周期只需1個時鐘周期,同時增加了硬件看門狗和軟件復(fù)位功能,提高了指令執(zhí)行效率和抗干擾能力。

          1 系統(tǒng)設(shè)計

          1.1 模塊劃分

          本內(nèi)核在劃分和設(shè)計模塊時,基于以下幾條原則:

          (1)同步設(shè)計,提高系統(tǒng)穩(wěn)定性和可移植性;(2)功能明確,功能接近的放在同一個模塊內(nèi)以減少模塊的數(shù)量和模塊之間的互連線,同時利于綜合時的優(yōu)化;(3)模塊之間的接口時序預(yù)先定義好,并嚴(yán)格按定義的時序要求編寫每個模塊;(4)模塊信號的輸出采用寄存器輸出的方式。這樣可以提高系統(tǒng)的可靠性,一旦出錯也容易確定問題所在。

           本內(nèi)核由以下幾個部分組成:中央控制單元(CPU),算術(shù)邏輯運算單元(ALU),寄存器組控制器(REGS_CTR),定時器/計數(shù)器(T/C),通用串行接口(UART),看門狗(WT_DOG),如圖1所示。    

          1.2 提高速度的方法

          本內(nèi)核采用以下幾種辦法來提高速度。

          (1)采用多數(shù)據(jù)通道:本內(nèi)核取消了傳統(tǒng)MCS-51系列的單一總線,采用直連結(jié)構(gòu),各模塊的數(shù)據(jù)傳輸使用單向?qū)S脭?shù)據(jù)線,尤其在數(shù)據(jù)交換頻繁的ALU與REGS_CTR之間采用四條單向數(shù)據(jù)線相互連接,提高了數(shù)據(jù)傳輸?shù)牟⑿卸龋瑥亩涌炝藬?shù)據(jù)的傳輸。

          (2)采用雙相時鐘:如圖2所示。CLK時鐘上升沿CPU發(fā)出控制信號,I/O端口采樣外部信號即圖1中流入REGS_CTR的數(shù)據(jù)或控制信號;CLK1時鐘上升沿把數(shù)據(jù)寫入寄存器中并把刷新后的數(shù)據(jù)或控制信號發(fā)出,即圖1中虛箭頭表示的數(shù)據(jù)流向。這樣REGS_CTR的讀寫分別在兩個時鐘的上升沿,減少了一個時鐘周期的等待,時鐘頻率提高了一倍。    

          (3)采用寄存器組:FPGA內(nèi)部有極為豐富的寄存器資源,本內(nèi)核取消了傳統(tǒng)的同一時間只能讀或者寫的RAM塊,代之以可同時進行不同地址讀寫操作的寄存器組。一些特殊功能寄存器有專用總線輸出,如圖3所示。    

          (4)提高時鐘頻率:對電路的關(guān)鍵路徑進行了改造,以減少邏輯電路級數(shù)從而提高時鐘頻率。通過這些設(shè)計,保證了每個機器周期只需一個時鐘周期,提高了指令執(zhí)行效率,同時也提高系統(tǒng)的時鐘頻率。

          1.3 兼容性方面的考慮

          MCS-51系列有豐富的軟硬件資源,為充分利用這些資源,在本時盡量考慮增強其兼容性。除機器周期變?yōu)樵瓉淼?/12以及新增加一個特殊功能寄存器(地址F8H)用于控制看門狗和軟件復(fù)位外,其他沒有變化。因而單個內(nèi)核應(yīng)用時,以前的程序可完全移植;在與外界通信時因機器周期與MCS-51單片機有差別可能需對一些程序作相應(yīng)改動。這樣可以使系統(tǒng)在提高性能的同時無需其他開銷,便于推廣使用。

          2 功能模塊的設(shè)計

          2.1 中央控制器(CPU)的設(shè)計

          這是微控制器的核心,負(fù)責(zé)中斷處理及指令執(zhí)行。中斷處理分為中斷取樣、中斷高低優(yōu)先級的判斷及執(zhí)行相應(yīng)的處理過程。CPU對指令的執(zhí)行分為四個階段:取指-譯碼、執(zhí)行、執(zhí)行-回寫、回寫-預(yù)取指。指令執(zhí)行流程如圖4所示。    

          在編碼實現(xiàn)方式上,本模塊是一個大的父子兩級狀態(tài)機,父狀態(tài)機為指令的類型,子狀態(tài)機為每種指令的執(zhí)行步驟。這樣結(jié)構(gòu)清晰,利于編程、查錯及仿真。

          2.2 寄存器組(REGS_CTR)的設(shè)計

          本模塊在CPU的控制下完成:程序地址的產(chǎn)生、高低128個寄存器的讀寫。程序計數(shù)器根據(jù)控制信號與來自寄存器組的數(shù)據(jù)產(chǎn)生相應(yīng)的指令地址并送往ROM。在寄存器組的讀寫中,用讀譯碼電路選擇輸出操作數(shù)據(jù),寫譯碼電路寫入結(jié)果數(shù)據(jù)。這種結(jié)構(gòu)可以在對一個寄存器寫的同時讀另一個寄存器。如圖3所示,通用的數(shù)據(jù)總線可以取得任何一個寄存器的數(shù)據(jù),各個專用寄存器也有各自的專用數(shù)據(jù)線輸出。例如執(zhí)行指令A(yù)DDA,DIRECT時,由于累加器ACC有專門的總線,只要給出相應(yīng)的讀控制信號就可以從通用數(shù)據(jù)總線上得到來自寄存器組的DIRECT數(shù)據(jù),這樣ALU在同一周期內(nèi)就可以得到所需的兩個操作數(shù)。

          2.3 看門狗(WT_DOG)的設(shè)計

          傳統(tǒng)的MCS-51系列單片機為提高抗干擾能力通常使用外置看門狗或者采用軟件陷阱的方式使系統(tǒng)復(fù)位。本內(nèi)核增加了硬件看門狗及軟件復(fù)位功能,通過新增加一個特殊功能寄存器(地址F8H)來控制是否啟用看門狗或軟件復(fù)位以及設(shè)置看門狗的喂狗時間。除非掉電或用程序重新設(shè)置,F(xiàn)8H寄存器的數(shù)值一直保存,這樣避免了看門狗復(fù)位后其自身失效的問題。

          2.4 算術(shù)邏輯運算單元(ALU)的設(shè)計

          累加器在CPU發(fā)出的指令控制下,對來自ROM與REGS_CTR的數(shù)據(jù)完成相應(yīng)的操作,包括算術(shù)運算(加減乘除)與邏輯運算(與或非)及BCD碼調(diào)整。所有操作的結(jié)果在一個時鐘周期內(nèi)得出,在clkl上升沿到來后寫入REGS_CTR。

          2.5 串行模塊及定時/計數(shù)器的設(shè)計

          串行模塊和定時/計數(shù)器的工作模式與傳統(tǒng)的MCS-51系列單片機相同。定時/計數(shù)器一個時鐘周期計數(shù)一次,與傳統(tǒng)MCS-51單片機一個機器周期計數(shù)一次效果等同。在與外界用串行端口通信時機器周期有差別。

          3 仿真、綜合優(yōu)化及實現(xiàn)

          3.1 仿真

          為了保證內(nèi)核正確地工作,必須對電路做充分的仿真以保證設(shè)計的正確性。系統(tǒng)設(shè)計完成后用ModelSimSePLUS6.0D對電路進行了功能仿真,對組合邏輯模塊(如ALU)采用了窮舉測試向量的方法予以功能仿真,對于時序模塊如CPU,先測試能否正確執(zhí)行中斷及每一條指令,再測試隨機指令及隨機中斷。仿真結(jié)果表明,內(nèi)核能滿足設(shè)計的要求。ALU的仿真結(jié)果如同5所示。    

          其中rom_data、acc、regs_data為ALU的操作數(shù),in-struction為指令的類別,alu_rslta、alu_rsltb為ALU的操作結(jié)果的高、低字節(jié)。由圖5可見,在輸入操作數(shù)和進位溢位標(biāo)志位不變的情況下,不同的指令都能輸出相對應(yīng)的正確結(jié)果。ALU操作結(jié)果的數(shù)據(jù)予以鎖存,直到下一個指令或數(shù)據(jù)到來時才改變。在保持指令不變的情況下改變輸入數(shù)據(jù)和進位溢位標(biāo)志位也能得到正確的結(jié)果。

          3.2 綜合優(yōu)化

          為了盡可能提高時鐘頻率,必須降低關(guān)鍵路徑的延時。由于ALU所有的操作都要在一個周期內(nèi)完成,因而操作所需的最長時間也是時鐘周期的最小值。綜合分析后發(fā)現(xiàn)操作時間最長的是除法運算,采用通移位相減除法器所需時間為39ns,如果采用并行除法器后則只需23ns,從而顯著提高了時鐘頻率。內(nèi)核綜合后消耗的LUT為4500個。

          3.3 實現(xiàn)

          本內(nèi)核的全部工作都在ISE7.1開發(fā)環(huán)境下完成。其中,仿真用的是ModelSimSePLUS6.0D,綜合用的軟件是SynplifyPro8.0。驗證采用的平臺足CREAT-SOPC1000X試驗箱,它的核心芯片即FPGA使用的是Xilinx公司的Virtex-Ⅱxc2v1000-6fg456,等效為100萬門電路,如圖6所示。平臺上集成了一些常用的功能模塊,其中的晶振為50MHz,超過了本內(nèi)核綜合后的最高頻率,因而設(shè)計了一個5分頻模塊使時鐘為10MHz。內(nèi)核運行的測試程序和數(shù)據(jù)以事先機器代碼的形式“固化”在一個程序模塊內(nèi)替代ROM,系統(tǒng)可以像ROM一樣對其讀取數(shù)據(jù)和程序。P0-3輸出觀察數(shù)據(jù),檢驗程序是否正確執(zhí)行。驗證結(jié)果表明,內(nèi)核能正確執(zhí)行加載的程序并穩(wěn)定運行在10MHz的頻率上。     

          為克服傳統(tǒng)MCS-51單片機執(zhí)行效率偏低的缺點,滿足現(xiàn)在的FPGA對嵌入式軟核速度較高的要求,重新設(shè)計了一個兼容MCS-51指令的嵌入式軟核。該軟核指令效率提高了12倍,同時增加了實用的功能:硬件看門狗和軟件復(fù)位。內(nèi)核通過FPGA驗證具有一定的應(yīng)用價值。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();