dsp-fir滤波器【参考】.docxVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于DSP的FIR低通滤波器的设计 学 号: 电子与控制工程学院设计要求通过ICETEK–VC5509-A 评估板实现FIR滤波功能,将输入的方波信号通过评估板上的AD模块,滤波模块,以及DA模块后输出正弦波信号并在示波器上观察方波滤除后所产生的正弦波。在CCS下编写C语音和汇编语言程序分别实现滤波器功能,并且比较c语言和汇编语言的执行速度进行比较。设计原理数字信号处理技术的应用领域非常广泛,而数字滤波器的设计是数字信号处理中最重要的设计环节。数字滤波器分为IIR滤波器和FIR滤波器。本次课设使用的是FIR滤波器。FIR滤波器即有限长单位响应滤波器,是数字信号处理系统中最基本的原件。可以在保证任意频率特性的同时具有严格的线性相位特性。同时其单位冲激响应是有限长的,因而滤波器是稳定的系统。FIR滤波器在通信、图像处理、模式识别等领域具有广泛的应用。在进入FIR滤波器前,首先要将信号通过A/D器件进行模数转换,把模拟信号转化为数字信号;为了使信号处理能够不发生失真,信号的采样速度必须满足奈奎斯特定理,一般取信号频率上限的4-5倍做为采样频率;一般可用速度较高的逐次逼进式A/D/view/110440.htm转换器,不论采用乘累加方法还是分布式算法设计FIR滤波器,滤波器输出的数据都是一串序列,要使它能直观地反应出来,还需经过数模转换。FIR滤波器误反馈回路,是一种稳定系统,可以设计成具有线性相位特性。设FIR滤波器的系数为h(0)、h(1)……h(N-1),X(n)表示滤波器在n时刻的输入,则那时刻的输出为:y(n)=h(0)*x(n)+h(1)*x(n-1)+……+h(N-1)*x[n-(N-1)]FIR滤波器的差分方程为:??对上式进行Z变换得到FIR滤波器的传递函数为:??FIR数字滤波器的结构图如图1所示:MATLAB辅助DSP 实现FIR ,其总体过程为在DSP中编写处理程序,在MATLAB中利用滤波器设计、分析工具( FDATOOL) ,根据指定的滤波器性能快速设计一个FIR ,把滤波器系数以头文件形式导入CCS 中,头文件中MATLAB 辅助DSP 实现FIR 数字滤波器含滤波器阶数和系数数组,在MATLAB中调试、运行DSP 程序并显示、分析处理后的数据。使用该方法,便于采用汇编语言来实现程序。由于不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。在MATLAB设计中采用海明窗。实验过程及结果FIR滤波器的系数在matlab中可以通过分析工具FDATOOL来快速设计一个FIR,并得到相关的系数,其设计界面如图所示:得到其相关系数:fir的C程序的实现首先要创建一个数组,数组的大小等于滤波器的阶数,用来存放用MATLAB生成的滤波器的系数,另外再定义一个数据缓冲区,来存放采集来的数据,该缓冲区的大小要和滤波器的系数数组的大小相同。然后进行数据移位,将数据缓冲区中的数据向下一个单元移1位,然后将刚采进来的数据放到缓冲区的首位。最后用for循环来实现乘加运算,得到这一时刻的卷积值。float fir( float x_in,float *x,float *b,int L) //{float y_out;int i;for(i=L-1;i0;i--){x[i]=x[i-1];} x[0]=x_in;y_out=0.0;for(i=0;iL;i++){y_out=y_out+b[i]*x[i];} return(y_out);}直接型FIR滤波器的实现涉及到两个基本操作,一个是输入信号向量与滤波器系数向量的内积计算,另一个是输入信号向量的更新处理。 在每个采样周期信号缓冲器都要更新一次,最老的采样被抛弃,而其他的信号则向缓冲器的右方移动一个单元,一个新的采样被插入存储单元,并被标记。如果这个操作过程不用DSP硬件完成,那么它需要很多的时间。Fir的汇编语言的实现处理信号缓冲器的最有效方法,是把信号采样加载到循环缓冲器中。在循环缓冲器中,采取数据保持固定、反时针方向移动地址的方式,代替保持缓冲器地址固定且正方向移动数据。信号采样的起点由指针x(n) 指定,其它诸采样则沿着顺时针方向,从起点开始依次顺序加载。当接收到一个新的采样时,它会被配置在位置x(n)上,并且完成滤波算法。计算完输出量y(n)以后,指针反时针方向移动一个单元到x(n-L+1)位置,并且当作下一次迭代运算的x(n)。FIR滤波器系数的循环缓冲器如图所示,它总是从第一个系数开始运行。基于以上方法的FIR滤波器,其汇编语言实现如下。汇编语言整数fir

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档