利用DSP实现数字滤波器.docx
- 文档编号:9924484
- 上传时间:2023-02-07
- 格式:DOCX
- 页数:17
- 大小:717.84KB
利用DSP实现数字滤波器.docx
《利用DSP实现数字滤波器.docx》由会员分享,可在线阅读,更多相关《利用DSP实现数字滤波器.docx(17页珍藏版)》请在冰豆网上搜索。
利用DSP实现数字滤波器
DSP技术与应用课程设计报告
课设名称:
利用DSP实现数字滤波器
学院:
信息工程
专业:
通信工程
班级:
2012159
学号:
201215925
姓名:
高亮
辅导教师:
李珺陈俊峰
时间:
2015年12月29
二.系统开发平台与环境.................................1
1.1CCS开发环境.........................................1
三.FIR滤波器设计过程...............................2
FIR滤波器根本理论.................................2
FIR滤波器的MATLAB实现...........................4
四FIR滤波器的DSP实现....................................10
五.CCS仿真图与结果.....................................12
六.总结..............................................14
七.参考文献..............................................15
一.绪论
在信号处理中,滤波占有十分重要的地位。
数字滤波是数字信号处理的根本方法。
数字滤波与模拟滤波相比有很多优点,它除了可防止模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。
DSP〔数字信号处理器〕与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用TMS320C54X作为DSP处理芯片,通过对其编程来实现FIR滤波器。
对数字滤波器而言,从实现方法上,有FIR滤波器和无限冲激响应(IIR)滤波器之分。
由于FIR滤波器只有零点,因此这一类系统不像IIR系统那样易取得比拟好的通带与阻带衰减特性。
但是FIR系统有自己突出的优点:
①系统总是稳定的;②易实现线性相位;③允许设计多通带(阻带)滤波器。
其中后两项是IIR系统不易实现的。
利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用已设计好的滤波器对常用信号进展滤波处理。
在TMS320C54x系统开发环境CCS〔CodeposerStudio〕下对FIR滤波器的DSP实现原理进展讨论。
利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。
二.系统开发平台与环境
1.1CCS开发环境
CCS提供了配置、建立、调试、跟踪和分析程序的工具,它便于实时、嵌入式信号处理程序的编制和测试,它能够加速开发进程,提高工作效率。
CCS提供了根本的代码生成工具,它们具有一系列的调试、分析能力。
CCS支持如如下图所示的开发周期的所有阶段。
三.FIR滤波器设计过程
3.1FIR滤波器根本理论
〔1〕FIR滤波器的特点
数字滤波器的功能,就是把输入序列通过一定的运算变换成输出序列。
它的实现方法有很多,其中比拟常用到的是无限长脉冲响应滤波器IIR和有限长脉冲响应滤波器FIR两种。
在计算量相等的情况下,IIR数字滤波器比FIR滤波器的幅频特性优越,频率选择性也好。
但是,它有着致命的缺点,其相位特性不好控制。
它的相位特性
是使频率产生严重的非线性的原因。
但是在图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。
在这方面FIR滤波器具有它独特的优点,设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数H(z)为
H(z)是
的(N-1)次多项式,它在z平面上有(N-1)个零点,原点z=0是(N-1)阶重极点。
因此,H(z)永远稳定,它可以在幅度特性随意设计的同时,保证准确、严格的线性相位。
〔2〕FIR滤波器的根本结构
数字滤波是将输入的信号序列,按规定的算法进展处理,从而得到所期望的输出序列,FIR滤波器的差分方程为:
对上式进展Z变换得到FIR滤波器的传递函数为:
由上式可以看出,H(z)是
的N-1次多项式,它在z平面内有N-1个零点,同时在原点处有N-1个重极点。
N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图中(a)、(b)两种结构。
图FIR滤波器的一般结构
因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定的。
另外,假如对h(n)提出一些约束条件,那么可以很容易地使H(z)具有线性相位,这在信号处理的很多领域是非常重要的。
FIR滤波器的设计任务,是要决定一个转移函数H(z),使它的频率响应满足给定的要求。
这里所说的要求,除了通带频率
、阻带频率与两个带上的最大和最小衰减
和
外,很重要的一条是保证H(z)具有线性相位。
〔3〕Chebyshev逼近法
窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性
的逼近。
由数值逼近理论可知,对某个函数f(x)的逼近一般有以下三种方法:
插值法(InterpolatingWay)
最小平方逼近法(LeastSquareApproachingWay)
一致逼近法(ConsistentApproachingWay)
切比雪夫最优一致逼近的根本思想是,对于给定区间[a,b]上的连续函数
,在所有n次多项式的集合
中,寻找一个多项式p(x),使它在[a,b]上对
的偏差和其它一切属于
的多项式p(x)对f(x)的偏差相比是最小的,即
切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最优一致逼近多项式的方法,就是有名的“交织点组定理〞。
切比雪夫逼近理论解决了p(x)的存在性、唯一性和如何构造等问题。
J.H.McClellan、T.W.Parks、L.R.Rabiner等人应用切比雪夫逼近理论提出了一种设计FIR滤波器的计算机辅助算法。
这种算法由于是在一致意义上对
作最优逼近,因而获得了较好的通带和阻带性能,并能准确地指定通带和阻带的边缘。
但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是Chebyshev方法的两个主要缺点。
FIR滤波器的MATLAB实现
MATLAB辅助DSP实现FIR,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具(FDATOOL),根据指定的滤波器性能快速设计一个FIR,再把滤波器系数以头文件形式导入CCS中,头文件中MATLAB辅助DSP实现FIR数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP程序并显示、分析处理后的数据。
使用该方法,便于采用汇编语言来实现程序。
头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便程序调试、仿真。
〔1〕输入信号的产生
首先利用Matlab产生导入CCS的dat文件,具体实现如下代码所示
sl=1000;%有效信号
ns1=3000;%高频噪声
fs=20000;%采样频率
N=500;
T=1/fs;
n=0:
N;
signal=sin(2*pi*sl*n*T);
noise1=0.7*sin(2*pi*ns1*n*T);
x=(signal+noise1);%待滤波信号
figure
(1)
plot(x)
figure
(2)
y=abs(fft(x));%待滤波频谱
df=n*(fs/N);
plot(df,y)
figure(3)
plot(signal)
figure(4)
ysignal=abs(fft(signal));%滤波后频谱
df=n*(fs/N);
plot(df,ysignal)%滤波数据导出
xout=x/max(x);%归一化
xto_css=round(32767*xout);%数据取整
xoutcss=xto_css;
fid=fopen('C:
\Users\zhaoyongwei\Desktop\myprojects\input.dat','w');%打开文件
fprintf(fid,'16511000\n');%输出文件头
fprintf(fid,'%d\n',xoutcss);%输出
fclose(fid);
产生的时域波形如下列图:
图输入信号波形
图输入频谱
经过滤波器后的预期时域波形如图:
图输出时域波形
频谱如下列图
图输出频谱
(2)滤波器的设计
MATLAB集成了一套功能强大的滤波器设计工具FDATool〔FilterDesign&AnalysisTool〕,可以完成多种滤波器的设计、分析和性能评估。
a.打开FilterDesign&AnalysisTool
单击MATLAB主窗口下方的“Start〞按钮,选择菜单“ToolBox〞→“FilterDesign〞→“FilterDesign&AnalysisTool〔FDATool〕〞命令,打开FDATool,如下列图。
图fadatool的启动
阶数为81阶,这里应填80,比阶数少1。
窗函数选择切比雪夫型〔chebyshev〕,采样频率为20000Hz,通带截止频率为750Hz。
图滤波器的幅频特性
图滤波器的相位特性
图滤波器系数
图头文件的产生
最后将产生的头文件中的滤波器系数数组放入编写好的滤波器函数中,并在进展CCS中进展调试与测试。
四FIR滤波器的DSP实现
〔1〕DSP中滤波器的
算法实现
FIR滤波器的输出表达式为
式中,为滤波器系数;x(n)表示滤波器在n时刻的输入;y(n)为n时刻的输出。
它的根本算法是一种乘法-累加运算,即不断地输入样本x(n),经过延时后,再进展乘法-累加,最后输出滤波结果y(n)。
线性缓冲区法:
线性缓冲区法又称延迟线法,其特点:
对于N级的FIR滤波器,在数据存储器中开辟一个N单元的缓冲区〔滑窗〕,用来存放最新的N个输入样本;
从最老样本开始取数,每取一个样本后,将此样本向下移位;
读完最后一个样本后,输入最新样本存入缓冲区的顶部。
循环缓冲区法:
循环缓冲区法的特点如下:
对于N级FIR滤波器,在数据存储器中开辟一个N单元的缓冲区〔滑窗〕,用来存放最新的N个输入样本;
从最新样本开始取数;
读完最后一个样本〔最老样本〕后,输入最新样本来代替最老样本,而其他数据位置不变;
用片内BK〔循环缓冲区长度〕存放器对缓冲区进展间接寻址,使循环缓冲区地址首尾相邻。
本次设计的FIR滤波器所采用的就是循环缓冲区法。
C语言实现FIR
采用C语言算法在DSP平台上实现了FIR低通数字滤波器,C语言算法相比于汇编算法可移植性很强。
这里是在TMS320VC5510DSP为平台编写的C语言算法,此算法可以稍加改动用在其他DSP芯片上,而汇编算法如此不然。
这种方法具有以下优点:
(a)程序的入口和出口由C语言自动管理,不必手工编写汇编程序实现。
(b)程序结构清晰,可读性强。
(c)程序调试方便。
由于C程序中的变量全部由C语言来定义,因此采用C源码调试器可以方便地观察C语言变量。
(d)可移植性较强,通用性较好。
具体代码如下:
#include"stdio.h"
#include"fdacoefs.h"//头文件包含滤波器的系数
#defineN81//定义滤波器的阶数为81阶
#defineLength200//定义缓冲区数组大小为200
longyn;
intinput[Length];//存放输入数据
intoutput[Length];//存放输出数据
voidmain()
{
intm,n;
int*x;
for(n=0;n { x=&input[n];//指针指向每次导入的数据 yn=0;//每做完一次乘累加后,把值赋给output数组后,从新归0 for(m=0;m yn+=B[m]*(*(x++));//做N次的乘累加 output[n]=yn;把值赋给output数组 } while (1);//做完滤波后使程序保持在本循环中 } 五.CCS仿真图与结果 CCS是TI推出的用于开发其DSP芯片的继承开发调试工具,集编辑、编译、、软件仿真、硬件调试与实时跟踪等功能于一体,极大地方便了DSP程序的设计与开发,此外还提供图形显示功能,方便用户观察特定地址的波形。 此外,还需向工程中添加Link.cmd文件〔源码见附录〕。 在CCSV3.3中建立工程,把c源代码和.cmd文件导入后,外加rts.lib文件,它是TI提供的运行时支持库,如果是C代码写的源程序,必须要包含该库,该库由TI公司做好放在CCS\cgtools\lib中,源代码TI可以下载。 添加完成后,编译通过后,下载.out文件,导入.dat文件后运行程序。 采用CCS的图形显示功能,分别观察输入信号x(n)、输出信号y(n)的时域波形和频域波形,输入信号波形如下列图。 图滤波前时域波形 图滤波前频谱图 经过滤波后,观察输出波形如下 图滤波后时域波形 图滤波后频谱图 为了更加直观的观察滤波器的性能和滤波效果,把滤波前后的时域波形和频谱图进展比照和分析,具体如下: 图滤波前后比照时域和频谱 综上分析,滤波器实现滤除高频噪声,而且保证原信息信号根本不失真的功能,滤波效果较好,性能优越。 六.总结 刚开始面对的时候,我们不知从哪里入手,尽管做过实验。 对于题目,具体需要做什么,能不能做出来,我们并不清楚。 但当时间一天天过去后,我们开始认真起来了。 从复习课本,再到复习实验,相互探讨编程思路,上网搜索资料,调试实验等,我们都在努力的自学着。 通过这次课程设计,有了很多的收获。 首先,是学习上的巩固。 一方面,通过复习课本和实验,对DSP的根底知识又有了很大的巩固。 其次,通过对用Mathlab实现FIR滤波器的设计,熟悉了matlab软件的一些相关的窗口函数以与相关功能的调用,如怎样实现窗函数的调用,怎样实现滤波,等等。 第二,增进了与同学的交流。 平常除了上课,大家也比拟少接触。 而每次做课程设计的时候,大家总会互相探讨,发表自己的看法,帮助解决遇到的问题,分享自己的心得,于是交流也就不由自主的变得相对频繁些了,感觉也就更亲切了。 第三,对FIR的滤波器性能和作用有了更深一层的了解。 FIR滤波器的应用十分广泛,当今许多信号处理系统和图像处理系统等都要求信号具有线性相位特性。 在这方面,FIR滤波器有十分独特的优点,运用mathlab语言,我们能够很容易的设计出具有严格线性相位的FIR滤波系统,以与比拟容易的实现。 此外,我们还知道了FIR滤波器是永远稳定的,因为FIR滤波器的冲激响应是有限长序列,其系统函数为一个多项式,它所含的的极点多为原点。 七.参考文献 参考文献 【1】.程佩青,数字信号处理,清华大学 【2】.邹彦,唐东,DSP原理与应用,电子工艺 【3】.王宏,MATLAB6.5在信号处理中的应用,清华大学 【4】.谷萩隆嗣,数字滤波器与信号处理,科学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 DSP 实现 数字滤波器