DSP实验报告解读.docx
- 文档编号:10152257
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:32
- 大小:1.34MB
DSP实验报告解读.docx
《DSP实验报告解读.docx》由会员分享,可在线阅读,更多相关《DSP实验报告解读.docx(32页珍藏版)》请在冰豆网上搜索。
DSP实验报告解读
[《DSP原理及应用》课程实验报告]
(软、硬件实验)
实验名称:
[《DSP原理及应用》实验]
专业班级:
[]
学生姓名:
[]
学号:
[]
指导教师:
[]
完成时间:
[]
目录
第一部分.基于DSP系统的实验1
实验3.1:
指示灯实验1
实验3.2:
DSP的定时器4
实验3.5单路,多路模数转换(AD)6
第二部分.DSP算法实验15
实验5.1:
有限冲击响应滤波器(FIR)算法实验15
实验5.2:
无限冲激响应滤波器(IIR)算法20
实验5.3:
快速傅立叶变换(FFT)算法24
第一部分.基于DSP系统的实验
实验3.1:
指示灯实验
一.实验目的
1.了解ICETEK–F2812-A评估板在TMS320F2812DSP外部扩展存储空间上的扩展。
2.了解ICETEK–F2812-A评估板上指示灯扩展原理。
1.学习在C语言中使用扩展的控制寄存器的方法。
二.实验设备
计算机,ICETEK-F2812-A实验箱(或ICETEK仿真器+ICETEK–F2812-A系统板+相关连线及电源)。
三.实验原理
1.TMS320F2812DSP的存储器扩展接口
存储器扩展接口是DSP扩展片外资源的主要接口,它提供了一组控制信号和地址、数据线,可以扩展各类存储器和存储器、寄存器映射的外设。
-ICETEK–F2812-A评估板在扩展接口上除了扩展了片外SRAM外,还扩展了指示灯、DIP开关和D/A设备。
具体扩展地址如下:
C0002-C0003h:
D/A转换控制寄存器
C0001h:
板上DIP开关控制寄存器
C0000h:
板上指示灯控制寄存器
详细说明见第一部分表1.7。
-与ICETEK–F2812-A评估板连接的ICETEK-CTR显示控制模块也使用扩展空间控制主要设备:
108000-108004h:
读-键盘扫描值,写-液晶控制寄存器
108002-108002h:
液晶辅助控制寄存器
2.指示灯扩展原理
3.实验程序流程图
四.实验步骤
1.实验准备
连接实验设备:
请参看本书第三部分、第一章、二。
关闭实验箱上扩展模块和信号源电源开关。
2.设置CodeComposerStudio3.3在硬件仿真(Emulator)方式下运行
请参看本书第三部分、第一章、四、2。
3.启动CodeComposerStudio3.3
请参看本书第三部分、第一章、五、2。
选择菜单Debug→ResetCPU。
4.打开工程文件
工程文件为:
C:
\ICETEK\F2812\DSP281x_examples\Lab0301-LED\LED.pjt
打开源程序LED.c阅读程序,理解程序内容。
5.编译、下载程序。
6.运行程序,观察结果。
7.退出CCS
请参看本书第三部分、第一章、六。
五.实验结果
六.问题与思考
ICETEK–F2812-A评估板上的指示灯控制寄存器是可读可写的,请问用什么办法可以回读指示灯状态?
实验3.2:
DSP的定时器
一.实验目的
1.通过实验熟悉F2812A的定时器;
2.掌握F2812A定时器的控制方法;
3.掌握F2812A的中断结构和对中断的处理流程;
4.学会C语言中断程序设计,以及运用中断程序控制程序流程。
二.实验设备
计算机,ICETEK-F2812-A实验箱(或ICETEK仿真器+ICETEK–F2812-A系统板+相关连线及电源)。
三.实验原理
1.通用定时器介绍及其控制方法(详见spru078a.pdf)
TMS320F2812A内部有三个32位通用定时器(TIMER0/1/2),定时器1和2被保留给实时操作系统(DSPBIOS)用,只有定时器0可以提供给用户使用。
2.中断响应过程(详见spru078a.pdf)
a.接受中断请求。
必须由软件中断(从程序代码)或硬件中断(从一个引脚或一个基于芯片的设备)提出请求去暂停当前主程序的执行。
b.响应中断。
必须能够响应中断请求。
如果中断是可屏蔽的,则必须满足一定的条件,按照一定的顺序去执行。
而对于非可屏蔽中断和软件中断,会立即作出响应。
c.准备执行中断服务程序并保存寄存器的值。
d.执行中断服务子程序。
调用相应得中断服务程序ISR,进入预先规定的向量地址,并且执行已写好的ISR。
3.中断类别
可屏蔽中断:
这些中断可以用软件加以屏蔽或解除屏蔽。
不可屏蔽中断:
这些中断不能够被屏蔽,将立即响应该类中断并转入相应的子程序去执
行。
所有软件调用的中断都属于该类中断。
4.中断的优先级
如果多个中断被同时激发,将按照他们的中断优先级来提供服务。
中断优先级是芯片内部已定义好的,不可修改。
4.实验程序流程图
5.实验程序分析
本实验设计的程序是在上实验3.1基础上修改得来,由于实验3.1控制指示灯闪烁的延时控制是用循环计算方法得到的,延时不精确也不均匀,采用中断方式可以实现指示灯的定时闪烁,时间更加准确。
四.实验步骤
1.实验准备
连接实验设备:
请参看本书第三部分、第一章、二。
关闭实验箱上扩展模块和信号源电源开关。
2.设置CodeComposerStudio3.3在硬件仿真(Emulator)方式下运行
请参看本书第三部分、第一章、四、2。
3.启动CodeComposerStudio3.3
请参看本书第三部分、第一章、五、2。
选择菜单Debug→ResetCPU。
4.打开工程文件
打开菜单“Project”的“Open”项;选择C:
\ICETEK\F2812\DSP281x_examples\Lab0303-Timer目录中的“Timer.pjt”。
在项目浏览器中,双击time.c,激活time.c文件,浏览该文件的内容,理解各语句作用。
5.编译、下载程序。
6.运行程序,观察结果。
7.改变“CpuTimer0Regs.PRD.all=0xffff;”函数里的值;重复步骤5,6观察实验现象。
8.退出CCS
五.实验结果
-指示灯在定时器的定时中断中按照设计定时闪烁。
-使用定时器和中断服务程序可以完成许多需要定时完成的任务,比如DSP定时启动A/D转换,日常生活中的计时器计数、空调的定时启动和关闭等。
-在调试程序时,有时需要指示程序工作的状态,可以利用指示灯的闪烁来达到,指示灯灵活的闪烁方式可表达多种状态信息。
实验3.5单路,多路模数转换(AD)
一.实验目的
1.通过实验熟悉F2812A的定时器。
2.掌握F2812A片内AD的控制方法。
二.实验设备
计算机,ICETEK-F2812-A实验箱(或ICETEK仿真器+ICETEK–F2812-A系统板+相关连线及电源)。
三.实验原理
1.TMS320F2812A芯片自带模数转换模块特性
-12位模数转换模块ADC,快速转换时间运行在25mhz,ADC时钟或12.5MSPS。
-16个模拟输入通道(AIN0—AIN15)。
-内置双采样-保持器
-采样幅度:
0-3v,切记输入ad的信号不要超过这个范围,否则会烧坏2812芯片的。
2.模数模块介绍
ADC模块有16个通道,可配置为两个独立的8通道模块以方便为事件管理器A和B服务。
两个独立的8通道模块可以级连组成16通道模块。
虽然有多个输入通道和两个序列器,但在ADC内部只有一个转换器,同一时刻只有1路ad进行转换数据。
3.模数转换的程序控制
模数转换相对于计算机来说是一个较为缓慢的过程。
一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。
设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。
关于TMS320F2812ADSP芯片内的A/D转换器的详细结构和控制方法,请参见文档spru060a.pdf。
4.实验程序流程图
四.实验步骤
1.实验准备
(1)连接实验设备:
请参看本书第三部分、第一章、二。
(2)准备信号源进行AD输入。
①取出2根实验箱附带的信号线(如右图,两端均为双声道语音插头)。
②用1根信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCIN0”插座注意插头要插牢、到底。
这样,信号源波形输出A的输出波形即可送到ICETEK–F2812-A板的AD输入通道0。
③用1根信号线连接实验箱左侧信号源的波形输出B端口和“A/D输入”模块的“ADCIN1”插座注意插头要插牢、到底。
这样,信号源波形输出B的输出波形即可送到ICETEK–F2812-A板的AD输入通道1。
图3.2.3.3
④设置波形输出A:
-向内侧按波形频率选择旋钮,直到标有正弦波的指示灯点亮。
-上下调节波形频率选择旋钮,直到标有1KHz-10KHz的指示灯点亮。
-调节幅值调整旋钮,将波形输出A的幅值调到最大。
⑤设置波形输出B:
-向内侧按波形频率选择旋钮,直到标有三角波的指示灯点亮。
-上下调节波形频率选择旋钮,直到标有1KHz-10KHz的指示灯点亮。
-调节幅值调整旋钮,将波形输出B的幅值调到最大。
2.设置CodeComposerStudio3.3在硬件仿真(Emulator)方式下运行
请参看本书第三部分、第一章、四、2。
3.启动CodeComposerStudio3.3
请参看本书第三部分、第一章、五、2。
选择菜单Debug→ResetCPU。
4.打开工程文件
-工程目录:
C:
\ICETEK\F2812\DSP281x_examples\Lab0305-AD\ADC.pjt。
-在项目浏览器中,双击adc.c,打开adc.c文件,浏览该文件内容,理解各语句作用。
5.编译、下载程序。
6.打开观察窗口
-选择菜单“View”、“Graph”、“Time/Frequency…”做如下设置,然后单击“OK”按钮;
图3.2.3.4观察窗口设置1
-选择菜单“View”、“Graph”、“Time/Frequency…”做如下设置,然后单击“OK”按钮;
图3.2.3.4观察窗口设置2
-在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
通过设置,我们打开了两个图形窗口观察两个通道模数转换的结果。
7.设置信号源
由于模数输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在0-3V之间。
必须用示波器检测信号范围,保证最小值0V最大值3V,否则容易损坏DSP芯片的模数采集模块。
8.运行程序观察结果
-单击“Debug”菜单,选择“Real–timeMode”,然后选择ContinuousRefresh再单击“Run”项,运行程序;
-停止运行,观察“ADCIN0”、“ADCIN1”窗口中的图形显示;
-适当改变信号源,按F5健再次运行,停止后观察图形窗口中的显示。
注意:
输入信号的频率不能大于10KHz,否则会引起混叠失真,而无法观察到波形,如果有兴趣,可以试着做一下,观察采样失真后的图形。
9.选择菜单File→workspace→saveworkspacsAs…,输入文件名SY.wks。
10.退出CCS
请参看本书第三部分、第一章、六。
五.实验结果
10-100Hz
100-1KHz
六.问题与思考
编写一个程序,实现下面的内容:
要求:
在触发1(定时器下溢)来到时开始1个自动转换,触发2(定时器周期匹配)来到时开始另外1个自动转换。
触发事件1、2在时间上是差25us,由事件管理器A提供。
这里仅用到SEQ1。
第二部分.DSP算法实验
实验5.1:
有限冲击响应滤波器(FIR)算法实验
一.实验目的
1.握用窗函数法设计FIR数字滤波器的原理和方法。
2.熟悉线性相位FIR数字滤波器特性。
3.了解各种窗函数对滤波器特性的影响。
二.实验设备
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio3.3软件。
三.实验原理
1.有限冲击响应数字滤波器的基础理论(请参考相关书籍)。
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
3.数字滤波器系数的确定方法。
4.根据要求设计低通FIR滤波器
要求:
通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75dB,采样频率50kHz。
设计:
-过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz
-采样频率:
f1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16kHz
Ω1=2πf1/fs=0.64π
-理想低通滤波器脉冲响应:
h1[n]=sin(nΩ1)/n/π=sin(0.64πn)/n/π
-根据要求,选择布莱克曼窗,窗函数长度为:
N=5.98fs/过渡带宽度=5.98*50/12=24.9
-选择N=25,窗函数为:
w[n]=0.42+0.5cos(2πn/24)+0.8cos(4πn/24)
-滤波器脉冲响应为:
h[n]=h1[n]w[n]|n|≤12
h[n]=0|n|>12
-根据上面计算,各式计算出h[n],然后将脉冲响应值移位为因果序列。
-完成的滤波器的差分方程为:
y[n]=-0.001x[n-2]-0.002x[n-3]-0.002x[n-4]+0.01x[n-5]
-0.009x[n-6]-0.018x[n-7]-0.049x[n-8]-0.02x[n-9]
+0.11x[n-10]+0.28x[n-11]+0.64x[n-12]
+0.28x[n-13]-0.11x[n-14]-0.02x[n-15]
+0.049x[n-16]-0.018x[n-17]-0.009x[n-18]+0.01x[n-19]
-0.002x[n-20]-0.002x[n-21]+0.001x[n-22]
5.程序流程图:
四.实验步骤
1.实验准备
-设置软件仿真模式,参看:
第三部分、四、1。
-启动CCS,参看:
第三部分、五、1。
2.打开工程,浏览程序:
工程目录为C:
\ICETEK\F2812\DSP281x_examples\lab0501-FIR
3.编译并下载程序
4.打开观察窗口
*选择菜单View->Graph->Time/Frequency…,进行如下设置:
图3.2.5.1观察窗口设置1
*选择菜单View->Graph->Time/Frequency…,进行如下设置:
图3.2.5.2观察窗口设置2
在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
5.设置断点
在有注释“/*请在此句上设置软件断点*/”的语句设置软件断点。
6.运行并观察结果
⑴选择“Debug”菜单的“RUN”项,或按F12键运行程序。
⑵观察“fin”、“fout”窗口中时域图形;观察滤波效果。
⑶鼠标右键单击“Input”和“Output”窗口,选择“Properties…”项,设置“DisplayType”为“FFTMagitude”,再单击“OK”按钮结束设置。
⑷观察“Input”、“Output”窗口中频域图形;理解滤波效果。
注意:
由于实验运算复杂,需要等一会才能看到运行完结果。
7.退出CCS
请参看本书第三部分、第一章、六。
五.实验结果
输入波形为一个低频率的正弦波与一个高频的正弦波叠加而成。
通过观察频域和时域图,得知:
输入波形中的低频波形通过了滤波器,而高频部分则大部分被滤除。
六.问题与思考
试选用合适的高通滤波参数滤掉实验的输入波形中的低频信号。
实验5.2:
无限冲激响应滤波器(IIR)算法
一.实验目的
1.掌握设计IIR数字滤波器的原理和方法。
2.熟悉IIR数字滤波器特性。
3.了解IIR数字滤波器的设计方法。
二.实验设备
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio3.3软件。
三.实验原理
1.无限冲激响应数字滤波器的基础理论。
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
3.数字滤波器系数的确定方法。
4.根据要求设计低通IIR滤波器
要求:
低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。
设计:
-确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。
模拟边缘频率为:
fp1=1000Hz,fs1=12000Hz
阻带边缘衰减为:
-20logδs=30dB
-用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。
Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度
Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度
-计算预扭曲模拟频率以避免双线性变换带来的失真。
由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒。
wp1=2fstan(Ωp1/2)=6316.5弧度/秒
ws1=2fstan(Ωs1/2)=794727.2弧度/秒
-由已给定的阻带衰减-20logδs确定阻带边缘增益δs。
因为-20logδs=30,所以logδs=-30/20,δs=0.03162
-计算所需滤波器的阶数:
因此,一阶巴特沃斯滤波器就足以满足要求。
-一阶模拟巴特沃斯滤波器的传输函数为:
H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)
由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:
因此,差分方程为:
y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]
5.程序流程图:
四.实验步骤
1.实验准备
-设置软件仿真模式,参看:
第三部分、四、1。
-启动CCS,参看:
第三部分、五、1。
2.打开工程,浏览程序,工程目录为C:
\ICETEK\F2812\DSP281x_examples\lab0502-iir\iir.pjt
3.编译并下载程序
4.打开观察窗口:
*选择菜单View->Graph->Time/Frequency…,进行如下设置:
图3.2.5.4观察窗口设置1
*选择菜单View->Graph->Time/Frequency…,进行如下设置:
图3.2.5.5观察窗口设置2
5.清除显示:
在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。
6.设置断点:
在程序iir.c中有注释“/*请在此句上设置软件断点*/”的语句上设置软件断点。
7.运行并观察结果
⑴选择“Debug”菜单的“RUN”项,或按F5键运行程序。
⑵观察“IIR”窗口中时域图形;观察滤波效果。
注意:
由于实验运算复杂,需要等一会才能看到运行完结果。
8.退出CCS
请参看本书第三部分、第一章、六。
五.实验结果
输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成。
如图:
通过观察频域和时域图,得知:
输入波形中的低频波形通过了滤波器,而高频部分则被衰减。
六.问题与思考
试微调(±0.0001)改变程序中fU的取值,观察步长因子μ在自适应算法中所起的作用。
实验5.3:
快速傅立叶变换(FFT)算法
一.实验目的
1.掌握用窗函数法设计FFT快速傅里叶的原理和方法;
2.熟悉FFT快速傅里叶特性;
3.了解各种窗函数对快速傅里叶特性的影响。
二.实验设备
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio3.3软件。
三.实验原理
1.FFT的原理和参数生成公式
公式
(1)FFT运算公式
FFT并不是一种新的变换,它是离散傅立叶变换(DFT)的一种快速算法。
由于我们在计算DFT时一次复数乘法需用四次实数乘法和二次实数加法;一次复数加法则需二次实数加法。
每运算一个X(k)需要4N次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。
所以整个DFT运算总共需要4N^2次实数乘法和N*2(2N-1)=2N(2N-1)次实数加法。
如此一来,计算时乘法次数和加法次数都是和N^2成正比的,当N很大时,运算量是可观的,因而需要改进对DFT的算法减少运算速度。
根据傅立叶变换的对称性和周期性,我们可以将DFT运算中有些项合并。
我们先设序列长度为N=2^L,L为整数。
将N=2^L的序列x(n)(n=0,1,……,N-1),按N的奇偶分成两组,也就是说我们将一个N点的DFT分解成两个N/2点的DFT,他们又从新组合成一个如下式所表达的N点DFT:
一般来说,输入被假定为连续的。
当输入为纯粹的实数的时候,我们就可以利用左右对
称的特性更好的计算DFT。
我们称这样的RFFT优化算法是包装算法:
首先2N点实数的连续输入称为“进包”。
其次N点的FFT被连续被运行。
最后作为结果产生的N点的合成输出是“打开”成为最初的与DFT相符合的2N点输入。
使用这战略,我们可以划分FFT的大小,它有一半花费在包装输入O(N)的操作和打开输出上。
这样的RFFT算法和一般的FFT算法同样迅速,计算速度几乎都达到了两次DFT的连续输入。
下列一部分将描述更多的在TMS320C54x上算法和运行的细节。
5.程序流程图:
四.实验步骤
1.实验准备
-设置软件仿真模式,参看:
第三部分、四、1。
-启动CCS,参看:
第三部分、五、1。
2.打开工程,浏览程序,工程目录为C:
\ICETEK\F2812\DSP281x_examples\lab0503-FFT
3.编译并下载程序
4.打开观察窗口:
选择菜单View->Graph->Time/Frequency…进行如下图所示设置。
图3.2.5.7观察窗口设置1
选择菜单View->Graph->Time/Frequency…进行如下图所示设置。
图3.2.5.8观察窗口设置2
选择菜单View->Graph->Time/Frequency…进行如下图所示设置。
图3.2.5.9观察窗口设置3
5.清除显示:
在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。
6.设置断点:
在程序FFT.c中有注释“breakpoint”的语句上设置软件断点。
7.运行并观察结果
⑴选择“Debug”菜单的“Animate”项,或按F12键运行程序。
⑵观察“FFT”窗口中时域和频域图形。
注意:
由于实验运算复杂,需要等一会才能看到运行完结果。
8.退出CCS
请参看本书第三部分、第一章、六。
五.实验结果
图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 报告 解读