版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 《數字信號處理》課程設計</p><p> _ 自適應濾波器設計與實現 </p><p> 系 別 計算機科學系 </p><p> 專 業(yè) 通信工程 </p><p> 班 級
2、 </p><p> 學 號 </p><p> 組 次 </p><p> 姓 名 </p><p> 指導
3、教師 </p><p> 評定成績 </p><p> 起止日期 年 月 日 至 年 月 日 </p><p><b> 目錄</b></p><p><b>
4、; 摘要1</b></p><p> 第1章 課程設計的目的和要求1</p><p> 第2章 系統功能介紹及總體設計方案2</p><p> 第3章 主要內容和步驟3</p><p> 3.1 自適應濾波器原理3</p><p> 3.2 操作步驟3</p><
5、p> 第4章 詳細設計4</p><p> 第5章 實驗過程5</p><p> 5.1 匯編語言實驗步驟與內容5</p><p> 5.2 實驗過程中出現的錯誤及解決的辦法7</p><p> 5.3 CCS程序運行后的各種輸出結果7</p><p> 第6章 結論與體會10</p
6、><p><b> 參考文獻11</b></p><p> 附件:源程序清單12</p><p><b> 摘 要:</b></p><p> 自適應濾波器是統計信號處理的一個重要組成部分。在實際應用中,由于沒有充足的信息來設計固定系數的數字濾波器,或者設計規(guī)則會在濾波器正常運行時改變,因此
7、我們需要研究自適應濾波器。凡是需要處理未知統計環(huán)境下運算結果所產生的信號或需要處理非平穩(wěn)信號時,自適應濾波器可以提供一種吸引人的解決方法,而且其性能通常遠優(yōu)于用常方法設計的固定濾波器。此外,自適應濾波器還能提供非自適應方法所不可能提供的新的信號處理能力。</p><p> 本文從自適應濾波器研究的意義入手,介紹了自適應濾波器的基本理論思想,具體闡述了自適應濾波器的基本原理、算法及設計方法。自適應濾波器的算法是整
8、個系統的核心。本文中,對兩種最基本的自適應算法,即最小均方誤差(LMS)算法和遞歸最小二乘(RLS)算法進行了詳細的介紹和分析,并針對兩種算法的優(yōu)缺點進行了詳細的比較。同時,分別對FIR結構和IIR結構自適應濾波器做了詳細的介紹,比較了FIR結構和IIR結構自適應濾波器的優(yōu)缺點。最終采用改進的LMS算法設計FIR結構自適應濾波器,并采用MATLAB進行仿真,最后用DSP實現了自適應濾波器。實驗結果表明,該自適應濾波器濾波效果優(yōu)越。<
9、;/p><p> 第一章 課程設計的目的和要求</p><p><b> 1.1目的</b></p><p> 對自適應濾波算法的研究是當今自適應信號處理中最為活躍的研究課題之一。Windrow等于1967年提出的自適應濾波系統的參數能自動的調整而達到最優(yōu)狀況,而且在設計時,只需要很少的或根本不需要任何關于信號與噪聲的先驗統計知識。自適應濾波
10、器本身有一個重要的自適應算法,這個算法可以根據輸入、輸出及原參量信號按照一定準則修改濾波參量,以使它本身能有效的跟蹤外部環(huán)境的變化。因此,自適應數字系統具有很強的自學習、自跟蹤能力和算法的簡單易實現性。自適應濾波技術的核心問題是自適應算法的性能問題,提出的自適應算法主要有最小均方(LMS)算法、遞歸最小二乘(RLS)算法及相應的改進算法如:歸一化(NLMS)算法、變步長(SVSLMS)算法、遞歸最小二乘方格形(RLSL)算法等。這些算法
11、各有特點,適用于不同的場合。比如用于系統辨識、回波消除、自適應譜線增強、自適應信道均衡、語音線性預測、自適應天線陣等諸多領域。</p><p> 自適應濾波,對發(fā)展通信業(yè)務有著不可或缺的作用。所以是我們通信專業(yè)學習的重點。也是鞏固《數字信號處理》知識的一個重要的實驗。</p><p><b> 1.2要求</b></p><p> 本文設
12、計自適應濾波要求使用DSP實現自適應濾波器,要求掌握自適應濾波器的原理和實現方法。因為自適應濾波器的設計用到了自適應算法和FIR濾波算法。而自適應濾波算法有LMS算法和RLS算法,本文只用LMS算法。LMS算法是通過對未知系統傳遞函數的建模,識別該未知系統,并對該系統進行噪聲濾波。</p><p> 自適應濾波器,其權系數可以根據自適應算法來不斷修改,使得系統中的沖激響應滿足給定的性能。例如語音信號的ADPCM
13、編碼,采用線性預測自適應就可以實現誤差信號與輸入信號的線性無關,并由此作為依據,不斷調節(jié)濾波器的權系數,最終使得誤差信號趨近于0,使得該濾波器完全適應該輸入信號;同樣,只要輸入信號出現變換,自適應濾波器根據誤差信號的變化再次調整其權系數,從而跟上信號的變化。自適應濾波器設計的算法采用的是自適應算法,即LMS算法。LMS算法是通過對未知系統傳遞函數的建模,識別該未知系統,并對該系統進行噪聲濾波。</p><p>
14、 自適應濾波器功能介紹及總體設計方案</p><p><b> 2.1功能:</b></p><p> 自適應濾波器可以利用前一時刻以獲得的濾波器參數的結果,自動的調節(jié)現時刻的濾波器參數,以適應信號和噪聲未知的或隨時間變化的統計特性,從而實現最優(yōu)濾波。</p><p> 2.2總體設計方案:</p><p> 自
15、適應濾波器主要由兩部分組成:系數可調的數字濾波器和用來調節(jié)或修正濾波器系數的自適應算法。如下圖所示:</p><p> 自適應濾波器的一般形式如圖1所示I5],圖中 輸入信號 X(N)加權到數字濾波器產生輸出信號Y (N),自適應算法調節(jié)濾波器權系數使輸出Y(N)和濾波器期望的響應 F(n)之間的誤差信號E(N)為最小。自適應濾波器的系數受誤差信號的控制,根據E(N)的值 和自適應算法自動調整。一旦輸入信號的統
16、計規(guī)律發(fā) 生了變化,濾波器能夠自動跟蹤輸入信號的變化,自動調整濾波器的權系數,實現自適應過程,最終達到濾波效果。</p><p><b> 主要內容和步驟</b></p><p> 3.1自適應濾波原理</p><p> 自適應濾波器主要由兩部分組成:系數可調的數字濾波器和用來調節(jié)或修正濾波器系數的自適應算法。</p>&l
17、t;p> 下圖為自適應濾波器原理框圖:</p><p> 圖中,自適應濾波器有兩個輸入端:一個輸入端的信號Z(n)含有所要提取的信號s(n),被淹沒在噪聲 d(n)中,s(n).d(n)兩者不相關,z(n)=s(n)+d(n)。另一輸入端信號為x(n),它是z(n)的一種度量,并以某種方式與噪聲d(n)有關。x(n)被數字濾波器所處理得到噪聲d(n)的估計值y(n),這樣就可以從z(n)中減去y(n),
18、得到所要提取的信號s(n)的估計值e(n),表示為:e(n)=z(n)-y(n)=s(n)+d(n)-y(n)。</p><p> 顯然,自適應濾波器就是一個噪聲抵消器。如果得到對淹沒信號的噪聲的最佳估計,就能得到所要提取的信號的最佳估計。為了得到噪聲的最佳估計y(n),可以經過適當的自適應算法,例如用LMS(最小均方)算法來反饋調整數字濾波器的系數,使得e(n)中的噪聲最小。e(n)有兩種作用:一是得到信號s
19、(n)的最佳估計;二是用于調整濾波器系數的誤差信號。</p><p> 自適應濾波器中,數字濾波器的濾波系數是可調的,多數采用FIR型數字濾波器,設其單位脈沖響應為h(0), h(1), …,h(N-1),你們它在時刻n的輸出便可寫成如下的卷積形式</p><p> y(n)= ∑h(k)x(n-k)</p><p> 為方便起見,上式中的各h(k)亦被稱為權
20、值。根據要求,輸出y(n)和目標號d(n)之間</p><p> 應滿足最小均方誤差條件,即 </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)便可被寫成</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)],那么最佳權向量</p><p> h*=Фxx -1r
24、 (2-7)</p><p><b> 詳細設計過程</b></p><p> 4.1 LMS自適應算法</p><p> 自適應算法是根據某種判斷來設計的。通常有兩種判據條件:最小均方誤差判據和最小二乘法判據。LMS 算法是以最小均方誤差為判據的最典型的算法,也是應用最廣泛的一種算法。最小
25、均方誤差(Least Mean Square,LMS)算法是一種易于實現、性能穩(wěn)健、應用廣泛的算法。所有的濾波器系數調整算法都是設法使Y(N)接近F(N),所不同的只是對于這種接近的評價標準不同。LMS 算法的目標是通過調整系數,使輸出誤差序列的均方值最小化,并且根據這個判據來修改權系數,該算法因此而得名。誤差序列的均方值又叫“均方誤差”(Mean Sqluare Error,MSE)。理想信號 與濾波器輸出之差的期望值最小,并且根據這
26、個判據來修改權系數。由此產生的算法稱為LMS。均方誤差ε表示為:</p><p><b> ?。?-3)</b></p><p> 對于橫向結構的濾波器,代入 的表達式:</p><p><b> ?。?-4)</b></p><p> 其中:為 的自相關矩陣,它是輸入信號采樣值間的相關性矩陣。
27、</p><p> 為互相關矢量,代表理想信號與輸入矢量的相關性。在均方誤差。</p><p> 達到最小時,得到最佳權系數: (2-5)</p><p><b> 它應滿足下式:</b></p><p><b> (2-6)</b></p><p> 這是一個
28、線形方程組,如果矩陣為滿秩的,存在,可得到權系數的最佳值滿足: (2-7)</p><p> 用完整的矩陣表示為:</p><p><b> ?。?-8)</b></p><p> 顯然為的自相關值為與互相關值。在有些應用中,把輸入信號的采樣值分成相同的一段(每段稱為
29、一幀),再求出R,P的估計值得到每幀的最佳權系數。這種方法稱為塊對塊自適應算法。如語音信號的線性預測編碼LPC 就是把語音信號分成幀進行處理的。R,P 的計算,要求出期望值E,在現實運算中不容易實現,為此可通過下式進行估計:</p><p><b> ?。?-9)</b></p><p><b> (2-10)</b></p>&
30、lt;p> 用以上方法獲得最佳W*的運算量很大,對于一些在線或實時應用的場合,無法滿足其時間要求。大多數場合使用迭代算法,對每次采樣值就求出較佳權系數,稱為采樣值對采樣值迭代算法。迭代算法可以避免復雜的R-1 和P 的運算,又能實時求得近似解,因而切實可行。LMS 算法是以最快下降法為原則的迭代算法,即W(n+1)矢量是W(n)矢量按均方誤差性能平面的負斜率大小調節(jié)相應一個增量:W(n+1)=W(n)-μ▽(n),這個“是由系統
31、穩(wěn)定性和迭代運算收斂速度決定的自適應步長。▽(n)為n 次迭代的梯度。對于LMS 算法▽(n)為下式</p><p> 即E[e2(n)]的斜率:</p><p><b> ?。?-11)</b></p><p> 由上式產生了求解最佳權系數 W*的兩種方法,一種是最陡梯度法。其思路為:設計初始權系數W(0),用W(n+1)=W(n)一μ▽
32、(n)迭代公式計算,到W(n+1)與W(n)誤差小于規(guī)定范圍。其中▽(n)計算可用估計值表達式:</p><p><b> ?。?-12)</b></p><p> 上式K取值應足夠大。如果用瞬時一2e(n)X(n)來代替上面對-2E[e(n)X(n)]的估計運算,就產生了另一種算法——隨機梯度法,即Widrow-Hoft 的LMS 算法。此時迭代公式為:</
33、p><p><b> ?。?-13)</b></p><p> 濾波器結構為橫向結構。對于對稱橫向型結構也可推出類似的迭代公式:</p><p> 4.2 FIR 濾波器設計 </p><p> 設h(n),n=0,i.2…N-l為濾波器的沖激響應,輸人信號為x(n),則FIR濾波器就是要實現下列差分方程:<
34、/p><p> 式中,y(n)為輸出信號,即經過濾波之后的信號;N為濾波器階數。FIR濾波器的最主要特點是沒有反饋回路,因此是無條件穩(wěn)定系統,其單位脈沖響應h(n)是一個有限長序列。由式(1)可見,FIR濾波算法實際上是一種乘法累加運算。不斷地輸入樣本x(n),經延時(z-1)做乘法累加,再輸出濾波結果Y(n)對式(1)進行z變換.整理后可得FIR濾波器的傳遞函數為:</p><p><
35、;b> 。</b></p><p> FIR濾波器的一般結構如圖l所示。 </p><p> 其中,X(n )=[x(n),x(n-1),…,x(n-N+1)] 為自適應濾波器的輸入矢量;W( n)=[w0(1 ),w1 (n ), …,wn-1(n )]T 為系統的權系數矢量;為時間序列;N 為濾波器的階數;T為矩轉置符。由
36、表達式可以看出 輸出是兩矢量的內積。</p><p> 4.3 自適應濾波器MATLAB實現</p><p> 4.3.1 FIR濾波算法 MATLAB仿真實現</p><p> MATLAB信號處理工具箱提供了基于窗函數法的FIR濾波器的設計函數fir1。fir1是采用經典窗函數法設計線性相位FIR數字濾波器,且具有標準低通、帶通、高通和帶阻等類型。<
37、/p><p><b> 語法格式:</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濾波器的階數,對于高通、帶阻濾波器n取偶數。為濾波器截止頻率,取值范圍為0~1。對于帶通、帶阻濾波器,=[,],且<?!痜type’為濾波器類型。缺省時為低通或帶通濾波器,為‘high’時是高通濾波器,為‘stop’時是帶阻濾波器。Window為窗函數,列向量,其長度為n+1;缺省時,自動取hamming窗。輸出參數B為FIR濾波器系數向量,長度為n+1。</p><p&g
39、t; 4.3.2 自適應濾波MATLAB仿真實現</p><p> 使用MATLAB編程,采用自適應濾波器技術實現語音去噪過程,程序如下:</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]'); %產生輸入信號</p><p> noise=randn(1,1000); %產生隨機噪聲</p><p> nfilt=fir1(11,0.4); %產生11階低通濾波,截止頻率為0.4</p><p> fnoise=filter(nfilt,1
41、,noise); %噪聲信號進行FIR濾波</p><p> d=signal.'+fnoise; %將噪聲疊加到信號中</p><p> w0=nfilt.'-0.01; % 設置初始化濾波器系數 </p><p> mu=0.05; % 設置算法的步長</p><p> s
42、=initse(w0,mu); %初始化自適應FIR結構濾波</p><p> [y,e,s]=adaptse(noise,d,s); %進行自適應濾波</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 仿真結果</p><p> 圖4-1 原始信號時域圖</p><p> 圖4-2濾波前和濾波后信號時域圖</p><p> 4.4 自適應濾波器DSP設
44、計實現</p><p> 4.4.1 DSP理論基礎</p><p> 數字信號處理(DSP)是指人們利用計算機或專用處理設備,以數字的形式對信號進行采集,變換,濾波,估值,增強,壓縮,識別等處理,以得到符合人們需要的信號形式。其框圖如圖3-1所示。</p><p> 這里我們用DSP來做自適應濾波器。為了提高LMS 算法的處理速度及減小系統的硬件規(guī)模, 在實
45、現濾波器算法時, 采用了TMS320C54xx 作為核心芯片。由于該處理器采用改進型結構,具有高度并行性,同時擁有高度集成的指令系統,簡化編程過程,模塊化結構程序設計增強了程序的可移植性。利用TMS320C54xx實現LMS 自適應算法時,存儲器中數據的存放形式對DSP 的有效運用有著特殊的意義,合理的存放形式,可以使算法實現起來更加快速和高效,為了實現算法中輸入樣值x(n) 和濾波器系數W(n) 的對應項相乘,他們在存儲器中的存放形式
46、如圖4-2 所示。</p><p> 圖4-2 TMS320C54xx自適應濾波器存儲器組織形式</p><p> 根據算法在 CSS 軟件中建立工程編寫C語言程序代碼。在CSS環(huán)境下編譯和下載到DSP試驗箱中。進行一些列相應的設置后實現自適應濾波。</p><p><b> 4.4.2程序設計</b></p><p
47、> 實驗中采用的自適應濾波器采用16階FIR濾波器,采用相同的信號作為參考d(n)和輸入信號x(n),并采用上一時刻的誤差值來修正本時刻的濾波器系數,2μ取值0.0005,對濾波器輸出除128進行幅度限制。實驗流程圖如下:</p><p> 程序設計的整個實現過程主要分為3個步:</p><p> 濾波運算前的相關運算單元、寄存器以及變量的初始化;</p><
48、;p> 原始信號xx[i]=256*sin(i*2*PI/34); </p><p> 根據輸入的采樣值計算濾波器的輸出并求出誤差;</p><p> 這一步是最重要的濾波計算,我們用FIRLMS(int *nx,float *nh,int nError,int nCoeffNumber) 這個函數來實現。其完整代碼是</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是當前的濾波器權系數,輸出值r。</p><p> 這里實現自適應算法中的公式。輸出值y(n)等于輸入值x(n-1)*w(i)的積分。½½½ </p><p> 根據LMS算法的迭代公式更新濾波器參數,有新的采樣輸入后轉到第二步循環(huán)執(zhí)行。</p><p> 把一信號進行采
53、樣。把采樣點放在數字中。這里用到了輸入信號數組xx[],輸出信號數組rr[],誤差數組wc[],以及濾波器權系數h[]。通過for循環(huán)語句進行一個一個樣點值濾波計算。得到想要的結果。</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、數得到了一個濾波后的樣點信號值nLastOutput 存放在輸出信號數組rr[]中。for循環(huán)一個一個得到濾波過的信號值第INPUTNUMBER=1024個為止。</p><p><b> 實驗過程</b></p><p> 5.1實驗過程中出現的錯誤及解決的辦法</p><p> 5.2 CCS程序運行后的各種輸出結果</p>
56、;<p><b> 1.實驗準備</b></p><p><b> -啟動軟件仿真模式</b></p><p><b> -啟動CCS</b></p><p><b> 2.打開工程</b></p><p><b> 3.
57、編譯并下載程序</b></p><p><b> 4.點擊運行按鈕</b></p><p> 5.打開觀察窗口(view->Graph->Property....)</p><p><b> 設置如下</b></p><p> 圖5-1 設置輸入信號XX</p&
58、gt;<p> 圖 5-2 設置輸出信號rr</p><p> 圖5-3 設置誤差wc</p><p><b> 7.觀察結果</b></p><p><b> 8.退出CCS</b></p><p> 5.2 DSP實現結果</p><p> 觀察
59、得結果的波形如下:</p><p> 圖5-4 輸出信號原始波形</p><p> 圖5-5 濾波后輸出信號的波形</p><p> 圖5-6自適應 誤差e(n)波形</p><p><b> 結論與體會</b></p><p> 本課程設計的重點是自適應FIR濾波器的設計和DSP的實現
60、。對線性自適應濾波器的算法作了大量調查和研究,詳細比較了FIR結構濾波器和IIR結構濾波器,并結合硬件設計考慮,最終采用FIR橫向結構濾波器。</p><p> 自適應濾波技術的核心問題是自適應算法的性能問題,研究自適應算法是自適應濾波器的一個關鍵內容,算法的特性直接影響濾波器的效果。介紹了兩種基本的自適應算法:最小均方(LMS)算法及遞歸最小二乘(RLS)算法,在DSP上實現了對含噪信號的頻率跟蹤。在實際中,
61、自適應濾波器的應用比較復雜,包括維納濾波和卡爾曼濾波都是基于改變參數的濾波方法,修改參數的原則一般采用均方最小原則,修改參數的目的就是使得誤差信號盡量接近于0。傳統的濾波方法總是設計較精確的參數,盡量精確地對信號進行處理,傳統濾波方法適用于穩(wěn)定的信號,而自適應濾波器可以根據信號隨時修改濾波參數,達到動態(tài)跟蹤的效果。通過本課程設計加深了對DSP原理的理解,初步掌握了DSP 芯片的開發(fā)應用,為接下來的深入學習打下了堅實的基礎。但是同時還有很
62、多的問題還有待于進一步深入研究,我將在今后的學習工作中,要加強學習,不斷進取。</p><p><b> 參考文獻 </b></p><p> [1] 西蒙赫金.自適應濾波器原理.北京:電子工業(yè)出版社,2003</p><p> [2] 陳懷琛,吳大正,高西全.MATLAB及在電子信息課程中的應用(第2版)[M].北京:電子工業(yè)出版社,
63、 2004</p><p> [3] 高西全,丁玉美.數字信號處理(第三版)[M].西安:西安電子科技大學出版社,2008</p><p> [4] 劉順蘭,吳 杰.數字信號處理(第二版)[M].西安:西安電子科技大學出版社,2008</p><p> [5] 吳湘淇.信號、系統與信號處理(上、下)[M].北京:電子工業(yè)出版社,2000</p>
64、<p> [6] 張志勇.精通MATLAB6.5[M].北京:北京航空航天大學出版社,2003</p><p> [7] 門愛東,楊 波,全子一.數字信號處理[M].北京:人民郵電出版社, 2003</p><p> [8] 吳湘淇.信號與系統(第3版)[M].北京:電子工業(yè)出版社, 2009</p><p> [9] 吳湘淇,肖熙,郝曉莉.信
65、號、系統與信號處理的軟硬件實現[M].北京:電子工業(yè)出版社, 2002</p><p> [10] 萬建偉,王 玲.信號處理仿真技術[M].長沙:國防科技大學出版社, 2008</p><p> [11] John G. Proakis,Dimitris G.Manolakis.數字信號處理[M].方艷梅,劉永清譯.北京:電子工業(yè)出版社,2007</p><p&g
66、t; [12] Sanjit K Mitra. 數字信號處理實驗指導書[M].孫洪等譯.北京:電子工業(yè)出版社,2006</p><p><b> 附件源程序清單:</b></p><p> /******************************************************************************</p&g
67、t;<p> Main()主函數。 </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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自適應濾波器的課程設計
- dsp應用課程設計--自適應濾波器的設計與實現
- 基于dsp的自適應濾波器設計
- dsp課程設計--濾波器
- 利用dsp實現自適應濾波dsp課程設計
- dsp課程設計-fir濾波器設計
- dsp課程設計-fir濾波器設計
- dsp課程設計---fir濾波器設計
- dsp課程設計--fir濾波器設計
- dsp課程設計報告--fir濾波器設計
- dsp軟件課程設計---fir濾波器設計
- dsp課程設計-fir高通濾波器設計
- dsp課程設計報告(fir濾波器的dsp實現)
- 基于dsp的fir濾波器設計課程設計報告
- 基于DSP地下漏水定位系統的自適應濾波器設計.pdf
- dsp課程設計fir數字濾波器
- 語音濾波器課程設計--語音濾波器
- 自適應濾波器的設計開題報告
- dsp課程設計---基于dsp的實時fir濾波器的實現
- 基于dsp數字濾波器的課程設計
評論
0/150
提交評論