DSP課程設(shè)計_fir數(shù)字濾波器_第1頁
DSP課程設(shè)計_fir數(shù)字濾波器_第2頁
DSP課程設(shè)計_fir數(shù)字濾波器_第3頁
DSP課程設(shè)計_fir數(shù)字濾波器_第4頁
DSP課程設(shè)計_fir數(shù)字濾波器_第5頁
已閱讀5頁,還剩35頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、一、課題研究的目的和意義: 在信號與信息處理中,提取有用信息需要對信號進(jìn)行濾波。借助DSP數(shù)字信號處理器的高速運(yùn)算能力,可以實(shí)時地對信號進(jìn)行數(shù)字濾波。本設(shè)計要求利用DSP的DMA方式進(jìn)行信號采集和信號輸出,同時對外部輸入的信號進(jìn)行數(shù)字濾波。 掌握利用DSP 實(shí)現(xiàn)信號實(shí)時FIR 濾波設(shè)計可使學(xué)生更加透徹的理解信號的采集方法和濾波方法。學(xué)會利用Matlab 對信號進(jìn)行FIR 濾波,掌握Matlab 的信號仿真。同時通過對DSP 信號處理器及A/D、D/A 轉(zhuǎn)換器以及DMA 的編程,可以培養(yǎng)學(xué)生C 語言編程能力以及使用DSP 硬件平臺實(shí)現(xiàn)數(shù)字信號處理算法的能力。二、課題研究主要內(nèi)容:1.基本部分:(

2、1) 掌握利用濾波器設(shè)計FIR濾波器的方法,并提取濾波器參數(shù)。(2) 掌握利用Matlab的信號處理工具箱的使用,以及利用Matlab對信號進(jìn)行濾波。(3) 設(shè)計數(shù)字濾波算法,或調(diào)用DSPLIB中的濾波函數(shù),實(shí)現(xiàn)對信號的濾波。(4) 利用C語言對A/D、D/A進(jìn)行初始化。(5) 利用C語言對DMA進(jìn)行初始化。(6) 編寫DMA中斷服務(wù)程序,實(shí)現(xiàn)信號的實(shí)時濾波。(7) 利用CCS信號分析工具分析信號的頻譜成分,確定濾波器的參數(shù)2.發(fā)揮部分:(1)比較加不同窗和階數(shù)時濾波器的濾波效果。(2)測試所設(shè)計濾波器的幅頻特性和相頻特性,并與MATLIB下的設(shè)計結(jié)果進(jìn)行比較。(3)在實(shí)驗(yàn)板的Line in輸

3、入端接入正弦信號,分左右聲道分別采集,并分別濾波。三、要求完成的任務(wù):(1)利用Matlab設(shè)計FIR濾波器,并對信號進(jìn)行濾波。(2)掌握CCS的安裝、設(shè)置,工程的建立、工程設(shè)置、編譯運(yùn)行和調(diào)試方法。(3)編寫C語言程序?qū)崿F(xiàn)設(shè)計要求,并在CCS集成開發(fā)環(huán)境下調(diào)試通過,實(shí)現(xiàn)設(shè)計所要求。的各項(xiàng)功能。(4)利用信號發(fā)生器產(chǎn)生輸入信號,經(jīng)DSP運(yùn)算后正確地在示波器上顯示。(5)按要求撰寫課程設(shè)計報告。四、研究方法及技術(shù)途徑:利用DSP實(shí)現(xiàn)對模擬信號濾波的框圖 外部模擬信號先進(jìn)行A/D轉(zhuǎn)換,利用MCBSP的接收寄存器接收數(shù)據(jù)。利用CCS的頻譜分析工具對輸入信號進(jìn)行頻譜分析;根據(jù)頻譜成分確定濾波器參數(shù),然

4、后利用Matlab設(shè)計FIR濾波器,將參數(shù)提取出來,存放到DSP存儲區(qū)中。調(diào)用DSPLIB中的FIR濾波函數(shù),對信號進(jìn)行濾波。濾波后的數(shù)據(jù)利用DMA方式送到D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬信號。 本設(shè)計可以分為兩部分:(1) 信號仿真(a)首先利用Matlab的fdatool工具箱設(shè)計濾波器,在sptool工具箱進(jìn)行信號分析與濾波。(b)利用CCS進(jìn)行信號濾波算法的仿真,即利用simulator進(jìn)行仿真。調(diào)用DSPLIB庫中的fir()濾波函數(shù)實(shí)現(xiàn)信號FIR濾波,或自行編寫FIR濾波程序?qū)崿F(xiàn)信號FIR濾波。(2) 利用Emulator,即DSP硬件板、采用DMA方式實(shí)現(xiàn)信號采集與傳輸,結(jié)合FIR濾波算法

5、,實(shí)現(xiàn)實(shí)時FIR濾波。五、實(shí)驗(yàn)背景:1.課題研究的現(xiàn)狀: 凡是有能力進(jìn)行信號處理的裝置都可以稱為濾波器。在近代電信設(shè)備和各類控制系統(tǒng)中,濾波器應(yīng)用極為廣泛;在所有的電子部件中,使用最多,技術(shù)最為復(fù)雜的要算濾波器了。濾波器的優(yōu)劣直接決定產(chǎn)品的優(yōu)劣,器的研究和生產(chǎn)歷來為各國所重視。 1917年美國和德國科學(xué)家分別發(fā)明了LC濾波器,次年導(dǎo)致了美國第一個多路復(fù)用系統(tǒng)的出現(xiàn)。20世紀(jì)50年代無源濾波器日趨成熟。自60年代起由于計算機(jī)技術(shù)、集成工藝和材料工業(yè)的發(fā)展,濾波器發(fā)展上了一個新臺階,并且朝著低功耗、高精度、小體積、多功能、穩(wěn)定可靠和價廉方向努力,其中小體積、多功能、高精度、穩(wěn)定可靠成為70年代以后

6、的主攻方向。導(dǎo)致RC有源濾波器、數(shù)字濾波器、開關(guān)電容濾波器和電荷轉(zhuǎn)移器等各種濾波器的飛速發(fā)展,到70年代后期,上述幾種濾波器的單片集成已被研制出來并得到應(yīng)用。80年代,致力于各類新型濾波器的研究,努力提高性能并逐漸擴(kuò)大應(yīng)用范圍。90年代至現(xiàn)在主要致力于把各類濾波器應(yīng)用于各類產(chǎn)品的開發(fā)和研制。當(dāng)然,對濾波器本身的研究仍在不斷進(jìn)行。 我國廣泛使用濾波器是50年代后期的事,當(dāng)時主要用于話路濾波和報路濾波。經(jīng)過半個世紀(jì)的發(fā)展,我國濾波器在研制、生產(chǎn)和應(yīng)用等方面已納入國際發(fā)展步伐,但由于缺少專門研制機(jī)構(gòu),集成工藝和材料工業(yè)跟不上來,使得我國許多新型濾波器的研制應(yīng)用與國際發(fā)展有一段距離。我國現(xiàn)有濾波器的種

7、類和所覆蓋的頻率己基本上滿足現(xiàn)有各種電信設(shè)備。從整體而言,我國有源濾波器發(fā)展比無源濾波器緩慢,尚未大量生產(chǎn)和應(yīng)用。從下面的生產(chǎn)應(yīng)用比例可以看出我國各類濾波器的應(yīng)用情況:LC濾波器占50%;晶體濾波器占20%:機(jī)械濾波器占15%;陶瓷和聲表面濾波器各占1%;其余各類濾波器共占13%。從這些應(yīng)用比例來看,我國電子產(chǎn)品要想實(shí)現(xiàn)大規(guī)模集成,濾波器集成化仍然是個重要課題。 在上一個世紀(jì)中,電濾波器的發(fā)展經(jīng)歷了從無源到有源和從模擬到數(shù)字兩個過程。高精度無源濾波器從設(shè)計到制造都是難度非常高的技術(shù)。有源濾波器雖然很大地改進(jìn)了濾波器的性能,也降低了一些制造工藝的難度,但從其性能的大幅度改進(jìn),與其它信號處理技術(shù)的

8、結(jié)合,實(shí)現(xiàn)的手段之便捷,還是要數(shù)數(shù)字濾波器后來居上。隨著電子工業(yè)的發(fā)展,對濾波器的性能要求越來越高,功能也越來越多,并且要求它們向集成方向發(fā)展。我國濾波器研制和生產(chǎn)與上述要求相差甚遠(yuǎn),為縮短這個差距,電子工程和科技人員負(fù)有重大的歷史責(zé)任陰。所以,對濾波器的研究和生產(chǎn)歷來為各國所重視。2.國內(nèi)外相關(guān)領(lǐng)域的研究:20世紀(jì)60年代以來,隨著計算機(jī)和信息技術(shù)的飛速發(fā)展,數(shù)字信號處理技術(shù)應(yīng)運(yùn)而生,并得到了迅猛的發(fā)展。當(dāng)時還沒有DSP,數(shù)字信號處理只能依靠MPU來完成。但MPU(微處理器)的速度無法滿足高速實(shí)時的要求。因此數(shù)字信號處理技術(shù)多是停留在理論上,得不到廣泛的應(yīng)用,但這為DSP的誕生打下了基礎(chǔ)。7

9、0年代至80年代初是DSP發(fā)展的第二階段。70年代初,有人提出了DSP的理論和算法基礎(chǔ)。但是直到1978,世界上第一個世界上第一枚DSP才誕生,它是由1978AMI公司發(fā)布的S2811。1979年美國Intel公司發(fā)布的商用可編程器件2920是DSP芯片的一個主要里程碑;1980年NEC公司推出的PD7720是第一個具有乘法器的商用DSP芯片。美國德州儀器公司Texas Instruments也于1982年推出了其第一代DSP芯片TMS32010及其系列產(chǎn)品,它們都是基于NMOS工藝。此時的DSP運(yùn)行速度較以前的MPU有了較大的提高,但由于制造工藝所限,體積和功耗都比較大,內(nèi)部資源較少,且價格

10、昂貴。80年代中期直到現(xiàn)在是DSP得到了蓬勃發(fā)展并廣泛應(yīng)用的時期。80年代中期,隨著大規(guī)模集成電路技術(shù)尤其是CMOS技術(shù)的發(fā)展,基于CMOS工藝的DSP應(yīng)運(yùn)而生,體積功耗都大大減少,而存儲容量和運(yùn)算速度都得到成倍提高,成為語音處理、圖像硬件處理技術(shù)的基礎(chǔ);80年代后期,DSP運(yùn)算速度進(jìn)一步提高,應(yīng)用范圍逐步擴(kuò)大到通信、計算機(jī)領(lǐng)域。90年代直到現(xiàn)在,DSP發(fā)展最快,此時的DSP集成度極高,體積、功耗進(jìn)一步減少,內(nèi)部資源更是成倍增加,而價格卻進(jìn)一步下降。此時,DSP芯片不僅在通信、計算機(jī)領(lǐng)域大顯身手,而且已擴(kuò)大到人們的學(xué)習(xí)、工作和生活的各個方面。生產(chǎn)DSP 器件的公司也不斷壯大,目前,市場占有率前

11、四名依次為:Texas Instruments、 Lucent 、Analog Device、Motorola。在所有生產(chǎn)DSP的公司中,TI可謂一枝獨(dú)秀,它是世界上最大的DSP供應(yīng)商,TI系列的DSP也是公認(rèn)的最成功的DSP。其DSP市場份額占全世界份額近50%。其產(chǎn)品覆蓋了高、中、低端幾乎所以市場,廣泛應(yīng)用于各種領(lǐng)域。自從在1982年成功推出了其第一代DSP TMS32010及其系列產(chǎn)品TMS32011、TMS320C10/C14/C15等,TI相繼推出了第二代DSP TMS32020、TMS320C25/C26/C28,第三代DSP TMS320C30/C31/C32,第四代DSP TM

12、S320C40/C44,第五代DSP TMS3205X/C54X/C55X及目前速度最快的第六代DSP TMS320C62X/C67X等等。DSP器件應(yīng)用面從起初的局限于軍工,航空航天等軍事領(lǐng)域,擴(kuò)展到今天的諸多電子行業(yè)及消費(fèi)類電子產(chǎn)品中。在TI公司的 DSP 產(chǎn)品中C1X、C2X、C2XX、C5XX、C54X、C62X等系列是定點(diǎn)運(yùn)算指令系統(tǒng)的DSP;C3X、C4X、C67X等系列是浮點(diǎn)運(yùn)算指令系統(tǒng)的DSP;AV7100、AV7110等系列是用于視頻、音頻領(lǐng)域的專用數(shù)字壓縮產(chǎn)品。六、實(shí)驗(yàn)原理:1.DSP:一個典型的 DSP 系統(tǒng)如下圖所示:該圖是一個用DSP做信號處理的典型框圖。由于DSP是

13、用來對數(shù)字信號進(jìn)行處理的,所以首先必須將輸入的模擬信號變換為數(shù)字信號。于是先對輸入模擬信號進(jìn)行調(diào)整,輸出的模擬信號經(jīng)過A/D變換后變成DSP可以處理的數(shù)字信號,DSP根據(jù)實(shí)際需要對其進(jìn)行相應(yīng)的處理,如FFT、卷積等;處理得到的結(jié)果仍然是數(shù)字信號,可以直接通過相應(yīng)通信接口將它傳輸出去,或者對它進(jìn)行D/A變換將其轉(zhuǎn)換為模擬采樣值,最后再經(jīng)過內(nèi)插和平滑濾波就得到了連續(xù)的模擬波形模擬信號。當(dāng)然,圖中的有些環(huán)節(jié)并不是必需的。如A/D轉(zhuǎn)換,如果輸入的是數(shù)字信號,就可以直接交給DSP進(jìn)行運(yùn)算。由于數(shù)字信號處理系統(tǒng)是以數(shù)字信號處理理論為基礎(chǔ),所以具有數(shù)字信號處理的全部優(yōu)點(diǎn):(1)接口方便 DSP 系統(tǒng)與其它以

14、數(shù)字技術(shù)為基礎(chǔ)的系統(tǒng)或設(shè)備都是相互兼容的,比模擬系統(tǒng)與這些系統(tǒng)接口要容易的多。(2)編程方便 DSP 系統(tǒng)中的可編程DSP芯片可以使設(shè)計人員在開發(fā)過程中靈活方便的進(jìn)行修改和升級,可以將C語言與匯編語言結(jié)合使用。(3)具有高速性 DSP系統(tǒng)的運(yùn)行較高,最新的DSP芯片運(yùn)行速度高達(dá)10GMIPS以上。(4)穩(wěn)定性好DSP 系統(tǒng)以數(shù)字處理為基礎(chǔ), 受周圍環(huán)境,如噪聲、溫度等的影響小、可靠性高;(5)精度高 例如16位數(shù)字系統(tǒng)可以達(dá)到10-5的精度;(6)可重復(fù)性好 模擬系統(tǒng)的性能受元件參數(shù)性能變化影響大,而數(shù)字系統(tǒng)基本不受影響,更便于測試、調(diào)試和大規(guī)模生產(chǎn)。(7)集成方便 DSP系統(tǒng)中的數(shù)字部件有高

15、度的規(guī)范性,便于大規(guī)模生產(chǎn)。當(dāng)然DSP也存在一定的缺點(diǎn)。例如,對于一些簡單的信號處理任務(wù),如與模擬交換線的電話接口,若采用DSP則使成本增加。另外,DSP 系統(tǒng)中的高速時鐘通常在幾十兆赫,可能帶來高頻干擾和電磁泄漏等問題, 而且DSP 的功率消耗在系統(tǒng)中也是較大的。此外,DSP技術(shù)發(fā)展得很快,數(shù)學(xué)知識要求多,開發(fā)和調(diào)試工具還很不完善。雖然DSP系統(tǒng)還存在一些缺點(diǎn),但是隨著近兩年來 DSP 技術(shù)突飛猛進(jìn)的發(fā)展,成本的下降,很多問題都得到了緩解。其突出的優(yōu)點(diǎn)已經(jīng)使其在通信、語音、圖像、雷達(dá)、生物醫(yī)學(xué)、工業(yè)控制、儀器儀表等許多領(lǐng)域得到越來越廣泛的應(yīng)用。2.DMA技術(shù): 直接存儲器訪問(Direct

16、Memory Access,簡稱DMA)是C55x DSP非常重要的片上外設(shè),DMA控制器可以在不影響CPU的情況下完成數(shù)據(jù)的傳輸,因此數(shù)據(jù)傳輸速度快,在要求信號實(shí)時采集和處理的系統(tǒng)中常采用DMA方式進(jìn)行信號采集與傳輸。TMS320C5502有6個可獨(dú)立編程的DMA通道,每個DMA通道受各自的5個16位寄存器控制:源地址寄存器DMSRC、目的地址寄存器DMDST、單元計數(shù)寄存器DMCTR、同步事件和幀計數(shù)寄存器DMSFC、發(fā)送模式控制寄存器DMMCR。此外,DMA的6個通道還受通道優(yōu)先級和使能控制寄存器DMPREC控制。 DMA是指一種高速的數(shù)據(jù)傳輸操作,允許在外部設(shè)備和存儲器之間直接讀寫數(shù)據(jù)

17、,既不通過CPU,也不需要CPU干預(yù)。整個數(shù)據(jù)傳輸操作在一個稱為“DMA控制器”的控制下進(jìn)行。CPU除了在數(shù)據(jù)傳輸開始和結(jié)束時做一點(diǎn)處理外,在傳輸過程中還可以進(jìn)行其他的工作。這樣,在大部分時間里,CPU和輸入輸出都處于并行操作,因此使整個計算機(jī)系統(tǒng)的效率大大提高。DMA是所有現(xiàn)代電腦的重要特色,它允許不同速度的硬件裝置來溝通,而不需要依于 CPU 的大量中斷負(fù)載,否則,CPU 需要從來源把每一片段的資料復(fù)制到暫存器,然后把它們再次寫回到新的地方,在這個時間中,CPU對于其他的工作來說就無法使用。DMA傳輸將數(shù)據(jù)從一個地址空間復(fù)制到另外一個地址空間,當(dāng)CPU初始化這個傳輸動作,傳輸動作本身是由D

18、MA控制器來實(shí)行和完成。典型的例子就是移動一個外部內(nèi)存的區(qū)塊到芯片內(nèi)部更快的內(nèi)存區(qū)。像是這樣的操作并沒有讓處理器工作拖延,反而可以被重新排程去處理其他的工作。DMA 傳輸對于高效能嵌入式系統(tǒng)算法和網(wǎng)絡(luò)是很重要的。一個設(shè)備接口試圖通過總線直接向另一個設(shè)備發(fā)送數(shù)據(jù)(一般是大批量的數(shù)據(jù)), 它會先向CPU發(fā)送DMA請求信號。外設(shè)通過DMA的一種專門接口電路DMA控制器(DMAC),向CPU提出接管總線控制權(quán)的總線請求,CPU收到該信號后,在當(dāng)前的總線周期結(jié)束后,會按DMA信號的優(yōu)先級和提出DMA請求的先后順序響應(yīng)DMA信號。CPU對某個設(shè)備接口響應(yīng)DMA請求時,會讓出總線控制權(quán)。于是在DMA控制器的

19、管理下,外設(shè)和存儲器直接進(jìn)行數(shù)據(jù)交換,而不需CPU干預(yù)。數(shù)據(jù)傳送完畢后,設(shè)備接口會向CPU發(fā)送DMA結(jié)束信號,交還總線控制權(quán)。實(shí)現(xiàn)DMA傳送的基本操作如下:1、外設(shè)可通過DMA控制器向CPU發(fā)出DMA請求;2、CPU響應(yīng)DMA請求,系統(tǒng)轉(zhuǎn)變?yōu)镈MA工作方式,并把總線控制權(quán)交給DMA控制器;3、由DMA控制器發(fā)送存儲器地址,并決定傳送數(shù)據(jù)塊的長度;4、執(zhí)行DMA傳送;5、DMA操作結(jié)束,并把總線控制權(quán)交還CPU。DMA方式主要適用于一些高速的I/O設(shè)備。這些設(shè)備傳輸字節(jié)或字的速度非常快。對于這類高速I/O設(shè)備,如果用輸入輸出指令或采用中斷的方法來傳輸字節(jié)信息,會大量占用CPU的時間,同時也容易造

20、成數(shù)據(jù)的丟失。而DMA方式能使I/O設(shè)備直接和存儲器進(jìn)行成批數(shù)據(jù)的快速傳送。3.FIR低通濾波器:假設(shè)數(shù)字濾波器的頻率響應(yīng)函數(shù)H用下式表示:幅頻特性表示信號通過該濾波器后各頻率成分振幅衰減情況,而相頻特性反映各頻率成分通過濾波器后在時間上的延時情況。一般選頻濾波器的技術(shù)要求由幅頻特性給出,其相頻特性是確定的,所以在設(shè)計過程中,對相頻特性一般不作要求。在低通濾波器的幅頻特性中,Wp和Ws分別稱為通帶邊界頻率和阻帶截止頻率。從Wp到Ws稱為過渡帶,過渡帶上的頻響一半是單調(diào)下降的。當(dāng)沖擊響應(yīng)滿足下列條件時,F(xiàn)IR濾波器具有對稱結(jié)構(gòu),為線性相位濾波器:這種對稱性,可使得乘法器數(shù)量減半:對n價濾波器,當(dāng)

21、n為偶數(shù)時,乘法器的個數(shù)為n/2個;當(dāng)n為奇數(shù)時,乘法器的個數(shù)為(n+1)/2個。在電路實(shí)現(xiàn)中,乘法器占用的邏輯單元數(shù)較多。乘法器的增加,意味著電路成本增加,另外對電路的工作速度也有影響。在DSP的應(yīng)用中,可以應(yīng)用Matlab的濾波器設(shè)計工具箱fdatool工具箱生成需要的FIR濾波器,在生成C文件,提取出相應(yīng)的濾波數(shù)據(jù),應(yīng)用CCS來調(diào)用這些數(shù)據(jù),從而應(yīng)用DSP產(chǎn)生信號的濾波效果,這樣就實(shí)現(xiàn)了FIR的低通濾波效果。在信號處理中,濾波占有十分重要的地位。數(shù)字濾波是數(shù)字信號處理的基本方法。數(shù)字濾波與模擬濾波相比有很多優(yōu)點(diǎn),它除了可避免模擬濾波器固有的電壓漂移、溫度漂移和噪聲等問題外,還能滿足濾波器

22、對幅度和相位的嚴(yán)格要求。低通有限沖激響應(yīng)濾波器(低通FIR濾波器)有其獨(dú)特的優(yōu)點(diǎn),因?yàn)镕IR系統(tǒng)只有零點(diǎn),因此,系統(tǒng)總是穩(wěn)定的,而且容易實(shí)現(xiàn)線性相位和允許實(shí)現(xiàn)多通道濾波器。DSP(數(shù)字信號處理器)與一般的微處理器相比有很大的區(qū)別,它所特有的系統(tǒng)結(jié)構(gòu)、指令集合、數(shù)據(jù)流程方式為解決復(fù)雜的數(shù)字信號處理問題提供了便利,本文選用TMS320C54X作為DSP處理芯片,通過對其編程來實(shí)現(xiàn)FIR濾波器。對數(shù)字濾波器而言,從實(shí)現(xiàn)方法上,有FIR濾波器和無限沖激響應(yīng)(IIR)濾波器之分。由于FIR濾波器只有零點(diǎn),因此這一類系統(tǒng)不像IIR系統(tǒng)那樣易取得比較好的通帶與阻帶衰減特性。但是FIR系統(tǒng)有自己突出的優(yōu)點(diǎn):系

23、統(tǒng)總是穩(wěn)定的;易實(shí)現(xiàn)線性相位;允許設(shè)計多通帶(阻帶)濾波器。其中后兩項(xiàng)是IIR系統(tǒng)不易實(shí)現(xiàn)的。設(shè)a i(i=0,1,2,N-1)為濾波器的沖激響應(yīng),輸入信號為x(n),則FIR濾波器的輸入輸出關(guān)系為:         FIR濾波器的結(jié)構(gòu)如下圖所示:4. 乒乓操作: 輸入數(shù)據(jù)流通過“輸入數(shù)據(jù)選擇單元”將數(shù)據(jù)流等時分配到兩個數(shù)據(jù)緩沖區(qū),數(shù)據(jù)緩沖模塊可以為任何存儲模塊,比較常用的存儲單元為雙口 RAM(DPRAM)、單口RAM(SPRAM)、FIFO等。在第一個緩沖周期,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”;

24、在第2個緩沖周期,通過“輸入數(shù)據(jù)選擇單元”的切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊2”,同時將“數(shù)據(jù)緩沖模塊1”緩存的第1個周期數(shù)據(jù)通過“輸出數(shù)據(jù)選擇單元”的選擇,送到 “數(shù)據(jù)流運(yùn)算處理模塊”進(jìn)行運(yùn)算處理;在第3個緩沖周期通過“輸入數(shù)據(jù)選擇單元”的再次切換,將輸入的數(shù)據(jù)流緩存到“數(shù)據(jù)緩沖模塊1”,同時將“數(shù)據(jù)緩沖模塊2”緩存的第2個周期的數(shù)據(jù)通過“輸出數(shù)據(jù)選擇單元”切換,送到“數(shù)據(jù)流運(yùn)算處理模塊”進(jìn)行運(yùn)算處理。如此循環(huán)。 通過“輸入數(shù)據(jù)選擇單元”和“輸出數(shù)據(jù)選擇單元”按節(jié)拍、相互配合的切換,將經(jīng)過緩沖的數(shù)據(jù)流沒有停頓地送到“數(shù)據(jù)流運(yùn)算處理模塊”進(jìn)行運(yùn)算與處理。把乒乓操作模塊當(dāng)做一個整體,站在

25、這個模塊的兩端看數(shù)據(jù),輸入數(shù)據(jù)流和輸出數(shù)據(jù)流都是連續(xù)不斷的,沒有任何停頓,因此非常適合對數(shù)據(jù)流進(jìn)行流水線式處 理。所以乒乓操作常常應(yīng)用于流水線式算法,完成數(shù)據(jù)的無縫緩沖與處理。 通過乒乓操作實(shí)現(xiàn)低速模塊處理高速數(shù)據(jù)的實(shí)質(zhì)是:通過DPRAM這種緩存單元實(shí)現(xiàn)了數(shù)據(jù)流的串并轉(zhuǎn)換,并行用“數(shù)據(jù)預(yù)處理模塊1”和“數(shù)據(jù)預(yù)處理模塊2”處理分流的數(shù)據(jù),是面積與速度互換原則的體現(xiàn)。7、 實(shí)驗(yàn)流程:1.首先利用Matlab的fdatool工具箱設(shè)計濾波器,在sptool工具箱進(jìn)行信號分析與濾波:Matlab編程,產(chǎn)生題所要求的數(shù)字信號k=0:255;%取256點(diǎn)數(shù)據(jù)a=sin(2*pi*k*2000/32000)

26、;b=sin(2*pi*k*2000/32000)+ sin(2*pi*k*12000/32000);2.利用CCS進(jìn)行工程打開、編譯鏈接、裝載、運(yùn)行:3. 利用信號發(fā)生器產(chǎn)生輸入信號,經(jīng)DSP運(yùn)算后正確地在示波器上顯示:4. 變量觀察、圖形觀察:輸入時域、頻域:輸出時域、頻域:噪聲時域、頻域:5. 比較加不同窗和階數(shù)時濾波器的濾波效果:HammingHannBlackman七、實(shí)驗(yàn)程序:/* 利用DSP實(shí)現(xiàn)實(shí)時信號FIR濾波 */ /*main_dma4.c*/#include <stdio.h>#include <csl_mcbsp.h>#include <c

27、sl_dma.h>#include <csl_irq.h>#include <csl.h>#include <csl_chip.h>#include <csl_i2c.h>#include <csl_pll.h>#include <csl_emif.h>#include <csl_emifBhal.h>#include "5502_FLASH.h"#include "E2PROM_Function.h"#include "CODEC.h"#inc

28、lude <math.h>#include <tms320.h>#include <dsplib.h>#include "fir.h"/-Global data definition-/* Constants for the buffered ping-pong transfer */#define BUFFSIZE 96#define PING 0#define PONG 1/* * Data buffer declarations - the program uses four logical buffers of size * BU

29、FFSIZE, one ping and one pong buffer on both receive and transmit sides. */#pragma DATA_SECTION (gBufferXmtPing, "buffer_sect");Int16 gBufferXmtPingBUFFSIZE; / Transmit PING buffer#pragma DATA_SECTION (gBufferXmtPong, "buffer_sect");Int16 gBufferXmtPongBUFFSIZE; / Transmit PONG b

30、uffer#pragma DATA_SECTION (gBufferRcvPing, "buffer_sect");Int16 gBufferRcvPingBUFFSIZE; / Receive PING buffer#pragma DATA_SECTION (gBufferRcvPong, "buffer_sect");Int16 gBufferRcvPongBUFFSIZE; / Receive PONG bufferDATA *dbptr = &db0;DATA *dbptrx = &dbx0;/*-*/ Config McBSP:

31、 Use McBSP to send and receive the data between DSP and AIC23B/*-*/MCBSP_Config Mcbsp1Config = MCBSP_SPCR1_RMK( MCBSP_SPCR1_DLB_OFF, / DLB = 0 MCBSP_SPCR1_RJUST_LZF, / RJUST = 0,right justify the data and zero fill the MSBs MCBSP_SPCR1_CLKSTP_DISABLE, / CLKSTP = 0 MCBSP_SPCR1_DXENA_ON, / DXENA = 1,D

32、X delay enabler on 0, / Reserved = 0 MCBSP_SPCR1_RINTM_RRDY, / RINTM = 0 MCBSP_SPCR1_RSYNCERR_NO, / RSYNCER = 0 / MCBSP_SPCR1_RFULL_NO, / RFULL = 0 / MCBSP_SPCR1_RRDY_NO, / RRDY = 0 MCBSP_SPCR1_RRST_DISABLE / RRST = 0; Disable receiver ), MCBSP_SPCR2_RMK( MCBSP_SPCR2_FREE_NO, / FREE = 0 MCBSP_SPCR2_

33、SOFT_NO, / SOFT = 0 MCBSP_SPCR2_FRST_FSG, / FRST = 1 ; Enable the frame-sync logic MCBSP_SPCR2_GRST_CLKG, / GRST = 1 ; The sample rate generator is take out of its reset state MCBSP_SPCR2_XINTM_XRDY, / XINTM = 0 MCBSP_SPCR2_XSYNCERR_NO, / XSYNCER =0 / MCBSP_SPCR2_XEMPTY_NO, / XEMPTY = 0 / MCBSP_SPCR

34、2_XRDY_NO, / XRDY = 0 MCBSP_SPCR2_XRST_DISABLE / XRST = 0 Disable transimitter ), / 單數(shù)據(jù)相,接受數(shù)據(jù)長度為16位,每相2個數(shù)據(jù) MCBSP_RCR1_RMK( MCBSP_RCR1_RFRLEN1_OF(1), / RFRLEN1 = 1 MCBSP_RCR1_RWDLEN1_16BIT / RWDLEN1 = 2 ), MCBSP_RCR2_RMK( MCBSP_RCR2_RPHASE_SINGLE, / RPHASE = 0 MCBSP_RCR2_RFRLEN2_OF(0), / RFRLEN2 = 0

35、MCBSP_RCR2_RWDLEN2_8BIT, / RWDLEN2 = 0 MCBSP_RCR2_RCOMPAND_MSB, / RCOMPAND = 0 No companding,any size data, MSB received first MCBSP_RCR2_RFIG_YES, / RFIG = 1 Frame-sync ignore MCBSP_RCR2_RDATDLY_1BIT / RDATDLY = 1 1-bit data delay ), MCBSP_XCR1_RMK( MCBSP_XCR1_XFRLEN1_OF(1), / XFRLEN1 = 1 MCBSP_XCR

36、1_XWDLEN1_16BIT / XWDLEN1 = 2 ), MCBSP_XCR2_RMK( MCBSP_XCR2_XPHASE_SINGLE, / XPHASE = 0 MCBSP_XCR2_XFRLEN2_OF(0), / XFRLEN2 = 0 MCBSP_XCR2_XWDLEN2_8BIT, / XWDLEN2 = 0 MCBSP_XCR2_XCOMPAND_MSB, / XCOMPAND = 0 MCBSP_XCR2_XFIG_YES, / XFIG = 1 Unexpected Frame-sync ignore MCBSP_XCR2_XDATDLY_1BIT / XDATDL

37、Y = 1 1-bit data delay ), MCBSP_SRGR1_DEFAULT, MCBSP_SRGR2_DEFAULT, MCBSP_MCR1_DEFAULT, MCBSP_MCR2_DEFAULT, MCBSP_PCR_RMK( / MCBSP_PCR_IDLEEN_RESET, / IDLEEN = 0 MCBSP_PCR_XIOEN_SP, / XIOEN = 0 MCBSP_PCR_RIOEN_SP, / RIOEN = 0 MCBSP_PCR_FSXM_EXTERNAL, / FSXM = 0 Tranmit frame-syn is provided by AIC23

38、B MCBSP_PCR_FSRM_EXTERNAL, / FSRM = 0 Receive frame-syn is provided by AIC23B MCBSP_PCR_CLKXM_INPUT, / CLKR is input MCBSP_PCR_CLKRM_INPUT, / CLKX is input MCBSP_PCR_SCLKME_NO, / SCLKME=0 CLKG is taken from the McBSP internal input clock / MCBSP_PCR_CLKSSTAT_0, / The signal on the CLKS pin is low MC

39、BSP_PCR_DXSTAT_0, / Drive the signal on the DX pin low / MCBSP_PCR_DRSTAT_0, / The signal on the DR pin is low MCBSP_PCR_FSXP_ACTIVEHIGH, / FSXP = 1 Because a falling edge on LRCIN or LRCOUT starts data transfer MCBSP_PCR_FSRP_ACTIVELOW, / FSRP = 1 MCBSP_PCR_CLKXP_FALLING, / CLKXP = 1 The falling ed

40、ge of BCLK starts data transfer MCBSP_PCR_CLKRP_RISING / CLKRP = 1 ), MCBSP_RCERA_DEFAULT, MCBSP_RCERB_DEFAULT, MCBSP_RCERC_DEFAULT, MCBSP_RCERD_DEFAULT, MCBSP_RCERE_DEFAULT, MCBSP_RCERF_DEFAULT, MCBSP_RCERG_DEFAULT, MCBSP_RCERH_DEFAULT, MCBSP_XCERA_DEFAULT, MCBSP_XCERB_DEFAULT, MCBSP_XCERC_DEFAULT,

41、 MCBSP_XCERD_DEFAULT, MCBSP_XCERE_DEFAULT, MCBSP_XCERF_DEFAULT, MCBSP_XCERG_DEFAULT, MCBSP_XCERH_DEFAULT ; DMA_Config dmaRcvConfig = DMA_DMACSDP_RMK( DMA_DMACSDP_DSTBEN_NOBURST, DMA_DMACSDP_DSTPACK_OFF, DMA_DMACSDP_DST_DARAMPORT1, DMA_DMACSDP_SRCBEN_NOBURST, DMA_DMACSDP_SRCPACK_OFF, DMA_DMACSDP_SRC_

42、PERIPH, DMA_DMACSDP_DATATYPE_16BIT ), /* DMACSDP */ DMA_DMACCR_RMK( DMA_DMACCR_DSTAMODE_POSTINC, DMA_DMACCR_SRCAMODE_CONST, DMA_DMACCR_ENDPROG_OFF,/* ENDPROG OFF */ DMA_DMACCR_WP_DEFAULT, DMA_DMACCR_REPEAT_OFF, DMA_DMACCR_AUTOINIT_ON,/* AUTOINIT ON */ DMA_DMACCR_EN_STOP, DMA_DMACCR_PRIO_LOW, DMA_DMA

43、CCR_FS_DISABLE, DMA_DMACCR_SYNC_REVT1 ), /* DMACCR */ DMA_DMACICR_RMK( DMA_DMACICR_AERRIE_ON, DMA_DMACICR_BLOCKIE_OFF, DMA_DMACICR_LASTIE_OFF, DMA_DMACICR_FRAMEIE_ON, DMA_DMACICR_FIRSTHALFIE_OFF, DMA_DMACICR_DROPIE_OFF, DMA_DMACICR_TIMEOUTIE_OFF ), /* DMACICR */ (DMA_AdrPtr)(MCBSP_ADDR(DRR11), /* DM

44、ACSSAL */ 0, /* DMACSSAU */NULL, /* DMACDSAL, to be loaded by submit */ 0, /* DMACDSAU */ BUFFSIZE, /* DMACEN */ 1, /* DMACFN */ 0, /* DMACFI */ 0 /* DMACEI */;DMA_Config dmaXmtConfig = DMA_DMACSDP_RMK( DMA_DMACSDP_DSTBEN_NOBURST, DMA_DMACSDP_DSTPACK_OFF, DMA_DMACSDP_DST_PERIPH, DMA_DMACSDP_SRCBEN_N

45、OBURST, DMA_DMACSDP_SRCPACK_OFF, DMA_DMACSDP_SRC_DARAMPORT0, DMA_DMACSDP_DATATYPE_16BIT ), /* DMACSDP */ DMA_DMACCR_RMK( DMA_DMACCR_DSTAMODE_CONST, DMA_DMACCR_SRCAMODE_POSTINC, DMA_DMACCR_ENDPROG_ON, DMA_DMACCR_WP_DEFAULT, DMA_DMACCR_REPEAT_OFF, DMA_DMACCR_AUTOINIT_OFF, DMA_DMACCR_EN_STOP, DMA_DMACC

46、R_PRIO_LOW, DMA_DMACCR_FS_DISABLE, DMA_DMACCR_SYNC_XEVT1 ), /* DMACCR */ DMA_DMACICR_RMK( DMA_DMACICR_AERRIE_ON, DMA_DMACICR_BLOCKIE_OFF, DMA_DMACICR_LASTIE_OFF, DMA_DMACICR_FRAMEIE_ON, DMA_DMACICR_FIRSTHALFIE_OFF, DMA_DMACICR_DROPIE_OFF, DMA_DMACICR_TIMEOUTIE_OFF ), /* DMACICR */NULL, /* DMACDSAL,

47、to be loaded by submit */ 0, /* DMACSSAU */ (DMA_AdrPtr)(MCBSP_ADDR(DXR11), /* DMACDSAL */ 0, /* DMACDSAU */ BUFFSIZE, /* DMACEN */ 1, /* DMACFN */ 0, /* DMACFI */ 0 /* DMACEI */;/* Define a DMA_Handle object to be used with DMA_open function */DMA_Handle hDmaRcv, hDmaXmt;/* Define a MCBSP_Handle ob

48、ject to be used with MCBSP_open function */MCBSP_Handle hMcbsp;volatile Uint16 transferComplete = FALSE;Uint16 err = 0;Uint16 old_intm;Uint16 xmtEventId, rcvEventId;/-Function prototypes-/* Reference the start of the interrupt vector table */* This symbol is defined in file vectors.s55 */extern void

49、 VECSTART(void);/* Protoype for interrupt functions */interrupt void dmaXmtIsr(void);interrupt void dmaRcvIsr(void);void taskFxn(void);/* * copyData() - 實(shí)現(xiàn)DMA中實(shí)時信號FIR濾波. */void copyData(Int16 *inbuf, Int16 *outbuf, Int16 length) Int16 i = 0; for (i = 0; i < length/2; i+) inp_left0 = inbuf2*i+SINE

50、_TABLEi;inp_right0 = inbuf2*i+1+SINE_TABLEi; / 對輸入數(shù)據(jù)inbuf進(jìn)行FIR濾波,結(jié)果存放在outbuf中 fir(inp_left, h, out_left, dbptr, NX, NH);outbuf2*i = out_left0;fir(inp_right, h, out_right, dbptrx, NX, NH);outbuf2*i+1 = out_right0; /* - Threads - */* * processBuffer() - Process audio data once it has been received. */void processBuffer(void) Uint32 addr; static Int16 pingPong = PING;while(DMA_FGETH (hDmaRcv,

溫馨提示

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

評論

0/150

提交評論