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