dsp硬件实验报告 北邮.docx

上传人:b****4 文档编号:26821670 上传时间:2023-06-23 格式:DOCX 页数:51 大小:2.86MB
下载 相关 举报
dsp硬件实验报告 北邮.docx_第1页
第1页 / 共51页
dsp硬件实验报告 北邮.docx_第2页
第2页 / 共51页
dsp硬件实验报告 北邮.docx_第3页
第3页 / 共51页
dsp硬件实验报告 北邮.docx_第4页
第4页 / 共51页
dsp硬件实验报告 北邮.docx_第5页
第5页 / 共51页
点击查看更多>>
下载资源
资源描述

dsp硬件实验报告 北邮.docx

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

dsp硬件实验报告 北邮.docx

dsp硬件实验报告北邮

北邮DSP硬件实验报告

 

学院:

班级:

学号:

姓名:

班内序号:

指导老师:

第三章5416常规实验

实验一:

常用指令实验

1.实验目的:

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

2.实验设备

计算机,CCS3.3版软件,EXPIII+实验箱

3.程序源代码注释

;**************************************************************

;*北京达盛科技有限公司

;*研发部

;*

;*

;*************************************************************/

;*

;*文件名称:

xf.asm

;*适用平台:

EXPIII+实验系统

;*CPU类型:

DSPTMS320VC54X

;*软件环境:

CCS3.1(5000系列)

;*试验接线:

1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54xCPU板的跳线J2的1、2短接

;*(HPI8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;

;*CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);

;*试验现象:

可以观察到实验箱CPLD右上方的D3按一定频率闪烁。

;*************************************************************

.mmregs--(enter memory-mapped registers into the symbol table) --进入记忆映射注册进入符号表 

.global_main--(identify one or more global(external)symbols) --定义全局变量

_main:

stm#3000h,sp(堆栈指针寄存器) 堆栈指针寄存器的值为3000h(#表示立即数)

ssbxxf;将XF置位,灯亮

calldelay(存储器延时)调用延时子程序,延时

rsbxxf;将XF复位灯灭

calldelay;调用延时子程序

b_main;转移回main函数,意为无限循环

nop无操作,延时子程序

nop

delay:

stm270fh,ar1指定ar1寄存器地址,设置为9999

loop1:

stm0f9h,ar4指定ar4寄存器地址,设置为249

loop2:

banz

loop2,*ar4-;条件转移,每次转移ar4地址减一

banz

loop1,*ar1-;条件转移,每次转移ar1地址减一

ret;循环嵌套,总循环次数为270f*0f9

nop

nop

.end

4.实验现象

可以看到实验箱上的XF灯以一定的频率闪烁当单击“Halt”时程序暂定,XF灯停止闪烁,当再次单击RUN时,XF灯又开始闪烁。

实验二:

数据储存实验

1.实验目的

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

2.实验设备

计算机,CCS3.3版软件,EXPIII+实验箱

3.实验系统相关资料介绍

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

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

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

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

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

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

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

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

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

4.程序源代码及注释

;**************************************************************

;*北京达盛科技有限公司

;*研发部

;*

;*

;*************************************************************/

;*

;*文件名称:

xf.asm

;*适用平台:

EXPIII+实验系统

;*CPU类型:

DSPTMS320VC54X

;*软件环境:

CCS3.1(5000系列)

;*试验接线:

1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54xCPU板的跳线J2的1、2短接

;*(HPI8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;

;*CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);

;*试验现象:

可以观察到实验箱CPLD右上方的D3按一定频率闪烁。

;*************************************************************

.mmregs

.global_main

_main:

;storedata

stm1000h,ar1;addressofinternalmemory指定内部ar1寄存器地址1000h

stm5000h,ar1;addressofexteriormemory指定外部寄存器ar1的地址为5000h

rpt#07h;循环执行下一条指令,循环次数07h

st0aaaah,*ar1+;ar1所指的内存赋予0aaaah,然后ar1所指地址加1,此语句过后1000至1007地址空间中存入了0AAAA

stm7h,ar3指定ar3地址7h,循环次数

stm1000h,ar1设置ar1地址为1000h

stm1008h,ar2;设置ar2地址为1008h

loop:

ld*ar1+,t;循环读取1000h~1007h

stt,*ar2+;并将值赋予1008h~1016h

banzloop,*ar3-;循环次数为AR3

here:

;死循环.

bhere;可选择延迟的无条件转移,循环执行,无条件移至here 

.end

5.实验现象

在CCS的“View”下拉菜单中的Memory窗口中查找C5416各个区段的数据存储器地址,在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察结果;本实验要查看0x1000~0x100F单元的数值变化,输入地址0x1000;查看0x1000~0x100F单元的初始值,单击“Run”运行程序,也可以“单步”运行程序;单击“Halt”暂停程序运行。

实验三:

I/O实验

1.实验目的

了解I/O口的扩展,掌握I/O口的操作方法,熟悉PORTR,PORTW指令的用途,了解数字量与模拟量的区别和联系。

2.实验设备

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

3.流程框图

4.程序源代码及注释

;**************************************************************

;*北京达盛科技有限公司

;*研发部

;*

;*

;*************************************************************/

;*

;*文件名称:

exp03.asm

;*适用平台:

EXPIII+实验系统

;*CPU类型:

DSPTMS320VC54X

;*软件环境:

CCS3.1(5000系列)

;*试验接线:

1、实验箱的拨码开关SW2.4置OFF(54x的译码有效);54xCPU板的跳线J2的1、2短接

;*(HPI8位模式);SW1的2、6置ON,其余置OFF(HPI使能;DSP工作微处理器方式;

;*CPU_CS=0);SW2全部置ON(FLASH工作在数据空间,LED灯D5的工作状态处于灭状态);

;*试验现象:

分别调整数字输入单元的开关K1~K8,观察LED1~LED8亮灭的变化,以及输入和输出状态是否一致。

;*************************************************************

.mmregs

.global_main

.text

_main:

stm3100h,sp ;定义sp的地址为3100

stm1000h,ar1;定义ar1的地址为1000

portr8000h,*ar1;读入I/O8000H数据,将其存储到数据空间的1000H,读按键

nop;nop

portw*ar1,8001h;将数据空间的1000H单元的数据,写出到I/O8001H

nop

nop

b_main;程序跳转到main函数

nop

nop

.end

5.实验现象

任意调整K0—K7开关,可以观察到对应LP0—LP7灯“亮”或“灭”;单击Halt”,暂停持续运行,开关将对灯失去控制。

实验四:

定时器实验

1.实验目的

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

2.实验设备

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

3.实验原理及流程框图

1)实验原理

定时器实验时要用到C54芯片的定时器控制寄存器,定时器时间常数寄存器,定时器中断响应,寄存器定义详见C54芯片资料。

C54的定时器是一个20位的减法计数器,可以被特定的状态位实现停止、重新启动、重设置或禁止,可以使用该定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD和定时减法寄存器TDDR。

定时器实验通过LED(LP1~LP7)来显示。

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

2)流程框图

主程序:

中断程序:

4.源程序代码及注释

*文件名称:

exp04.c

#include"tms320uc5402.h"

/*************************************************************/

/********************全局变量定义与初始化*********************/

ioportunsignedport8001;

unsignedintshow=0x00aa;

unsignedintnum=0x0000;

/*************************************************************/

/*******************函数、子程序声明与定义********************/

voidsys_ini()系统初始化子程序

{

asm("ssbxINTM");全局禁止所有可屏蔽中断

PMST&=0x00FF;向量表映射到0x0080空间前八位全部置0

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

CLKMD=0x17FA;定义最长延长时间

}

voidtimer0_ini()定时器初始化子程序

{

TCR|=0x0010;停止定时器0

PRD=0x2710;PRD=10000(D)

TCR|=0x000A;定义定时器时钟=1/(20M/10/10000)=5ms

IMR=0x0008;使能定时器0中断

IFR=0xFFFF;清除所有中断标志位

asm("rsbxINTM");全局使能可屏蔽中断

TCR&=0xFFEF;开始定时器0

TCR|=0x0020;复位定时起0

}

/*************************************************************/

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

interruptvoidtimer0()定时器0中断子程序

{

if(num==200)记200次定时器中断,时间=200*5ms=1s,即灯闪烁频率

{

show=~show;取反

num=0;

}

else

num++;

return;

}

/*************************************************************/

/**************************主程序*****************************/

voidmain(void)

{

sys_ini();

timer0_ini();

for(;;)循环中断子程序

{

port8001=show;定义show,灯亮地址

}

}

*文件名称:

vectors.asm向量程序

.global_c_int00(c程序入口),_timer0(时间间断点)

.sect

".vecs"

reset:

复位中断响应

b_c_int00;c_int00是c程序的入口,这里即进入main函数中

nop

nop

nmi:

rete中断屏蔽置为0,响应中断,不可屏蔽中断产生时,使中断屏蔽取消,后返回。

nop

nop

nop

;softwareinterrupts软件中断

sin17:

.space4*16保留出中断向量的地址空间

sin18:

.space4*16

sin19:

.space4*16

sin20:

.space4*16

sin21:

.space4*16

sin22:

.space4*16

sin23:

.space4*16

sin24:

.space4*16

sin25:

.space4*16

sin26:

.space4*16

sin27:

.space4*16

sin28:

.space4*16

sin29:

.space4*16

sin30:

.space4*16

int0:

rete;EXTERNALINT0外部用户中断中断寄存器设置RETE返回并允许中断外部中断产生时,直接返回。

nop

nop

nop

int1:

rete;EXTERNALINT1

nop

nop

nop

int2:

rete;EXTERNALINT2

nop

nop

nop

tint0:

b_timer0;计时器每中断一次,返回一个值到TINT端口,此时转移回TIMER函数,计数器加1

nop

nop

brint0:

rete;

nop

nop

nop

bxint0:

rete;

nop

nop

nop

dmac0:

rete;RESERVEDORDMACHANNEL0INTERRUPT

nop

nop

nop

tint1_dmac1:

rete;TIMER1INTERRUPTORDMACHANNEL1INTERRUPT

nop

nop

nop

int3:

rete;EXTERNALINT3

nop

nop

nop

hpint:

rete;HPIINTERRUPT

nop

nop

nop

brint1_dmac2:

rete;McBSP1RECEIVEINTERRUPTORDMACHANNEL2INTERRUPT

nop

nop

nop

bxint1_dmac3:

rete;McBSP1TRANSMITINTERRUPTORDMACHANNEL3INTERRUPT

nop

nop

nop

dmac4:

rete;DMACHANNEL4INTERRUPT

nop

nop

nop

dmac5:

rete;DMACHANNEL5INTERRUPT

nop

nop

nop

;****************************结束*****************************

5.实验现象

单击“Run”运行,可观察到LED灯(LP0—LP7)以一定的间隔时间不停摆动;单击“Halt”,暂停程序运行,LED灯停止闪烁;.单击“Halt”,暂停程序运行,LED灯停止闪烁。

实验五:

INT2中断实验

1.实验目的

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

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

2.实验设备

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

3.源程序代码及注释

*文件名称:

initial.asm

.mmregs

.global_initial

.text

_initial:

(初始化)

NOP

LD#0,DP;resetdatapointerldstm赋值的意思dp指针置0

STM#0,CLKMD;定义DSP时钟

STM#0,CLKMD;分频设置

TstStatu1:

LDMCLKMD,ASLKMD的0值给a

AND#01b,A;pollSTATUSbit

BCTstStatu1,ANEQ

STM#0xF7FF,CLKMD;setC5402DSPclockto10MHz把时钟设为10mhz

STM0x3FA0,PMST;vectorsat3F80h把pmst向量表映射到0x3fa0空间地址上

ssbx1,11;setst1.intm=1stopallinterrupt设置ST1.INTM=1,停止所有的中断

stm#00h,imr;stopallinterrupt停止所有的中断出现imr跳转到向量程序

stm#0ffffh,ifr;clearallinterruptsign全置1清除所有中断的标志位,中断标志寄存器(IFR)用来指明各个中断的目前状态。

stm#04h,imr;allowint2interrupt开启int2的外部中断4=0100跳转到向量程序

rsbx1,11;allowallinterrupt打开所有中断总开关 

ret

.end

*文件名称:

int2.c

interruptvoidint2c();

externvoidinitial();

externvoidporta();

externvoidportb();

intflag=0,i=0;声明两个整形变量

main()

{

initial();初始化

while

(1)死循环

{

;

}

}

interruptvoidint2c()中断子程序

{

i=i+1;

if(i==1)

{

if(flag==0)

{

flag=1;

porta();

i=0;

}

else

{

flag=0;

portb();

i=0;

}

}

else

{

i=0;

}

return;死循环执行下面步骤

}

*文件名称:

port.asm

.mmregs

.global_porta

.global_portb

_porta:

stm304h,ar1将304h赋给辅助寄存器ar1 

st0005h,*ar1为内存304h赋予5555h(0101010101010101)

portw*ar1,8001h将内存304h的值写入8001h端口

ret

_portb:

stm304h,ar1

st000ah,*ar1为内存304h赋予0aaaah(1010101010101010)

portw*ar1,8001h将内存304h的值写入8001端口

ret

*文件名称:

vectors.asm

.sect".vectors"

.ref_c_int00;Centrypoint

.ref_int2c

.align0x80;mustbealignedonpageboundary

RESET:

;resetvector复位中断响应

BD_c_int00;branchtoCentrypoint进入main函数中

STM#200,SP;开辟堆栈空间

stacksizeof200

nmi:

RETE;enableinterruptsandreturnfromoneNOP

NOP

NOP

;softwareinterrupts

sint17.space4*16s

int18.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:

b_int2c;启动int2外部中断每当接收到外部信号时跳转到int2c,int2c函数,LED灯的状态变化一次

NOP

NOP

tint:

RETE

NOP

NOP

NOP

rint0:

R

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1