DSP大作业Word文档格式.docx
《DSP大作业Word文档格式.docx》由会员分享,可在线阅读,更多相关《DSP大作业Word文档格式.docx(27页珍藏版)》请在冰豆网上搜索。
具体工作包括:
对IIR数字滤波器的基本理论进行分析和探讨。
应用DSP集成开发环境调试程序,用TMS320F2812来实现IIR数字滤波。
通过硬件液晶显示模块验证试验结果,并对相关问题进行分析。
关键词:
数字滤波器;
DSP;
TMS320F2812;
无限冲激响应滤波器(IIR)。
引言:
随着数字化飞速发展,数字信号处理技术受到了人们的广泛关注,其理论及算法随着计算机技术和微电子技术的发展得到飞速发展,被广泛应用于语音图像处理、数字通信、谱分析、模式识别、自动控制等领域。
数字信号处理由于运算速度快,具有可编程的特性和接口灵活的特点,使得它在许多电子产品的研制、开发和应用中,发挥着重要的作用。
采用DSP芯片来实现数字信号处理系统是当前发展的趋势。
利用模拟滤波器成熟的理论及其设计方法来设计IIR数字低通滤波器是常用的方法。
设计过程是:
按照数字滤波器技术指标要求一个过渡模拟低通滤波器,再按照一定的转换关系将转换成数字低通滤波器函数H(z)。
由此可见,设计的关键问题就是要找到这种关系,将s平面的转换成z平面上的H(z)。
将系统函数从s平面转换到z平面的方法有多种,但工程上常用的是脉冲响应不变法和双线性变换法。
在课题中我们采用双线性变换法设计IIR数字低通滤波器。
通过采用非线性频率压缩的方法,将整个模拟频率轴压缩到/T之间,再用
Z=转换到z平面上。
设,s=j,经过非线性频率压缩后用,=j表示,这里用正切变换实现频率压缩:
实现了s平面上整个虚轴完全压缩到平面上虚轴的/T之间的转换。
由上式得到:
j=
代人s=j,=j,得到:
再通过z=从平面转换到Z平面得到;
上面两式即称为双线性变换。
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
3.数字滤波器系数的确定方法。
4.根据要求设计低通IIR滤波器
要求:
低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减
为30dB,采样频率25kHz。
设计:
1确定数字低通滤波器的技术指标:
通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logsdB。
模拟边缘频率为:
fp1=1000Hz,fs1=12000Hz
阻带边缘衰减为:
-20logs=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弧度/秒
-由已给定的阻带衰减-20logs确定阻带边缘增益s。
因为-20logs=30,所以logs=-30/20,s=0.03162
计算所需滤波器的阶数:
n≥==0.714
因此,一阶巴特沃斯滤波器的传输函数为:
H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)
由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:
H(z)=
因此差分方程为:
y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]
软件流程图:
一、软件实现
1、实验准备
—设置软件仿真模式
—启动CCS
2、打开工程、浏览程序。
3、编译并下载程序
4、打开窗口:
*选择菜单View—>
Graph->
Time/Frequency…,进行如下设置
出现窗口如下:
选择菜单View->
Time/Frequency…,进行如下设置:
出现窗口:
5、清除显示:
在以上打开的窗口中单击鼠标右键,选择弹出菜单中“ClearDisplay”功能。
6、设置断点:
在程序iir.c中有注释“/*请在此句上设置软件断点*/”的语句上设置软件断点
7、运行并观察结果
(1)选择“Debug”菜单中的“RUN”项,或按F5键运行程序。
(2)观察“IIR”窗口中时域图形:
观察滤波效果。
实验结果:
本次调试过程中出现了不少问题,但在辅导老师的指导下顺利完成IIR数字滤波实验。
软件调试结果如下图示:
输入波形为一个低频率的正弦波与一个高频率的余弦波叠加而成。
如图:
通过观察频域和时域图,得知:
输入信号为低频和高频叠加的信号,输入波形中的低频波形通过了滤波器,而高频部分则被衰减,从而达到了滤波的效果。
但是可以看出滤波后还是存在微弱的高频部分,也就是高频部分没有完全虑去,这从时域图中也可以看出。
二、IIR算法硬件实现
原理:
1、AD原理(上面已论述)
2、模数转换工作过程
—模数转换模块接到启动转换信号后,按照设置进行相应通道的数据采样转换。
—经过一个采样时间的延迟后,将采样结果放入AD数据寄存器中保存。
—等待下一个启动信号。
3、模数转换的程序控制
模数转换相对于计算机来说是一个比较缓慢的过程。
一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。
设计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择合适的触发转换的手段,也要能及时的保存结果。
4、混频波形的产生
将接收到的两路AD采样信号进行相加,并对结果的幅度进行限制,从而产生混合后的输出波形。
实验中采用了同相位混频的方法,也可修改程序完成异相混频法。
5、IIR滤波器工作原理及参数的计算参见实验七
6、说明:
本程序在AD中断中对AD进行连续采样。
由于需要进行实时混频,所以交替转换通道0(ADCIN0)和通道1(ADCIN1)。
混频的波形通过IIR滤波器,得到输出波形。
DSP开发板框图:
硬件框图:
一个DSP系统可分为最小系统设计和外围接口设计,DSP在必要的工作环境下才能正常工作。
DSP最小系统包括复位、时钟和电源电路。
程序流程图:
实验准备:
(1)连接实验设备
(2)准备信号源进行AD输入
用信号线连接实验箱左侧信号源的波形输出A端口和“A/D输入”模块的“ADCINO”插座注意插头要插牢、到底。
这样,信号源波形输出A的输出波形即可送到ICETEK—F2812A板的AD输入通道0。
用同样方法连接实验箱左侧信号源的输出B端口和“A/D输入”的“ADCIN1”相连。
设置波形输出A:
—向内侧按波形频率选择按钮,直到标有正弦波的指示灯亮。
—上下调节波形频率选择按钮,直到标有100—1KHZ的指示灯亮。
—调节幅值调整旋钮,将波形输出A的幅值调到适当位置。
设置波形输出B:
—上下调节波形频率选择按钮,直到标有1K-10KHZ的指示灯亮。
注意:
由于模数输入信号未经任何转换就进入DSP,所以必须保证输入的模拟信号的幅度在0-3V之间。
必须用示波器检测信号范围,保证最小值0V最大值3V,否则容易损坏DSP芯片的模数采集模块。
2、设置CodeComposerStudio2.21在硬件仿真(Emulator)方式下运行请参看本书第三部分、第一章、四、2。
3、启动CodeComposerStudio2.21
选择菜单Debug->
ResetCPU。
4、打开工程文件
5、编译、下载程序,选择菜单Debug->
GoMain,使程序运行到main函数入口位置。
6、观察窗口
-打开源程序IIR.c,查看源代码。
7、运行程序观察结果
按CTR控制板的K6键,实现滤波显示,K7键实现混频显示,按K8实现键A、B两信
号源分屏显示。
8、观察动态效果,调节信号源输出,观察滤波器输出
改变信号源输入的波形、频率参数,观察动态效果。
9、退出CCS。
程序算法分析:
①低通滤波器系数可滤掉1k以上的波形,保留1k一下的波形
FloatHn[IIRNUMBER]={0.126,0.085,0.000,-0.103,-0.189,-0.216,-0.155,-0.000,
0.233,0.504,0.756,0.935,1.000,0.935,0.756,0.504,0.233,-0.000,-0.155,-0.216,-0.189,-0.103,0.000,0.085,0.126}
这里是滤波器窗函数的参数,窗函数的长度为25,所以这是25个参数。
另外这里以1KHz作为分界点,如果需要滤出别的频率,就需要再计算参数了。
②floatIIR()
{
floatfSum;
fSum=0;
for(j=0;
j<
FIRNUMBER;
j++)
{
fSum+=(fXn[j]*fHn[j]);
}
return(fSum);
}
这个是构造的IIR滤波器函数使用for循环输入波形与窗函数频域相乘,达到滤波效果。
硬件调试结果如下图(手机拍照):
按K8键:
A、B两信号源分别显示
按K7键:
混频显示
按K6键:
滤波显示
根据实验要求,改变信号源的频率:
这里高频信号为2KHz以上,所以需要选择相应的窗函数及滤波器。
按K6键:
结果分析:
K8图显示的是高频和低频两个信号的波形,K7是他们叠加在一起的波形,K6则是通过低通滤波器后的波形。
通过无限冲激响应滤波器(IIR)算法的硬件实现与软件实现IIR算法相对比,所设计的IIR滤波器收到较好的效果,完成了设计要求。
这是用手机拍的图片,不是很清晰,但大致可以看得出来效果。
另外如果将软件实现结果与硬件实现结果相比较,基本是差不多的。
其实看起来实现起来简单,但还是费了些功夫的,首先是对信号发生器的调试,接着是对程序的修改,程序里面配有各种滤波器,所以需要找出我们需要的那个滤出1KHz以上的滤波器,由于我们对程序设计不是很专业,所以经过了多次修改调试,才对程序的大致框架有了一定的了解,最终才好不容易把程序调出来了。
学完《DSP原理与应用》课程的理论和实验后,自己的心得体会:
不觉间《DSP原理与应用》这门课程已经结束了,连实验也都上完了。
授课老师给了我很深的印象还有影响。
感觉老是上课很负责,也很会讲课,总能带着我们把握课程的主题框架,很多抽象难懂的知识老是都是很生动的给我们讲解,老是真的是用心良苦
还记得第一节课老是