使用嵌入式微處理器的FPGA設(shè)計(jì)不斷增長(zhǎng),。根據(jù)Dataquest的統(tǒng)計(jì),,一年大約啟動(dòng)10萬(wàn)個(gè)FPGA設(shè)計(jì)項(xiàng)目,,其中約30%包含某種形式的微處理器。
形成這種趨勢(shì)有幾個(gè)方面的原因,。首先,數(shù)據(jù)流應(yīng)用更適合可編程硬件,,同時(shí)嵌入式微處理器更適合于執(zhí)行控制流的應(yīng)用,。第二,要改變?cè)O(shè)計(jì)時(shí),,嵌入式處理器呈現(xiàn)更大的靈活性,。最后,用軟核的嵌入式微處理器消除了處理器過(guò)時(shí)的風(fēng)險(xiǎn),。從傳統(tǒng)上而言,,對(duì)嵌入式FPGA微處理器有一些限制,包括成本,,速度和設(shè)計(jì)性能,。隨著工藝技術(shù)和設(shè)計(jì)技術(shù)的進(jìn)步,這些限制正在不斷改善,,現(xiàn)在設(shè)計(jì)人員更有可能在他們的應(yīng)用中考慮使用嵌入式FPGA微處理器,。
與過(guò)去相比,現(xiàn)成的微處理器已經(jīng)大大比嵌入式微處理器便宜,。但是,,今天的低成本FPGA被證明是一個(gè)節(jié)約成本的解決方案。如果設(shè)計(jì)中已經(jīng)使用了FPGA,,處理器可以整合到現(xiàn)有的FPGA架構(gòu),,節(jié)省了分立器件或新的FPGA成本。設(shè)計(jì)周期也是一個(gè)重要的因素,。將硬件與微處理器子系統(tǒng)構(gòu)成相關(guān)的架構(gòu)并進(jìn)行實(shí)施能有多快,?編寫,測(cè)試和在微處理器上調(diào)試運(yùn)行的代碼需要多久,?在過(guò)去幾年中,,在整體功能和易用性方面,針對(duì)嵌入式微處理器開(kāi)發(fā)的軟件工具也有了明顯的改善。因此,,現(xiàn)在可以在幾分鐘內(nèi)運(yùn)行設(shè)計(jì),,并且進(jìn)行測(cè)試。產(chǎn)品上市的時(shí)間縮短了,,因?yàn)楝F(xiàn)在用軟件實(shí)現(xiàn)功能比硬件更快,,更簡(jiǎn)單。
用現(xiàn)成的微處理器達(dá)到的性能有良好的歷史記錄,。隨著技術(shù)的改進(jìn),,F(xiàn)PGA在功能和整個(gè)系統(tǒng)的速度方面有了顯著的進(jìn)步。由于現(xiàn)在的FPGA能夠處理更大的帶寬,,嵌入式處理器對(duì)于許多設(shè)計(jì)有很大的吸引力,。此外,由于FPGA與其他專用模塊的緊密配合,,軟IP核的擴(kuò)展性提供了一個(gè)系統(tǒng)接口,,就性能和吞吐量方面而言,現(xiàn)在一個(gè)片上處理器可以提供卓越的設(shè)計(jì)方案,。
當(dāng)評(píng)估諸如LatticeMico32" title="LatticeMico32">LatticeMico32這樣的特殊處理器時(shí),,使用嵌入式軟處理器的優(yōu)點(diǎn)非常清楚。
一個(gè)典型的嵌入式處理器子系統(tǒng)
讓我們來(lái)看看一個(gè)典型的嵌入式處理器子系統(tǒng),,例如,,LatticeMico32軟處理器。該處理器需要有能與外界通信的功能,,因此通常核連接到一個(gè)片上總線系統(tǒng),,在此情況下是WISHBONE開(kāi)放源代碼總線。然后還需要一個(gè)存儲(chǔ)系統(tǒng),,用來(lái)保存處理器程序代碼以及處理器核使用的數(shù)據(jù),。對(duì)外部通信而言,在一個(gè)典型的系統(tǒng)中有各種接口,,從簡(jiǎn)單的通信接口和連接,、更復(fù)雜的協(xié)議到應(yīng)用中的專用硬件模塊。現(xiàn)在該處理器總線架構(gòu)需要連接外設(shè)和存儲(chǔ)器系統(tǒng),。一個(gè)典型的系統(tǒng)如圖1所示,。
RISC" title="RISC">RISC處理器子系統(tǒng)" border="0" height="211" hspace="0" src="http://files.chinaaet.com/images/20101219/755ec17a-15e1-46ca-89cd-26ee8a4bdacc.jpg" style="zoom: 1; letter-spacing: normal; ms-interpolation-mode: bicubic" width="450" />
圖1 典型的嵌入式RISC處理器子系統(tǒng)
讓我們來(lái)看看處理器核本身:LatticeMico32是基于哈佛總線結(jié)構(gòu)的RISC架構(gòu)的微處理器(圖2)。 RISC體系結(jié)構(gòu)提供了一個(gè)簡(jiǎn)單的指令集和更快的性能,。哈佛總線架構(gòu)提供獨(dú)立的指令和數(shù)據(jù)總線,,能夠執(zhí)行單周期指令。該處理器擁有32個(gè)通用寄存器,,可處理多達(dá)32個(gè)外部的中斷,。定制的處理器可以插入乘法器或桶形移位器,,以及不同的調(diào)試功能。
圖2 LatticeMico32:一個(gè)可配置的RISC處理器核
Mico32可以用于各種存儲(chǔ)系統(tǒng),,同時(shí)使用內(nèi)嵌存儲(chǔ)器用于存儲(chǔ)指令和數(shù)據(jù),。內(nèi)嵌存儲(chǔ)器可以建立一個(gè)本地哈佛結(jié)構(gòu),并允許單周期訪問(wèn)指令和數(shù)據(jù),。對(duì)于更大的存儲(chǔ)器需求,,處理器通過(guò)一個(gè)仲裁器連接到其他的存儲(chǔ)器模塊或接口。這可以是用FPGA的存儲(chǔ)器資源來(lái)實(shí)現(xiàn)的 “片上”存儲(chǔ)器,,或接口至外部存儲(chǔ)器,,諸如SSRAM、Flash和DRAM,。處理所有訪問(wèn)協(xié)議至外部存儲(chǔ)器的合適接口模塊是由MSB提供的,。提供可選的指令和數(shù)據(jù)高速緩存,能夠配置成各種選擇(高速緩存的大小,,高速緩存塊的大小等等),。
通過(guò)一個(gè)開(kāi)放源碼Wishbone總線接口,該處理器連接到各種外圍元件,。針對(duì)快速周轉(zhuǎn)周期,圖形用戶界面可以輕松和快速地創(chuàng)建處理器平臺(tái),。除了標(biāo)準(zhǔn)存儲(chǔ)器控制器,,這可能包括各種接口,不僅支持I2C,、通用IO,、定時(shí)器,UART以及SPI,,還能支持更復(fù)雜的模塊,,如PCI接口或TriSpeed以太網(wǎng)MAC。
直接存儲(chǔ)器訪問(wèn)(DMA)控制器是可用的,,添加主器件(master)至Wishbone總線,,以免除處理器的數(shù)據(jù)傳輸工作。這也允許有DMA功能的外設(shè)高效地直接傳輸數(shù)據(jù)到存儲(chǔ)系統(tǒng),,從而節(jié)省了片上總線的帶寬,。
除了外圍元件和DMA,用戶可以自定義仲裁方案,??偩€結(jié)構(gòu)產(chǎn)生器支持主器件(master)方和從器件(Slave)方的總線仲裁。如果能夠滿足系統(tǒng)性能的要求,,主器件方總線仲裁提供了一個(gè)簡(jiǎn)單的低成本解決方案,。然而,,如果在設(shè)計(jì)中有多個(gè)總線主器件和多個(gè)從器件,在任何時(shí)間主器件方總線仲裁限制與單總線主器件通信,。在許多設(shè)計(jì)中,,通過(guò)兩個(gè)或兩個(gè)以上的總線主器件同時(shí)與獨(dú)立的從器件進(jìn)行通信,從器件方仲裁改進(jìn)了性能,。圖3展示了可用的仲裁方案,。
圖3 仲裁方案
用戶還可以創(chuàng)建自己的基于Wishbone總線的外設(shè)元件,,然后通過(guò)整合到MSB自動(dòng)連接到總線,。因此,LatticeMico32的架構(gòu)提供了兩種可能性:第一,,人們可以創(chuàng)建定制的元件,,將它放人MSB中的可用元件列表(圖4)。第二,,可以構(gòu)建出所謂的Passthru元件,,可以將Wishbone接口引出到核的外面,因此,,用戶可以在FPGA的其他部分添加任何邏輯塊,。
圖4 創(chuàng)建定制的外圍組件
這些配置選項(xiàng)能夠針對(duì)不同的應(yīng)用定制LatticeMico32。帶寬范圍從小的和片內(nèi)或片外存儲(chǔ)器面積優(yōu)化的控制器到具有多個(gè)接口的全功能平臺(tái),,以及訪問(wèn)更大的存儲(chǔ)器(可能是片外),。從FPGA訪問(wèn)其他的邏輯模塊還允許處理器系統(tǒng)和FPGA專用模塊之間的密切互動(dòng),以便進(jìn)一步改進(jìn)性能,。取消了傳統(tǒng)上使用并行于FPGA的外部控制器的復(fù)雜訪問(wèn)機(jī)制,。
可擴(kuò)展性
由于處理器代碼是可讀的Verilog RTL代碼,用戶可以輕松識(shí)別IP功能塊,諸如取指令單元,,指令譯碼或ALU,,以及各種流水線階段。因此,,通過(guò)定制指令,,這些也可以修改和增強(qiáng)。用戶也可以執(zhí)行操作碼,。因此,,在指令字中,LatticeMico32提供了備用的操作碼域,。
遵照以下一些基本的步驟,,可以構(gòu)建自定義指令:
- 增強(qiáng)的指令譯碼器。這是一個(gè)簡(jiǎn)單的情況,,提取內(nèi)部操作碼的功能,,并生成需要整合此命令至LatticeMico32的所有必須的控制信號(hào),。
- 寫功能的實(shí)現(xiàn)并將其整合至LatticeMico32 的ALU。
- 對(duì)于多周期命令,,構(gòu)建必要的拖延信號(hào),,以便妥善處理處理器流水線。
- 如果需要其他的專門邏輯(例如額外的專用寄存器),,這可以單獨(dú)的添加到核,。
通過(guò)定制指令和添加定制外設(shè),擴(kuò)展處理器核是一個(gè)非常有效的方式,,用來(lái)定制處理器的核以便實(shí)現(xiàn)系統(tǒng)的性能要求,。通常情況下,一些專門的功能用硬件實(shí)現(xiàn)比軟件更好,?;虿⑿刑幚砜梢垣@得額外的性能。這種機(jī)制能夠無(wú)縫集成硬件加速模塊至處理器架構(gòu),。這將保持用同樣的方式處理這些部件的功能,,如同正常的軟件代碼或使用標(biāo)準(zhǔn)外設(shè)。
對(duì)于需要數(shù)據(jù)/信號(hào)處理功能的應(yīng)用,,往往需要組合RISC處理器的功能和DSP,,以達(dá)到系統(tǒng)的性能和吞吐量。添加擴(kuò)展和定制元件還可以包括信號(hào)處理單元,??梢杂糜布浅S行У貙?shí)現(xiàn),使用專用的DSP塊,,諸如乘/累加,,用各種FPGA的硬件都可以實(shí)現(xiàn)這些功能,。
設(shè)計(jì)環(huán)境
LatticeMico32系統(tǒng)擁有三個(gè)集成工具:
- MicoSystem Builder(MSB)
針對(duì)硬件實(shí)現(xiàn),,MSB產(chǎn)生平臺(tái)描述和相關(guān)的硬件描述語(yǔ)言(HDL)代碼。設(shè)計(jì)人員可以選擇連接到微處理器的外圍組件,,以及指定它們之間的連接,。
- C/C++軟件工程環(huán)境(SPE)
C/C++ SPE調(diào)用編譯器,匯編器和連接器,,使代碼的開(kāi)發(fā)針對(duì)運(yùn)行于用MSB構(gòu)建的平臺(tái),。可以通過(guò)C/C++ SPE來(lái)完成,,用MSB構(gòu)建的平臺(tái)可以作為參考,。
- 調(diào)試器和Reveal邏輯分析器
在C/C + +源代碼調(diào)試器提供匯編中的調(diào)試功能,,并能夠觀察處理器的寄存器和存儲(chǔ)器,。設(shè)計(jì)人員還可以使用萊迪思的Reveal邏輯分析器觀察和控制硬件中代碼的執(zhí)行情況,。
所有的工具和IP已完全納入萊迪思的ispLEVER FPGA軟件設(shè)計(jì)環(huán)境,這使得通過(guò)整個(gè)FPGA設(shè)計(jì)流程快速的進(jìn)行設(shè)計(jì),。這些工具也有利于有效地使用FPGA的資源,。
在構(gòu)建過(guò)程中,用完全可讀的RTL Verilog源代碼創(chuàng)建處理器的代碼及其外圍設(shè)備,。提供用于綜合和仿真的腳本,,約束文件關(guān)注硬件的設(shè)置和引腳。
目前有3種操作系統(tǒng): Theobroma Systems的uClinux 和U-Boot,、Micriμm的μC/OS-II RTOS和TOPPERS/JSP的μITRON RTOS,。
LatticeMico32提供了一個(gè)開(kāi)放源碼許可證。萊迪思的開(kāi)放IP核許可協(xié)議將與MSB工具生成的HDL代碼一起使用,。大部分圖形用戶界面將在Eclipse的授權(quán)許可下使用,,同時(shí)對(duì)軟件的內(nèi)部運(yùn)作,如編譯器,、匯編器,,連接器和調(diào)試器,許可協(xié)議將遵循GNU-GPL,。
因?yàn)檫@是開(kāi)放源碼軟IP,,這個(gè)處理器的IP核還可以免費(fèi)遷移到其他技術(shù)并加以實(shí)現(xiàn)。
性能和資源利用
LatticeMico32提供高性能和盡可能高的資源利用率,。對(duì)于關(guān)心資源的設(shè)計(jì)人員,,基本配置不使用任何指令或數(shù)據(jù)高速緩存,單周期移位器,,也沒(méi)有乘法器,。對(duì)于那些更關(guān)注性能的設(shè)計(jì)人員,全配置使用8KB的指令高速緩存,,8K字節(jié)的數(shù)據(jù)高速緩存,,3個(gè)周期的移位器和一個(gè)乘法器。對(duì)于需要采用折衷方法的用戶,,標(biāo)準(zhǔn)配置類似于完整的配置,,但沒(méi)有8K字節(jié)的高速數(shù)據(jù)緩存。表1展示了針對(duì)LatticeECP3 FPGA的資源利用率和性能,。
表1 LatticeMico32資源利用率和使用LatticeECP3的性能
總結(jié)
LatticeMico32是一個(gè)完整的嵌入式微處理器設(shè)計(jì)方案,。它提供了一個(gè)靈活的架構(gòu),并允許用戶定制處理器系統(tǒng)以滿足系統(tǒng)的要求(性能,、成本,、功耗)。處理器的IP和專用硬件的密切配合提供了一個(gè)易于使用的環(huán)境,,這也可顯著提升系統(tǒng)的性能,,使設(shè)計(jì)擁有很大的靈活性,。
LatticeMico32開(kāi)發(fā)工具可以很容易地在FPGA中實(shí)現(xiàn)一個(gè)微處理器和與之連接的外圍元件。易用性確保最少的設(shè)計(jì)時(shí)間,,從而使得產(chǎn)品能夠更快的上市,。
根據(jù)開(kāi)放源代碼許可證和軟件開(kāi)發(fā)工具各自的開(kāi)放源代碼許可證,,如Eclipse和GNU - GPL,,提供生成的HDL,萊迪思可以讓用戶完全控制其設(shè)計(jì),。開(kāi)放源代碼為設(shè)計(jì)人員提供所需要的可視性,,靈活性和便攜性?!?/p>