新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的FIR濾波器的實(shí)現(xiàn)

        基于FPGA的FIR濾波器的實(shí)現(xiàn)

        作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

        隨著微電子技術(shù)的發(fā)展,采用現(xiàn)場可編程門陣列進(jìn)行數(shù)字信號處理得到了飛速發(fā)展。由于具有現(xiàn)場可編程的特點(diǎn),可以實(shí)現(xiàn)專用集成電路,因此越來越受到硬件電路設(shè)計工程師們的青睞。本文研究了基于的FIR數(shù)字低通濾波器硬件電路的實(shí)現(xiàn)方法。用這種方法實(shí)現(xiàn)的濾波器內(nèi)部電路結(jié)構(gòu)透明化,并減小了體積,提高了工作效率。

        1 用法設(shè)計線性相位的方法

        任何數(shù)字濾波器的頻率響應(yīng)H(ejω) 都是ω的周期函數(shù),它的傅立葉級數(shù)展開式為:

        本文引用地址:http://www.104case.com/article/201706/349291.htm


        傅立葉系數(shù)h(n)實(shí)際上就是數(shù)字濾波器的沖激響應(yīng)。獲得有限沖激響應(yīng)數(shù)字濾波器的一種可能方法就是把式(1)的無窮級數(shù)截取為有限項級數(shù)來近似,而眾所周知的吉布斯現(xiàn)象使得直接截取法不甚令人滿意。

        法是用被稱為的有限加權(quán)序列{w(n)}來修正式(2)的傅立葉系數(shù),以求得要求的有限沖激響應(yīng)序列hd(n),即有:

        hd(n)=h(n)·w(n)        (3)

        w(n)是有限長序列,當(dāng)n>N-1及n<0時,w(n)=0。

        這里我們僅以沖激響應(yīng)對稱,即h(n)=h(N-1-n) (n=0,1,2,…,N-1)時低通濾波器為例進(jìn)行說明。低通濾波器的頻率響應(yīng)函數(shù)H(ejω)如式(4)所示。


        其中,ω為對抽樣頻率歸一化的頻率,ωc為歸一化截止頻率。

        利用反傅立葉變換公式求出與式(4)對應(yīng)的沖激響應(yīng)h(n),如(5)式所示。


        選用漢寧(Hanning)窗作為窗函數(shù),函數(shù)如式(6)所示。


        2 十六階FIR低通數(shù)字濾波器硬件電路設(shè)計

        下面以一個十六階FIR低通濾波器為例說明硬件電路的設(shè)計方法和過程。

        2.1 設(shè)計指標(biāo)和參數(shù)提取

        2.1.1 設(shè)計指標(biāo)

        采樣頻率:≥1.25×106/S 精度:δmax≤±1
        截止頻率:37.5kHz
        類 型:低通 輸入數(shù)據(jù)寬度:8位
        階 數(shù):16階 輸出數(shù)據(jù)寬度:16位

        2.1.2 參數(shù)提取

        采用上面介紹的低通濾波器的頻率響應(yīng)函數(shù)和漢寧窗函數(shù)進(jìn)行設(shè)計。計算出的符合設(shè)計指標(biāo)的線性相位16階FIR數(shù)字低通濾波器的特性參數(shù)如下:

        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 單元電路設(shè)計

        FIR低通數(shù)字濾波器電路分為數(shù)據(jù)位擴(kuò)展、并串轉(zhuǎn)換器、移位寄存器組、前加單元、中間處理單元、后處理單元以及控制單元等部分,其構(gòu)成框圖如圖1所示。


        2.2.1 數(shù)據(jù)位擴(kuò)展

        這里所設(shè)計的FIR數(shù)字濾波器輸入是8位寬的,為了防止溢出,保證電路的正常工作,這里采用符號位擴(kuò)展方法,經(jīng)過符號位擴(kuò)展,總的輸入數(shù)據(jù)寬度為9位。

        2.2.2 并/串轉(zhuǎn)換器

        并/串轉(zhuǎn)換器由9個2選1選擇器和9個D觸發(fā)器組成,結(jié)構(gòu)十分簡單,在此不再對其電路結(jié)構(gòu)贅述。其工作過程為:并/串轉(zhuǎn)換器以采樣速率周期地采入8位樣點(diǎn)數(shù)據(jù),并輸出1位數(shù)據(jù)流給后級的移位寄存器。

        2.2.3 移位寄存器組

        寄存器組主要完成移位功能。

        2.2.4 前加單元

        前加單元的主要功能是將移位寄存器輸出的1位串行數(shù)據(jù)流進(jìn)行預(yù)相加,它由一位串行加法器構(gòu)成。XC4000系列芯片具有以下兩個特點(diǎn):

        (1)內(nèi)部基本單元CLB(可配置邏輯模塊)包括三個函數(shù)發(fā)生器,分別以F、G和H標(biāo)記。其中兩個第一級的函數(shù)發(fā)生器F和G,每個可實(shí)現(xiàn)4輸入的任何函數(shù),同時它們也可以與H函數(shù)發(fā)生器組合生成五輸入的任何函數(shù)。此外,CLB還具有CLB內(nèi)部連線比外部連線延時小的特點(diǎn)。

        (2)XC4000系列提供了快速進(jìn)位邏輯(Carray Logic)用來加速加法器和計數(shù)器的進(jìn)位通道。利用快速進(jìn)位邏輯、加法器和計數(shù)器,在占用最小數(shù)量CLB的情況下,卻具有極快的工作速度。且該進(jìn)位邏輯可以進(jìn)行靈活配置,以實(shí)現(xiàn)任意長度的計數(shù)器和減法器。

        因此,從提高芯片利用率、布線率,減小電路延時等方面考慮,必須充分利用XC4000系列芯片的特點(diǎn),對電路中的1位全加器作適合于FPGA特點(diǎn)的特殊設(shè)計。圖2電路為本文所采用的經(jīng)優(yōu)化后的包括快速進(jìn)位邏輯的1位全加器電路,其中FMAP為函數(shù)映射,可將特定電路映射到CLB的F、G或H函數(shù)發(fā)生器中;CY4為快速進(jìn)位邏輯宏單元。


        2.2.5 中間處理單元

        在FIR數(shù)字濾波器中,中間處理單元主要實(shí)現(xiàn)對來自前加單元的1位串行輸出數(shù)據(jù)的相乘和累加功能。這里采用基于ROM查表法的分布式算法進(jìn)行中間處理單元的電路設(shè)計。

        如前所述,本文僅考慮沖激響應(yīng)對稱的情況,即濾波器的系數(shù)是對稱的,所以獨(dú)立系數(shù)的數(shù)目應(yīng)等于1/2的階數(shù)。對于16階的來說,其獨(dú)立系數(shù)的個數(shù)為8個。這8個獨(dú)立系數(shù)按表1所示的各種組合存儲于2個基于ROM的查找表內(nèi)。


        2.2.6 后處理單元

        后處理單元的主要功能是對數(shù)據(jù)進(jìn)行四舍五入和從數(shù)據(jù)流中取出需要的數(shù)據(jù)。完成四舍五入功能需要一個16位的加法器,取數(shù)據(jù)則需要16位并行D觸發(fā)器。

        2.2.7 控制單元

        控制單元主要由計數(shù)器和D觸發(fā)器組成。它對電路的控制主要包括:在電路開始工作前進(jìn)行全局復(fù)位,作好工作準(zhǔn)備;對輸入單元的工作進(jìn)行控制;提供中間處理單元正常工作所必須的一些信號;提供最終輸出結(jié)果時的輸出同步信號(OUTSYN)。

        2.3 電路原理及功能仿真

        采用Xilinx公司的XC4005EPC84設(shè)計的16階FIR低通數(shù)字濾波器的硬件電路最上層的電路原理圖如圖3所示。


        圖3是FIR數(shù)字濾波器的上層圖,其輸入輸出管腳情況和硬件資源占用情況分別見表2和表3。


        為了檢測設(shè)計的電路能否連續(xù)正確地工作,連續(xù)輸入了16位數(shù)據(jù)(十進(jìn)制),分別為:100,101,102,103,104,105,106,107,-101,-102,-103,-104,-105,-106,-107。FIR數(shù)字濾波器硬件仿真結(jié)果(前16個輸出)如表4所示。在表4中同時列出了根據(jù)文獻(xiàn)[4]編寫的程序所得到的軟件計算結(jié)果。


        從上述數(shù)據(jù)可以看出,軟件仿真結(jié)果與硬件仿真結(jié)果相比,誤差的絕對值均≤1,可以認(rèn)為濾波器的硬件電路工作正確。

        此外,為了驗證此濾波器在邊緣值輸入時能否正確工作,還進(jìn)行了邊緣值測試。當(dāng)輸入數(shù)據(jù)是8位時,其兩個邊緣值分別是+127和-128,對應(yīng)16進(jìn)制的7F和80。利用這兩組數(shù)據(jù)做輸入,得到的輸出也與軟件結(jié)果進(jìn)行對比,可以證實(shí)此時電路也能正確工作。

        本文設(shè)計的16階線性相位FIR數(shù)字低通濾波器,利用XC4005EPC84-2芯片實(shí)現(xiàn)時,處理數(shù)據(jù)的系統(tǒng)時鐘頻率為36MHz,采樣速率為4MHz,計算結(jié)果和軟件計算結(jié)果相比最大誤差≤±1。在實(shí)際使用時,還可以根據(jù)不同精度要求,方便地對該進(jìn)行修改以滿足不同的指標(biāo)要求。另外,在本文設(shè)計的低通濾波器基礎(chǔ)上,可以通過簡單地重組濾波器特性參數(shù),得到高通或帶通濾波器。同時FPGA器件的可編程特性,可方便地對電路進(jìn)行改進(jìn),便于電路性能的進(jìn)一步提高。



        關(guān)鍵詞: FIR濾波器 窗函數(shù) FPGA

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 鹤岗市| 乾安县| 莱阳市| 灌云县| 江阴市| 天津市| 晋城| 恩施市| 红河县| 汽车| 同江市| 怀集县| 吉木萨尔县| 广东省| 昆山市| 容城县| 寿阳县| 富川| 阜新| 平罗县| 南江县| 金乡县| 汕头市| 彭泽县| 吉木萨尔县| 玛曲县| 南雄市| 喀喇沁旗| 个旧市| 宁阳县| 旬邑县| 嘉善县| 周至县| 交城县| 香港 | 宁河县| 张家川| 东台市| 潮州市| 昭苏县| 青河县|