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