孫 凱,楊新民,胡金波,鄒 亞
(南京理工大學(xué)瞬態(tài)物理國家重點實驗室,南京 210094)
?
基于FPGA的地磁信號濾波處理及相位補償
孫 凱,楊新民,胡金波,鄒 亞
(南京理工大學(xué)瞬態(tài)物理國家重點實驗室,南京 210094)
在彈載測控系統(tǒng)地磁檢測的背景下,針對傳統(tǒng)硬件濾波的缺點,提出了一種基于FPGA芯片的濾波處理方法。根據(jù)地磁采樣數(shù)據(jù)的性能指標,通過Matlab計算出滿足要求的濾波器結(jié)構(gòu)與系數(shù),利用Verilog語言完成FPGA的板級設(shè)計。并針對IIR濾波器非線性的特性,設(shè)計出一種基于相頻響應(yīng)曲線的相位補償方法,實現(xiàn)了信號的線性跟隨。實驗證明,基于FPGA的濾波處理運算速度快,系數(shù)改變靈活,濾波效果好,具備良好的實用性。
地磁信號;FPGA;IIR濾波器;相位補償
在衛(wèi)星制導(dǎo)炮彈中,獲取準確滾轉(zhuǎn)姿態(tài)數(shù)據(jù)尤為重要。滾轉(zhuǎn)姿態(tài)數(shù)據(jù)測量的方法很多,其中以地磁場為基準的地磁傳感器具有結(jié)構(gòu)簡單、成本低、精度高、抗過載性強的優(yōu)勢,可以快速實現(xiàn)滾轉(zhuǎn)數(shù)據(jù)的測量,是獲取滾轉(zhuǎn)姿態(tài)的一種常用方法[1-2]。地磁傳感器通過測量地磁場在炮彈上的分量大小來計算炮彈的滾轉(zhuǎn)角,由于系統(tǒng)中存在的高頻分量會干擾地磁信號從而影響數(shù)據(jù)的準確性,如何對這些噪聲進行濾波以降低其對系統(tǒng)的影響提高測量精度,就成為工程實現(xiàn)中面臨的一個重要問題。
傳統(tǒng)地磁信號濾波是采用電容、電阻、電感組成的模擬濾波器(見圖1)。這種方法的缺點是硬件電路一旦確定,濾波器的性能指標就無法更改,使用上缺乏靈活性;而且用模擬濾波器濾波存在相位延遲,延遲量隨著頻率的變化而改變,這在地磁信號的測量中是不允許的,所以模擬濾波器只適用于低旋的彈體。由于在彈載測控系統(tǒng)中,需要用到現(xiàn)場可編程門列陣FPGA進行各類數(shù)據(jù)的采集,就可以借助FPGA,在其內(nèi)部實現(xiàn)數(shù)字濾波器,使得地磁信號的濾波處理變得簡單、可調(diào)。
圖1 傳統(tǒng)地磁信號濾波方法
1.1 濾波器的設(shè)計要求
地磁信號的有效頻率在100~300Hz之間,系統(tǒng)的噪聲主要集中在低頻80Hz和高頻17kHz的頻帶上,由此需要設(shè)計一個帶通濾波器。設(shè)定通帶邊界頻率Fp1=100Hz、Fp2=400Hz,阻帶邊界頻率Fs1=50Hz、Fs2=1kHz,峰值通帶波紋αp=1dB,最小阻帶衰減αs=6dB。本系統(tǒng)選用的ADC芯片的采樣頻率為200kHz,雙通道采樣,每一通道的采樣頻率為100kHz。
1.2 數(shù)字濾波器選型
數(shù)字濾波器根據(jù)單位脈沖響應(yīng)的不同,可分為有限沖擊響應(yīng)FIR濾波器和無限沖擊響應(yīng)IIR濾波器。FIR濾波器具有良好的線性相位,且由于是有限沖擊響應(yīng),不會出現(xiàn)不穩(wěn)定的情況;IIR濾波器的特點在于具有良好的幅頻特性,對于相同的設(shè)計指標,IIR濾波器所需的階數(shù)遠遠小于FIR濾波器,例如在本次帶通濾波器設(shè)計中,由于要求的通帶邊界頻率與阻帶邊界頻率非常接近,且接近于0,而且與采樣頻率相差幾個數(shù)量級,設(shè)計指標較為苛刻,采用IIR橢圓濾波器需要8階就可實現(xiàn)設(shè)計要求,而采用FIR濾波器窗函數(shù)法來設(shè)計則高達7 251階,故IIR濾波器占用的硬件存儲單元少,信號延遲小,更適合用于本次設(shè)計。
1.3 IIR濾波器的原理與結(jié)構(gòu)
無限沖擊響應(yīng)IIR數(shù)字濾波器,其系統(tǒng)傳遞函數(shù)為:
(1)
其差分方程為:
(2)
將傳遞函數(shù)進行等效變換,可得到IIR濾波器的3種結(jié)構(gòu):直接型、級聯(lián)型和并聯(lián)型[3]。
直接型結(jié)構(gòu)的優(yōu)點在于簡單直觀,所使用的延遲器數(shù)量少。缺點是改變某一個系數(shù){aj}將影響所有的極點,改變某一個系數(shù){bj}將影響所有的零點。且直接型結(jié)構(gòu)的極點位置靈敏度太大,對有限字長效應(yīng)太敏感,容易出現(xiàn)不穩(wěn)定現(xiàn)象和產(chǎn)生較大的誤差[4]。
并聯(lián)型的運算速度快,各基本節(jié)的誤差互不影響,但由于子系統(tǒng)的零點不是系統(tǒng)的零點,不能直接對零點進行調(diào)整。
級聯(lián)型結(jié)構(gòu)便于準確實現(xiàn)濾波器的零、極點,且受參數(shù)量化影響較小,將一個高階系統(tǒng)化為若干個二階節(jié)子系統(tǒng)的級聯(lián),如式(3)所示,在硬件實現(xiàn)上可用一個二階節(jié)分時復(fù)用。
(3)
系數(shù)g是二階節(jié)的增益,為了保證每個二階節(jié)不會發(fā)生運算溢出,應(yīng)合理的將增益分配到每一個二階節(jié)中,這一過程可采用Matlab軟件來完成。單個二階節(jié)的差分方程可表示為:
y(n)=b0x(n)+b1x(n-1)+b2x(n-2)-
a1y(n-1)-a2y(n-2)
(4)
式(4)即為濾波器在FPGA中的設(shè)計表達式,利用Verilog語言編寫一個二階節(jié)模塊,FPGA就可以調(diào)用這個模塊裝載不同的系數(shù),從而完成對信號的濾波。
2.1 系數(shù)計算
根據(jù)濾波器的設(shè)計要求,通過Matlab中專用的濾波器設(shè)計分析工具FDATool可以快速的計算出濾波器系數(shù)。在實現(xiàn)同樣性能指標的濾波器時,橢圓型濾波器具有最小的階數(shù),更有利于后面FPGA的設(shè)計,故在濾波器類型上選擇橢圓型濾波器。其幅頻響應(yīng)曲線如圖2所示。
圖2 幅頻響應(yīng)曲線
FDATool具有直接生成級聯(lián)型濾波器結(jié)構(gòu)的功能,選擇FDATool的“File”菜單中的“Export…”可將二階節(jié)系數(shù)導(dǎo)出,由結(jié)果可知要實現(xiàn)本次濾波指標需要濾波器的階數(shù)為8階,可分為4個二階節(jié)。
2.2 數(shù)制的規(guī)定
Matlab生成的濾波器的系數(shù)均為全精度浮點型小數(shù),而FPGA進行浮點數(shù)運算需要占用大量的硬件資源,且實現(xiàn)起來很不方便,所以需要將浮點型小數(shù)轉(zhuǎn)換為定點型小數(shù),即進行系數(shù)的量化。在對系數(shù)進行量化過程中會對數(shù)據(jù)進行截短產(chǎn)生量化誤差,會導(dǎo)致濾波器的頻率響應(yīng)出現(xiàn)偏差,嚴重時會使濾波器的極點移到單位圓之外,使系統(tǒng)不穩(wěn)定,因此應(yīng)合理選擇量化精度。實驗表明,選擇的量化字長越長,系統(tǒng)越能符合預(yù)定的指標,而在FPGA中占用的資源也越高。通過對比不同量化字長所產(chǎn)生的幅頻曲線,文中最終確定系數(shù)量化位數(shù)為21位,最高位為符號位,次高位為整數(shù)位,剩下的19位為小數(shù)位,該格式表示的數(shù)的范圍是-2~2,量化精度為1/219。
為了防止運算過程中產(chǎn)生溢出,可以利用Matlab的Simulink模塊搭建上文設(shè)計的IIR濾波器模型,以正弦信號作為測試輸入,觀察每一二階節(jié)輸出數(shù)據(jù)的最大值。測試表明,以ADC采樣的最大值——幅值為213的正弦波作為輸入時,運算過程中產(chǎn)生的最大值可用27位二進制數(shù)表示,因此輸入輸出數(shù)據(jù)可選用28位定點數(shù),可以確保運算過程不會出現(xiàn)溢出。ADC采樣的數(shù)據(jù)可根據(jù)符號位決定補零或補一的方式擴展到28位。
3.1 系數(shù)裝載
本次數(shù)字濾波器是在FPGA內(nèi)實現(xiàn)的,系數(shù)是由DSP通過總線輸入的。在2.1系數(shù)計算中可知,實現(xiàn)本次濾波指標需4個二階節(jié)共20個系數(shù),裝載這些系數(shù)可以采用總線尋址開辟寄存器的方式,5根地址線就可滿足設(shè)計要求。但是如果想改變?yōu)V波器指標,那么濾波器系數(shù)的個數(shù)就有可能改變,從而需要的地址線也會發(fā)生變化;而且當濾波器階數(shù)較高時,占用的地址線數(shù)量也會增加。所以文中采用建立內(nèi)部FIFO方式,通過IP核在FPGA內(nèi)部創(chuàng)建一個寬21位深256位的FIFO,用1根地址線指向FIFO,DSP通過總線將系數(shù)依次送入FIFO中,在系數(shù)模塊中開辟相應(yīng)數(shù)量的系數(shù)寄存器,當檢測到FIFO非空時就產(chǎn)生一個讀信號,這就可以將FIFO中的數(shù)據(jù)取出裝入對應(yīng)的系數(shù)寄存器中。系統(tǒng)電路框圖如圖3所示。
圖3 系數(shù)裝載框圖
利用FIFO裝載濾波器系數(shù)還具有另一個優(yōu)勢,通過改變?yōu)V波器的階數(shù)和系數(shù),就可以改變?yōu)V波器的性能指標,靈活的實現(xiàn)不同的濾波要求,這是模擬濾波器很難實現(xiàn)的。以256位FIFO為例,它最大能裝載51個二階節(jié)的系數(shù),可實現(xiàn)102階以內(nèi)濾波器的任意配置。
3.2 濾波運算
FPGA的設(shè)計流程采用自上而下的方式進行,根據(jù)上文可知,該濾波器需要4個二階節(jié)級聯(lián),每個二階節(jié)的電路結(jié)構(gòu)完全相同,只是系數(shù)不同,故只需利用硬件描述語言編寫一個二階節(jié)模塊,在頂層模塊中調(diào)用4次即可。二階節(jié)的設(shè)計可分為移位、相乘、累加3個模塊,其實現(xiàn)框圖如圖4所示。
圖4 二階節(jié)實現(xiàn)模塊
IIR濾波器可以很好的滿足濾波的幅頻要求,但是會出現(xiàn)相位的非線性延遲,這是在地磁信號測量過程中所不允許出現(xiàn)的,這就需要采取方法對非線性的相位進行補償。
以往對IIR濾波器的相位補償多采用級聯(lián)全通濾波器或是零相濾波器的方式[5]。全通濾波器在整個頻段上都具有單位幅度響應(yīng),可以補償IIR濾波器的延遲,因此常被用作延遲均衡器。用Matlab中的iirgrpdelay命令可以直接設(shè)計出針對指定IIR濾波器進行相位補償?shù)娜V波器的系數(shù),但是在文中所用的地磁信號實例中,由于濾波器指標條件過于苛刻,運算過程中產(chǎn)生了奇異矩陣而且在FPGA的實現(xiàn)中,高階的全通濾波器會增加芯片資源的占用率,并使得設(shè)計更加復(fù)雜繁瑣。采用零相濾波器可以消除相位的失真,但是利用專用集成電路實現(xiàn)起來則需要經(jīng)過濾波、截取、前后補位、反轉(zhuǎn)、再濾波、再截取的過程[6],工作量巨大,因此也不是最佳方案。
鑒于采用級聯(lián)濾波器的方法所存在的種種不足,文中從IIR濾波器的相頻響應(yīng)入手,設(shè)計了一種直接基于相頻響應(yīng)曲線的相位補償方法。首先IIR濾波器的相頻響應(yīng)曲線如圖5所示,可以看到每一個頻率點都對應(yīng)著特定的相位延遲,所以只要知道當前濾波輸出信號的頻率f,就能夠得到其延遲相位的具體數(shù)值Tdelay,只需使濾波輸出數(shù)據(jù)再延遲(2π-Tdelay)rad,就可以使前一個周期濾波后輸出的波形與當前正在輸入的信號波形相重合,因為彈丸在飛行過程中的轉(zhuǎn)速變化是緩慢而平穩(wěn)的,所以可以假定產(chǎn)生的地磁信號其前后相鄰的兩個周期數(shù)值是相同的,因此得到的結(jié)果中一個周期的誤差不會對實際工程應(yīng)用產(chǎn)生實質(zhì)的影響。
在FPGA實現(xiàn)過程中,首先需要用數(shù)學(xué)表達式把相頻曲線近似的表示出來,也就是曲線的函數(shù)擬合,實際產(chǎn)生的地磁信號的頻率是在100~300Hz之間,所以只需將表達式的有效區(qū)間設(shè)定在通帶頻帶上即可。整個通帶頻帶的相頻響應(yīng)是非線性的,可將曲線分成幾段分別進行擬合,在這一過程中使用Matlab中的polyfit命令能夠方便快捷的完成任務(wù)。
圖5 相頻響應(yīng)曲線
在進行濾波輸出信號的周期測量時,可以設(shè)定輸出值兩次達到0為一個周期。這里需要注意兩點:首先,輸出是數(shù)字量而不是模擬量,數(shù)值是不連續(xù)的且在一個周期內(nèi)有可能不會出現(xiàn)0值,所以這就需要設(shè)定一個范圍,一旦檢測到數(shù)據(jù)小于設(shè)定值時即可認定數(shù)據(jù)已達到要求;其次,由于信號受到噪聲干擾,即使濾波后的數(shù)據(jù)也不能排除在0值附近會存在波動的情況,因此可設(shè)定當計數(shù)大于3/4周期后再進行0值檢測,這樣就可以消除數(shù)據(jù)波動帶來的誤差干擾。
在進行相位補償時,需要設(shè)置一個FIFO模塊,用于裝載濾波后的數(shù)據(jù),當檢測到一個完整的周期后就可計算出所需延遲的具體數(shù)值N,這時啟動計數(shù)器,計數(shù)達到N時就可以將FIFO里的數(shù)據(jù)輸出,此時輸出的波形就會與地磁線圈采集的信號近似重合。而當?shù)卮判盘柕念l率發(fā)生變化時,濾波后波形相對于輸入波形的延遲時間也會隨著發(fā)生變化,其結(jié)果有兩種,一種是相對于前一周期的Tdelay2,當前周期的Tdelay1要大于Tdelay2,這就需要數(shù)據(jù)還要延遲(Tdelay1-Tdelay2)個單位再將FIFO中的數(shù)據(jù)進行輸出;第二種是當前周期的Tdelay1小于前一周期的Tdelay2,這就需要FIFO輸出舍掉(Tdelay2-Tdelay1)個單位的數(shù)據(jù)。由于地磁信號的周期變化緩慢而平穩(wěn),增加延遲或者舍掉數(shù)據(jù)的個數(shù)也有限,對輸出數(shù)據(jù)的準確性影響甚微。
利用Modelsim軟件對編寫好的IIR濾波器模塊進行仿真,在這一過程中需要用到大量的輸入數(shù)據(jù),利用FPGA來實現(xiàn)非常困難,而Matlab可以方便的生成各種信號,所以設(shè)計中采用文本輸入的方式,通過Matlab/Simulink生成所需的測試數(shù)據(jù),存入txt文本中,在編寫測試程序中,使用系統(tǒng)命令$readmemh就可以將數(shù)據(jù)讀入進行仿真。
當輸入信號為50Hz的正弦波時,濾波前后的波形如圖6所示,輸入最大值為8 192即213,10周期后輸出值在正負120之間,衰減明顯。
圖6 50 Hz正弦波的濾波效果
當輸入信號為80Hz的正弦波時,濾波前后的波形如圖7所示,可以看到10周期后輸出值在正負700之間,衰減了11倍。
圖7 80 Hz正弦波的濾波效果
當輸入信號為100Hz的正弦波是,濾波前后的波形如圖8所示,可以看到10周期后輸出值沒有衰減,只是發(fā)生了嚴重的相位偏移。
圖8 100 Hz正弦波的濾波效果
當輸入信號為700Hz的正弦波時,濾波前后的波形如圖9所示,可以看到10周期后輸出信號衰減明顯。
圖9 700 Hz正弦波的濾波效果
再來觀察相位補償模塊對信號相位的作用,選取頻率為300Hz,275Hz,250Hz,…,100Hz的正弦波的組合并疊加噪聲作為輸入信號,每個頻率持續(xù)5個周期,然后轉(zhuǎn)入下一頻率,其輸入輸出信號的波形如圖10所示,第一個波形是輸入信號,第二個波形是相位調(diào)整后的最終輸出信號,第三個波形是濾波后相位調(diào)整前的信號。對比第一個和第三個波形可以得到,信號經(jīng)過濾波后,噪聲已經(jīng)消除,但是相位出現(xiàn)較大偏差;對比第一個和第二個波形可以得到,經(jīng)過相位補償后,輸出信號的波形跟輸入信號實現(xiàn)了相位跟隨;圖中紅色標記處顯示了當輸入信號頻率發(fā)生變化時,相位補償模塊是怎樣進行相位調(diào)整的,由于選用輸入信號的頻率存在25Hz的跳變,所以可以清晰地看到調(diào)整過程,在實際測量中,地磁信號的頻率變化是連續(xù)且緩慢的,經(jīng)過相位補償后的波形也是平滑的。由此可以證明,基于相頻響應(yīng)曲線調(diào)整相位的方法達到了本次實驗的設(shè)計要求。
圖10 相位補償模塊的效果圖
彈載測控系統(tǒng)中的高頻分量和磁場會影響地磁信號的測量精度,為彈丸滾轉(zhuǎn)姿態(tài)的計算帶來誤差。文中以FPGA為硬件平臺完成了IIR數(shù)字濾波器的設(shè)計,實現(xiàn)了對地磁信號的濾波處理,并設(shè)計了一種新的相位補償方法對IIR濾波器的非線性相位進行補償,實現(xiàn)了輸出信號對輸入信號的線性跟隨,展示出數(shù)字濾波器相對于模擬濾波器的靈活性與準確性,符合工程實現(xiàn)的要求,為以后數(shù)字濾波在彈載計算機系統(tǒng)中的運用打下理論基礎(chǔ)。
[1] 方柳建. 基于DSPD的彈載計算機控制系統(tǒng)的設(shè)計與實現(xiàn) [D]. 南京: 南京理工大學(xué), 2012.
[2] 邱榮劍. 地磁傳感器測量彈體滾轉(zhuǎn)姿態(tài)方法研究 [J]. 四川兵工學(xué)報,2014, 35(10): 103-106.
[3]SANJITKMitra. 數(shù)字信號處理: 基于計算機的方法 [M]. 4版. 余翔宇,譯. 北京: 電子工業(yè)出版社, 2012: 304-410.
[4] 曾菊容. 高階IIR濾波器的FPGA實現(xiàn) [J]. 電子設(shè)計工程, 2011, 19(10): 173-175.
[5] 劉渭清. 一種數(shù)字全通濾波器的最小二乘設(shè)計法 [J]. 西南師范大學(xué)學(xué)報, 2013, 38(12): 1-5.
[6] 吳培希. 有關(guān)零相數(shù)字濾波器的實現(xiàn) [J]. 信息系統(tǒng)工程, 2012(4): 95-96.
Filtering and Phase Compensation for Geomagnetic Signal Based on FPGA
SUNKai,YANGXinmin,HUJinbo,ZOUYa
(NationalKeyLaboratoryofTransientPhysics,NUST,Nanjing210094,China)
Againstthebackgroundofmagneticdetectionofmissile-bornecontrolsystem,anewfilteringmethodwhichbasedonFPGAwasexpoundedduetoshortcomingoftraditionalhardwarefiltering.Accordingtotheperformancespecificationofgeomagneticdata,structureandcoefficientswhichmeettherequirementsoffilterweredesignedbyMatlab,andVerilogwasusedtocompleteboard-leveldesignofFPGA.AccordingtononlinearcharacteristicsofIIRfilter,aphasecompensationmethodbasedonphase-frequencyresponsewasputforward.ExperimenthasprovedthatfilteringmethodbasedonFPGAhasadvantagesofhighspeedofoperation,flexiblecontrol,betterfilteringeffectandgoodpracticability.
geomagneticsignal;FPGA;IIRfilter;phasecompensation
2015-07-15
孫凱(1989-),男,山東泰安人,碩士研究生,研究方向:彈載計算機。
V
A