DSP的FIR设计C语言编写

上传人:daj****de 文档编号:51488368 上传时间:2022-01-26 格式:DOCX 页数:7 大小:22.99KB
收藏 版权申诉 举报 下载
DSP的FIR设计C语言编写_第1页
第1页 / 共7页
DSP的FIR设计C语言编写_第2页
第2页 / 共7页
DSP的FIR设计C语言编写_第3页
第3页 / 共7页
资源描述:

《DSP的FIR设计C语言编写》由会员分享,可在线阅读,更多相关《DSP的FIR设计C语言编写(7页珍藏版)》请在装配图网上搜索。

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

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

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

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

5、 e jw 的逼近。由数值逼近理论可知,对某个函数 f(x) 的逼近一般有以下三种方法:插值法 (Interpolating Way)最小平方逼近法 (Least Square Approaching Way)一致逼近法 (Consistent Approaching Way)切比雪夫最佳一致逼近的基本思想是,对于给定区间a , b 上的连续函数f x ,在所有 n次多项式的集合n 中,寻找一个多项式p(x) ,使它在 a , b 上对 f x 的偏差和其它一切属于n 的多项式 p(x) 对f(x)的偏差相比是最小的, 即?f x min max p xf xmax p x切比雪夫逼近理论,

6、这样的多项式是存在的, 且是唯一的, 并指出了构造这种最佳一致逼近多项式的方法,就是有名的“交错点组定理”。切比雪夫逼近理论解决了 p(x) 的存在性、唯一性和如何构造等问题。 、等人应用切比雪夫逼近理论提出了一种设计 FIR滤波器的计算机辅助算法。这种算法由于是在一致意义上对 H d e jw 作最佳逼近,因而获得了较好的通带和阻带性能,并能准确地指定通带和阻带的边缘。 但它的效率依赖于初始极值频率点的估计,且通带和阻带内波纹数较多,这是 Chebyshev方法的两个主要缺点。三、 FIR 滤波器的 MATLAB实现MATLAB辅助 DSP 实现 FIR , 其总体过程为在 DSP中编写处理

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

8、000;%高频噪声ns2=8000;%高频噪声fs=20000;%采样频率N=1000;T=1/fs;n=0:N;signal=sin(2*pi*sl*n*T);noise1=*sin(2*pi*ns1*n*T);noise2=*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

9、);plot(df,ysignal)% 滤波数据导出xout=x/max(x);%归一化xto_css=round(32767*xout);%数据取整xoutcss=xto_css;fid=fopen( , w );%打开文件fprintf(fid,1651 1 0 0 0n); %输出文件头fprintf(fid,%dn ,xoutcss);%输出fclose(fid);产生的时域波形如图所示:图 输入信号波形频谱如图所示:图 输入频谱经过滤波器后的预期时域波形如图:图 输出时域波形频谱如图所示图 输出频谱( 2)滤波器的设计MATLAB集成了一套功能强大的滤波器设计工具FDATool( F

10、ilter Design &Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。a. 打开 Filter Design & Analysis Tool单击 MATLAB主窗口下方的 “Start ”按钮,选择菜单“ToolBox ” “ Filter Design ” “Filter Design & Analysis Tool(FDATool)”命令,打开 FDATool,如图所示。图 fadatool的启动b. 产生滤波器阶数为 81 阶,这里应填 80,比阶数少 1。窗函数选择 切比雪夫型 ( chebyshev),采样频率为 20000Hz,通带截止频率为 750H

11、z。图 滤波器的幅频特性图 滤波器的相位特性c. 产生滤波器系数和头文件图 滤波器系数图 头文件的产生最后将产生的头文件中的滤波器系数数组放入编写好的滤波器函数中, 并在进行 CCS中进行调试与测试。四、 FIR 滤波器的 Simulink仿真通过 Matlab 的 FDATOOL设计滤波器后,为了确认该滤波器是否有效,现通过 simulink 进行建模仿真观察该滤波器是否有效。把三个信号通过加法器相加后,再通过 FDATOOL设计的滤波器即可。注意此处设计的是数字滤波器,需要把三个输入信号数字化。具体仿真模型建立如下:分别观察滤波前后的时域波形图图 滤波前时域波形图 滤波后时域波形五、 FI

12、R 滤波器的 DSP实现1( 1) DSP中滤波器的 z 算法实现 FIR 滤波器的输出表达式为N1N/2 1y(n)h(i )x(n i)h(i)s(n i )n0n 0式中,为滤波器系数; x(n) 表示滤波器在 n 时刻的输入; y(n) 为 n 时刻的输出。它的基本算法是一种乘法 - 累加运算,即不断地输入样本 x(n) ,经过延时后,再进行乘法 - 累加,最后输出滤波结果 y(n) 。1)线性缓冲区法:线性缓冲区法又称延迟线法,其特点:(a)对于 N级的 FIR 滤波器,在数据存储器中开辟一个 N单元的缓冲区(滑窗),用来存放最新的 N 个输入样本;(b)从最老样本开始取数,每取一个

13、样本后,将此样本向下移位;(c)读完最后一个样本后,输入最新样本存入缓冲区的顶部。2)循环缓冲区法:循环缓冲区法的特点如下:(a)对于 N 级 FIR 滤波器,在数据存储器中开辟一个 N 单元的缓冲区(滑窗),用来存放最新的 N 个输入样本;(b)从最新样本开始取数;( c)读完最后一个样本(最老样本)后,输入最新样本来代替最老样本,而其他数据位置不变;( d)用片内 BK(循环缓冲区长度)寄存器对缓冲区进行间接寻址,使循环缓冲区地址首尾相邻。本次设计的FIR 滤波器所采用的就是循环缓冲区法。( 2) C语言实现 FIR采用 C 语言算法在 DSP平台上实现了 FIR 低通数字滤波器, C 语

14、言算法相比于汇编算法可移植性很强。 这里是在 TMS320VC5510DSP为平台编写的 C语言算法 ,此算法可以稍加改动用在其他DSP芯片上 ,而汇编算法则不然。 这种方法具有以下优点:(a) 程序的入口和出口由 C 语言自动管理,不必手工编写汇编程序实现。(b) 程序结构清晰,可读性强。(c) 程序调试方便。由于 C程序中的变量全部由 C语言来定义,因此采用 C源码调试器可以方便地观察C 语言变量。(d) 可移植性较强,通用性较好。具体代码如下:#include#include cmd文件(源码见附录)。在中建立工程,把c 源代码和 .cmd 文件导入后,外加rts. lib文件,它是TI

15、 提供的运行时支持库 ,如果是 C代码写的源程序 ,必须要包含该库 , 该库由 TI公司做好放在CCS cgtools lib中,源代码 TI 网站可以下载。添加完成后,编译通过后,下载 .out 文件,导入 .dat文件后运行程序。采用 CCS的图形显示功能 ,分别观察输入信号x ( n)、输出信号 y ( n)的时域波形和频域波形 ,输入信号波形如图所示。图 滤波前时域波形图 滤波前频谱图经过滤波后,观察输出波形如下图 滤波后时域波形图 滤波后频谱图为了更加直观的观察滤波器的性能和滤波效果, 把滤波前后的时域波形和频谱图进行对比和分析,具体如下:图 滤波前后对比时域和频谱从上图中可以看出,

16、输入信号明显有高频噪声,波形有很明显的失真。从输入频谱分析,可以看出除了有 500Hz 的信息信号还有 3000Hz 和 8000Hz的高频噪声。经过滤波器后,输出的时域波形有了明显改善,几乎接近信息信号。而频谱图中也可以看出3000Hz和 8000Hz的高频噪声已经被滤除, 而且对原来的信息信号几乎没有影响。综上分析,滤波器实现滤除高频噪声,而且保证原信息信号基本不失真的功能,滤波效果较好,性能优越。( 3)硬件仿真通过 CCS的软件仿真调试,发现滤波器性能符合要求,有较好的滤波效果。但是软件仿真过于理想, 不过精确,因此在硬件平台上进行仿真调试, 观察滤波器性能指标。本仿真使用的C5509A硬件平台进行仿真,由于C 语言的移植性较好,所以本滤波程序可以直接移植到 C5509A 平台上使用。首先创建工程,添加源文件、 .cmd 文件、 5509a 和库文件,如下图所示 ;图硬件工程然后编译,导入数据和运行程序,观察输入输出波形如图:观察输入输出时域和频域的波形,可以发现滤波器达到滤波效果,而且和软件仿真效果差异不大,从而也可以发现采用 C 编写的程序通用性较好。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!