DSP硬件實驗報告_第1頁
DSP硬件實驗報告_第2頁
DSP硬件實驗報告_第3頁
DSP硬件實驗報告_第4頁
DSP硬件實驗報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗一:簡單指令程序運行實驗代碼(含注釋): .mmregs .global_main_main: stm #3000h,sp ;sp為堆棧指針寄存器,stm為存儲器映射寄存器尋址 ssbx xf ;xf賦值為1,燈亮 call delay ;調(diào)用delay函數(shù),延遲0.5秒 rsbx xf ;xf賦值為0,燈滅 call delay ;調(diào)用delay函數(shù) b _main ;無條件調(diào)用_main函數(shù) nop nop ;delay.5second ;延時5秒delay: stm 270fh,ar3;ar3賦值207fh,十進制為9999dloop1: stm 0f9h,ar4 ;ar4賦值0f9h,十進制為249dloop2: banz loop2,*ar4- ;若不為0,ar4減1 banz loop1,*ar3- ;若不為0,ar3減1,共進行10000*250次跳轉(zhuǎn) ret nop nop .end實驗操作:可見XF燈以一定頻率閃爍;單擊“Halt”暫停程序運行,則XF燈停止閃爍,如再單擊“Run”,則“XF”燈又開始閃爍。實驗二:資料存儲實驗本實驗程序?qū)?x1000開始的8個地址空間,填寫入0xAAAA的數(shù)值,然后讀出,并存儲到0X1008開始的8個地址空間。在CCS中可以觀察DATA內(nèi)存空間地址0X1000~0X100F值的變化。代碼(含注釋): .mmregs .global_main_main:;storedata;存儲數(shù)據(jù) stm 1000h,ar1 ;將立即數(shù)1000h送入輔助寄存器ar1(內(nèi)存地址) rpt #07h ;循環(huán)執(zhí)行下一條指令,8次 st 0aaaah,*ar1+ ;將立即數(shù)0xaaaah賦給輔助寄存器ar1的1000h地址內(nèi),;之后ar1的地址加1,8次;ar1的地址變1008,內(nèi)存0x1000--ox1007中的數(shù)據(jù)均為0xaaaah ;readdatathenre-store ;讀入數(shù)據(jù)重新存儲 stm 7h,ar3 ;令輔助寄存器ar3的初值為07h stm 1000h,ar1 ;重新將立即數(shù)1000h送入輔助寄存器ar1 stm 1008h,ar2 ;將立即數(shù)1008h送入輔助寄存器ar2loop: ;進入循環(huán) ld *ar1+,t ;將輔助寄存器ar1的值0xaaaah存入T寄存器中,且ar1的地址加1 st t,*ar2+ ;將T寄存器內(nèi)容0xaaaah存入輔助寄存器ar2,并且ar2的地址加1 banz loop,*ar3- ;寄存器ar3的值不為0時,執(zhí)行循環(huán)loop,ar3的地址值減1直至為0時退出循環(huán)here: bhere .end ;結(jié)束(地址0x1000--0x100F,程序完成對16個內(nèi)存單元賦值)實驗操作:1.用“View”下拉菜單中的“Memory”查看內(nèi)存單元;2.輸入要查看的內(nèi)存單元地址,本實驗要查看0x1000H~0x100FH單元的數(shù)值變化,輸入地址0x1000H;3.查看0x1000H~0x100FH單元的初始值,單擊“Run”運行程序,也可以“單步”運行程序;4.單擊“Halt”暫停程序運行;5.查看0x1000H~0x100FH單元內(nèi)數(shù)值的變化;6.關(guān)閉各窗口,本實驗完畢。實驗三:I/O實驗代碼(含注釋): .mmregs .global _main .text_main: stm 3100h,sp stm 1000h,ar1 ;指定地址 portr00h,*ar1;讀入開關(guān)狀態(tài),并存入輔助寄存器ar1中 nop nop portw *ar1,01h;將輔助寄存器ar1的內(nèi)容即開關(guān)的狀態(tài)寫入到LED燈上 nop nopb_main ;循環(huán)執(zhí)行nopnop.end實驗操作:任意調(diào)整K0~K7開關(guān),可以觀察到對應(yīng)LP0~LP7燈“亮”或“滅”;單擊“Halt”,暫停持續(xù)運行,開關(guān)將對燈失去控制。關(guān)閉所有窗口,本實驗完畢。實驗四:定時器實驗定時器實驗時要用到C54芯片的定時器控制寄存器,定時器時間常數(shù)寄存器,定時器中斷響應(yīng),寄存器定義詳見C54芯片資料。C54的定時器是一個20位的減法計數(shù)器,可以被特定的狀態(tài)位實現(xiàn)停止、重新啟動、重設(shè)置或禁止,可以使用該定時器產(chǎn)生周期性的CPU中斷,控制定時器中斷頻率的兩個寄存器是定時周期寄存器PRD和定時減法寄存器TDDR定時器實驗通過LED(LP1~LP7)來顯示。在本系統(tǒng)中,時鐘頻率為20MHZ,令PRD=0x4e1f,這樣得到每1/1000秒中斷一次,通過累計1000次,就能定時1秒鐘。代碼(含注釋):【初始化程序】 .mmregs.global_initial_initial: stm 300h,ar1;初始化300h數(shù)據(jù)地址 st #00h,*ar1;輔助寄存器ar1指向#00h stm 302h,ar1;初始化302h數(shù)據(jù)地址 st #00h,*ar1 stm 200h,ar1 st #5555h,*ar1 stm 201h,ar1 st #0aaaah,*ar1 stm 202h,ar1 st #400h,*ar1 ssbx 1,11;將ST1.INTM置為1,停止所有中斷 stm 0ffffh,ifr;清除所有中斷標(biāo)識ifr:中斷標(biāo)志寄存器 stm 00h,imr;將立即數(shù)寄存器置為0,停止所有中斷 stm 410h,tcr;停止計時器 tcr:發(fā)送控制寄存器 stm 4e1fh,prd;將初始時間設(shè)為4e1fh stm 420h,tcr;開始計時器 stm 08h,imr;允許計時器中斷 rsbx 1,11;將ST1.INTM置為0,開始所有中斷 ret【端口程序】 .mmregs .global _porta .global _portb _porta: stm 304h,ar1 st 5555h,*ar1;輔助寄存器ar1指向5555h portw *ar1,01h ret _portb: stm 304h,ar1 st 0aaaah,*ar1;輔助寄存器ar1指向0aaaah portw *ar1,01h ret【向量程序】.sect".vectors".ref_c_int00;C程序入口.ref_timer;時間中斷點.align0x80;必須被連結(jié)到頁邊界RESET:;重設(shè)向量BD_c_int00;到C入口點的分支STM#200,SP;堆棧大小為200 SP:堆棧寄存器nmi:RETE;啟動中斷并從一個返回NOPNOPNOP;軟件中斷sint17.space4*16sint18.space4*16sint19.space4*16sint20.space4*16sint21.space4*16sint22.space4*16sint23.space4*16sint24.space4*16sint25.space4*16sint26.space4*16sint27.space4*16sint28.space4*16sint29.space4*16sint30.space4*16int0:RETENOPNOPNOPint1:RETENOPNOPNOPint2:RETENOPNOPNOPtint:b_timerNOPNOPrint0:RETENOPNOPNOPxint0:RETENOPNOPNOPrint1:RETENOPNOPNOPxint1:RETENOPNOPNOPint3:RETENOPNOPNOP.end實驗操作:1.單擊“Run”運行,可觀察到LED燈(LP0~LP7)以一定的間隔時間不停擺動;2.單擊“Halt”,暫停程序運行,LED燈停止閃爍;3.單擊“Run”,運行程序,LED燈又開始閃爍;4.關(guān)閉所有窗口,本實驗完畢。實驗五:INT2中斷實驗本實驗是進行C54芯片的INT2中斷練習(xí),C54芯片中斷INT2是低電平單脈沖觸發(fā);實驗采用導(dǎo)線一端連接D_Exp—數(shù)字量輸入擴展接口I0,經(jīng)PX4的IN3,到PX5的OUT0電平轉(zhuǎn)換,再與另一端連接INT2插孔;撥動開關(guān)K0一次,就產(chǎn)生一個低電平單脈沖;運行示范程序,觀察LP1~LP7LED燈的輸出變化;可觀察到每撥動開關(guān)K0一次LP1~LP7燈亮滅變化一次;代碼(含注釋):【初始化程序】 .mmregs .global_initial.text_initial: stm 300h,ar3;初始化數(shù)據(jù)300har3:輔助寄存器 st #00h,*ar3 stm 302h,ar4;初始化數(shù)據(jù)300har4:輔助寄存器 st #00h,*ar4 ssbx 1,11;將m置為1,停止所有中斷 stm 00h,imr;停止所有中斷imr:立即數(shù)寄存器 stm 0ffffh,ifr;清除所有中斷標(biāo)志ifr:中斷標(biāo)志寄存器 stm 04h,imr;允許int2中斷 rsbx 1,11;允許所有中斷 ret .end 【端口程序】跟【向量程序】與實驗四的相同,在此不再重復(fù)。實驗操作:1.單擊“Run”運行程序,反復(fù)撥動開關(guān)K0,觀察LP1~LP7LED燈亮滅變化;2.單擊“Halt”暫停程序運行,反復(fù)撥動開關(guān)K0,LP1~LP7LED燈亮滅不變化;3.關(guān)閉所有窗口,本實驗完畢。實驗六:A/D采樣實驗實驗?zāi)康恼莆绽肨LV320AD50實現(xiàn)A/D轉(zhuǎn)換的技術(shù)基本原理和常用方法。學(xué)會DSP的多信道緩沖串口的應(yīng)用方法。掌握并熟練使用DSP和AD50的接口及其操作。通過實驗加深對DSP系統(tǒng)頻譜混疊認(rèn)識。實驗設(shè)備計算機,CCS2.0軟件,DSP仿真器,實驗箱,示波器,連接導(dǎo)線。實驗步驟和內(nèi)容實驗連線用短接塊短接SS1的1,2腳,設(shè)置輸出低頻信號;短接S2的Sin腳,設(shè)置輸出正弦波信號,這時模擬信號產(chǎn)生單元SP1輸出為低頻正弦波。JD跳線斷開,設(shè)置語音處理單元輸入信號為交流;并用導(dǎo)線連接SP1腳和JAD3的1腳,將模擬低頻正弦波信號接入語音處理單元。用導(dǎo)線連接JAD1的INP和INPF,以及JAD2的INM和INMF,將語音處理單元輸出的差動模擬信號接入AD50輸入端。運行CCS2.0軟件,裝入“exp06.pjt”工程文件,雙擊“exp06.pjt”及“Source”,打開各源程序;并閱讀程序,明確多通道串口和AD50初始化程序,DSP串口采樣程序使用。3.加載“exp06.out”示范程序,在“exp06.c”中“READAD50()”處,設(shè)置斷點,運行程序,通過用下拉菜單中的View/Graph的“Time/Frequency”打開一個圖形觀察窗口;調(diào)節(jié)輸入信號的頻率或幅值,觀察圖形情況(幅值和頻率);單擊“Animate”運行程序,在圖形觀察窗口觀察A/D轉(zhuǎn)換后的采樣波形;調(diào)節(jié)輸入信號的頻率或幅值,做同樣的采樣實驗,觀察采樣結(jié)果。4.調(diào)節(jié)輸入信號的頻率或幅值,觀察輸入頻率大于采樣頻率1/2時波形圖形時,認(rèn)識頻譜混疊現(xiàn)象。5.Halt”暫停程序運行,6.“View”的下拉菜單中“Memory”打開內(nèi)存資料觀察窗口,設(shè)置該內(nèi)存資料觀察窗口的參數(shù),運行“Animate”程序,通過內(nèi)存觀察窗口,觀察數(shù)據(jù)存儲器中的采樣數(shù)值變化。用“View”的下拉菜單中“Memory”打開內(nèi)存資料觀察窗口。設(shè)置該內(nèi)存資料觀察窗口的參數(shù),選擇地址為0x1000H,資料格式C格式16進制數(shù);單擊“Animate”運行程序,調(diào)整內(nèi)存資料觀察窗口,并在該窗口中觀察資料變化,A/D轉(zhuǎn)換后的資料存儲在地址為0x1000~0x10FFH單元內(nèi),變化資料將變?yōu)榧t色;單擊“Halt”停止程序運行;C程序:externvoidInitC5402(void);/*創(chuàng)建初始化C5402的函數(shù),返回值為空*/externvoidOpenMcBSP(void);/*創(chuàng)建打開McBSP端口的函數(shù),返回值為空;*/externvoidCloseMcBSP(void);/*創(chuàng)建關(guān)閉McBSP端口函數(shù)*/externvoidREADAD50(void);/*創(chuàng)建從AD50的數(shù)據(jù)流中讀取數(shù)據(jù)的函數(shù);AD50:硬件端口*/voidmain(void)/*主函數(shù)開始*/{InitC5402();/*初始化C5402DSP*/OpenMcBSP();/*調(diào)用函數(shù),打開McBSP端口*/while(1){READAD50();/*從AD50的數(shù)據(jù)流中讀取數(shù)據(jù),完成AD轉(zhuǎn)換*/}}匯編程序代碼(含注釋): .global_InitC5402 ;全局符號定義_InitC5402(初始化C5402) .global_OpenMcBSP ;全局符號定義_OpenMcBSP(打開McBSP) .global_CloseMcBSP;全局符號定義_CLoseMcBSP(關(guān)閉McBSP) .global_READAD50 ;全局符號定義_READAD50(讀取AD50數(shù)據(jù)流) .global_WRITEAD50 ;全局符號定義_WRITEAD50(向AD50寫入數(shù)據(jù)流) .includeMMRegs.h ;引入頭文件MMRegs.h_InitC5402: NOPa LD#0,DP;重置數(shù)據(jù)存儲器頁指針 STM#0,CLKMD;對DSP時鐘進行軟件設(shè)置 STM#0,CLKMD;(在設(shè)置之前轉(zhuǎn)到分線規(guī)模式) STM#0x4007,CLKMD;將C5402DSP時鐘設(shè)置到40Hz *******ConfigureC5402SystemRegisters;(配置C5402系統(tǒng)寄存器)******* STM#0x2000,SWWSR;為IO空間設(shè)置兩個等待周期;SWWSR:外部總線S/W等待狀態(tài)寄存器;為數(shù)據(jù)和監(jiān)督空間設(shè)置0個等待周期 STM#0x0000,BSCR;為堆棧轉(zhuǎn)換寄存器設(shè)置等待狀態(tài);BSCR:外部總線塊轉(zhuǎn)換控制寄存器;堆??臻g為64k,之間沒有多余的循環(huán);連續(xù)的監(jiān)督/數(shù)據(jù)讀取 STM#0x1800,ST0;為狀態(tài)寄存器0進行預(yù)設(shè)值 STM#0x2900,ST1;為狀態(tài)寄存器1進行預(yù)設(shè)值(note:INTX=1) STM#0x00A0,PMST;PMST:處理器方式狀態(tài)寄存器 ;OVLY=1,向量指向0080h*******SetupTimerControlRegisters;(設(shè)置時鐘控制寄存器)******* STM#0x0010,TCR;停止on–chip計時TCR定時器控制寄存器;計時器0用作主循環(huán)的計時器 *******InitializeMcBSP2Registers;(初始化McBSP2(用來創(chuàng)建設(shè)備配置)寄存器)******* STMSPCR1,McBSP2_SPSA;設(shè)置SPCR1的寄存器地址 STM#0000h,McBSP2_SPSD;McBSP2recv=left–justify;通過框架同步產(chǎn)生接受中斷 STMSPCR2,McBSP2_SPSA;設(shè)置SPCR2的寄存器地址;通過框架同步產(chǎn)生傳輸中斷 STM#0000h,McBSP2_SPSD;McBSP2Tx(異步傳輸);在SW斷點之后運行 STMRCR1,McBSP2_SPSA;設(shè)置RCR1的寄存器地址;RCR1:接收控制寄存器 STM#0040h,McBSP2_SPSD;接收框架1長度=16bits STMRCR2,McBSP2_SPSA;設(shè)置RCR2的寄存器地址 STM#0040h,McBSP2_SPSD;接收相位=1;設(shè)置框架2長度為16bits STMXCR1,McBSP2_SPSA;設(shè)置XCR1的寄存器地址 STM#0040h,McBSP2_SPSD;設(shè)置與接收(recv)相同 STMXCR2,McBSP2_SPSA;設(shè)置XCR2的寄存器地址 STM#0040h,McBSP2_SPSD;設(shè)置與接收(recv)相同 STMPCR,McBSP2_SPSA;設(shè)置PCR的寄存器地址 STM#000eh,McBSP2_SPSD;時鐘和框架從外部產(chǎn)生(slave)*******FinishDSPInitialization;(結(jié)束DSP初始化)******* STM#0x0000,IMR;關(guān)閉外圍中斷 STM#0xFFFF,IFR;清除中斷的標(biāo)志 RET;返回主程序 NOP NOP *******WaitingforMcBSP0RXFinished;(等待McBSP0異步接收結(jié)束)*******IfRxRDY1: NOP STMSPCR1,McBSP2_SPSA;啟動McBSP2Rx LDMMcBSP2_SPSD,A AND#0002h,A;隱藏已經(jīng)接受到的bit(可以用來代替系列端口中斷) BCIfRxRDY1,AEQ;繼續(xù)寄存(checking) NOP NOP RET;返回 NOP NOP*******WaitingforMcBSP0TXFinished;(等待McBSP0異步傳輸結(jié)束)*******IfTxRDY1: NOP STMSPCR2,McBSP2_SPSA;啟動McBSP2Tx LDMMcBSP2_SPSD,A AND#0002h,A;隱藏已經(jīng)傳輸?shù)腷it BCIfTxRDY1,AEQ;繼續(xù)寄存 NOP NOP RET;返回 NOP NOP************************************************************************************_OpenMcBSP: rsbxxf;寄存器xf復(fù)位為0 callwait;非條件調(diào)用等待狀態(tài) NOP STMSPCR1,McBSP2_SPSA;啟動McBSP0RX以讀入AD數(shù)據(jù) LDMMcBSP2_SPSD,A OR#0x0001,A STLMA,McBSP2_SPSD;隱藏已經(jīng)接受到的bit STMSPCR2,McBSP2_SPSA;啟動McBSP0TX以DTMF輸出 LDMMcBSP2_SPSD,A OR#0x0001,A STLMA,McBSP2_SPSD;隱藏已經(jīng)輸出的bit LD#0h,DP;裝載數(shù)據(jù)頁0 rpt#23;循環(huán)執(zhí)行 NOP ssbxxf;寄存器xf置位為1 NOP NOP CALLIfTxRDY1;非條件調(diào)用IfTxRDY1 STM#0x0001,McBSP2_DXR1;請求二級傳送 NOP CALLIfTxRDY1;非條件調(diào)用IfTxRDY1 STM#0100h,McBSP2_DXR1;將00h寫入到寄存器1 CALLIfTxRDY1;非條件調(diào)用IfTxRDY1 STM#0000h,McBSP2_DXR1; NOP NOP rpt#20h nop CALLIfTxRDY1;非條件調(diào)用IfTxRDY1 STM#0x0001,McBSP2_DXR1;請求二級傳送 CALLIfTxRDY1;非條件調(diào)用IfTxRDY1 STM#0200h,McBSP2_DXR1;將00h寫入到寄存器2 CALLIfTxRDY1 STM#0000h,McBSP2_DXR1 CALLIfTxRDY1 STM#0x0001,McBSP2_DXR1;請求二級傳送 CALLIfTxRDY1 STM#0300h,McBSP2_DXR1;將00h寫入到寄存器3 CALLIfTxRDY1 STM#0000h,McBSP2_DXR1CALLIfTxRDY1 STM#0x0001,McBSP2_DXR1;請求二級傳送 CALLIfTxRDY1 STM#0490h,McBSP2_DXR1;將00h寫入到寄存器4 ;通過內(nèi)部DPLLbypassinternalDPLL ;并且選擇抽樣頻率andselecttheSampleFrequency CALLIfTxRDY1 STM#0000h,McBSP2_DXR1 RET NOP NOP*********************_CloseMcBSP: STMSPCR1,McBSP2_SPSA;關(guān)閉McBSP0RX LDMMcBSP2_SPSD,A AND#0xFFFE,A STLMA,McBSP2_SPSD STMSPCR2,McBSP2_SPSA;關(guān)閉McBSP0TX LDMMcBSP2_SPSD,A AND#0xFFFE,A STLMA,McBSP2_SPSD RPT#5 RET NOP NOP_READAD50: stm 0x00ff,ar3 stm 0x1000,ar2 loopa: CALLIfRxRDY1 ldm McBSP2_DRR1,b stl b,*ar2+banzloopa,*ar3- nop nop ret nop nop _WRITEAD50: stm 0x037b,ar3 stm 0x38a3,ar2loopb: CALL IfTxRDY1 ldu *ar2+,B and#0fffeh,b;masktheLSB stlmB,McBSP2_DXR1 banz loopb,*ar3- nop nop ret nop nop wait: stm 20h,ar3loop1: stm 020h,ar4loop2: banz loop2,*ar4- banz loop1,*ar3- ret nop nop nop nop .end**************************************************************************EndofFile––InitC5402.asm*

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論