《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > FPGA中嵌入最小資源配置的微處理器的實(shí)現(xiàn)方法

FPGA中嵌入最小資源配置的微處理器的實(shí)現(xiàn)方法

2008-07-24
作者:馮 丹,王祖林

??? 摘 要: 針對(duì)在FPGA內(nèi)集成嵌入式處理器" title="嵌入式處理器">嵌入式處理器消耗資源大的特點(diǎn),提出了在FPGA內(nèi)嵌入最小資源配置" title="資源配置">資源配置軟核" title="軟核">軟核的新方法,減少了在FPGA內(nèi)嵌入處理器內(nèi)核" title="處理器內(nèi)核">處理器內(nèi)核所占用的資源,降低了損耗功率,擴(kuò)展了可以應(yīng)用軟核的FPGA類型。經(jīng)過仿真和下載測(cè)試,此方法具有配置靈活、節(jié)省資源的優(yōu)點(diǎn)。
??? 關(guān)鍵詞: 嵌入式微處理器;FPGA;Nios II;Mico8

?

??? 單片機(jī)與FPGA結(jié)合處理的方案是信息處理的經(jīng)典模式。此方案存在增加連線復(fù)雜度、需要電壓轉(zhuǎn)換電路、要求編程人員編寫不同程序及生產(chǎn)時(shí)單片機(jī)程序與FPGA程序分別下載的缺點(diǎn),它們?cè)黾恿碎_發(fā)成本,延長了開發(fā)周期,增加了系統(tǒng)復(fù)雜性和不可靠性。因此,產(chǎn)品開發(fā)尤其是商業(yè)產(chǎn)品的開發(fā)迫切需要在一個(gè)芯片中實(shí)現(xiàn)用戶定義的完整系統(tǒng)。隨著FPGA的發(fā)展,已經(jīng)能夠在單個(gè)可編程器件內(nèi)實(shí)現(xiàn)整個(gè)系統(tǒng),即單芯片系統(tǒng)(SoC)。因此,在FPGA中嵌入處理器內(nèi)核是一個(gè)良好選擇。在嵌入式處理器內(nèi)核中,可以直接在FPGA結(jié)構(gòu)中運(yùn)行的軟核以其靈活性得到廣泛應(yīng)用。
??? 在嵌入處理器的發(fā)展過程中,向低端發(fā)展的8位處理器,以低功耗和低資源占有率的優(yōu)點(diǎn)在不太復(fù)雜的系統(tǒng)中有著重要應(yīng)用。未來,8位嵌入式軟核必然會(huì)在功能上更加豐富多彩,滿足各種個(gè)性化的需求。占有資源和功耗是很多商業(yè)產(chǎn)品開發(fā)中考慮的首要問題,而很多系列的FPGA在并行存在大規(guī)模邏輯模塊的情況下很難再嵌入軟核,更換FPGA類型會(huì)使成本大大增加。本文以Altera系列FPGA為例,討論如何在FPGA中實(shí)現(xiàn)最小資源配置的微處理器軟核。
1 在Altera系列FPGA中實(shí)現(xiàn)微處理器核的通用途徑
??? Altera系列FPGA中通常使用Nios II系列32位RSIC嵌入式軟核處理器。Nios II是Altera的第二代FPGA嵌入式處理器,性能可以超過200DMIPS,實(shí)現(xiàn)成本僅需35美分。下面討論一種采用NIOS II實(shí)現(xiàn)較小資源配置的32位微處理器軟核的方法。
1.1 Nios II基本介紹
??? Nios II系列包括經(jīng)濟(jì)、標(biāo)準(zhǔn)和快速3種產(chǎn)品,具有32位處理器的基本結(jié)構(gòu)單元:32位指令大小、位數(shù)據(jù)和地址路徑、通用寄存器和外部中斷源;使用同樣的指令集架構(gòu)(ISA),100%二進(jìn)制代碼兼容。設(shè)計(jì)者可以根據(jù)系統(tǒng)需求的變化更改CPU,選擇滿足性能和成本的最佳方案。為實(shí)現(xiàn)小資源配制,本文討論經(jīng)濟(jì)類型處理器(NIOS II/e)的開發(fā),NIOS II/e的RISK為32bit,可以達(dá)到7DMIPS,存儲(chǔ)單元使用兩個(gè)M4Ks。
??? 需要使用的基本軟件工具有Quartus II、SoPC Builder、ModelSim、Matlab/DSP Builder和Nios II IDE。
1.2 Nios II開發(fā)流程
??? Nios II的開發(fā)流程圖如圖1所示。

?

?

??? Nios II開發(fā)的基本思想是在FPGA已經(jīng)開發(fā)的邏輯處理模塊單元外再嵌入一個(gè)Nios II自動(dòng)生成的處理器模塊單元。生成一個(gè)可選擇配置的Nios II 處理器軟核需要利用Quartus II集成的SoPC Builder工具。在本文的仿真中,為了實(shí)現(xiàn)較小的資源配置,選擇NIOS II/e經(jīng)濟(jì)類型處理器核。Nios II處理器中必須包括的內(nèi)容有Nios CPU Core,這是嵌入式處理器的最基本軟核。它與一個(gè)在線調(diào)試串口(JTAG_UART)就構(gòu)成了Nios II中最小的處理器。其他可選擇添加的內(nèi)容有on_chip_memory(片上存儲(chǔ)器)、UART(串口)、輸入輸出口、Timer(定時(shí)器)、SDRAM、FLASH和Avalon三態(tài)總線橋。經(jīng)過軟件自動(dòng)生成的處理器可以像其他邏輯模塊一樣直接在HDL程序中調(diào)用或者在原理圖中連線。Nios II處理器支持C及C++語言,可在Nios IDE軟件中進(jìn)行編譯及調(diào)試。調(diào)試通過后,利用Quartus II綜合系統(tǒng)就可在硬件上下載調(diào)試。本文建立的Nios II經(jīng)濟(jì)型處理器結(jié)構(gòu)如圖2所示。

?


1.3 NIOS II/e經(jīng)濟(jì)類型占用資源分析
??? 經(jīng)過仿真可以得到Nios II經(jīng)濟(jì)型嵌入式處理器所占用的邏輯單元(LEs)和存儲(chǔ)單元(memory)的數(shù)量,如表1所示。

?


??? 由表1可知,使用Nios II實(shí)現(xiàn)最小功能的軟核處理器(僅包含處理器核以及一個(gè)在線調(diào)試JTAG)需要大約2000LEs,這對(duì)于很多LEs資源不多的FPGA來說是一個(gè)很大的消耗。在并行存在大規(guī)模邏輯處理單元的情況下,在某些FPGA中利用Nios II實(shí)現(xiàn)嵌入式微處理器軟核成為一件困難的事情。而且Nios II處理器僅支持Stratix、Stratix GX、Stratix II和Cyclone系列以及以后推出的FPGA系列,不能應(yīng)用于其他系列FPGA。
??? 下面討論一種在LEs資源不豐富的Altera系列FPGA上集成最小配置的嵌入式處理器的方法。此方法使用最小配置的Mico8軟核作為嵌入式軟核。在功能足夠的情況下,所占用的資源遠(yuǎn)小于Nios II,對(duì)于LEs資源不豐富或者不支持Nios II的Altera系列FPGA是一種理想選擇。
2 Mico8簡(jiǎn)介及建立流程
??? Lattice Mico8TM是一個(gè)8位軟微處理核,它是一種非常靈活的單片機(jī)內(nèi)核,目前有4種配置情況。每種配置方式所支持的指令略有不同,不同配置的Mico8所具備的設(shè)計(jì)資源,包括內(nèi)部的寄存器、存儲(chǔ)器是不一樣的,所需要的FPGA實(shí)現(xiàn)的邏輯大小也不一樣。設(shè)計(jì)者在使用時(shí)可以根據(jù)實(shí)際的設(shè)計(jì)需要選擇配置模式。
??? 本文首先在Lattice的MACHXO系列FPGA平臺(tái)上建立Mico8處理器,然后移植到Altera系列FPGA上。
??? 在MACHXO上建立Mico8的流程如圖3所示。

?


??? Mico8只支持匯編代碼,因此,在編寫處理器代碼時(shí)只能使用特定的匯編程序。Mico8的指令集包括位操作、算術(shù)操作、比較操作等通用的匯編指令和一些偽指令。其格式與通用匯編指令有一些差別[1]。建立一個(gè)完整的Mico8處理器內(nèi)核需要使用的基本軟件工具有ispLEVER(用于完成LatticeMico8系統(tǒng)的綜合、硬件優(yōu)化、適配、編程下載和硬件測(cè)試)、isp8asm_asm.exe(用于編譯初始化prom的匯編指令)以及isp8asm_asm.exe(用于對(duì)匯編指令進(jìn)行仿真)。Mico8的另一優(yōu)點(diǎn)是對(duì)于編譯和仿真工具具有完全開放的C源代碼" title="源代碼">源代碼可供參考,可以根據(jù)用戶需要修改源代碼。isp8asm_win.exe 編譯匯編語言程序生成初始化EBR的hex文件命令格式為:isp8asm_win.exe-vx-o?鄢.hex?鄢.s。isp8sim_win.exe的作用是對(duì)編譯成功的匯編程序進(jìn)行仿真,命令格式為:isp8sim_win.exe-t mico8_demo.hex,可以對(duì)二進(jìn)制或十六進(jìn)制代碼進(jìn)行跟蹤及反匯編。匯編程序仿真成功以后,編譯所生成的十六進(jìn)制或二進(jìn)制文件就可以作為初始化軟核中的prom的代碼,類似于要下載到單片機(jī)prom或者Flash中的十六進(jìn)制或二進(jìn)制文件。
??? 對(duì)軟核的配置可以利用Mico8已經(jīng)給定的4種配置形式[2],除此之外還可以對(duì)Mico8進(jìn)行手動(dòng)配置,配置內(nèi)容包括內(nèi)部RAM的寬度、PROM地址線寬度以及是否使用外部RAM等。不同的配置會(huì)改變Mico8的功能和消耗資源,對(duì)其運(yùn)算速度不會(huì)產(chǎn)生影響,配置文件會(huì)對(duì)Mico8軟核的相關(guān)部分進(jìn)行修改。在本文中,使用最小配置,即16位RAM、9位PROM地址線寬度和不使用外部RAM。對(duì)于不同的Lattice器件,Mico8是不兼容的,要對(duì)軟核的源代碼或相關(guān)單元進(jìn)行修改。例如本文中所使用的MACHXO系列,只能支持分布式RAM,這就要利用ispLEVER Project Navigator對(duì)Mico8軟核的PROM進(jìn)行修改,并在Mico8源代碼中將相應(yīng)的設(shè)制改為XO。
??? 利用ispLEVER Project Navigate建立新工程,在確定路徑、編程語言、綜合工具、器件后生成新項(xiàng)目并導(dǎo)入項(xiàng)目文件。導(dǎo)入文件時(shí)應(yīng)該注意ispLEVER會(huì)自動(dòng)將模塊分層,需要保證導(dǎo)入文件之間模塊的引用層次正確。如果HDL文件層次不對(duì),將出現(xiàn)不止一個(gè)頂層,不能進(jìn)行后續(xù)操作。同時(shí)在導(dǎo)入文件時(shí)需要區(qū)分普通文件和測(cè)試文件。測(cè)試文件只有在用modelsim進(jìn)行仿真時(shí)才起作用,不能用于實(shí)際硬件中。生成適合MACHXO系列FPGA。
??? 可以利用ispLEVER嵌入的工具Ipexpress。在菜單中選擇分布式ROM(Distributed ROM)并指定ROM的地址寬度、數(shù)據(jù)長度和初始化文件(對(duì)匯編編譯生成的HEX文件),指定文件格式HEX 類型。將生成ROM的HDL文件prom.v重新引入工程即可編譯成功。經(jīng)過分配管腳,編譯成功后即可生成可下載的JEDEC文件,這時(shí)頂層文件就是一個(gè)配置最小的Mico8核。
??? 生成的Mico8可以在Lattice的MACHXO器件上直接應(yīng)用,但是本文舉的例子要在Altera系列FPGA上進(jìn)行應(yīng)用,還需要對(duì)Mico8進(jìn)行移植。
3 把Mico8軟核移植到Altera器件
??? Mico8軟核與其他硬件具有很好的兼容性,其大多數(shù)單元可以在Altera器件上直接進(jìn)行移植。移植過程包括兩個(gè)步驟:在Quartus II的新工程中導(dǎo)入相關(guān)的Mico8內(nèi)核文件和配置文件,在Altera器件基礎(chǔ)上重新創(chuàng)建與Lattice器件不兼容的RAM以及ROM。
??? 其中,LatticeMico8的分布式ROM與Altera不兼容,需要利用Quartus II自帶的mega-plug in manage重新建立單口ROM。LatticeMico8的SPRAM和SDRAM與Altera兼容,但比Altera自動(dòng)生成的單元更耗費(fèi)LEs,因此建議進(jìn)行移植,重新生成Altera SPRAM和SDRAM操作。移植過程與上類似,不再贅述。在工程中需要引用新的存儲(chǔ)模塊。Altera定義DPRAM時(shí)序與Lattice中定義的DPRAM時(shí)序不同,會(huì)造成錯(cuò)誤。因此采用Mico8中的DPRAM源文件雖然會(huì)浪費(fèi)一定的邏輯單元,但指標(biāo)可以達(dá)到要求。
??? Altera中,初始化PROM文件采用Intel Hex文件格式,需要對(duì)Mico8的初始化PROM文件進(jìn)行格式轉(zhuǎn)換,或者在Quartus II的寄存器編譯器中直接填寫利用Quartus II自動(dòng)轉(zhuǎn)換為Intel Hex文件格式。Intel HEX由一條或多條記錄組成,每行一個(gè)記錄,每條記錄以冒號(hào)“:”開始,以回車(0DH)和換行(0AH)結(jié)束。除“:”外,每條記錄有五個(gè)域,每一域由2N(N>=1)個(gè)HEX字符組成,格式為::[AA][BBBB][CC][DD….DD][EE]。其中,[AA]表示該記錄的實(shí)際數(shù)據(jù)的長度;[BBBB]表示該記錄所包含的數(shù)據(jù)在實(shí)際存儲(chǔ)區(qū)中的起始地址;[CC]為該記錄的類型;[DD….DD]為該記錄的實(shí)際數(shù)據(jù),由2N(N>=1)個(gè)HEX字符組成,該域的長度應(yīng)當(dāng)與[LL]域所指出長度一致;[EE]為該記錄的數(shù)據(jù)校驗(yàn)和。文件格式轉(zhuǎn)化可以用Matlab程序?qū)崿F(xiàn)。
??? 完成上述移植過程后的Mico8軟核可以在Altera系列FPGA上直接應(yīng)用,應(yīng)用時(shí)把Mico8軟核直接作為單元模塊導(dǎo)入系統(tǒng)工程中即可。在Altera中,Mico8軟核的資源利用情況如表2所示。

?


??? Mico8軟核占用約200 LEs,由程序決定的PROM和訪問PROM所需的DPRAM的大小約為300LEs,PROM的大小可根據(jù)匯編代碼程序再作調(diào)整。在小配置下,Mico8經(jīng)過移植后大致使用500LEs,遠(yuǎn)小于Nios II生成軟核的資源占用情況。Mico8在不能支持Nios II或者已有大規(guī)模邏輯處理單元不能嵌入Nios II內(nèi)核的FPGA中是一個(gè)理想的應(yīng)用。在Altera中嵌入Mico8軟核需注意,Mico8和普通單片機(jī)不同,設(shè)計(jì)者在使用Mico8時(shí),應(yīng)該根據(jù)Mico8的體系結(jié)構(gòu)的特點(diǎn)來設(shè)計(jì)系統(tǒng)。
??? Mico8設(shè)計(jì)要點(diǎn)及可行性分析:
??? (1)Mico8只有一個(gè)8位的外部數(shù)據(jù)端口和一個(gè)8位的外部地址端口,設(shè)計(jì)者需要設(shè)計(jì)地址編碼和解碼電路。由于Mico8的地址和數(shù)據(jù)總線是分離的,所以Mico8不需要地址/數(shù)據(jù)鎖存信號(hào)。

??? (2)Mico8僅支持匯編語言的設(shè)計(jì)指令最長512條。如果程序代碼不超過512行,設(shè)計(jì)員只需在編譯程序時(shí)指定程序的長度,否則還需要修改實(shí)現(xiàn)Mico8的HDL源代碼中的程序計(jì)數(shù)器PC位寬及相應(yīng)邏輯。修改后,跳轉(zhuǎn)指令的跳轉(zhuǎn)范圍仍然在512行之內(nèi)。
??? (3)Mico8作為最小內(nèi)核的另一個(gè)優(yōu)點(diǎn)是可以修改軟核源代碼。在功能達(dá)到要求時(shí),可以刪除不需要的所有單元結(jié)構(gòu)的代碼,如SPRAM、DPRAM甚至輸入輸出口都可以刪除,從而可以達(dá)到最小的資源利用率。在實(shí)際應(yīng)用時(shí)應(yīng)根據(jù)具體情況做出選擇。
??? (4)Mico8作為8位嵌入式內(nèi)核,處理能力不如32位RISK的Nios II,但由于其可修改軟核源代碼的靈活性和占用資源極小的節(jié)省性,在很多并行存在大規(guī)模邏輯處理單元以至資源不夠或不支持Nios II的FPGA上可以得到很好應(yīng)用。
??? 本文針對(duì)在FPGA內(nèi)集成嵌入式處理器軟核消耗資源大的特點(diǎn),提出了在FPGA內(nèi)嵌入最小資源配置的Nios II和Mico8軟核的方法,在保證有效性的前提下,利用移植Mico8最小軟核,盡可能減少軟核的資源消耗,從而可以在一些資源不允許使用軟核的情況和FPGA類型上使用嵌入式CPU軟核。與普通嵌入軟核方法的主要區(qū)別是在Altera系列FPGA上移植了開放源代碼的Mico8軟核,使移植的軟核可以作最大限度的剪切修改,并對(duì)移植的實(shí)用性進(jìn)行了測(cè)試。經(jīng)過仿真和下載測(cè)試,表明此方法適合于工程實(shí)踐,具有配置靈活、節(jié)省資源的優(yōu)點(diǎn)。
參考文獻(xiàn)
[1] Nios II Software Developer′s Handbook.America:www.altera.com,2007.
[2] LatticeMico8 User′s Guide.America:www.lattice.com,2007.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。