摘要:為了降低超聲波流量檢測過程中噪聲對檢測精度的影響,采用FPGA器件構(gòu)建了FIR濾波器,并提出一種新穎的查表法替代濾波器中的乘法運算。試驗結(jié)果表明,該濾波器設(shè)計方法顯著降低了FPGA的片內(nèi)硬件開銷,提高了濾波器的運算速度,并具有良好的降噪效果。
關(guān)鍵詞:超聲波;信號;FPGA;FIR濾波器
0 引言
在超聲流量檢測過程中,由于環(huán)境噪聲使得流量檢測的精度收到了嚴重的影響。目前多采用軟件濾波的方法,對采集回來的聲波信號進行數(shù)字處理,以提高檢測的精度。此類方法對硬件處理器的運算能力要求較高,而且會影響檢測的實時性。隨著微電子技術(shù)的不斷進步,F(xiàn)PGA的容量和處理速度已有了飛躍性的提高。特別是在數(shù)字信號處理方面,其性能已經(jīng)超過了某些專用的信號處理芯片。本文在的超聲波流量檢測信號采樣處理電路中,采用FPGA實現(xiàn)了聲波信號的高速緩存和FIR濾波器,不僅達到了預(yù)期的消噪效果,而且提高了系統(tǒng)運行速度和集成度。下面將介紹FIR濾波器的具體實現(xiàn)過程。
1 數(shù)字濾波原理與設(shè)計
FIR數(shù)字濾波器的特性可以用它的系統(tǒng)轉(zhuǎn)移函數(shù)或差分方程來描述。一般地,線性是不變離散系統(tǒng)的差分方程,可表示為:
式中:zr,pk分別為H(z)的M個零點和N個極點,它們由系統(tǒng)的形式和各系統(tǒng)參數(shù)ak,br所決定。FIR濾波器都是非遞歸形式的濾波器。
此系統(tǒng)的輸出只與輸入x(n),x(n-1),…有關(guān),而與系統(tǒng)過去的輸出y(n-1),y(n-2),…無關(guān),此即非遞歸濾波器。
濾波器設(shè)計采用Matlab中的FDA Tool計算帶通濾波器系數(shù)。濾波器采用Kaiser窗函數(shù)設(shè)計,采樣頻率為40 MHz,窗上下截止頻率分別為3 MHz和7 MHz。由此得到的濾波器系數(shù)為:
[!--empirenews.page--]
2 FIR濾波器的FPGA實現(xiàn)
由式(4)可知,F(xiàn)IR濾波器的數(shù)學(xué)表達式就是卷積運算,也就是做乘加運算。例如,一個M階的FIR濾波器的輸出是輸入樣本的M個依次值的加權(quán)和,加權(quán)系數(shù)就是此濾波器的單位沖激響應(yīng)值。對于上節(jié)設(shè)計的10階線性FIR濾波器,可以得到:
這樣,10階FIR濾波器的結(jié)構(gòu)可以描述為:輸入樣本x(n)經(jīng)過10階移位寄存器延遲后得到10個具有不同延遲的抽頭,將對稱的抽頭值相加后再與相應(yīng)的權(quán)系數(shù)相乘,5個乘積相加就得到濾波器的輸出值。濾波器結(jié)構(gòu)如圖1所示。
濾波器抽頭與權(quán)系數(shù)之間存在著乘法運算,在硬件實現(xiàn)中乘法運算是相當復(fù)雜的運算,不僅占用大量硬件資源,而且運算速度較慢。為了提高運算速度,在此利用FPGA邏輯單元(LE)中的查找表實現(xiàn)替代乘法運算的查表運算。為了說明方便,在此以4階濾波器為例,數(shù)據(jù)為2位的二進制整形。設(shè)a(1)=01,a(2)=11,h(1)=10,h(2)=01,權(quán)系數(shù)與抽頭之間的乘加運算如圖2所示。
圖2中,P1(n)為抽頭低位與權(quán)系數(shù)的乘積結(jié)果,P2(n)為抽頭高位與權(quán)系數(shù)的乘積結(jié)果,在此稱之為單位積。常規(guī)的計算順序是先將P1(n)和P2(n)的對應(yīng)項在垂直方向上移位相加,所得結(jié)果再進行水平方向上相加。但是從圖中可以看出,先將P1(n)和P2(n)在水平方向上相加,然后再進行垂直方向上移位相加,所得的結(jié)果是一樣的。第二種順序中,P1(n)和P2(n)是h(n)和a(n)的某個比特位的乘積,而對于設(shè)計好的FIR濾波器h(n)是固定的,這樣就可以通過a(n)某比特位的組合來查表求出P1(n)或P2(n),并在水平方向上實現(xiàn)求和。如表1所示,a1(n)表示a(n)的低位組合,單位積P1表示相應(yīng)的權(quán)系數(shù)和。[!--empirenews.page--]
對于a(n)的高位組合,單位積P2可以建立同樣的組合表。將P1和P2移位相加,即可得到濾波器的輸出結(jié)果。在此例中采用的是2位二進制的權(quán)系數(shù)和輸入樣本,對于高精度的權(quán)系數(shù)和輸入樣本,只不過是增加更多的單位積P3,P4,…等等。
實際操作過程中,基于FPGA的FIR濾波器通過三步完成,第一步將輸入信號x(n)進行移位延遲,形成n階抽頭,再將相互對稱的抽頭相加得到濾波器抽頭;第二步在FPGA中構(gòu)造ROM,按前一步產(chǎn)生的濾波器抽頭進行查表運算;最后將所有位的查表運算結(jié)果移位相加得到濾波器輸出y(n)。
3 試驗結(jié)果分析
采用Altera公司的FPGA器件EPF10K30實現(xiàn)10階的帶通FIR濾波器進行試驗。A/D采樣頻率為40 MHz,精度為12位,聲波中心頻率為5M-Hz。A/D采樣得到的原始聲波信號如圖3所示。經(jīng)過FIR濾波器處理后的聲波信號如圖4所示。
試驗結(jié)果表明,采用FPGA實現(xiàn)的FIR濾波器有效地消弱了噪聲干擾,在保證實時性的基礎(chǔ)上,為后期處理提供了可靠的數(shù)據(jù)。
4 結(jié)論
針對超聲波信號中的噪聲采用基于FPGA的FIR濾波,提高了硬件電路的集成度,并取得了良好的消噪效果。在硬件實現(xiàn)過程中采用查表方法替代濾波過程中的乘法運算,節(jié)省了占用的片內(nèi)資源,提高了處理速度。同時由于采用了并行硬件算法,其處理速度遠高于CPU或DSP上的程序處理速度。