北邮DSP数字信号处理硬件实验报告.docx
- 文档编号:12624773
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:41
- 大小:679.98KB
北邮DSP数字信号处理硬件实验报告.docx
《北邮DSP数字信号处理硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北邮DSP数字信号处理硬件实验报告.docx(41页珍藏版)》请在冰豆网上搜索。
北邮DSP数字信号处理硬件实验报告
一、常用指令实验
一、实验目的
熟悉DSP开发系统的连接,了解DSP开发系统的组成,结构和应用系统构成;熟悉常用C54X系列指令的用法。
二、实验设备
计算机,CCS3.3版软件,DSP仿真器,EXPIII+试验箱。
三、实验步骤与内容
进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:
观察实验现象
实验结果:
可见XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;
四、名词解释及相关学习
(1)、通用I/O引脚
每一种C54x芯片都有两个通用I/O引脚,BIO和XF。
BIO是用来监测外部设备状态的输入引脚。
在对时间要求很严格的循环不能被外部中断所打断的时候,可以用BIO脚来代替中断与外设相连。
根据BIO输入的状态来执行一个转移。
XF用于发信号给外部设备,通过软件进行控制。
(2)STM#1K,MMR[1.MMR=#1K2.mmr(MMR)=#1K]累加器的低端存放到存储器映射寄存器中
(3)16位直接寻址方式主要应用于程序的调用(CALLpmad)、跳转指令(GOTOpmad)和块重复指令((d)blockrepeat)中
1)pmad指的是16位程序计数器PC的内容,它代表的是程序存储空间的地
址(programmemoryaddress);
2)CALL指令和GOTO指令包括无条件的CALL和GOTO与有条件的CALL和
GOTO。
(4)BANZ[D]pmadAR(ARP)不为0时转移,可选择延迟。
(5)AR3辅助寄存器3;AR4辅助寄存器4
五、实验代码及注释
.mmregs//定义存储器映像寄存器
.global_main
_main:
stm#3000h,sp//设置堆栈指针寄存器的值为3000h
ssbxxf//置位状态寄存器xf=1,灯亮
calldelay//调用delay函数
rsbxxf//复位状态寄存器xf=0,灯灭
Calldelay//调用delay函数
b_main//无条件转移至_main,
nop
nop
;
delay:
stm270fh,ar3//设置辅助寄存器ar3值为9999
loop1:
stm0f9h,ar4//设置辅助寄存器ar4值为249
loop2:
banzloop2,*ar4-//寄存器ar4值减一,当其值不为0时跳转到loop2
banzloop1,*ar3-//寄存器ar3值减一,当其值不为0时跳转到loop1
ret
nop
nop
.end
二、数据存储实验
一、实验目的:
掌握TMS320C54的程序空间的分配,掌握TMS320C54的数据空间的分配,熟悉其数据空间的指令
二、实验设备
计算机,CCS3.3,DSP仿真器,EXPIII+试验箱
三、实验步骤与内容
本实验指导书是以TMS32OVC5410为例,介绍相关的内部和外部内存资源。
对于其它类型的CPU请参考查阅相关的资料手册。
下面给出TMS32OVC5410的内存分配表:
本实验说明:
本实验程序将对0x1000开始的8个地址空间,填写入0xAAAA的数后读并存储到0X1008开始的8个地址空间。
在CCS中可以观察DATA内存空间地址0X1000~0X100F值的变化。
寄存器变化前
寄存器变化后
内存单元变化
四、实验程序及注释
*FileName:
exp02.asm
;getsomeknowledgeofthecmdfile
;theprogramiscompiledatnoautoinitializationmode
.mmregs
.global_main
_main:
//执行主程序
;storedata
stm1000h,ar1//将外部内存地址1000h赋给辅助寄存器ar1
rpt#07h//循环执行下一条指令8次
st0aaaah,*ar1+//将数据AAAAH存放到以地址1000H~1007H的八个存储单元中.
且ar1值加1
;readdatathenre-store
stm7h,ar3//将立即数7赋给辅助寄存器ar3
stm1000h,ar1//将地址1000h赋给辅助寄存器ar1
stm1008h,ar2//将地址1008h赋给辅助寄存器ar2
loop:
ld*ar1+,t//将辅助寄存器ar1的值赋给t,ar1值加1
stt,*ar2+//将t的值赋给辅助寄存器ar2,ar2值加1
banzloop,*ar3-//寄存器ar3值减1,当其值不为0时跳转到loop
here:
bhere
.end
三、I/O实验
一、实验目的
了解I/O口的拓展,掌握I/O口的操作方法,熟悉PORTR,PORTW指令的用途,
了解字量与模拟量的同异
二、实验设备
计算机,CCS3.3,DSP仿真器,EXPIII+试验箱
三、实验步骤与内容
1、实验说明:
实验中采用简单的一一映像关系来对I/O口进行验证,目的是使实验者能够对I/O有一目了然的认识。
在本实验系统中,提供的IO空间分配如下:
CPU1:
0x0000switchinput(X)8
0x0001LEDoutput(X)8
CPU2:
0x0001DAC
0x0004Read_Key
0x0006Write_Key
0x000FWrite_LCD
(2)实验现象
调整K0~K7的开关,观察LP1~LP7LED不同条件下灯的亮灭变化。
四、实验程序及注释
;intheI/Ospace0x0000=>8switches;/输入端口赋给8个按键
;0x0001=>8LEDs;输入端口赋给8个指示灯
.mmregs
.global_main
.text
_main:
stm3100h,sp
stm1000h,ar1指定地址
portr8000h,*ar1;读入I/O8000H数据,将其存储到数据空间的1000H
nop;NOP为空操作,起延时作用.
nop
portw*ar1,8001h;将数据空间的1000H单元的数据,写出到I/O8001H
nop
nop
b_main;程序跳转到"_MAIN"执行.
nop
nop
.end
四、定时器实验
一、实验目的
熟悉C54的定时器,掌握C54定时器的控制方法,学会使用定时器中断方式控制流程。
二、实验设备
计算机,CCS3.3,DSP仿真器,EXPIII+试验箱
3、实验步骤及内容
C54的定时器是一个20位的减法计数器,可以被特定的状态位实现停止、重新启动、重新设置或禁止,可以使用该定时器产生周期性的CPU中断,控制定时器中断频率的两个寄存器是定时周期寄存器PRD和定时减法寄存器TDDR。
在本系统中,如果设置时钟频率为20MHZ,令PRD=0x4e1f,这样得到每1/1000秒中断一次,通过累计1000次,就能定时1秒钟。
实验现象:
LED灯(LED1~LED8)以一定的间隔时间不停闪亮变化;
四、名词解释及相关学习
中断,指的是当某个事件发生时,暂停当前的操作,转向中断服务程序,执行完后再返回继续原来的操作。
这使得DSP能够处理多个任务。
DSP有许多中断源,可以设置中断控制寄存器来确定响应哪些中断而不理会哪些中断。
当有中断发生并且处于允许状态时,程序指针跳转到中断向量表中对应的中断地址。
由于中断服务程序一般较长,通常中断向量表存放的是一个跳转指令,指向实际的中断服务程序。
使用向量一般用一条跳转指令转到相应中断服务子程序,其余空位用NOP填充;*未使用的向量直接用RETE返回,是为了防止意外进入未用中断。
使用定时器首先要对它初始化,基本步骤如下:
1.关掉中断2.停止定时器运行。
3.设定时器的定时长度
4.允许定时器中断5.运行定时器6.打开中断
定时器是一个片内减计数器,它可以被特定的状态位实现停止、重启动、重设置或禁止。
定时器在复位后就处于运行状态,用于周期地产生CPU中断或脉冲输出。
定时器被预定标计数器所触发,后者每个CPU时钟周期减1,当计数器减至0时,会产生一个定时器中断,同时在下一周期计数器被定时周期值重新装载。
四、实验程序及注释
#include"tms320uc5402.h"
ioportunsignedport8001;//调用头文件//I/O地址输出端口8001
unsignedintshow=0x00aa;//存储在地址10101010
unsignedintnum=0x0000;//初始化数据
/*************************************************************/
/*******************函数、子程序声明与定义********************/
voidsys_ini()//系统初始化子程序
{
asm("ssbxINTM");//全局禁止所有可屏蔽中断
PMST&=0x00FF;//(DRAM映射到程序空间和数据空间)向量表映射到0x0080空间
SWWSR=0x7000;//io空间7个等待周期,程序与数据空间0个等待周期
CLKMD=0x17FA;//CLKOUT=2*CLKIN=2*10M=20M,自动延时最长时间
}
voidtimer0_ini()//定时器0初始化子程序
{
TCR|=0x0010;//停止定时器00000000000010000,TSS=1,停止定时器
PRD=0x2710;//PRD=10000(D)定时器周期寄存器,用于对定时器寄存器TIM重新装载数据。
TCR|=0x000A;//TDDR=10(D),所以定时器时钟=1/(20M/10/10000)=5ms
//定时器除数比率。
为片内定时器规定定时器除数比率(周期)。
//当PSC递减到0,PSC用TDDR的内容装载
IMR=0x0008;//使能定时器0中断0000000000001000,HINT=0,中断屏蔽寄存,使能定时器中断
IFR=0xFFFF;//清除所有中断标志位HINT=1,中断标志寄存,清除所有中断标志
//中断屏蔽寄存器IMR和中断标志寄存器IFR的内存映射地址分别为
CPU存储器的第0字和第1
//字。
这两个寄存器的相同的位对应相同的中断。
//HINT位如为0则表示中断屏蔽,如为1则表示中断开放。
asm("rsbxINTM");//全局使能可屏蔽中断
TCR&=0xFFEF;//开始定时器0--0000000011101111,TSS=0,定时器启动
TCR|=0x0020;//复位定时起00000000000100000,TRB=1,定时器再装载
}
/*************************************************************/
/*****************中断服务子程序声明与定义********************/
interruptvoidtimer0()//定时器0中断子程序
{
if(num==20)//记200次定时器中断,时间=200*5ms=1s
{
show=~show;//取反
num=0;
}
else
num++;
return;
}
/*************************************************************/
/**************************主程序*****************************/
voidmain(void)
{
sys_ini();//调用初始化函数
timer0_ini();//调用定时器初始化函数
for(;;)
{
port8001=show;
}
}
/***************************结束******************************/
五、INT2中断实验
一、实验目的
掌握中断技术,学会外部中断的处理方法;掌握中断对程序流程的控制,理解DSP对中断响应时序
二、实验设备
计算机,CCS3.3,DSP仿真器,EXPIII+试验箱
三、实验步骤和内容
外部中断执行过程:
1、将中断向量指针iptr指向中断矢量所在段,在段中偏移量为中断序号的4
倍的地址执行一个跳转到中断服务子程序的跳转指令
2、置位ST1中的intm位,禁止中断,然后清除所有未执行完的中断
3、打开相应的中断,复位st1中的intm位,使能中断。
4、等待中断发生
实验说明:
DSP有4个外部中断INT0-INT3,下降沿触发,本次实验所用实验箱的频率计使用的是INT2。
频率计的设计原理是:
在设定时间下计外部中断INT2的次数,除以定时器的定时周期(也就是乘以定时器中断的触发频率),就得到外部脉冲频率。
实验现象:
先按开关"单脉冲输出",发现LED灯1,3,5,7亮,再按一次,LED灯2,4,6,8亮。
四、实验程序及注释
.mmregs//定义存储器映像寄存器
.global_initial
.text
_initial:
NOP
LD#0,DP//重置数据指针,为DP寄存器赋值0
STM#0,CLKMD//设置时钟模式寄存器的值为0
STM#0,CLKMD
TstStatu1:
LDMCLKMD,A//LDM把存储器映射寄存器值装入到累加器
AND#01b,A//和pollSTATUS(二进制)做与运算;
BCTstStatu1,ANEQ//BC为可选择延迟的条件转移;
STM#0xF7FF,CLKMD//1111011111111111,设置时钟10MHz;
STM0x3FA0,PMST//PMST是处理器模式状态寄存器,指向中断
//指针向量0011111110100000,MP/MC=0,可对片内ROM寻址;
ssbx1,11/置位ST1.INTM=1,停止所有的中断
stm#00h,imr
stm#0ffffh,ifr
stm#04h,imr//立即数0100,使能int2的外部中断
rsbx1,11//复位ST1.INTM=0,允许所有中断
ret
.end
interruptvoidint2c();//对中断程序int2c()声明
externvoidinitial();
externvoidporta();
externvoidportb();
intflag=0,i=0;
main()
{
initial();
while
(1){;//死循环
}
}
interruptvoidint2c(){//中断子程序,记录外部中断int2c()
i=i+1;
if(i==1)
{
if(flag==0)
{//当flag=0时,执行porta()ar1的值为5555h,即第1,3,5,7灯亮
flag=1;//取反flag=1;
porta();//执行porta()
i=0;
}
else
{//当flag=1时,执行portb(),ar1的值为aaaah,即第2,4,6,8灯亮
flag=0;//令flag=0;
portb();//执行portb()
i=0;
}
}
else
{
i=0;
}
return;
}
.mmregs
.global_porta//定义外部接口a
.global_portb//定义外部接口b
_porta:
stm304h,ar1//设置辅助寄存器ar1,将304h放到ar1
st5555h,*ar1//将5555h存储到地址为304h的内存中;
portw*ar1,8001h//portw:
写按键,把寄存器ar1中的数据写到输出端口8001,
用来输出控制亮灭
ret
_portb:
stm304h,ar1//设置辅助寄存器ar1,将304h放到ar1
st0aaaah,*ar1
portw*ar1,8001h//portw:
把数据写到端口8001,ar1输出控制亮灭
ret
六、A/D转换实验
一、实验目的
掌握利用TLV320AD50实现A/D转换的技术基本原理和常用方法,掌握并熟练使用DSP和AD50的接口及其操作。
二、实验设备
计算机,CCS2.0软件,DSP仿真器,实验箱,示波器,连接导线。
3、实验步骤及内容
实验现象
在图形观察窗口观察A/D转换后的采样波形:
存储器数据:
四、实验程序及注释
#include"tms320uc54072.h"
ioportunsignedport8008;//声明ad7822芯片的接口地址
unsignedintdata_buff[256];//声明数组
unsignedintj=0;
voidsys_ini()//系统初始化子程序
{
asm("ssbx");//置位INTM=1,全局禁止所有可屏蔽中断
PMST&=0x00FF;
SWWSR=0x7000;
CLKMD=0x0000;//设置分频模式时钟模式寄存器CLKMD
while(CLKMD==0x0003);{//PLL时钟产生器选择,决定时钟产生器是工作在PLL模式,
产生一个CPU时钟
}//CLKOUT=(3+1)*CLKIN=40M,自动延时最长时间
voidint1_ini()
{
IMR=0x0002;//使能外部中断全1,中断标志寄存器,清除所有中断标志位
IFR=0xFFFF;//复位INTM=0,开放所有的可屏蔽中断;
asm("rsbxINTM");}
//int1中断子程序
interruptvoidint1(){
data_buff[j]=port8008&0x00FF;j++;//读取ad7822转换数据存入data_buff[]数组
if(j==255)
{
j=0;
}//共有8位数据,采样28=256个点,然后从0开始重新采样
return;
}
//主程序
voidmain(void)
{
sys_ini();//调用sys_ini();函数
int1_ini();//调用int1_ini();函数
for(;;)
{
}
}
七、D/A转换实验
一、实验目的:
熟悉D/A转换的基本原理,掌握AD7303的技术指标和常用方法,熟悉DSP的多通道缓冲串口配置为SPI的方法,掌握并熟练使用DSP的接口及其操作
二、实验设备
计算机,CCS3.3版软件,DSP仿真器,EXPIII+试验箱,示波器
3、实验步骤及内容
用示波器检测D/A转换单元的2号孔接口"输出1"输出一个正弦波;
波形如下所示:
四、实验程序及注释
ioportUINT16port8001;//定义输出io端口为0x8001;
intdata_buff[LEN];//数据缓冲
UINT16show=0x00aa;//LED显示的数值
voidcpu_init(void);//初始化CPU
voidDelay(UINT16numbers);//延迟
externvoiddelay_3us(void);//3us延迟
voidmcbsp0_write_rdy(UINT16out_data);//MCBSP0发送一个数据
voidmcbsp0_init_SPI(void);//MCBSP0设置为SPI模式
voidmcbsp0_close(void);//MCBSP0关闭
/*
************************************************************************
***********************函数定义******************
************************************************************************
voidcpu_init(void)//cpu初始化
{
略
}
/*
***********************************************************
-函数名称:
voidDelay(intnumbers)
-函数说明:
延时
***********************************************************
*/
voidDelay(UINT16numbers)
{
略
}
/*
*************************************************************************
-函数名称:
voidmcbsp0_write_rdy(UINT16out_data);
-函数说明:
MCBSP0发送一个数据
**************************************************************************
*/
voidmcbsp0_write_rdy(UINT16out_data)
{
略
}
*********************************************************
-函数名称:
voidmcbsp0_close(void);
-函数说明:
MCBSP0关闭
*********************************************************
*/
v
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮 DSP 数字信号 处理 硬件 实验 报告