前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现

matlab fir带通滤波,基于Matlab的FIR带通滤波器设计与实现

作者头像
全栈程序员站长
发布2022-09-05 19:56:38
6150
发布2022-09-05 19:56:38
举报

大家好,又见面了,我是你们的朋友全栈君。

mal”>3.2 软件设计

3.2.1 数据组织方式

若输入信号x(n)和滤波器的单位冲激响应h(n)在频域分别为

207126_3_0.jpg
207126_3_0.jpg

,则其输出信号的频率响应为

207126_3_1.jpg
207126_3_1.jpg

。根据离散傅氏变换的性质,可以得到滤波系统的差分方程:

207126_3_2.jpg
207126_3_2.jpg

从上文Matlab的仿真过程可得到滤波器的级数N和滤波器系数h(n)。从上述可知数字滤波器实现时,主要是进行乘和加运算以及数据存取操作。

在定点DSP上实现FIR滤波有两种方式:一种是用线性缓冲区实现z-1,该方式能保证新老数据在存储器中的存放位置直接明了,新的数据存放在缓冲区的固定位置;另一种方式是循环缓冲区实现z-1,该方式新老数据在缓冲区的位置不直接明了,新的数据没有固定位置,但可以方便地完成滤波器窗口的自动更新。考虑到本方案中使用的是汇编语言编程,还有N的阶数较大,为提高速率,因此在选择FIR滤波器的方式时选择循环缓冲区实现z-1的方式。

对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。每次输入新的样本时,一新样本改滑窗中的最老数据,而滑窗中的其他数据不需要移动。利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。

3.2.2 程序设计思路

程序设计的总体思路是:启动ADS7864对输入的模拟信号进行A/D转换,每采集到一个数据就送入DSP进行滤波运算,运算结果送DAC76 25转换为模拟量。不断地重复上述过程,在DAC7625的输出端就得到滤波后的模拟信号。

为了精确地控制ADS7864的采样率,使用TMS320C5402内部的定时器控制采样时间间隔T。设置定时器的定时时间等于采样时间间隔T,并让它工作在中断方式,则定时器每过T时间间隔就向CPU发出中断请求,CPU响应中断请求,转去执行中断服务程序。在中断服务程序中读取A/D转换结果,对转换结果进行滤波运算,并将运算结果送D/A转换器转换为模拟量。因此,程序分为主程序和定时器中断服务程序两部分,流程图如图4,图5所示。

207126_3_3.jpg
207126_3_3.jpg

3.2.3 FIR滤波源程序

FIR滤波器指令,使用MAC指令执行FIR滤波,将滤波输出放在累加器A中:

207126_3_4.jpg
207126_3_4.jpg

3.2.4 结果分析

利用已做好的TMS320C5402开发平台,下载在CCS中已经通过编译的数字带通滤波器的程序,该程序的实验结果波形由CCS提供的显示时频图来显示。由于实际需求只涉及数字滤波器的幅频特性,所以结果分析没有对数字滤波器的相频特性进

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137872.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年6月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档