羅蘭C前端數(shù)字帶通濾波器設(shè)計(jì)與實(shí)現(xiàn)
摘 要: 分析了羅蘭C信號(hào)的特征,并根據(jù)信號(hào)特征決定選用FIR濾波器,利用MATLAB工具設(shè)計(jì)了滿足濾波要求的高階數(shù)字帶通濾波器。詳細(xì)研究了分布式算法的原理和分布式算法在FPGA上實(shí)現(xiàn)FIR數(shù)字濾波器的方法。最終采用改進(jìn)的分布式算法在FPGA上實(shí)現(xiàn)了127階FIR數(shù)字帶通濾波器。利用實(shí)際采集的信號(hào)進(jìn)行仿真和現(xiàn)場(chǎng)測(cè)試,結(jié)果均顯示由該方法設(shè)計(jì)的濾波器性能良好,方法簡(jiǎn)單易行,相對(duì)于傳統(tǒng)的乘累加結(jié)構(gòu)不僅能節(jié)省硬件資源,而且可以改善數(shù)據(jù)處理速度,具有一定的推廣價(jià)值。
關(guān)鍵詞: 羅蘭C;分布式算法;FIR高階帶通濾波器;FPGA;Modelsim仿真
羅蘭C導(dǎo)航系統(tǒng)是一種采用脈沖相位調(diào)制的陸基中遠(yuǎn)程低頻無(wú)線電導(dǎo)航系統(tǒng),是我國(guó)獨(dú)立控制的唯一大型陸基無(wú)線電導(dǎo)航系統(tǒng),也是全球羅蘭C系統(tǒng)網(wǎng)的重要組成部分。目前已作為我國(guó)衛(wèi)星定位導(dǎo)航授時(shí)(PNT)的最重要備份手段。又由于其工作在低頻段,因此具有較強(qiáng)的抗干擾能力和水下接收的可能[1]。研究羅蘭C的數(shù)字化接收技術(shù)對(duì)提高羅蘭C的利用率和提高軍事應(yīng)用能力具有很大價(jià)值。其射頻前端的數(shù)字帶通濾波器是實(shí)現(xiàn)數(shù)字化接收機(jī)的重要組成部分。為此,本文針對(duì)羅蘭C數(shù)字接收機(jī)前端濾波的要求,就如何在FPGA上實(shí)現(xiàn)羅蘭C數(shù)字帶通濾波器進(jìn)行了研究。
1.2 FIR濾波器的計(jì)算機(jī)輔助設(shè)計(jì)
利用MATLAB信號(hào)處理工具箱(fdatool),選取least-squares模式,采樣率為1 MHz,按照本設(shè)計(jì)要求,輸入通帶(90 kHz~110 kHz)和阻帶頻率(80 kHz~120 kHz)參數(shù)值。為滿足其阻帶要達(dá)到25 dB以上衰減的要求,設(shè)計(jì)濾波器階數(shù)為127階,可以得出滿足要求的128個(gè)濾波器系數(shù),利用FIR濾波器系數(shù)的對(duì)稱性,選取前64個(gè)系數(shù)并乘212取整后的濾波器參數(shù)如表1所示。
2 硬件設(shè)計(jì)與實(shí)現(xiàn)
2.1 硬件電路結(jié)構(gòu)設(shè)計(jì)
要實(shí)現(xiàn)前端數(shù)字濾波,首先要對(duì)天線接收來(lái)的信號(hào)進(jìn)行數(shù)字化處理。由于天線端接收的信號(hào)非常微弱,進(jìn)行數(shù)字化處理之前必須放大處理。系統(tǒng)硬件設(shè)計(jì)是以Altera公司的EP2C8Q208C芯片為核心,由磁天線接收的羅蘭C信號(hào)經(jīng)過(guò)以運(yùn)算放大器MAX4418為核心的低噪聲放大(LNA)后,經(jīng)過(guò)12 bit的ADC芯片AD9235轉(zhuǎn)換成數(shù)字信號(hào)輸入到FPGA芯片內(nèi),經(jīng)FPGA內(nèi)部運(yùn)算實(shí)現(xiàn)信號(hào)的數(shù)字濾波,輸出經(jīng)由12 bit的DAC芯片AD9752轉(zhuǎn)換成模擬信號(hào),經(jīng)過(guò)平滑處理送往羅蘭C接收機(jī),也可以直接數(shù)字輸出到數(shù)字接收機(jī)或者數(shù)據(jù)采集計(jì)算機(jī),從而實(shí)現(xiàn)接收機(jī)定位和數(shù)據(jù)采集分析的目的。電路結(jié)構(gòu)圖如圖2所示。
FIR濾波器只在原點(diǎn)處存在極點(diǎn),所以具有全局穩(wěn)定性,由一個(gè)“抽頭延遲線”、加法器、乘法器的集合構(gòu)成,是一個(gè)典型的乘累加結(jié)構(gòu),很方便進(jìn)行FPGA實(shí)現(xiàn)。乘累加運(yùn)算的次數(shù)由濾波器的階數(shù)來(lái)決定,但乘法運(yùn)算十分耗費(fèi)資源。利用傳統(tǒng)的MAC方式只能實(shí)現(xiàn)較低階的數(shù)字濾波器,而要滿足羅蘭C前端的濾波要求則需要高達(dá)127階的高階濾波器,如此作為主芯片的EP2C8Q208C就很難滿足其資源要求??梢钥紤]采用分布式算法(Distributed Arithmetic)來(lái)實(shí)現(xiàn),以達(dá)到節(jié)約資源和提高運(yùn)算速度的目的。
2.3 分布式算法原理
分布式算法是在30年前被首次提出的,但直到Xilinx公司發(fā)明FPGA的查找表結(jié)構(gòu)以后,DA算法才廣泛應(yīng)用在計(jì)算乘積和之中。對(duì)于FIR濾波器,其基本結(jié)構(gòu)是一個(gè)分節(jié)的延時(shí)線,每一節(jié)的輸出加權(quán)累加,得到濾波器的輸出。其輸出y就是輸出x與系數(shù)h的內(nèi)積[4]:
2.4 改進(jìn)的分布式算法
查找表(LUT)的大小是由濾波器的階數(shù)決定的,N階濾波器則共需要2N個(gè)查找表單元。若已知濾波器的系數(shù)位寬為B bit,則表中每個(gè)存儲(chǔ)單元的數(shù)據(jù)位寬可表示為(B+
log2127)bit,所以要完成127階濾波器需要(B+log2127)×
2127 bit的RAM。為了減小查找表的規(guī)??梢岳肍IR濾波器的線性特性采用部分表計(jì)算,如此一個(gè)高階濾波器的輸出即是低階濾波器輸出的相加值。在設(shè)計(jì)中將每4個(gè)濾波器系數(shù)作為一個(gè)小的查找表,每個(gè)查找表的規(guī)模為(B+log24)×24 bit。利用FIR濾波器系數(shù)的對(duì)稱性,將對(duì)應(yīng)對(duì)稱系數(shù)的輸入數(shù)據(jù)預(yù)相加后再查找表,這樣128個(gè)系數(shù)可以縮減為64個(gè),如此實(shí)現(xiàn)整體的查找表則共需要(B+log24)×24×64 bit。如此規(guī)模的RAM硬件是可以接受的,而且不會(huì)降低濾波器的處理速度。將每個(gè)查找表的輸出分別相加后再經(jīng)過(guò)二次冪加權(quán)相加即可。實(shí)現(xiàn)原理如圖5所示,每個(gè)查找表的內(nèi)容如表2所示[5-6]。
fs為信號(hào)采樣率,B為處理數(shù)據(jù)的位寬,fsc為單比特流控制時(shí)鐘頻率。即:fs可以由fsc分頻得到(或fsc可以由fs倍頻得到)。設(shè)計(jì)中AD9235采樣數(shù)據(jù)的位寬為12 bit,根據(jù)FIR濾波器的系數(shù)對(duì)稱性,簡(jiǎn)化硬件實(shí)現(xiàn)考慮將對(duì)應(yīng)對(duì)稱的兩個(gè)輸入數(shù)據(jù)相加,相加后數(shù)據(jù)處理位寬為13 bit。考慮到主控制時(shí)鐘,可以選定FPGA的最高時(shí)鐘工作頻率為fsc=fs×13=13 MHz,而13為質(zhì)數(shù),很難經(jīng)過(guò)分頻或者有10 MHz的晶振倍頻得到。為方便工程化實(shí)現(xiàn),考慮將處理數(shù)據(jù)位寬擴(kuò)展,同時(shí)為節(jié)約資源又不宜采用太大的位寬。如此將濾波器主體時(shí)鐘設(shè)置為15 MHz。其中原始輸入時(shí)鐘為10 MHz,經(jīng)過(guò)PLL進(jìn)行3倍頻到30 MHz時(shí)鐘,再2分頻即可得到15 MHz主控制時(shí)鐘。設(shè)置15 MHz時(shí)鐘為設(shè)計(jì)中串行移位控制時(shí)鐘,計(jì)數(shù)狀態(tài)從0~14即計(jì)15個(gè)數(shù),因此可以將數(shù)據(jù)位拓寬到14 bit。具體設(shè)計(jì)流程如圖6所示。