用FPGA來實(shí)現(xiàn)DSP解決方案的兩大理由
例如,F(xiàn)PGA可以生成一個(gè)定制硬件設(shè)計(jì),從而控制邏輯能夠在硬件中實(shí)現(xiàn)。工程師將不必再利用精確的時(shí)鐘周期來實(shí)現(xiàn)控制功能。此外,通過裁減硬件架構(gòu),F(xiàn)PGA可以提供額外的性能。如果最重要的設(shè)計(jì)考慮因素是速度,那么可以在FPGA中設(shè)計(jì)完全并行的算法處理方案。今天,用FPGA來執(zhí)行DSP功能的最常見應(yīng)用之一是視頻處理。其它可從FPGA的更高性能中受益的應(yīng)用包括雷達(dá)、超聲波和高速調(diào)制解調(diào)器等。
使用FPGA進(jìn)行數(shù)字信號(hào)處理的另一個(gè)理由是今天的許多系統(tǒng)已經(jīng)包含了一個(gè)FPGA,用于協(xié)議轉(zhuǎn)換、膠合邏輯或一些其它系統(tǒng)功能。如果那個(gè)FPGA沒有被完全利用,那么把DSP功能加入其中可以為系統(tǒng)節(jié)約成本。而且如果標(biāo)準(zhǔn)發(fā)生改變,使用FPGA就不會(huì)有任何風(fēng)險(xiǎn)。FPGA的配置文件能夠像軟件那樣升級(jí),盡管它們必須被存儲(chǔ)在系統(tǒng)的非易失性存儲(chǔ)器中。
當(dāng)用FPGA進(jìn)行設(shè)計(jì)時(shí),如果有可能,最好堅(jiān)持使用定點(diǎn)數(shù)系統(tǒng)。這有幾個(gè)原因。首先,所有嵌入在FPGA中的邏輯(乘法器、累加器)已經(jīng)被設(shè)計(jì)成定點(diǎn)運(yùn)算單元,為FPGA用途而設(shè)計(jì)的大多數(shù)內(nèi)核也是如此。其次,浮點(diǎn)的實(shí)現(xiàn)很復(fù)雜,而且需要規(guī)模相當(dāng)大的硬件。在產(chǎn)品的開發(fā)成本或每單位成本中,浮點(diǎn)解決方案的費(fèi)用過高,因而可能不值得我們這樣做。最后,F(xiàn)PGA內(nèi)部的定點(diǎn)格式為用戶提供了足夠的靈活性,因?yàn)楸硎疽粋€(gè)數(shù)字的位數(shù)可以由用戶選擇,而且用戶可以在任何需要的地方設(shè)計(jì)舍位和進(jìn)位方式,從而使定點(diǎn)實(shí)現(xiàn)很實(shí)用。
當(dāng)決定在定點(diǎn)實(shí)現(xiàn)中應(yīng)該使用多少位數(shù)時(shí),請(qǐng)記住每增加一位會(huì)使信噪比提高約6dB。
正如市面上有許多軟件,而且某些軟件比其它軟件更適合于不同的場(chǎng)合一樣,創(chuàng)建FPGA設(shè)計(jì)的方法也有許多種。第一種設(shè)計(jì)技術(shù)是使用IP核來進(jìn)行設(shè)計(jì)。這是最容易的技術(shù),因?yàn)閮?nèi)核已經(jīng)是設(shè)計(jì)好并經(jīng)過優(yōu)化的。該技術(shù)通常能提供最佳的結(jié)果,因?yàn)閷<以谠O(shè)計(jì)內(nèi)核時(shí)已經(jīng)針對(duì)應(yīng)用和FPGA架構(gòu)采用了最佳的實(shí)現(xiàn)方式。
今天的大多數(shù)內(nèi)核非常便于配置,例如,可選擇并行實(shí)現(xiàn)、串行實(shí)現(xiàn)或?qū)ΨQ操作。因此,我們很有可能找到可以滿足大部分需求的內(nèi)核。一些工具供應(yīng)商和FPGA供應(yīng)商甚至提供能夠使用傳統(tǒng)DSP系統(tǒng)設(shè)計(jì)軟件(諸如Matlab之類的工具)來實(shí)現(xiàn)的內(nèi)核,所以學(xué)習(xí)的過程并不是那么艱難。許多常見的內(nèi)核對(duì)用戶是免費(fèi)的,如FIR濾波器和乘法器。更為復(fù)雜的內(nèi)核通常需要許可費(fèi),在多數(shù)情況下,這是一次性費(fèi)用??偠灾绻O(shè)計(jì)人員缺乏FPGA設(shè)計(jì)經(jīng)驗(yàn)且能以適當(dāng)?shù)膬r(jià)格發(fā)現(xiàn)適合其需要的內(nèi)核,那么這種技術(shù)是最佳選擇。
尋找合適的內(nèi)核
然而,我們并不是總能找到一個(gè)可以滿足系統(tǒng)特定需求的內(nèi)核,或者,找到的內(nèi)核只能提供設(shè)計(jì)的部分功能。在這種情況下,設(shè)計(jì)人員有必要使用一種現(xiàn)有的HDL語言來設(shè)計(jì)硬件。傳統(tǒng)的HDL包括VHDL和Verilog。然而,C語言也正在演變成一種HDL,而且越來越多的工具開始支持C代碼的硬件綜合。HDL允許你完全定制自己的設(shè)計(jì),而且可以與IP核一起使用:IP核只是簡(jiǎn)單地被HDL代碼“引用”或調(diào)用。在學(xué)習(xí)HDL時(shí),設(shè)計(jì)人員還需要學(xué)會(huì)如何使用邏輯綜合儀,它讀取HDL代碼并將它們映射成實(shí)際的硬件。傳統(tǒng)的HDL,即VHDL和Verilog,有更好的支持工具,但可能要求設(shè)計(jì)人員學(xué)習(xí)新的東西。大多數(shù)DSP工程師已經(jīng)懂得C語言,但軟件支持不是那么強(qiáng)大,所以可能更難達(dá)到最優(yōu)的設(shè)計(jì)性能。
如果已經(jīng)決定用C語言作為HDL,那么重要的事情不僅是要復(fù)用已被用于DSP軟件實(shí)現(xiàn)的C代碼,而且要把它們映射到硬件中。這將產(chǎn)生一種非常欠優(yōu)化的實(shí)現(xiàn)結(jié)果。設(shè)計(jì)人員希望使用一種已經(jīng)熟悉的語言,只有在為了獲得這種便利性時(shí)才應(yīng)該采用C語言。代碼應(yīng)該在實(shí)現(xiàn)方案已經(jīng)確定之后再編寫,以便代碼能反映實(shí)現(xiàn)方案。在硬件中執(zhí)行并行操作既是有可能的,也是設(shè)計(jì)人員所期望的,而這在C語言中是不可能的,因?yàn)樗菫榧兇獍错樞驁?zhí)行的軟件而設(shè)計(jì)的。因此,已經(jīng)進(jìn)行了某些修改以允許C語言支持并行操作。在設(shè)計(jì)硬件之前,設(shè)計(jì)人員應(yīng)該學(xué)會(huì)如何在C語言中高效地編寫并行結(jié)構(gòu)。這些結(jié)構(gòu)因工具供應(yīng)商的不同而略有差別。
現(xiàn)在,你可以開始在FPGA中實(shí)現(xiàn)DSP功能了。在實(shí)現(xiàn)你的設(shè)計(jì)時(shí)要記住以下最重要的事情:
1)學(xué)習(xí)你選中的FPGA的架構(gòu)和特性,在決定實(shí)現(xiàn)方案時(shí)努力利用它們。
2)了解DSP應(yīng)用的性能需求。要了解的最重要指標(biāo)包括:采樣率、采樣的位分辨率和系數(shù)、濾波器的級(jí)數(shù)或傅立葉變換(FFT)的數(shù)據(jù)點(diǎn)數(shù)。
3)根據(jù)性能需求決定FPGA架構(gòu)。
4)在實(shí)現(xiàn)設(shè)計(jì)時(shí),要記住利用FPGA架構(gòu)。
作者: Susannah Martin
高級(jí)設(shè)計(jì)工程師
Xilinx公司
評(píng)論