dsp課程設(shè)計(jì)-自適應(yīng)濾波器_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  《數(shù)字信號(hào)處理》課程設(shè)計(jì)</p><p>  _ 自適應(yīng)濾波器設(shè)計(jì)與實(shí)現(xiàn) </p><p>  系 別 計(jì)算機(jī)科學(xué)系 </p><p>  專 業(yè) 通信工程 </p><p>  班 級(jí)

2、 </p><p>  學(xué) 號(hào) </p><p>  組 次 </p><p>  姓 名 </p><p>  指導(dǎo)

3、教師 </p><p>  評(píng)定成績(jī) </p><p>  起止日期 年 月 日 至 年 月 日 </p><p><b>  目錄</b></p><p><b>

4、;  摘要1</b></p><p>  第1章 課程設(shè)計(jì)的目的和要求1</p><p>  第2章 系統(tǒng)功能介紹及總體設(shè)計(jì)方案2</p><p>  第3章 主要內(nèi)容和步驟3</p><p>  3.1 自適應(yīng)濾波器原理3</p><p>  3.2 操作步驟3</p><

5、p>  第4章 詳細(xì)設(shè)計(jì)4</p><p>  第5章 實(shí)驗(yàn)過(guò)程5</p><p>  5.1 匯編語(yǔ)言實(shí)驗(yàn)步驟與內(nèi)容5</p><p>  5.2 實(shí)驗(yàn)過(guò)程中出現(xiàn)的錯(cuò)誤及解決的辦法7</p><p>  5.3 CCS程序運(yùn)行后的各種輸出結(jié)果7</p><p>  第6章 結(jié)論與體會(huì)10</p

6、><p><b>  參考文獻(xiàn)11</b></p><p>  附件:源程序清單12</p><p><b>  摘 要:</b></p><p>  自適應(yīng)濾波器是統(tǒng)計(jì)信號(hào)處理的一個(gè)重要組成部分。在實(shí)際應(yīng)用中,由于沒(méi)有充足的信息來(lái)設(shè)計(jì)固定系數(shù)的數(shù)字濾波器,或者設(shè)計(jì)規(guī)則會(huì)在濾波器正常運(yùn)行時(shí)改變,因此

7、我們需要研究自適應(yīng)濾波器。凡是需要處理未知統(tǒng)計(jì)環(huán)境下運(yùn)算結(jié)果所產(chǎn)生的信號(hào)或需要處理非平穩(wěn)信號(hào)時(shí),自適應(yīng)濾波器可以提供一種吸引人的解決方法,而且其性能通常遠(yuǎn)優(yōu)于用常方法設(shè)計(jì)的固定濾波器。此外,自適應(yīng)濾波器還能提供非自適應(yīng)方法所不可能提供的新的信號(hào)處理能力。</p><p>  本文從自適應(yīng)濾波器研究的意義入手,介紹了自適應(yīng)濾波器的基本理論思想,具體闡述了自適應(yīng)濾波器的基本原理、算法及設(shè)計(jì)方法。自適應(yīng)濾波器的算法是整

8、個(gè)系統(tǒng)的核心。本文中,對(duì)兩種最基本的自適應(yīng)算法,即最小均方誤差(LMS)算法和遞歸最小二乘(RLS)算法進(jìn)行了詳細(xì)的介紹和分析,并針對(duì)兩種算法的優(yōu)缺點(diǎn)進(jìn)行了詳細(xì)的比較。同時(shí),分別對(duì)FIR結(jié)構(gòu)和IIR結(jié)構(gòu)自適應(yīng)濾波器做了詳細(xì)的介紹,比較了FIR結(jié)構(gòu)和IIR結(jié)構(gòu)自適應(yīng)濾波器的優(yōu)缺點(diǎn)。最終采用改進(jìn)的LMS算法設(shè)計(jì)FIR結(jié)構(gòu)自適應(yīng)濾波器,并采用MATLAB進(jìn)行仿真,最后用DSP實(shí)現(xiàn)了自適應(yīng)濾波器。實(shí)驗(yàn)結(jié)果表明,該自適應(yīng)濾波器濾波效果優(yōu)越。<

9、;/p><p>  第一章 課程設(shè)計(jì)的目的和要求</p><p><b>  1.1目的</b></p><p>  對(duì)自適應(yīng)濾波算法的研究是當(dāng)今自適應(yīng)信號(hào)處理中最為活躍的研究課題之一。Windrow等于1967年提出的自適應(yīng)濾波系統(tǒng)的參數(shù)能自動(dòng)的調(diào)整而達(dá)到最優(yōu)狀況,而且在設(shè)計(jì)時(shí),只需要很少的或根本不需要任何關(guān)于信號(hào)與噪聲的先驗(yàn)統(tǒng)計(jì)知識(shí)。自適應(yīng)濾波

10、器本身有一個(gè)重要的自適應(yīng)算法,這個(gè)算法可以根據(jù)輸入、輸出及原參量信號(hào)按照一定準(zhǔn)則修改濾波參量,以使它本身能有效的跟蹤外部環(huán)境的變化。因此,自適應(yīng)數(shù)字系統(tǒng)具有很強(qiáng)的自學(xué)習(xí)、自跟蹤能力和算法的簡(jiǎn)單易實(shí)現(xiàn)性。自適應(yīng)濾波技術(shù)的核心問(wèn)題是自適應(yīng)算法的性能問(wèn)題,提出的自適應(yīng)算法主要有最小均方(LMS)算法、遞歸最小二乘(RLS)算法及相應(yīng)的改進(jìn)算法如:歸一化(NLMS)算法、變步長(zhǎng)(SVSLMS)算法、遞歸最小二乘方格形(RLSL)算法等。這些算法

11、各有特點(diǎn),適用于不同的場(chǎng)合。比如用于系統(tǒng)辨識(shí)、回波消除、自適應(yīng)譜線增強(qiáng)、自適應(yīng)信道均衡、語(yǔ)音線性預(yù)測(cè)、自適應(yīng)天線陣等諸多領(lǐng)域。</p><p>  自適應(yīng)濾波,對(duì)發(fā)展通信業(yè)務(wù)有著不可或缺的作用。所以是我們通信專業(yè)學(xué)習(xí)的重點(diǎn)。也是鞏固《數(shù)字信號(hào)處理》知識(shí)的一個(gè)重要的實(shí)驗(yàn)。</p><p><b>  1.2要求</b></p><p>  本文設(shè)

12、計(jì)自適應(yīng)濾波要求使用DSP實(shí)現(xiàn)自適應(yīng)濾波器,要求掌握自適應(yīng)濾波器的原理和實(shí)現(xiàn)方法。因?yàn)樽赃m應(yīng)濾波器的設(shè)計(jì)用到了自適應(yīng)算法和FIR濾波算法。而自適應(yīng)濾波算法有LMS算法和RLS算法,本文只用LMS算法。LMS算法是通過(guò)對(duì)未知系統(tǒng)傳遞函數(shù)的建模,識(shí)別該未知系統(tǒng),并對(duì)該系統(tǒng)進(jìn)行噪聲濾波。</p><p>  自適應(yīng)濾波器,其權(quán)系數(shù)可以根據(jù)自適應(yīng)算法來(lái)不斷修改,使得系統(tǒng)中的沖激響應(yīng)滿足給定的性能。例如語(yǔ)音信號(hào)的ADPCM

13、編碼,采用線性預(yù)測(cè)自適應(yīng)就可以實(shí)現(xiàn)誤差信號(hào)與輸入信號(hào)的線性無(wú)關(guān),并由此作為依據(jù),不斷調(diào)節(jié)濾波器的權(quán)系數(shù),最終使得誤差信號(hào)趨近于0,使得該濾波器完全適應(yīng)該輸入信號(hào);同樣,只要輸入信號(hào)出現(xiàn)變換,自適應(yīng)濾波器根據(jù)誤差信號(hào)的變化再次調(diào)整其權(quán)系數(shù),從而跟上信號(hào)的變化。自適應(yīng)濾波器設(shè)計(jì)的算法采用的是自適應(yīng)算法,即LMS算法。LMS算法是通過(guò)對(duì)未知系統(tǒng)傳遞函數(shù)的建模,識(shí)別該未知系統(tǒng),并對(duì)該系統(tǒng)進(jìn)行噪聲濾波。</p><p> 

14、 自適應(yīng)濾波器功能介紹及總體設(shè)計(jì)方案</p><p><b>  2.1功能:</b></p><p>  自適應(yīng)濾波器可以利用前一時(shí)刻以獲得的濾波器參數(shù)的結(jié)果,自動(dòng)的調(diào)節(jié)現(xiàn)時(shí)刻的濾波器參數(shù),以適應(yīng)信號(hào)和噪聲未知的或隨時(shí)間變化的統(tǒng)計(jì)特性,從而實(shí)現(xiàn)最優(yōu)濾波。</p><p>  2.2總體設(shè)計(jì)方案:</p><p>  自

15、適應(yīng)濾波器主要由兩部分組成:系數(shù)可調(diào)的數(shù)字濾波器和用來(lái)調(diào)節(jié)或修正濾波器系數(shù)的自適應(yīng)算法。如下圖所示:</p><p>  自適應(yīng)濾波器的一般形式如圖1所示I5],圖中 輸入信號(hào) X(N)加權(quán)到數(shù)字濾波器產(chǎn)生輸出信號(hào)Y (N),自適應(yīng)算法調(diào)節(jié)濾波器權(quán)系數(shù)使輸出Y(N)和濾波器期望的響應(yīng) F(n)之間的誤差信號(hào)E(N)為最小。自適應(yīng)濾波器的系數(shù)受誤差信號(hào)的控制,根據(jù)E(N)的值 和自適應(yīng)算法自動(dòng)調(diào)整。一旦輸入信號(hào)的統(tǒng)

16、計(jì)規(guī)律發(fā) 生了變化,濾波器能夠自動(dòng)跟蹤輸入信號(hào)的變化,自動(dòng)調(diào)整濾波器的權(quán)系數(shù),實(shí)現(xiàn)自適應(yīng)過(guò)程,最終達(dá)到濾波效果。</p><p><b>  主要內(nèi)容和步驟</b></p><p>  3.1自適應(yīng)濾波原理</p><p>  自適應(yīng)濾波器主要由兩部分組成:系數(shù)可調(diào)的數(shù)字濾波器和用來(lái)調(diào)節(jié)或修正濾波器系數(shù)的自適應(yīng)算法。</p>&l

17、t;p>  下圖為自適應(yīng)濾波器原理框圖:</p><p>  圖中,自適應(yīng)濾波器有兩個(gè)輸入端:一個(gè)輸入端的信號(hào)Z(n)含有所要提取的信號(hào)s(n),被淹沒(méi)在噪聲 d(n)中,s(n).d(n)兩者不相關(guān),z(n)=s(n)+d(n)。另一輸入端信號(hào)為x(n),它是z(n)的一種度量,并以某種方式與噪聲d(n)有關(guān)。x(n)被數(shù)字濾波器所處理得到噪聲d(n)的估計(jì)值y(n),這樣就可以從z(n)中減去y(n),

18、得到所要提取的信號(hào)s(n)的估計(jì)值e(n),表示為:e(n)=z(n)-y(n)=s(n)+d(n)-y(n)。</p><p>  顯然,自適應(yīng)濾波器就是一個(gè)噪聲抵消器。如果得到對(duì)淹沒(méi)信號(hào)的噪聲的最佳估計(jì),就能得到所要提取的信號(hào)的最佳估計(jì)。為了得到噪聲的最佳估計(jì)y(n),可以經(jīng)過(guò)適當(dāng)?shù)淖赃m應(yīng)算法,例如用LMS(最小均方)算法來(lái)反饋調(diào)整數(shù)字濾波器的系數(shù),使得e(n)中的噪聲最小。e(n)有兩種作用:一是得到信號(hào)s

19、(n)的最佳估計(jì);二是用于調(diào)整濾波器系數(shù)的誤差信號(hào)。</p><p>  自適應(yīng)濾波器中,數(shù)字濾波器的濾波系數(shù)是可調(diào)的,多數(shù)采用FIR型數(shù)字濾波器,設(shè)其單位脈沖響應(yīng)為h(0), h(1), …,h(N-1),你們它在時(shí)刻n的輸出便可寫(xiě)成如下的卷積形式</p><p>  y(n)= ∑h(k)x(n-k)</p><p>  為方便起見(jiàn),上式中的各h(k)亦被稱為權(quán)

20、值。根據(jù)要求,輸出y(n)和目標(biāo)號(hào)d(n)之間</p><p>  應(yīng)滿足最小均方誤差條件,即 </p><p>  E[e2(n)]=E{[d(n)-y(n)]2} (2-2)</p><p>  有最小值,其中e(n)表示誤差。令</p><p>  аE[e2(n)]/ аh(k

21、)=0 (2-3)</p><p>  并把式(2—2)代入,便得正交條件:E[e(n)x(n-k)]=0 , 0≤k≤N-1 (2-4)</p><p><b>  如果令</b></p><p>  h=hT(0,1,2,...,N-1),x(n)=xT(n,n

22、-1,...,n-N-1)</p><p>  那么式(2-1)便可被寫(xiě)成</p><p>  y(n)=xT(n)h=hTx(n) (2-5)</p><p>  而由式(2-4)給出的正交條件則變?yōu)椋篍{[d(n)-y(n)]x(n)}=0</p><p>

23、  把式(2-5)代入上式后,有</p><p>  E[d(n)x(n)]= E[x(n)xT(n)]h (2-6)</p><p>  如果令:r=E[d(n)x(n)],Фxx= E[x(n)xT(n)],那么最佳權(quán)向量</p><p>  h*=Фxx -1r

24、 (2-7)</p><p><b>  詳細(xì)設(shè)計(jì)過(guò)程</b></p><p>  4.1 LMS自適應(yīng)算法</p><p>  自適應(yīng)算法是根據(jù)某種判斷來(lái)設(shè)計(jì)的。通常有兩種判據(jù)條件:最小均方誤差判據(jù)和最小二乘法判據(jù)。LMS 算法是以最小均方誤差為判據(jù)的最典型的算法,也是應(yīng)用最廣泛的一種算法。最小

25、均方誤差(Least Mean Square,LMS)算法是一種易于實(shí)現(xiàn)、性能穩(wěn)健、應(yīng)用廣泛的算法。所有的濾波器系數(shù)調(diào)整算法都是設(shè)法使Y(N)接近F(N),所不同的只是對(duì)于這種接近的評(píng)價(jià)標(biāo)準(zhǔn)不同。LMS 算法的目標(biāo)是通過(guò)調(diào)整系數(shù),使輸出誤差序列的均方值最小化,并且根據(jù)這個(gè)判據(jù)來(lái)修改權(quán)系數(shù),該算法因此而得名。誤差序列的均方值又叫“均方誤差”(Mean Sqluare Error,MSE)。理想信號(hào) 與濾波器輸出之差的期望值最小,并且根據(jù)這

26、個(gè)判據(jù)來(lái)修改權(quán)系數(shù)。由此產(chǎn)生的算法稱為L(zhǎng)MS。均方誤差ε表示為:</p><p><b>  (2-3)</b></p><p>  對(duì)于橫向結(jié)構(gòu)的濾波器,代入 的表達(dá)式:</p><p><b>  (2-4)</b></p><p>  其中:為 的自相關(guān)矩陣,它是輸入信號(hào)采樣值間的相關(guān)性矩陣。

27、</p><p>  為互相關(guān)矢量,代表理想信號(hào)與輸入矢量的相關(guān)性。在均方誤差。</p><p>  達(dá)到最小時(shí),得到最佳權(quán)系數(shù): (2-5)</p><p><b>  它應(yīng)滿足下式:</b></p><p><b> ?。?-6)</b></p><p>  這是一個(gè)

28、線形方程組,如果矩陣為滿秩的,存在,可得到權(quán)系數(shù)的最佳值滿足: (2-7)</p><p>  用完整的矩陣表示為:</p><p><b> ?。?-8)</b></p><p>  顯然為的自相關(guān)值為與互相關(guān)值。在有些應(yīng)用中,把輸入信號(hào)的采樣值分成相同的一段(每段稱為

29、一幀),再求出R,P的估計(jì)值得到每幀的最佳權(quán)系數(shù)。這種方法稱為塊對(duì)塊自適應(yīng)算法。如語(yǔ)音信號(hào)的線性預(yù)測(cè)編碼LPC 就是把語(yǔ)音信號(hào)分成幀進(jìn)行處理的。R,P 的計(jì)算,要求出期望值E,在現(xiàn)實(shí)運(yùn)算中不容易實(shí)現(xiàn),為此可通過(guò)下式進(jìn)行估計(jì):</p><p><b> ?。?-9)</b></p><p><b> ?。?-10)</b></p>&

30、lt;p>  用以上方法獲得最佳W*的運(yùn)算量很大,對(duì)于一些在線或?qū)崟r(shí)應(yīng)用的場(chǎng)合,無(wú)法滿足其時(shí)間要求。大多數(shù)場(chǎng)合使用迭代算法,對(duì)每次采樣值就求出較佳權(quán)系數(shù),稱為采樣值對(duì)采樣值迭代算法。迭代算法可以避免復(fù)雜的R-1 和P 的運(yùn)算,又能實(shí)時(shí)求得近似解,因而切實(shí)可行。LMS 算法是以最快下降法為原則的迭代算法,即W(n+1)矢量是W(n)矢量按均方誤差性能平面的負(fù)斜率大小調(diào)節(jié)相應(yīng)一個(gè)增量:W(n+1)=W(n)-μ▽(n),這個(gè)“是由系統(tǒng)

31、穩(wěn)定性和迭代運(yùn)算收斂速度決定的自適應(yīng)步長(zhǎng)。▽(n)為n 次迭代的梯度。對(duì)于LMS 算法▽(n)為下式</p><p>  即E[e2(n)]的斜率:</p><p><b> ?。?-11)</b></p><p>  由上式產(chǎn)生了求解最佳權(quán)系數(shù) W*的兩種方法,一種是最陡梯度法。其思路為:設(shè)計(jì)初始權(quán)系數(shù)W(0),用W(n+1)=W(n)一μ▽

32、(n)迭代公式計(jì)算,到W(n+1)與W(n)誤差小于規(guī)定范圍。其中▽(n)計(jì)算可用估計(jì)值表達(dá)式:</p><p><b>  (2-12)</b></p><p>  上式K取值應(yīng)足夠大。如果用瞬時(shí)一2e(n)X(n)來(lái)代替上面對(duì)-2E[e(n)X(n)]的估計(jì)運(yùn)算,就產(chǎn)生了另一種算法——隨機(jī)梯度法,即Widrow-Hoft 的LMS 算法。此時(shí)迭代公式為:</

33、p><p><b>  (2-13)</b></p><p>  濾波器結(jié)構(gòu)為橫向結(jié)構(gòu)。對(duì)于對(duì)稱橫向型結(jié)構(gòu)也可推出類似的迭代公式:</p><p>  4.2 FIR 濾波器設(shè)計(jì) </p><p>  設(shè)h(n),n=0,i.2…N-l為濾波器的沖激響應(yīng),輸人信號(hào)為x(n),則FIR濾波器就是要實(shí)現(xiàn)下列差分方程:<

34、/p><p>  式中,y(n)為輸出信號(hào),即經(jīng)過(guò)濾波之后的信號(hào);N為濾波器階數(shù)。FIR濾波器的最主要特點(diǎn)是沒(méi)有反饋回路,因此是無(wú)條件穩(wěn)定系統(tǒng),其單位脈沖響應(yīng)h(n)是一個(gè)有限長(zhǎng)序列。由式(1)可見(jiàn),F(xiàn)IR濾波算法實(shí)際上是一種乘法累加運(yùn)算。不斷地輸入樣本x(n),經(jīng)延時(shí)(z-1)做乘法累加,再輸出濾波結(jié)果Y(n)對(duì)式(1)進(jìn)行z變換.整理后可得FIR濾波器的傳遞函數(shù)為:</p><p><

35、;b>  。</b></p><p>  FIR濾波器的一般結(jié)構(gòu)如圖l所示。 </p><p>  其中,X(n )=[x(n),x(n-1),…,x(n-N+1)] 為自適應(yīng)濾波器的輸入矢量;W( n)=[w0(1 ),w1 (n ), …,wn-1(n )]T 為系統(tǒng)的權(quán)系數(shù)矢量;為時(shí)間序列;N 為濾波器的階數(shù);T為矩轉(zhuǎn)置符。由

36、表達(dá)式可以看出 輸出是兩矢量的內(nèi)積。</p><p>  4.3 自適應(yīng)濾波器MATLAB實(shí)現(xiàn)</p><p>  4.3.1 FIR濾波算法 MATLAB仿真實(shí)現(xiàn)</p><p>  MATLAB信號(hào)處理工具箱提供了基于窗函數(shù)法的FIR濾波器的設(shè)計(jì)函數(shù)fir1。fir1是采用經(jīng)典窗函數(shù)法設(shè)計(jì)線性相位FIR數(shù)字濾波器,且具有標(biāo)準(zhǔn)低通、帶通、高通和帶阻等類型。<

37、/p><p><b>  語(yǔ)法格式:</b></p><p>  B=fir1(n,)</p><p>  B=fir1(n, ,’ftype’)</p><p>  B=fir1(n, ,window)</p><p>  B=fir1(n, ,’ftype’,window)</p>

38、<p>  其中,n為FIR濾波器的階數(shù),對(duì)于高通、帶阻濾波器n取偶數(shù)。為濾波器截止頻率,取值范圍為0~1。對(duì)于帶通、帶阻濾波器,=[,],且<?!痜type’為濾波器類型。缺省時(shí)為低通或帶通濾波器,為‘high’時(shí)是高通濾波器,為‘stop’時(shí)是帶阻濾波器。Window為窗函數(shù),列向量,其長(zhǎng)度為n+1;缺省時(shí),自動(dòng)取hamming窗。輸出參數(shù)B為FIR濾波器系數(shù)向量,長(zhǎng)度為n+1。</p><p&g

39、t;  4.3.2 自適應(yīng)濾波MATLAB仿真實(shí)現(xiàn)</p><p>  使用MATLAB編程,采用自適應(yīng)濾波器技術(shù)實(shí)現(xiàn)語(yǔ)音去噪過(guò)程,程序如下:</p><p>  clear all;</p><p><b>  clf;</b></p><p><b>  pi=3.14;</b></p&g

40、t;<p>  signal=sin(2*pi*0.055*[0:999]'); %產(chǎn)生輸入信號(hào)</p><p>  noise=randn(1,1000); %產(chǎn)生隨機(jī)噪聲</p><p>  nfilt=fir1(11,0.4); %產(chǎn)生11階低通濾波,截止頻率為0.4</p><p>  fnoise=filter(nfilt,1

41、,noise); %噪聲信號(hào)進(jìn)行FIR濾波</p><p>  d=signal.'+fnoise; %將噪聲疊加到信號(hào)中</p><p>  w0=nfilt.'-0.01; % 設(shè)置初始化濾波器系數(shù) </p><p>  mu=0.05; % 設(shè)置算法的步長(zhǎng)</p><p>  s

42、=initse(w0,mu); %初始化自適應(yīng)FIR結(jié)構(gòu)濾波</p><p>  [y,e,s]=adaptse(noise,d,s); %進(jìn)行自適應(yīng)濾波</p><p><b>  t=1:200;</b></p><p>  plot(t,signal(1:200))</p><p>  figure(2);

43、</p><p>  plot(t,d(1:200),'.-',t,y(1:200),'-');</p><p>  4.3.3 仿真結(jié)果</p><p>  圖4-1 原始信號(hào)時(shí)域圖</p><p>  圖4-2濾波前和濾波后信號(hào)時(shí)域圖</p><p>  4.4 自適應(yīng)濾波器DSP設(shè)

44、計(jì)實(shí)現(xiàn)</p><p>  4.4.1 DSP理論基礎(chǔ)</p><p>  數(shù)字信號(hào)處理(DSP)是指人們利用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備,以數(shù)字的形式對(duì)信號(hào)進(jìn)行采集,變換,濾波,估值,增強(qiáng),壓縮,識(shí)別等處理,以得到符合人們需要的信號(hào)形式。其框圖如圖3-1所示。</p><p>  這里我們用DSP來(lái)做自適應(yīng)濾波器。為了提高LMS 算法的處理速度及減小系統(tǒng)的硬件規(guī)模, 在實(shí)

45、現(xiàn)濾波器算法時(shí), 采用了TMS320C54xx 作為核心芯片。由于該處理器采用改進(jìn)型結(jié)構(gòu),具有高度并行性,同時(shí)擁有高度集成的指令系統(tǒng),簡(jiǎn)化編程過(guò)程,模塊化結(jié)構(gòu)程序設(shè)計(jì)增強(qiáng)了程序的可移植性。利用TMS320C54xx實(shí)現(xiàn)LMS 自適應(yīng)算法時(shí),存儲(chǔ)器中數(shù)據(jù)的存放形式對(duì)DSP 的有效運(yùn)用有著特殊的意義,合理的存放形式,可以使算法實(shí)現(xiàn)起來(lái)更加快速和高效,為了實(shí)現(xiàn)算法中輸入樣值x(n) 和濾波器系數(shù)W(n) 的對(duì)應(yīng)項(xiàng)相乘,他們?cè)诖鎯?chǔ)器中的存放形式

46、如圖4-2 所示。</p><p>  圖4-2 TMS320C54xx自適應(yīng)濾波器存儲(chǔ)器組織形式</p><p>  根據(jù)算法在 CSS 軟件中建立工程編寫(xiě)C語(yǔ)言程序代碼。在CSS環(huán)境下編譯和下載到DSP試驗(yàn)箱中。進(jìn)行一些列相應(yīng)的設(shè)置后實(shí)現(xiàn)自適應(yīng)濾波。</p><p><b>  4.4.2程序設(shè)計(jì)</b></p><p

47、>  實(shí)驗(yàn)中采用的自適應(yīng)濾波器采用16階FIR濾波器,采用相同的信號(hào)作為參考d(n)和輸入信號(hào)x(n),并采用上一時(shí)刻的誤差值來(lái)修正本時(shí)刻的濾波器系數(shù),2μ取值0.0005,對(duì)濾波器輸出除128進(jìn)行幅度限制。實(shí)驗(yàn)流程圖如下:</p><p>  程序設(shè)計(jì)的整個(gè)實(shí)現(xiàn)過(guò)程主要分為3個(gè)步:</p><p>  濾波運(yùn)算前的相關(guān)運(yùn)算單元、寄存器以及變量的初始化;</p><

48、;p>  原始信號(hào)xx[i]=256*sin(i*2*PI/34); </p><p>  根據(jù)輸入的采樣值計(jì)算濾波器的輸出并求出誤差;</p><p>  這一步是最重要的濾波計(jì)算,我們用FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber) 這個(gè)函數(shù)來(lái)實(shí)現(xiàn)。其完整代碼是</p><p>  int FIR

49、LMS(int *nx,float *nh,int nError,int nCoeffNumber)</p><p><b>  {</b></p><p><b>  int i,r;</b></p><p>  float fWork;</p><p><b>  r=0;</b

50、></p><p>  for ( i=0;i<nCoeffNumber;i++ )</p><p><b>  {</b></p><p>  fWork=nx[i]*nError*fU;</p><p>  nh[i]+=fWork;</p><p>  r+=(nx[i-i]*n

51、h[i]);</p><p><b>  }</b></p><p><b>  r/=128;</b></p><p><b>  return r;</b></p><p><b>  }</b></p><p>  收斂因子f

52、U=0.0005。nError是上一次的誤差值, fWork是當(dāng)前的濾波器權(quán)系數(shù),輸出值r。</p><p>  這里實(shí)現(xiàn)自適應(yīng)算法中的公式。輸出值y(n)等于輸入值x(n-1)*w(i)的積分。½½½ </p><p>  根據(jù)LMS算法的迭代公式更新濾波器參數(shù),有新的采樣輸入后轉(zhuǎn)到第二步循環(huán)執(zhí)行。</p><p>  把一信號(hào)進(jìn)行采

53、樣。把采樣點(diǎn)放在數(shù)字中。這里用到了輸入信號(hào)數(shù)組xx[],輸出信號(hào)數(shù)組rr[],誤差數(shù)組wc[],以及濾波器權(quán)系數(shù)h[]。通過(guò)for循環(huán)語(yǔ)句進(jìn)行一個(gè)一個(gè)樣點(diǎn)值濾波計(jì)算。得到想要的結(jié)果。</p><p>  for ( i=COEFFNUMBER+1;i<INPUTNUMBER;i++ )</p><p><b>  {</b></p><p&g

54、t;  nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1],COEFFNUMBER);</p><p>  rr[i]=nLastOutput;</p><p>  wc[i]=rr[i]-xx[i];</p><p><b>  }</b></p><p>  用FIRLMS函

55、數(shù)得到了一個(gè)濾波后的樣點(diǎn)信號(hào)值nLastOutput 存放在輸出信號(hào)數(shù)組rr[]中。for循環(huán)一個(gè)一個(gè)得到濾波過(guò)的信號(hào)值第INPUTNUMBER=1024個(gè)為止。</p><p><b>  實(shí)驗(yàn)過(guò)程</b></p><p>  5.1實(shí)驗(yàn)過(guò)程中出現(xiàn)的錯(cuò)誤及解決的辦法</p><p>  5.2 CCS程序運(yùn)行后的各種輸出結(jié)果</p>

56、;<p><b>  1.實(shí)驗(yàn)準(zhǔn)備</b></p><p><b>  -啟動(dòng)軟件仿真模式</b></p><p><b>  -啟動(dòng)CCS</b></p><p><b>  2.打開(kāi)工程</b></p><p><b>  3.

57、編譯并下載程序</b></p><p><b>  4.點(diǎn)擊運(yùn)行按鈕</b></p><p>  5.打開(kāi)觀察窗口(view->Graph->Property....)</p><p><b>  設(shè)置如下</b></p><p>  圖5-1 設(shè)置輸入信號(hào)XX</p&

58、gt;<p>  圖 5-2 設(shè)置輸出信號(hào)rr</p><p>  圖5-3 設(shè)置誤差wc</p><p><b>  7.觀察結(jié)果</b></p><p><b>  8.退出CCS</b></p><p>  5.2 DSP實(shí)現(xiàn)結(jié)果</p><p>  觀察

59、得結(jié)果的波形如下:</p><p>  圖5-4 輸出信號(hào)原始波形</p><p>  圖5-5 濾波后輸出信號(hào)的波形</p><p>  圖5-6自適應(yīng) 誤差e(n)波形</p><p><b>  結(jié)論與體會(huì)</b></p><p>  本課程設(shè)計(jì)的重點(diǎn)是自適應(yīng)FIR濾波器的設(shè)計(jì)和DSP的實(shí)現(xiàn)

60、。對(duì)線性自適應(yīng)濾波器的算法作了大量調(diào)查和研究,詳細(xì)比較了FIR結(jié)構(gòu)濾波器和IIR結(jié)構(gòu)濾波器,并結(jié)合硬件設(shè)計(jì)考慮,最終采用FIR橫向結(jié)構(gòu)濾波器。</p><p>  自適應(yīng)濾波技術(shù)的核心問(wèn)題是自適應(yīng)算法的性能問(wèn)題,研究自適應(yīng)算法是自適應(yīng)濾波器的一個(gè)關(guān)鍵內(nèi)容,算法的特性直接影響濾波器的效果。介紹了兩種基本的自適應(yīng)算法:最小均方(LMS)算法及遞歸最小二乘(RLS)算法,在DSP上實(shí)現(xiàn)了對(duì)含噪信號(hào)的頻率跟蹤。在實(shí)際中,

61、自適應(yīng)濾波器的應(yīng)用比較復(fù)雜,包括維納濾波和卡爾曼濾波都是基于改變參數(shù)的濾波方法,修改參數(shù)的原則一般采用均方最小原則,修改參數(shù)的目的就是使得誤差信號(hào)盡量接近于0。傳統(tǒng)的濾波方法總是設(shè)計(jì)較精確的參數(shù),盡量精確地對(duì)信號(hào)進(jìn)行處理,傳統(tǒng)濾波方法適用于穩(wěn)定的信號(hào),而自適應(yīng)濾波器可以根據(jù)信號(hào)隨時(shí)修改濾波參數(shù),達(dá)到動(dòng)態(tài)跟蹤的效果。通過(guò)本課程設(shè)計(jì)加深了對(duì)DSP原理的理解,初步掌握了DSP 芯片的開(kāi)發(fā)應(yīng)用,為接下來(lái)的深入學(xué)習(xí)打下了堅(jiān)實(shí)的基礎(chǔ)。但是同時(shí)還有很

62、多的問(wèn)題還有待于進(jìn)一步深入研究,我將在今后的學(xué)習(xí)工作中,要加強(qiáng)學(xué)習(xí),不斷進(jìn)取。</p><p><b>  參考文獻(xiàn) </b></p><p>  [1] 西蒙赫金.自適應(yīng)濾波器原理.北京:電子工業(yè)出版社,2003</p><p>  [2] 陳懷琛,吳大正,高西全.MATLAB及在電子信息課程中的應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,

63、 2004</p><p>  [3] 高西全,丁玉美.數(shù)字信號(hào)處理(第三版)[M].西安:西安電子科技大學(xué)出版社,2008</p><p>  [4] 劉順蘭,吳 杰.數(shù)字信號(hào)處理(第二版)[M].西安:西安電子科技大學(xué)出版社,2008</p><p>  [5] 吳湘淇.信號(hào)、系統(tǒng)與信號(hào)處理(上、下)[M].北京:電子工業(yè)出版社,2000</p>

64、<p>  [6] 張志勇.精通MATLAB6.5[M].北京:北京航空航天大學(xué)出版社,2003</p><p>  [7] 門(mén)愛(ài)東,楊 波,全子一.數(shù)字信號(hào)處理[M].北京:人民郵電出版社, 2003</p><p>  [8] 吳湘淇.信號(hào)與系統(tǒng)(第3版)[M].北京:電子工業(yè)出版社, 2009</p><p>  [9] 吳湘淇,肖熙,郝曉莉.信

65、號(hào)、系統(tǒng)與信號(hào)處理的軟硬件實(shí)現(xiàn)[M].北京:電子工業(yè)出版社, 2002</p><p>  [10] 萬(wàn)建偉,王 玲.信號(hào)處理仿真技術(shù)[M].長(zhǎng)沙:國(guó)防科技大學(xué)出版社, 2008</p><p>  [11] John G. Proakis,Dimitris G.Manolakis.數(shù)字信號(hào)處理[M].方艷梅,劉永清譯.北京:電子工業(yè)出版社,2007</p><p&g

66、t;  [12] Sanjit K Mitra. 數(shù)字信號(hào)處理實(shí)驗(yàn)指導(dǎo)書(shū)[M].孫洪等譯.北京:電子工業(yè)出版社,2006</p><p><b>  附件源程序清單:</b></p><p>  /******************************************************************************</p&g

67、t;<p>  Main()主函數(shù)。 </p><p>  ******************************************************************************/</p><p>  /////////////////////////////////////////////////</p><p>

68、;  // Example For ICETEK-VC5416-EDU //</p><p>  // CTR Version : V4 //</p><p>  // Filename: FirLms.c //</p><p>  /

69、/ Project : FirLms.pjt //</p><p>  // Version : 2.00 //</p><p>  // Write by: Daniel Hawk //</p><p>  // C

70、ompany : Realtimedsp Co.Ltd. //</p><p>  // //</p><p>  // All Rights opened & no Onus 2005.06 //</p><p>  /////

71、////////////////////////////////////////////</p><p>  #include"math.h"</p><p>  #define PI 3.1415926</p><p>  #define COEFFNUMBER 16</p><p>  #define INPUTNUM

72、BER 1024</p><p>  int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber);</p><p>  float h[COEFFNUMBER],fU;</p><p>  int xx[INPUTNUMBER],rr[INPUTNUMBER],wc[INPUTNUMBER];</p>

73、;<p><b>  main()</b></p><p><b>  {</b></p><p>  int i,nLastOutput;</p><p>  nLastOutput=0;</p><p>  fU=0.0005;</p><p>  for

74、( i=0;i<COEFFNUMBER;i++ )h[i]=0;</p><p>  for ( i=0;i<INPUTNUMBER;i++ )</p><p><b>  {</b></p><p>  xx[i]=256*sin(i*2*PI/34);</p><p>  rr[i]=wc[i]=0;&

75、lt;/p><p><b>  }</b></p><p>  for ( i=COEFFNUMBER+1;i<INPUTNUMBER;i++ )</p><p><b>  {</b></p><p>  nLastOutput=FIRLMS(xx+i,h,nLastOutput-xx[i-1]

76、,COEFFNUMBER);// break point</p><p>  rr[i]=nLastOutput;</p><p>  wc[i]=rr[i]-xx[i];</p><p><b>  }</b></p><p><b>  exit(0);</b></p><

77、p><b>  }</b></p><p>  int FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber)</p><p><b>  {</b></p><p><b>  int i,r;</b></p><p>

78、;  float fWork;</p><p><b>  r=0;</b></p><p>  for ( i=0;i<nCoeffNumber;i++ )</p><p><b>  {</b></p><p>  fWork=nx[i]*nError*fU;</p><

79、;p>  nh[i]+=fWork;</p><p>  r+=(nx[i-i]*nh[i]);</p><p><b>  }</b></p><p><b>  r/=128;</b></p><p><b>  return r;</b></p>&l

80、t;p><b>  }</b></p><p>  /******************************************************************************</p><p>  func .h 頭文件</p><p>  ********************************

81、**********************************************/</p><p>  void interrupt tint( void );</p><p>  void CLK_init( void );</p><p>  void SDRAM_init( void );</p><p>  void IN

82、TR_init( void );</p><p>  void TIME_init(void);</p><p>  void TMCR_Reset( void );</p><p>  void SetDSPPLL(unsigned int uPLL);</p><p>  /********************************

83、**********************************************</p><p>  scancode.h 頭文件</p><p>  ******************************************************************************/</p><p>  #define SCAN

84、CODE_0 0x70</p><p>  #define SCANCODE_1 0x69</p><p>  #define SCANCODE_2 0x72</p><p>  #define SCANCODE_3 0x7A</p><p>  #define SCANCODE_4 0x6B</p><p>  #d

85、efine SCANCODE_5 0x73</p><p>  #define SCANCODE_6 0x74</p><p>  #define SCANCODE_7 0x6C</p><p>  #define SCANCODE_8 0x75</p><p>  #define SCANCODE_9 0x7D</p><

86、;p>  #define SCANCODE_Del 0x49</p><p>  #define SCANCODE_Enter 0x5A</p><p>  #define SCANCODE_Plus 0x79</p><p>  #define SCANCODE_Minus 0x7B</p><p>  #define SCANCOD

87、E_Mult 0x7C</p><p>  #define SCANCODE_Divid 0x4A</p><p>  #define SCANCODE_Num 0x77</p><p>  /****************************************************************************** </p&g

88、t;<p>  util.h 頭文件</p><p>  ******************************************************************************/</p><p><b>  /*</b></p><p>  * Copyright (C) 2001, Spe

89、ctrum Digital, Inc. All Rights Reserved.</p><p><b>  */</b></p><p>  #define DSP_CLKIN 20</p><p>  #define NULLLOOP_CLK 20</p><p>  typedef stru

90、ct {</p><p>  int freq; // DSP operating clock</p><p>  int clkin; // DSP input clock</p><p>  int pllmult; // PLL multiplier</p><p>  int plldiv;

91、 // PLL divisor</p><p>  int clksperusec; // DSP clocks per usec</p><p>  int nullloopclk; // DSP clocks per null loop</p><p><b>  } DSPCLK;</b></p><p>  ex

92、tern DSPCLK dspclk;</p><p>  // Read and write from an address</p><p>  #define Read(addr) addr</p><p>  #define Write(addr,data) addr = data</p><p>  // Set or clear

93、 all bits in the mask</p><p>  #define ClearMask(addr,mask) addr = (addr & ~(mask))</p><p>  #define SetMask(addr,mask) addr = (addr | (mask)) </p><p>  // Read and write data

94、 at addr, only bits in mask are affected</p><p>  #define ReadMask(addr,mask) (addr & (mask))</p><p>  #define WriteMask(addr,data,mask) addr = (addr & ~(mask)) | (data)</p><p

95、>  // Read and write data at addr, shift data so that bit 0 of data is aligned</p><p>  // with lowest set bit in mask. Only bits in mask are modified. Example</p><p>  // with address 0

96、x1000 initial contents = 0x4007:</p><p>  // WriteField(0x1000, 0x56, 0x0ff0) will set address 0x1000 to 0x4567.</p><p>  #define ReadField(addr,mask) ((addr & (mask)) >> firstbit(mas

97、k)) </p><p>  #define WriteField(addr,data,mask) addr = (addr & ~(mask)) | (data << firstbit(mask))</p><p>  extern int firstbit(unsigned short mask);</p><p>  /**********

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論