《DSP实验报告.doc》由会员分享,可在线阅读,更多相关《DSP实验报告.doc(32页珍藏版)》请在三一文库上搜索。
1、DSP实验报告 班 级:电 信 073班 实 验 者: 同实验者:电气与信息工程学院 实验一 I/O实验实验目的:熟悉SZDSPII实验平台的使用;了解DSP对I/O口的访问方式;熟悉简单的程序设计及指令运用。实验设备:计算机;DSP硬件仿真器;DSP实验开发平台。实验硬件设置:在做实验以前,需要接通该实验的硬件电路,本实验为:先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33往下拨接通+/-5V电源,然后将CPLD/FPGA模块上的电源开关S9往下(ON)拨,开关S10往下拨来选通主板上发光二极管等输出指示设备;将系统主板中“MCU/DSP选择档”选中MCU(往下拨),
2、将“功能键7”拨上去,电击键盘中的RST键,MCU将对所有发光二极管进行检测,如果所有的发光二极管正常,则将“MCU/DSP选择挡”选中DSP,将功能键1到7都拨下来。然后开始做实验,注意在做实验时开始按了RST硬件复位后,实验不要再按RST键,以免由于DSP复位而失败。如果实验中硬件工作不正常,可按RST对整个系统硬件进行复位。实验原理:本程序主要是实现将数据往一个I/O端口送,从而显示一种状态,来验证DSP对I/O口的访问。该实验是由DSP直接编程,往发光二极管送数,运用PORTW指令,观察发光二极管的变化,从而完成基本的I/O实验。硬件框图DSPCPLD锁存8个指示灯D8-D15高八位数
3、据指示灯的片选1002H实验程序框图开始DSP初始化DSP送出不同的数据输出到1002H实验程序.title ex9.global _c_int00.mmregsFG_ADDR .set 1002H DATA.set60h ;double ram data.sect .vectorsreset:B _c_int00NOPNOP.space 31*4*16 DELAY.macro sec_tenth;延时 sec_tenth/10 秒STM sec_tenth-1,AR5loop1?STM #09h,AR6loop0?STM #19999,AR7BANZ $,*AR7-BANZ loop0?,*
4、AR6-BANZ loop1?,*AR5-.endm.text_c_int00:LD #0h,DPSTM #3000h,SPRSBX INTMSTM #07FFFh,SWWSR SSBX XF ;XF=1 ST #1007h,CLKMD;工作在20MHzRPT #0FFhNOP STM #0ffffh,IFRORM #000h,IMRRSBX SXMST #8100H,DATA WRDENG: PORTWDATA,FG_ADDR DELAY#10 NOP ST #4200H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #2400H,DATA PORTWDATA,FG_
5、ADDR DELAY#10 ST #1800H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #1800H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #2400H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #4200H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #8100H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP STM #00H,DATA ; PORTWDATA,FG
6、_ADDR DELAY#10 NOP ST #100H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #200H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #400H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #800H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #1000H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #2000H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 N
7、OP ST #4000H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP STM #8000H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ; ST #8000H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #4000H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #2000H,DATA PORTWDATA,FG_ADDR DELAY#10 ST #1000H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #80
8、0H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #400H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #200H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP STM #100H,DATA PORTWDATA,FG_ADDR DELAY#10 RPT #10 NOP ST #8100H,DATA B WRDENGaaa nop b aaa .end 思考题:有哪三种以上的寻址方式可以完成上述实验?并描述其原理。答:共有以下四种寻址方式可以完成上述实验
9、:绝对寻址绝对寻址利用16位地址寻址存储单元,其特点是指令中包含一个固定地址。16位地址可以用其地址标号或程序中定义的符号常数来表示。由于绝对地址代码的位数为16位,所以绝对地址寻址的指令至少为2个字长累加器寻址累加器寻址是将累加器的内容作为地址去访问程序存储单元,即将尅假期中的数作为地址,用来对存放数据的程序存储器寻址。直接寻址直接寻址是利用数据指针和堆栈指针寻址,其特点是数据存储器地址由基地址和偏移地址共同构成,共16位。基地址位于数据存储器地址的高9位,偏移地址位于数据存储器地址的低7位。间接寻址间接寻址是利用辅助寄存器内容作为地址指针访问存储器。TMS320C54x有8个16位辅助寄存
10、器(AR0AR7)。每一个寄存器都可以用来寻址64千字数据存储空间中任何一个单元。两个辅助存储器算术运算单元(ARAU0和ARAU1)可以根据辅助寄存器的内容进行操作,完成16位无符号数算术运算。实验二 数码显示实验一、实验目的熟练掌握DSP的各种指令;进一步熟悉DSP的I/O访问方式的操作,通过I/O方式将数据显示到数码管上。二、实验设备计算机,DSP硬件仿真器,DSP实验开发平台。注意:在做实验以前,需要接通该实验的硬件电路,本实验为:先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33往下拨接通+/-5V电源,然后将CPLD/FPGA模块上的电源开关S9往下(ON)拨
11、,开关S10往下拨来选通主板上发光二极管等输出指示设备;将系统主板中“MCU/DSP选择档”选中MCU(往下拨),将“功能键6”拨上去,点击键盘中的MON键,MCU将对所用的LED管进行检测。如果所有的LED管正常,将“MCU/DSP选择档”选中DSP(往上拨),将功能键1到7都拨下来,然后开始做实验。注意在做实验时开始按了RST硬件复位后,实验不要再按RST键,以免由于DSP复位而失败。三、实验原理 此实验是由DSP通过IO方式对数码管进行操作,即是向数码管送数据,高4位为数码管的段码,低4位为数码管的位码,DSP用的数据线是D8D15,如要在第0位显示一个8,就只要送入80H,其次,该实验
12、中要求熟练运用DSP的各种指令,能使显示数据出现左移或右移等。四、实验程序框图开始初始化DSP,设置I/O等待寄存器将内存中的数据或采用其他方式将数据发送到数码管去显示,其I/O地址为:1003H。具体显示方法见上述实验原理。改变数据重复发送实验程序:.title ex9.global _c_int00.mmregsSM_ADDR .set 1003h ;数码管的I/O地址SM_DATA.set60h ;段码在数据线的高4位,位码在数据线的次高4位.;在CPLD模块中程序为DEMO程序的情况下,段码显示已译码,比如:要显示7,;只要往数据线的高4位发7即可.位码为0-7,在次高位数据线对应的数
13、值也为0-7.sect .vectorsreset:B _c_int00NOPNOP.space 31*4*16 .text_c_int00:LD #0h,DP ;设置数据页指针STM #2000h,SP ;设置堆栈指针RSBX INTMSTM #07FFFh,SWWSR SSBX XF ST #1007h,CLKMD;工作在20MHzRPT #0FFhNOP STM #0ffffh,IFRORM #000h,IMRRSBX SXMaaa nop CALL LED07 ;显示0到7 CALL LED8F ;显示8到F b aaaLED8F ST #8000h,SM_DATA ST #07H,
14、AR3WRDENG: PORTWSM_DATA,SM_ADDR ;8-f RPT #10000 NOP ST #02fffH,AR6 call delay ADDM #1100H,SM_DATA ;送位码,屏蔽低8位数据 BANZ WRDENG, *AR3- RETLED07 NOP ST #07H, AR3 STM #0H,SM_DATAWRDENG1 NOP ;0-7 PORTW SM_DATA,SM_ADDR ST #02fffH,AR6 call delay ADDM #1100H,SM_DATA ;送位码,屏蔽低8位数据 BANZ WRDENG1, *AR3- RETdelaySTM
15、 #0f0h,AR7;延时子程序BANZ $,*AR7-BANZ delay,*AR6- RET五、实验思考如何设置DP、SP值,以及DP、SP在程序中所起的作用是什么?如何理解、设置I/O等待寄存器?答:DP为状态寄存器0(ST0)中的9位数据存储器页指针,SP为堆栈指针。可通过装载指令LD设置DP,通过存储指令STM设置SP。当程序调用子程序时,需要将程序计数器PC的值和一些重要的寄存器值进行压栈保护,以便程序返回时能从间断处继续执行。通过设置DP,SP可完成。为了方便地使C54x与慢速的片内存储器和I/O接口,可以通过软件可编程来延长等待周期,最多可达到7-14个机器周期,I/O空间复位
16、值为111b。实验三、交通灯实验一、实验目的了解数据输出程序的设计方法;模拟交通灯控制, 能正确的模拟交通灯。运用定时中断二、实验设备计算机,DSP硬件仿真器,DSP实验开发平台。注意:在做实验以前,需要接通该实验的硬件电路,本实验为:先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33往下拨接通+/-5V电源,然后将CPLD/FPGA模块上的电源开关S9往下(ON)拨,开关S10往下拨来选通主板上双色发光二极管(交通灯)等输出指示设备;将系统主板中“MCU/DSP选择档”选中MCU(往下拨),将“功能键7”拨上去,点击键盘中的RST键,MCU将对所用发光二极管进行检测,如
17、果所有的双色发光二极管正常,则将“MCU/DSP选择挡”选中DSP(往上拨),将功能键1到7都拨下来。然后开始做实验,注意在做实验时,开始按了RST硬件复位后,实验中不要再按RST键,以免由于DSP复位而失败。如果实验中硬件工作不正常,可按RST对整个系统硬件进行复位。三、实验原理及说明掌握DSP的定时器、I/O访问原理,用I/O口控制红绿黄灯的开关。四、实验程序框图 开始 初始化DSP全部红灯延时1秒南北绿灯、东西红灯,延时20秒南北绿灯闪3次、东西红灯南北黄灯、东西红灯延时3秒南北红灯、东西绿灯闪3次南北红灯、东西绿灯20秒延时20秒南北红灯、东西黄灯延时3秒 实验程序.title ex8
18、.global _c_int00.mmregsLED_ADDR.set1001hSTATUS0 .set 60h STATUS1 .set 61hSTATUS2 .set 62hSTATUS3 .set 63hSTATUS4 .set 64hSTA2_PRE_0 .set 65hSTA2_PRE_1 .set 66hSTA4_PRE_0 .set 67hSTA4_PRE_1 .set 68hDELAY.macro sec_tenth;延时 sec_tenth/10 秒STM sec_tenth-1,AR5loop1?STM #09h,AR6loop0?STM #19999,AR7BANZ $,
19、*AR7-BANZ loop0?,*AR6-BANZ loop1?,*AR5-.endm.sect .vectorsreset:B _c_int00NOPNOP.space 4*127.text_c_int00LD #0h,DPSTM #3000h,SPSSBX INTMSSBX SXMSTM #07FFFh,SWWSR;IO总线外部等待时间14个周期STM #0h,CLKMD;20MHz工作tstBITF CLKMD,#1hBC tst,TCSTM #1007h,CLKMDRPT #0FFhNOPST #0FFFFh,IFRORM #000h,IMR ST #0AA00H,STATUS0LO
20、OPBPORTW STATUS0,LED_ADDR;全部红灯DELAY #100;延时1秒circleST #6600H,STATUS1PORTW STATUS1,LED_ADDR;南北红灯、东西绿灯 DELAY #200;延时20秒STM #2h,BRC RPTB flash1 ST #6600H, STA2_PRE_0 PORTW STA2_PRE_0,LED_ADDR DELAY #30ST #2200H,STA2_PRE_1 PORTW STA2_PRE_1,LED_ADDR DELAY #30flash1NOP;南北绿灯闪3次、东西红灯ST #0EE00H, STATUS2PORTW
21、 STATUS2,LED_ADDR;南北黄灯、东西红灯DELAY #30;延时3秒 ST #9900H,STATUS3PORTW STATUS3,LED_ADDR;南北红灯、东西绿灯DELAY #200;延时20秒STM #2h,BRCRPTB flash2ST #09900H, STA4_PRE_0PORTW STA4_PRE_0,LED_ADDRDELAY #30ST #08800H,STA4_PRE_1PORTW STA4_PRE_1,LED_ADDRDELAY #30;南北红灯、东西绿灯闪3次flash2NOPST #0BB00H,STATUS4PORTW STATUS4,LED_AD
22、DR;南北红灯、东西黄灯DELAY #30;延时3秒 B circle .end六、实验思考如果在程序运行过程中遇到硬件中断,如何保护保持原有的现场?答:将程序计数器PC值(返回地址)保存到数据存储器的堆栈顶部。在中断响应时,程序计数器扩展寄存器(XPC)不会压入堆栈的顶部,也就是说,它不会保存在堆栈中。因此,如果ISR位于和中断向量表不同的页面,用户必须在分支转移到ISR之前将XPC压入堆栈,远程返回指令FRET(E)可以用于从ISR返回。实验四、同步串口一、实验目的了解同步串口工作原理;了解AD50工作原理。二、实验设备计算机,DSP硬件仿真器,DSP实验开发平台,耳机,麦克风。注意:在做
23、实验以前,需要接通该实验的硬件电路,本实验为:先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33往下拨接通+/-5V电源,然后将CPLD/FPGA模块上的电源开关S9往下(ON)拨。 三、实验要求通过DSP的同步串口能向AD50发送控制字和数据,接收AD50发送的数据。四、实验原理及说明同步串口实验,主要是通过5402的同步串口访问A/D芯片,使学生了解同步串口工作原理。该实验所需的硬件主要是DSP、DRAM、TMS320AD50、TLC2272,在实验过程中如果TLC320AD50C工作不正常,请按复位键(MON键或RST)对实验仪器硬件复位。编写DSP同步串口程序访问
24、AD50,将麦克风的语音信号经过TLC2272(双路低噪声)滤波,通过AD50的A/D转换后,将模拟信号转换为数字信号,再将数字信号发送到AD50的D/A端口。将麦克风(红色)插入语音输入插座,耳机(黑色)插入语音输出插座。运行程序。要在耳机里听到麦克风所输入的声音。五、实验程序框图开始初始化DSP初始化McBSP与AD50进行二次通讯设置A/D通道参数打开中断等待McBSP中断信号开始接收ADC通道采样数据把接收到的数据在反馈到DAC通道结束中断服务程序等待下一次中断中断服务程序实验程序:.title ex4BSP.set0;当前使用McBsp1;McBsp 内存映射寄存器SPSA0.set
25、 038hSPSD0.set 039hDRR10.set 021hDRR20.set020hDXR10.set 023hDXR20.set022hSPSA1.set 048hSPSD1 .set 049hDRR11 .set041hDRR21 .set 040hDXR11 .set 043hDXR21 .set042h;McBsp Subaddressed RegistersSPCR1.set00hSPCR2.set01hRCR1.set02hRCR2.set03hXCR1.set04hXCR2.set05hSRGR1.set06hSRGR2.set07hMCR1.set08hMCR2.set
26、09hRCERA.set0ahRCERB.set0bhXCERA.set0chXCERB.set0dhPCR.set0eh.if BSP = 0SPSA.setSPSA0SPSD.setSPSD0RDRR.setDRR10RDXR.setDXR10.endif.if BSP = 1SPSA.setSPSA1SPSD.setSPSD1RDRR.setDRR11RDXR.setDXR11.endifWR_SUB_REG.macro val,addr;写McBsp控制寄存器stm addr,SPSAnopstm val,SPSDnop.endmRD_SUB_REG.macro addr,acc;读M
27、cBsp控制寄存器stm #:addr:,SPSAnopldm SPSD,accnopnopnop.endmWAITTRX .macro;等待串口中断WAITR? RD_SUB_REG SPCR1,A and #11, A bc WAITR?, AEQ .endmPROGREG .macro progword;与AD50二次通讯 stm #01h,RDXR WAITTRX stm #:progword:,RDXR WAITTRX .endm wait .macro STM #0008h, AR0RPT *AR0NOP.endm .mmregs.global _c_int00.sect .vec
28、torsRESETbd _c_int00stm #2000h,SP.space 19*4*16BRINT0b recvnopnopBXINT0b transnopnop.space 10*4*16;BRINT1b recv;nop;nop;BXINT1b trans;nop;nop;.space 4*4*16.text_c_int00ld #0h,DPstm #2000h,SPssbx INTMssbx SXM st #2491h,SWWSR st #0ffe0h,PMST st #0f007h,CLKMD stm #4000h,AR1 stm #4000h,ar2 mcbsp_init;初始
29、化McBsp串口 rsbx CPL nop; cpl latency nop; cpl latencynop; cpl latencyld #0, DP ssbx INTM ssbx SXM WR_SUB_REG #0000H,SPCR1WR_SUB_REG #0200H,SPCR2WR_SUB_REG #000CH,PCRWR_SUB_REG #0000H,SPCR1WR_SUB_REG #0000H,SPCR2WR_SUB_REG #0040H,RCR1;16 BITsWR_SUB_REG #0004H,RCR2;Ignore FS after the firstWR_SUB_REG #0
30、040H,XCR1;16 BITsWR_SUB_REG #0004H,XCR2;Ignore FS after the firstld 100,Awaitandm #0ff3fh, 54h;set interrupts to come from serial ports not DMA;by clearing bits 6 and 7 in DMPRECstm #0,RDXRWR_SUB_REG #0001H,SPCR1;启动McBsp串口WR_SUB_REG #0201H,SPCR2ld 100,Awaitaic_initstm #0h,IMRorm #030h,IMRstm #0ffffh
31、,IFR PROGREG 0000001100000001b ; 876543210 PROGREG 0000010000010000b ; 876543210;PROGREG 0104H;二次通讯初始化AD50;PROGREG 0280H;PROGREG 0301h;PROGREG 045Ah;PROGREG 0000001100000001b ; 876543210 ;PROGREG 0000010000010000b ; 876543210ld RDRR,Ald RDRR,Astlm A,RDXRstlm A,RDXRrsbx INTMnopnopnopjsnopnopnopb jsre
32、cvldm RDRR,A;ADC采样数据发送到DAC输出and #0fffeh,a;and #8000h,astlm A,RDXRretetransrsbx XFrete.end六、实验思考:参考下面的这段程序,如何理解 DSP的中断向量表?.set”.vectors”RESET bd_c_int00 stm #2000h,SP .space 19*4*16BRINT0 b recv nop nopBRINT0 b trans nop nop .space 10*4*16答:中断服务程序的地址(中断向量)要装载到存储器的合适区域。一般这些向量都定位在0x0开始的程序存储器中。但有些处理器要求或
33、者可以在其他的存储区域安装中断向量。 对于微处理器模式下的TMS320C25、TMS320C26、TMS320C28、TMS320C30、TMS320C31,中断向量定位于0x0开始的地址。对于微计算机/程序引导模式下的TMS320C31的中断向量定位于0x809fc1,TMS320C26的中断向量定位于0xffa0。 TMS320C5X复位向量定位在0x0,其他中断向量可以定位于任何2K字的程序存储器中,中断向量表的定位是与PMST寄存器的IPTR位有关,有效的中断向量表的基地址是0x0,0x800,0x1000,0x1800,0x2000,0xf800。 TMS320C4X的复位向量定位在
34、四个地址之一,这四个地址由外部引脚RESETLOC0和RESETLOC1决定。TMS320C4X的中断向量可存在于任何512字范围的存储器中,中断向量表的地址由中断向量表指针(IVTP)寄存器决定。另外,TMS320C4X的自陷(trap)中断向量可存放在512字范围的存储器中,自陷向量表的地址由自陷向量表指针(TVTP)寄存器决定。有效的中断或者自陷向量表的基地址是0x0,0x200, 0x400,0x800,0xa00,0xc00,0xe00,0x1000,0x12000xfffffe00实验五、FIR滤波器实验一、实验原理熟悉数字滤波的基本原理和实现方法二、实验设备计算机,DSP硬件仿真
35、器,DSP实验开发平台,耳机,麦克风三、实验原理及说明该实验主要是通过AD50采集音频信号,数据通过同步串口传送给DSP,用数字滤波,对信号进行处理,然后再通过AD50对信号回放,把加滤波和不加滤波的回放声音进行比较。将麦克风(红色)插入语音输入插座,耳机(黑色)插入语音输出插座。运行程序。要在耳机里听到滤波后的声音。四、实验程序框图开 始初始化DSP初始化80阶FIR滤波参数初始化McBSP接口与AD50进行二次通讯打开中断等待McBSP中断信号开始接收ADC通道采样数据把接收到的数据经过80阶FIR滤波后再反馈到DAC通道结束中断服务程序等待下一次中断中断服务程序实验程序:* FileName:ex10.asm * Description:滤波器实验lowpass 01000Hz * Copyright(C) SanZhi Electronic, Author LY *.ti