摘要: 本文基于目前SOC系統(tǒng)技術(shù)的發(fā)展情況,設(shè)計一個可用于SOC系統(tǒng)的核,該核的指令集完全兼容于MCS-51系列的微控制器。本設(shè)計的目的在于提高MCS-51的指令執(zhí)行速度的同時兼顧面積的考慮,提升其在Soc系統(tǒng)中的應(yīng)用價值。該IPCORE采用數(shù)據(jù)總線和指令總線相分離的哈佛總線結(jié)構(gòu)和全新的指令時序以及指令實現(xiàn)方式,并使用PLA硬布線邏輯代替微程序控制,加快了核的速度,提高了指令執(zhí)行效率。所有的模塊都采用vhdl硬件描述語言進行設(shè)計描述,使用EDA工具進行功能仿真、綜合。 1 前言 當(dāng)前,在微電子及其應(yīng)用領(lǐng)域正在發(fā)生一場前所未有的變革,這場變革是由片上系統(tǒng)(SOC)技術(shù)研究應(yīng)用和發(fā)展引起的.從技術(shù)層面看SOC技術(shù)是超大規(guī)模集成電路發(fā)展的必然趨勢和主流,它以超深亞微米VDSM(Very Deep Submicon)工藝和知識產(chǎn)權(quán)IP核復(fù)用技術(shù)為支撐。在眾多的IP核中,MCU CORE以其在SOC中嵌入后能充分發(fā)揮其處理靈活、軟件可升級、硬件開銷少的特點,在很大程度上成為SOC芯片必需模塊。INTEL公司的MCS-51系列MCU 可以說是目前國內(nèi)應(yīng)用時間最長、最普及、可獲得應(yīng)用資料最多的功能強大的8位MCU , 所以建立兼容51指令MCU可綜合IP核對于各種嵌入式系統(tǒng)和片上系統(tǒng)(SOC)的應(yīng)用具有重要意義。 圖1 IPCORE 內(nèi)部結(jié)構(gòu) 2 總體構(gòu)架設(shè)計 本設(shè)計采用自頂向下的設(shè)計方法成功設(shè)計了與MCS-51 系列微處理器指令集完全兼容的8位嵌入式MCU核, 此核的內(nèi)部結(jié)構(gòu)如圖1所示(整個設(shè)計過程也是圍繞其產(chǎn)開)。 3 核內(nèi)單元(主要單元設(shè)計的概述) 3.1 ALU 單元的設(shè)計: ALU單元由一些基本操作功能模塊(加/減法模塊、乘法模塊、除法模塊、十進制調(diào)整模塊和邏輯模塊)構(gòu)成,整個操作是通過多路選擇器來完成的。在ALU單元的結(jié)構(gòu)上,將乘、除法單元各自獨立出來完成算術(shù)運算指令中的乘、除法運算。這樣可以回避傳統(tǒng)典型微處理器基于累加器ACC的ALU結(jié)構(gòu),并且由于ALU單元被設(shè)計成純組合邏輯,因而速度較快,從而提高算術(shù)運算指令的執(zhí)行效率。 3.2 時序設(shè)計 主要從簡化控制器設(shè)計、提高核的性能出發(fā),本設(shè)計沒有采用Intel MCS-51雙相時鐘的復(fù)雜時序設(shè)計,而是采用單相時鐘(單相時鐘因為在時序和傳輸上比較簡單可靠,被一些高性能芯片使用)、全同步設(shè)計,所有時序電路均采用邊沿觸發(fā)的觸發(fā)器。采用單相時鐘全同步設(shè)計會使芯片面積有所增加,但降低了設(shè)計的復(fù)雜度,減少了生產(chǎn)工藝不確定性對系統(tǒng)性能的影響,提高了設(shè)計的成功率。 3.3 控制單元的設(shè)計 控制器本質(zhì)上是一個結(jié)構(gòu)及狀態(tài)轉(zhuǎn)移非常復(fù)雜的有限狀態(tài)機(FSM)。從程序執(zhí)行的宏觀角度看,每一條指令對應(yīng)著這個復(fù)雜的有限狀態(tài)機的一個狀態(tài),一條一條指令的依次執(zhí)行,就是一系列狀態(tài)轉(zhuǎn)移。控制器的實現(xiàn)主要有兩種:硬布線實現(xiàn)方式和微程序?qū)崿F(xiàn)方式。考慮到本次設(shè)計的是一個用于SOC的IP核所以采用PLA技術(shù),就是用存儲技術(shù)實現(xiàn)硬布線邏輯,可以認(rèn)為它是硬布線邏輯控制器和微程序控制器兩者的折衷方案。由于PLA微控制器集中了硬布線邏輯控制器與微程序控制器兩者的優(yōu)點,與硬布線邏輯控制器相比,它的設(shè)計工作量小,修改、維護都比較方便。與微程序控制器相比,它的速度較快。這些優(yōu)點都適合其作為內(nèi)核整合在SOC中。為了提高FSM的效率,我們把控制單元中組合邏輯和時序邏輯分開設(shè)計,組合邏輯主要輸出控制信號并且產(chǎn)生次態(tài)邏輯,時序邏輯主要實現(xiàn)存儲單元的讀寫。 3.3.1 指令狀態(tài)的設(shè)計 圖2 指令狀態(tài)機狀態(tài)圖 如圖2 所示狀態(tài)機共有五種狀態(tài),每個狀態(tài)轉(zhuǎn)換時間都對應(yīng)一個時鐘周期,所有指令共有狀態(tài)為取指狀態(tài)(取指令操作碼)和開始狀態(tài)(復(fù)位后的狀態(tài)),中間的執(zhí)行狀態(tài)根據(jù)不同指令來分別采取1 到3 個執(zhí)行步驟,比如ADD A RN 需要一個執(zhí)行步驟,ADD A #DATA 需要兩個執(zhí)行步驟等。這樣所有的指令就可以在一到四個時鐘周期內(nèi)完成整個指令的執(zhí)行過程。 3.3.2 指令狀態(tài)機的實現(xiàn) 51指令按功能分為五類:數(shù)據(jù)傳送類;算術(shù)操作類;邏輯操作類;控制程序轉(zhuǎn)移類;布爾變量操作類。出于減少內(nèi)部連線和控制方便的考慮,我們將不同類的指令放在了不同的模塊中解碼執(zhí)行。 算術(shù)操作類指令和邏輯操作類指令由指令譯碼控制模塊實現(xiàn)譯碼,產(chǎn)生操作數(shù)和ALU控制命令,然后傳送給算術(shù)邏輯運算單元ALU 完成運算,ALU 模塊將運算結(jié)果送回指令譯碼控制模塊,再由指令譯碼控制模塊將結(jié)果寫回目的單元。 數(shù)據(jù)傳送類指令中的MOVX指令的實現(xiàn)需要所有外部控制時序信號的配合。在輸出控制邏輯中直接產(chǎn)生MOVX所需的控制信號。數(shù)據(jù)的輸入輸出則在指令譯碼控制模塊中實現(xiàn)。數(shù)據(jù)傳送類中其他指令和布爾變量操作類指令中的非轉(zhuǎn)移指令都直接在指令譯碼控制模塊中實現(xiàn),通過內(nèi)部總線實現(xiàn)內(nèi)部存儲器、寄存器,外部存儲器之間的數(shù)據(jù)傳送。 控制程序轉(zhuǎn)移類指令由于與程序計數(shù)器直接相關(guān),因而這一類指令中的長調(diào)用指令、絕對調(diào)用指令、長轉(zhuǎn)移指令、絕對轉(zhuǎn)移指令、相對轉(zhuǎn)移指令、子程序返回指令的PC計算放在了狀態(tài)機時序部分PC計算模塊,完成取指操作;而條件轉(zhuǎn)移指令和布爾變量操作類中的測試轉(zhuǎn)移指令則由指令譯碼控制模塊完成測試比較操作,將比較結(jié)果送回PC計算模塊使其根據(jù)比較結(jié)果來完成轉(zhuǎn)移操作;由于數(shù)據(jù)傳送類指令中的MOVC指令直接操作程序計數(shù)器,因而它的實現(xiàn)也放在了這個模塊中。 4 核內(nèi)其他單元的設(shè)計 4.1 中斷單元的實現(xiàn): 此次IPCORE 共有5 個中斷包括兩個外部中斷,三個中斷。中斷源的檢測是在狀態(tài)機時序部分完成,執(zhí)行中斷程序之前操作如PC 裝載中斷向量值,PC 值的保存,清除中斷標(biāo)志等是在狀態(tài)機的組合邏輯部分實現(xiàn)。 4.2 定時計數(shù)單元和UART 的設(shè)計:兩個多功能16 位定時/ 計數(shù)器,我們用兩個進程分別來實現(xiàn)。定時/ 計數(shù)器1 與定時/ 計數(shù)器0 類似,但它輸出一個溢出脈沖到串行接口,給串行接口提供波特率。溢出中斷標(biāo)志輸出到中斷處理模塊。串行口是一個全雙工通信接口,它可作UART 用,也可以作同步移位寄存器用。我們用兩個進程來分別實現(xiàn)其收發(fā)功能。收發(fā)所需時鐘在進程外實現(xiàn),模式1、2、3 的區(qū)別只是時鐘和位數(shù)不同,故放在一起實現(xiàn)。 4.3 存儲器設(shè)計:核內(nèi)包含256B 的存儲器,其中低128 單元作為用戶RAM,高128 單元作為SFR.外部RAM 和ROM 可根據(jù)需要任意擴展到64KB。此次設(shè)計采用哈佛總線結(jié)構(gòu),ROM 和RAM 區(qū)由控制模塊分別提供數(shù)據(jù),地址傳送總線以及控制信號線。內(nèi)部RAM 和外部RAM 的讀寫也采用不同的控制線獨立控制。這樣的并行結(jié)構(gòu)加速了指令執(zhí)行的過程,有利于速度的提升。 5 功能和時序仿真的結(jié)果 5.1 功能測試 編完代碼后,將所有模塊整合,接下來就需要搭建測試平臺(testbench),寫激勵文件,進行功能仿真。在源代碼調(diào)試階段,編寫一簡單的指令來進行仿真,然后看波形就可以了。當(dāng)所有指令的調(diào)試基本通過的時候,就要對其進行全功能仿真,因此,針對此核的不同功能,如外中斷、定時器/計數(shù)器、UART等需要編寫不同的測試文件,以保證其在多種情況下都能正常工作。 測試平臺見圖 圖3 測試平臺的建立模式 利用Mentor Graphics 的工具MODELSIM SE/對模型進行了模擬驗證。此處僅給出了一個簡單的指令執(zhí)行后的模擬結(jié)果(見圖4)。圖中所示為ADD A RN指令的波形圖,可以看出,模擬結(jié)果與指令執(zhí)行結(jié)果一致。該模型也通過了MODELSIM的可綜合性檢查。 圖4 指令A(yù)DD A RN 執(zhí)行結(jié)果 5.2 時序測試 在時序測試中我們選用了ALTERA 公司的不同系列FPGA 芯片來對次IPCORE 進行綜合,綜合后的性能如下表所示: 從上表我們可以看出雖然不同的器件綜合后的結(jié)果不相同,但是本文設(shè)計的8 位MCUIPCORE 可以完全可以容納到一個相對門數(shù)為20 萬門以上的FPGA 中,并且具有較好的時鐘頻率特性。 6 結(jié)論 雖然這里只設(shè)計了一款八位的MCU IP CORE,但我們所提出的架構(gòu)和模塊設(shè)計新思路可以推廣到16位、32位以及64位MCU的設(shè)計中。因為不管是多少位的MCU CORE,設(shè)計中需要重點考慮的架構(gòu)以及指令系統(tǒng)基本上是一致的,所不同的只是一些總線位數(shù)以及寄存器的位數(shù)而已。當(dāng)然隨著位數(shù)的增加,一些驗證和測試的復(fù)雜度也將顯著增加,但從設(shè)計思路的角度來講,它們是一樣的。在具體的推廣中,要根據(jù)應(yīng)用領(lǐng)域的不同,對這些方法進行適當(dāng)?shù)娜∩峄蜻m當(dāng)?shù)母倪M,以更加符合某些具體應(yīng)用領(lǐng)域的要求。 本文創(chuàng)新點:本文設(shè)計了一種新結(jié)構(gòu)的兼容51指令的MCU IPCORE。設(shè)計中引入了純組合的ALU單元,增加了并行乘除法器,重新設(shè)計了外圍組件,在設(shè)計控制單元的時候,重新設(shè)計了指令的時序,并且把指令狀態(tài)機的時序和組合部分分開設(shè)計,提高了狀態(tài)機的執(zhí)行效率。從結(jié)果上看,時鐘頻率提高了很多,可由用戶根據(jù)需要選擇合適的ROM和RAM 的大小,并且完全可以把此核放在一個相對門數(shù)在20萬門以上的FPGA的中。 |