DSP的FIR设计(低通滤波)C语言编写

上传人:豆浆 文档编号:40759378 上传时间:2018-05-27 格式:DOC 页数:14 大小:1.80MB
返回 下载 相关 举报
DSP的FIR设计(低通滤波)C语言编写_第1页
第1页 / 共14页
DSP的FIR设计(低通滤波)C语言编写_第2页
第2页 / 共14页
DSP的FIR设计(低通滤波)C语言编写_第3页
第3页 / 共14页
DSP的FIR设计(低通滤波)C语言编写_第4页
第4页 / 共14页
DSP的FIR设计(低通滤波)C语言编写_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《DSP的FIR设计(低通滤波)C语言编写》由会员分享,可在线阅读,更多相关《DSP的FIR设计(低通滤波)C语言编写(14页珍藏版)》请在金锄头文库上搜索。

1、1、设计目的设计目的低通滤波器设计。 本设计中使用的信号为 信息信号: signal=sin(2*pi*sl*n*T) 高频噪声1:noise1=0.7*sin(2*pi*ns1*n*T) 高频噪声2:noise2=0.4*sin(2*pi*ns2*n*T) 混合信号: x=(signal+noise1+noise2) 其中sl=500Hz,ns1=3000Hz,ns2=8000Hz,T=1/20000。混合信号波形为滤波器 输入信号波形,信息信号波形为输出信号波形,滤波器的效果为滤除两个高频 噪声。2、FIR 滤滤波波器器基基本本理理论论(1)FIR 滤波器的特点数字滤波器的功能,就是把输入

2、序列通过一定的运算变换成输出序列。它的实现方法有很多,其中比较常用到的是无限长脉冲响应滤波器 IIR 和有限长脉冲响应滤波器 FIR 两种。在计算量相等的情况下,IIR 数字滤波器比 FIR 滤波器的幅频特性优越,频率选择性也好。但是,它有着致命的缺点,其相位特性不好控制。它的相位特性是使频率产生严重的非线性的原因。但是在图像处理、数)argH( )f(je据传输等波形传递系统中都越来越多的要求信道具有线性的相位特性。在这方面 FIR 滤波器具有它独特的优点,设 FIR 滤波器单位脉冲响应 h(n)长度为 N,其系统函数 H(z)为 10)()(NnnznhzHH(z)是的(N-1)次多项式,

3、它在 z 平面上有(N-1)个零点,原点 z=0 是(N-1)阶1z重极点。因此,H(z)永远稳定,它可以在幅度特性随意设计的同时,保证精确、严格的线性相位。 (2)FIR 滤波器的基本结构 数字滤波是将输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列,FIR滤波器的差分方程为:10)()(Nkkknxany对上式进行Z变换得到FIR滤波器的传递函数为: 10Nik kzbzXzYzH由上式可以看出,H(z)是的N-1次多项式,它在z平面内有N-1个零点,1z同时在原点处有N-1个重极点。N阶滤波器通常采用N个延迟单元、N个加法器与N+1个乘法器,取图中(a)、(b)两种结构。图

4、 FIR滤波器的一般结构因为FIR滤波器的单位抽样响应是有限长的,所以它永远是稳定的。另外,若对 h(n)提出一些约束条件,那么可以很容易地使 H(z)具有线性相位,这在信号处理的很多领域是非常重要的。FIR滤波器的设计任务,是要决定一个转移函数H(z),使它的频率响应满足给定的要求。这里所说的要求,除了通带频率、p阻带频率及两个带上的最大和最小衰减和外,很重要的一条是保证H(z)具ps有线性相位。(3)Chebyshev逼近法窗函数法和频率采样法设计出的滤波器的频率特性都是在不同意义上对所给理想频率特性的逼近。由数值逼近理论可知,对某个函数f(x)的逼近 jw deH一般有以下三种方法:插值

5、法(Interpolating Way)最小平方逼近法(Least Square Approaching Way)一致逼近法(Consistent Approaching Way)切比雪夫最佳一致逼近的基本思想是,对于给定区间a,b上的连续函数,在所有n次多项式的集合中,寻找一个多项式 p(x),使它在a,b上 xfn对的偏差和其它一切属于的多项式 p(x)对f(x)的偏差相比是最小的, xfn即 xfxpxfxpmaxminmax切比雪夫逼近理论,这样的多项式是存在的,且是唯一的,并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。切比雪夫逼近理论解决了p(x)的存在性、唯

6、一性和如何构造等问题。J.H.McClellan、T.W.Parks、L.R.Rabiner 等人应用切比雪夫逼近理论提出了一种设计FIR滤波器的计算机辅助算法。这种算法由于是在一致意义上对作最佳逼近,因而获得了较好的通带和阻带性能,并能准确地指定通带 jw deH和阻带的边缘。但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是Chebyshev方法的两个主要缺点。三、三、FIR 滤波器的滤波器的 MATLAB 实现实现MATLAB辅助DSP 实现FIR ,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能

7、快速设计一个FIR ,再把滤波器系数以头文件形式导入CCS 中,头文件中MATLAB 辅助DSP 实现FIR 数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程序。头文件名不变,当MATLAB中设计的滤波器系数改变时,相应头文件中系数也改变,方便程序调试、仿真。 (1)输入信号的产生 首先利用Matlab 产生导入CCS 的dat 文件,具体实现如下代码所示 sl=500; %有效信号 ns1=3000; %高频噪声 ns2=8000; %高频噪声 fs=20000; %采样频率 N=1000; T=1/fs;

8、 n=0:N; signal=sin(2*pi*sl*n*T); noise1=0.7*sin(2*pi*ns1*n*T); noise2=0.4*sin(2*pi*ns2*n*T); x=(signal+noise1+noise2);%待滤波信号 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

9、=x/max(x); %归一化 xto_css=round(32767*xout);%数据取整 xoutcss=xto_css; fid=fopen(input.dat,w); %打开文件 fprintf(fid,1651 1 0 0 0n);%输出文件头 fprintf(fid,%dn,xoutcss); %输出 fclose(fid); 产生的时域波形如图所示:020040060080010001200-2-1.5-1-0.500.511.52图 输入信号波形 频谱如图所示:00.20.40.60.811.21.41.61.82x 10405010015020025030035040045

10、0500图 输入频谱经过滤波器后的预期时域波形如图:020040060080010001200-1-0.8-0.6-0.4-0.200.20.40.60.81图 输出时域波形 频谱如图所示00.20.40.60.811.21.41.61.82x 104050100150200250300350400450500图 输出频谱 (2)滤波器的设计MATLAB 集成了一套功能强大的滤波器设计工具 FDATool(Filter Design int inputLength; /存放输入数据 int outputLength; /存放输出数据void main() int m,n; int *x; fo

11、r(n=0;nLength-1;n+) /循环导入数据 x= /指针指向每次导入的数据yn=0; /每做完一次乘累加后,把值赋给 output 数组后,从新归 0for(m=0;mN-1;m+) yn+=Bm*(*(x+); /做 N 次的乘累加outputn=yn; 把值赋给 output 数组while(1); /做完滤波后使程序保持在本循环中 (3)CSS 仿真调试 CCS 是 TI 推出的用于开发其 DSP 芯片的继承开发调试工具, 集编辑、编 译、链接、软件仿真、硬件调试及实时跟踪等功能于一体, 极大地方便了 DSP 程序的设计与开发, 此外还提供图形显示功能, 方便用户观察特定地址

12、的波形。 此外, 还需向工程中添加 Link. cmd 文件(源码见附录) 。 在 CCSV3.3 中建立工程,把 c 源代码和.cmd 文件导入后,外加 rts. lib 文件,它是 TI 提供的运行时支持库, 如果是 C 代码写的源程序, 必须要包含该库,该库 由 TI 公司做好放在 CCS cgtools lib 中, 源代码 TI 网站可以下载。添加完成后, 编译通过后,下载.out 文件,导入.dat 文件后运行程序。 采用 CCS 的图形显示功能, 分别观察输入信号 x ( n)、输出信号 y ( n)的时 域波形和频域波形, 输入信号波形如图所示。图 滤波前时域波形图 滤波前频谱

13、图 经过滤波后,观察输出波形如下图 滤波后时域波形图 滤波后频谱图为了更加直观的观察滤波器的性能和滤波效果,把滤波前后的时域波形和 频谱图进行对比和分析,具体如下:图 滤波前后对比时域和频谱 从上图中可以看出,输入信号明显有高频噪声,波形有很明显的失真。从输入频谱分析,可以看出除了有 500Hz 的信息信号还有 3000Hz 和 8000Hz 的高频噪声。经过滤波器后,输出的时域波形有了明显改善,几乎接近信息信号。而频谱图中也可以看出 3000Hz 和 8000Hz 的高频噪声已经被滤除,而且对原来的信息信号几乎没有影响。综上分析,滤波器实现滤除高频噪声,而且保证原信息信号基本不失真的功能,滤

14、波效果较好,性能优越。(4)硬件仿真通过 CCS 的软件仿真调试,发现滤波器性能符合要求,有较好的滤波效果。但是软件仿真过于理想,不过精确,因此在硬件平台上进行仿真调试,观察滤波器性能指标。本仿真使用的 C5509A 硬件平台进行仿真,由于 C 语言的移植性较好,所以本滤波程序可以直接移植到 C5509A 平台上使用。首先创建工程,添加源文件、.cmd 文件、csl5509a.lib 和 rts55.lib 库文件,如下图所示;图 硬件工程 然后编译,导入数据和运行程序,观察输入输出波形如图:观察输入输出时域和频域的波形,可以发现滤波器达到滤波效果,而且和 软件仿真效果差异不大,从而也可以发现采用 C 编写的程序通用性较好。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号