DSP硬件实验报告北邮.docx
- 文档编号:29179522
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:33
- 大小:221.77KB
DSP硬件实验报告北邮.docx
《DSP硬件实验报告北邮.docx》由会员分享,可在线阅读,更多相关《DSP硬件实验报告北邮.docx(33页珍藏版)》请在冰豆网上搜索。
DSP硬件实验报告北邮
北京邮电大学
DSP硬件实验报告
学院:
电子工程学院
专业:
姓名:
学号:
班级:
实验一常用指令实验
一、实验目的
熟悉DSP开发系统的连接
了解DSP开发系统的组成和结构和应用系统构成
熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口,定时器,中断控制)。
二、实验步骤与内容
(一)简单指令程序运行实验
源程序:
;FileName:
exp01.asm
;theprogramiscompiledatnoautoinitializationmode--程序在非自动初始化模式下编译
.mmregs--(entermemory-mappedregistersintothesymboltable)--进入记忆映射注册进入符号表
.global_main--(identifyoneormoreglobal(external)symbols)--定义一个或多个全局变量
_main:
stm(累加器的低端存放到存储器映射寄存器中)#3000h,sp(堆栈指针寄存器);堆栈指针的首地址设为#3000h
ssbx(状态寄存器位置位)xf;状态寄存器位置位,灯亮
call(非条件调用,可选择延迟)delay(存储器延时);调用delay函数延时
rsbx(状态寄存器复位)xf;状态寄存器位复位,灯灭
calldelay;调用delay函数延时
b(累加器)_main;可选择延迟的无条件转移,循环执行
nop(无操作)
nop
;delay.5second
delay:
;延迟0.5秒
stm270fh,ar3(辅助寄存器3);把地址存放到存储器映射寄存器中
loop1:
stm0f9h,ar4(辅助寄存器4);把地址存放到存储器映射寄存器中
loop2:
banzloop2,*ar4-;AR4不为0时转移,指针地址减一
banzloop1,*ar3-;若不为0,ar3减1,共进行10000*250次跳转
ret(可选择延迟的返回pc=sp++);return,返回
nop
nop
;stm2cycles
;banzwhenTRUE4cycles
;FALSE2cycles
;0f9h=>249d
;270fh=>9999d
.end
实验现象
XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;
(二)资料存储实验
源程序:
*FileName:
exp02.asm
;getsomeknowledgeofthecmdfile
;theprogramiscompiledatnoautoinitializationmode
.mmregs
.global_main
_main:
;storedata
stm1000h,ar1;ar1映射到内存1000h位
;stm5000h,ar1;addressofexteriormemory
rpt(循环执行下一条指令,计数为短立即数)#07h;循环执行下一条指令8次
st(存储T寄存器的值)0aaaah,*ar1+;data存储寄存器的值
;readdatathenre-store
stm7h,ar3;设置ar3
;stm5000h,ar1;addressofexteriormemory
;stm5008h,ar2;addressofexteriormemory
stm1000h,ar1;设置ar1为1000h
stm1008h,ar2;设置ar2为1008h
loop:
ld*ar1+,t;把单数据存储操作数装入T寄存器中
stt,*ar2+;存储T寄存器的值
banzloop,*ar3-;循环7次
here:
bhere;可选择延迟的无条件转移,循环执行
.end
实验目的:
;本实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。
在CCS中可以观察DATA内存空间地址0X1000~0X100F值的变化。
实验现象:
在CCS的“View”下拉菜单中的Memory窗口中查找C5410各个区段的数据存储器地址,在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察结果;本实验要查看0x1000H~0x100FH单元的数值变化,输入地址0x1000H;查看0x1000H~0x100FH单元的初始值,单击“Run”运行程序,也可以“单步”运行程序;单击“Halt”暂停程序运行。
(三):
I/O实验
源程序:
;FileName:
exp03.asm
;learnhowtooperatetheI/Oports
;getsomeknowledgeoftherts.libfile
;intheI/Ospace0x0000=>8switches
;0x0001=>8LEDs
.mmregs
.global_main
.text
_main:
stm3100h,sp;堆栈指针的首地址设为#3100h
stm1000h,ar1;definetheaddress,定义ar1的地址
;definetheaddress
portr00h,*ar1;从端口00h读出开关状态,存入ar1中。
*ar1=port(00h)
nop
nop
portw*ar1,01h;将ar1的内容(开关状态)写入到led灯上(输入到01h),控制灯的亮灭
nop
nop
b_main;寻循环执行
nop
nop
.end
;实验现象
;任意调整K0—K7开关,可以观察到对应LP0—LP7灯“亮”或“灭”(四):
定时器实验
源程序
【初始化程序】
.mmregs
.global_initial
_initial:
stm300h,ar1;初始化300h数据地址,设置ar1的地址
st#00h,*ar1;辅助寄存器ar1指向#00h
stm302h,ar1;初始化302h数据地址,设置ar2的地址
st#00h,*ar1;辅助寄存器ar1指向#00h
stm200h,ar1
st#5555h,*ar1
stm201h,ar1
st#0aaaah,*ar1
stm202h,ar1
st#400h,*ar1
ssbx1,11;将ST1.INTM置为1,停止所有中断
stm0ffffh,ifr;清除所有中断标识ifr:
中断标志寄存器
stm00h,imr;将立即数寄存器(imr)置为0,停止所有中断
stm410h,tcr;停止计时器tcr:
发送控制寄存器
stm4e1fh,prd;将初始时间设为4e1fh
stm420h,tcr;开始计时器
stm08h,imr;允许计时器中断
rsbx1,11;将ST1.INTM置为0,开始所有中断
ret
【端口程序】(定义管脚)
.mmregs
.global_porta
.global_portb
_porta:
stm304h,ar1;设置ar1地址
st5555h,*ar1;辅助寄存器ar1指向5555h
portw*ar1,01h;ar1的值做输出控制小灯亮灭
ret
_portb:
stm304h,ar1;设置ar1地址
st0aaaah,*ar1;辅助寄存器ar1指向0aaaah
portw*ar1,01h;ar1的值控制亮灭
ret
【向量程序】
.sect".vectors"
.ref_c_int00;C程序入口
.ref_timer;时间中断点
.align0x80;必须被连结到页边界
RESET:
;重设向量
BD_c_int00;到C入口点的分支
STM#200,SP;堆栈大小为200SP:
堆栈寄存器
nmi:
RETE;启动中断并从一个返回
NOP
NOP
NOP
;软件中断
sint17.space4*16
sint18.space4*16
sint19.space4*16
sint20.space4*16
sint21.space4*16
sint22.space4*16
sint23.space4*16
sint24.space4*16
sint25.space4*16
sint26.space4*16
sint27.space4*16
sint28.space4*16
sint29.space4*16
sint30.space4*16
int0:
RETE
NOP
NOP
NOP
int1:
RETE
NOP
NOP
NOP
int2:
RETE
NOP
NOP
NOP
tint:
b_timer;设置实用time中断
NOP
NOP
rint0:
RETE
NOP
NOP
NOP
xint0:
RETE
NOP
NOP
NOP
rint1:
RETE
NOP
NOP
NOP
xint1:
RETE
NOP
NOP
NOP
int3:
RETE
NOP
NOP
NOP
.end
实验现象
单击“Run”运行,可观察到LED灯(LP0—LP7)以一定的间隔时间不停摆动;单击“Halt”,暂停程序运行,LED灯停止闪烁;.单击“Halt”,暂停程序运行,LED灯停止闪烁。
(五):
INT2中断实验
源程序
【初始化程序】
.mmregs
.global_initial
.text
_initial:
stm300h,ar3;初始化数据300har3:
辅助寄存器
st#00h,*ar3;辅助寄存器ar3指向#00h
stm302h,ar4;初始化数据300har4:
辅助寄存器
st#00h,*ar4
ssbx1,11;将st1.intm置为1,停止所有中断
stm00h,imr;将立即数置0,停止所有中断imr:
立即数寄存器
stm0ffffh,ifr;清除所有中断标志ifr:
中断标志寄存器
stm04h,imr;允许int2中断
rsbx1,11;允许所有中断
ret
.end
【端口程序】与【向量程序】参见实验四。
.实验现象
单击“Run”运行程序,反复拨动开关K0,观察LP1—LP7LED灯亮灭变化;单击“Halt”暂停程序运行,反复拨动开关K0,LP1—LP7LED灯亮灭不发生变化。
实验二:
A/D采样实验
实验目的
1.掌握利用TLV320AD50实现A/D转换的技术基本原理和常用方法。
2.学会DSP的多信道缓冲串口的应用方法。
3.掌握并熟练使用DSP和AD50的接口及其操作。
4.通过实验加深对DSP系统频谱混叠认识.
源程序:
【C程序】
externvoidInitC5402(void);/*创建初始化C5402的函数,返回值为空*/
externvoidOpenMcBSP(void);/*创建打开McBSP端口的函数,返回值为空;*/
externvoidCloseMcBSP(void);/*创建关闭McBSP端口函数*/
externvoidREADAD50(void);/*创建从AD50的数据流中读取数据的函数;AD50:
硬件端口*/
voidmain(void)/*主函数开始*/
{
InitC5402();/*初始化C5402DSP*/
OpenMcBSP();/*调用函数,打开McBSP端口*/
while
(1)
{
READAD50();/*从AD50的数据流中读取数据,完成AD转换*/
}
}
【汇编程序】
.global_InitC5402;全局符号定义_InitC5402(初始化C5402)
.global_OpenMcBSP;全局符号定义_OpenMcBSP(打开McBSP)
.global_CloseMcBSP;全局符号定义_CLoseMcBSP(关闭McBSP)
.global_READAD50;全局符号定义_READAD50(读取AD50数据流)
.global_WRITEAD50;全局符号定义_WRITEAD50(向AD50写入数据流)
.includeMMRegs.h;引入头文件MMRegs.h
_InitC5402:
NOP
LD#0,DP;重置数据存储器页指针
STM#0,CLKMD;对DSP时钟进行软件设置
STM#0,CLKMD;(在设置之前转到分线规模式)
STM#0x4007,CLKMD;将C5402DSP时钟设置到40Hz
*******ConfigureC5402SystemRegisters*******;配置C5402系统寄存器
STM#0x2000,SWWSR;为IO空间设置两个等待周期
;SWWSR:
外部总线S/W等待状态寄存器
;为数据和监督空间设置0个等待周期
STM#0x0000,BSCR;为堆栈转换寄存器设置等待状态
;BSCR:
外部总线块转换控制寄存器
;堆栈空间为64k,之间没有多余的循环
;连续的监督/数据读取
STM#0x1800,ST0;为状态寄存器0进行预设值
STM#0x2900,ST1;为状态寄存器1进行预设值(note:
INTX=1)
STM#0x00A0,PMST;PMST:
处理器方式状态寄存器
;OVLY=1,向量指向0080h
*******SetupTimerControlRegisters*******;(设置时钟控制寄存器)
STM#0x0010,TCR;停止on–chip计时TCR定时器控制寄存器
;计时器0用作主循环的计时器
*******InitializeMcBSP2Registers*******;(初始化McBSP2(用来创建设备配置)寄存器)
STMSPCR1,McBSP2_SPSA;设置SPCR1的寄存器地址
STM#0000h,McBSP2_SPSD;McBSP2recv=left–justify
;通过框架同步产生接受中断
STMSPCR2,McBSP2_SPSA;设置SPCR2的寄存器地址
;通过框架同步产生传输中断
STM#0000h,McBSP2_SPSD;McBSP2Tx(异步传输)
;在SW断点之后运行
STMRCR1,McBSP2_SPSA;设置RCR1的寄存器地址
;RCR1:
接收控制寄存器
STM#0040h,McBSP2_SPSD;接收框架1长度=16bits
STMRCR2,McBSP2_SPSA;设置RCR2的寄存器地址
STM#0040h,McBSP2_SPSD;接收相位=1
;设置框架2长度为16bits
STMXCR1,McBSP2_SPSA;设置XCR1的寄存器地址
STM#0040h,McBSP2_SPSD;设置与接收(recv)相同
STMXCR2,McBSP2_SPSA;设置XCR2的寄存器地址
STM#0040h,McBSP2_SPSD;设置与接收(recv)相同
STMPCR,McBSP2_SPSA;设置PCR的寄存器地址
STM#000eh,McBSP2_SPSD;时钟和框架从外部产生(slave)
*******FinishDSPInitialization*******;(结束DSP初始化)
STM#0x0000,IMR;关闭外围中断
STM#0xFFFF,IFR;清除中断的标志
RET;返回主程序
NOP
NOP
*******WaitingforMcBSP0RXFinished*******;(等待McBSP0异步接收结束)
IfRxRDY1:
NOP
STMSPCR1,McBSP2_SPSA;启动McBSP2Rx
LDMMcBSP2_SPSD,A
AND#0002h,A;隐藏已经接受到的bit(可以用来代替系列端口中断)
BCIfRxRDY1,AEQ;继续寄存(checking)
NOP
NOP
RET;返回
NOP
NOP
*******WaitingforMcBSP0TXFinished*******;(等待McBSP0异步传输结束)
IfTxRDY1:
NOP
STMSPCR2,McBSP2_SPSA;启动McBSP2Tx
LDMMcBSP2_SPSD,A
AND#0002h,A;隐藏已经传输的bit
BCIfTxRDY1,AEQ;继续寄存
NOP
NOP
RET;返回
NOP
NOP
******************************************
_OpenMcBSP:
rsbxxf;寄存器xf复位为0
callwait;非条件调用等待状态
NOP
STMSPCR1,McBSP2_SPSA;启动McBSP0RX以读入AD数据
LDMMcBSP2_SPSD,A
OR#0x0001,A
STLMA,McBSP2_SPSD;隐藏已经接受到的bit
STMSPCR2,McBSP2_SPSA;启动McBSP0TX以DTMF输出
LDMMcBSP2_SPSD,A
OR#0x0001,A
STLMA,McBSP2_SPSD;隐藏已经输出的bit
LD#0h,DP;装载数据页0
rpt#23;循环执行
NOP
ssbxxf;寄存器xf置位为1
NOP
NOP
CALLIfTxRDY1;非条件调用IfTxRDY1
STM#0x0001,McBSP2_DXR1;请求二级传送
NOP
CALLIfTxRDY1;非条件调用IfTxRDY1
STM#0100h,McBSP2_DXR1;将00h写入到寄存器1
CALLIfTxRDY1;非条件调用IfTxRDY1
STM#0000h,McBSP2_DXR1;
NOP
NOP
rpt#20h
nop
CALLIfTxRDY1;非条件调用IfTxRDY1
STM#0x0001,McBSP2_DXR1;请求二级传送
CALLIfTxRDY1;非条件调用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_DXR1
CALLIfTxRDY1
STM#0x0001,McBSP2_DXR1;请求二级传送
CALLIfTxRDY1
STM#0490h,McBSP2_DXR1;将00h写入到寄存器4
;通过内部DPLLbypassinternalDPLL
;并且选择抽样频率andselecttheSampleFrequency
CALLIfTxRDY1
STM#0000h,McBSP2_DXR1
RET
NOP
NOP
*********************
_CloseMcBSP:
STMSPCR1,McBSP2_SPSA;关闭McBSP0RX
LDMMcBSP2_SPSD,A
AND#0xFFFE,A
STLMA,McBSP2_SPSD
STMSPCR2,McBSP2_SPSA;关闭McBSP0TX
LDMMcBSP2_SPSD,A
AND#0xFFFE,A
STLMA,McBSP2_SPSD
RPT#5
RET
NOP
NOP
_READAD50:
stm0x00ff,ar3
stm0x1000,ar2
loopa:
CALLIfRxRDY1
ldmMcBSP2_DRR1,b
stlb,*ar2+
banzloopa,*ar3-
nop
nop
ret
nop
nop
_WRITEAD50:
stm0x037b,ar3
stm0x38a3,ar2
loopb:
CALLIfTxRDY1
ldu*ar2+,B
and#0fffeh,b;masktheLSB
stlmB,McBSP2_DXR1
banzloopb,*ar3-
nop
nop
ret
nop
nop
wait:
stm20h,ar3
loop1:
stm020h,ar4
loop2:
banzloop2,*ar4-
banzloop1,*ar3-
ret
nop
nop
nop
nop
.end
************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 硬件 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)