1 Fir濾波器原理
有限沖激響應(FIR)數字濾波器和無限沖激響應(IIR)數字濾波器廣泛應用于數字信號處理系統(tǒng)中。IIR數字濾波器方便簡單,但它相位的非線性,要求采用全通網絡進行相位校正,且穩(wěn)定性難以保障。FIR濾波器具有很好的線性相位特性,使得它越來越受到廣泛的重視。FIR數字濾波器是一個線性時不變系統(tǒng)(LTI),N階因果有限沖激響應濾波器可以用傳輸函數H(z)來描述,
在時域中,上述有限沖激響應濾波器的輸入輸出關系如下:
其中,x[n]和y[n]分別是輸入和輸出序列。
N階有限沖激響應濾波器要用N+1個系數描述,通常要用N+1個乘法器和N個兩輸入加法器來實現。乘法器的系數正好是傳遞函數的系數,因此這種結構稱為直接型結構,可通過式(1.2)來實現
當沖擊響應滿足下列條件時,FIR濾波器具有對稱結構,為線性相位濾波器:
這種對稱性,可使得乘法器數量減半:對n價濾波器,當n為偶數時,乘法器的個數為n/2個;當n為奇數時,乘法器的個數為(n+1)/2個。在電路實現中,乘法器占用的邏輯單元數較多。乘法器的增加,意味著電路成本增加,另外對電路的工作速度也有影響。
N階線性相位的因果FIR系統(tǒng)的單位沖激響應濾波器可用對稱沖激響應
來描述。
具有對稱沖激響應的FIR傳輸函數的沖激響應可寫成如下形式:
當N為偶數時
則FIR線性相位系統(tǒng)的結構可轉化成如圖1(a)和圖1(b)所示。
2 濾波器設計方案、
隨著數字技術日益廣泛的應用,以現場可編程門陣列(FPGA)為代表的ASIC器件得到了迅速普及和發(fā)展,器件集成度和速度都在高速增長。FPGA既具有門陣列的高邏輯密度和高可靠性,又具有可編碼邏輯器件的用戶可編程特性,可以減少系統(tǒng)設計和維護的風險,降低產品成本,縮短設計周期。
分布式算法是—種以實現乘加運算為目的的運算方法。它與傳統(tǒng)算法實現乘加運算的不同在于執(zhí)行部分積運算的先后順序不同。簡單地說,分布式算法在完成乘加功能時是通過將各輸入數據每一對應位產生的部分積預先進相加形成相應部分積,然后在對各部門積進行累加形成最終結果,而傳統(tǒng)算法是等到所有乘積產生之后再進行相加來完成乘加運算的。與傳統(tǒng)算法相比,分布式算法可極大地減少硬件電路規(guī)模,很容易實現流水線處理,提高電路的執(zhí)行速度。
FPGA有著規(guī)整的內部邏輯塊陣列和豐富的連線資源,特別適合細粒度和高并行度結構特點的數字信號處理任務,如FIR、FFT等。利用FPGA實現FIR濾波器的設計過程,并且對設計中的關鍵技術一分布式算法進行詳細描述。
FIR濾波器的結構主要是非遞歸結構,沒有輸出到輸入的反饋。并且FIR濾波器很容易獲得嚴格的線性相位特性,避免被處理信號產生相位失真。而線性相位體現在時域中僅僅是h(n)在時間上的延遲,這個特點在圖像信號處理、數據傳輸等波形傳遞系統(tǒng)中是非常重要的。此外,他不會發(fā)生阻塞現象,能避免強信號淹沒弱信號,因此特別適合信號強弱相差懸殊的情況。
通常采用窗函數設計FIR濾波器方法簡單,但是這些濾波器的設計還不是最優(yōu)的。首先通帶和阻帶的波動基本上相等,另外對于大部分窗函數來說,通帶內或阻帶內的波動不是均勻的,通常離開過渡帶時會減小。若允許波動在整個通帶內均勻分布,就會產生較小的峰值波動。對于線性相位因果FIR濾波器,它的系列具有中心對稱特性,即h(i)=±h(N一1一i)。令s(i)=x(i)±x(N一1一i),對于偶對稱,代入式(1)可得:
根據要求,要設計一個輸入8位,輸出8位的9階線性相位FIR濾波器,所以采用圖2(a)的方式,其中輸入信號范圍為:[99,0,0,O,99,O,0,0,99,O,0,0,99,…],此濾波器Fs為lOOkHz,Fc為10kHz。利用MATLAB設計計算9階FIR濾波器系數和幅頻響應如下:
整數化后,可得FIR濾波器的參數為:[4c,4f,50,52,52,52,50,4f,4c:]
根據以上所說的思路,可以將FIR濾波器的原理圖設計如下:
下面對各加法器乘法器的輸出位數進行分析,對第一級加法器,輸入為8位,輸出統(tǒng)一為9位,最后一個加法器為三輸入端,輸入都為8位,輸出為10位。對各個乘法器進行分析,第一個乘法器為4c,因此輸入為9位,輸出為15位。第二個乘法器為4f,輸入為9位,輸出為15位。第三個乘法器為50,輸入為9位,輸出為15位。第四個乘法器為52,輸入為10位,輸出為16位。乘法器輸出結果兩兩相加,第一個加法器輸入都為15位,輸出為16位,第二個加法器,輸入分別為15位和16位,輸出為16位。最后這兩路輸出之和為16位。將后8位舍去,然后相加,總輸出為8位。至此,所有器件的輸入輸出都已經判定。下面進入模塊設計階段。
3 模塊設計
設計的FIR濾波器由10個小VHD文件和一個總體BDF文件組成,VHD文件可以分為以下三種模塊:寄存器、加法器、乘法器。
3.1 寄存器設計
寄存器用于寄存一組二值代碼,對寄存器的觸發(fā)器只要求它們具有置1、置0的功能即可,因而本設計中用D觸發(fā)器組成寄存器,實現寄存功能。
在CP正跳沿前接受輸入信號,正跳沿時觸發(fā)翻轉,正跳沿后輸入即被封鎖。
寄存器的波形仿真
3.2 加法器
在將兩個多位二進制數相加時,除了最低位以外,每一位都應該考慮來自低位的進位,即將兩個對應位的加數和來自低位的進位3個數相加。這種運算稱為全加,所用的電路稱為全加器。
實現兩個二進制數字的相加運算。當到達時鐘上升沿時,將兩數輸入,運算,輸出結果。
加法器的波形仿真
3.3 乘法器
從資源和速度考慮,常系數乘法運算可用移位相加來實現。將常系數分解成幾個2的冪的和形式。下例為乘4c電路設計。實現輸入帶符號數據與固定數據兩個二進制數的乘法運算。當到達時鐘上升沿時,將兩數輸入,運算,輸出結果。
乘法器的波形仿真
4 FIR濾波器整體電路
FIR濾波器的整體電路基本與其原理圖類似。整體電路如下圖所示:
5 FIR濾波器整體電路仿真結果
當輸入為信號為[99,0,0,0,99,0,0,0,99,O,0,0,99?!璢濾波器的實際仿真波形見下圖:
因為該濾波器為九階,信號通過各級觸發(fā)器,加發(fā)器乘法器的總延遲為13個時鐘周期,故在仿真中前13個時鐘周期沒有信號輸出。通過matl ab對濾波器進行仿真得出的理論輸出序列為:[33,28,34,50,33,28,34,50,33,28,34,50,33,28,34,50…….]與實際仿真波形比較,波形基本一致,但是因為該濾波器只有九階,所以與理論值有一定誤差。