北邮dsp硬件实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

DSP硬件实验报告
班级:2010211204
学号:10210992
姓名:许鹏
2012年12月15号
实验一:常用指令实验
一、实验目的
1.熟悉DSP开发系统的连接
2.了解DSP开发系统的组成和结构和应用系统构成
3.熟悉常用C54X系列指令的用法(程序寻址,寄存器,I/O口,定时器,中
断控制)。

二、实验设备
计算机,CCS 2.0版软件,DSP仿真器,实验箱。

三、实验操作方法
1、系统连接
进行DSP实验之前,先必须连接好仿真器、实验箱及计算机,连接方法如下所示:
在硬件安装完成后,接通仿真器电源或启动计算机,此时,仿真盒上的“红色小灯”应点亮,否则DSP开发系统与计算机连接有问题。

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

四、实验步骤与内容
(一)简单指令程序运行实验
1、实验使用资源
实验通过实验箱上的XF指示灯观察程序运行结果
2、实验过程
启动CCS 2.0,并加载“exp01.out”;加载完毕后,单击“Run”运行程序;
实验结果:可见XF灯以一定频率闪烁;单击“Halt”暂停程序运行,则XF 灯停止闪烁,如再单击“Run”,则“XF”灯又开始闪烁;
关闭所有窗口,本实验完毕。

源程序查看:用下拉菜单中Project/Open,打开“Exp01.pjt”,双击“Source”,双击“exp01.asm”
可查看源程序。

源程序注释如下:
(二)资料存储实验
1、实验使用资源
本实验指导书是以TMS32OVC5410为例,介绍相关的内部和外部内存资源。

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

下面给出TMS32OVC5410的内存分配表:
对于存储空间而言,映像表相对固定。

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

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

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

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

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

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

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

2、实验过程
连接好DSP开发系统,运行CCS软件;
a) 在CCS的Memory窗口中查找C5410各个区段的数据存储器地址,
在可以改变的存储器内容的地方,选定地址随意改变其中内容并观察
结果;
b) 在CCS中装载实验示范程序,单步执行程序,程序中写入和读出的
数据存储地址的变化;
c) 改变其它寻址方式,进行观察数据存储器地址与写入和读出数据的的
变化。

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

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

样例程序实验操作说明:
启动CCS 2.0,并加载“exp02.out”,用“View”下拉菜单中的“Memory”
查看内存单元,输入要查看的内存单元地址,本实验要查看0x1000H~0x100FH 单元的数值变化,输入地址0x1000H,查看0x1000H~0x100FH单元的初始值,单击“Run”运行程序,也可以“单步”运行程序,单击“Halt”暂停程序运行,查看0x1000H~0x100FH单元内数值的变化
关闭各窗口,本实验完毕。

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

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

在本实验系统中,提供的IO空间分配如
下:
CPU1:
0x0000 switch input (X) 8
0x0001 LED output(X) 8
CPU2:
0x0001 DAC
0x0004 Read_Key
0x0006 Write_Key
0x000F W rite_LCD
0x8000 HPIC0
0x8001 HPIC1
0x8002 HPID0(AUTO)
0x8003 HPID1(AUTO)
0x8004 HPIA0
0x8005 HPIA1
0x8006 HPID0(NO AUTO)
0x8007 HPID1(NO AUTO)
实验程序框图
注意:电平转换接口主要考虑应用3.3V的中央处理器时,系统的电平兼容问题,用来保护CPU不受损坏。

系统采用74LVC245电平兼容转换器件。

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

(注意:输出为0时点亮灯)
例程序实验操作说明
启动CCS 2.0,并加载“exp03.out”,单击“Run”运行程序,任意调整K0~K7开关,可以观察到对应LP0~LP7灯“亮”或“灭”;单击“Halt”,暂停持续运行,开关将对灯失去控制。

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

源程序查看:
用下拉菜单中Project/Open,打开“Exp03.pjt”,双击“Source”,双击“exp03.asm”可查看源程序。

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

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

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

2、实验过程
调入样例程序,装载并运行; 例程序实验操作说明
启动CCS 2.0,并加载“exp04.out ”,单击“Run ”运行,可观察到LED 灯(LP0~LP7)以一定的间隔时间不停摆动,单击“Halt ”,暂停程序运行,LED 灯停止闪烁,单击“Run ”,运行程序,LED 灯又开始闪烁。

(五)INT2中断实验
1、实验使用资源
本实验是进行C54芯片的INT2中断练习, C54芯片中断INT2是低电平单脉冲触发;实验采用导线一端连接D_Exp—数字量输入扩展接口I0,经PX4的IN3,到PX5的OUT0电平转换,再与另一端连接INT2插孔;拨动开关K0一次,就产生一个低电平单脉冲;运行示范程序,观察LP1~LP7 LED灯的输出变化;可观察到每拨动开关K0一次LP1~LP7灯亮灭变化一次;
2、实验过程
样例程序实验操作说明
启动CCS 2.0,并加载“exp05.out”,单击“Run”运行程序,反复拨动开关K0,观察LP1~LP7 LED灯亮灭变化,单击“Halt”暂停程序运行,反复拨动开关K0,LP1~LP7 LED灯亮灭不变化;
关闭所有窗口,本实验完毕。

源程序查看:
用下拉菜单中Project/Open,打开“Exp05.pjt”,双击“Source”,双击“int2.c”、
实验二A/D采样实验
一、实验目的
1.掌握利用TLV320AD50实现A/D转换的技术基本原理和常用方法。

2.学会DSP的多信道缓冲串口的应用方法。

3.掌握并熟练使用DSP和AD50的接口及其操作。

4.通过实验加深对DSP系统频谱混叠认识。

二、实验设备
计算机,CCS 2.0软件,DSP仿真器,实验箱,示波器,连接导线。

三、实验步骤和内容
1.实验连线
✧ 用短接块短接SS1的1,2脚,设置输出低频信号;短接S2 的Sin脚,设置输出
正弦波信号,这时模拟信号产生单元SP1输出为低频正弦波。

✧ JD跳线断开,设置语音处理单元输入信号为交流;并用导线连接SP1脚和JAD3的1
脚,将模拟低频正弦波信号接入语音处理单元。

✧ 用导线连接JAD1的INP和INPF,以及JAD2的INM和INMF,将语音处理单元输出的
差动模拟信号接入AD50输入端。

2.运行 CCS 2.0软件,装入“exp06.pjt”工程文件,双击“exp06.pjt”及“Source”
3.加载“exp06.out”示范程序,在“exp06.c”中“READAD50()”处,设置断点,运行程序,通过用下拉菜单中的View / Graph的“Time/Frequency”打开一个图
形观察窗口,调节输入信号的频率或幅值,观察图形情况(幅值和频率),设置
该图形观察窗口的参数,观察起始地址为0x1000H,长度为256的内存单元内的数
据,该资料为输入信号经A/D转换之后的数据,数据类型为16位整型,击“Animate”
运行程序,在图形观察窗口观察A/D转换后的采样波形。

在图形观察窗口观察A/D转换后的采样波形;
旋转开发板上的电位器,使幅度调节到适当位置,得到波形如下:
旋转开发板上的频率旋钮,得到波形如下:
继续改变频率,导致频谱混叠,波形如下:
实验三:D/A转换实验
一、实验目的
1.掌握利用TLV320AD50实现D/A转换的技术基本原理和常用方法。

2.进一步学习DSP的多信道缓冲串口的应用方法。

3.掌握并熟练使用DSP和AD50的输出接口及其操作。

二、实验设备
计算机,CCS 2.0版软件,DSP仿真器,实验箱,示波器。

三、实验步骤与内容
1.不需联机,通过示波器观测输出波形情况;
2.运行CCS软件,加载示范源程序,了解实验程序;
3.加载示范程序“exp07.out”,并通过File/Data/Load装载波形数据sin.dat。

4.按F5运行程序,用示波器检测JAD4的3脚AD50_DAout输出一个正弦波;
5.在程序中,改变相应资料来实现改变波形和周期;
得到的波形如下所示:
在示波器观察的模拟信号波形如下,
由以上两个波形图可以看出,数字信号周期为2.5ms,模拟信号周期为40s。

右由模拟角频率与数字角频率的关系Ω==ω*T=ω/fs可推导出采样频率为16kHz.之后也是问
了老师,得知示波器的采样频率大约是10K+
实验四:数字滤波器(FIR算法实验)
一.实验目的
1.掌握用窗函数法设计FIR数字滤波器的原理和方法;
2.熟悉线性相位FIR数字滤波器特性;
3.了解各种窗函数对滤波特性的影响。

二.实验设备
计算机,CCS 2.0 版软件,实验箱,DSP仿真器,短接块,导线。

三.实验原理
1.有限冲击响应数字滤波器的基础理论;
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、贝塞尔滤波器);3.数字滤波器系数的确定方法。

四.实验步骤
1.复习如何设计FIR数字滤波。

阅读本实验原理,掌握设计步骤;
2.阅读本实验所提供的样例子程序;
3.运行CCS软件,对样例程序进行跟踪,分析结果;
4.填写实验报告。

5.样例程序实验操作说明
1)实验前准备
在模拟信号产生单元中,一路信号源产生低频正弦波信号(S1 置“L”),另一路信号源产生高频正弦波信号(S11置“H”),检查模拟信号输出端口“A”与“B”应断开;实验箱上电,用示波器分别观测out1和out2输出的模拟信号,调节电位器SPR1、SPR2(out1输出信号的频率调节和幅值调节)和电位器SPR11、SPR12(out2输出信号的频率调节和幅值调节),直至满意为止;
本样例实验程序建议:
1.低频正弦波信号为100Hz/1V;
2.高频正弦波信号为6KHz/1V;
3.实验箱掉电,做以下连接和检查:
4.短接输出端口“A”与“B”;
5.短接JAD1的INM、INMF;短接JAD2的INP、INPF;
6.用导线连接out2(模拟信号输出)和JAD3 1脚(MIC_IN);
7.检查:JD 是否断开。

注:有关以上连接的说明,可参见第八章中语音接口跳线接输出接口配置使用说明以及信号产生单元配置说明。

正确完成计算机、DSP仿真器和实验箱的连接后,系统上电。

实验程序说明:该程序为51阶FIR低通滤波器算法程序,采用矩形窗函数实现,数组h和xmid长度均为51,fs 为采样频率,fstop 为滤波器截止频率,可以修改以上参数来改变滤波器性能。

重新“Rebuild All”后,并加载“Load”,单击“Animate”,可得到不同的实验结果;
实验结果:在CCS2.0环境,同步观察输入信号及其FIR低通滤波结果。

通过修改程序,使得滤波器变为高通滤波器。

未修改的源程序中的.c文件代码如下:
extern void InitC5402(void);
extern void OpenMcBSP(void);
extern void CloseMcBSP(void);
extern void READAD50(void);
extern void WRITEAD50(void);
/***********************************************************************
** Main Function Program
***********************************************************************/
#include "stdio.h"
#include "math.h"
#define pi 3.1415927
doublenpass,h[51], x, y, xmid[51]; int m=50;
int n=256;
voidfirdes (int m, double npass);
main ()
{
intxm,ym;
int *px = (int*)0x3000;
int *py = (int*)0x3100;
doublefs,fstop,r,rm;
inti,j,p,k,s;
k=0;
fs = 16000;
fstop = 2000;
npass = fstop/fs;
for (i=0; i<=m; i++)
{
xmid[i]=0;
}
firdes(m, npass);
for (; ; )
{
OpenMcBSP();
for (s=0; s<=4; s++)
{
READAD50();
for (i=0; i<=n-1; i++)
{
px = (int*)(0x3000+i);
xm = *px;
x = xm/32768.0;
for (p=0; p<=m; p++)
{
xmid[m-p] = xmid[m-p-1];
}
xmid[0] = x;
r = 0;
rm= 0;
for (j=0; j<=m; j++)
{
r =xmid[j] * h[j];
rm = rm + r;
}
y = rm;
py = (int*)(0x3100+i);
ym = (int)(32768.0 * y);
*py = ym;
}
WRITEAD50();
k++;
}
}
/*void PROCESSING(void)
{
do the necessery operations here!*/
}
voidfirdes(int m, double npass)
{
int t;
for (t=0; t<=m; t++)
{
h[t] = sin((t-m/2.0)*npass*pi)/(pi*(t-m/2.0));
}
if (t=m/2) h[t]=npass;
}
/*********************************************************************** ** End of File –– exp08.c
***********************************************************************/ 低通滤波器输出波形图如下:
现在要改成高通滤波器,可以在原来的程序中阴影部分那一行改为h[t] = (sin((t-m/2.0)*pi)-sin((t-m/2.0)*npass*pi))/(pi*(t-m/2.0)); 修改后的高通滤波器波形图如下所示:
实验总结:
首先来说说这几个实验吧,前五个都是入门实验,让我们自己看懂代码,对于汇编语言的查找确实是很烦人,这个必须要记,不想里面的.C文件那样容易看懂,这也算是我们第一次接触汇编吧。

然后就是AD,DA转换的实验了,按照要求的方式连接开发板上的接口,做起来也不复杂。

不过在这个过程中,我对于采样有了更深的认识,因为自己算除了机器的采样频率,很有成就感。

最后就是低通高通滤波器了,老师已经给了我们一个低通滤波器,把代码中的函数部分和端口改一下就能实现高通了,记得我们是用汉宁窗实现是高通滤波器,这也对我们dsp所学知识有了一定的应用。

总的来说,这次硬件实验,让我们对于硬件的底层结构和CPU 以及内存地址的操作有了一定的了解,关于汇编语言也有了一定的认识,虽然还谈不上完全掌握这些知识,但是对于我们以后自学或者选择自己发展方向也是有一定的帮助的。

确实要成为一名好的工程师,软件和硬件必须得兼通。

相关文档
最新文档