郭萬有DSP實驗2_第1頁
郭萬有DSP實驗2_第2頁
郭萬有DSP實驗2_第3頁
郭萬有DSP實驗2_第4頁
郭萬有DSP實驗2_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實驗二實驗?zāi)康模?了解DMA通信基本原理,掌握內(nèi)存與SDRAM間一維DMA通信方式、二維DMA通信方式以及相關(guān)控制方法。學(xué)習(xí)數(shù)字濾波器設(shè)計方法,掌握其調(diào)試步驟,使學(xué)生加深對IIR的理解,進(jìn)一步提高對數(shù)字信號處理理論的認(rèn)識。實驗任務(wù):u 實驗1:內(nèi)存與SDRAM間的一維DMA通信實驗u 實驗2:內(nèi)存與SDRAM間的二維DMA通信實驗u 實驗3:無限脈沖響應(yīng)數(shù)字濾波器(IIR)的設(shè)計實驗實驗內(nèi)容:l 實驗1內(nèi)存與SDRAM間的一維DMA通信實驗l 實驗原理DMA是一種不需要處理器內(nèi)核干預(yù)的數(shù)據(jù)傳輸機(jī)制,作為一種后臺任務(wù)執(zhí)行,即進(jìn)行DMA傳輸時,處理器可以處理其它任務(wù)。如果使能了DMA中斷,那么當(dāng)數(shù)

2、據(jù)傳輸結(jié)束后會產(chǎn)生中斷信號,表示DMA傳輸已經(jīng)完成。DMA傳輸方式包括:一維DMA、二維DMA、鏈?zhǔn)紻MA、AutoDMA等,本次實驗使用一維DMA方式,即傳輸存儲器中一段連續(xù)的數(shù)據(jù)(地址是相鄰接的)。若要利用DMA傳輸數(shù)據(jù),首先應(yīng)配置DMA傳輸控制塊(TCB)寄存器。DMA傳輸?shù)臄?shù)據(jù)具有方向性,即從發(fā)送端(源)到接受端(目的),若為外部存儲器DMA傳輸,則需要設(shè)置兩個TCB參數(shù),一個源TCB,用于描述源數(shù)據(jù)的地址、大小和每次傳輸數(shù)據(jù)的長度等;還有一個目的TCB,用于描述數(shù)據(jù)傳入的目標(biāo)地址、數(shù)據(jù)大小及每次傳輸數(shù)據(jù)的長度等。若要使能DMA中斷,也需要在TCB中設(shè)置相應(yīng)位。若使用鏈路或AutoDM

3、A通道則只需一個目的TCB。設(shè)置好TCB寄存器后,DMA傳輸自動開始。TS201S一共14個DMA通道,4個通道(03)專用于外部存儲器設(shè)備,8個通道(411)用于鏈路口,2個通道(1213)用于自動DMA操作。本次實驗使用DMA0通道實現(xiàn)內(nèi)存與外部存儲器SDRAM間的一維DMA通信。相關(guān)的寄存器:1TCB寄存器TCB寄存器是一個128位的四字組寄存器,由DI、DX、DY和DP寄存器組成:a)DI是DMA索引寄存器,包括了將要發(fā)送或者接收的數(shù)據(jù)的源地址或者目的地址,既可以指向內(nèi)部存儲器又可以指向外部存儲器,也可指向鏈路口b)DX包含了一個16位(高)的計數(shù)值和一個16位的修改量,若使能了二維D

4、MA則該寄存器保存的只是X方向的計數(shù)值和修改量c)DY與DX結(jié)合一起使用,保存了Y方向上的16位計數(shù)值和16位修改量。如果只進(jìn)行一維DMA傳輸,就不需要設(shè)置該寄存器。d)DP寄存器包括了DMA所有控制信息,分為兩個主要段 3122210DMA控制鏈?zhǔn)街羔?amp;鏈標(biāo)記(用于鏈?zhǔn)紻MA)對DP寄存器各位功能說明:位說明位說明014四字地址(TCB指針)2526操作數(shù)據(jù)長度:01=32位,10=64位,11=128位1516鏈指針選擇存儲單元1721鏈目的通道27二維DMA使能22使能鏈?zhǔn)紻MA28DMA請求優(yōu)先級,0=正常優(yōu)先級,1=高優(yōu)先級23DMA請求使能24DMA中斷使能2931指定DM

5、A設(shè)備類型2中斷屏蔽寄存器(IMASK) IMASK是一個64位寄存器,由IMASKH和IMASKL組成,當(dāng)IMASK中某位被設(shè)置成1的時,那么將響應(yīng)這個位所對應(yīng)的中斷。DMA0中斷對應(yīng)在IMASKL中的第14位,所以我們要取消對DMA0中斷的屏蔽,使能DMA0中斷,可以通過如下指令實現(xiàn):xr0=0x4000; /*0x4000= B 0100 0000 0000 0000 */IMASKL=xr0;xr0=0;IMASKH=0也可以直接使用如下指令實現(xiàn),原理是一樣的,下面的方法更為直觀一些。xr0=INT_DMA0; /* INT_DMA0在頭文件中的定義的值為0x4000*/IMASKL=

6、xr0;l 實驗步驟:1)啟動VisualDSP+,新建工程命名為”test2_1”,路徑選擇為”D:DSP”,并將源代碼文件夾下默認(rèn)生成的test2_1.c文件移除; 2)新建空白文件(選擇菜單FileàNewàFile),輸入?yún)⒖荚创a,保存為DMA_1.asm,并將其添加到工程中;3)分析、理解源程序,并編譯文件糾錯;4)建立鏈接文件(選擇菜單ToolsàExpert LinkeràCreate LDF)4)編譯整個工程,若出現(xiàn)錯誤“The following symbols referenced in processor 'p0'

7、 could not be resolved: 'main _main' referenced from 'ts_hdr_TS201.doj'”則說明聲明的程序段/數(shù)據(jù)段(變量)所存放到了不能被執(zhí)行的位置,導(dǎo)致該程序段/數(shù)據(jù)段(變量)沒有被分配到相應(yīng)的存儲空間。處理方式:打開生成的LDF鏈接文件,在打開的Expert Linker窗口中將紅叉項下的DMA1.obj添加(用鼠標(biāo)拖拽)到MSSD0存儲區(qū)(由于TS201S將外部存儲器SDRAM地址映射到了0x4000 0000到0x7FFF FFFF之間的四個部分:MSSD03,所以我們將DMA1.obj添加至其中之

8、一即可,由于開發(fā)板上SDRAM是映射在MSSD0,為方便以后實驗,直接添加至MSSD0即可)。5)重新編譯工程,為方便觀察存儲器內(nèi)相應(yīng)地址其內(nèi)容變化,在_Done處設(shè)置斷點,同時打開兩個存儲器觀察窗口(選擇菜單Memory->TigerSHARC Memory)分別輸入tx_data和rx_data。6)運(yùn)行(RUN)工程,程序自動運(yùn)行至_Done后停止,觀察tx_data內(nèi)數(shù)據(jù)值,然后單步運(yùn)行程序(按F11鍵),觀察rx_data內(nèi)數(shù)據(jù)變化。l 實驗結(jié)果:1.未修改時的實驗結(jié)果:2. 修改程序后運(yùn)行的結(jié)果:3. DMA傳輸?shù)膶嶒灲Y(jié)果:l 結(jié)果分析:由實驗結(jié)果圖1可以看出,代碼修改前傳輸

9、了4個字的數(shù)據(jù);而從實驗結(jié)果圖2可以看出,代碼改為傳輸一個字后,發(fā)送的數(shù)據(jù)只接受收到一個字長度的數(shù)據(jù);由實驗結(jié)果3可以看出,改為DMA傳輸后,發(fā)送的所有數(shù)據(jù)均接收到了。l 實驗2內(nèi)存與SDRAM間的二維DMA通信實驗l 實驗原理二維DMA將存儲區(qū)中的數(shù)據(jù)塊作為一個數(shù)據(jù)陣列進(jìn)行傳輸,有利于執(zhí)行矩陣操作的DSP算法。若要進(jìn)行二維DMA傳輸,對DX、DY寄存器都要進(jìn)行設(shè)置,同時在DP寄存器中使能二維DMA(第27位)。DX增量寄存器(DX低16位)保存的是偏移值,此值加上當(dāng)前地址后指向X維的下一數(shù)據(jù)元素(下一內(nèi)循環(huán)首址),DX計數(shù)寄存器(DX高十六位)保存在X維方向(循環(huán)內(nèi)部)需要傳輸?shù)淖謹(jǐn)?shù),傳輸一

10、次減一,可以指示當(dāng)前行中待傳輸?shù)淖謹(jǐn)?shù)。DY增量寄存器保存的是Y維方向(外循環(huán))的偏移值,此值加上當(dāng)前地址可以指示Y維方向上下一個數(shù)據(jù)元素(下外循環(huán)的首址)。DY計數(shù)寄存器初始值是Y維的傳輸單元數(shù)(外循環(huán)次數(shù)),每當(dāng)DX計數(shù)器減少至零時,其值才減一。當(dāng)Y計數(shù)寄存器內(nèi)容減為零時,DMA傳輸完成。二維DMA的具體執(zhí)行過程:1 輸出保存在TCB DI寄存器中的當(dāng)前地址,啟動一個DMA存儲器周期;2 在此周期內(nèi),將TCB DX增量寄存器中的值與當(dāng)前DI寄存器中的當(dāng)前地址相加,產(chǎn)生下一個要訪問的數(shù)據(jù)元素地址,同時更新DI寄存器的值;3 DX計數(shù)器的值減一,然后跳回第二步執(zhí)行,直至DX計數(shù)器值減為零;4 D

11、X計數(shù)器減為零后,DX計數(shù)器被重新加載原來的初始值;5 DY增量寄存器的值加到DI寄存器中的當(dāng)前地址;6 DY計數(shù)寄存器內(nèi)容減一,然后從第二步繼續(xù)開始執(zhí)行,直至DY計數(shù)器減少至零,完成二維DMA傳輸。相關(guān)寄存器說明:TCB寄存器TCB寄存器是一個128位的四字組寄存器,由DI、DX、DY和DP寄存器組成:a) DI是DMA索引寄存器,包括了將要發(fā)送或者接收的數(shù)據(jù)的源地址或者目的地址,既可以指向內(nèi)部存儲器又可以指向外部存儲器,也可指向鏈路口b) DX包含了一個16位(高)的計數(shù)值和一個16位的修改量,若使能了二維DMA則該寄存器保存的只是X方向的計數(shù)值和修改量c) DY與DX結(jié)合一起使用,保存了

12、Y方向上的16位計數(shù)值和16位修改量。如果只進(jìn)行一維DMA傳輸,就不需要設(shè)置該寄存器。d) DP寄存器包括了DMA所有控制信息,分為兩個主要段21310DMA控制鏈?zhǔn)街羔?amp;鏈標(biāo)記(用于鏈?zhǔn)紻MA)22對DP寄存器各位功能說明:位說明位說明014四字地址(TCB指針)2526操作數(shù)據(jù)長度:01=32位,10=64位,11=128位1516鏈指針選擇存儲單元1721鏈目的通道27二維DMA使能22使能鏈?zhǔn)紻MA28DMA請求優(yōu)先級,0=正常優(yōu)先級,1=高優(yōu)先級23DMA請求使能24DMA中斷使能2931指定DMA設(shè)備類型源代碼中寄存器的對應(yīng)關(guān)系:XR0 <> DI Regist

13、er XR1 <> DX Register XR2 <> DY Register XR3 <> DP Register DCS0 <>TRANSMITTE TCB REGISTERSYR0 <> DI Register YR1 <> DX Register YR2 <> DY Register YR3 <> DP Register DCD0<>RECEIVER TCB REGISTERSl 實驗步驟1)啟動VisualDSP+,新建工程命名為”test2_2”,路徑選擇為”D:DSP”,

14、并將源代碼文件夾下默認(rèn)生成的test2_2.c文件移除; 2)新建空白文件(選擇菜單FileàNewàFile),輸入?yún)⒖荚创a,保存為DMA_2.asm,并將其添加到工程中;3)分析、理解源程序,并編譯文件糾錯;4)建立鏈接文件(選擇菜單ToolsàExpert LinkeràCreate LDF)4)編譯整個工程,若出現(xiàn)錯誤“The following symbols referenced in processor 'p0' could not be resolved: 'main _main' referenced

15、from 'ts_hdr_TS201.doj'”處理方法同前一個實驗。5)重新編譯工程,為方便觀察存儲器內(nèi)相應(yīng)地址其內(nèi)容變化,在_Done處設(shè)置斷點,同時打開兩個存儲器觀察窗口(選擇菜單Memory->TigerSHARC Memory)分別輸入tx_data和rx_data。6)運(yùn)行(RUN)工程,程序自動運(yùn)行至_Done后停止,觀察tx_data內(nèi)數(shù)據(jù)值,然后單步運(yùn)行程序(按F11鍵),觀察rx_data內(nèi)數(shù)據(jù)變化。l 實驗結(jié)果:1. 源代碼執(zhí)行后的結(jié)果:2.代碼修改后運(yùn)行的結(jié)果:3.代碼修改為只接收奇數(shù)數(shù)據(jù)后的運(yùn)行結(jié)果:l 結(jié)果分析:從實驗結(jié)果圖1可以看到,接收到了

16、發(fā)送地所有數(shù)據(jù);從實驗結(jié)果圖2.1可以看出,發(fā)送的數(shù)據(jù)每隔一個字接收,從實驗結(jié)果圖2.2可以看到,接收了數(shù)據(jù),并且是每隔一個字接收,且這一個字的數(shù)據(jù)丟失了;從實驗結(jié)果圖3可以看出,只接收了奇數(shù)數(shù)據(jù),并且接收到的數(shù)據(jù)按順序排列。l 實驗3 無限脈沖響應(yīng)數(shù)字濾波器(IIR)的設(shè)計實驗l 實驗原理所謂的數(shù)字濾波,指的是輸入、輸出均為數(shù)字信號,通過一定運(yùn)算關(guān)系改變輸入信號所含頻率成分的相對比例或者濾除某些頻率成分。數(shù)字濾波可分為無限脈沖響應(yīng)(IIR)濾波和有限脈沖響應(yīng)(FIR)濾波。本次試驗利用VISUAL DSP+ 軟環(huán)境SIMULATOR模擬實現(xiàn)無限脈沖響應(yīng)(IIR)數(shù)字信號處理。無限脈沖響應(yīng)(I

17、IR)的系統(tǒng)函數(shù)為: .公式1即如果輸入為X(Z),輸出為Y(N),則:Y(Z)=X(Z)H(Z),即.公式2本試驗中利用的公式是對上面的公式2對了相應(yīng)的形式變化,利用中間變量 .公式3那么 .公式4因此,本次試驗設(shè)計了一個4階IIR濾波,其對應(yīng)的公式3和公式4的時域公式如下:wn=xn*scale+wn-1*a1+wn-2*a2+wn-3*a3+wn-4*a4公式5yn=wn+wn-1*b1+wn-2*b2+wn-3*b3+wn-4*b4公式6本次設(shè)計中系數(shù)a4,a3,a2,a1,b4,b3,b2,b1都是用戶自己初始化的時候給定的且均為常數(shù),其中x(n)是輸入的數(shù)字序列。從公式5和公式6可

18、知,只要我們設(shè)定設(shè)計需要的a4,a3,a2,a1,b4,b3,b2,b1,以及初始化w(n-1), w(n-2), w(n-3), w(n-4),就可以得到我們所需要的濾波器了。濾波器算法中的變量分配:inputsN: 存放輸入數(shù)據(jù);coeffs2*SECTIONS:按順序猘2, a4, b2,b4,a1, a3, b1, b3存放濾波器系數(shù);delaylineSECTIONS:存放w(n-1), w(n-2), w(n-3), w(n-4)初始化值(此處濾波器設(shè)計為因果濾波器,n<0時w(n)全為0);outputN:存放計算結(jié)果。l 實驗步驟:1)啟動VisualDSP+,新建工程命名為”test2_3”,路徑選擇為”D:DSP”,并將源代碼文件夾下默認(rèn)生成的test2_3.c文件移除; 2)新建空白文件(選擇菜單FileàNewàFile),輸入?yún)⒖荚创a,保存為IIR.asm,并將其添加到工程中;3)分析、理解源程序,并編譯文件糾錯;4)編譯整個工程;5)查看inputs和output的時域圖和頻譜圖: 新建繪圖窗口(選擇菜單 ViewDebug WindowsPlotNew項)在Plot設(shè)置窗口中type設(shè)定為Line Plot

溫馨提示

  • 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

提交評論