基于FPGA的FIR濾波器的實(shí)現
隨著(zhù)微電子技術(shù)的發(fā)展,采用現場(chǎng)可編程門(mén)陣列FPGA進(jìn)行數字信號處理得到了飛速發(fā)展。由于FPGA具有現場(chǎng)可編程的特點(diǎn),可以實(shí)現專(zhuān)用集成電路,因此越來(lái)越受到硬件電路設計工程師們的青睞。本文研究了基于FPGA的FIR數字低通濾波器硬件電路的實(shí)現方法。用這種方法實(shí)現的濾波器內部電路結構透明化,并減小了體積,提高了工作效率。
1 用窗函數法設計線(xiàn)性相位FIR濾波器的方法
任何數字濾波器的頻率響應H(ejω) 都是ω的周期函數,它的傅立葉級數展開(kāi)式為:
傅立葉系數h(n)實(shí)際上就是數字濾波器的沖激響應。獲得有限沖激響應數字濾波器的一種可能方法就是把式(1)的無(wú)窮級數截取為有限項級數來(lái)近似,而眾所周知的吉布斯現象使得直接截取法不甚令人滿(mǎn)意。
窗函數法是用被稱(chēng)為窗函數的有限加權序列{w(n)}來(lái)修正式(2)的傅立葉系數,以求得要求的有限沖激響應序列hd(n),即有:
hd(n)=h(n)·w(n) (3)
w(n)是有限長(cháng)序列,當n>N-1及n<0時(shí),w(n)=0。
這里我們僅以沖激響應對稱(chēng),即h(n)=h(N-1-n) (n=0,1,2,…,N-1)時(shí)低通濾波器為例進(jìn)行說(shuō)明。低通濾波器的頻率響應函數H(ejω)如式(4)所示。
其中,ω為對抽樣頻率歸一化的頻率,ωc為歸一化截止頻率。
利用反傅立葉變換公式求出與式(4)對應的沖激響應h(n),如(5)式所示。
選用漢寧(Hanning)窗作為窗函數,函數如式(6)所示。
2 十六階FIR低通數字濾波器硬件電路設計
下面以一個(gè)十六階FIR低通濾波器為例說(shuō)明硬件電路的設計方法和過(guò)程。
2.1 設計指標和參數提取
2.1.1 設計指標
采樣頻率:≥1.25×106/S 精度:δmax≤±1
截止頻率:37.5kHz
類(lèi) 型:低通 輸入數據寬度:8位
階 數:16階 輸出數據寬度:16位
2.1.2 參數提取
采用上面介紹的低通濾波器的頻率響應函數和漢寧窗函數進(jìn)行設計。計算出的符合設計指標的線(xiàn)性相位16階FIR數字低通濾波器的特性參數如下:
h[0]=h[15]=0.000000 h[1]=h[14]=0.001992
h[2]=h[13]=0.008241 h[3]=h[12]=0.018332
h[4]=h[11]=0.030784 h[5]=h[10]=0.043353
h[6]=h[9]=0.053550 h[7]=h[8]=0.059257
2.2 單元電路設計
FIR低通數字濾波器電路分為數據位擴展、并串轉換器、移位寄存器組、前加單元、中間處理單元、后處理單元以及控制單元等部分,其構成框圖如圖1所示。
2.2.1 數據位擴展
這里所設計的FIR數字濾波器輸入是8位寬的,為了防止溢出,保證電路的正常工作,這里采用符號位擴展方法,經(jīng)過(guò)符號位擴展,總的輸入數據寬度為9位。
2.2.2 并/串轉換器
并/串轉換器由9個(gè)2選1選擇器和9個(gè)D觸發(fā)器組成,結構十分簡(jiǎn)單,在此不再對其電路結構贅述。其工作過(guò)程為:并/串轉換器以采樣速率周期地采入8位樣點(diǎn)數據,并輸出1位數據流給后級的移位寄存器。
2.2.3 移位寄存器組
寄存器組主要完成移位功能。
2.2.4 前加單元
前加單元的主要功能是將移位寄存器輸出的1位串行數據流進(jìn)行預相加,它由一位串行加法器構成。XC4000系列芯片具有以下兩個(gè)特點(diǎn):
(1)內部基本單元CLB(可配置邏輯模塊)包括三個(gè)函數發(fā)生器,分別以F、G和H標記。其中兩個(gè)第一級的函數發(fā)生器F和G,每個(gè)可實(shí)現4輸入的任何函數,同時(shí)它們也可以與H函數發(fā)生器組合生成五輸入的任何函數。此外,CLB還具有CLB內部連線(xiàn)比外部連線(xiàn)延時(shí)小的特點(diǎn)。
(2)XC4000系列提供了快速進(jìn)位邏輯(Carray Logic)用來(lái)加速加法器和計數器的進(jìn)位通道。利用快速進(jìn)位邏輯、加法器和計數器,在占用最小數量CLB的情況下,卻具有極快的工作速度。且該進(jìn)位邏輯可以進(jìn)行靈活配置,以實(shí)現任意長(cháng)度的計數器和減法器。
因此,從提高芯片利用率、布線(xiàn)率,減小電路延時(shí)等方面考慮,必須充分利用XC4000系列芯片的特點(diǎn),對電路中的1位全加器作適合于FPGA特點(diǎn)的特殊設計。圖2電路為本文所采用的經(jīng)優(yōu)化后的包括快速進(jìn)位邏輯的1位全加器電路,其中FMAP為函數映射,可將特定電路映射到CLB的F、G或H函數發(fā)生器中;CY4為快速進(jìn)位邏輯宏單元。
2.2.5 中間處理單元
在FIR數字濾波器中,中間處理單元主要實(shí)現對來(lái)自前加單元的1位串行輸出數據的相乘和累加功能。這里采用基于ROM查表法的分布式算法進(jìn)行中間處理單元的電路設計。
如前所述,本文僅考慮沖激響應對稱(chēng)的情況,即濾波器的系數是對稱(chēng)的,所以獨立系數的數目應等于1/2的階數。對于16階的FIR濾波器來(lái)說(shuō),其獨立系數的個(gè)數為8個(gè)。這8個(gè)獨立系數按表1所示的各種組合存儲于2個(gè)基于ROM的查找表內。
2.2.6 后處理單元
后處理單元的主要功能是對數據進(jìn)行四舍五入和從數據流中取出需要的數據。完成四舍五入功能需要一個(gè)16位的加法器,取數據則需要16位并行D觸發(fā)器。
2.2.7 控制單元
控制單元主要由計數器和D觸發(fā)器組成。它對電路的控制主要包括:在電路開(kāi)始工作前進(jìn)行全局復位,作好工作準備;對輸入單元的工作進(jìn)行控制;提供中間處理單元正常工作所必須的一些信號;提供最終輸出結果時(shí)的輸出同步信號(OUTSYN)。
2.3 電路原理及功能仿真
采用Xilinx公司的XC4005EPC84設計的16階FIR低通數字濾波器的硬件電路最上層的電路原理圖如圖3所示。
圖3是FIR數字濾波器的上層圖,其輸入輸出管腳情況和硬件資源占用情況分別見(jiàn)表2和表3。
為了檢測設計的電路能否連續正確地工作,連續輸入了16位數據(十進(jìn)制),分別為:100,101,102,103,104,105,106,107,-101,-102,-103,-104,-105,-106,-107。FIR數字濾波器硬件仿真結果(前16個(gè)輸出)如表4所示。在表4中同時(shí)列出了根據文獻[4]編寫(xiě)的程序所得到的軟件計算結果。
從上述數據可以看出,軟件仿真結果與硬件仿真結果相比,誤差的絕對值均≤1,可以認為濾波器的硬件電路工作正確。
此外,為了驗證此濾波器在邊緣值輸入時(shí)能否正確工作,還進(jìn)行了邊緣值測試。當輸入數據是8位時(shí),其兩個(gè)邊緣值分別是+127和-128,對應16進(jìn)制的7F和80。利用這兩組數據做輸入,得到的輸出也與軟件結果進(jìn)行對比,可以證實(shí)此時(shí)電路也能正確工作。
本文設計的16階線(xiàn)性相位FIR數字低通濾波器,利用XC4005EPC84-2芯片實(shí)現時(shí),處理數據的系統時(shí)鐘頻率為36MHz,采樣速率為4MHz,計算結果和軟件計算結果相比最大誤差≤±1。在實(shí)際使用時(shí),還可以根據不同精度要求,方便地對該FIR濾波器進(jìn)行修改以滿(mǎn)足不同的指標要求。另外,在本文設計的低通濾波器基礎上,可以通過(guò)簡(jiǎn)單地重組濾波器特性參數,得到高通或帶通濾波器。同時(shí)FPGA器件的可編程特性,可方便地對電路進(jìn)行改進(jìn),便于電路性能的進(jìn)一步提高。
評論