论文部分内容阅读
【摘 要】DSP技术一般指将DSP 处理器用于完成数字信号处理的方法与技术。目前的DSP芯片以其强大的数据处理功能在通信和其他信号处理领域得到广泛注意并已成为开发应用的热点技术。本文深入研究基于美国德州仪器公司(TI)TMS320C5410 DSP芯片的滤波器系统软件实现方法,用Blackman窗口设计法实现FIR滤波器,给出了MATLAB仿真结果,实验结果表明滤波结果效果良好。利用MATLAB软件开发产品加速了开发周期,比直接在CCS中编程方便快捷了很多,对于任何复杂功能的DSP系统,只需要进行少量的添加和修改就能完成功能正确的C语言程序设计。
【关键词】FIR滤波 DSP CCS 自适应滤波器 Blackman窗函数法 MATLAB
一、概述
1.1设计背景
在信号处理中,滤波占有十分重要的地位。数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
数字信号处理就是用数字信号处理器(DSP)来实现各种算法,由于具有精度高、灵活性强等优点,已广泛应用在数字图像处理、数字通信、数字音响、声纳、雷达等领域。文选用TMS320C54X作为DSP处理芯片,通过对其编程来实现FIR滤波器。
1.2设计要求
利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用已设计好的滤波器对常用信号进行滤波处理。
1.3设计思路简介
在TMS320C54x系统开发环境CCS(Code Composer Studio)下对FIR滤波器的DSP实现原理进行讨论。利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。
二、系统设计与原理
2.1 FIR滤波器的基本理论
2.1.1 FIR滤波器的特点
本来在计算量相等的情况下,IIR数字滤波器比FIR滤波器的幅频特性优越,频率选择性也好,但是,它有着致命的缺点,相位特性不好控制。它的相位特性f(w)=argH( )是使频率产生严重的非线性的原因,这种‘与’的非线性关系,使数字滤波器与模拟滤波器在响应与频率的对应关系上发生了畸变。如果需要线性相位,就必须用全通网络进行复杂的相位校正,但是,在对程序运行周期数要求十分严格的DSP处理中加上一个全通均衡器是十分浪费资源的。另外,即使加上全通均衡器,对于因果的IIR滤波器,仍将得不到线性的相位。
在现代电子系统中,如图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面 FIR滤波器具有独到的优点,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位,因此这类滤波器应用很广泛。
2.1 FIR滤波器设计总框图
2.1.2 FIR滤波器的基本结构
2.2.2 频率抽样法
窗函数法是从时域出发,用窗函数截取理想的 得到h(n),以此有限长的h(n)近似 ,这样得到的频率响应 逼近于理想的频响 。频率抽样法是从频率出发,将给定的理想频响 加以等间隔抽样。
然后以此 作为FIR滤波器的频率响应抽样值H(k),再根据DFT(离散付氏变换)定义由频域这N个抽样值来唯一确定一个有限长序列h(n),同样也可以算出FIR滤波器的系统函数H(z)及频率响应 ,可以推出频率响应 是频率抽样值H(k)与线性相位因子 及如下内插函数S(ω,k)的线性组合。
所以,在各频率取样点上,实际滤波器的频响是严格地和所要求的滤波器的频响一致的,逼近误差为零,但在抽样点之间的频响是各取样点的内插函数的延伸叠加而成,有一定的逼近误差,误差大小取决于频率响应曲线的圆滑程度和抽样点的密度,为了减少误差,就要增加抽样点数目即增大采样频率,抽样点之间的理想频率特性变化越陡。频率抽样法的优点是可以直接在频域设计,适于利用最优化方法,而且这种方法特别适用于窄带选频滤波器,但频率抽样法的抽样频率只能是2π/ N 的整数倍或2π/ N 的整数倍加上π/ N不能保证截止频率ωc的准确取值,要实现精确的ωc就必须取N大,相应的计算量也大。此外,它的阻带最大衰减一般,也只有30-50dB左右,很难满足频域特性要求较高的场合。
2.2.3 Chebyshev逼近法
切比雪夫最佳一致逼近的基本思想是,对于给定区间[a,b]上的连续函数 ,在所有n次多项式的集合 中,寻找一个多项式 p(x),使它在[a,b]上对 的偏差和其它一切属于 的多项式 p(x)对f(x)的偏差相比是最小的.
切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。
切比雪夫逼近理论解决了p(x)的存在性、唯一性和如何构造等问题。但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是Chebyshev方法的两个主要缺点。本文选择使用布莱克曼窗函数法进行FIR滤波器的设计
三、FIR滤波器的MATLAB实现
3.1 MATLAB中的滤波器设计工具
MATLAB共有五种设计FIR数字滤波器的方法。第一种是窗函数法,对应的MATLAB函数有fir l,fir2,Kaiserord;第二种方法是含过渡带的设计方法,它利用等纹波或者最小均方取逼近理想滤波器的频域响应,对应的MATLAB函数有firls,remenz,remezord;第三种方法是最小二乘约束设计法,它是使设计的滤波器和理想滤波器的误差在整个频段上积分,使得积分值最小,对应的MATLAB函数有fircls,firclsl;第四种设计方法是非线性相位滤波器设计方法,它设计出FIR滤波器是非线性相位的,对应的MATLAB函数为cremez;第五种设计方法是升余弦设计方法,采用升余弦函数将进行滤波器设计,对应MATLAB函数为firrcosf。 在MATLAB环境下,利用它已有的大量滤波器设计函数,加上日益成熟且方便的界面技术,己经可以把所有的设计方法和过程集成在一起,构成一个滤波器综合设计的工具。在信号处理工具箱中,这个工具的名称为fdatool(Filter Design and Analysis Tool的缩写)。在MATLAB命令窗中,键入fdatool,就得到界面。这个工具界面包含了全部滤波器设计的功能。窗函数为kaiser函数,采样频率为10KHz,由于所选用的低频信号为500Hz,最小干扰噪声为2KHz,通带截止频率Fc选取1KHz,阻带截止频率选取2KHz,通带最大衰减为1dB,阻带最大衰减为60dB。
四、FIR滤波器的结果检验
总结
当最初面对这个课题时说实话其实挺茫然的,不知从何下手,虽然之前学过一些相关知识,但还是第一次做如此全面具体的课题设计。还好之前有一定的编程基础和对MATLAB有一定程度的学习和掌握,对于不了解的部分,同学大家互相了解和学习,从复习课本,到相互探讨编程思路,上网搜索查阅资料,下载CCS软件进行安装与运行等,我们都收获了太多太多。总的来说,我对FIR的滤波器性能和作用有了更深一层的了解。FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。运用mathlab语言,我们能够很容易的设计出具有严格线性相位的FIR滤波系统,以及比较容易的实现。
通过此次课题设计,我对DSP的基础知识又有了很大的巩固。其次,通过对用Matlab实现FIR滤波器的设计,熟悉了matlab软件的一些相关的窗口函数以及相关功能的调用,如怎样实现窗函数的调用,怎样实现滤波,等等。更加熟悉了对MATLAB的使用。在空余时间里,面对不懂的问题我也会主动提出来寻求解答,此时大家总会互相探讨,发表自己的看法,帮忙解决遇到的问题,分享自己的心得,取长补短,让困难瞬间迎刃而解,在学习到新的知识的同时也加深了同学间的友谊。我也认识到了自己的不足,希望在以后的学习道路中我能更加完善自己!
【参考文献】
[1] 赵刚,黄建明. 基于数字滤波器设计的讨论[J].南开大学报(自然科学版),2003.26(3):15218
[2] 潘松,黄继业,王国栋. 现代DSP技术. 西安电子科技大学出版社. 2003
[3] 陈金鹰.DSP技术及应用. 机械工业出版社.2004.6
[4] 周霖. DSP算法设计与系统方案. 国防工业出版社,2004.7
[5] 乔瑞萍,崔涛,张芳娟.TMS320C54xDSP原理及应用[M].西安:西安电子科技大学出版社.005
【关键词】FIR滤波 DSP CCS 自适应滤波器 Blackman窗函数法 MATLAB
一、概述
1.1设计背景
在信号处理中,滤波占有十分重要的地位。数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。
数字信号处理就是用数字信号处理器(DSP)来实现各种算法,由于具有精度高、灵活性强等优点,已广泛应用在数字图像处理、数字通信、数字音响、声纳、雷达等领域。文选用TMS320C54X作为DSP处理芯片,通过对其编程来实现FIR滤波器。
1.2设计要求
利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用已设计好的滤波器对常用信号进行滤波处理。
1.3设计思路简介
在TMS320C54x系统开发环境CCS(Code Composer Studio)下对FIR滤波器的DSP实现原理进行讨论。利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的FIR滤波器能完成预定的滤波任务。
二、系统设计与原理
2.1 FIR滤波器的基本理论
2.1.1 FIR滤波器的特点
本来在计算量相等的情况下,IIR数字滤波器比FIR滤波器的幅频特性优越,频率选择性也好,但是,它有着致命的缺点,相位特性不好控制。它的相位特性f(w)=argH( )是使频率产生严重的非线性的原因,这种‘与’的非线性关系,使数字滤波器与模拟滤波器在响应与频率的对应关系上发生了畸变。如果需要线性相位,就必须用全通网络进行复杂的相位校正,但是,在对程序运行周期数要求十分严格的DSP处理中加上一个全通均衡器是十分浪费资源的。另外,即使加上全通均衡器,对于因果的IIR滤波器,仍将得不到线性的相位。
在现代电子系统中,如图像处理、数据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面 FIR滤波器具有独到的优点,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位,因此这类滤波器应用很广泛。
2.1 FIR滤波器设计总框图
2.1.2 FIR滤波器的基本结构
2.2.2 频率抽样法
窗函数法是从时域出发,用窗函数截取理想的 得到h(n),以此有限长的h(n)近似 ,这样得到的频率响应 逼近于理想的频响 。频率抽样法是从频率出发,将给定的理想频响 加以等间隔抽样。
然后以此 作为FIR滤波器的频率响应抽样值H(k),再根据DFT(离散付氏变换)定义由频域这N个抽样值来唯一确定一个有限长序列h(n),同样也可以算出FIR滤波器的系统函数H(z)及频率响应 ,可以推出频率响应 是频率抽样值H(k)与线性相位因子 及如下内插函数S(ω,k)的线性组合。
所以,在各频率取样点上,实际滤波器的频响是严格地和所要求的滤波器的频响一致的,逼近误差为零,但在抽样点之间的频响是各取样点的内插函数的延伸叠加而成,有一定的逼近误差,误差大小取决于频率响应曲线的圆滑程度和抽样点的密度,为了减少误差,就要增加抽样点数目即增大采样频率,抽样点之间的理想频率特性变化越陡。频率抽样法的优点是可以直接在频域设计,适于利用最优化方法,而且这种方法特别适用于窄带选频滤波器,但频率抽样法的抽样频率只能是2π/ N 的整数倍或2π/ N 的整数倍加上π/ N不能保证截止频率ωc的准确取值,要实现精确的ωc就必须取N大,相应的计算量也大。此外,它的阻带最大衰减一般,也只有30-50dB左右,很难满足频域特性要求较高的场合。
2.2.3 Chebyshev逼近法
切比雪夫最佳一致逼近的基本思想是,对于给定区间[a,b]上的连续函数 ,在所有n次多项式的集合 中,寻找一个多项式 p(x),使它在[a,b]上对 的偏差和其它一切属于 的多项式 p(x)对f(x)的偏差相比是最小的.
切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。
切比雪夫逼近理论解决了p(x)的存在性、唯一性和如何构造等问题。但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是Chebyshev方法的两个主要缺点。本文选择使用布莱克曼窗函数法进行FIR滤波器的设计
三、FIR滤波器的MATLAB实现
3.1 MATLAB中的滤波器设计工具
MATLAB共有五种设计FIR数字滤波器的方法。第一种是窗函数法,对应的MATLAB函数有fir l,fir2,Kaiserord;第二种方法是含过渡带的设计方法,它利用等纹波或者最小均方取逼近理想滤波器的频域响应,对应的MATLAB函数有firls,remenz,remezord;第三种方法是最小二乘约束设计法,它是使设计的滤波器和理想滤波器的误差在整个频段上积分,使得积分值最小,对应的MATLAB函数有fircls,firclsl;第四种设计方法是非线性相位滤波器设计方法,它设计出FIR滤波器是非线性相位的,对应的MATLAB函数为cremez;第五种设计方法是升余弦设计方法,采用升余弦函数将进行滤波器设计,对应MATLAB函数为firrcosf。 在MATLAB环境下,利用它已有的大量滤波器设计函数,加上日益成熟且方便的界面技术,己经可以把所有的设计方法和过程集成在一起,构成一个滤波器综合设计的工具。在信号处理工具箱中,这个工具的名称为fdatool(Filter Design and Analysis Tool的缩写)。在MATLAB命令窗中,键入fdatool,就得到界面。这个工具界面包含了全部滤波器设计的功能。窗函数为kaiser函数,采样频率为10KHz,由于所选用的低频信号为500Hz,最小干扰噪声为2KHz,通带截止频率Fc选取1KHz,阻带截止频率选取2KHz,通带最大衰减为1dB,阻带最大衰减为60dB。
四、FIR滤波器的结果检验
总结
当最初面对这个课题时说实话其实挺茫然的,不知从何下手,虽然之前学过一些相关知识,但还是第一次做如此全面具体的课题设计。还好之前有一定的编程基础和对MATLAB有一定程度的学习和掌握,对于不了解的部分,同学大家互相了解和学习,从复习课本,到相互探讨编程思路,上网搜索查阅资料,下载CCS软件进行安装与运行等,我们都收获了太多太多。总的来说,我对FIR的滤波器性能和作用有了更深一层的了解。FIR滤波器的设计是数字信号处理技术的基础,也是DSP芯片的重要组成部分。运用mathlab语言,我们能够很容易的设计出具有严格线性相位的FIR滤波系统,以及比较容易的实现。
通过此次课题设计,我对DSP的基础知识又有了很大的巩固。其次,通过对用Matlab实现FIR滤波器的设计,熟悉了matlab软件的一些相关的窗口函数以及相关功能的调用,如怎样实现窗函数的调用,怎样实现滤波,等等。更加熟悉了对MATLAB的使用。在空余时间里,面对不懂的问题我也会主动提出来寻求解答,此时大家总会互相探讨,发表自己的看法,帮忙解决遇到的问题,分享自己的心得,取长补短,让困难瞬间迎刃而解,在学习到新的知识的同时也加深了同学间的友谊。我也认识到了自己的不足,希望在以后的学习道路中我能更加完善自己!
【参考文献】
[1] 赵刚,黄建明. 基于数字滤波器设计的讨论[J].南开大学报(自然科学版),2003.26(3):15218
[2] 潘松,黄继业,王国栋. 现代DSP技术. 西安电子科技大学出版社. 2003
[3] 陈金鹰.DSP技术及应用. 机械工业出版社.2004.6
[4] 周霖. DSP算法设计与系统方案. 国防工业出版社,2004.7
[5] 乔瑞萍,崔涛,张芳娟.TMS320C54xDSP原理及应用[M].西安:西安电子科技大学出版社.005