基于FPGA的數(shù)字正交混頻變換算法的實(shí)現(xiàn)
傳統(tǒng)的正交下變頻是通過對模擬I、Q輸出直接采樣數(shù)字化來實(shí)現(xiàn)的,由于I、Q兩路模擬乘法器、低通模擬器本身的不一致性、不穩(wěn)定性,使I、Q通道很難達(dá)到一致,并且零漂比較大,長期穩(wěn)定性不好,不能滿足高性能電子戰(zhàn)設(shè)備的要求。為此,人們提出了對中頻信號(hào)直接采樣,經(jīng)過混頻來實(shí)現(xiàn)正交數(shù)字下變頻的方案,這種下變頻的方法可以實(shí)現(xiàn)很高精度的正交混頻,能滿足高鏡頻抑制的要求。采用可編程器件FPGA對該算法流程進(jìn)行實(shí)現(xiàn),能滿足在高采樣率下的信號(hào)時(shí)實(shí)處理要求,在電子戰(zhàn)領(lǐng)域中有著重要的意義。
1 數(shù)字正交混頻變換原理
所謂數(shù)字正交混頻變換實(shí)際上就是先對模擬信號(hào)x(t)通過A/D采樣數(shù)寧化后形成數(shù)字化序列x(n),然后與2個(gè)正交本振序列cos(ω0n)和sin(ω0n)相乘,再通過數(shù)字低通濾波來實(shí)現(xiàn),如圖1所示。
為了能夠詳細(xì)地闡述該算法的FPGA實(shí)現(xiàn)流程,本文將用一個(gè)具體的設(shè)計(jì)實(shí)例,給出2種不同的實(shí)現(xiàn)方法(不同的FPGA內(nèi)部模塊結(jié)構(gòu)),比較其優(yōu)劣,最后給出結(jié)論。該設(shè)計(jì)是對輸入信號(hào)為中頻70 MHz,帶寬20 MHz的線性調(diào)頻信號(hào)做數(shù)字正交混頻變換,本振頻率為70 MHz(即圖1中的2個(gè)本振序列分別為cos(2π70Mn)和sin(2π70Mn)),將其中頻搬移到0 MHz,分成實(shí)部(real)和虛部(imag)2路信號(hào)。然后對該2路信號(hào)做低通濾波,最后分別做1/8抽取輸出。結(jié)構(gòu)如圖2所示。
根據(jù)其算法流程在MATLAB下進(jìn)行仿真(低通濾波器用切比雪夫一致逼近法進(jìn)行設(shè)計(jì),過渡帶為10M~45M,階數(shù)為23),最后2路輸出波形如圖3所示。
2 基于FPGA的常規(guī)實(shí)現(xiàn)方法
首先用A/D芯片對輸入信號(hào)進(jìn)行實(shí)時(shí)采樣,將數(shù)據(jù)量化為12位有符號(hào)數(shù)(最高位為符號(hào)位)。對于imag和real兩路中的其中一個(gè)通道而言,乘本振序列模塊可用一個(gè)16×16的有符號(hào)乘法器及一個(gè)32×16位的只讀ROM實(shí)現(xiàn)。因?yàn)闀r(shí)鐘頻率為200 MHz,對于序列cos(2π70Mn)和sin(2π70Mn)只需要在ROM中存20個(gè)點(diǎn)就可以成為一個(gè)周期,固ROM的數(shù)據(jù)深度選32,寬度選16。濾波模塊實(shí)質(zhì)是一個(gè)“乘累加”結(jié)構(gòu),23階的LPF須配置24個(gè)乘法器和20個(gè)加法器。最后抽取只需在濾波模塊輸出后每8個(gè)點(diǎn)取一個(gè)點(diǎn)。
根據(jù)這樣的流程在ISE下編寫代碼,并用Modelsim仿真,所得波形如圖4所示。
圖4中共有4路輸出波形,其中上2路分別為濾波后抽取之前的實(shí)部和虛部的輸出,數(shù)據(jù)頻率為200 MHz;而下面2路分別為1/8抽取后的實(shí)部和虛部的輸出,數(shù)據(jù)頻率為200/8=25 MHz。
對上述實(shí)現(xiàn)方法的評(píng)價(jià):該方法完全按照算法的流程,結(jié)構(gòu)比較清晰,容易理解,也能夠最后得到理想的波形。但具有一定的弊端,主要有以下2點(diǎn):(1)資源耗費(fèi)太大,該種實(shí)現(xiàn)方式實(shí)部,虛部通道各需要24個(gè)乘法器和20個(gè)左右的加法器;(2)難以滿足信號(hào)實(shí)時(shí)處理要求的運(yùn)算速度。對于該方法,流程中所需要的乘法器和加法器都必須工作在200 MHz時(shí)鐘下,這對于現(xiàn)有的硬件設(shè)備(如VertexⅡ)來講是難以實(shí)現(xiàn)的,故需要采用更優(yōu)化的實(shí)現(xiàn)方法,即下面所要介紹的多相濾波結(jié)構(gòu)。
3 運(yùn)用多相濾波結(jié)構(gòu)進(jìn)行設(shè)計(jì)
對于上面所述的常規(guī)實(shí)現(xiàn)方法,之所以在合理性上存在一定弊端,歸其原因是將FPGA大量的資源和運(yùn)算周期都浪費(fèi)在了不必要的運(yùn)算點(diǎn)上。因?yàn)樽詈笠玫降氖菚r(shí)域信號(hào)的1/8抽取,即每8個(gè)點(diǎn)只保留一個(gè)點(diǎn)。因此大可以去尋找一種辦法使得FPGA只計(jì)算需要的點(diǎn)即抽取后的點(diǎn),直接以25 MHz的速度輸出,這樣既可以滿足運(yùn)算速度的要求,又能節(jié)省資源,這樣的方法就是多相濾波的方式。
枋?致瞬ㄆ?諸如內(nèi)插,抽取器中的低通濾波器)的沖擊響應(yīng)為h(n),則其Z變換H(z)定義為:
對求和式展開可重寫為:
式(3)即為數(shù)字濾波器件H(z)的多相濾波結(jié)構(gòu),將其運(yùn)用于抽取器,并且注意到抽取器的等效關(guān)系,則本設(shè)計(jì)FPGA內(nèi)部(其中一個(gè)通道)可用圖5所示的結(jié)構(gòu)進(jìn)行設(shè)計(jì)。
如圖5所示,在200 MHz的時(shí)鐘頻率下,輸入的采樣數(shù)據(jù)以8點(diǎn)為周期依次打入8個(gè)通道,這樣每個(gè)通道中的數(shù)據(jù)周期為200/8=25 MHz。數(shù)據(jù)進(jìn)入通道后首先要乘以正交系數(shù),在本設(shè)計(jì)中正交sin和cos表各是以20個(gè)點(diǎn)為一個(gè)周期,必須按照一定的等效規(guī)律將20個(gè)點(diǎn)排到8個(gè)通道中去,考慮到5×8=40正好是2個(gè)周期,可令N=0~39,將所對應(yīng)的40個(gè)正交系數(shù)分成5組用狀態(tài)機(jī)的方式打入8個(gè)通道中去,然后做乘累加。這里仍然用長度為24的濾波器,也要按照一定的規(guī)律將24個(gè)濾波系數(shù)(3個(gè)一組,見圖5)排列到8個(gè)通道中去,原則是要保證在任何時(shí)刻8個(gè)通道的累加和要完全等效于原方法流程中濾波后的1/8抽取(可以驗(yàn)證,上面的系數(shù)排列方式是滿足這一要求的)。很顯然,這樣做后每個(gè)通道的時(shí)鐘頻率都是原來頻率的1/8,并且數(shù)據(jù)是完全并行處理的。乘法器和加法器都工作在25 MHz時(shí)鐘頻率下,可以很容易實(shí)現(xiàn),且程序更加高效和科學(xué)。
4 進(jìn)一步優(yōu)化的方法
采用了多相濾波方式后,每個(gè)通道需要4個(gè)乘法器。一般情況下,乘法器的延遲大概是在7~10 ns。而在25 MHz時(shí)鐘頻率下,完全可以將乘法器進(jìn)行復(fù)用,即在40 ns周期內(nèi)完成4次乘法運(yùn),算包括1次乘正交系數(shù),3次乘濾波系數(shù)。這樣每個(gè)通道只需要一個(gè)乘法器就可以。于是整個(gè)設(shè)計(jì)中所需要的乘法器可以降為16個(gè)(實(shí)部、虛部各8個(gè)),加法器則需要46個(gè)(各23個(gè))。
5 最終仿真波形
根據(jù)上面的多相濾波思想,并采用乘法器復(fù)用,在ISE下編寫VHDL代碼,用Modelsim仿真得到最終的波形,如圖6所示。
用Synplify進(jìn)行綜合布線后得到的資源報(bào)告如下(選用的器件是VertexⅡxc2v1000):
6 結(jié)束語
本文提出的基于FPGA的數(shù)字正交混頻下變換的實(shí)現(xiàn)方法,對比了2種不同的設(shè)計(jì)方案以及相應(yīng)的FPGA內(nèi)部結(jié)構(gòu),分析了各自利弊;最后,著重介紹了其中效率較高并且較為科學(xué)的多相濾波結(jié)構(gòu)。在做實(shí)時(shí)信號(hào)處理時(shí),該結(jié)構(gòu)能夠使資源優(yōu)化,并且滿足運(yùn)算速度的要求,實(shí)現(xiàn)起來也不復(fù)雜,在實(shí)際工程中有很強(qiáng)的運(yùn)用價(jià)值。
參考文獻(xiàn):
[1].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
[2].LPFdatasheethttp://www.dzsc.com/datasheet/LPF_1136707.html.
來源:零八我的愛0次