dsp硬件实验报告.docx

上传人:b****4 文档编号:5282970 上传时间:2023-05-08 格式:DOCX 页数:70 大小:1.06MB
下载 相关 举报
dsp硬件实验报告.docx_第1页
第1页 / 共70页
dsp硬件实验报告.docx_第2页
第2页 / 共70页
dsp硬件实验报告.docx_第3页
第3页 / 共70页
dsp硬件实验报告.docx_第4页
第4页 / 共70页
dsp硬件实验报告.docx_第5页
第5页 / 共70页
dsp硬件实验报告.docx_第6页
第6页 / 共70页
dsp硬件实验报告.docx_第7页
第7页 / 共70页
dsp硬件实验报告.docx_第8页
第8页 / 共70页
dsp硬件实验报告.docx_第9页
第9页 / 共70页
dsp硬件实验报告.docx_第10页
第10页 / 共70页
dsp硬件实验报告.docx_第11页
第11页 / 共70页
dsp硬件实验报告.docx_第12页
第12页 / 共70页
dsp硬件实验报告.docx_第13页
第13页 / 共70页
dsp硬件实验报告.docx_第14页
第14页 / 共70页
dsp硬件实验报告.docx_第15页
第15页 / 共70页
dsp硬件实验报告.docx_第16页
第16页 / 共70页
dsp硬件实验报告.docx_第17页
第17页 / 共70页
dsp硬件实验报告.docx_第18页
第18页 / 共70页
dsp硬件实验报告.docx_第19页
第19页 / 共70页
dsp硬件实验报告.docx_第20页
第20页 / 共70页
亲,该文档总共70页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

dsp硬件实验报告.docx

《dsp硬件实验报告.docx》由会员分享,可在线阅读,更多相关《dsp硬件实验报告.docx(70页珍藏版)》请在冰点文库上搜索。

dsp硬件实验报告.docx

dsp硬件实验报告

北京邮电大学

数字信号处理硬件实验

实验名称:

DSP硬件操作实验

姓名:

刘梦颉

班级:

2011211203

学号:

2011210960

班内序号:

11

日期:

2012年12月20日

实验一常用指令实验

」、实验目的

了解DSP开发系统的组成和结构,熟悉DSF开发系统的连接,熟悉DSP的开发界面,熟悉C54X系列的寻址系统,熟悉常用C54X系列指令的用法。

、实验设备

计算机,CCS2.0版软件,DSP仿真器,实验箱。

三、实验操作方法

1、系统连接

进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:

1)上电复位

在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红

色小灯”应点亮,否则DSP开发系统与计算机连接有问题。

2)运行CCS程序

先实验箱上电,然后启动CCS此时仿真器上的“绿色小灯”应点亮,并且CCS正常启动,表明系统连接正常;否则仿真器的连接、JTAG接口或CCS相关设置存在问题,掉电,检查仿真器的连接、JTAG接口连接,或检查CCS相关设置

是否正确。

四、实验步骤与内容

1、实验使用资源

实验通过实验箱上的XF指示灯观察程序运行结果

2、实验过程

启动CCS2.0,并加载“expOl.out”;加载完毕后,单击“Run”运行程序;

五、实验结果

可见XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;

关闭所有窗口,本实验完毕。

六、源程序代码及注释

流程图:

 

源程序

注释

;FileName:

expO1.asm

;theprogramiscompiledatno

autoinitializationmode

.mmregs--

定义存储器映射寄存器

.global_main

_main:

设置堆栈指针寄存器的值为3000h

stm#3000h,sp

stm是累加器的低端放到存储器的映射寄存器中。

存储器映射寄存器寻址用来修改存储器映射寄存

器而不影响当前数据页指针(DP)或堆栈指针(SP)

ssbxxf

的值

状态寄存器位置位,令XF=1,此时灯XF亮,XF用

calldelay

于发信号给外部设备,通过软件进行控制。

调用子程序DELA丫使XF灯亮0.25秒

rsbxxf

rsbx状态寄存器复位,灯火

calldelay

调用子程序DELA丫使XF灯灭0.25秒

b_main

nop

无任何操作

nop

;delay.5second

delay:

stm270fh(9999),ar3

loopl:

stm0f9h(249),ar4

loop2:

banzloop2,*ar4-

banzIoop1,*ar3-

ret

nop

nop

;stm2cycles

;banzwhenTRUE4cycles

;FALSE2cycles

;0f9h=>249d

;270fh=>9999d

.end

将9999放到AR3中

将249放到AR4中

(loop对代码进行重复汇编)

--由指令的Xar和Yar域选择的辅助寄存器。

ar4、

ar3是辅助寄存器

寄存器ar4值减一,当其值不为0时跳转到Ioop2寄存器ar3值减一,当其值不为0时跳转到Ioop1返回

空指令空指令

总结:

在main主函数中先疋义一个输出xf,先置位头现灯亮,再与delay函数控制灭灯的时间,最后复位实现灯的闪烁。

在delay函数中,实现两个循环嵌套,Ioop1是计数250,Ioop2计数10000次,总共计数2500000次,实现0.5秒的时延,所以闪烁间隔为0.5秒。

实验箱时钟频率为5MHz。

实验二资料存储实验

一、实验目的

掌握TMS320C54勺程序空间的分配;掌握TMS320C54勺数据空间的分配;熟悉操作TMS320C5数据空间的指令。

二、实验设备

计算机,CCS3.3版软件,DSP仿真器,实验箱。

三、实验系统相关资源介绍

本实验指导书是以TMS32OVC5410为例,介绍相关的内部和外部内存资源。

对于其它类型的CPU请参考查阅相关的资料手册。

下面给出TMS32OVC5410的内存分配表:

对于存储空间而言,映像表相对固定。

值得注意的是内部寄存器与存储空间的映像关系。

因此在编程应用时这些特定的空间不能作其它用途。

对于程序存储空间而言,其映像表和CPU的工作模式有关。

当MP/MC引脚为高电平时,CPU工作在微处理器模式;当MP/MC引脚低电平时,CPU工作在为计算机模式。

具体的内存映像关系如上如所示。

内存实验主要了解内存的操作和DSP的内部双总线结构。

并熟悉相关的指令代码和执行过程等。

四、实验步骤与内容

连接好DSP开发系统,运行CCS软件;

a)在CCS的Memory窗口中查找C5410各个区段的数据存储器地址,在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察结果;

b)在CCS中装载实验示范程序,单步执行程序,程序中写入和读出的数据存储地址的变化;

c)改变其它寻址方式,进行观察数据存储器地址与写入和读出数据的的变化。

样例程序实验操作说明:

启动CCS2.0,并加载“exp02.out”,用“View”下拉菜单中的“Memory”查看内存单元,输入要查看的内存单元地址,本实验要查看0x1000H~0x100FH单元的数值变化,输入地址0X1000H,查看0x1000H~0x100FH单元的初始值,

单击“Run”运行程序,也可以“单步”运行程序,单击“Halt”暂停程序运

行,查看0x1000H~0x100FH单元内数值的变化

关闭各窗口,本实验完毕。

五、实验结果:

本实验程序将对0x1000开始的8个地址空间,填写入OxAAAA的数值,然后读出,并存储到0X1008开始的8个地址空间。

在CCS中可以观察DATA内存空间地址0X1000~0X100F值的变化。

六、源程序代码及注释

流程图:

源程序

注释

*FileName:

exp02.asm

;getsomeknowledgeofthecmdfile

;theprogramiscompiledatno

autoinitializationmode

.mmregs

.global_main

_main:

;storedata

stm1OOOh,ar1

内存地址

rpt#07h

rpt循环指令。

循环执行下一个指令,计数为

短立即数。

st0aaaah,*ar1+

st状态寄存器。

将数据"0AAAAH"存放到以

地址1000H~1007H的八个存储单元中,该8

;readdatathenre-store

个存储单元数据都是”0aaaah”

stm7h,ar3

将7h赋给辅助寄存器ar3

stm1000h,ar1

将地址1000h赋给辅助寄存器ar1

stm1008h,ar2

将地址1008h赋给辅助寄存器ar2

loop:

ld*ar1+,t

ld把单数据存储器操作数装入T寄存器。

将辅助寄存器ar1的值赋给t,且ar1地址加

1

存储T寄存器的值.将t的值存储在ar2所对

stt,*ar2+

应内存中,且ar2地址加1

banzloop,*ar3-

寄存器ar3地址减1,当其值不为0时跳转到

loop

here:

bhere

无条件转移至here

.end

总结:

对0x1000开始的8个地址空间,填写入OxAAAA勺数值,然后读出,并存

储到0x1008开始的8个地址空间。

实验实现先读入数据存到ar1中,然后将ar1

的值赋给辅助寄存器t,在将t的值赋值给ar2,存储到ar2的地址空间中。

实验三I/O实验

一、实验目的

1、了解I/O口的扩展;掌握I/O口的操作方法。

2、熟悉PORTR,PORTW指令的用途。

3、了解数字量与模拟量的区别和联系。

二、实验设备

计算机,CCS3.3版软件,DSP仿真器,实验箱

三、实验步骤及内容

、实验说明:

实验中采用简单的一一映像关系来对I/O口进行验证,目的是使实验者能够对I/O有一目了然的认识。

在本实验系统中,提供的IO空间分配如下:

CPU1:

0x8000按键input(X)8

0x8001LED灯output(X)8

2、实验过程

运行CCS程序,装载示范程序,调整K0〜K7的开关,观察LP1~LP7LED亮灭的变化,以及输入和输出状态是否一致。

例程序实验操作说明

启动CCS2.0,并加载“exp03.out”,单击“Run”运行程序,任意调整K0~K7开关,可以观察到对应LP0~LP7灯“亮”或“灭”;单击“Halt”,暂停持续运行,开关将对灯失去控制。

关闭所有窗口,本实验完毕。

四、源程序代码及注释

流程图:

 

源程序

注释

.mmregs

.global_main

.text

_main:

stm3100h,sp

stm1000h,ar1

portr8000h,*ar1

nop

nop

portw*ar1,8001h

nop

nop

b_main

nop

nop

.end

全局符号,可在外部疋义

设置堆栈指针寄存器的值为3100h,sp堆栈

指针寄存器

设置辅助寄存器ar1值为1000h

portr从端口8000h把数据读到数据存储器单元ar1中

空扌曰令,起疋的延时作用.

将数据空间的1000H单元的数据,写出到I/O

8001H中,控制LED灯的亮灭

程序跳转到"_MAIN"执行.

总结:

先设置堆栈寄存器内存空间,初始化辅助寄存器ar1的值,用来传输数据。

开关控制,从端口00h读入数据,,存储至ar1中,再ar1中的值传输给01h输出,控制led灯的变化。

实验四定时器实验

一、实验目的

熟悉C54的定时器;掌握C54定时器的控制方法;学会使用定时器中断方式控制程序流程。

二、实验设备

计算机,CCS3.3版软件,DSP硬件仿真器,实验箱。

三、实验步骤和内容

1、实验说明

C54的定时器是一个20位的减法计数器,可以被特定的状态位实现停

止、重新启动、重新设置或禁止,可以使用该定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD和定时减法寄存器

TDDR

在本系统中,如果设置时钟频率为20MHZ令PRD=0x4e1,这样得到每1/1000秒中断一次,通过累计1000次,就能定时1秒钟。

2、实验过程

1、运行CCS软件,调入样例程序,装载并运行;

2、定时器实验通过数字量输入输出单元的LED1-LED睐显示例程序实验操作说明:

启动CCS2.0,并加载“exp04.out”,单击“Run”运行,可观察到LED灯(LP0~LP7)以一定的间隔时间不停摆动,单击“Halt”,暂停程序运行,LED灯停止闪烁,单击“Run”,运行程序,LED灯又开始闪烁。

关闭所有窗口,本实验完毕。

四、源程序代码及注释

流程图:

开始

源程序:

expO4.c

#include"tms320uc5402.h"ioportunsignedport8001;

unsignedintshow=0x00aa;

unsignedintnum=0x0000;

voidsys_ini()

{

asm("ssbxINTM")

PMST&=0x00FF;

注释

声明c文件的头文件(引用包)

SWWSR=0x7000;

定义输出地址为8001H,其中数据控制LED灯

10101010,初始状态为1357灯亮

定义全局变量num,计数计时中应用,初始值为0

系统初始化子程序

(INTM中断模式位,ssbx:

状态寄存器位置位)全局禁止所有可屏蔽中断

DRAM映射到程序空间和数据空间)

向量表映射;0x0080空间

0x00FF=0000000011111111,与运算后复位处

理器方式状态寄存器后8位,初始地址为

FF80H,将前八位强制置为0,即为0080H,将0080H作为所使用中断的地址,即定时器中断

io空间7个等待周期,程序与数据空间0

个等待周期,0x7000=0111000000000000,

 

12~14表示io空间,(11仁7(d)),11~0表示

程序与数据空间,软件等待状态寄存器

CLKMD=0x17FA;

CLK0UT=2*CLKIN=2*10M=20M,倍频,自动

}

增大系统频率

voidtimerO」ni()

{

TCR|=0x0010;

定时器0初始化子程序

TSS,停止定时器0(TCR:

定时器控制寄存器)

PRD=0x2710;

PRD=10000(D),PRD定时周期寄存器

TCR|=0x000A;

TDDR=10(D),相当于进行了两次分频,

器时钟=1/20M*10*10000=5ms

定时

IMR=0x0008;

使能定时器0中断,数据溢出时产生中断,断屏敝

IFR=OxFFFF;

清除所有中断标志位

asm(”rsbxINTM");

全局使能可屏蔽中断

TCR&=0xFFEF;

开始定时器0

TCR|=0x0020;

}

复位定时器0

中断服务子程序声明与定义

注释

interruptvoidtimer0()

{

//疋时器0中断了程序

if(num==200)

//记200次定时器中断,

时间

{

=200*5ms=1s

show=~show;

//取反,通过show的值控制灯的亮火

num=0;}

//重新计时

else

num++;

//计数

return;

}

主程序

注释

voidmain(void){

sys_ini();

〃系统初始化

timer0_ini();

//定时器0初始化

for(;;)

{

port800仁show;}

//循环

〃将show的值赋给8001H,控制灯的亮

}

源程序:

vectors.asm(定义中断

注释

向量表)

.global_c_int00,_timer0

.sect".vecs"

自定义向量表

RESET:

b_c_intOO

复位中断时跳转到c程序主函数(branchto

nop

Centrypoint延迟分支到c程序,默认入口

nop

地址c_int00)

nmi:

开辟堆栈空间

RETE

NMI非屏敝外部中断输入引脚,不可屏敝中

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

生的,即经过一定的时间跳转到C程序。

sint29.space4*16

有只有tint0,定时器0产生定时中断时跳转

sint30.space4*16

到C程序中的子函数,其他的中断均为返回

int0:

RETE

并允许(RETE)。

NOP

NOP

NOP

int1:

RETE

NOP

中断寄存器设置为rete返回,允许中断外部

NOP

产生中断,并且直接返回

NOP

int2:

RETE

NOP

NOP

NOP

tint:

b_timer

检测到定时器产生中断时,返回到c程序中

NOP

的timer()

NOP

rint0:

RETE

串口0接受中断,直接返回

NOP

NOP

NOP

xint0:

RETE

串口0发送中断,直接返回

NOP

NOP

NOP

rint1:

RETE

串口1接受中断,直接返回

NOP

NOP

NOP

xint1:

RETE

串口1发送中断,直接返回

NOP

NOP

NOP

int3:

RETE

NOP

NOP

NOP

.end

总结:

使用定时器产生周期性的CPU中断

,定时器结果通过led灯显示,定时1

秒钟。

实验五INT2中断实验

一、实验目的

1、掌握中断技术,学会对外部中断的处理方法。

2、掌握中断对程序流程的控制,理解DSP对中断的响应时序

二、实验设备

计算机,CCS3.3版软件,DSP仿真器,实验箱

三、实验步骤和内容

1、实验说明

DSP的INT2中断为低电平沿触发。

2、实验过程

本实验是进行C54芯片的INT2中断练习,C54芯片中断INT2是低电平单脉冲触发;实验采用导线一端连接D_Exp—数字量输入扩展接口10,经PX4的IN3,到PX5的OUT0电平转换,再与另一端连接INT2插孔;拨动开关K0一次,就产生一个低电平单脉冲;运行示范程序,观察LP1~LP7LED灯的输

出变化;可观察到每拨动开关K0一次LP1~LP7灯亮灭变化一次;样例程序实验操作说明:

启动CCS2.0,并加载“exp05.out”,单击“Run”运行程序,反复拨动开关K0,观察LP1~LP7LED灯亮灭变化,单击“Halt”暂停程序运行,反复拨动开关K0,LP1~LP7LED灯亮灭不变化;

关闭所有窗口,本实验完毕。

四、源程序代码及注释

流程图:

开始

系统初始化

中断子程序

八个LED灯亮灭变化

结束

源程序:

int2.c

注释

interruptvoidint2c();externvoidinitial();externvoidporta();

externvoidportb();intflag=O,i=O;

main()

{

initial();

主函数

系统初始化

while

(1)

{;}

}

interruptvoidint2c()

{

i=i+1;

if(i==1)

{if(flag==O)

{

flag=1;porta();

i=0;

}

else

{

flag=0;

portb();i=0;

}

}

else

{

i=0;

}

return;

}

死循环

中断子程序

当i为一时,让灯点亮,否则让i为零

当flag为零时,执行porta(),让ar1的值为

5555h,即第一二五七个灯亮

当flag为一时,执行portb(),让ar1的值为

aaaah,即第二四六八个灯亮

源程序:

initial.asm

注释

.mmregs

.global_initial

.text

_initial:

NOP

LD#0,DP

STM#0,CLKMD

STM#0,CLKMDTstStatu1:

LDMCLKMD,A

AND#01b,A

已初始化可执行代码段

初始化函数开始

;空操作

;resetdatapointer将0装入数据页指针(DP)中

;softwaresettingofDSPclock

;(todividermodebeforesetting)设置pll为

div分频模式

;将CLKMD的值装入到累加器A中

;pollSTATUSbit将A中数据和01b求与之

后存入A中

BCTstStatul,ANEQ

;ANEQ,A不等于0时程序跳转到TstStatu1

STM#0xF7FF,CLKMD

;setC5402DSPclockto10MHz

STM0x3FA0,PMST

;vectorsat3F80h,ARAM映射到数据和程序存储空间

ssbx1,11

设置ST1.INTM=1,停止所有的中断

stm00h,imr

停止所有的中断,中断屏蔽寄存器(IMR)

在需要的时候独立地屏蔽特定的中断

stm0ffffh,ifr

清除所有中断的标志位,中断标志奇存器(IFR)用来指明各个中断的目前状态。

stm04h,imr

开启int2的外部中断

rsbx1,11

ret

.end

打开所有中断

 

源程序:

port.asm

注释

.mmregs

.global

_porta

.global

_portb

_porta:

stm

304h,ar1

将304h赋值给辅助寄存器ar1

st

5555h,*ar1

将内存

304h

的内容赋值给5555h,2468灯亮

portw

*ar1,8001h

ret

将内存

304h

的值写入8001h端口,灯

_portb:

stm

304h,ar1

st

0aaaah,*ar1

将内存

304h

的内容赋值给0aaaah,1257灯

portw

*ar1,8001h

将内存

304h

的值写入8001h端口,灯

ret

源程序:

vectors.asm

注释

.sect".vectors".ref_c_int00.ref_int2c.align0x80

RESET:

BD_c_int00

STM#200,SP

弓1用函数c_int00

页边界排列复位中断响应

延迟分支到C程序默认入口地址,c_int

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2