DSP实验指导书2812文档格式.docx
《DSP实验指导书2812文档格式.docx》由会员分享,可在线阅读,更多相关《DSP实验指导书2812文档格式.docx(42页珍藏版)》请在冰豆网上搜索。
随着科学技术的飞速发展,人们对控制模型、控制算法要求越来越高,传统意义上的处理器很难满足发展的需求,而数字信号处理器DSP经历了20多年的发展与普及,应用领域几乎涵盖了所有的行业:
通信、信息处理、自动控制、雷达、航空航天、医疗、日常消费品等。
德州仪器(TI)占据了整个DSP市场的50%左右,很多高校、研究所、公司大量采用TI的方案与芯片进行开发与研究。
DSP是一门理论与实践并重的技术,在成功掌握了理论知识的同时再配合做一些经典的DSP实验,从而加深对DSP软、硬件的理解与掌握,为今后从事独立的开发打下扎实的基础。
目前很多高校都已经开设了数字信号处理的课程,对普及与推广DSP做出了巨大的贡献。
本DSP开发平台,采用核心开发板+IO扩展底板+高级外设扩展板的逻辑架构。
以TI公司的TMS320VC5509A和TMS320F2812两种DSP芯片为中心,附加开发了多个功能模块,可以使实验者方便有效地完成各种常用的DSP开发实验。
2812开发板基于TI公司的处理器TMS320F2812设计而成。
TMS320F2812采用TI公司的最新281X系列的处理器核,内部带有ROM、FLASH、大容量的RAM和丰富的外部接口,具有体积小、速度快、使用简单、功能强大、功耗低、性能稳定、编程简单的特点,非常适合在工业控制场合使用。
5509开发板基于TI公司的处理器TMS320VC5509A设计而成。
TMS320VC5509A采用TI公司的最新的55X系列的处理器核,内部带有大容量的RAM和USB、SD接口等丰富的外设,具有功耗低,体积小、速度快、使用简单、功能强大、功耗低、性能稳定、编程简单的特点,并可用于进行图像处理。
非常适合在算法、多媒体处理、消费电子设备使用。
底板上外扩了很多通用接口如(串口、网路接口、RS485、和电机输出接口),为了方便用户用最快的时间掌握DSP的使用技巧,在硬件上使用了多种总线接口和多种外部通讯方式的并配备了,LED、工业用LCD显示屏,并通过扩展插槽可以扩展图像处理,数字信号源等多种进阶外设,这样就使用户以最快的速度,试验、学习、设计,并把这些处理技巧熟练的嵌入到产品中,使用户迅速的成为硬件的设计高手,我们在硬件设计中以工业现场的硬件要求来提供方案,除电源部分在工业现场需要加入保护措施外,对于板级信号,我们使用了信号完整性分析技术、电磁兼容技术,在关键位置使用了电感、电容等电磁兼容器件,这样就能更容易把我们的经验使用到每一个用户的产品中。
在软件上,提供了通用的软件的模块,并在此基础上编写了各种接口的软件试验程序。
注释详尽,有利于初学者入门,除了已设计好的实验之外,实验者还可以发挥创造性,充分利用实验箱的资源进行其它实验。
对于DSP高手来说也具备很大的发挥余地。
最后真诚的欢迎您使用迪阳正泰科技发展公司产品并提出宝贵意见。
由于任务重、时间紧,作者水平有限,书中难免存在一些小的错误,恳请广大师生批评指正。
1.1基本参数
◆TMS320F2812:
32位DSP2000系列内核,工作频率150M。
◆片上存储器:
FLASH128KX16位
SRAM18KX16位
BOOTROM4KX16位
OPTROM1KX16位
◆片上外设:
PWM12路
QEP6通道
ADC2X8通道,12位,80ns转换时间,0--3V输入量程
SCI异步串口2通道
MCBPS同步串口1通道
CAN1通道
SPI同步串口1通道
◆外扩SRAM,最大容量512KX16位,基本配置64KX16位
◆外扩FLASH,最大容量512X16位,基本配置256X16位
◆外扩CPLD,为Xilinx9500系列,可以选配95XL36或95XL72
◆外扩以太网10M接口,兼容NE2000
◆外扩20M以上的视频高速AD和高速DA
◆外扩图形LCD接口
◆外扩直流电机,步进电机各一个
◆外扩4×
4矩阵键盘
◆外扩双路函数信号发生器
◆外扩八段数码管,交通灯,蜂鸣器
◆外扩USB接口,主从方式可以自由转换。
◆外扩1路RS232接口,1路RS485接口
◆提供上电复位、手动复位、电源检测、看门狗,系统可靠,稳定
◆标准的JTAG接口,方便调试
◆标准化的扩展总线
1.2使用方法
1.电源
本实验箱内部自带变压器,使用时不需另配低压电源,可直接用普通三相插头接入220V电源。
接上电源后,由电源模块输出±
12V,±
5V,3.3V,分别送至实验箱的各个模块。
另外为方便单独使用,两个主控板上都设有独立的电源输入端口,可以接入5V的直流电源。
2.仿真器接口
在做实验时,需要一个DSP仿真器,把在计算机上编译并生成的执行代码下载到5509或2812芯片上。
仿真器有两端接口,其中一端与计算机的并行口或USB口相连,这取决于仿真器的类型;
另一端与DSP芯片的JTAG接口相连,这是一个14针的接口,在两块主控板上都可以找到。
仿真器连接好后才能对主控板上的DSP芯片进行读写控制。
4.计算机的配置
DSP实验中的代码编写,下载仿真和程序调试都必须在计算机上完成。
计算机上需要安装DSP集成开发环境软件CCS(使用2.2或3.1版本)。
计算机应具备最少32M内存,100M硬盘空间和奔腾处理器,显示器分辨率不能低于800*600。
另外,部分模块的实验还要求计算机配有标准的USB接口,DB9串行接口以及RJ-45网卡接口。
5.其它配件
包括USB连接线,串行口连接线,网线,排线等。
第二章算法实验
2.1基础实验
一、实验目的
1.掌握CCS实验环境的使用;
2.掌握用C语言编写DSP程序的方法。
二、实验设备
1.一台装有CCS软件的计算机;
2.TMS320F2812主控板;
3.DSP硬件仿真器。
三、实验原理
浮点数的表达和计算是进行数字信号处理的基本知识;
产生正弦信号是数字信号处理中经常用到的运算;
C语言是现代数字信号处理表达的基础语言和通用语言。
写实现程序时需要注意两点:
(1)浮点数的范围及存储格式;
(2)DSP的C语言与ANSIC语言的区别。
四、实验步骤
1. 打开CCS并熟悉其界面;
2. 在CCS环境中打开本实验的工程(Example_bASe.pjt),编译并重建.out输出文件,然后通过仿真器把执行代码下载到DSP芯片中;
3.把X0,Y0和Z0添加到Watch窗口中作为观察对象(选中变量名,单击鼠标右键,在弹出菜单中选择“AddWatchWindow”命令);
4.选择view->
graph->
time/frequency… 。
设置对话框中的参数:
其中“StartAddress”设为“sin_value”,“Acquisitionbuffersize”和“DisplayDatasize”都设为“100”,并且把“DSPDataType”设为“32-bitfloatingpoint”,
设置好后观察信号序列的波形(sin函数,如图);
5.单击运行;
6.观察三个变量从初始化到运算结束整个过程中的变化;
观察正弦波形从初始化到运算结束整个过程中的变化;
7.修改输入序列的长度或初始值,重复上述过程。
五、思考题
1. 试用C语言编写实现其他数学运算的程序;
2. 考虑如何实现其他波形信号的产生。
2.2卷积计算
1.掌握卷积运算的基本原理;
2.DSP实验箱的TMS320F2812主控板;
卷积是数字信号处理中经常用到的运算。
其基本的表达式为:
(1)序列数组长度的分配,尤其是输出数组y(n)要有足够的长度;
(2)循环体中变量的位置,即n和m的关系。
1.复习卷积的基本原理;
2.在CCS环境中打开本实验的工程(Example_convolve.pjt),编译并重建.out输出文件,然后通过仿真器把执行代码下载到DSP芯片中;
3.单击运行;
4.观察三个数组从初始化到卷积运算结束整个过程中的变化(可单击变量名前的“+”号把数组展开);
4.修改输入序列的长度或初始值,重复上述过程,观察卷积结果。
1. 试用汇编语言编写实现卷积运算的程序;
2. 考虑如何实现复数的卷积运算。
2.3相关运算
1. 掌握相关系数的估计方法;
2. 掌握用C语言编写DSP程序的方法。
1.一台装有CCS软件的计算机;
相关系数是数字信号处理中的一个重要概念,包括自相关系数和互相关系数。
它们的定义是:
,k为相关系数的阶数;
和
。
根据相关系数的定义,需要求输入信号的期望值,这在实际上是不可能实现的。
因此,通常只根据一定长度的已知输入信号求相关系数的一个估计,这时采用以下的公式:
(设N为已知信号的长度)
和
既然是估计值,那么就存在一致性和有效性的问题,可以证明上面两式的估计是有偏估计,而以下的则是无偏估计:
(无偏估计),
(无偏估计)
本实验在上面公式的基础上实现各阶相关系数的估计。
1. 在CCS环境中打开本实验的工程(Example_about.pjt),编译并重建.out输出文件,然后通过仿真器把执行代码下载到DSP芯片中;
2. 在Watch窗口中添加相关系数数组r作为观察对象;
3. 运行程序,观察数据值的变化;
4. 修改估计模式mode,重复上述过程,观察有偏估计与无偏估计的差别;
5. 修改输入数组x[]和y[]的初始赋值函数、参与估计的数组长度、输出数组的长度等参数,重复上述过程,观察运行结果;
1. 试证明上面给出的第二组相关系数估计公式的无偏性;
2. 在本实验程序的基础上,修改代码,实现自相关系数的估计;
3. 分析阶数对相关系数的影响。
2.4快速傅里叶变换(FFT)实现
1.掌握FFT算法的基本原理;
傅里叶变换是一种将信号从时域变换到频域的变换形式,是信号处理的重要分析工具。
离散傅里叶变换(DFT)是傅里叶变换在离散系统中的表示形式。
但是DFT的计算量非常大,FFT就是DFT的一种快速算法,FFT将DFT的N2步运算减少至(N/2)log2N步。
离散信号x(n)的傅里叶变换可以表示为
,
式中的WN称为蝶形因子,利用它的对称性和周期性可以减少运算量。
一般而言,FFT算法分为时间抽取(DIT)和频率抽取(DIF)两大类。
两者的区别是蝶形因子出现的位置不同,前者中蝶形因子出现在输入端,后者中出现在输出端。
本实验以时间抽取方法为例。
时间抽取FFT是将N点输入序列x(n)按照偶数项和奇数项分解为偶序列和奇序列。
偶序列为:
x(0),x
(2),x(4),…,x(N-2);
奇序列为:
x
(1),x(3),x(5),…,x(N-1)。
这样x(n)的N点DFT可写成:
考虑到WN的性质,即
因此有:
或者写成:
由于Y(k)与Z(k)的周期为N/2,并且利用WN的对称性和周期性,即:
可得:
对Y(k)与Z(k)继续以同样的方式分解下去,就可以使一个N点的DFT最终用一组2点的DFT来计算。
在基数为2的FFT中,总共有log2(N)级运算,每级中有N/2个2点FFT蝶形运算。
单个蝶形运算示意图如下:
以N=8为例,时间抽取FFT的信号流图如下:
从上图可以看出,输出序列是按自然顺序排列的,而输入序列的顺序则是“比特反转”方式排列的。
也就是说,将序号用二进制表示,然后将二进制数以相反方向排列,再以这个数作为序号。
如011变成110,那么第3个输入值和第六个输入值就要交换位置了。
本实验中采用了一种比较常用有效的方法完成这一步工作__雷德算法。
1. 以64点FFT的信号流图为例,理解FFT算法的过程;
2. 在CCS环境中打开本实验的工程(Example_fft.pjt),编译并重建.out输出文件,然后通过仿真器把执行代码下载到DSP芯片中;
3. 运行程序;
4. 选择view->
其中“StartAddress”设为“x_re”,“Acquisitionbuffersize”和“DisplayDatasize”都设为“64”,并且把“DSPDataType”设为“32-bitfloatingpoint”(如图),
设置好后观察输入信号序列的波形(单边指数函数,如图);
同样方法观察经DFT变换后的输出序列“y_re”的波形,“StartAddress”改为“y_re”,其余参数不变(如图);
5.在Watch窗口中添加i,j,k,m,n,a,b,c等变量,在Debug菜单中先“Restart”然后“Gomain”,单步运行程序,跟踪FFT算法的过程;
(可以跳过程序开始部分对各个数组的赋值代码,方法是在雷德算法的第一行代码前设置断点,然后先单击运行,待程序停在该断点后再单步执行后面的代码,见下图。
)
6. 修改N的值(应为2的整数次幂,如8,16,32等,最大不超过64),或者修改输入信号x的函数,如直流、正弦、三角等,观察程序运行结果。
注意观察图形时,数据块大小要相应更改为当前N值。
1. 分析本实验程序中完成位倒序排列的“雷德算法”的原理;
2. 思考如何实现实数序列的FFT,它在复数序列的算法基础上还能作哪些优化,从而进一步降低运算量和所需的存储空间。
2.6有限冲击响应滤波器(FIR)实现
1. 掌握FIR滤波器的原理和窗函数设计法;
1. 一台装有CCS软件的计算机;
数字滤波是DSP的最基本的应用领域之一。
对于许多应用来说,数字滤波一般具有如下的差分方程形式:
式中,X(n)为输入序列,Y(n)为输出序列,Ak和Bk为滤波器系数,N是滤波器的阶数。
若式中所有的Bk均为零,且通常把系数Ak记为hk, 则有:
上式就是FIR滤波器的差分方程了。
FIR滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。
它的单位脉冲响应h(n)是一个有限长序列。
由上面的方程可见,FIR滤波算法实际上是一种乘法累加运算,它不断地输入样本x(n),经延时(z–1),做乘法累加,再输出滤波结果y(n)。
要设计一个FIR滤波器就是要求出它的冲击响应系数h(n),设计方法主要有窗函数法和频率抽样法,本实验要求掌握窗函数法,这也是最基本的方法。
理想的低通滤波器的频率响应Hd(w)是一个矩形,这意味着它在时域上是无限长的序列,这在实际上是不可能实现的。
因此我们要采取某种方法截断Hd(n),可以用一个有限长度的窗函数序列w(n)与之相乘。
这个窗函数序列的形状和长度都会对最后系统的频率响应特性产生影响,因此对窗函数的分析和选择是设计FIR滤波器的关键问题所在。
本实验举了五种常用的窗函数为例,通过设置参数可以得到加上不同窗后的冲击响应序列h(n),并且可以观察到其幅频响应图。
关于根据给定频率要求进行FIR滤波器设计的详细原理,以及在求得符合要求的h(n)后如何对输入信号序列进行滤波,请读者参考数字信号处理的有关资料。
1. 复习有关FIR滤波器的原理;
2. 在CCS环境中打开本实验的工程(Example_fir.pjt),编译并重建.out输出文件,然后通过仿真器把执行代码下载到DSP芯片中;
3. 阅读源代码,记下各种窗函数的公式;
4. 运行程序 (执行需要一定时间);
5. 选择view->
其中“StartAddress”设为“hd”,“Acquisitionbuffersize”和“DisplayDatasize”都设为“21”(因为源程序中n=21),并且把“DSPDataType”设为“32-bitfloatingpoint”,设置好后观察理想冲击响应序列的波形示意图,可与公式对照分析;
5.观察其它序列的波形示意图,包括所用窗函数w,加窗后响应序列h和输出对数幅频响应db的图形,这时的“StartAddress”应分别设为“w”和“h”和“db”,其中观察前两者时数据块大小设为“21”(同n值),观察“db”时数据块大小设为“300”(同l值),所观察到的图形应大致如下面五组图所示;
Ø
m=1时:
矩形窗函数(w)
加窗后序列(h)
加窗后的幅频响应db
m=2时:
三角窗函数(w)
加窗后序列(h)
加窗后的幅频响应db
m=3时:
汉宁窗函数w
加窗后序列h
加窗后的幅频响应db
m=4时:
汉明窗函数w
m=5时:
布莱克曼窗函数w
7. 从1-5依次修改m的值,按上面步骤观察各图形。
1. 总结窗函数法的设计步骤和关键问题。
§
2.7无限冲击响应滤波器(IIR)实现
1.掌握IIR滤波器的原理与设计方法;
1. 一台装有CCS软件的计算机;
数字滤波器的输入x[k]和输出y[k]之间的关系可以用如下常系数线性差分方程及其z变换描述:
系统的转移函数为:
设计一个IIR滤波器就是要根据所给定的指标确定上式中的分子和分母系数。
设计IIR数字滤波器可以先设计一个合适的模拟滤波器,然后变换成满足给定指标的数字滤波器。
这种方法很简便,因为模拟滤波器有多种设计方法,如巴特沃思型滤波器、切比雪夫型滤波器、椭圆函数型滤波器等,并且已经具有很多简单而又现成的设计公式。
采用这种方法需要把s平面映射到z平面,使模拟系统函数H(s)变换成所需的数字滤波器的系统函数H(z)。
映射方法主要有冲激响应不变法、阶跃响应不变法和双线性变换法。
前两种方法会因为多值映射关系产生混叠失真,双线性变换法克服了这一缺点。
双线性变换法的映射关系式是:
本实验采用的是巴特沃思型滤波器,并用双线性变换法转换成数字滤波器。
1.在CCS环境中打开本实验的工程(Example_iir.pjt),编译并重建.out输出文件,然后通过仿真器把执行代码下载到DSP芯片中;
2.运行程序;
3.在Watch窗口观察系统函数H(z)的分子和分母系数ptr_b,ptr_a。
写出该滤波器的系统函数。
4.选择view->
其中“StartAddress”设为“hwdb”,“Acquisitionbuffersize”和“DisplayDatasize”都设为“50”,并且把“DSPDataType”设为“32-bitfloatingpoint”,观察幅频响应的波形(如图);
5.修改滤波器的设计参量fp,fr,fs,ap,ar等,重复上述过程,观察设计结果。
(其参数值均在编写的程序中请注意按程序修改)
1.总结巴特沃思型滤波器的设计方法。
2.8自适应滤波器(LMS)实现
1.掌握自适应滤波器的原理;
2.掌握LMS算法的原理;
3.掌握用C语言编写DSP程序的方法。
1. 一台装有CCS软件的计算机;
图1
(图1)为自适应滤波器结构的一般形式,图中x(k)为输入信号,通过参数可调的数字滤波器后产生输出信号y(k),将输出信号y(k)与标准信号(或者为期望信号)d(k)进行比较,得到误差信号e(k)。
e(k)和x(k)通过自适应算法对滤波器的参数进行调整,调整的目的是使误差信号
最小。
反复进行上面过程,使滤波器逐渐掌握了输入信号和噪声的统计规律,并以此为根据自动调整自己的参数,从而达到最佳的滤波效果。
一旦输入信号的统计规律发生了变化,滤波器能够自动跟上输入信号的变化,自动调整滤波器的参数,这就是自适应滤波的原理。
自适应滤波器的结构可以采用FIR型或IIR型,由于IIR滤波器存在稳定性问题,因此一般采用FIR滤波器作为自适应滤波器的结构。
自适应FIR滤波器结构又可分为三种结构类型:
横向型结构(TransversalStructure)、