文獻標識碼: A
文章編號: 0258-7998(2015)02-0059-02
0 引言
FIR濾波器具有嚴格的線性相頻特性,同時又可保證任意幅頻特性。而這個特點使FIR濾波器在數據傳輸、圖像處理和識別、語音處理和通信系統中具有廣泛的應用。除此之外,FIR濾波器除0以外沒有其他的極點,所以整個濾波系統是相對穩定的,不存在不穩定的問題,這是FIR區別于IIR的本質原因,而FIR在傳輸數據時存在色散。
本文只討論FIR濾波器的設計方法?;贒A算法的濾波器有效解決了MAC結構的不足,但是隨著濾波器的階數增加,查找表的規模呈指數增加,再設計高階濾波器時普通DA算法甚至難以實現。本文提出了一種優化的DA算法來克服一般DA算法在設計高階濾波器時的缺陷,并用Verilog HDL語言在FPGA上實現[1]。
1 線性相位FIR濾波器的結構
如果FIR中的h(n)為實數,并符合下列條件其中的一種:
偶對稱:h(n)=h(N-1-n)
奇對稱:h(n)=-h(N-1-n)
稱其具有線性相位結構。
當N為奇數時,其系統函數為[2]:
其直接型結構如圖1所示。
當N為偶數時,其系統函數為:
其直接型結構如圖2所示。
2 分布式算法
2.1 分布式算法基礎
DA算法是基于查找表結構的,其詳細公式解析如下[3]:
重新分配求和的順序,其結果如下:
y=c[0]( xB-1[0]2B-1+ xB-2[0]2B-2+…+ x0[0]20)
+c[1]( xB-1[1]2B-1+ xB-2[1]2B-2+…+ x0[1]20)+…
+c[N-1](xB-1[N-1]2B-1+xB-2[N-1]2B-2+…+x0[N-1]20)
=(c[0] xB-1[0]+c[1] xB-1[1]+…+c[N-1]xB-1[N-1])2B-1
+c[0] xB-2[0]+c[1] xB-2[1]+…+c[N-1]xB-2[N-1])2B-2
+…+(c[0] x0[0]+c[1] x0[1]+…+c[N-1] x0[N-1])20
(6)
2.2 分布式算法的優化
假如N的數量增加,一個單一的LUT無法執行全字,就能夠利用部分表并先將結果相加。其原理為:假定長度為LN的內積,那么可以用一個DA體系結構實現它:
表的規模從一個24N B的LUT減少4個2N B表。優化的DA算法的結構圖如圖3所示。
3 基于FPGA的FIR低通濾波器的設計
3.1 基于FPGA的FIR設計流程
本文設計的FIR濾波器的流程如圖4所示,主要分為系數提取和FPGA完成[4]。
3.2 FIR濾波器的MATLAB設計
本文設計濾波器主要參數為阻帶最小衰減為30 dB,通帶波紋小于0.5 dB,截止頻率為0.4。為此設計了18階的FIR線性相位低通濾波器,采用窗函數中的凱澤窗來設計。根據凱澤窗參數?對濾波器的性能的影響,來滿足條件。由這些技術指標可通過MATLAB提供的濾波器設計工具箱FDAtool來仿真設計濾波器,從而提取濾波器的系數[5]。
由于提取出來的系數是浮點型,而FPGA只能處理定點型數據,所以需要把提取出來的系數進行量化,在該設計方案中將系數擴大1 024倍,即210。再通過編碼轉化為二進制形式。通過FDAtool工具提取出的數據及其量化結果如下:
h(0)=h(17)=-0.014 361 548 558 709 025,
h(1)=h(16)
=0.000 000 000 000 000 007 952 163 344 493 980 7,
h(2)=h(15)=0.028 618 979 697 780 135,
h(3)=h(14)=0.024 250 698 402 580 449,
h(4)=h(13)=-0.033 323 873 349 896 04,
h(5)=h(12)= -0.075 849 033 020 568 446,
h(6)=h(11)
=0.000 000 000 000 000 014 598 689 803 221 391,
h(7)=h(10)=0.197 209 967 107 277 67,
h(8)=h(9)=0.373 454 809 721 535 27。
其量化結果分別為:-15,0,29,25,-34,-78,0,202,
382。十六進制補碼分別為fff1,0000,001d,0019,ffde,ffb2,0000,00ca,017e。
3.3 線性相位FIR濾波器的FPGA實現
本文采用模塊化思想,由一個主時鐘控制各個子時鐘,全部模塊分別為并串轉換、延時與預求和、移位累加、查找表采用3個分割查表結構和求部分和的模塊[6]。
為了驗證電路能否連續正確運行,本文連續隨機輸入序列0、127、100、57、26、5、20、26、79、8、12、49、35、102、99、125、63、82在Modelsim工具上進行仿真,其結果如圖5所示。
仿真結果與MATLAB工具計算的理論值相比較,其Modelsim部分仿真結果如下:0、-2、-1、3、6、0、-11、-9、
19、19、66。MATLAB理論計算結果對應為:0、-1.823 9、-1.436 2、2.816 0、5.568 3、-0.247 6、-11.1261、-9.084 2、
19.414 9、66.125 3。通過仿真與MATLAB計算理論結果進行比較,理論值與仿真結果存在誤差但是誤差在允許的范圍內,誤差主要是因為量化時產生的。
4 結束語
本文提出的優化DA算法本質是提出對查找表的優化,事實證明濾波器階數越高,此優化算法的作用越明顯,而且可以節省內部邏輯資源。最后通過硬件實現,結果與理論值相比較,設計符合預期。
參考文獻
[1] 程佩青.數字信號處理[M].北京:清華大學出版社,2001.
[2] Meyer-Baese U(美).數字信號處理的FPGA實現[M].北京:清華大學出版社,2011.
[3] 杜勇.數字濾波器的MATLAB與FPGA實現[M].北京:電子工業出版社,2012.
[4] 高耀紅.基于FPGA的FIR低通濾波器[D].長沙:湖南大學,2012.
[5] 劉朋全.基于FPGA的FIR數字濾波器的設計和實現[D].西安:西北工業大學,2006.
[6] 夏宇聞.數字系統設計教程[M].北京:北京航空航天大學出版社,2008.