牛英山,王 爽,楊 光
(中國電子科技集團(tuán)公司第四十七研究所,沈陽110032)
通用嵌入式32位RISC CPU具有體積小、功耗少、成本低的優(yōu)點(diǎn),作為控制核心在SoC設(shè)計領(lǐng)域得到了非常廣泛的應(yīng)用。
在嵌入式領(lǐng)域,主流的通用32位RISC CPU有ARM、MIPS、LEON、Nios II、PowerPC、SPARC 等幾大系列。
目前主要有 ARM7(ARMv4T)、SecurCore(ARMv4T/v6M/v7M)、ARM9(ARMv4T)、ARM9E(ARMv5TEJ)、 ARM10(ARMv5TE)、 ARM11(ARMv6TE)、ARM Cortex-A/R/M(ARMv7-A/R/M)等幾大系列。ARM采用RISC體系架構(gòu),微處理器一般具有如下特點(diǎn):
·體積小、低功耗、低成本、高性能;
·支持 Java(8位)/Thumb(16位)/ARM(32位)三套指令集;
·大量使用寄存器,指令執(zhí)行速度更快;
·大多數(shù)數(shù)據(jù)操作都在寄存器中完成;
·尋址方式靈活簡單,執(zhí)行效率高;
·指令長度固定。
目前主要有MIPS32K和MIPS64K兩大系列;MIPS處理器主要有以下技術(shù)特點(diǎn):
·MIPS的設(shè)計保持純粹的RISC風(fēng)格;
·占用更小的芯片面積,功耗方面稍大一些;
·具有32位和64位兩種架構(gòu)的指令集;
·核內(nèi)包含大量寄存器、指令數(shù)和字符;
·可視的流水線延遲間隙;
·多發(fā)射核技術(shù);
·MIPS是開放式的架構(gòu),用戶可以在開發(fā)的內(nèi)核中加入自己的指令。
目前主要有LEON2、LEON3、LEON4三大系列。LEON軟核是一個與SPARC V8兼容的整數(shù)處理單元IU(Integer Unit),LEON2是5級流水線,LEON3和LEON4是7級流水線。LEON微處理器具有以下特點(diǎn):
·流水線結(jié)構(gòu);
·具有硬件乘法/除法和MAC功能;
·獨(dú)立的指令和數(shù)據(jù)Cache(哈佛結(jié)構(gòu));
·可根據(jù)需求靈活配置Cache的容量;
·片上總線使用AMBA2.0規(guī)范,支持APB和AHB標(biāo)準(zhǔn);
·具備一些片上常用外設(shè)(如UART、中斷控制、I/O接口、實(shí)時時鐘、看門狗等)。
目前主要有Nios、Nios II兩大系列。
Nios II處理器是一個通用的32位RISC處理器內(nèi)核,其主要特點(diǎn)如下。
·完全的32位指令集、數(shù)據(jù)通道和地址空間;
·可配置的指令和數(shù)據(jù)Cache;
·32個通用寄存器;
·32個有優(yōu)先級的外部中斷源;
·單指令的32×32乘除法,產(chǎn)生32位結(jié)果;
·多種片上外設(shè),并能夠與片外存儲器和外設(shè)接口;
·具有硬件協(xié)助的調(diào)試模塊,可以在IDE中控制處理器完成各種調(diào)試工作,如開始、停止、單步和跟蹤等;
·在不同的Nios II系統(tǒng)中,指令集結(jié)構(gòu)(ISA)完全兼容;
·性能達(dá)到150DMIPS以上。
目前主要有 PowerPC 40x、60x、70x、90x 四大系列;
PowerPC架構(gòu)具有以下特點(diǎn):
·32個integer/float registers組;
·指令load/store在GPRS與FPRS之間存取數(shù)據(jù);
·統(tǒng)一定長的精簡指令格式易于實(shí)現(xiàn)超標(biāo)量流水線;
·最多支持4個operands,運(yùn)算結(jié)果典型存放在first operand;
·IEEE-754標(biāo)準(zhǔn)浮點(diǎn)數(shù),單精度(singlefloat)和雙精度(double-float)指令運(yùn)算;
·PowerPC架構(gòu)允許實(shí)現(xiàn)某一功能為特定的硬件平臺;
·用戶層指令的存取缺省在caches執(zhí)行。特殊指令跨越caches存取;
·支持big-endian和little-endian模式;
·支持64-bit地址模式。
目前主要有v7、v8、v9三大系列。SPARC微處理器特點(diǎn):
·SPARC微處理器具備精簡指令集;
·支持32位/64位數(shù)據(jù)精度;
·架構(gòu)運(yùn)行穩(wěn)定;
·可擴(kuò)展性優(yōu)良;
·體系標(biāo)準(zhǔn)開放;
·環(huán)形結(jié)構(gòu)的寄存器窗口技術(shù)。
通用嵌入式32位RISC CPU設(shè)計主要包括以下幾大方面。
首先是與用戶進(jìn)行溝通,了解用戶的具體需求,并盡可能將所有的內(nèi)容寫入文檔。其中關(guān)鍵的部分主要是產(chǎn)品的系列規(guī)劃(如1代、2代、3代等)、性能指標(biāo)(如頻率、面積、功耗等)、編程模型(如調(diào)試模式、正常模式、特權(quán)模式等)、指令集(如指令種類、指令編碼格式、指令助記符、指令尋址方式、版本規(guī)劃、內(nèi)部寄存器數(shù)量、功能定義和名稱、可擴(kuò)展性說明、是否支持浮點(diǎn)預(yù)算等)、存儲器體系架構(gòu)(哈佛體系架構(gòu)或是馮·諾依曼)、總線接口協(xié)議、硬件調(diào)試方式(如串口調(diào)試、JTAG調(diào)試等)、存儲器管理單元、存儲器保護(hù)單元、高速緩存CACHE、緊耦合存儲器接口、寫緩沖器、片上協(xié)處理器定義、片外協(xié)處理器接口、中斷處理方式(硬件接口、同步還是異步、使能與禁止、優(yōu)先級、響應(yīng)過程和時間)、復(fù)位模式及行為、片外協(xié)處理器功能定義、片外協(xié)處理器指令集等。
指令集是微處理器的核心,主要包括指令種類(如算術(shù)運(yùn)算類、邏輯運(yùn)算類、乘法類、除法類、浮點(diǎn)預(yù)算類、數(shù)據(jù)傳送類、比較類、散轉(zhuǎn)類、其他等)、指令編碼格式(操作碼、操作數(shù)1、操作數(shù)2等)、指令助記符定義(MOV、ADD、SUB、MUL、DIV 等)和指令尋址方式(立即尋址、寄存器尋址、寄存器間接尋址、寄存器變址尋址、相對尋址等)、指令周期(哪些指令單周期、哪些指令多周期、指令數(shù)據(jù)相關(guān)周期)。通過設(shè)計,將所有指令的執(zhí)行過程進(jìn)行細(xì)化、歸類和簡化,為指令譯碼器的設(shè)計提供必要的理論依據(jù),尤其是譯碼器輸出信號的種類和數(shù)量。
體系架構(gòu)是實(shí)現(xiàn)微處理器的框架,尤其是對于不同指令集版本的實(shí)現(xiàn)更為重要。體系架構(gòu)設(shè)計主要是數(shù)據(jù)通路和控制通路的規(guī)劃。數(shù)據(jù)通路規(guī)劃的重點(diǎn)是流水線組織,如采用流水線的級數(shù)(如5級、7級、8級等)、每級實(shí)現(xiàn)的功能(如取指、譯碼、發(fā)射、移位、執(zhí)行、存儲器、回寫等)、流水線的結(jié)構(gòu)相關(guān)(如數(shù)據(jù)前推、互鎖、延遲槽等)、關(guān)鍵部件(如系統(tǒng)控制單元、指令譯碼器、ALU、寄存器組、乘法器等)在流水線中的位置等。控制通路規(guī)劃的重點(diǎn)是根據(jù)指令的執(zhí)行周期來設(shè)計控制狀態(tài)機(jī)、解決流水線的數(shù)據(jù)相關(guān)和控制相關(guān)、中斷和異常的處理等。
目前,在SoC設(shè)計中使用的片上總線主要有ARM的32位總線AMBA 2.0(AHB、APB)和64位總線 AXI 1.0/2.0,MIPS 的OCP 2.1,Nios II的 Avalon-Bus(Avalon-MM、Avalon-TRI、Avalon-MM、Avalon-MM)、PowePC 的 CoreConnect(PLB、OPB、DCR)以及Silicore的Wishbone總線。四種總線都是同步總線,使用時鐘沿驅(qū)動和采樣信號??偩€的基本操作幾乎沒有區(qū)別,最大的區(qū)別在于提供的特性和規(guī)范的完整性。
總線接口可以選擇當(dāng)前的主流片上總線,并獲取授權(quán),同時也決定了整個SoC系統(tǒng)的總線規(guī)范以及與之配套使用的各種外圍IP模塊;還可以設(shè)計自己的總線規(guī)范,但必須有別于現(xiàn)有的總線協(xié)議,否則會侵權(quán),并且要比現(xiàn)有的協(xié)議更好,否則也沒有意義。因為現(xiàn)有的總線協(xié)議比較成熟,而且使用該協(xié)議的IP也有很多,新協(xié)議的完備性和正確性需要花費(fèi)很長時間、投入大量的人力、物力和財力才會使之達(dá)到一定的實(shí)用化程度。
根據(jù)體系架構(gòu)進(jìn)行頂層模塊劃分,規(guī)定各個主要模塊的功能以及主要的接口信號和時序關(guān)系,再將各主要模塊進(jìn)行細(xì)化,為子模塊的RTL設(shè)計提供依據(jù)。
在進(jìn)行子模塊的RTL設(shè)計之前,先規(guī)定RTL的代碼風(fēng)格,以約束代碼工程師的行為,并保證設(shè)計風(fēng)格的一致性,便于設(shè)計的更新、修改和管理。
在進(jìn)行子模塊的RTL設(shè)計時,依據(jù)子模塊的功能定義和接口定義,選取合適的邏輯結(jié)構(gòu),如加法器、減法器、乘法器、除法器、譯碼器等,同時在子模塊中插入調(diào)試語句以便于查找出現(xiàn)的問題,再搭建對應(yīng)的驗證平臺來進(jìn)行子模塊測試。整個過程采用的是自頂向下的設(shè)計方式,并使用自下向上的驗證方式來保證設(shè)計的正確性。
根據(jù)微處理器的體系架構(gòu),將所有的功能模塊整合在一起,構(gòu)成一個功能比較完整的微處理器軟核,并搭建一個測試平臺進(jìn)行系統(tǒng)整體的連接調(diào)試,主要是針對各個模塊的基本功能以及系統(tǒng)的整體運(yùn)作進(jìn)行測試,從而保證系統(tǒng)的正確性。雖然在設(shè)計時已經(jīng)進(jìn)行了很詳細(xì)的規(guī)劃,但在系統(tǒng)整合后仍然會有很多問題出現(xiàn),如信號數(shù)量、名稱及時序定義不一致的情況。
在進(jìn)行系統(tǒng)整合與調(diào)試之后,搭建以微處理器為核心的系統(tǒng)級驗證平臺。系統(tǒng)級驗證平臺實(shí)際上是一個模擬微處理器使用環(huán)境的SoC,包括硬件和軟件兩部分。硬件部分由微處理器以及與之配套的IP模塊組成,構(gòu)成SoC/MCU的主體。軟件部分由測試程序以及結(jié)果分析、比較和處理模塊構(gòu)成,便于對微處理器進(jìn)行調(diào)試。
經(jīng)過系統(tǒng)級驗證的微處理器可以進(jìn)行FPGA原型驗證,兩種驗證也可以同時進(jìn)行。原型驗證的調(diào)試過程比較簡單,而且沒有系統(tǒng)級驗證的調(diào)試方式便利,可以觀察部分信號。FPGA原型驗證的目的是加速驗證過程,并通過模擬真實(shí)使用環(huán)境來發(fā)現(xiàn)設(shè)計中存在的缺陷,以此來完善微處理器的設(shè)計。搭建以微處理器為核心,且有外圍IP的SoPC,并進(jìn)行功能仿真,再將其使用FPGA開發(fā)工具(如Quartus II、ISE、Libero、SynplifyPro 等)進(jìn)行綜合、自動布局布線、生成位流文件,并下載到FPGA上運(yùn)行。
經(jīng)過基本調(diào)試后,可以調(diào)用對應(yīng)IP的驅(qū)動程序來進(jìn)行測試,之后將BootLoader(如Uboot、VIVI等)移植到系統(tǒng)上,為RTOS的移植做準(zhǔn)備,再將嵌入式實(shí)時操作系統(tǒng) RTOS(如 Linux、VxWork、UCOS-II/III、SymbianOS等)移植到系統(tǒng)上調(diào)試,最后再將應(yīng)用程序添加到系統(tǒng)上運(yùn)行。經(jīng)過以上一系列驗證后,微處理器的實(shí)用化程度將會大大增強(qiáng),同時也會提高用戶使用微處理器的信心和興趣。
軟件開發(fā)環(huán)境是嵌入式微處理器使用過程中很重要的一部分,基本要求是具有支持匯編語言、C語言、C++等程序的編譯、鏈接、軟件仿真、調(diào)試方便(尤其是在線進(jìn)行目標(biāo)軟件的調(diào)試)、軟件界面友好、簡單方便、靈活易用等特點(diǎn),而且最好是提供與現(xiàn)有其它工具一樣的調(diào)試功能。軟件開發(fā)環(huán)境可以自行開發(fā),周期可能較長,投入較大,維護(hù)成本較高;也可以在GNU提供的gcc等工具鏈的基礎(chǔ)上進(jìn)行二次開發(fā),周期會縮短,投入較小,維護(hù)成本較低;還可以使用ACE提供的專業(yè)編譯工具CoSy進(jìn)行開發(fā),周期會大幅度縮短,投入較大,維護(hù)成本較低,質(zhì)量較高,更有利于產(chǎn)品的系列化發(fā)展。
以上只是對嵌入式微處理器的設(shè)計過程進(jìn)行了簡明扼要的描述,而且涵蓋了主要方面,具體設(shè)計時還需要把每一過程進(jìn)一步細(xì)化,才能達(dá)到設(shè)計目標(biāo)。
[1] 楊碩.32位嵌入式微處理器一覽[DB/OL].http://epson.eefocus.com/ayayayaya/blog/10-08/193975_00ab0.html.
[2] 田澤,張怡浩,于敦山,盛世敏,仇玉林.SoC片上總線綜述[J].半導(dǎo)體技術(shù),2003,28(11):11-15.