国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的并行FIR數(shù)字濾波器硬件實現(xiàn)及優(yōu)化

2010-07-17 07:38:02鄭維智江遠(yuǎn)志
關(guān)鍵詞:加法器乘法器脈沖響應(yīng)

付 正, 鄭維智, 江遠(yuǎn)志

(北京工商大學(xué) 機(jī)械工程學(xué)院, 北京 100048)

現(xiàn)場可編程邏輯器件FPGA是可編程邏輯器件中一個重要的分支. FPGA使用了可編程領(lǐng)域中最常用的硬件描述語言VHDL,以及Max-plus Ⅱ作為仿真軟件. FPGA在網(wǎng)絡(luò)、數(shù)據(jù)處理、儀器、軍事、工業(yè)控制、通信和航空航天等眾多領(lǐng)域都得到了廣泛應(yīng)用,隨著功耗和成本的進(jìn)一步降低,F(xiàn)PGA還將進(jìn)入更多的應(yīng)用領(lǐng)域[1-2].

本文在一個有限脈沖響應(yīng)數(shù)字濾波器(finite impulse response,即FIR)的可編程邏輯器件實現(xiàn)的基礎(chǔ)上做了一定的優(yōu)化和改進(jìn),詳細(xì)地闡明了濾波器涉及的流程和原理.

1 有限脈沖響應(yīng)數(shù)字濾波器FIR

所謂并行FIR濾波器指的是數(shù)據(jù)是并行輸入的,對這些數(shù)據(jù)的處理也是并行的,這樣能夠達(dá)到在一個時鐘內(nèi)對一個輸入數(shù)據(jù)進(jìn)行處理的目的.

數(shù)字濾波器通常都是用來改變時域或頻域中信號的屬性的. 其中最為常見的數(shù)字濾波器是線性時不變(linear time-invariant,LTI)濾波器. 輸入信號經(jīng)過LTI濾波器時經(jīng)過了一個稱為線性卷積的過程. 用公式可以表示為y=f*x,其中f指的是濾波器的脈沖響應(yīng)函數(shù),x表示的是輸入信號,而y則表示卷積輸出. 線性卷積過程的定義如下:

(1)

線性時不變數(shù)字濾波器分為無限脈沖響應(yīng)濾波器(infinite impulse response,即IIR)和有限脈沖響應(yīng)濾波器FIR兩大類. 顧名思義,F(xiàn)IR濾波器是由有限個采樣值組成的,只需進(jìn)行有限次卷積,而IIR濾波器則要執(zhí)行無限數(shù)量次卷積.

有限脈沖響應(yīng)濾波器可由式(2)的差分方程表示

(2)

式(2)中,bl系數(shù)和系統(tǒng)的脈沖響應(yīng)是直接相關(guān)的,bl=h(l). 因此式(2)可改為

(3)

對式(3)進(jìn)行Z變換,得到式(4)輸入輸出關(guān)系

(4)

在實際應(yīng)用中,式(4)由幾個不同形式的部件組成:延時器,乘法器,加法器.

帶有常系數(shù)的FIR濾波器是一種LTI數(shù)字濾波器. L階或者長度為L的FIR輸出對應(yīng)于輸入時間序列x(n)的關(guān)系由一種有限卷積形式給出,具體的形式如下:

(5)

其中從f(0)≠0一直到f(L-1)≠0均是濾波器的L階系數(shù),同時也對應(yīng)于FIR的脈沖響應(yīng). 對于LTI系統(tǒng)可以更方便地將上式表示成為z域內(nèi)的形式:

Y(z)=F(z)X(z).

(6)

其中F(z)是FIR的傳遞函數(shù),其z域內(nèi)的形式:

(7)

2 并行FIR濾波器結(jié)構(gòu)的優(yōu)化

傳統(tǒng)的線性FIR濾波器的實現(xiàn)結(jié)構(gòu)如圖1.

圖1 傳統(tǒng)的線性FIR濾波器的實現(xiàn)結(jié)構(gòu)Fig.1 Traditional linear FIR filter implementation structure

對于改進(jìn)型的結(jié)構(gòu)主要在于并行矢量乘法器模塊,由于它占用這個系統(tǒng)的大量資源,其設(shè)計決定了整個系統(tǒng)設(shè)計是否優(yōu)良. 并行矢量乘法器模塊的設(shè)計方法有許多種,見圖1,輸入數(shù)據(jù)與沖擊響應(yīng)相乘是通過乘法器完成的,然后利用加法器把它們相加起來. 這樣設(shè)計存在比較大的缺陷,主要是乘法器的實現(xiàn)非常困難,會占用很多資源,系統(tǒng)冗余很大,因此需要的時鐘延遲也比較長. 本文采用了查找表的方法來設(shè)計并行矢量加法器(見圖2).

2.1 A/D模塊

數(shù)字濾波器需要處理的是離散信號,因此必須先將輸入的模擬信號通過模數(shù)轉(zhuǎn)換成離散信號.

圖2 并行FIR濾波器的模塊劃分Fig.2 Parallel FIR filter module division

2.2 并行時延模塊

A/D模塊的采樣數(shù)據(jù)首先送到并行時延模塊中,在每個時鐘周期內(nèi)都將下一組數(shù)據(jù)向下移動一位,由于器件中的邏輯單元均帶有同步使能的可編程觸發(fā)器,因此將移位寄存器組中的每個移位寄存器都設(shè)計成一組并聯(lián)的D觸發(fā)器,D觸發(fā)器個數(shù)為輸入數(shù)據(jù)的有效位數(shù). 因為所有D觸發(fā)器共用一個時鐘脈沖,所以每個時種均可以輸出一組數(shù)據(jù),從而使每個移位寄存器實現(xiàn)了一個時鐘延遲,完成需要的功能.

2.3 加法器組模塊

2.4 抽頭系數(shù)模塊

抽頭系數(shù)模塊是人工將抽頭系數(shù)的所有可能的組合都固化在FPGA的ROM中. 通過加法器模塊的作用輸出數(shù)據(jù)相應(yīng)位的組合,然后根據(jù)查找表輸出相應(yīng)的值.

2.5 移位相加模塊

移位相加模塊是通過對顯示查找表(look-up-table,簡稱LUT)輸出的值進(jìn)行移位相加來實現(xiàn)乘法功能的,在經(jīng)過了移位相加運算后,通過寄存器輸出y(n)的值.

3 各模塊具體功能的實現(xiàn)

為了使設(shè)計的實際效果更加直觀,舉例說明16階線性FIR低通濾波器的具體實現(xiàn)過程.

假設(shè)輸入為:x=sin(40πt)+0.2cos(400πt),如圖3,其中xb=0.2cos(400πt)是疊加在x=sin(40πt)的干擾信號. 疊加之后的輸入信號波形如圖4,設(shè)計指標(biāo)為:ωp=0.1π,xs=0.15π,fs=1 000 Hz.

濾波器的頻率響應(yīng)波形如圖5.

圖3 源信號與干擾信號的波形Fig.3 Source signal and interference signal waveform

圖4 疊加后輸出波形Fig.4 Superposed output waveform

圖5 濾波器的頻率響應(yīng)波形Fig.5 Filter frequency response waveform

3.1 輸入信號的抽樣和量化

輸入信號的抽樣和量化用于并行方式中的模數(shù)(A/D)轉(zhuǎn)換,其目的就是通過對連續(xù)信號進(jìn)行抽樣并量化成二進(jìn)制補(bǔ)碼的形式將之變?yōu)閿?shù)字信號,即x(n). EP1K30系列FPGA只支持定點運算,以此來實現(xiàn)更高的速度和更低廉的成本,因此必須對采樣信號進(jìn)行相應(yīng)的轉(zhuǎn)換,通常采樣信號的數(shù)值比較小,需要先將之放大,之后把放大后的信號轉(zhuǎn)換成7位二進(jìn)制補(bǔ)碼的形式. 值得注意的是,這個轉(zhuǎn)換過程是通Mat1ab仿真來實現(xiàn)的[3].

3.2 預(yù)相加模塊

預(yù)相加模塊是由并行時延模塊和加法器組模塊組成的. 其目的主要實現(xiàn)在每個時鐘周期將輸入的采樣數(shù)據(jù)x(n)進(jìn)行延時,同時將對稱的那些抽頭系數(shù)中的x(n)預(yù)相加,最后將結(jié)果輸出到抽頭系數(shù)模塊中. 在該模塊中,x-in(6:0)是采樣輸入信號,clk代表系統(tǒng)時鐘,sum0,suml,sum2,sum3是八階濾波器預(yù)相加的結(jié)果并行輸出信號.

具體程序如下:

Library ieee;

Use ieee.std-logic-1164.all;

Use ieee.std-logic-arith.all;

Use ieee.std-logic-unsigned.all;

Entity preadd is

Port(x-in : in std-logic-vector(6 downto 0);

Clk : in std-logic;

Sum0,sum1,sum2,sum3: out std-logic-vetor(7 downto 0);

End preadd;

Architecture Behavioral of Preadd is

Signal x0,x1,x2,x3,x4,x5,x6,x7:std-logie-vector(6 downto 0):=“0000000”;

Signal x0-temp,x1-temp,x2-temp,x3-temp,x4-temp,x5-temp,

X6-tem,x7-temp:std-logic-vector(7 downto 0);

Component reg

Port (d: in std-logic-vector (6 downto 0);

cIk: in std-logic:

q: out std-logic-vector(6 downto 0)

);

End component:

Begin

P1: reg port map(x-in,clk,x0);

P2: reg port map(x0,clk,x1);

p3: reg port map(xl,clk,x2);

p4: reg port map(x2,clk,x3);

p5: reg port map(x3,clk,x4);

p6: reg port map(x4,clk,x5);

p7: reg port map(x5,clk,x6);

p8: reg port map(x6,clk,x7);

xo-temp<=x0(6)&x0;

xl-temp<=x1(6)&x1;

x2-temp<=x2(6)&x2;

x3-temp<=x3(6)&x3;

x4-temp<=x4(6)&x4;

x5-temp<=x5(6)&x5;

x6-temp<=x6(6)&x6;

x7-temp<=x7(6)&x7;:

sum0<=x0-temp+x7-temp;

sum1<=x1-temp+x6-temp;

sum2<=x2-temp+x5-temp;

sum3<=x3-temp+x4-temp;

end behavioral

3.3 抽頭系數(shù)h(n)的確定

將濾波器的截止頻率設(shè)置為50 Hz,ωp=0.1π,借助于Matlab仿真軟件通過調(diào)用相應(yīng)的窗函數(shù),通過截止頻率和設(shè)計濾波器的階數(shù)兩個參數(shù)調(diào)用firl函數(shù),求出濾波器的脈沖響應(yīng)系數(shù)h(n).對應(yīng)于不同的窗函數(shù),所求得的h(n)見表1,通常用8位字長來表示h(n).

3.4 乘累加模塊的實現(xiàn)

此模塊又包括抽頭系數(shù)和移位相加兩個子模塊. 作為FIR濾波器優(yōu)化的主要方面,采用基于查找表結(jié)構(gòu)的模數(shù)轉(zhuǎn)換改進(jìn)結(jié)構(gòu)來替代傳統(tǒng)的硬件乘法器. 由于使用的是四輸入的LUT,因此為了節(jié)省硬件資源,將16階濾波器變?yōu)閮蓚€級聯(lián)的八階FIR數(shù)字濾波器,這樣有利于擴(kuò)展成更高階的濾波器. 由于h(n)具有對稱結(jié)構(gòu),對于八階線性FIR濾波器可以采用四輸入的形式,將h(n)有可能出現(xiàn)的各種組合預(yù)先存在查找表中,參見表2.

表1 采用漢明窗得到的h(n)Tab.1 Obtained by Hamming window h(n)

表2 16階FIR濾波器的LUT表(8位)Tab.2 16FIR filter LUT order form (8)

為了使設(shè)計更具有普遍性,在設(shè)計中所有的數(shù)據(jù)使用的都是二進(jìn)制補(bǔ)碼的形式,由于中間的計算過程可能會出現(xiàn)數(shù)據(jù)溢出,從而導(dǎo)致計算結(jié)果產(chǎn)生無法估量的錯誤. 因此在兩個數(shù)據(jù)相加的時候采用增加符號擴(kuò)展位的方法來防止數(shù)據(jù)溢出,實踐證明這種方法十分有效. 具體做法:將要相加的兩個數(shù)的最高位的符號位均向前擴(kuò)展一位,這么做就保證了中間計算結(jié)果的正確性. LUT的輸出位寬是9位,而其中最高位為符號擴(kuò)展位. 因為輸入數(shù)據(jù)位寬是8位,因此在并行結(jié)構(gòu)中,sb(n)[b=0,1…7]分別對應(yīng)了8個查找表,而前7位對應(yīng)的查找表完全相同;對于最高位(符號位)對應(yīng)的查找表,為了全部用加法器以提高運算速度,輸入到該查找表的數(shù)據(jù)是表3的補(bǔ)碼形式. 另一個級聯(lián)的8階濾波器設(shè)計方法與上述內(nèi)容完全相同,唯一不同的是寫入ROM中的數(shù)值為h(4),h(5),h(6),h(7)的所有組合形式,得到的實驗結(jié)果如圖6. 本設(shè)計中LUT是由抽頭系數(shù)模塊來實現(xiàn)的,其實現(xiàn)方式通過EP1K系列器件中的Core generator和VHDL語言將以上數(shù)據(jù)固化在ROM中,這樣做使模塊的可移植性更好. 另外并行移位相加模塊是將sum0,sum1,sum2,sum3中相同的有效位來組成地址信號,之后通過LUT輸出值table-out[0:8]得到相對應(yīng)的部分積,最后通過移位寄存器和加法器將上面得到的部分積相加,從而得到了最終的乘積y(n). 其模塊符號如圖7.

表3 16階FIR濾波器的LUT表(9位)Tab.3 FIR order filter LUT table (9)

圖6 經(jīng)過濾波后的輸出波形Fig.6 After filtered output waveform

圖7 四乘8位乘累加模塊符號Fig.7 4×8-bit multiply accumulate module symbols

4 并行FIR濾波器的流水線設(shè)計

在FPGA中通過流水線技術(shù)進(jìn)行并行可重復(fù)配置高精度的FIR濾波器設(shè)計,方便地改變?yōu)V波器的系數(shù)和階數(shù). 采用這種FIR濾波器的設(shè)計方法可以充分發(fā)揮FPGA的優(yōu)勢.

FIR濾波器中的流水線技術(shù)不僅可以擴(kuò)展信號頻帶和濾除多余的噪聲,還可以通過改變信號的特定頻譜分量來得到預(yù)期的結(jié)果. 數(shù)字濾波器在無線通信等領(lǐng)域中有著廣泛的應(yīng)用. 在數(shù)字信號處理中,傳統(tǒng)濾波器是通過高速乘法累加器來實現(xiàn)的,這種方法的缺陷在于,在下一個采樣周期到來前濾波器只能進(jìn)行有限操作,因此帶寬受到了限制. 通過使用并行流水線結(jié)構(gòu)的FIR濾波器,可以使即便64階、128階甚至更高階的濾波器與16階濾波器的速度一樣快,其特點是在算法的每一個階段存取數(shù)據(jù). FPGA結(jié)構(gòu)使得在以采樣速率處理數(shù)字信號的過程中,常數(shù)乘法器成為理想的載體,從而提高了整個系統(tǒng)的速度和效率. 值得注意的是,由于設(shè)計要求存在差異,在整個設(shè)計過程中,各個環(huán)節(jié)也會有所不同,這就需要根據(jù)不同的要求對數(shù)據(jù)進(jìn)行不同的處理,如截斷、擴(kuò)展等,最終才能設(shè)計出既滿足設(shè)計需要,又節(jié)省FPGA資源的電路.

5 并行FIR濾波器的擴(kuò)展應(yīng)用

本文設(shè)計并實現(xiàn)的FIR濾波器可以作為數(shù)字信號處理系統(tǒng)中的某一部件使用,在濾波器中,輸入數(shù)據(jù)和輸出數(shù)據(jù)都采用的是并行方式,并且都是通過二進(jìn)制的補(bǔ)碼形式來表示. 當(dāng)需要實現(xiàn)更高階數(shù)濾波器的時候,可以通過以多個濾波器模塊級聯(lián)的方式組成濾波器,其公式如(8):

(8)

依據(jù)式(8),級聯(lián)形式如圖8.

圖8 級聯(lián)Fig.8 Cascade

設(shè)計的FIR濾波器采用了兩個8階的線性有限長濾波器通過級聯(lián)的方式組成一個16階FIR濾波器. 在硬件資源足夠的條件下,原則上可以通過級聯(lián)的方式來實現(xiàn)任意高階的FIR濾波器. 但是通

常由于硬件FPGA資源的限制以及設(shè)計的實際需要,實現(xiàn)太高階的濾波器往往是不現(xiàn)實的.

6 結(jié) 語

在并行時不變有限長濾波器的設(shè)計過程中,通過大量使用查找表和流水線技術(shù),使得濾波器的數(shù)據(jù)處理能力得到明顯加強(qiáng),濾波器的性能有較大的提高. 由于每隔一個時鐘就可以輸出一個數(shù)據(jù),濾波器可以在很高的時鐘下運行,但是較高的運算速度是以耗費FPGA的硬件資源為代價的.

猜你喜歡
加法器乘法器脈沖響應(yīng)
分段式高性能近似加法器設(shè)計
基于重復(fù)脈沖響應(yīng)的發(fā)電機(jī)轉(zhuǎn)子繞組匝間短路檢測技術(shù)的研究與應(yīng)用
一種混合結(jié)構(gòu)的新型近似加法器
通用加法器的邏輯實現(xiàn)與分析
電子世界(2018年1期)2018-01-26 04:58:08
基于FPGA的流水線單精度浮點數(shù)乘法器設(shè)計*
三旋光結(jié)構(gòu)一步無進(jìn)位加法器的設(shè)計
脈沖響應(yīng)函數(shù)下的我國貨幣需求變動與決定
基于有限元素法的室內(nèi)脈沖響應(yīng)的仿真
電大理工(2015年3期)2015-12-03 11:34:12
玻璃氣體放電管與陶瓷氣體放電管的納秒脈沖響應(yīng)特性比較
乘法器模塊在FPGA中的實現(xiàn)
茌平县| 巴马| 沽源县| 宜兰县| 盐边县| 古丈县| 古交市| 武定县| 广西| 虞城县| 张掖市| 太仆寺旗| 眉山市| 巴马| 临颍县| 合山市| 九龙县| 志丹县| 壤塘县| 岳阳市| 河源市| 周口市| 突泉县| 新巴尔虎左旗| 富阳市| 石柱| 钦州市| 大连市| 武功县| 新泰市| 多伦县| 汝阳县| 买车| 舞钢市| 米泉市| 奉新县| 石渠县| 松原市| 山西省| 绥阳县| 崇州市|