基于FPGA的高速卷積硬件設(shè)計(jì)及實(shí)現(xiàn)
本文引用地址:http://m.butianyuan.cn/article/148300.htm
為了在整個(gè)轉(zhuǎn)換計(jì)算過(guò)程中保持高信噪比,F(xiàn)FTIP核在定點(diǎn)結(jié)構(gòu)與全浮點(diǎn)結(jié)構(gòu)之間折中,使用塊浮點(diǎn)結(jié)構(gòu)來(lái)表示轉(zhuǎn)換結(jié)果。在定點(diǎn)結(jié)構(gòu)中,數(shù)據(jù)精度需要足夠大,才能充分表示整個(gè)計(jì)算過(guò)程中的所有的中間計(jì)算結(jié)果。在執(zhí)行定點(diǎn)FFT過(guò)程中,經(jīng)常出現(xiàn)數(shù)據(jù)的位數(shù)過(guò)大或精度損失的現(xiàn)象。而在浮點(diǎn)結(jié)構(gòu)中,每個(gè)數(shù)用單獨(dú)的指數(shù)和尾數(shù)來(lái)表示,雖然這樣可以大大提高數(shù)據(jù)精度,但是浮點(diǎn)運(yùn)算需要占用更多的器件資源。塊浮點(diǎn)結(jié)構(gòu)保證了FFT整個(gè)轉(zhuǎn)換過(guò)程中數(shù)據(jù)位數(shù)的有效使用,每次通過(guò)基4-FFT運(yùn)算以后,數(shù)據(jù)位數(shù)最大可能增加倍,根據(jù)前面輸出數(shù)據(jù)模塊動(dòng)態(tài)范圍的測(cè)量進(jìn)行比例換算,換算過(guò)程中累計(jì)的移位次數(shù)被作為整個(gè)模塊的指數(shù)輸出。這種移位方法保證了最低位(LSB)的最小值在乘法運(yùn)算后的輸出進(jìn)行舍入操作之前就被舍棄。實(shí)際上,塊浮點(diǎn)表示法起到了數(shù)字自動(dòng)增益(AGC)的作用,為了在連續(xù)輸出模塊中產(chǎn)生統(tǒng)一的比例,必須用最終的指數(shù)對(duì)FFT函數(shù)輸出進(jìn)行比例換算。
4 實(shí)際工程中的卷積的實(shí)現(xiàn)
如圖2所示,給出了一個(gè)實(shí)際應(yīng)用的例子。為了保證I,Q兩路的相位同一性,使用雙通道A/D,選擇Linear公司的LTC2280,LTC2280支持10 bit,105 Ms/s的最大采樣率,并擁有61.6 dB的信噪比(SNR),85 dB的無(wú)雜散動(dòng)態(tài)范圍(SFDR),滿足系統(tǒng)需要。雙通道D/A使用Analog公司的AD9763,AD9763支持10 bit、125 Ms/s的最大采樣率。
首先,需要在PC機(jī)上準(zhǔn)備好h(n)對(duì)應(yīng)的DFT變換結(jié)果H(k),H(k)的處理實(shí)際上有兩種方法,一個(gè)是將h(n)下載到下位機(jī)中,使用下位機(jī)硬件實(shí)現(xiàn)H(k),還有就是將H(k)在上位機(jī)就計(jì)算好,直接將計(jì)算結(jié)果下到下位機(jī)中。由于h(n)在系統(tǒng)工作中是不變的,在PC機(jī)端事先計(jì)算好H(k)更合適,不僅可以減少FPGA的資源占用,而且也方便數(shù)據(jù)的處理。基于以上的考慮,本系統(tǒng)將在PC機(jī)端求出的H(k)通過(guò)422接口下載到下位機(jī)的RAM中,方便使用。
下位機(jī)系統(tǒng)工作之前,上位機(jī)需要通過(guò)PCI控制板卡將計(jì)算好的數(shù)據(jù)下載到下位機(jī)的RAM中,方便工作過(guò)程中的數(shù)據(jù)使用。在收到外部控制信號(hào)后,下位機(jī)開(kāi)始啟動(dòng),LTC2280開(kāi)始采集I、Q通道數(shù)據(jù)并送入到FPGA中。
AD輸出的I,Q數(shù)據(jù)直接作為一個(gè)復(fù)數(shù)的實(shí)部和虛部進(jìn)入FFT核進(jìn)行FFT變換。為了加速處理速度,使用基-4四引擎輸出結(jié)構(gòu)。FFT核輸出的結(jié)果X(k)過(guò)指數(shù)調(diào)整以后直接進(jìn)入到一個(gè)硬件復(fù)數(shù)乘法器,與存儲(chǔ)于RAM中計(jì)算好的H(k)對(duì)應(yīng)相乘,同時(shí)乘法器輸出可以直接輸入到IFFT模塊進(jìn)行逆FFT運(yùn)算,IFFT計(jì)算結(jié)果再經(jīng)過(guò)指數(shù)調(diào)整以后即可以直接通過(guò)D/A輸出。
5 性能分析與改進(jìn)
FPGA的流水線結(jié)構(gòu)決定了速度的瓶頸取決于整個(gè)流程中處理速度最慢的部分。在FFT核速度可以保證的前提下(EP2S60的理論速度可以達(dá)到293.06 MHz),而處理過(guò)程中全部使用FPGA內(nèi)部RAM來(lái)存儲(chǔ)中間數(shù)據(jù),所以在本系統(tǒng)中,F(xiàn)PGA內(nèi)部的理論處理速度達(dá)到200 MHz以上。本系統(tǒng)的處理速度主要局限于A/D和D/A的數(shù)據(jù)轉(zhuǎn)換率,根據(jù)實(shí)際測(cè)試,在100 MHz系統(tǒng)時(shí)鐘下,數(shù)據(jù)吞吐率可達(dá)100 Ms/s,滿足了設(shè)計(jì)技術(shù)指標(biāo)。圖4給出了FPGA的資源占用。為了較好地檢測(cè)整個(gè)使用FFT_IFFT實(shí)現(xiàn)卷積的系統(tǒng)性能,設(shè)計(jì)了一個(gè)初略性能分析測(cè)試結(jié)構(gòu),如圖5所示。
評(píng)論