- 相關(guān)推薦
基于fpga 的f.i.r 濾波器設(shè)計(jì)探討
1.引言
數(shù)字濾波在圖像處理、語音識別和模式識別等數(shù)字信號處理中占有重要地位。與模擬濾波器相比,數(shù)字濾波器可以滿足濾波器幅度和相位特性的嚴(yán)格要求,可以克服模擬濾波器所無法克服的電壓漂移、溫度漂移和噪聲等問題。有限沖激響應(yīng)(FIR)濾波器可以保證嚴(yán)格的線性相位。同時(shí)由于其實(shí)現(xiàn)結(jié)構(gòu)主要是非遞歸的,因此FIR 濾波器可以穩(wěn)定工作。FIR 濾波器被廣泛用于各類數(shù)字信號處理系統(tǒng)中實(shí)現(xiàn)卷積、相關(guān)、自適應(yīng)濾波、正交插值等處理,對于非實(shí)時(shí)系統(tǒng)和低速采樣系統(tǒng),FIR 濾波器的運(yùn)算可在CPU 或DSP 處理器上采用軟件實(shí)現(xiàn)。但對于無線通訊、雷達(dá)以及工業(yè)控制,甚至語音信號處理等實(shí)時(shí)應(yīng)用,由于FIR 運(yùn)算計(jì)算量過大,采用DSP 軟件可能無法實(shí)現(xiàn),因此采用可編程器件便是最好的方法。
目前 FIR 濾波器大致有以下幾種實(shí)現(xiàn)方法:
。1)使用單片通用數(shù)字濾波器集成電路。單片通用數(shù)字濾波器使用簡單方便,但由于字長和階數(shù)的規(guī)格較少,不能完全滿足實(shí)際需要。雖可采用多片擴(kuò)展來滿足,但會增加體積和功耗,因而在實(shí)際中受到一定限制。
。2)采用DSP 器件實(shí)現(xiàn)。由于有專門的函數(shù)可供調(diào)用,因此使用DSP 器件設(shè)計(jì)FIR濾波器相對較簡單,其應(yīng)用也最為廣泛。其唯一缺點(diǎn)是程序順序執(zhí)行,盡管DSP 器件性能不斷提高,但在某些實(shí)時(shí)性要求極高的場合中受到限制。
。3)采用可編程邏輯器件實(shí)現(xiàn)。隨著可編程邏輯器件的容量和速度的不斷增加,實(shí)現(xiàn)單片系統(tǒng)集成已經(jīng)成為可能。利用可編程邏輯器件實(shí)現(xiàn)FIR 濾波器,由于實(shí)現(xiàn)的是硬件并行算法,因此特別適用于某些實(shí)時(shí)性要求高的場合。
2.FIR 濾波器基本原理
濾波,顧名思義是對輸入信號通過一定的處理得到輸出信號,這個(gè)處理通常是提取信號中某頻率范圍內(nèi)的信號成分,把這種處理的過程稱為濾波。而能實(shí)現(xiàn)濾波處理的運(yùn)算電路或設(shè)備就稱為濾波器。數(shù)字濾波器是完成信號濾波處理功能的,用有限精度算法實(shí)現(xiàn)的離散時(shí)間線性非時(shí)變系統(tǒng),其輸入是一組數(shù)字量,其輸出是經(jīng)過變換的另一組數(shù)字量。數(shù)字濾波器具有穩(wěn)定性高、精度高、靈活性大等突出優(yōu)點(diǎn)。隨著數(shù)字技術(shù)的發(fā)展,用數(shù)字技術(shù)設(shè)計(jì)濾波器的功能越來越受到人們的注意和廣泛的應(yīng)用。FPGA 有著規(guī)整的內(nèi)部邏輯塊陣列和豐富的連線資源,特別適合細(xì)精度和高并行度結(jié)構(gòu)特點(diǎn)的數(shù)字信號處理任務(wù),如FIR、FFT 等。本文詳細(xì)討論利用FPGA 實(shí)現(xiàn)FIR 濾波器的設(shè)計(jì)過程,并且對設(shè)計(jì)中的關(guān)鍵技術(shù)—分布式算法進(jìn)行詳細(xì)描述。
3. FIR 分布式算法原理
3.1 總體設(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í)行速度。
FIR 濾波器(Finite Impulse Response)有直接型、級聯(lián)型和頻率抽樣型三種基本結(jié)構(gòu),其中最常見的是直接型結(jié)構(gòu)。這種結(jié)構(gòu)也稱為抽頭延遲線結(jié)構(gòu),或橫向?yàn)V波器結(jié)構(gòu)。
可以看出,線性相位FIR 濾波器的固有對稱屬性可以降低所需要的乘法器的數(shù)量,它使得乘法器的數(shù)量降低了一半,而加法器的數(shù)量增加了一半,總的運(yùn)算量減少。
FIR 濾波器的優(yōu)點(diǎn)有:
。1)即具有嚴(yán)格的線性相位,又具有任意的幅度;(2)FIR 濾波器的單位抽樣響應(yīng)是有限長的,因此濾波器性能穩(wěn)定;(3)只要經(jīng)過一定的延遲時(shí),任何非因果有限長序列,因而能用因果系統(tǒng)來實(shí)現(xiàn);(4)FIR 濾波器由于單位沖擊響應(yīng)是有限長的,因而可用快速傅立葉變換(FFT)算法來實(shí)現(xiàn)過濾信號,可大大提高運(yùn)算效率。
4.FIR 濾波器設(shè)計(jì)實(shí)現(xiàn)
4.1 總體設(shè)計(jì)思路
基于抽取濾波器的工作原理,本文采用FLEX10K 實(shí)現(xiàn)了一個(gè)具有線性相位的16 階FIR抽取濾波器,利用原理圖和VHDL 共同完成源文件設(shè)計(jì)。
1.FIR 濾波器的設(shè)計(jì)指標(biāo)
采樣頻率:5KHz截止頻率:2KHz類型:低通 輸入數(shù)據(jù)寬度: 8 位階 數(shù):16 階 系數(shù)數(shù)據(jù)寬度: 8 位
2.參數(shù)提取
使用 MATLAB6.1 軟件中Filter Design Toolbox 工具箱中的FDA Tool,選擇低通濾波器,Kaiser 窗設(shè)計(jì)方法,F(xiàn)s=5KHz,Fc=2KHz,階數(shù)為16 位,線性相位。
根據(jù)數(shù)字系統(tǒng)輸出與輸入的關(guān)系,并根據(jù)模塊化的設(shè)計(jì)思想,把系統(tǒng)分為六個(gè)模塊,包括控制模塊,數(shù)據(jù)寄存模塊,加法模塊,計(jì)數(shù)模塊,數(shù)據(jù)選擇模塊以及乘加模塊。其核心部分是控制模塊,通過對控制模塊編程,分別在相應(yīng)的周期內(nèi)實(shí)現(xiàn)A/D 讀入,轉(zhuǎn)換以及數(shù)據(jù)的讀出,再經(jīng)數(shù)據(jù)寄存器來儲存數(shù)據(jù),經(jīng)加法模塊后來實(shí)現(xiàn)系數(shù)相同的兩個(gè)采樣值相加,以節(jié)省儲存空間。加完后的采樣值通過計(jì)數(shù)部分的地址選擇信號與乘加部分隨機(jī)儲存器部分的對應(yīng)系數(shù)相乘后輸出,乘加模塊里包括有反饋環(huán)節(jié)以實(shí)現(xiàn)與前面乘加的結(jié)果進(jìn)行累加,待完成8 次累加后,把數(shù)據(jù)送到輸出端并再送往D/A 轉(zhuǎn)換器,這時(shí)實(shí)現(xiàn)了把數(shù)字信號轉(zhuǎn)化成模擬信號的工作。然后把輸出接到示波器上,在輸入端通過高頻信號發(fā)生器輸入一個(gè)模擬信號,如果信號的最高頻率小于濾波器的截止頻率,則示波器上顯示信號能順利通過,反之若信號的最高頻率大于截止頻率,則不能通過。
編程時(shí)考慮到應(yīng)用模塊化的設(shè)計(jì)思想,對各個(gè)模塊分別進(jìn)行編譯仿真調(diào)試,保正每個(gè)部分的功能實(shí)現(xiàn)后再進(jìn)行綜合,這樣有利于實(shí)現(xiàn)程序的最優(yōu)化設(shè)計(jì),如果有哪一部分出了問題可以單獨(dú)進(jìn)行修改仿真調(diào)試,避免了大規(guī)模設(shè)計(jì)中從頭開始查找的繁瑣問題。
4.2 各模塊實(shí)現(xiàn)
4.2.1 控制模塊實(shí)現(xiàn)
控制器是抽取濾波器的核心模塊,有兩個(gè)功能:一是接收輸入數(shù)據(jù),二是向其它模塊發(fā)送數(shù)據(jù)和控制信號。它根據(jù)加法器、乘法器和累加器的時(shí)序特性,有規(guī)律地向加法器發(fā)送抽頭數(shù)據(jù),向乘法器發(fā)送系數(shù),向累加器發(fā)送控制信號,讓加法器、乘法器和累加器在每個(gè)時(shí)鐘周期都完成指定的任務(wù),從而實(shí)現(xiàn)流水線操作。控制器的功能用VHDL 語言描述,用寄存器存放抽頭和系數(shù)。
4.2.2 數(shù)據(jù)移位模塊的實(shí)現(xiàn)
數(shù)據(jù)移位模塊的符號圖如圖6 所示,其中:DATAIN[7..0]是來自A/D 轉(zhuǎn)換器的數(shù)據(jù);OUT0[7..0]~OUT15[7..0]是16 個(gè)輸出數(shù)據(jù),送往加法器;SCLK 是時(shí)鐘信號,接控制器的ENSHIFT 端。數(shù)據(jù)移位寄存器中共有16 個(gè)觸發(fā)器,每來一個(gè)脈沖,數(shù)據(jù)依次往后移。
4.2.3 加法模塊實(shí)現(xiàn)本論文所設(shè)計(jì)的濾波器是具有線性相位的FIR 濾波器,滿足偶對稱條件:h(n)=h(n-N-1)。
利用加法模塊來減少乘法運(yùn)算的計(jì)算量,提高運(yùn)行速度、簡化設(shè)計(jì)。加法模塊的符號圖如圖8 所示,其中:ADDIN0[7..0]~ADDIN15[7..0]是輸入數(shù)據(jù),來自數(shù)據(jù)移位模塊;ADDO0~ADDO7 是輸出數(shù)據(jù),送往乘法累加單元。
4.2.4 數(shù)據(jù)選擇模塊實(shí)現(xiàn)
根據(jù)計(jì)數(shù)器發(fā)送的的地址選擇信號,依次輸出D0~D7 八個(gè)數(shù)據(jù),送往乘法累加單元,與ROM 中的特征參數(shù)對應(yīng)進(jìn)行乘法累加。
4.2.5 計(jì)數(shù)模塊實(shí)現(xiàn)
計(jì)數(shù)模塊按照控制器所產(chǎn)生的COM_CLK(于計(jì)數(shù)器的CLK 相連)信號,向數(shù)據(jù)選擇模塊和ROM 單元發(fā)送地址信號,取出數(shù)據(jù)于參數(shù),送往乘法累加單元進(jìn)行乘法累加。其中:CLK 是時(shí)鐘信號,CLR 清零信號,Q[2..0]輸出地址信號。
4.2.6 乘法累加模塊實(shí)現(xiàn)
乘法累加單元接受來自數(shù)據(jù)選擇單元的數(shù)據(jù)和ROM 單元內(nèi)的特征參數(shù),完成乘法累加的運(yùn)算,并最總輸出結(jié)果,送往D/A 轉(zhuǎn)換器。
其中:SEL[2..0]是地址選擇信號,按時(shí)序選擇ROM 中的特征參數(shù),TAP_OUT[7..0]是來自數(shù)據(jù)選擇單元的數(shù)據(jù),/COM_CLK 是時(shí)鐘信號,/ENCOM 清零信號 ,DA_WE 是輸出數(shù)據(jù)的控制信號。
5 編譯,仿真,調(diào)試結(jié)果
5.1 編譯、仿真
將各部分的原理圖(或程序)分別畫出(或輸入),對各部分分別進(jìn)行編譯仿真,生成*.sym 符號圖后,再進(jìn)行綜合,畫出頂層文件原理圖,再進(jìn)行編譯,確保正確后再進(jìn)行波形的仿真。由于器件的綜合會有一定時(shí)間的時(shí)延,所以也可以分析各部分的時(shí)延。
在仿真通過后就可進(jìn)行編程/下載到目標(biāo)器件中。首先進(jìn)行管腳鎖定(本次設(shè)計(jì)使用的目標(biāo)器件為FLEX10K10LC84-4,鎖定情況如表一所示),完成管腳鎖定后,重新編譯使之生效,此時(shí)回到原來的設(shè)計(jì)文件“*.gdf”上的輸入輸出信號旁都標(biāo)有其對應(yīng)的管腳號。重新編譯好后,在重新進(jìn)行時(shí)序仿真,若正確,可進(jìn)行下一步,器件編程/配置.在通過項(xiàng)目編譯后可生成文件*.sof 用于下載.FLEX系列有些類似FPGA,其邏輯塊LE 及內(nèi)部互連信息都是通過芯片內(nèi)部的存儲器單元陣列完成的,這些存儲單元陣列可由配置程序裝入, 存儲單元陣列采用SRAM 方式,對這類器件的下載稱為配置。因?yàn)镕LEX 系列的配置信息采用SRAM 方式保存,所以掉電后FLEX 系列的配置信息會丟失,需每次系統(tǒng)上電后重新配置。
5.2 調(diào)試
在調(diào)試的過程中,出現(xiàn)了不少問題,例如:由于忽略了A/D 轉(zhuǎn)換器TLC549 是串行輸出這一點(diǎn),而設(shè)計(jì)的控制器的輸入數(shù)據(jù)是并行的,造成了不匹配;進(jìn)行管腳鎖定時(shí),輸出數(shù)據(jù)的高位和低位鎖反;在設(shè)計(jì)控制模塊時(shí),有不少情況起初沒有考慮到或是和預(yù)想的不一致等。但經(jīng)過認(rèn)真的分析,排除疑點(diǎn),調(diào)試出了預(yù)期的結(jié)果。
6 結(jié)論
假設(shè)在輸入端通過高頻信號發(fā)生器輸入一個(gè)模擬正弦信號,如果信號的最高頻率小于濾波器的截止頻率f s =2KHz,則示波器上顯示信號能順利通過;反之信號的最高頻率如果大于截止頻率,則信號不能通過。
具體說明如下:
(1) 在 RESET 信號的控制下,實(shí)現(xiàn)低電平復(fù)位,即所有的輸出均置為零。
。2) 在時(shí)鐘信號CLK 的控制下,在內(nèi)部產(chǎn)生一個(gè)新的時(shí)鐘信號CLK-1us,隨著計(jì)數(shù)功能的啟動,在不同的時(shí)間段將啟動不同的模塊工作,以實(shí)現(xiàn)不同的功能。
(3) FPGA 與外部器件A/D TLC549 有3 個(gè)接口連接,由于TLC549 是串行輸出數(shù)據(jù),因此DATA-IN 只賦一位變量,AD_ rd 負(fù)責(zé)將經(jīng)TLC549 處理過的數(shù)字信號輸入FPGA,以便數(shù)字濾波器對其進(jìn)行處理。
。4) FPGA 與D/A 的接口是8 位,因此分派了DATA OUT[7..0]的輸出口,在經(jīng)D/A轉(zhuǎn)換后,以便在模擬示波器上顯示。
但是我們最終得到的波形,并沒有像輸入波形過渡那么平滑。
引起這種現(xiàn)象的原因可能是參數(shù)設(shè)置的不夠精確、各器件之間存在干擾、采樣的點(diǎn)數(shù)不夠密等。在這里還需要指出的一點(diǎn)是:當(dāng)我們把高頻信號發(fā)生器產(chǎn)生的正弦波信號加到EDA 實(shí)驗(yàn)箱上時(shí),波形發(fā)生了失真,頂部的圓弧過度變窄,底部的圓弧過度變寬,底部的失真情況比頂部明顯的多。
【基于fpga 的f.i.r 濾波器設(shè)計(jì)探討】相關(guān)文章:
并聯(lián)有源電力濾波器交流側(cè)濾波電感的優(yōu)化設(shè)計(jì)05-29
探討基于多種通信方式并存的配網(wǎng)自動化通信系統(tǒng)06-01
基于CS管理的房地產(chǎn)企業(yè)開發(fā)設(shè)計(jì)06-04
基于web的異地并行設(shè)計(jì)與制造系統(tǒng)研究06-02
基于勝任力的企業(yè)個(gè)體績效管理流程設(shè)計(jì)06-03
基于PLC的斷路器型式試驗(yàn)系統(tǒng)設(shè)計(jì)03-10
實(shí)訓(xùn)形式的設(shè)計(jì)與探討教育論文05-16
會計(jì)審計(jì)論文:基于完善公司治理環(huán)境下的內(nèi)部審計(jì)探討06-19
基于電話網(wǎng)絡(luò)的熱網(wǎng)遠(yuǎn)程控制系統(tǒng)設(shè)計(jì)05-11