DSP硬件实验报告北邮_第1页
DSP硬件实验报告北邮_第2页
DSP硬件实验报告北邮_第3页
DSP硬件实验报告北邮_第4页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、dsp硬件实验报告北邮北京邮电大学dsp硬件实验报告学院: 电子工程学院专业:姓名:学号:班级: 实验一常用指令实验 一、实验目的熟悉dsp开发系统的连接了解dsp开发系统的组成和结构和应用系统构成熟悉常用c54x系列指令的用法(程序寻址,寄存器,i/o口,定时器,中断控制)。二、实验步骤与内容(一)简单指令程序运行实验源程序:;file name:exp01.asm;the program is compiled at no autoinitialization mode -程序在非自动初始化模式下编译.mmregs -(enter memory-mapped registers into

2、the symbol table) -进入记忆映射注册进入符号表.global _main -(identify one or more global(external)symbols)-定义一个或多个全局变量_main:stm(累加器的低端存放到存储器映射寄存器中) #3000h,sp(堆栈指针寄存器);堆栈指针的首地址设为#3000hssbx(状态寄存器位置位)xf ;状态寄存器位置位,灯亮call (非条件调用,可选择延迟)delay(存储器延时) ;调用delay函数延时rsbx(状态寄存器复位)xf ;状态寄存器位复位,灯灭call delay ;调用delay函数延时b (累加器)

3、_main ;可选择延迟的无条件转移,循环执行nop(无操作)nop;delay .5 seconddelay: ;延迟0.5秒stm 270fh,ar3 (辅助寄存器3) ;把地址存放到存储器映射寄存器中loop1:stm 0f9h,ar4 (辅助寄存器4);把地址存放到存储器映射寄存器中loop2:banz loop2,*ar4- ;ar4不为0时转移,指针地址减一 banz loop1,*ar3- ; 若不为0,ar3减1,共进行10000*250次跳转 ret (可选择延迟的返回 pc=sp+) ;return,返回nopnop;stm 2 cycles;banz when true

4、4 cycles; false 2 cycles;0f9h=249d;270fh=9999d.end实验现象xf灯以一定频率闪烁;单击“halt”暂停程序运行,则xf灯停止闪烁,如再单击“run”,则“xf”灯又开始闪烁;(二)资料存储实验源程序:*file name:exp02.asm;get some knowledge of the cmd file;the program is compiled at no autoinitialization mode.mmregs.global _main_main:;store datastm 1000h,ar1 ;ar1映射到内存1000h位;

5、 stm 5000h,ar1 ;address of exterior memoryrpt(循环执行下一条指令,计数为短立即数) #07h ;循环执行下一条指令8次st(存储t寄存器的值) 0aaaah,*ar1+ ;data 存储寄存器的值;read data then re-storestm 7h,ar3 ;设置ar3; stm 5000h,ar1 ;address of exterior memory; stm 5008h,ar2 ;address of exterior memorystm 1000h,ar1 ;设置ar1为1000hstm 1008h,ar2 ;设置ar2为1008h

6、loop:ld *ar1+,t ;把单数据存储操作数装入t寄存器中 st t,*ar2+ ;存储t寄存器的值 banz loop,*ar3- ;循环7次here:b here ;可选择延迟的无条件转移,循环执行.end实验目的:;本实验程序将对0x1000开始的8个地址空间,填写入0xaaaa的数值,然后读出,并存储到0x1008开始的8个地址空间。在ccs 中可以观察data内存空间地址0x10000x100f值的变化。实验现象:在ccs的“view”下拉菜单中的memory窗口中查找c5410各个区段的数据存储器地址,在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察结果;本实验

7、要查看0x1000h0x100fh单元的数值变化,输入地址0x1000h;查看0x1000h0x100fh单元的初始值,单击“run”运行程序,也可以“单步”运行程序;单击“halt”暂停程序运行。(三):i/o实验源程序:;file name :exp03.asm;learn how to operate the i/o ports;get some knowledge of the rts.lib file;in the i/o space 0x0000=8 switches; 0x0001=8 leds.mmregs.global _main.text_main:stm 3100h,sp

8、 ;堆栈指针的首地址设为#3100hstm 1000h,ar1 ;define the address,定义ar1的地址;define the address portr 00h,*ar1 ;从端口00h读出开关状态,存入ar1中。*ar1=port(00h) nopnopportw *ar1,01h ;将ar1的内容(开关状态)写入到led灯上(输入到01h),控制灯的亮灭nopnopb _main ;寻循环执行nopnop.end;实验现象;任意调整k0k7开关,可以观察到对应lp0lp7灯“亮”或“灭”(四):定时器实验源程序【初始化程序】.mmregs.global _initial_

9、initial:stm 300h,ar1 ;初始化300h 数据地址,设置ar1的地址st #00h,*ar1 ;辅助寄存器ar1指向#00hstm 302h,ar1 ;初始化 302h 数据地址,设置ar2的地址st #00h,*ar1 ;辅助寄存器ar1指向#00hstm 200h,ar1st #5555h,*ar1stm 201h,ar1st #0aaaah,*ar1stm 202h,ar1st #400h,*ar1ssbx 1,11 ;将st1.intm置为1,停止所有中断stm 0ffffh,ifr ;清除所有中断标识 ifr:中断标志寄存器 stm 00h,imr ;将立即数寄存器

10、(imr)置为0,停止所有中断 stm 410h,tcr ;停止计时器tcr:发送控制寄存器stm 4e1fh,prd ;将初始时间设为4e1fhstm 420h,tcr ;开始计时器stm 08h,imr ;允许计时器中断rsbx 1,11 ;将st1.intm置为0,开始所有中断ret【端口程序】(定义管脚).mmregs.global _porta.global _portb_porta:stm 304h,ar1 ;设置ar1地址st 5555h,*ar1 ;辅助寄存器ar1指向5555hportw *ar1,01h ;ar1的值做输出控制小灯亮灭ret_portb:stm 304h,a

11、r1 ;设置ar1地址st 0aaaah,*ar1 ;辅助寄存器ar1指向0aaaahportw *ar1,01h ;ar1的值控制亮灭ret【向量程序】.sect .vectors.ref _c_int00 ;c程序入口.ref _timer ;时间中断点.align 0x80 ; 必须被连结到页边界reset: ; 重设向量bd _c_int00 ;到c入口点的分支stm #200,sp ;堆栈大小为200 sp:堆栈寄存器nmi: rete ;启动中断并从一个返回nopnopnop; 软件中断sint17 .space 4*16sint18 .space 4*16 sint19 .spa

12、ce 4*16 sint20 .space 4*16sint21 .space 4*16sint22 .space 4*16sint23 .space 4*16sint24 .space 4*16sint25 .space 4*16sint26 .space 4*16sint27 .space 4*16sint28 .space 4*16sint29 .space 4*16sint30 .space 4*16int0: retenopnopnopint1: retenopnopnopint2: retenopnopnoptint: b _timer ;设置实用time中断 nopnoprint

13、0: retenopnopnopxint0: retenopnopnoprint1: retenopnopnopxint1: retenopnopnop int3: rete nopnopnop.end实验现象单击“run”运行,可观察到led灯(lp0lp7)以一定的间隔时间不停摆动;单击“halt”,暂停程序运行,led灯停止闪烁;.单击“halt”,暂停程序运行,led灯停止闪烁。(五):int2中断实验源程序【初始化程序】.mmregs.global _initial.text_initial:stm 300h,ar3 ;初始化数据 300h ar3:辅助寄存器st #00h,*ar3

14、 ;辅助寄存器ar3指向#00hstm 302h,ar4 ;初始化数据 300h ar4:辅助寄存器st #00h,*ar4ssbx 1,11 ;将m置为1,停止所有中断stm 00h,imr ;将立即数置0,停止所有中断 imr:立即数寄存器stm 0ffffh,ifr ;清除所有中断标志 ifr:中断标志寄存器stm 04h,imr ;允许int2 中断rsbx 1,11 ;允许所有中断ret.end【端口程序】与【向量程序】参见实验四。.实验现象单击“run”运行程序,反复拨动开关k0,观察lp1lp7 led灯亮灭变化;单击“halt”暂停程序运行,反复拨动开关k0,lp

15、1lp7 led灯亮灭不发生变化。实验二:a/d采样实验 实验目的 1掌握利用tlv320ad50实现/转换的技术基本原理和常用方法。2学会dsp的多信道缓冲串口的应用方法。3掌握并熟练使用dsp和ad50的接口及其操作。4通过实验加深对dsp系统频谱混叠认识.源程序:【c程序】extern void initc5402(void); /*创建初始化c5402的函数,返回值为空*/extern void openmcbsp(void); /*创建打开mcbsp端口的函数,返回值为空;*/extern void closemcbsp(void); /*创建关闭mcbsp端口函数*/extern

16、void readad50(void); /*创建从ad50的数据流中读取数据的函数;ad50:硬件端口*/void main(void) /*主函数开始*/initc5402(); /* 初始化 c5402 dsp */openmcbsp(); /*调用函数,打开mcbsp端口*/while (1)readad50(); /*从ad50的数据流中读取数据,完成ad转换 */【汇编程序】.global _initc5402 ;全局符号定义_initc5402(初始化c5402).global _openmcbsp ;全局符号定义_openmcbsp(打开mcbsp).global _close

17、mcbsp ;全局符号定义_closemcbsp(关闭mcbsp).global _readad50 ;全局符号定义_readad50(读取ad50数据流).global _writead50 ;全局符号定义_writead50(向ad50写入数据流).include mmregs.h ;引入头文件mmregs.h _initc5402:nopld #0, dp ; 重置数据存储器页指针stm #0, clkmd ; 对dsp时钟进行软件设置stm #0, clkmd ; (在设置之前转到分线规模 式) stm #0x4007, clkmd ; 将c5402 dsp时钟设置到40hz* con

18、figure c5402 system registers *;配置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:处理器

19、方式状态寄存器;ovly=1,向量指向0080h* set up timer control registers *;(设置时钟控制寄存器)stm #0x0010, tcr ; 停止onchip计时t c r定时器控制寄存器; 计时器0用作主循环的计时器* initialize mcbsp2 registers *;(初始化 mcbsp2 (用来创建设备配置)寄存器)stm spcr1, mcbsp2_spsa ; 设置spcr1的寄存器地址stm #0000h, mcbsp2_spsd ; mcbsp2 recv = leftjustify ; 通过框架同步产生接受中断stm spcr2,

20、mcbsp2_spsa ; 设置spcr2的寄存器地址; 通过框架同步产生传输中断stm #0000h, mcbsp2_spsd ; mcbsp2 tx(异步传输); 在sw断点之后运行stm rcr1, mcbsp2_spsa ; 设置rcr1的寄存器地址 ;rcr1:接收控制寄存器stm #0040h, mcbsp2_spsd ; 接收框架1长度=16 bitsstm rcr2, mcbsp2_spsa ; 设置rcr2的寄存器地址stm #0040h, mcbsp2_spsd ; 接收相位=1; 设置框架2长度为16bitsstm xcr1, mcbsp2_spsa ; 设置xcr1的寄存器地址stm #0040h, mcbsp2_spsd ; 设置与接收(recv)相同stm xcr2, mcbsp2_spsa ; 设置xcr2的寄存器地址stm #0040h,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论