数字信号处理实验讲义.docx
《数字信号处理实验讲义.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验讲义.docx(74页珍藏版)》请在冰点文库上搜索。
数字信号处理实验讲义
数字信号处理实验讲义
实验一CCS环境配置与发光灯闪烁实验(综合性)
1、实验目的
(1)、了解54XDSP的结构及管脚功能;
(2)、熟悉CCS的环境配置;
(3)、了解利用CCS进行研发的一般过程;
(4)、熟悉简单的DSP指令,了解I/O口的访问方式
2、实验器材
PC机,CodeComposer软件,Studio50001.20,ICETEK5100PPDrive
3、实验原理
硬件连接图和软件流图如下:
使用的软件函数宏叙述调用形式参数
返回值和包括该函数的库文件头文件
1)brd_init()——这段程序是初始化DSP环境
调用形式s16brd_initunsignedint
cpuFreq
2)brd_toggle_led()——改变和控制一个或多个发光二极管
调用形式s16brd_led_disable(BrdLedled)
计算结果一个或多个发光二极管亮
3)delay()——程序中建立的完成延时功能的子函数
DSP初始化
第一个灯亮
调子函数延时
第二个灯亮
调子函数延时
第三个灯亮
While
(1)
结束
调子函数延时
开始
调用形式delay()
4)brd_delay_msec()——程序耽搁规定的时间
调用形式s16brd_delay_msec(u16msec)
5)type.h——定义了s32s16f32u8u16u32的类型
6)board.h——完成以下函数的调用还完成了part0---part8端口的定义
brd_init()
brd_init_bios()
brd_fifo_read()
brd_fifo_write()
brd_led_enable()
brd_led_disable()
brd_led_toggle()
4、实验内容与步骤
发光灯闪烁程序可以使人了解使用CCS来开发TMS320VC5402DSK的一些特点发光灯闪烁演示如何使用DSK上的三个信号灯这个例子将使三个信号灯按每秒一次的间隔连续闪烁。
实验步骤如下:
(1)、双击CCSSetup图标,打开CodeComposer(Studio)配置程序,如下图:
(2)、此时,打开配置程序如下,如果显示界面与此不一样,请跳到3
(3)、如果显示界面如下图,请执行主选单“File”下的“Import…”选项,此时,可以看到如下所示的对话框
(4)、在如下的对话框中,点击“Clear”按钮,这样将会清除原有的配置。
然后,在列表框“AvailableConfigurations”中加亮“ICETEK-5100USBEmulator”选项。
如图中圆圈所示:
(5)、点击对话框中的“Import”按钮,然后点击“Close”按钮,回到3所示的界面中。
(6)、选择主选单“File”下的选项“Exit”,保存并退出配置程序。
(7)、如果你的软件安装在C盘的C\ti目录下就请在c:
\ti\myprojects目录下创建blink子目录;如果安装目录在其他位置则在相应位置的myprojects目录下创建blink子目录
(8)、从C:
\ti\c5400\dsk\examples\dsp\blink目录下拷贝blink.c和blink.cmd到新建的文件夹
(9)、从C:
\ti\c5400\dsk\lib目录中拷贝drv5402.lib和dsk5402.lib库文件,从c:
\ti\c5400\cgtools\lib目录中拷贝rts.lib库文件到新建的文件夹
(10)单击开始选单选择程序在C5402DSKDevelopmentTools组中,选择CCStudio图标,启动CodeComposerStudio或者单击桌面上CCStudio图标,注意CodeComposerStudio的设置.如果你在运行CCS时返回错误信息请确认在安装了软件之后按照QuickStartGuide设置了CodeComposerStudio
(11)、在CodeComposerStudio主界面中打开Project选单选择New选项
(12)、在SaveNewProject对话框中选择刚刚建立的工作目录在文件名编辑框中输入blink为项目名称建立工程项目文件blink.mak。
打开Project选单选择Addfiletoproject在随后打开的窗口中选择blink.c并按打开按钮
(13)、打开Project选单选择Addfiletoproject在随后打开的窗口中改变文件类型为SelectLinkerCommandFile(*.cmd)选择blink.cmd并按打开按钮
(14)、打开Project菜单,选择Addfiletoproject,在随后打开的窗口中改变文件类型为ObjectandLibraryFiles*.o*,*.lib,选择drv5402.lib并按打开按钮,重复此同一步骤,添加dsk5402.lib和rts.lib到项目中
(15)、屏幕左侧的窗口是ProjectList,单击列表项旁的+展开Projectblink.mak和Source项,观察上述文件是否都被包含到项目中,注意项目浏览器,如果在屏幕上看不到项目浏览器,请打开View选单选择Projects项目,如果项目浏览器已经打开但看不到项目文件,在项目浏览器窗口下的File标签上单击
(16)、打开Project选单,选中Option选项在Compiler属性页中的IncludeSearchPath
编辑框内键入c:
\ti\c5400\dsk\include这样就可以让CodeComposerStudio正确的搜索项目包含的头文件
(17)、在项目浏览器中双击blink.c,激活blink.c文件浏览该文件的内容
(18)、CodeComposerStudio可以自动的保存工程项目的状态,你可以使用Project下的Open打开一个工程项目文件的同时恢复上次退出CodeComposerStudio时工作环境的设置值。
(19)、打开GEL选单选择C54X下的C5402_DSK_Init
(20)、打开Project选单选择Rebuildall选项,CodeComposerStudio重新编译和链接这个工程项目整个的处理过程在屏幕下方的Message窗口中返回信息,当改变了设置后必须重新编译所有的文件。
(21)、打开File选单选择LoadProgram选项,在LoadProgram对话框中选中新建目
录下的blink.out文件,此时CodeComposerStudio将把这个目标文件装载到5402DSK上同时CodeComposerStudio打开反汇编窗口显示被加载程序的汇编指令码。
(22)、打开Debug选单选择Run选项或按F5运行程序,观察5402DSK上的信号灯可以按每秒一次的间隔连续闪烁
(23)、打开Debug选项,选择Halt选项或按Shift-F5终止实验结果。
5、实验结果及分析
(1)、观察5402DSK上的三个信号灯按的闪烁规律;
(2)、阅读源程序,分析现象产生的原因;
(3)、修改源程序,再次编译执行,观察实验平台的现象变化情况。
6、思考题
(1)、如果出现如下所示的警告,请分析是什么原因。
实验二离散信号与系统
S1信号、系统及系统响应
1、实验目的
(1)掌握几种基本典型数字信号在Matlab中的实现。
(2)掌握序列的基本操作。
(3)熟悉时域离散系统的基本特征。
(4)利用卷积求线性时不变系统的输出序列。
2、实验器材
PC机;MATLAB语言环境
3、实验原理
在数字信号处理中,所有的信号都是离散(时间)信号,数字信号是通过对模拟信号进行取样得到的。
图1-1是模拟信号数字化处理的简化框图。
模拟信号先转换成数字信号,经过一定的处理之后,再还原成模拟信号输出。
图1-1
对模拟信号x(t)进行采样得到的信号为
,其中:
;
令:
;
采样定理——采样与重构
(1)对连续信号进行等间隔采用形成采样信号,采样信号的频谱是原连续信号的频谱以采样频率为周期进行周期延拓形成的,满足公式(1-1):
(1-1)
(2)设连续信号
为带限信号,其最高截止频率为
,如果采样角频率
,那么让采样信号
通过一个增益为T,截止频率为
的理想低通滤波器,可以唯一的恢复出连续信号
,否则将发生频谱混叠,导致信号失真。
在线性时不变系统中,若系统的输入为x(n),系统的单位脉冲响应为h(n),则系统的输出为:
;其对应的频域特性为:
。
为了在数字计算机上观察分析各种序列的频域特性,通常对
在
上进行M点采样来观察分析。
对长度为N的有限长序列x(n),有:
,其中
,k=0,1,…,M-1
通常M应取大一些,以便观察谱的细节变化。
为幅频特性函数。
4、实验内容与步骤
(1)、认真复习时域离散信号与系统的基本理论,包括几种典型的基本信号、采样定理、线性卷积、序列的傅立叶变换及其性质;
(2)、离散时间信号的表示
licheng01.m
n=-2:
6;
x=[1,0.5,1,2.5,3,2,0.8,2,3];
stem(n,x);
运行结果图如图1-1
图1-1
◆若要表示具有特定采样频率的信号,需定义时间轴向量。
例如:
当f1=50Hz,f2=120Hz,fs=1000Hz对信号进行采样,得:
用matlab仿真结果图形见图1-2,其实现程序如下:
f1=50;f2=120;fs=1000;
t=0:
1/fs:
1;n=t*fs;
x=sin(2*pi*f1*t)+2*sin(2*pi*f2*t);
subplot(2,1,1);plot(t(1:
50),x(1:
50));
subplot(2,1,2);stem(t(1:
50),x(1:
50))
图1-2
◆单位脉冲序列delta.m
functiony=delta(n1,n0,n2)%绘制
信号
if((n0n2))
error('argumentmustsatisfyn1end
n=[n1:
n2];
y=[(n-n0)==0]
stem(n,y)
在matlab中调用该子程序,输入delta(0,2,5),得到x(n)=δ(n-2)的图形1-3:
图1-3
◆单位阶跃序列stepseq.m
function[x,n]=stepseq(n1,n0,n2)%绘制
if((n0n2)|(n1>n2))
error('argumentsmustsatisfyn1<=n0<=n2')
end
n=[n1:
n2];
x=[(n-n0)>=0];
stem(n,x)
调用该子程序,输入stepseq(0,2,5),x(n)=u(n-2)的图形1-4:
图1-4
实现
的时域及频域图形,可由如下命令实现,所得时域图形如图1-5以及频域图形1-6。
是绝对可和的,所以其傅立叶变换存在:
其matlab实现程序如下:
n=[0:
1:
10];
h=(0.5.^n).*stepseq(0,1,10);%产生
信号
stem(n,h)%在图形窗口中绘制
信号
w=[0:
1:
500]*2*pi/500;
H=0.5./(exp(j*w)-0.5*ones(1,501));%信号的傅立叶变换表达式
magH=abs(H);angH=angle(H);%计算信号的幅频特性和相频特性
subplot(1,2,1);plot(w/pi,magH);xlabel('以pi为单位的频率');title('h信号的幅频特性');
subplot(1,2,2);plot(w/pi,angY);xlabel('以pi为单位的频率');title('h信号的相频特性');
图1-5
图1-6
◆模拟信号数字化处理(采样定理):
对
,
进行采样,得到序列
,
,
绘制
,其实现过程如下,运行结果见图1-7
%模拟信号
Dt=0.00005;t=-0.005:
Dt:
0.005;
xa=exp(-1000*abs(t));
%连续时间傅立叶变换
Wmax=2*pi*2000;
K=500;k=0:
1:
K;W=k*Wmax/K;
Xa=xa*exp(-j*t'*W)*Dt;Xa=real(Xa);
W=[-fliplr(W),W(2:
501)];
Xa=[fliplr(Xa),Xa(2:
501)];
figure
(1)
subplot(2,1,1);plot(t*1000,xa,'r');
xlabel('tinmsex');ylabel('xa(t)')
title('AnalogSignal')
subplot(2,1,2);plot(W/(2*pi*1000),Xa*1000,'r');
xlabel('FrequencyinKHz');ylabel('Xa(jw)*1000');
title('Continuous-timeFourierTransform');
若取样频率为5KHz,绘制其
曲线,其实现程序如下,运行结果如图1-8。
%离散时间信号
Ts=0.0002;n=-25:
1:
25;
x=exp(-1000*abs(n*Ts));
%离散时间傅立叶变换
K=500;k=0:
1:
K;w=pi*k/K;
X=x*exp(-j*n'*w);X=real(X);
w=[-fliplr(w),w(2:
K+1)];
X=[fliplr(X),X(2:
K+1)];
figure
(1)
subplot(2,1,1);plot(t*1000,xa,'r');
xlabel('tinmsec.');ylabel('x1(t)');title('discretsSignal');holdon
stem(n*Ts*1000,x);holdoff;
subplot(2,1,2);plot(w/pi,X,'r');
xlabel('Frequencyinpiunits');ylabel('X1(w)')
title('Discrete-timeFourierTransform')
legend('Ts=0.2msec')
当取样频率为1KHz时,其频谱特性见图1-9。
图1-7
图1-8
图1-9
5、实验结果及分析
(1)要求绘制出各信号曲线图,并分析各信号的特征;
(2)令取样频率为1KHZ,即T=1ms,绘制
与
的异同;
(3)令取样频率为2KHZ,比较
与
的异同;
(4)令取样频率为5KHZ,比较
与
的异同;
(3)通过实验图形数据,分析不同采样频率对信号的影响。
6、思考题
(1)、数字角频率与模拟角频率的之间的关系如何?
他们之间是怎样进行转换的?
(2)、采样频率与信号是否失真之间的关系,怎样确保信号经过处理后能够不失真的恢复?
(3)、如何实现序列的加法、乘法、移位以及折叠运算?
S2卷积定理
1、目的要求
(1)掌握线性时不变系统的输入和输出之间的关系;
(2)掌握卷积运算的求解过程;
(3)进一步熟悉CCS的配置过程;
(4)了解在硬件平台上如何实现卷积运算。
2、实验器材
PC机一台,TMS320VC5402DSK一套,
ICETEK-5100PP一个,TMS320VC5402B板一套
3、实验原理
(1)、卷积的基本原理和公式
卷积和:
对离散系统卷积和也是求线性时不变系统输出响应零状态响应的主要方法,卷积和的运算在图形表示上可分为四步:
翻褶:
先在哑变量坐标m上作出x(m)和h(m)将m=0的垂直轴为轴翻褶成h(-m)
移位:
将h(-m)移位n即得h(n-m)当n为正整数时右移n位当n为负整数时左移n位
相乘:
再将h(n-m)和x(m)的相同m值的对应点值相乘
相加:
把以上所有对应点的乘积叠加起来即得y(n)值,依上法取n=,-2,-1,0,1,2,3,各值即可得全部y(n)值。
(2)、GEL文件的作用
GEL是修改变量的另一种方法,该方法使用一种扩展语言GEL来创建可修改变量的小窗口,GEL文件是一种类似于C语言的文件,它提供给用户一种配置管理和使用CCS高级能力的接口。
(3)、说明使用的GEL函数及功能
、menuitem"菜单名称"
dialogfuncName(paramName1"param1definition",paramName2"param2definition",......)
{
statements
}
paramName[1-6]使用的功能的参数名称
"param1definition"在GEL窗口中显示描写的参数名称,这个GEL函数的功能是提示你进行参数的输入。
、sliderparam_definition(minVal,maxVal,increment,pageIncrement,paramName)
{
statements
}
param_definition:
:
在slider中描述的参数描写
minVal:
参数规定的最低的数值参数为整数常数
maxVal:
参数规定的最高的数值参数为整数常数
increment:
滑块中相邻的两个数值之间的距离参数为整数常数
pageIncrement:
滑块中每次移动的长度参数为整数常数
paramName:
使用的功能的参数定义
这个函数的功能是利用生成的滑块来控制程序中的某个变量的数值。
变量的值随滑块指针的改变而改变
、说明自编GEL函数和程序变量的关联及功能
Ain()函数控制的是程序中的ain变量,而ain变量控制的是输出波形y轴上的值的大小
Sk()函数控制的是程序中的m变量,而m变量控制的是从第二个输入波形中取多少个点来作为初始数值进行运算
Zhy()函数控制的是程序中的n变量而n变量控制的是输出波形的位移量
(4)、程序的自编函数及其功能
processing1(int*input2,int*output2)
调用形式:
processing1(int*input2,int*output2)
参数解释:
intput2,output2为两个整型指针数组。
返回值解释:
返回了一个TREN,让主函数的while循环保持连续.
功能说明:
对输入的input2buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。
processing2(int*output2,int*output3)
调用形式:
processing2(int*output2,int*output3)
参数解释:
output2,output3为两个整型指针数组
返回值解释:
返回了一个TREN让主函数的while循环保持连续
功能说明:
对输出的output2buffer波形进行作n点移位,然后把生成的波形上的各点的值存入以OUTPUT3指针开始的一段地址空间中。
processing3(int*input1,int*output2,int*output4)
调用形式:
processing3(int*input1,int*output2,int*output4)
参数解释:
output2output4input1为三个整型指针数组。
返回值解释:
返回了一个TREN让主函数的while循环保持连续
功能说明:
对输入的input2buffer波形和输入的input1buffer作卷积和运算然后把生成的波形上的各点的值存入以OUTPUT4指针开始的一段地址空间中。
processing4(int*input2,int*output1)
调用形式:
processing4(int*input2,int*output1)
参数解释:
output1input2为两个整型指针数组
返回值解释:
返回了一个TREN让主函数的while循环保持连续
功能说明:
对输入的input2buffer波形截取m点,然后把生成的波形上的各点的值存入以OUTPUT1指针开始的一段地址空间中。
(5)、实现程序框图
4、实验内容与步骤
(1)如果你连接了TMS320VC5402DSK,要先把5402DSK上的194-BMST的五六腿置为OFF,其余六个腿置为ON,实验步骤如下:
双击桌面上的SetupCCSC50001.20图标,打开CC_Setup配置程序
在ImportConfiguration对话框中点击clearsystemconfiguration,选择Y清除CCS设置
在左面的列表框中单击在列表框“AvailableConfigurations”中加亮“ICETEK-5100USBEmulator”选项。
单击右边Addtosystemconfiguration按钮,把设置加入CCS_Setup中。
单击close,关闭ImportConfiguration对话框。
单击file菜单下save选项,保存设置。
退出设置程序可以进入CCS。
在安装目录相应位置的myprojects目录下创建dskvolume子目录。
从光盘“卷积实验”目录下拷贝所有文件到新建的文件夹。
从c:
\ti\c5400\dsk\lib目录中拷贝drv5402.lib和dsk5402.lib库文件,从c:
\ti\c5400\cgtools\lib目录中拷贝rts.lib库文件到新建的文件夹。
单击开始选单选择程序在C5402DSKDevelopmentTools组中,选择CCStudio图标,启动CodeComposerStudio或者单击桌面上CCStudio图标。
注意:
如果你在运行CCS时返回错误信息,请确认在安装了软件之后按照QuickStartGuide设置了CodeComposerStudio。
在CodeComposerStudio主界面中打开Project选单,选择New选项
在SaveNewProject对话框中选择刚刚建立的工作目录,在文件名编辑框中输入volume为项目名称建立工程项目文件volume.mak。
打开Project选单选择Addfiletoproject,在随后打开的窗口中选择volume.c,并按打开按钮。
打开Project选单,选择Addfiletopr