天天看點

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

目 錄

摘 要**……………………………………………………………………………………**I

第1章 緒

論**…**1

1.1引言**…………………………………………………………………………………**1

1.2 課題研究意義和目的 1

1.3 國内外研究發展狀況 2<#_Toc231889050>

1.4本文研究思路與主要工作 4

第2章 自适應濾波器理論基礎 5

2.1 自适應濾波器簡介 5

2.2 自适應濾波器的原理 5

2.3 自适應濾波算法 7

2.4 TMS320VC5402的簡介 8

第3章 總體方案設計 10

3.1 無限沖激響應(IIR)濾波器 10

3.2 有限沖激響應(FIR)濾波器 11

3.3電路設計 11

4 基于 軟體設計及仿真 17

4.3 DSP的理論基礎 17

4.4 自适應濾波算法的DSP實作 18

5 總結 21

參考文獻 22

緻 謝 23

附錄 自适應濾波源代碼 24

  1. 緒論

1.1 引言

随着微電子技術和計算機技術的迅速發展,具備了實作自适應濾波器技術的各種軟硬體條件,有關自适應濾波器的新算法、新理論和新的實施方法不斷湧現,對自适應濾波的穩定性、收斂速度和跟蹤特性的研究也不斷深入,這一切使該技術越來越成熟,并且在系統辨識、通信均衡、回波抵消、譜線增強、噪聲抑制、系統模拟語音信号處理、生物醫學電子等方面都獲得了廣泛應用口。自适應濾波器實作的複雜性通常用它所需的乘法次數和階數來衡量,而DSP強大的資料吞吐量和資料處理能力使得自适應濾波器的實作更容易。目前絕大多數的自适應濾波器應用是基于最新發展的DSP來設計的.

濾波技術是信号進行中的一種基本方法和技術,尤其數字濾波技術使用廣泛,數字濾波理論的研究及其産品的開發一直受到很多國家的重視。從總的來說濾波可分為經典濾波和現代濾波。經典濾波要求已知信号和噪聲的統計特性,如維納濾波和卡爾曼濾波。現代濾波則不要求己知信号和噪聲的統計特性,如自适應濾波。自适應濾波的原理就是利用前一時刻己獲得的濾波參數等結果,自動地調節現時刻的濾波參數,進而達到最優化濾波。自适應濾波具有很強的自學習、自跟蹤能力,适用于平穩和非平穩随機信号的檢測和估計。自适應濾波一般包括3個子產品:濾波結構、性能判據和自适應算法。其中,自适應濾波算法一直是人們的研究熱點,包括線性自适應算法和非線性自适應算法,非線性自适應算法具有更強的信号處理能力,但計算比較複雜,實際應用最多的仍然是線性自适應濾波算法。線性自适應濾波算法的種類很多,有LMS自适應濾波算法、R路自适應濾波算法、變換域自适應濾波算法、仿射投影算法、共扼梯度算法等。

1.2 課題研究意義和目的

自适應濾波理論與技術是現代信号處理技術的重要組成部分,對複雜信号的處理具有獨特的功能,對自适應濾波算法的研究是當今自适應信号進行中最為活躍的研究課題之一。自适應濾波器與普通濾波器不同,它的沖激響應或濾波參數是随外部環境的變化而變化的,經過一段自動調節的收斂時間達到最佳濾波的要求。自适應濾波器本身有一個重要的自适應算法,這個算法可以根據輸入、輸出及原參量信号按照一定準則修改濾波參量,以使它本身能有效的跟蹤外部環境的變化。是以,自适應數字系統具有很強的自學習、自跟蹤能力和算法的簡單易實作性。自适應濾

波技術的核心問題是自适應算法的性能問題,提出的自适應算法主要有最小均方(LMS)算法、遞歸最小二乘(RLS)算法及相應的改進算法如:歸一化(NLMS)算法、變步長(SVSLMS)算法、遞歸最小二乘方格形(RLSL)算法等。這些算法各有特點,适用于不同的場合。研究自适應算法是自适應濾波器的一個關鍵内容。最小均方誤差(LMS,The

least Mean

square)算法是線性自适應濾波算法中最基本的兩類算法之一,其主要思想是基于最小均方誤差準則,使濾波器的輸出信号與期望輸出信号之間的均方誤差最小,由于LMS算法簡單有效、魯棒性好、易于實作,得到了廣泛的應用。

1.3 國内外研究發展狀況

自适應濾波的基本理論通過幾十年的發展已日趨成熟,近十幾年來自适應濾波器的研究主要針對算法與硬體實作。算法研究主要是對算法速度和精度的改進,其方法大都采用軟體C、MATLAB等仿真軟體對算法的模組化和修正。通常,自适應濾波器的硬體實作都是用DSP通用處理器(如TI的TMS320系列)。DSP器件采用改進的哈佛結構,具有獨立的程式和資料空間,允許同時存取程式和資料,内置高速的硬體乘法器(MAC),增強的多級流水線。DSP具有的硬體乘法子產品(MAC),專用的存儲器以及适用于高速資料運作的總線結構,使DSP器件具有高速的資料運算能力。目前,用DSP器件處理數字信号已經成為電子領域的研究熱點。在自适應信号處理領域,對于資料處理速度在幾兆赫茲以内的,通用DSP器件也是首選。遲男等人在TMS320C32晶片上擴充EPROM和RAM,實作了30階LMS自适應濾波器,使用的刀D轉化器件為AD1674,最高采樣頻率為l00KHz。陸斌等人采用TMS320C30數字信号處理器與IMSA110專用濾波器并行處理的方法設計出了自适應濾波器并應用于直接序列的擴頻接收系統1221。趙慧民等人在TMS320C31上實作了自适應權向量濾波器,完成了信号采樣頻率為80KHz的自适應濾波。在資料處理速度隻要求在幾兆赫茲以内的應用場合,這些用DSP實作的自适應濾波器能很好的滿足系統實時的需求。在這種需求場合下,DSP具有不可媲美的成本效益。

但是随着資訊化的程序加快和計算機科學與技術、信号處理理論與方法等的迅速發展,需要處理的資料量越來越大,對實時性和精度的要求越來越高。以迅速發展的移動通信技術為例,從IG時代隻能傳送語音的模拟通信,到2G時代的傳送語音和資料的GSM、TDMA與CDMA1595,到2.5G時代傳送語音、資料、圖檔、彩信MMS、簡短視訊、收發E-mail、網頁浏覽等的GPRS與CDMA2000lX,到目前正處于研發與測試階段的能夠傳送圖像、音樂、視訊流等多種媒體形式,提供包括網頁浏覽、電話會議、電子商務的3G通信,以及目前正在研發與憧憬中的能夠傳送高品質流暢的視訊流與多種實時流媒體業務的4G通信。DSP處理器雖然具有良好的通用性和靈活性,雖然其在硬體結構上得到了很大的改進,比如增加了多個硬體乘法器和使用多乘法器的并行指令等,但并沒有擺脫傳統的CPU工作模式,而且DSP處理器是通過軟體指令完成DSP算法,其順序的工作方式制約了其資料處理速率,而使用多片DSP組合電路和過多的外部接口電路将導緻信号通道過長、過于複雜,成本也成倍地提高,是以DSP處理器對于3G和4G通信中幾十甚至上百兆比特每秒的資料處理速率顯得無能為力。

常用的數字系統目标器件除了DSP處理器外還有專用內建電路(ASIC)、專用标準電路子產品(ASSP)和現場可程式設計門陣列(FPGA)。ASIC和ASSP是專門針對完成某種數字信号處理算法的內建電路器件,是以其在性能名額、工作速度、可靠性和成本上優于DSP處理器。其優秀的工作性能主要源于特定的算法全部由ASSP和ASIC中的硬體電路完成。ASSP是半定制內建電路,在許多DSP算法的實作方面都優于DSP(數字信号處理器),但在功能重構,以及應用性修正方面缺乏靈活性;ASIC專用內建電路使用超大規模專用內建電路ASIC的實作方法是實用化的産品唯一可行的方法,隻有使用IC,才有高可靠性和可接受的價格及體積功耗等。ASIC雖然有一定的可定制性,但開發周期長,而且有一個最小定制量,在實驗室研制開發階段,開發成本非常高。現代大容量、高速度的FPGA在可重配置的數字信号處理應用領域,特别是對于任務單一、算法複雜的前端數字信号處理運算,有獨特的優勢。例如對于需要經常更新濾波器權系數的自适應濾波器,由于特定DSP處理器的位數是固定的,采用FPGA處理器相比DSP處理器就具有總線可調整的優勢。另外,FPGA所具有的大規模并行處理能力和可程式設計的靈活性使得設計的系統能獲得極高的處理性能,并且能夠适應日益變化的标準、協定和性能需求。用FPGA實作自适應濾波器,國外起步比較早,發展也非常迅速。Hesener

A.于1996年提出了用FPGA實作自适應濾波器的設想,并在FPGA上實作了處理速度可達SM的8階8位FIR濾波器。Woolfries

N.等人用FPGA實作了自适應棧濾波器,并應用于圖象處理。Dawood

A.等人用FPGA開發了自适應FIR濾波器并與DSP處理器方案進行了比較研究。國内有一些關于自适應算法硬體實作的研究,但基本是針對自适應濾波器中的算法,如南開大學李國峰的博士論文用VHDL語言描述了正負數的運算問題和浮點數運算問題,完成了基于FIR的LMS自适應濾波器的硬體設計與邏輯綜合。國防科學技術大學江和平等人讨論了自适應卡爾曼算法的簡化,并完成了FPGA的設計。同濟大學梁甲華等人重點讨論了編碼方法在FPGA的技術問題。上海交通大學範瑜等人介紹了用VHDL語言實作并行延時LMS算法的自适應數字波束成形器的FPGA設計過程。而針對自适應格型結構采用FPGA硬體實作的文獻報導很少,國内中國科學技術大學王顯潔等人通過采用流水線結構和運算單元分時複用,提高了運算速度,能夠滿足實時性預測編碼要求。1998年弗吉尼亞大學的StephenJ.Hevey在其碩士論文中利用DSP處理器和自适應格型遞歸濾波算法完成了對線性二次型最優控制器的設計,通過實驗表明了在寬帶幹擾下格型結構的濾波器性能優于LMS濾波器,在窄帶和諧波幹擾下兩者的差別不大,但所需階數至少比LMS濾波器減少一半,可以節省大量硬體資源。

1.4本文研究思路與主要工作

本文設計要求使用DSP實作自适應濾波器,要求完成自适應濾波器的設計和調試。自适應濾波器的設計需要使用自适應算法(LMS算法),LMS算法是通過對未知系統傳遞函數的模組化,識别該未知系統,并對該系統進行噪聲濾波。

自适應濾波器,其權系數可以根據自适應算法來不斷修改,使得系統中的沖激響應滿足給定的性能。例如語音信号的ADPCM編碼,采用線性預測自适應就可以實作誤差信号與輸入信号的線性無關,并由此作為依據,不斷調節濾波器的權系數,最終使得誤差信号趨近于零,使得該濾波器完全适應該輸入信号;同樣,隻要輸入信号出現變換,自适應濾波器根據誤差信号的變化再次調整其權系數,進而跟上信号的變化。自适應濾波器設計的算法采用的是自适應算法,即LMS算法。LMS算法是通過對未知系統傳遞函數的模組化,識别該未知系統,并對該系統進行噪聲濾波。

第2章 自适應濾波器的理論基礎

2.1 自适應濾波器簡介

自适應濾波器屬于現代濾波器的範疇,自适應濾波器是相對固定濾波器而言的,固定濾波器屬于經典濾波器,它濾波的頻率是固定的,自适應濾波器濾波的頻率則是自動适應輸入信号而變化的,是以其适用範圍更廣。在沒有任何關于信号和噪聲的先驗知識的條件下,自适應濾波器利用前一時刻已獲得的濾波器參數來自動調節現時刻的濾波器參數,以适應信号和噪聲未知或随機變化的統計特性,進而實作最優濾波。所謂自适應濾波,就是利用前一時刻已獲得的濾波器參數等結果,自動地調節現時刻的濾波器參數,以适應信号和噪聲未知的或随時間變化的統計特性,進而實作最優濾波。自适應濾波器實質上就是一種能調節其自身傳輸特性以達到最優化的維納濾波器。

2.2 自适應濾波器的原理

所謂的自适應濾波,就是利用前一時刻以獲得的濾波器參數的結果,自動的調節現時刻的濾波器參數,以适應信号和噪聲未知的或随時間變化的統計特性,進而實作最優濾波。自适應濾波器實質上就是一種能調節其自身傳輸特性以達到最優的維納濾波器。自适應濾波器不需要關于輸入信号的先驗知識,計算量小,特别适用于實時處理。由于無法預先知道信号和噪聲的特性或者它們是随時間變化的,僅僅用FIR和II種具有固定濾波系數的濾波器無法實作最優濾波。在這種情況下,必須設計自适應濾波器,以跟蹤信号和噪聲的變化。自适應濾波器的特性變化是由自适應算法通過調整濾波器系數來實作的。一般而言,自适應濾波器由兩部分組成,一是濾波器結構,二是調整濾波器系數的自适應算法。自适應濾波器的結構采用FIR或IIR結構均可,由于IIR濾波器存在穩定性問題,是以一般采用FIR濾波器作為自适應濾波器的結構。圖1-1示出了自适應濾波器的一般結構。

在這裡插入圖檔描述

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

圖1-1為自适應濾波器結構的一般形式,圖中x

(k)輸入信号,通過權系數可調的數字濾波器後産生輸出信号y (k),将輸出信号y

(k)與标準信号(期望信号)d(k)進行比較,得到誤差信号e (k)。e (k)和x

(k)通過自适應算法對濾波器的權系數進行調整,調整的目的使得誤差信号e

(k)最小。重複上面過程,濾波器在自己的工作過程中逐漸了解到輸入信号和噪聲的統計規律,并以此為根據自動調整濾波器權系數,進而達到最佳濾波效果。一旦輸入的統計規律發生變化,濾波器能夠自動跟蹤輸入信号變化,自動調整濾波器的權系數,最終達到濾波效果,實作自适應過程。

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

圖1-2是使用自适應濾波器的系統識别原理圖。

自适應濾波器的結構可以采用FIR或IIR濾波器存在穩定性問題,是以一般采用FIR濾波器作為自适應濾波器的結構。自适應FIR濾波器結構又可分為3種結構類型:橫向型結構(Transversal

Structure)、對稱橫向型結構(Symmetric Transversal

Structure)以及格型結構(Lattice

Struture)。本文采用自适應濾波器設計中最常用的FIR橫向型結構。

2.3自适應濾波算法

由Widrow和Hoff引入的最小均方(LMS)算法,由于其簡單性、運算高效性各種運作條件下良好的性能,而被廣泛應用。基于梯度的最小均方(LMS)算法是最基本的算法,其含義相對簡單明了。標明均方誤差為權矢量二次函數時,性能度量曲線可以形象地看成一個碗形曲面這樣自适應處理器的任務便是不斷地向最低點逼近,即可以通過計算梯度的方法實作性能度量的最優化。而基于梯度的算法中,最簡單的一種就是最小均方算法LMS算法,LMS算法使用的準則是使均衡器的期望輸出值和實際輸出值之間的均方誤差(MSE)最小化的準則,依據輸入信号在疊代過程中估計梯度矢量,并更新權系數以達到最優的自适應疊代算法。這算法不需要計算相應的相關函數,也不需要進行矩陣運算。自适應濾波器最普通的應用就是橫向結構。濾波器的輸出信号y(n)是y(n)

(2-1)

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

T表示轉置矩陣,

n是時間指針,N是濾波器次數。這個例子就是有限脈沖響應濾波器的形式,為x(n)和w(n)兩個矩陣卷積。

這種自适應算法使用誤差信号:

(2-2)

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

為了友善起見,将上述式子表示為向量形式,則上述式子表示為:

(2-3)

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

誤差序列可寫為:

(2-4)

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

其中d(n)是期望信号,y(n)是濾波器的輸出。使用輸入向量x(n)和e(n)來更新自适應濾波器的最小化标準的相關系數。

顯然,自适應濾波器控制機理是用誤差序列e(n)按照某種準則和算法對其系數{wi(n)},i=1,2,…,N進行調節的,最終使自适應濾波的目标(代價)函數最小化,達到最佳濾波狀态。

本節所用的标準是最小均方誤差(MSE)。

(2-5) 在這裡插入圖檔描述

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼
自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

這個解稱為維納解,即最佳濾波系數值。因為均方誤差(MSE)函數是濾波系數w的二次方程,由此形成一個多元的超抛物面,這好像一個碗狀曲面又具有唯一的碗底最小點,通常稱之為自适應濾波器的誤差性能曲面。當濾波器工作在平穩随機過程的環境下,這個誤差性能曲面就具有固定邊緣的恒定形狀。自适應濾波系數的起始值{wi(0)},i=1,2,…,N是任意值,位于誤差性能曲面上某一點,經過自适應調節過程,使對應于濾波系數變化的點移動,朝碗底最小點方向移動,最終到達碗底最小點,實作了最佳維納濾波。

自适應過程是在梯度矢量的負方向接連的校正濾波系數的,即在誤差性能曲面的最陡下降法方向移動和逐漸校正濾波系數,最終到達均方誤差為最小的碗底最小點,獲得最佳濾波或準最優工作狀态。廣泛使用的LMS算法是一種選擇性法适應采樣和采樣基礎。這個方法可以避免複雜的計算。LMS算法是最陡下降法,在這個算法中,向量w(n+1)通過改變對最小均方誤差性能的負梯度比例自适應濾波算法及應用研究來增強。

2.4 TMS320VC5402的簡介

TMS320VC5402是公司的定點數字信号處理晶片,是一種特殊結構的微處理器,為了達到快速進行數字信号處理的目的,采用程式與資料分開的總線結構,流水線操作,單周期完成乘法的硬體乘法器以及一套适合數字信号處理的指令集。

2.4.1 TMS320VC5402的主要特點

TMS320VC5402處理器在本系列中處于先進水準。它具有運算速度快,内部存儲空間大,外部接口性能好等優點。是以我選擇了技術上比較先進,價格又較便宜的C5402作為硬體開發對象。下面結合C5402的實際情況,介紹一下該晶片的體系結構。C5402共有144個引腳,其中有20根位址線AO-A19,16根資料線DO-D15,4個外部可屏蔽引腳INTO#-INT3#和一個不可屏蔽中斷引腳BIO#,剩下的引腳可以分成以下幾類:存儲器控制引腳,時鐘/晶振引腳,多通道緩沖序列槽引腳,主機接口通訊引腳,電源引腳,初始化和複位引腳,通用輸入/輸出引腳,以及用于測試的IEEE1149.

1标準JTAG口。

2.4.2. TMS320VC5402 DSK工作原理

TMS320VC5402 DSK是以TMS320VC5402處理器為核心的DSP 初學者工具(DSP Starter

Kit)。它提供了一個低功耗,獨立的開發平台,使使用者能評估和開發C54X

DSP的應用程式,同時也可以作為以其他晶片為核心的DSP硬體設計的參考。TMS320VC5402

DSK的結構框圖如圖2.2所示,主要包括以下部分:

• 100M VC5402 DSP

• 64K16位的SRAM存儲器

• 256K16位的FLASH存儲器

• JTAG仿真測試總線控制器(JTAG TBC)和并行接口控制器(Parallel

Port Controller)

• 電話網絡接口(DAA)

• 麥克風/揚聲器音頻接口

• RS-232異步資料接口

• 擴充子闆接口(MEMORY I/F和PERIPHERAL I/F)。

第3章 總體方案設計

3.1 無限沖激響應(IIR)濾波器

3.1.1 自适應IIR濾波器的基本原理

圖3-1為自适應IIR濾波器的基本結構,其輸入為x(n),輸出為y(n),濾波器由可變系數IIR濾波器和遞歸算法組成,遞歸算法通過預測誤差e(n)去調系數θ(n),以使輸出y(n)按某種準則逼近于期望響應d(n)。θ為描述濾波器具有零點和極點轉移函數的系數參數。濾波器輸出誤差e(n)=d(n)-y(n)是按某種準則,如均方誤差(MSE)或遞歸最小二乘(RLS)準則等,使e2

(n)最小化,可調整IIR系數使輸出信号y(n)逼近于期望響應d(n) 。

3.1.2 IIR濾波器的一般結構

根據前面所介紹的IIR濾波器的傳遞函數可表示為:

(3-1)

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼
自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

3.2 有限沖激響應(FIR)濾波器

3.2.1 FIR橫向型濾波器的一般結構

如圖3-4所示。這種結構僅包含有由延遲級數所決定的有限個存儲單元,可歸結為有限沖激響應(FIR)或橫向濾波器(Kallman)。輸入信号被若幹延遲單元延時,其延遲時間可以是連續的。這些延遲單元的輸出與存儲的一組權系數依次相乘,将其乘積相加得到輸出信号。這意味着輸出是輸入信号與所存儲的權系數或沖激響應的卷積。這種濾波結構僅包含有零點(因為沒有遞歸回報單元),是以,若要獲得銳截止的頻率特性,則需要有大量的延遲單元。不過,這種濾波器始終是穩定的,并能提供線性相位特性。圖3-4是橫向型濾波器的結構示意圖。、

自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼
自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼
自适應濾波器的設計(終極版)參考文獻緻 謝附錄 自适應濾波源代碼

第5章 總結

從任務的下達,選擇課題,查閱文獻和資料,到課題的正式設計,整個過程曆時兩周。為了實作基于DSP的自适應濾波器的設計,我首先了解了自适應濾波器的原理及國内外研究狀況,确定此次課程設計的意義和思路。我和譚小芳組成小組,共同協作完成此次課程設計任務,在總體上,譚小芳負責硬體的設計,我負責軟體的設計及程式設計,并完成了仿真與調試,得出正确的仿真結果。

在這次課程設計過程中,學習上和思想上我都受益匪淺,不僅加強了我獨立思考問題和解決問題的能力,同時了解到團隊合作的重要性。另外,我還認識到理論知識與實踐相結合的重要性,隻有将理論知識應用于實踐中,才能更好的掌握和了解所學知識。由于自身知識水準有限,本文所做的工作也隻是一些初步研究,文中還有很多不足之處,有些問題還有待進一步完善。

參考文獻

[1] 張雄偉,曹鐵勇,陳亮. DSP

晶片的原理與開發應用(第四版).北京:電子工業出版社,2009.

[2] 李紹勝,趙振濤. TMS320C5000 系列DSP開發應用技巧[M].北京:中國電力出版社,2007.

[3]

鄭寶玉.

自适應濾波器原理[M].

北京:電子工業出版社,2006.

[4]

朱銘锆,趙勇,甘泉.

DSP應用系統設計

[M].北京:電子工業出版社, 2002.

[5]

彭啟琮,張詩雅.

TI DSP內建化開發環境使用手冊——TI

DSP系列中文手冊

[M].北京:清華大學出版社,

2005.

[6] 何振亞.自适應信号處理.北京:科學出版社,2002

[7] 安穎,侯國強. 自适應濾波算法研究與DSP 實作[J ]. 現代電子技術,2007.

[8] 彭啟蹤. DSP 與實時數字信号處理[M] . 成都:電子科技大學出版社,1995.

緻 謝

在緊迫的兩個星期内終于完成了此次課程設計,通過此次課程設計,我在學習上和思想上都受益匪淺,深刻了解到理論知識與實踐相結合的重要性,隻有不斷地通過動手操作和獨立思考才能真正的掌握所學知識。

本文是在劉老師的親切關懷和悉心指導下完成的,首先,衷心感謝我的指導老師,在我整個課程設計制作過程中,從論文的選題、研制計劃的安排到論文的具體的内容,劉老師都給予了悉心的指導,課題進行期間,劉老師寬人律己的高尚品德,務實的工作作風,高度的責任心深深打動着我,一直激勵着我們開拓進取,使學生倍受教育。論文中每一成果的獲得均凝聚了導師們的心血和智慧。在此我衷心感謝劉老師的幫助和悉心的指導,同時感謝所有關心、幫助過我的同學和朋友們。在課題進行到比較困難的時候,能給我提出寶貴的合理意見。沒有你們的大力支援,我的課程設計也不可能這樣順利進行。在此深深的表達謝意!

附錄 自适應濾波源代碼

DATA_SIZE .set 256 ;

FILTER .set 10 ;

STACK_SIZE .set 256 ;

STACK .usect “stack”,STACK_SIZE

SYSTEM_STACK .set STACK_SIZE+STACK

DATA_DP .usect “filter_vars”,0

filter .usect “filter_vars”,FILTER*2

outputdata .usect “filter_vars”,DATA_SIZE

errrordata .usect “filter_vars”,DATA_SIZE

.def start

.data

.global inputdata

Inputdata

.word 10408,16451,10820,12227,18146,13106,11485

.word 15737,9840,3644,8171,4118,-4355,-624

.word -2443,-11575,-10290,-8288,-16156,-16663,-10543

.word -15433,-17113,-8010,-11188,-11286,-3102,-2176

.word -3726,4075,8836,3665,10937,16347,11278

.word 13449,19214,13116,11330,16515,10916,4581

.word 7920,4852,-3773,-1259,-2437,-12459,-10499

.word -8657,-16091,-15654,-11133,-15864,-17015,-8342

.word -10862,-11228,-2376,-1394,-3423,4160,7802

.word 5087,10683,16178,11318,12040,18459,13601

.word 10019,16146,10320,4708,9071,3873,-4214

.word -704,-3586,-11606,-9998,-8837,-17008,-16095

.word -10402,-15357,-16675,-8536,-11140,-11943,-2908

.word -1887,-4719,5099,7887,5169,10683,16744

.word -10076,-8626,-17231,-15279,-10646,-16684,-17179

.word -7936,-10141,-11216,-2285,-903,-3720,5052

.word 7833,3880,10946,16387,10515,12519,18743

.word 12257,10662,16038,10388,3906,9196,4417

.word -4219,-912,-2419,-11865,-11209,-9233,-16353

.word -15469,-10824,-15744,-17280,-9320,-10469,-11427

.word -2313,-875,-4650,4739,8016,4821,9834

.word 15507,10613,12142,18944,12333,11383,15673

.word 10308,4892,8156,4732,-4849,-955,-2853

.word -11303,-11279,-9263,-16185,-15864,-9999,-16150

.word -16554,-8656,-10620,-12215,-2220,-836,-3474

.word 4939,9086,4804,10259,15884,10219,12041

.word 18582,13394,10321,15635,10087,4313,8034

.word 5145,-4469,-908,-2155,-12436,-11063,-8792

.word -16193,-16849,-10633,-15990,-16297,-8395,-10178

.word -11597,-2151,-600,-3487,3862,9267,5004

.word 9600,15632,10160,13017,18309,13654,9879

.word 15890,9795,4551,8900,4029,-4107,-1672

.word -3324,-11575,-9976,-8166,-17320,-15900,-10976

.word -15948,-15898,-8530,-10618,-11542,-2163,-1343

.word -4333,5094,8127,4794

.global referdata

Referdata

.word 10408,16451,10820,12227,18146,13106

.word 15737,9840,3644,4118,-4355,-624

.word -2443,-11575,-10290,-8288,-16156,-16663,-10543

.word -15433,-17113,-8010,-11188,-11286,-3102,-2176

.word -3726,4075,8836,3665,10937,16347,11278

.word 13449,19214,13116,11330,16515,10916,4581

.word 7920,4852,-3773,-1259,-2437,-12459,-10499

.word -8657,-16091,-15654,-11133,-15864,-17015,-8342

.word -10862,-11228,-2376,-1394,-3423,4160,7802

.word 5087,10683,16178,11318,12040,18459,13601

.word 10019,16146,10320,4708,9071,3873,-4214

.word -704,-3586,-11606,-9998,-8837,-17008,-16095

.word -10402,-15357,-16675,-8536,-11140,-11943,-2908

.word -1887,-4719,5099,7887,5169,10683,16744

.word 11122,12021,18500,12911,10354,16272,10118

.word 5139,8244,3601,-3640,-574,-3111,-12231

.word -10076,-8626,-17231,-15279,-10646,-16684,-17179

.word -7936,-10141,-11216,-2285,-903,-3720,5052

.word 78333,3880,10946,16387,10515,12519,18743

.word 12257,10662,16038,10388,3906,9196,4417

.word -4219,-912,-2419,-11865,-11209,-9233,-16353

.word -15469,-10824,-15744,-17280,-9320,-10469,-11427

.word -2313,-875,-4650,4739,8016,4821,9834

.word 15507,10613,12142,18944,123333,11383,15673

.word 10308,4892,8156,4732,-4849,-955,-2853

.word -11303,-11279,-9263,-16185,-15864,-9999,-16150

.word -16554,-8656,-10620,-12215,-2220,-836,-3474

.word 4939,9086,4804,10259,15884,10219,12041

.word 18582,13394,10321,15635,10087,4313,8034

.word 5145,-4469,-908,-2155,-12436,-11063,-8792

.word -16193,-16849,-10633,-15990,-16297,-8395,-10178

.word -11597,-2151,-600,-3487,3862,9267,5004

.word 9600,15632,10160,13017,18309,13654,9879

.word 15890,9795,4551,8900,4029,-4107,-1672

.word -3324,-11575,-9976,-8166,-17320,-15900,-10976

.word -15948,-15898,-8530,-10618,-11542,-2163,-1343

.word -4333,5094,8127,4794

.text

.asg AR2,INPUTDATA

.asg AR3,FILTER

.asg AR4,OUTPUTDATA

.asg AR5,ERRORDATA

.asg AR6,REFERDATA

Start: SSBX FRCT

SSBX INTM

LD #DATA_DP,DP

STM #80,AR3

RPT #10

MVPD inputdata,*AR3+

STM #STACK,SP

CALL lmsfilter_start

NOP

NOP

LOOP: B LOOP

.def delta

.def lmsfilter_start

Delta .set -08F5H

One .set 0001h

.text

Lmsfilter_start:

STM #inputdata,INPUTDATA

STM #filter,FILTTER

STM #outputdata+9,OUTPUTDATA

STM #errordata+9,ERRORDATA

STM #referdata+9,REFERDATA

STM #filter+15,AR1

STM #DATA_SIZE-10-1,BRC

RPTB lmsfilter_end

SUB B,B

RPT #9

LMS *INPUTDATA+,*FILTER+

STH B,*AR1

SUB B,B

LD *AR1,B

STL B,*OUTPUTDATA+

SUB *BREFERDATA+,B

STL B,*ERRORDATA

MPY *ERRORDATA+,#delta,B

STH B,*AR1

SUB B,B

LD *AR1,B

STL B,*AR1

MPY *AR1,#one,B

PSHM RSA

PSHM REA

PSHM BRC

LD *INPUTDATA-,A

LD *FILTER-,A

STM #9,BRC

RPTB circle_end

SUB A,A

LD B,A

MPY *INPUTDATA-,B

STB B,*AR1

SUB B,B

LD *AR1,B

ADD *FILTER,B

STL B,*FILTER-

SUB B,B

LD A,B

NOP

Circle_end: NOP

NOP

STM #DATA_SIZE-10-1,BRC

RPTB lmsfilter_end

POPM BRC

POPM REA

POPM RSA

NOP

NOP

LD *INPUTDATA+,A

LD *INPUTDATA+,A

LD *FILTER+,A

LD *REFERDATA,A

NOP

Lmsfilter_end: RET

.end

繼續閱讀