實(shí)驗(yàn)二任務(wù)書_第1頁(yè)
實(shí)驗(yàn)二任務(wù)書_第2頁(yè)
實(shí)驗(yàn)二任務(wù)書_第3頁(yè)
實(shí)驗(yàn)二任務(wù)書_第4頁(yè)
實(shí)驗(yàn)二任務(wù)書_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

7、nced from ts_hdr_TS201.doj”則說明聲明的程序段/數(shù)據(jù)段(變量)所存放到了不能被執(zhí)行的位置,導(dǎo)致該程序段/數(shù)據(jù)段(變量)沒有被分配到相應(yīng)的存儲(chǔ)空間。處理方式:打開生成的LDF鏈接文件,在打開的Expert Linker窗口中將紅叉項(xiàng)下的DMA1.obj添加(用鼠標(biāo)拖拽)到MSSD0存儲(chǔ)區(qū)(由于TS201S將外部存儲(chǔ)器SDRAM地址映射到了0x4000 0000到0x7FFF FFFF之間的四個(gè)部分:MSSD03,所以我們將DMA1.obj添加至其中之一即可,由于開發(fā)板上SDRAM是映射在MSSD0,為方便以后實(shí)驗(yàn),直接添加至MSSD0即可)。5)重新編譯工程,為方便觀察

8、存儲(chǔ)器內(nèi)相應(yīng)地址其內(nèi)容變化,在_Done處設(shè)置斷點(diǎn),同時(shí)打開兩個(gè)存儲(chǔ)器觀察窗口(選擇菜單Memory-TigerSHARC Memory)分別輸入tx_data和rx_data。6)運(yùn)行(RUN)工程,程序自動(dòng)運(yùn)行至_Done后停止,觀察tx_data內(nèi)數(shù)據(jù)值,然后單步運(yùn)行程序(按F11鍵),觀察rx_data內(nèi)數(shù)據(jù)變化。l 實(shí)驗(yàn)結(jié)果:要求:1按照實(shí)驗(yàn)步驟完成實(shí)驗(yàn);2修改程序,DMA每次傳輸一個(gè)字(32位),驗(yàn)證結(jié)果;3修改程序,用軟環(huán)境模擬外部中斷來啟動(dòng)DMA傳輸,并觀察傳輸結(jié)果。通過下列步驟來建立一個(gè)外部中斷:a.打開對(duì)話框選SettingsInterrupts,會(huì)出現(xiàn)一個(gè)Interrup

9、t Timing對(duì)話框;b.設(shè)置中斷屬性;c.設(shè)置斷點(diǎn)并且運(yùn)行程序.用如下程序段:_Set_IRQ_A: /*設(shè)置外部中斷*/ j0=_IRQ0_ISR; IVIRQ0=j0; xr0=INT_IRQ0; IMASKH=xr0; /*外部中斷IRQ0使能*/ SQCTLST=SQCTL_GIE;_Wait_For_Interrupt: .align_code 4;nop;nop;nop;idle; /無限等待直到中斷發(fā)生,然后跳至中斷程序_IRQ0_ISR執(zhí)行 jump _Wait_For_Interrupt;_IRQ0_ISR: _Load_DMA0_TCBs: /將初始值倒入DMA0的傳輸

10、和接收TCB j0=DC0_Source_TCB; xr3:0=qj0+j31; /注意這種傳遞方式 j0=DC0_Destination_TCB; yr3:0=qj0+j31; DCS0=xr3:0; DCD0=yr3:0; /開始進(jìn)行DMA傳輸rti(np)(abs); 代替以下原程序:_Load_DMA0_TCBs: /將初始值倒入DMA0的傳輸和接收TCB j0=DC0_Source_TCB; xr3:0=qj0+j31; /注意這種傳遞方式 j0=DC0_Destination_TCB; yr3:0=qj0+j31; DCS0=xr3:0; DCD0=yr3:0; /開始進(jìn)行DMA傳

11、輸4分析兩個(gè)程序的原理,簡(jiǎn)述軟環(huán)境模擬外部硬件中斷的程序流程。l 參考源代碼:#include #define N 1024 /*定義需要傳輸?shù)?2位字的個(gè)數(shù)=1024*/#define MODIFY 1/*每次傳輸?shù)臄?shù)據(jù)單元大小,4個(gè)字(128位)數(shù)據(jù)*/.section data1;/*聲明數(shù)據(jù)段1,存放對(duì)源TCB和目的TCB預(yù)先設(shè)置的參數(shù)*/.var DC0_Source_TCB4=tx_data, N16|MODIFY, /*將N左移16位,即移至DX的高16位(計(jì)數(shù)位)*/ 0x0, TCB_INTMEM|TCB_ NORMA;/*源選擇為內(nèi)部存儲(chǔ)器/四字操作數(shù)*/.align 4;

12、.var DC0_Destination_TCB4=rx_data, N16|MODIFY, /*將N左移16位,即移至DX的高16位(計(jì)數(shù)位)*/ 0x0, TCB_EXTMEM|TCB_NORMA;/*目標(biāo)為外部存儲(chǔ)器/四字操作數(shù)*/.section data2;.var tx_dataN; /*定義內(nèi)部存儲(chǔ)器緩沖區(qū),存儲(chǔ)需要傳輸?shù)酵獯娴臄?shù)據(jù)*/.section sdram0;.var rx_dataN; /*在SDRAM中定義外部存儲(chǔ)器緩沖區(qū),存儲(chǔ)從寫入的數(shù)據(jù)*/.section program;_Initialize_Bus_SDRAM: /*初始化SYSCON和SDRCON*/ xr

13、0=SYSCON_MP_WID64|SYSCON_MEM_WID64| SYSCON_MSH_PIPE2|SYSCON_MSH_WT0|SYSCON_MSH_IDLE| SYSCON_MS1_PIPE1 |SYSCON_MS1_WT0|SYSCON_MS1_IDLE| SYSCON_MS0_SLOW |SYSCON_MS0_WT3|SYSCON_MS0_IDLE; SYSCON=xr0; xr0=SDRCON_INIT |SDRCON_RAS2PC5 |SDRCON_PC2RAS2 | SDRCON_REF3700|SDRCON_PG256 |SDRCON_CLAT2 | SDRCON_ENB

14、L; SDRCON=xr0; lc0=N; j0=tx_data; xr0=1; xr1=0;_Fill_Tx_Data: xr1=r1+r0; j0+=1=xr1; if nlc0e,jump _Fill_Tx_Data;_Load_DMA0_TCBs: /*將初始值倒入DMA0的傳輸和接收TCB寄存器*/ j0=DC0_Source_TCB; xr3:0=qj0+j31; /*注意這種傳遞方式*/ j0=DC0_Destination_TCB; yr3:0=qj0+j31; DCS0=xr3:0;DCD0=yr3:0; /*開始進(jìn)行DMA傳輸*/_Done:nop;nop;nop;nop;

15、jump _Done;nop;nop;nop;l 實(shí)驗(yàn)2內(nèi)存與SDRAM間的二維DMA通信實(shí)驗(yàn)l 實(shí)驗(yàn)原理二維DMA將存儲(chǔ)區(qū)中的數(shù)據(jù)塊作為一個(gè)數(shù)據(jù)陣列進(jìn)行傳輸,有利于執(zhí)行矩陣操作的DSP算法。若要進(jìn)行二維DMA傳輸,對(duì)DX、DY寄存器都要進(jìn)行設(shè)置,同時(shí)在DP寄存器中使能二維DMA(第27位)。DX增量寄存器(DX低16位)保存的是偏移值,此值加上當(dāng)前地址后指向X維的下一數(shù)據(jù)元素(下一內(nèi)循環(huán)首址),DX計(jì)數(shù)寄存器(DX高十六位)保存在X維方向(循環(huán)內(nèi)部)需要傳輸?shù)淖謹(jǐn)?shù),傳輸一次減一,可以指示當(dāng)前行中待傳輸?shù)淖謹(jǐn)?shù)。DY增量寄存器保存的是Y維方向(外循環(huán))的偏移值,此值加上當(dāng)前地址可以指示Y維方向上

16、下一個(gè)數(shù)據(jù)元素(下外循環(huán)的首址)。DY計(jì)數(shù)寄存器初始值是Y維的傳輸單元數(shù)(外循環(huán)次數(shù)),每當(dāng)DX計(jì)數(shù)器減少至零時(shí),其值才減一。當(dāng)Y計(jì)數(shù)寄存器內(nèi)容減為零時(shí),DMA傳輸完成。二維DMA的具體執(zhí)行過程:1 輸出保存在TCB DI寄存器中的當(dāng)前地址,啟動(dòng)一個(gè)DMA存儲(chǔ)器周期;2 在此周期內(nèi),將TCB DX增量寄存器中的值與當(dāng)前DI寄存器中的當(dāng)前地址相加,產(chǎn)生下一個(gè)要訪問的數(shù)據(jù)元素地址,同時(shí)更新DI寄存器的值;3 DX計(jì)數(shù)器的值減一,然后跳回第二步執(zhí)行,直至DX計(jì)數(shù)器值減為零;4 DX計(jì)數(shù)器減為零后,DX計(jì)數(shù)器被重新加載原來的初始值;5 DY增量寄存器的值加到DI寄存器中的當(dāng)前地址;6 DY計(jì)數(shù)寄存器內(nèi)

17、容減一,然后從第二步繼續(xù)開始執(zhí)行,直至DY計(jì)數(shù)器減少至零,完成二維DMA傳輸。相關(guān)寄存器說明:TCB寄存器TCB寄存器是一個(gè)128位的四字組寄存器,由DI、DX、DY和DP寄存器組成:a) DI是DMA索引寄存器,包括了將要發(fā)送或者接收的數(shù)據(jù)的源地址或者目的地址,既可以指向內(nèi)部存儲(chǔ)器又可以指向外部存儲(chǔ)器,也可指向鏈路口b) DX包含了一個(gè)16位(高)的計(jì)數(shù)值和一個(gè)16位的修改量,若使能了二維DMA則該寄存器保存的只是X方向的計(jì)數(shù)值和修改量c) DY與DX結(jié)合一起使用,保存了Y方向上的16位計(jì)數(shù)值和16位修改量。如果只進(jìn)行一維DMA傳輸,就不需要設(shè)置該寄存器。d) DP寄存器包括了DMA所有控制

18、信息,分為兩個(gè)主要段21310DMA控制鏈?zhǔn)街羔?鏈標(biāo)記(用于鏈?zhǔn)紻MA)22對(duì)DP寄存器各位功能說明:位說明位說明014四字地址(TCB指針)2526操作數(shù)據(jù)長(zhǎng)度:01=32位,10=64位,11=128位1516鏈指針選擇存儲(chǔ)單元1721鏈目的通道27二維DMA使能22使能鏈?zhǔn)紻MA28DMA請(qǐng)求優(yōu)先級(jí),0=正常優(yōu)先級(jí),1=高優(yōu)先級(jí)23DMA請(qǐng)求使能24DMA中斷使能2931指定DMA設(shè)備類型源代碼中寄存器的對(duì)應(yīng)關(guān)系:XR0 DI Register XR1 DX Register XR2 DY Register XR3 DP Register DCS0 TRANSMITTETCBREGIS

19、TERSYR0 DI Register YR1 DX Register YR2 DY Register YR3 DP Register DCD0RECEIVERTCBREGISTERSl 實(shí)驗(yàn)步驟1)啟動(dòng)VisualDSP+,新建工程命名為”test2_2”,路徑選擇為”D:DSP”,并將源代碼文件夾下默認(rèn)生成的test2_2.c文件移除;2)新建空白文件(選擇菜單FileNewFile),輸入?yún)⒖荚创a,保存為DMA_2.asm,并將其添加到工程中;3)分析、理解源程序,并編譯文件糾錯(cuò);4)建立鏈接文件(選擇菜單ToolsExpert LinkerCreate LDF)4)編譯整個(gè)工程,若出

20、現(xiàn)錯(cuò)誤“The following symbols referenced in processor p0 could not be resolved: main _main referenced from ts_hdr_TS201.doj”處理方法同前一個(gè)實(shí)驗(yàn)。5)重新編譯工程,為方便觀察存儲(chǔ)器內(nèi)相應(yīng)地址其內(nèi)容變化,在_Done處設(shè)置斷點(diǎn),同時(shí)打開兩個(gè)存儲(chǔ)器觀察窗口(選擇菜單Memory-TigerSHARC Memory)分別輸入tx_data和rx_data。6)運(yùn)行(RUN)工程,程序自動(dòng)運(yùn)行至_Done后停止,觀察tx_data內(nèi)數(shù)據(jù)值,然后單步運(yùn)行程序(按F11鍵),觀察rx_dat

21、a內(nèi)數(shù)據(jù)變化。l 實(shí)驗(yàn)結(jié)果:1按照實(shí)驗(yàn)步驟完成實(shí)驗(yàn);2理解并修改程序,使rx_data收到的數(shù)據(jù)排列驗(yàn)證結(jié)果如下:3修改程序,只傳輸tx_data中的奇數(shù)值,且接受到的數(shù)據(jù)在tx_data中連續(xù)排列,驗(yàn)證結(jié)果。l 參考源代碼:#include #define N 1024 /*需要傳輸?shù)?2位字的個(gè)數(shù)*/.section data1;.var DC0_Source_TCB4=tx_data, 416|1, 416|1, TCB_INTMEM|TCB_NORMAL| TCB_TWODIM;/*源選擇為內(nèi)部存儲(chǔ)器/單字傳輸/使能2維DMA傳輸*/.align 4;.var DC0_Destinat

22、ion_TCB4=rx_data, 4 16|1, 416|1, TCB_EXTMEM|TCB_NORMAL|TCB_TWODIM;/*目的為外部存儲(chǔ)器/單字傳輸/使能2維DMA傳輸*/.section data2;.vartx_dataN; /*定義緩沖區(qū),存儲(chǔ)需要傳輸?shù)酵獯娴臄?shù)據(jù)*/.section sdram0;.varrx_dataN; /*在SDRAM中定義緩沖區(qū),存儲(chǔ)從寫入的數(shù)據(jù)*/.section program;_Initialize_Bus_SDRAM: /初始化SYSCON和SDRCON xr0=SYSCON_MP_WID64|SYSCON_MEM_WID64| SYSCO

23、N_MSH_PIPE2|SYSCON_MSH_WT0|SYSCON_MSH_IDLE| SYSCON_MS1_PIPE1 |SYSCON_MS1_WT0|SYSCON_MS1_IDLE| SYSCON_MS0_SLOW |SYSCON_MS0_WT3|SYSCON_MS0_IDLE; SYSCON=xr0; xr0=SDRCON_INIT |SDRCON_RAS2PC5|SDRCON_PC2RAS2| SDRCON_REF3700|SDRCON_PG256 |SDRCON_CLAT2 | SDRCON_ENBL; SDRCON=xr0; lc0=N; j0=tx_data; xr0=1; xr

24、1=0;_Fill_Tx_Data: xr1=r1+r0; j0+=1=xr1; if nlc0e,jump _Fill_Tx_Data;_Load_DMA0_TCBs: /*將初始值倒入DMA0的傳輸和接收TCB*/ j0=DC0_Source_TCB; xr3:0=qj0+j31; /*注意這種傳遞方式*/ j0=DC0_Destination_TCB; yr3:0=qj0+j31; DCS0=xr3:0; DCD0=yr3:0; /*開始進(jìn)行DMA傳輸*/_Done:nop;nop;nop;nop; jump _Done;nop;nop;nop;l 實(shí)驗(yàn)3無限脈沖響應(yīng)數(shù)字濾波器(IIR)

25、的設(shè)計(jì)實(shí)驗(yàn)l 實(shí)驗(yàn)原理所謂的數(shù)字濾波,指的是輸入、輸出均為數(shù)字信號(hào),通過一定運(yùn)算關(guān)系改變輸入信號(hào)所含頻率成分的相對(duì)比例或者濾除某些頻率成分。數(shù)字濾波可分為無限脈沖響應(yīng)(IIR)濾波和有限脈沖響應(yīng)(FIR)濾波。本次試驗(yàn)利用VISUAL DSP+ 軟環(huán)境SIMULATOR模擬實(shí)現(xiàn)無限脈沖響應(yīng)(IIR)數(shù)字信號(hào)處理。無限脈沖響應(yīng)(IIR)的系統(tǒng)函數(shù)為:.公式1即如果輸入為X(Z),輸出為Y(N),則:Y(Z)=X(Z)H(Z),即.公式2本試驗(yàn)中利用的公式是對(duì)上面的公式2對(duì)了相應(yīng)的形式變化,利用中間變量.公式3那么.公式4因此,本次試驗(yàn)設(shè)計(jì)了一個(gè)4階IIR濾波,其對(duì)應(yīng)的公式3和公式4的時(shí)域公式如下

26、: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è)計(jì)中系數(shù)a4,a3,a2,a1,b4,b3,b2,b1都是用戶自己初始化的時(shí)候給定的且均為常數(shù),其中x(n)是輸入的數(shù)字序列。從公式5和公式6可知,只要我們?cè)O(shè)定設(shè)計(jì)需要的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

27、, a4, b2,b4,a1, a3, b1, b3存放濾波器系數(shù);delaylineSECTIONS:存放w(n-1), w(n-2), w(n-3), w(n-4)初始化值(此處濾波器設(shè)計(jì)為因果濾波器,n0時(shí)w(n)全為0);outputN:存放計(jì)算結(jié)果。l 實(shí)驗(yàn)步驟:1)啟動(dòng)VisualDSP+,新建工程命名為”test2_3”,路徑選擇為”D:DSP”,并將源代碼文件夾下默認(rèn)生成的test2_3.c文件移除;2)新建空白文件(選擇菜單FileNewFile),輸入?yún)⒖荚创a,保存為IIR.asm,并將其添加到工程中;3)分析、理解源程序,并編譯文件糾錯(cuò);4)編譯整個(gè)工程;5)查看inp

28、uts和output的時(shí)域圖和頻譜圖:新建繪圖窗口(選擇菜單 ViewDebug WindowsPlotNew項(xiàng))在Plot設(shè)置窗口中type設(shè)定為L(zhǎng)ine Plot Title命名為”IIR”;添加兩個(gè)Data Setting,參數(shù)按以下表格進(jìn)行設(shè)定。Data SetsNameMemoryAddressCount StrideDatainputsinputsTigerSharcMemoryInputs301floatoutputoutputTigerSharcMemoryoutput301floatl 實(shí)驗(yàn)結(jié)果:要求:記錄輸入數(shù)據(jù)和輸出數(shù)據(jù)的時(shí)域圖和頻譜圖(課堂驗(yàn)收),并利用數(shù)字信號(hào)處理課程

29、所學(xué)知識(shí)分析結(jié)果。l 參考源代碼:#define N_MAX 100#define N 30 / 輸入數(shù)據(jù)的個(gè)數(shù)N#define SECTIONS 4 /濾波器階數(shù)#define scale 0.05078125 /濾波器 .K的K= scale?/*/.section data1;.align 4; /指令按照4字節(jié)對(duì)齊,方便尋址.var inputsN =5000.0, 4333.0, 5465.0, 13556.0, 7423.0, -5000.0, -4333.0, -5465.0, -13556.0, -7423.0,5000.0, 4333.0, 5465.0, 13556.0,

30、7423.0, -5000.0, -4333.0, -5465.0, -13556.0, -7423.0,5000.0, 4333.0, 5465.0, 13556.0, 7423.0, -5000.0, -4333.0, -5465.0, -13556.0, -7423.0; /輸入數(shù)據(jù).varcycle_count; / 循環(huán)計(jì)數(shù)變量.align 4;.varexpected_outputN = 253.906250, 1394.910156, 3400.899369, 5451.189211, 7461.879024, 8509.488592, 5519.537707, -1306.03

31、9745, -6936.575354, -8920.200002,-8397.397895, -4821.647412, 1507.253965, 6689.519912, 8738.028980, 8444.656939, 4922.543154, -1492.260614, -6730.424864, -8759.801131,-8433.783468, -4908.582993, 1492.343760, 6724.040670, 8757.440081, 8435.857839, 4910.422599, -1492.627568, -6724.989198, -8757.654792

32、; /輸出期望值.align 4;.var outputN; /定義輸出緩沖數(shù)組.section data2;.align 4;.varcoeffs2*SECTIONS= 0.1412,0.6272,4.,4.,-0.0255,-0.6108,1.,6.;/a2, a4, b2,b4,a1, a3, b1, b3.vardelaylineSECTIONS=0.0, 0.0, 0.0, 0.0;/w(n-1), w(n-2), w(n-3), w(n-4)初始化值/*/#ifdef _ADSPTS201_#include #endif#include cache_macros.h.section

33、 program;.global _main;/*Power up code */powerup:#ifdef _ADSPTS201_/*in the case of TS201, at the beginning of the program thecache must be enabled. The procedure is contained in thecache_enable macro that uses the refresh rate as input parameter -if CCLK=500MHz, refresh_rate=750 -if CCLK=400MHz, re

34、fresh_rate=600 -if CCLK=300MHz, refresh_rate=450 -if CCLK=250MHz, refresh_rate=375*/cache_enable(750);/-Optional example to preload cache- j0 = j31 + coeffs; LC0 = 2; /J-IAL數(shù)據(jù)寄存器組:J31J0 J31為32位狀態(tài)寄存器,其他為通用寄存器 /LC0為專用的循環(huán)計(jì)數(shù)及存取器nop;nop;.align_code 4; ini_cache: xr3:0 = qj0+=0; /X運(yùn)算塊正常字(32位)四寄存器(128位)初始化

35、.align_code 4; if NLC0E, jump ini_cache; qj0+=4 = xr3:0; /NLC0E:計(jì)數(shù)器LC0沒有減為零為條件/-#endifend_powerup:/* Start of code */_main: j1 = j31 + inputs; LC0 = N;/J1指向輸入數(shù)據(jù)inputs. j2 = j31 + output; /J2指向輸出數(shù)據(jù)outputs.align_code 4;iir_loop: yr8 = j1+=1; /yr8=x(n)/read cycle counterini_cycle_count;/* Start of IIR code*/ j0 = j31 + delayline;/ j0指向delayline k0 = k31 + coeffs;/ k0指向coeffs r3:2 = lj0+=2; r7:6 = qk0+=4;/r3:2=w(n-1) w(n-3) yr7:6=a4,a2 xr7:6=b4,b2 r1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論