在上一期中,該文重點介紹了FPGA與DSP的含義、種類、原理和特點,那么本期還將繼續(xù)為大家介紹FPGA與DSP兩者的比較,希望能給廣大讀者提供借鑒意義。
FPGA與DSP的比較
一般,F(xiàn)PGA可以說是并行處理,硬件方式,具實時性;DSP是線性處理指令,獨占執(zhí)行方式,非實時。FPGA要考慮各模塊之間的握手協(xié)調(diào);DSP則要考慮中斷響應(yīng)和子功能程序掛起的優(yōu)先級。
雖然FPGA與DSP都用于某個功能的硬件電路實現(xiàn),但是它們的側(cè)重點有所不同?,F(xiàn)從下列三個方面比較如下。
從內(nèi)部資源上比較
FPGA側(cè)重于設(shè)計具有某個功能的硬件電路,內(nèi)部資源是VersaTiles(ActelFPGA)之類的微小單元,F(xiàn)PGA的內(nèi)部單元初始在編程前都是使用HDL語言實現(xiàn)硬件電路的設(shè)計描述。FPGA可以內(nèi)部實現(xiàn)ALU、加法器、乘法器、累加器、FIFO、SRAM、DDRcontroller、FFT、HDLC、DMA、PWM等數(shù)字電路,F(xiàn)PGA內(nèi)部的連線資源,將這些功能模塊的內(nèi)部和模塊之間的信號連接起來,構(gòu)成較大的模塊。目前的FPGA都可以直接內(nèi)嵌諸如ARM7、CoretexM1、Core8051等微處理器,用于FPGA的軟核的,也有的廠商將一些硬件模塊直接做到FPGA中,即FPGA內(nèi)部的硬核。傳統(tǒng)的FPGA都是實現(xiàn)純數(shù)字電路的,只有Actel的FPGA實現(xiàn)了數(shù)?;旌系腜SC單芯片技術(shù),真正的提升和擴大了FPGA的應(yīng)用功能和領(lǐng)域。多數(shù)FPGA都有PLL、DLL之類的鎖相環(huán),Slew可調(diào),Actel還內(nèi)建了OSC、RTC、Power manager之類的硬件單元,甚至Actel的Fusion系列還內(nèi)建了600kbps的12bit的ADC以及MOSFET Driver之類的模擬接口,內(nèi)部有User Flash Memeory,F(xiàn)lash ROM等資源可以實現(xiàn)真正的PSC、Bootloader之類的功能。
DSP主要是側(cè)重算法處理,內(nèi)部資源主要是乘法器、加法器之類的資源,有SPI、UART等接口,接受一定的指令集。內(nèi)部的資源基本上都是現(xiàn)成的,非常方便于客戶的使用。但是相對來講其功能是有局限性的,所以主要用于某些特定的領(lǐng)域。DSP也有內(nèi)嵌的鎖相環(huán)、計數(shù)器、Baud rate發(fā)生器,有的DSP也有ADC模擬接口。
從使用的編程語言上比較
FPGA主要使用HDL,包括VHDl、Verilog,還有數(shù)?;旌系拿枋稣Z言Verilog-AMS等;而DSP使用C、C++等匯編語言編程。
從功能角度上比較
FPGA普遍用于實現(xiàn)數(shù)字電路模塊,基本上能實現(xiàn)所有的數(shù)字電路,以及客戶特定需求的數(shù)字處理模塊。FPGA的IO橋接種類繁多,不同種類級別的FPGA支持的IO標準和協(xié)議都不盡相同,但是這些IO的驅(qū)動能力或是電壓都是可編程配置的。Actel的Fusion還能用于電流/電壓檢測、溫度的檢測、MOSFET driver、電源管理等,其獨特的Flash工藝技術(shù)可以依靠電池供電工作,和掉電實時保存數(shù)據(jù),超低功耗,多種工作模式(Static、Sleep mode)。尤其IGLOO芯片的功能在Sleep mode下功耗只有5uW,因而可用于手機、GPS之類的移動設(shè)備中。此外,用FPGA可實現(xiàn)ASIC前期的設(shè)計驗證,能實現(xiàn)DSP、CPU、MCU等功能,內(nèi)存控制器,用于工業(yè)的PWM、SVPWM、Clarke、Park的正逆變換的實現(xiàn),VGA控制,數(shù)據(jù)的編解碼,解復(fù)用,高達上Gbps的信號處理,實現(xiàn)協(xié)議的轉(zhuǎn)換等功能,都是DSP難以勝任的。
DSP內(nèi)部有很多現(xiàn)成的硬件模塊和接口以及控制器,但是需要軟件編程設(shè)定,可以實現(xiàn)PWM控制、接口控制、UART接口、SPI接口等功能。但是由于受指令集的時鐘周期的限制,DSP不能處理太高的信號,至于說上Gbps的信號,LVDS之類的信號就很難涉及了。所以相應(yīng)的應(yīng)用領(lǐng)域會有所限制。但是,不同的領(lǐng)域設(shè)計方案不同,考慮的側(cè)重點也會不同,有些領(lǐng)域設(shè)計者愛好使用DSP,如算法實現(xiàn),協(xié)議的處理等換作FPGA來處理那就得不償失。 [nextpage]
隨著FPGA本身成本和體積的不斷降低,性能不斷上升,ASIC的市場大部分都已經(jīng)不可否認地讓給了FPGA,技術(shù)融合已經(jīng)是一條必經(jīng)之路。因CPU指令流水線的管道數(shù)有限,只能支持數(shù)量有限的指令并行處理;而FPGA則可以為之提供多管道,同時并行處理大量指令,且FPGA還可執(zhí)行大量的數(shù)據(jù)吞吐操作,因此在指令和數(shù)據(jù)兩方面FPGA都能獲得比傳統(tǒng)CPU更大的工作效率,從而產(chǎn)生了CPU+FPGA的組合。
FPGA器件可以實現(xiàn)各功能塊同時工作,實現(xiàn)指令級、比特級、流水線級甚至是任務(wù)級的并行執(zhí)行,其效率遠遠高過通用DSP處理器。但FPGA以前都是為驗證ASIC原型而設(shè)計,因此雖然FPGA在節(jié)省工程開發(fā)時間上效率非常高,但是在利用效率方面卻比DSP要遜色。一般,F(xiàn)PGA芯片價格貴過DSP,不過FPGA同時可并行處理的數(shù)字信號運算量大于DSP,當(dāng)數(shù)字信號運算需求量夠大的時候,F(xiàn)PGA在性價比上才會超過DSP。雖然FPGA擁有取代DSP的良好后續(xù)發(fā)展,但多核心處理器是FPGA的威脅。
ARM具有比較強的事務(wù)管理功能,可以用來跑界面以及應(yīng)用程序等,其優(yōu)勢主要體現(xiàn)在控制方面,而DSP主要是用來計算的,比如進行加密解密、調(diào)制解調(diào)等,優(yōu)勢是強大的數(shù)據(jù)處理能力和較高的運行速度。FPGA可以用VHDL或verilogHDL來編程,靈活性強,由于能夠進行編程、除錯、再編程和重復(fù)操作,因此可以充分地進行設(shè)計開發(fā)和驗證。當(dāng)電路有少量改動時,更能顯示出FPGA的優(yōu)勢,其現(xiàn)場編程能力可以延長產(chǎn)品在市場上的壽命,而這種能力可以用來進行系統(tǒng)升級或除錯。
值得指出的是,Altera、Xilinx等公司開發(fā)了實現(xiàn)數(shù)字信號處理算法的FPGA,它們提供軟件或VHDL等開發(fā)語言,通過軟件編程用硬件實現(xiàn)特定的數(shù)字信號處理算法。由于它具有通用性的特點,并可以實現(xiàn)算法的并行運算,因而可代替DSP作為獨立的數(shù)字信號處理器或作為DSP芯片的協(xié)處理器應(yīng)用。通用的DSP的靈活性主要體現(xiàn)在軟件容易更改,以及對各種算法處理和復(fù)雜算法的實現(xiàn)上,而對硬件本身的更改則不行。FPGA是由大量的邏輯宏單元組成,通過配置可使這些邏輯宏單元形成不同的硬件結(jié)構(gòu),從而可構(gòu)成不同的電子系統(tǒng)來完成不同的功能。由FPGA構(gòu)成的DSP電路同樣以并行或順序方式工作:在并行工作方面,F(xiàn)PGA與專用DSP相當(dāng),但遠優(yōu)于通用DSP,如通用DSP需大量運算指令完成的工作,F(xiàn)PGA可在一個周期內(nèi)完成;在順序執(zhí)行方面,F(xiàn)PGA比通用DSP快,且每一順序工作的時鐘周期中能同時并行完成許多執(zhí)行,而通用DSP卻不能。隨著多達數(shù)百萬門高密度FPGA的出現(xiàn),F(xiàn)PGA可嵌入許多面向DSP的專用硬核模塊,結(jié)合大量可配置于FPGA硬件結(jié)構(gòu)中的參數(shù)化的DSP IP軟核,開發(fā)者能十分容易地將整個DSP系統(tǒng)實現(xiàn)在一片F(xiàn)PGA中,從而實現(xiàn)了所謂可編程SoC,顯示了FPGA高速高帶寬的優(yōu)勢。
由此,可粗略地列出FPGA與DSP的比較如表1所示。由表1可知,兩者側(cè)重點不同而各有優(yōu)劣,一般專做數(shù)據(jù)處理用DSP;低端的FPGA比較善于做控制用,且用起來較靈活,想做什么控制器都可以自己編寫,而不用專用芯片。但現(xiàn)在,從整體性價比考慮,一般實時處理系統(tǒng)均采取DSP+FPGA相結(jié)合的結(jié)構(gòu)形式(未完待續(xù))。