FPGA進(jìn)入嵌入式領(lǐng)域,處理器內(nèi)核成關(guān)鍵
全球FPGA整體市場最近幾年迅速擴(kuò)大,其中與嵌入式FPGA處理器相關(guān)的Design Win數(shù)量正在迅速增長,潛力巨大。就像打開潘多拉的盒子,有了可以運(yùn)行操作系統(tǒng)或?qū)崟r操作系統(tǒng)的處理器內(nèi)核,相信FPGA正在真正意義上大規(guī)模進(jìn)入嵌入式設(shè)計(jì)領(lǐng)域。
從Xilinx、Altera到Actel、Lattice,F(xiàn)PGA提供商都已經(jīng)有可在FPGA邏輯模塊旁實(shí)現(xiàn)的“硬”核,或者可以直接在FPGA結(jié)構(gòu)中運(yùn)行的“軟” 核處理器。硬核的好處是能夠提供更快的數(shù)據(jù)處理能力,所謂軟核需要FPGA廠商提供的PLD軟件進(jìn)行配置,然后固化到FPGA中。與硬核相比,軟核具有更好的靈活性,在目標(biāo)器件中可以進(jìn)行任意配置,根據(jù)具體設(shè)計(jì)需要靈活選擇IP模塊和外設(shè)。
Xilinx除了32位的嵌入式PowerPC硬核之外,還支持8位的PicoBlaze和32位的MicroBlaze兩個軟內(nèi)核。Xilinx亞太區(qū)高端產(chǎn)品市場經(jīng)理梁曉明先生表示, 高端和低端FPGA嵌入式市場都在迅速成長,所以Xilinx會持續(xù)兼顧發(fā)展這三種嵌入式處理器。Altera只提供軟核,其32位Nios II軟核處理器與Xilinx的MicroBlaze旗鼓相當(dāng),同樣都是目前市場上最通用的嵌入式FPGA處理器。
最近Nios II和MicroBlaze都增加了對新的IEEE754兼容浮點(diǎn)單元的支持。Altera公司亞太區(qū)產(chǎn)品和渠道營銷工程師王冬剛先生解釋說,IEEE754標(biāo)準(zhǔn)定義了在計(jì)算機(jī)中表示浮點(diǎn)的一套格式。這一特性的優(yōu)點(diǎn)在于能夠更精確地表達(dá)數(shù)字,只要是需要高精度計(jì)算的場合都可以考慮用浮點(diǎn)處理單元改善計(jì)算精度。就像浮點(diǎn)表示在Intel的Pentium系列CPU中成為標(biāo)準(zhǔn)一樣,越來越多的嵌入式應(yīng)用需要這一特性,比如進(jìn)程控制,圖像處理,汽車中電機(jī)轉(zhuǎn)速的精確表示等等。
另一家FPGA供應(yīng)商Actel期望在不同市場層面上與Altera和Xilinx展開競爭。Actel在其FPGA中嵌入了32位的ARM7微處理器內(nèi)核CoreMP7。傳統(tǒng)的嵌入式處理器,例如ARM和MIPS,其處理器IP在基于軟核的設(shè)計(jì)流程中很難得到保護(hù),所以ARM或MIPS內(nèi)核一直無法以軟IP的形式提供給FPGA廠商,但是不同于主流的基于SRAM的FPGA, Actel基于Flash技術(shù)的FPGA可以保證商用IP在器件中安全的運(yùn)行。
Actel 公司IP 市場經(jīng)理Mike Thompson表示,較之于所有其它同類處理器使用的總和,ARM處理器在設(shè)計(jì)中獲采納的比例為5比1。CoreMP7與ARM7TDMI-S完全兼容,大多數(shù)客戶以往用過ARM處理器核。進(jìn)一步說都擁有現(xiàn)成的ARM代碼,以及所熟悉的開發(fā)工具。對ARM架構(gòu)的熟悉,可以節(jié)省Actel客戶的開發(fā)時間。
與Actel選擇不同結(jié)構(gòu)的產(chǎn)品進(jìn)而轉(zhuǎn)戰(zhàn)其它市場不同,Lattice希望可以與Altera和Xilinx展開直接競爭,在不斷擴(kuò)充產(chǎn)品的同時尋求差異化。在嵌入式處理器方面,Lattice也在延續(xù)這種競爭的策略,與MicroBlaze和Nios II一樣,Lattice的LatticeMico32軟核處理器也很容易嵌入到FPGA中,Lattice IP及應(yīng)用設(shè)計(jì)經(jīng)理謝征帆先生強(qiáng)調(diào),與前兩者有所不同的是,Lattice開放了LatticeMico32以及外圍元件的HDL源代碼,用戶能更好地理解微處理器核的結(jié)構(gòu)和工作的內(nèi)部細(xì)節(jié),同時可以自行修改代碼,增加設(shè)計(jì)的移植性。軟件的開發(fā)工具,包括基于GNU的編譯器、匯編器、連接器和調(diào)試器也都是開放源碼的。甚至LatticeMico32軟核處理器可以用在Lattice公司以外的產(chǎn)品中,包括ASIC、結(jié)構(gòu)化ASIC以及其他廠商的FPGA中。
絕大多數(shù)的嵌入式系統(tǒng)只需一個內(nèi)核,比如消費(fèi)類產(chǎn)品、網(wǎng)絡(luò)通訊以及工業(yè)系統(tǒng)。多處理器常用于高端數(shù)據(jù)處理的情況,比如對于一些視頻處理比較復(fù)雜的算法或者有大量復(fù)雜協(xié)議處理的應(yīng)用,可能需要兩個以上的嵌入式處理器。在一個FPGA中可以實(shí)現(xiàn)多個處理器,比如說兩個MicroBlaze或Nios II,或者更多數(shù)目。這之中沒有定式,完全取決于客戶期望的目標(biāo)來靈活實(shí)現(xiàn)不同的應(yīng)用模式,例如一個MicroBlaze作為主控制器,另一個做特殊任務(wù)處理器;或者兩個MicroBlaze相互獨(dú)立的執(zhí)行各自的任務(wù)。正因?yàn)槿绱?,這個優(yōu)勢是一般已經(jīng)固化了外設(shè)和定制功能的ASSP和ASIC無法比擬的。為此,針對多核應(yīng)用的調(diào)試工具也已經(jīng)應(yīng)運(yùn)而生,Altera和Xilinx都獲得了德國知名的微處理器開發(fā)工具的供應(yīng)商Lauterbach的支持,Lauterbach的TRACE32 ICD-Debugger 和TRACE32 PowerTools調(diào)試工具支持多核的PowerPC、MicroBlaze以及Nios II系統(tǒng)的開發(fā)。
軟核處理器的主要限制在于處理器的性能,但是在FPGA中嵌入式處理器的性能并不是很大的問題,原因在于關(guān)鍵的功能,比如各種復(fù)雜的DSP算法,可以通過硬件加速來實(shí)現(xiàn),如今許多FPGA中都有大量的硬連線乘法器或乘累加單元,可用來定制硬件加速器。對于需要提高嵌入式軟件性能的軟件工程師而言,硬件加速器是非常重要的工具,與運(yùn)行在軟核中的代碼相比,F(xiàn)PGA加速的代碼的運(yùn)行速度可以快幾個數(shù)量級,消耗的功率則大大降低。
挑戰(zhàn)在于硬件加速器的設(shè)計(jì)屬于FPGA硬件設(shè)計(jì)范疇,需要開發(fā)人員熟練的掌握HDL,邏輯綜合以及復(fù)雜的時序設(shè)計(jì),同時要花費(fèi)大量的時間,因此硬件加速器的設(shè)計(jì)就成為了瓶頸。
Altera最近開發(fā)了C2H(C語言至硬件加速)編譯器,能夠自動生成硬件加速器,將關(guān)鍵的,特別是包含復(fù)雜的數(shù)學(xué)邏輯算法的C代碼轉(zhuǎn)換成硬件加速器并在FPGA中運(yùn)行,簡單的說,C2H編譯器所需要做的工作就是:
*分析軟件代碼,確定出現(xiàn)性能瓶頸的函數(shù)
*在Nios II IDE中高亮顯示所需的函數(shù),右鍵單擊加速
*查看Nios II C2H編譯器結(jié)果,根據(jù)需要修改C代碼,進(jìn)行優(yōu)化
C2H編譯器屬于ESL工具,按照Synopsys 對ESL工具的定義,ESL工具提供了C語言到硬件描述語言的轉(zhuǎn)換。ESL有兩個主要的設(shè)計(jì)流程:高級語言綜合和系統(tǒng)建模,高級語言綜合中包括模塊生成和硬件加速,模塊生成的方法可以將C代碼直接綜合成RTL代碼,在FPGA中直接實(shí)現(xiàn)DSP模塊,這種方法可以在很大程度上提高設(shè)計(jì)效率,但需要對C綜合工具有透徹的理解;如果選用嵌入式處理器,可以利用FPGA資源為其創(chuàng)建一個硬件加速器,這種方式只是將關(guān)鍵的操作以硬件加速器的形式放置到FPGA邏輯中去執(zhí)行,相比生成DSP模塊的方式更加簡單,C2H編譯器即屬于硬件加速工具。系統(tǒng)建模是指用C++來編寫仿真模型,從而加速系統(tǒng)的仿真速度。
Altera和Xilinx最近都啟動了相關(guān)的ESL計(jì)劃,與主要的ESL廠商合作開發(fā)設(shè)計(jì)工具,這些工具對嵌入式處理器內(nèi)核的支持也包含在其中。通過使用ESL工具,以往并不擅長FPGA硬件設(shè)計(jì)的軟件或系統(tǒng)工程師也可以進(jìn)入FPGA領(lǐng)域,與FPGA相關(guān)的嵌入式設(shè)計(jì)的數(shù)量還會進(jìn)一步增加。
評論