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