DSP硬件实验.docx

上传人:b****5 文档编号:3977937 上传时间:2022-11-26 格式:DOCX 页数:89 大小:2.22MB
下载 相关 举报
DSP硬件实验.docx_第1页
第1页 / 共89页
DSP硬件实验.docx_第2页
第2页 / 共89页
DSP硬件实验.docx_第3页
第3页 / 共89页
DSP硬件实验.docx_第4页
第4页 / 共89页
DSP硬件实验.docx_第5页
第5页 / 共89页
点击查看更多>>
下载资源
资源描述

DSP硬件实验.docx

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

DSP硬件实验.docx

DSP硬件实验

数字信号处理

之硬件实验报告

班级:

姓名:

班内序号:

学号:

日期:

 

常规实验部分

实验一常用指令实验

一、实验目的

通过在DSP仿真开发系统中使用指令,学习指令的功能和基本使用操作方法;了解DSP开发系统的组成和结构,熟悉开发系统的连接,熟悉开发界面,同时,也学习DSP应用系统中的系统调试方法,也就是通常使用的单步执行方法;并熟悉常用的代数汇编指令。

二、实验操作方法

1、 系统连接 

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

 

在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP开发系统与计算机连接有问题。

 

2、 运行CCS程序 

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

三、实验过程

1.连接实验箱,打开开关,设置参数

■实验箱CPLD单元的拨码开关SW2的4置OFF

■CPU板,跳线J2的1、2短接;SW1的2、6置ON,其余置OFF;SW2全部置OFF

2.启动CCS,并加载“exp01.out”;

3.加载完毕后,单击“Run”运行程序;

4.单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;单击“Halt”暂停程序运行。

5.打开工程EXP01.PJT,即可看到源代码。

四、实验代码:

;文件名称xf.asm

;适用平台EXPIII+实验系统

;CPU类型DSPTMS320VC54X

;软件环境CCS3.1(5000系列)

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

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

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

.mmregs;//定义存储器映射寄存器

.global_main;//定义全局符号main

_main

stm#3000h,sp//设置堆栈指针的首地址为3000h 

ssbxxf;将XF(外部标志引脚状态位)置1//灯灭

calldelay;调用延时子程序,延时

rsbxxf;将XF置0//灯亮

calldelay;调用延时子程序,

b_main;程序跳转到_MAIN

nop;//空指令

nop

;延时子程序

delay;//共循环10000*250次

stm270fh,ar3;//设置辅助寄存器ar3的值为270fh(9999d)-十六进制(八进制) 

loop1

stm0f9h,ar4;//设置辅助寄存器ar4的值为0f9h(249d)

loop2

banzloop2,ar4-;//ar4值不为0时跳转到loop2,且ar4值减1

banzloop1,ar3-;//ar3值不为0时跳转到loop1,且ar3值减1

Ret;//返回

Nop;

Nop;

.end

五、实验现象

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

六、程序运行说明:

该程序通过XF=1或XF=0控制实验箱灯的亮或灭。

当XF=1时,灯亮,并调用延时子程序,当延时子程序执行完后,此时灯已经维持亮的状态一段时间,然后XF复位为0,灯灭,再次调用延时子程序。

此次延时程序执行完后,重新执行main函数。

由此实现灯的闪烁功能。

 

 

实验二数据存储实验

一、实验目的

掌握TMS320C54的程序空间的分配,熟悉操作数据空间分配的指令;学会查看和使用数据空间,会用指令进行操作。

二、实验操作方法

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

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

 

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

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

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

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

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

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

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

 

2.运行CSS程序:

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

a)在CCS的Memory窗口中查找C5410各个区段的数据存储器地址,在可以改变

的存储器内容的地方,选定地址随意改变其中内容并观察结果; 

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

址的变化; 

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

 

3.实验内容:

 

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

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

  

三、实验过程

1连接实验箱,正确设置参数

■实验箱CPLD单元的拨码开关SW2的4置OFF

■CPU板,跳线J2的1、2短接;SW1的2、6置ON,其余置OFF;SW2全部置OFF

2.启动CCS,并加载“exp02.out”,打开工程EXP02.PJT查看源程序;

3.View下拉菜单Memory查看内存单元,本实验要查看0x1000H~0x100FH单元的数值变化,输入地址0x1000H,查看0x1000H~0x100FH单元的初始值;

4单击“Run”运行程序;

5.单击“Halt”暂停程序运行,查看内存单元数值变化

四、程序代码注释

;*文件名称:

exp02.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的工作状态处于灭状态);

;*试验现象:

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

;*0X1008开始的8个地址空间。

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

;getsomeknowledgeofthecmdfile

;theprogramiscompiledatnoautoinitializationmode

.mmregs

.global_main

_main:

;storedata

stm1000h,ar1;//将辅助寄存器的ar1的值设为1000h

rpt#07h;//循环执行下一条指令8次

st0aaaah,*ar1+;将数据"0AAAAH"存放到以地址1000H~1007H的八个存储单元中//该8个存储单元数据都是”0aaaah”

;readdatathenre-store

stm7h,ar3;//将辅助寄存器3的值设为7h,标志变量(8个数全copy完)

stm1000h,ar1;//将ar1的值设为1000h

stm1008h,ar2;//将ar2的值设为1008h

loop:

;循环的将1000H~1007H的八个单元中的数据COPY到1008H~100Fh的

;八个存储单元中.

ld*ar1+,t;//将ar1所指向的数据赋给t存储器,ar1加1

stt,*ar2+;//将t的值存入ar2所指向的地址,ar2加1

Banzloop,*ar3-;//ar3值不为0时跳转到loop,且ar3值减1

here:

;死循环.

bhere;//跳转到here

.end

五、试验现象

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

六、程序运行说明

程序首先将1000赋给ar1,作为首地址,然后将0aaaa存到此地址中,使地址加一,循环执行七次,相当于在地址1000到1007八个单元中都存储了0aaaa数据。

重新使ar1的首地址为1000,ar3的首地址为7,ar2的首地址为1008,然后将ar1地址为1000中的数据存放到储存器t中,地址加一,再将储存器t中的数据放到ar2地址为1008的单元中,地址加一,通过ar3来实现循环,最终使地址1008~100F中都存上地址1000~1007中的数据,即0aaaa,程序结束。

 

实验三I/O实验

一、实验目的

1.了解IO口的扩展;掌握其操作方法;

2.熟悉PORTR、PORTW的用途;

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

二、实验操作方法

1、数字量输入信号全部拓展出来,数字量输入接口主要由两个,D_Exp与扳东开关连接,PX4和PX5与电平转换芯片(74LVC245)连接,其功能分别为:

 

D_Exp—数字量输入扩展接口 

电平转换扩展接口

通过PORTR,PORTW指令可以实现I/O口的输入输出功能,如数字量采集实验。

2、实验说明:

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

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

CPU1的IO空间:

0x8000按键input(X)8

CPU2的IO空间:

0x8001灯output(X)8

三、实验过程

1.连接实验箱,正确设置参数

■实验箱CPLD单元的拨码开关SW2的4置OFF

■CPU板,跳线J2的1、2短接;SW1的2、6置ON,其余置OFF;SW2全部置OFF

2.启动CCS,并加载“exp03.out”,单击“Run”运行程序,

3.任意调整K0~K7开关,可以观察到对应LP0~LP7灯“亮”或“灭”;

4.单击“Halt”,暂停持续运行,开关将对灯失去控制;

5.打开源代码,查看。

四.源程序查看及注释

;*文件名称:

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的工作状态处于灭状态);

.mmregs

.global_main

.text;//程序代码段

_main:

stm3100h,sp;//存储器映射寄存器sp的值设置为3100h

stm1000h,ar1;//设置辅助寄存器ar1的值为1000h

portr8000h,*ar1;读入I/O8000H(低8位,只读)数据,将其存储到ar1所指向的数据空间中

nop;NOP为空操作,起延时作用.

nop

portw*ar1,8001h;将数据空间的1000H单元的数据,写出到I/O8001H(低8位只写)

写LED灯

nop

nop

b_main;程序跳转到"_MAIN"执行.

nop

nop

.end

五、实验现象

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

六、程序运行说明

IO空间分配如下,8000h分配给按键,8001h分配给灯。

由portr语句,读入按键的状态,存储入辅助寄存器ar1中。

由portw语句,写出辅助寄存器ar1的值,将其赋给灯。

当程序执行一遍后,跳转回main程序,继续执行上述操作。

由此,通过拨码开关的调节,改变灯的状态。

 

 

实验四定时器实验

一、实验目的

1.熟悉定时器,了解定时器的工作原理和控制方法

2.学会使用定时器中断方式控制程序流程

二、实验操作方法

1.实验使用资源 

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

2.实验说明:

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

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

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

三、实验过程

1.连接实验箱,正确设置参数

■实验箱CPLD单元的拨码开关SW2的4置OFF

■CPU板,跳线J2的1、2短接;SW1的2、6置ON,其余置OFF;SW2全部置OFF

2.启动CCS,并加载“exp04.out”,单击“Run”运行程序,

3.观察到对应LP1~LP8灯“亮”;

4.单击“Halt”,暂停持续运行,开关将对灯失去控制;

5.打开源代码,查看。

四、源代码及注释

向量程序:

.global_c_int00,_timer0

.sect".vecs";自定义向量表

reset:

b_c_int00;//复位中断时跳转到c程序主函数

nop

nop

nmi:

rete;NMI//不可屏蔽中断时,返回并允许产生该中断

nop

nop

nop

;softwareinterrupts

sin17:

.space4*16;//在当前段中,保留4*16bit空间,标号

;//sin17为空间起始地址

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

nop

nop

nop

int1:

rete;EXTERNALINT1

nop

nop

nop

int2:

rete;EXTERNALINT2

nop

nop

nop

tint0:

b_timer0;TIMER0INTERRUPT//产生定时中断时,跳转到timer0

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

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

主程序

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

voidsys_ini()//系统初始化子程序

{

asm("ssbxINTM");//(INTM中断模式位,ssbx:

状态寄存器位置位)全局

//禁止所有可屏蔽中断

PMST&=0x00FF;//(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间,PMST处理机模式状态寄存器操作数和0x00FF相与,强制把前八位置为0SWWSR=0x7000;//io空间7个等待周期,程序与数据空间0个等待周期,等待状态寄存器(SWWSR)的控制,该寄存器的数据空间映射地址是0028h。

第15为为零,扩展程序地址控制点。

XPA选择地址应用程序域的选择范围。

第14-12位I/0置位1,说明I/O空间和进入软件等待状态

CLKMD=0x17FA;//CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间

}//时钟模式寄存器CLKMD,第一位为1,即时钟产生器工作在PLL模式,3~10位为1,用于控制锁相环的等待时间(17FA=1011111111010)

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

{

TCR|=0x0010;//停止定时器0(TCR:

定时器控制寄存器),到二进制10000停止定时器0,定时器控制寄存器,总读0,保留

PRD=0x2710;//PRD=10000(D),定时器周期寄存器PRD用于对定时器寄存器TIM重新装载数据。

TCR|=0x000A;//TDDR=10(D),所以定时器时钟=1/(20M/10/10000)=5ms

IMR=0x0008;//使能定时器0中断,中断屏蔽寄存器IMR,同中断,标志寄存器IFR,第四位不为1

IFR=0xFFFF;//清除所有中断标志位,,全为1,IFR的相应位置1,表示中断发生

asm("rsbxINTM");//全局使能可屏蔽中断,INTM置零,状态寄存器ST1 的INTM 位为0,即中断方式位,允许可屏蔽中断

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

TCR|=0x0020;//复位定时起0,此时TDDR=10(D),TIM用PRB值

//装载,为10000(D)

}

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

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

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

{

if(num==200)//记200次定时器中断,时间=200*5ms=1s

{

show=~show;//取反10101010-01010101

num=0;

}

else

num++;

return;

}

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

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

voidmain(void)

{

sys_ini();//系统初始化

timer0_ini();//定时器初始化

for(;;)//进入子程序循环

{

port8001=show;//端口8001收到数据,灯亮

}

}

/***************************结束******************************/

五、实验现象

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

六、程序运行说明

首先,执行main程序,依次进行如下步骤。

1、执行系统初始化程序(sys_ini),禁止中断,将中断向量表映射到0080空间中,允许io的7个等待空间,进行倍频,将频率设为20M。

2、执行定时器子程序(timer0_ini),先将定时器停止,然后对定时进行设置,值为5ms,启动定时器。

3、执行循环语句,对每次计时器计时结束一次后,num(初值0)计数值加1,当num=200时,show值取反。

4、将show值赋给port,通过port实现8盏灯以1s的时间差,按照1357、2468两种方式交替点亮。

此外,VECTOR.ASM(即中断向量表)中,仅使用了tint0中断(即定时器中断),中断时,将自动跳转到timer0_ini程序,进行新一轮计时。

 

 

实验五INT2中断实验

一、实验目的

1.掌握中断技术,学会处理中断;

2.学会使用中断方式控制程序流程;

3.掌握中断时序问题。

二、实验操作过程

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

三、实验过程

1.连接实验箱,正确设置参数

■实验箱CPLD单元的拨码开关SW2的4置OFF

■CPU板,跳线J2的1、2短接;SW1的2、6置ON,其余置OFF;SW2全部置OFF

■导线连接CPLD单元的“单脉冲输出”和电机控制单元的“INT2”

2.启动CCS,并加载“exp05.out”,单击“Run”运行程序,

3.反复按“单脉冲单元”的S5键,观察到对应LP1~LP8灯亮灭变化

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

当前位置:首页 > 工程科技 > 建筑土木

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

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