基于DSP6713實(shí)現(xiàn)的IIR格型自適應(yīng)濾波器
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:區(qū)別于普通的FIR,IIR濾波器,為了使濾波器能夠按照某種準(zhǔn)則自動(dòng)且較快地達(dá)到最佳濾波效果,采用了LMS自適應(yīng)算法和格型濾波結(jié)構(gòu)相結(jié)合的方法。它利用DSP技術(shù)在TMS320C6713開發(fā)板上構(gòu)建了驗(yàn)證該音頻信號(hào)處理算法的硬件平臺(tái),并在集成開發(fā)環(huán)境CCS通過DSP的軟件編程完成其工程實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果表明,該濾波器計(jì)算復(fù)雜度低,實(shí)現(xiàn)速度快,具有良好的實(shí)時(shí)性和濾波效果。
關(guān)鍵詞:TMS320C6713;IIR;自適應(yīng)格型濾波器;LMS算法;CCS
0 引言
在數(shù)字信號(hào)處理中,常規(guī)濾波器或固定濾波器如FIR,IIR濾波器的特性被固定,即作用于輸入信號(hào),則產(chǎn)生相應(yīng)的輸出,但是,在實(shí)際應(yīng)用中對(duì)濾波器的輸出要求往往是明確的,如果濾波器的權(quán)系數(shù)等特性無法預(yù)先知道就會(huì)限制對(duì)需要處理的數(shù)字信號(hào)實(shí)現(xiàn)最優(yōu)濾波。自適應(yīng)濾波技術(shù)是現(xiàn)代數(shù)字信號(hào)處理領(lǐng)域中的一個(gè)重要方面,其特點(diǎn)是不需要知道所處理信號(hào)的統(tǒng)計(jì)特性,而且能夠自動(dòng)適應(yīng)環(huán)境的變化,使得處理結(jié)果達(dá)到最優(yōu)。由于自適應(yīng)濾波大多用在實(shí)時(shí)處理的情況,所以其實(shí)時(shí)實(shí)現(xiàn)問題是自適應(yīng)濾波器的一項(xiàng)重要指標(biāo)。在諸多的自適應(yīng)算法中,最小均方算法(LMS)由于其設(shè)計(jì)和實(shí)現(xiàn)都較為簡(jiǎn)單被廣泛采用。
TMS320C6713是TI公司開發(fā)的一款新型浮點(diǎn)DSP芯片,它基于超長(zhǎng)指令字結(jié)構(gòu)(VLIW),非常適合于做高強(qiáng)度的數(shù)學(xué)運(yùn)算,被認(rèn)為是TI公司運(yùn)算能力最強(qiáng)的處理器之一。本文使用合眾達(dá)公司開發(fā)的一款基于TMS320C6713芯片的開發(fā)板構(gòu)建了音頻信號(hào)處理系統(tǒng),對(duì)音頻信號(hào)的IIR格型自適應(yīng)濾波處理算法進(jìn)行硬件驗(yàn)證。
1 硬件系統(tǒng)設(shè)計(jì)
開發(fā)板系統(tǒng)總體方案框圖如圖1所示。模擬音頻信號(hào)首先通過高性能前置運(yùn)算NE5532進(jìn)行預(yù)放,然后進(jìn)入音頻ADC進(jìn)行A/D轉(zhuǎn)換得到串行輸出的數(shù)字音頻信號(hào),本文使用CIRRUS公司最新專業(yè)級(jí)音頻芯片CS4272,該芯片使用了一個(gè)差分模擬結(jié)構(gòu),采樣率高達(dá)192 kHz,實(shí)際信噪比超過90 dB。接著數(shù)字音頻信號(hào)經(jīng)過FPGA通過DSP的McBSP口進(jìn)入DSP芯片TMS320C6713。進(jìn)入DSP的數(shù)據(jù)存放在DSP的內(nèi)部存儲(chǔ)區(qū)以利于處理器進(jìn)行高速運(yùn)算,經(jīng)過DSP處理后的數(shù)據(jù)同樣通過DSP的McBSP口輸出到FPGA,然后通過DAC輸出到前置運(yùn)算NE5532進(jìn)行放大后輸出。電路中同時(shí)還接了一個(gè)單片機(jī)芯片STC89LE52,它用于控制LED、按鍵、A/D、D/A轉(zhuǎn)換器以及與FPGA進(jìn)行數(shù)據(jù)通信。
2 CCS和CSL簡(jiǎn)介
CCS(Code Composer Studio)是TI公司推出的用于開發(fā)DSP芯片的集成開發(fā)環(huán)境,它采用熟悉的Windows風(fēng)格界面,提供了基本的代碼生成工具,具有編輯、編譯、鏈接、軟件仿真、硬件調(diào)試以及實(shí)時(shí)跟蹤等功能,支持*.a(chǎn)sm,*.c,*.h,*.cmd等多種格式并最終生成*.out等可供下載至硬件電路運(yùn)行的二進(jìn)制格式文件,它還提供了多種C/C++代碼優(yōu)化功能和一些實(shí)時(shí)分析及編程方案。此外,CCS的調(diào)試和仿真具有很強(qiáng)的功能:允許中斷點(diǎn)、剖析點(diǎn)及探測(cè)點(diǎn)三種斷點(diǎn)設(shè)置,分別實(shí)現(xiàn)程序斷點(diǎn)、實(shí)時(shí)分析和數(shù)據(jù)導(dǎo)入等功能。CCS為DSP芯片的開發(fā)與設(shè)計(jì)提供了極大的便利,是目前使用最為廣泛的DSP開發(fā)環(huán)境之一,其版本已發(fā)展至4.1甚至更高。
在DSP應(yīng)用系統(tǒng)中,不可避免地會(huì)涉及到大量對(duì)DSP器件外設(shè)特別是片上外設(shè)的編程處理工作,這將消耗開發(fā)工程師在開發(fā)初期大量的精力。在TI公司的CCS開發(fā)環(huán)境中,提供了DSP片級(jí)支持庫CSL作為一個(gè)組件,多數(shù)CSL模塊都由對(duì)應(yīng)函數(shù)、宏、類和表示符號(hào)組成,利用這些模塊可以非常方便地完成對(duì)DSP片上外設(shè)的配置和控制的編程工作,從而簡(jiǎn)化了DSP片上外設(shè)的開發(fā)工作,縮短了用戶程序的開發(fā)周期,并且可以達(dá)到標(biāo)準(zhǔn)化控制管理片上外設(shè)的能力,減少DSP硬件特殊性對(duì)用戶程序代碼的影響,以方便對(duì)用戶代碼在不同器件間的移植工作。
3 自適應(yīng)IIR格型濾波器及算法
3.1 自適應(yīng)IIR格型濾波器
自適應(yīng)濾波器就是其權(quán)系數(shù)可以根據(jù)某種自適應(yīng)算法來不斷修改,使系統(tǒng)的沖激響應(yīng)滿足給定的性能判斷。它的設(shè)計(jì)包括結(jié)構(gòu)設(shè)計(jì)和自適應(yīng)算法的選取、最佳參數(shù)的確定,以及有效字長(zhǎng)效應(yīng)影響的最小化等。自適應(yīng)濾波器的原理圖如圖2所示。它主要由兩部分組成:系數(shù)可調(diào)的數(shù)字濾波器和用來調(diào)節(jié)或修正濾波器系數(shù)的自適應(yīng)算法。
圖中濾波器的結(jié)構(gòu)可以是IIR型結(jié)構(gòu),也可以是FIR型結(jié)構(gòu)。盡管IIR結(jié)構(gòu)的濾波器性能不夠穩(wěn)定,但在實(shí)際應(yīng)用中它能夠以很小的復(fù)雜度實(shí)現(xiàn)和FIR濾波器相同的功能,且可以利用模擬濾波器設(shè)計(jì)的結(jié)果,所以在對(duì)穩(wěn)定性要求不高的情況下這是一個(gè)理想的選擇。本文所采用的是IIR格型自適應(yīng)濾波器,格型結(jié)構(gòu)的優(yōu)點(diǎn)是按階遞歸,增加或者減少級(jí)數(shù)不會(huì)影響已經(jīng)存在的階數(shù)設(shè)計(jì)。
格型IIR濾波器的結(jié)構(gòu)框圖如圖3所示。它由兩個(gè)格型濾波器級(jí)聯(lián)而成,上方的格型濾波器H1(z)的輸入為Input,輸出設(shè)為s0(n);下方的格型濾波器H2(z)的輸入為s0(n),輸出為Output。
采用TI公司開發(fā)的C67xDSPLIB庫函數(shù)DSPF_sp_iirlat。DSPF_sp_iirlat是單精度IIR格型濾波算法。其C語言形式為:
3.2 自適應(yīng)濾波器算法
在前面討論了自適應(yīng)濾波器的原理和結(jié)構(gòu),接下來討論自適應(yīng)濾波器的另一個(gè)關(guān)鍵組成部分:自適應(yīng)算法。目前,大多數(shù)自適應(yīng)濾波器都采用最小均方算法(LMS),因?yàn)樗菀自O(shè)計(jì)、實(shí)現(xiàn)且性能穩(wěn)健。自適應(yīng)算法是根據(jù)某種準(zhǔn)則來設(shè)計(jì)的,目的在于設(shè)法使y(n)和d(n)盡量接近,不同的算法實(shí)質(zhì)一樣,只是接近的衡量標(biāo)準(zhǔn)不一樣。最常用的準(zhǔn)則是最小均方誤差(Mean Square Error,MSE)準(zhǔn)則,即期望信號(hào)d(n)與濾波器輸出y(n)之差e(n)的平方值最小,并根據(jù)這個(gè)準(zhǔn)則來不斷調(diào)整自適應(yīng)算法。采用TI公司開發(fā)的C67xDSPLIB庫函數(shù)DSPF_sp_lms。DSPF_ sp_lms為單精度浮點(diǎn)LMS算法,實(shí)現(xiàn)LMS自適應(yīng)算法。其C語言形式為:
4 自適應(yīng)IIR格型濾波算法的DSP實(shí)現(xiàn)
由于自適應(yīng)濾波器需要兩個(gè)輸入端,一個(gè)為主信號(hào)輸入端,另一個(gè)為參考信號(hào)輸入端。因此,如何在軟件和硬件上設(shè)計(jì)和實(shí)現(xiàn)兩個(gè)信號(hào)通路的建立問題是自適應(yīng)濾波器的關(guān)鍵之一。為了解決雙通道自適應(yīng)濾波器的信號(hào)輸入通道問題,可以采用開發(fā)板上的CS4272編解碼器的立體聲輸入功能,利用立體聲編解碼器的左、右兩路音頻輸入作為主信號(hào)輸入和參考信號(hào)輸入。然后將兩個(gè)通道的信號(hào)送往DSP進(jìn)行自適應(yīng)IIR格型濾波處理,將處理后的信號(hào)通過McBSP0傳送到CS4272編解碼器,CS4272編解碼器的D/A轉(zhuǎn)換電路再將數(shù)字信號(hào)轉(zhuǎn)換為模擬音頻。整個(gè)自適應(yīng)濾波的過程如圖4所示。
本文中自適應(yīng)濾波器的參考輸入通道采用的是目標(biāo)板上的立體聲輸入接口的左通道,主信號(hào)通道采用立體聲接口的右通道,操作完成后進(jìn)行交替,采用Ping-Pong數(shù)據(jù)緩沖結(jié)構(gòu),Ping-Pong緩沖存儲(chǔ)區(qū)分配采用下面的C語言形式:
程序使用CCS開發(fā)環(huán)境進(jìn)行編譯、鏈接生成可執(zhí)行公共目標(biāo)文件(COFF),然后加載運(yùn)行。濾波器的權(quán)系數(shù)設(shè)定為512階,自適應(yīng)步長(zhǎng)為5×10-5,輸入信號(hào)為某組給定的音頻信號(hào),通過CCS開發(fā)環(huán)境的圖形分析工具得到測(cè)試結(jié)果如圖5所示??梢钥吹?,濾波前后的頻譜圖非常相似,結(jié)果表明該濾波器具有很好的濾波效果。
最后通過SEED-XDSusb 2.O仿真器下載到開發(fā)板上運(yùn)行并播放音樂進(jìn)行實(shí)時(shí)測(cè)試,實(shí)驗(yàn)結(jié)果符合預(yù)期效果,有很好的實(shí)用價(jià)值。
5 結(jié)語
本文設(shè)計(jì)的重點(diǎn)和難點(diǎn)是掌握和應(yīng)用DSP來實(shí)現(xiàn)音頻信號(hào)的采集、輸出的硬件平臺(tái)的構(gòu)建,研究了IIR格型自適應(yīng)濾波處理算法的DSP實(shí)現(xiàn)問題,最終通過DSP軟件編程完成了目標(biāo)算法的工程實(shí)現(xiàn)。本文提出的基于這種特殊結(jié)構(gòu)的自適應(yīng)濾波器,由于實(shí)時(shí)性強(qiáng)和濾波效果明顯,將越來越廣泛地被應(yīng)用于各種工程中。