dsp实验报告Word格式文档下载.docx
《dsp实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《dsp实验报告Word格式文档下载.docx(43页珍藏版)》请在冰点文库上搜索。
DATA.set60h;
doubleramdata
.sect"
.vectors"
reset:
B_c_int00
NOP
.space31*4*16
DELAY.macrosec_tenth;
延时sec_tenth/10秒
STMsec_tenth-1,AR5
loop1?
STM#09h,AR6
loop0?
STM#19999,AR7
BANZ$,*AR7-
BANZloop0?
*AR6-
BANZloop1?
*AR5-
.endm
.text
_c_int00:
LD#0h,DP
STM#3000h,SP
RSBXINTM
STM#07FFFh,SWWSR
SSBXXF;
XF=1
ST#1007h,CLKMD;
工作在20MHz
RPT#0FFh
NOP
STM#0ffffh,IFR
ORM#000h,IMR
RSBXSXM
ST#8100H,DATA
WRDENG:
PORTWDATA,FG_ADDR
DELAY#10
NOP
ST#4200H,DATA
ST#2400H,DATA
ST#1800H,DATA
RPT#10
ST#4200H,DATA
ST#8100H,DATA
STM#00H,DATA
;
;
ST#100H,DATA
ST#200H,DATA
ST#400H,DATA
ST#800H,DATA
ST#1000H,DATA
ST#2000H,DATA
ST#4000H,DATA
STM#8000H,DATA
ST#8000H,DATA
STM#100H,DATA
ST#8100H,DATA
BWRDENG
aaanop
baaa
.end
思考题:
有哪三种以上的寻址方式可以完成上述实验?
并描述其原理。
答:
共有以下四种寻址方式可以完成上述实验:
①绝对寻址
绝对寻址利用16位地址寻址存储单元,其特点是指令中包含一个固定地址。
16位地址可以用其地址标号或程序中定义的符号常数来表示。
由于绝对地址代码的位数为16位,所以绝对地址寻址的指令至少为2个字长
②累加器寻址
累加器寻址是将累加器的内容作为地址去访问程序存储单元,即将尅假期中的数作为地址,用来对存放数据的程序存储器寻址。
③直接寻址
直接寻址是利用数据指针和堆栈指针寻址,其特点是数据存储器地址由基地址和偏移地址共同构成,共16位。
基地址位于数据存储器地址的高9位,偏移地址位于数据存储器地址的低7位。
④间接寻址
间接寻址是利用辅助寄存器内容作为地址指针访问存储器。
TMS320C54x有8个16位辅助寄存器(AR0~AR7)。
每一个寄存器都可以用来寻址64千字数据存储空间中任何一个单元。
两个辅助存储器算术运算单元(ARAU0和ARAU1)可以根据辅助寄存器的内容进行操作,完成16位无符号数算术运算。
实验二数码显示实验
一、实验目的
熟练掌握DSP的各种指令;
进一步熟悉DSP的I/O访问方式的操作,通过I/O方式将数据显示到数码管上。
二、实验设备
计算机,DSP硬件仿真器,DSP实验开发平台。
注意:
将系统主板中“MCU/DSP选择档”选中MCU(往下拨),将“功能键6”拨上去,点击键盘中的MON键,MCU将对所用的LED管进行检测。
如果所有的LED管正常,将“MCU/DSP选择档”选中DSP(往上拨),将功能键1到7都拨下来,然后开始做实验。
注意在做实验时开始按了RST硬件复位后,实验不要再按RST键,以免由于DSP复位而失败。
三、实验原理
此实验是由DSP通过IO方式对数码管进行操作,即是向数码管送数据,高4位为数码管的段码,低4位为数码管的位码,DSP用的数据线是D8~D15,如要在第0位显示一个8,就只要送入80H,其次,该实验中要求熟练运用DSP的各种指令,能使显示数据出现左移或右移等。
四、实验程序框图
实验程序:
SM_ADDR.set1003h;
数码管的I/O地址
SM_DATA.set60h;
段码在数据线的高4位,位码在数据线的次高4位.
在CPLD模块中程序为DEMO程序的情况下,段码显示已译码,比如:
要显示7,
只要往数据线的高4位发7即可.位码为0-7,在次高位数据线对应的数值也为0-7.
LD#0h,DP;
设置数据页指针
STM#2000h,SP;
设置堆栈指针
SSBXXF
CALLLED07;
显示0到7
CALLLED8F;
显示8到F
LED8FST#8000h,SM_DATA
ST#07H,AR3
PORTWSM_DATA,SM_ADDR;
8-f
RPT#10000
ST#02fffH,AR6
calldelay
ADDM#1100H,SM_DATA;
送位码,屏蔽低8位数据
BANZWRDENG,*AR3-
RET
LED07NOP
STM#0H,SM_DATA
WRDENG1NOP;
0-7
PORTWSM_DATA,SM_ADDR
BANZWRDENG1,*AR3-
delaySTM#0f0h,AR7;
延时子程序
BANZdelay,*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空间复位值为111b。
实验三、交通灯实验
了解数据输出程序的设计方法;
模拟交通灯控制,能正确的模拟交通灯。
运用定时中断
二、实验设备
计算机,DSP硬件仿真器,DSP实验开发平台。
先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33往下拨接通+/-5V电源,然后将CPLD/FPGA模块上的电源开关S9往下(ON)拨,开关S10往下拨来选通主板上双色发光二极管(交通灯)等输出指示设备;
将系统主板中“MCU/DSP选择档”选中MCU(往下拨),将“功能键7”拨上去,点击键盘中的RST键,MCU将对所用发光二极管进行检测,如果所有的双色发光二极管正常,则将“MCU/DSP选择挡”选中DSP(往上拨),将功能键1到7都拨下来。
然后开始做实验,注意在做实验时,开始按了RST硬件复位后,实验中不要再按RST键,以免由于DSP复位而失败。
三、实验原理及说明
掌握DSP的定时器、I/O访问原理,用I/O口控制红绿黄灯的开关。
ex8"
LED_ADDR.set1001h
STATUS0.set60h
STATUS1.set61h
STATUS2.set62h
STATUS3.set63h
STATUS4.set64h
STA2_PRE_0.set65h
STA2_PRE_1.set66h
STA4_PRE_0.set67h
STA4_PRE_1.set68h
.sect"
B_c_int00
.space4*127
.text
_c_int00
SSBXINTM
SSBXSXM
STM#07FFFh,SWWSR;
IO总线外部等待时间14个周期
STM#0h,CLKMD;
20MHz工作
tstBITFCLKMD,#1h
BCtst,TC
STM#1007h,CLKMD
ST#0FFFFh,IFR
ST#0AA00H,STATUS0
LOOPBPORTWSTATUS0,LED_ADDR;
全部红灯
DELAY#100;
延时1秒
circleST#6600H,STATUS1
PORTWSTATUS1,LED_ADDR;
南北红灯、东西绿灯
DELAY#200;
延时20秒
STM#2h,BRC
RPTBflash1
ST#6600H,STA2_PRE_0
PORTWSTA2_PRE_0,LED_ADDR
DELAY#30
ST#2200H,STA2_PRE_1
PORTWSTA2_PRE_1,LED_ADDR
flash1NOP;
南北绿灯闪3次、东西红灯
ST#0EE00H,STATUS2
PORTWSTATUS2,LED_ADDR;
南北黄灯、东西红灯
DELAY#30;
延时3秒
ST#9900H,STATUS3
PORTWSTATUS3,LED_ADDR;
RPTBflash2
ST#09900H,STA4_PRE_0
PORTWSTA4_PRE_0,LED_ADDR
DELAY#30
ST#08800H,STA4_PRE_1
PORTWSTA4_PRE_1,LED_ADDR
南北红灯、东西绿灯闪3次
flash2NOP
ST#0BB00H,STATUS4
PORTWSTATUS4,LED_ADDR;
南北红灯、东西黄灯
Bcircle
.end
六、实验思考
如果在程序运行过程中遇到硬件中断,如何保护保持原有的现场?
将程序计数器PC值(返回地址)保存到数据存储器的堆栈顶部。
在中断响应时,程序计数器扩展寄存器(XPC)不会压入堆栈的顶部,也就是说,它不会保存在堆栈中。
因此,如果ISR位于和中断向量表不同的页面,用户必须在分支转移到ISR之前将XPC压入堆栈,远程返回指令FRET(E)可以用于从ISR返回。
实验四、同步串口
了解同步串口工作原理;
了解AD50工作原理。
计算机,DSP硬件仿真器,DSP实验开发平台,耳机,麦克风。
先将实验箱右侧的船型开关往“I”方向打开电源,然后将系统主板的开关S33往下拨接通+/-5V电源,然后将CPLD/FPGA模块上的电源开关S9往下(ON)拨。
三、实验要求
通过DSP的同步串口能向AD50发送控制字和数据,接收AD50发送的数据。
四、实验原理及说明
同步串口实验,主要是通过5402的同步串口访问A/D芯片,使学生了解同步串口工作原理。
该实验所需的硬件主要是DSP、DRAM、TMS320AD50、TLC2272,在实验过程中如果TLC320AD50C工作不正常,请按复位键(MON键或RST)对实验仪器硬件复位。
编写DSP同步串口程序访问AD50,将麦克风的语音信号经过TLC2272(双路低噪声)滤波,通过AD50的A/D转换后,将模拟信号转换为数字信号,再将数字信号发送到AD50的D/A端口。
将麦克风(红色)插入语音输入插座,耳机(黑色)插入语音输出插座。
运行程序。
要在耳机里听到麦克风所输入的声音。
五、实验程序框图
中断服务程序
ex4"
BSP.set0;
当前使用McBsp1
McBsp内存映射寄存器
SPSA0.set038h
SPSD0.set039h
DRR10.set021h
DRR20.set020h
DXR10.set023h
DXR20.set022h
SPSA1.set048h
SPSD1.set049h
DRR11.set041h
DRR21.set040h
DXR11.set043h
DXR21.set042h
McBspSubaddressedRegisters
SPCR1.set00h
SPCR2.set01h
RCR1.set02h
RCR2.set03h
XCR1.set04h
XCR2.set05h
SRGR1.set06h
SRGR2.set07h
MCR1.set08h
MCR2.set09h
RCERA.set0ah
RCERB.set0bh
XCERA.set0ch
XCERB.set0dh
PCR.set0eh
.ifBSP=0
SPSA.setSPSA0
SPSD.setSPSD0
RDRR.setDRR10
RDXR.setDXR10
.endif
.ifBSP=1
SPSA.setSPSA1
SPSD.setSPSD1
RDRR.setDRR11
RDXR.setDXR11
WR_SUB_REG.macroval,addr;
写McBsp控制寄存器
stmaddr,SPSA
nop
stmval,SPSD
.endm
RD_SUB_REG.macroaddr,acc;
读McBsp控制寄存器
stm#:
addr:
SPSA
ldmSPSD,acc
WAITTRX.macro;
等待串口中断
WAITR?
RD_SUB_REGSPCR1,A
and#1<
<
1,A
bcWAITR?
AEQ
.endm
PROGREG.macroprogword;
与AD50二次通讯
stm#01h,RDXR
WAITTRX
stm#:
progword:
RDXR
.endm
wait.macro
STM#0008h,AR0
RPT*AR0
.endm
RESETbd_c_int00
stm#2000h,SP
.space19*4*16
BRINT0brecv
nop
BXINT0btrans
.space10*4*16
BRINT1brecv
nop
BXINT1btrans
.space4*4*16
ld#0h,DP
ssbxINTM
ssbxSXM
st#2491h,SWWSR
st#0ffe0h,PMST
st#0f007h,CLKMD
stm#4000h,AR1
stm#4000h,ar2
mcbsp_init;
初始化McBsp串口
rsbxCPL
nop;
cpllatency
nop;
ld#0,DP
ssbxINTM
ssbxSXM
WR_SUB_REG