0 引言
數(shù)字濾波器是一種用來(lái)過(guò)濾時(shí)間離散信號(hào)的數(shù)字系統(tǒng),通過(guò)對(duì)抽樣數(shù)據(jù)進(jìn)行數(shù)學(xué)處理來(lái)達(dá)到頻域。濾波的目的。根據(jù)其單位沖激響應(yīng)函數(shù)的時(shí)域特性可分為兩類:無(wú)限沖激響應(yīng)(IIR)濾波器和有限沖激響應(yīng)(FIR)濾波器。與IIR濾波器相比,F(xiàn)IR濾波器只有零點(diǎn),除原點(diǎn)外.在z平面上沒(méi)有極點(diǎn),因此總是穩(wěn)定的和可實(shí)現(xiàn)的;更重要的是,F(xiàn)IR濾波器在滿足一定的對(duì)稱條件下,可以獲得嚴(yán)格的線性相位特性,這一點(diǎn)是IIR濾波器難以實(shí)現(xiàn)的。因此。它在高保真的信號(hào)處理.如數(shù)字音頻、圖像處理、數(shù)據(jù)傳輸、生物醫(yī)學(xué)等領(lǐng)域得到廣泛應(yīng)用。
1 FIR濾波器基本結(jié)構(gòu)
FIR濾波器的數(shù)學(xué)表達(dá)式為:
式中:N為FIR濾波器的抽頭數(shù);x(n)為第n時(shí)刻的輸入樣本;h(i)為FIR濾波器第i級(jí)抽頭系數(shù)。
其相應(yīng)的z變換為:
式中:z-i為N-1階多項(xiàng)式。
普通的直接型FIR濾波器結(jié)構(gòu)如圖1所示。
在自適應(yīng)處理、數(shù)據(jù)通信等領(lǐng)域中往往要求信號(hào)在傳輸過(guò)程中不能有明顯的相位失真,F(xiàn)IR濾波器可以做到線性相位滿足此要求。F1R濾波器實(shí)質(zhì)上是一個(gè)分節(jié)的延遲線,把每一節(jié)的輸出加權(quán)累加,得到濾波器的輸出。對(duì)于FIR濾波器的單位脈沖響應(yīng)h(i)只要滿足以下2個(gè)條件之一,則為線性相位濾波器。
線性相位的FIR濾波器具有中心對(duì)稱的特性,其對(duì)稱中心在N/2處。
(2)由性能指標(biāo)確定窗函數(shù)w(n)和窗口長(zhǎng)度N
(3)求得實(shí)際濾波器的單位脈沖響應(yīng)h(n)
(4)檢驗(yàn)濾波器性能。
設(shè)計(jì)常用的窗函數(shù)有矩形窗、漢寧窗、海明窗、凱撒窗等。其中:海明窗的旁瓣峰值小于主瓣峰值的1%,99.963%的能量集中在主瓣內(nèi).且通過(guò)海明窗設(shè)計(jì)的FIR濾波器在較少的階數(shù)下可以得到較小通帶紋波,非常適合工程設(shè)計(jì),所以本設(shè)計(jì)選擇海明窗實(shí)現(xiàn)。
3 利用QEDesign Lite設(shè)計(jì)FIR濾波器
根據(jù)窗函數(shù)設(shè)計(jì)的FIR濾波器的單位脈沖響應(yīng).h(n)有多種輔助工具進(jìn)行求取,如:MATLAB的FDATool、SPTool和NI的Digital Fliter Design Toolkit等,在此.我們使用了FreeScaleDSP開(kāi)發(fā)環(huán)境Codewarrior8.O自帶的QEDesignlite濾波器設(shè)計(jì)工具箱進(jìn)行FIR濾波器單位脈沖響應(yīng)h(n)的求解。
利用QE Design lite濾波器設(shè)計(jì)工具箱,可快速進(jìn)行IIR濾波器、基于窗函數(shù)FIR濾波器和等紋波FIR濾波器的低通、高通、帶通和帶阻設(shè)計(jì)。并根據(jù)設(shè)計(jì)參數(shù),自動(dòng)生成濾波器的幅頻響應(yīng)、相頻響應(yīng)、群延時(shí)、沖擊響應(yīng)和單位階躍響應(yīng),以及生成單位脈沖響應(yīng)h(n)的*.h文件和該FIR濾波器使用示例C文件,以方便后續(xù)設(shè)計(jì)。其主要設(shè)計(jì)步驟如下:
(1)運(yùn)行程序QEDesign lite,選擇菜單項(xiàng)“DesignI FIRWindows Design……”:
(2)在彈出的“FIR(Windows)Design”窗體中,選擇“lowpass”選項(xiàng);
(3)在“Lowpass Filter”窗體中,輸入FIR濾波器的設(shè)計(jì)指標(biāo):采樣頻率=20000 Hz、通帶頻率=5000 Hz、阻帶頻率=6000 Hz、通帶紋波=O.01 dB和阻帶紋波=40 dB.如圖2所示;
(4)確定采用的窗函數(shù)類型及階數(shù)(本例采用hamming窗.階數(shù)為27階);
(5)根據(jù)設(shè)定的FIR濾波器參數(shù),即可得到該FIR濾波器的幅頻響應(yīng)圖、對(duì)數(shù)幅頻響應(yīng)圖、相頻響應(yīng)圖、群延時(shí)圖、沖擊響應(yīng)圖和單位階躍響應(yīng)圖,可直觀的觀察設(shè)計(jì)是否滿足要求.如果不滿足設(shè)計(jì)要求,可重復(fù)步驟3)、4),直至滿足設(shè)計(jì)要求為止。本FIR濾波器的幅頻響應(yīng)圖、對(duì)數(shù)幅頻響應(yīng)圖見(jiàn)圖3、圖4;
(6)設(shè)計(jì)的FIR濾波器滿足要求后,選擇菜單項(xiàng)“Code-Gen|FreeScale|DPS56800/DPS56800E”,導(dǎo)出基于16位定點(diǎn)數(shù)的單位脈沖響應(yīng)h(n)的*.h文件,用于后續(xù)的工程設(shè)計(jì)。
4 基于56F8013 DSP的設(shè)計(jì)實(shí)現(xiàn)
56F8013是FreeScale推出的基于56F800E內(nèi)核的低價(jià)位、低功耗的16位DSP,它具有I2C、SPI、UART、ADC、QEI等外部接口,具有在片硬件調(diào)試接口,可進(jìn)行32位整數(shù)、36位整數(shù)加分?jǐn)?shù)運(yùn)算,配合CodeWarrior開(kāi)發(fā)環(huán)境非常適合于嵌入式開(kāi)發(fā)。
Processor Expert(PE)是由捷克UNIS公司開(kāi)發(fā)的針對(duì)FreeScale單片機(jī)和DSP的嵌入式軟件開(kāi)發(fā)包.它集成在CodeWarrior開(kāi)發(fā)環(huán)境中。Processor Expert提供了連接、生成嵌入式系統(tǒng)的硬件、接口和算法的驅(qū)動(dòng),對(duì)CPU核、芯片集成接口、虛擬設(shè)備和純算法進(jìn)行了封裝(該封裝被稱為“Embedded Beans”),并把這些功能變成屬性、方法和事件,這與面向?qū)ο蟮某绦蛟O(shè)計(jì)方法是一樣的。用戶在進(jìn)行程序設(shè)計(jì)時(shí),通過(guò)調(diào)用Processor Expert提供的各種Bean,可以方便的對(duì)DSP內(nèi)核、外部中斷、DSP的片上外設(shè)及程序所需的各種通用算法進(jìn)行設(shè)置.使用戶只需關(guān)注整個(gè)設(shè)計(jì)的創(chuàng)造性部分,而不是花費(fèi)大量時(shí)間讓芯片正常工作,大大提高了生產(chǎn)率。本文的FIR濾波器的實(shí)現(xiàn),就是基于Processor Expert的“DSP_Func_DFR”Bean和“DSP_MEM”Bean的?,F(xiàn)將具體的設(shè)計(jì)過(guò)程描述如下:
進(jìn)入CodeWarrior開(kāi)發(fā)環(huán)境,選中菜單項(xiàng)“Processor Expertl| View| Bean Selector”,在彈出的“Bean Selector”窗口中,選中負(fù)責(zé)內(nèi)存管理的“DSP_MEM”Bean和負(fù)責(zé)數(shù)字信號(hào)處理的“DSP_Func_DFR”Beafl加入工程文件,將“DSP_Func_DFR”Bean中的“dfrl6FIRCreate”、“dfrl6FIR”和“dfrl6FIRDestroy”方法加入主程序。修改主程序如下:
5 結(jié)束語(yǔ)
本文介紹了基于CodeWarrior8.0軟件自帶的開(kāi)發(fā)工具包QEDesign Lite和ProcessorExpert,快速進(jìn)行FIR濾波器窗函數(shù)設(shè)計(jì)的方法。通過(guò)軟件工具包的綜合運(yùn)用.大大縮減了設(shè)計(jì)研發(fā)的時(shí)間。在實(shí)際應(yīng)用中,可以通過(guò)對(duì)濾波器參數(shù)的修改.很容易地實(shí)現(xiàn)其他各種濾波器的設(shè)計(jì),具有一定的工程設(shè)計(jì)參考價(jià)值。