iir内插滤波器matlab,如何设计用于插值和抽取的IIR滤波器

描述

在占用极低资源的情况下轻松创建适合在DSP48E1Slice或逻辑中实现的高阶多相IIR滤波器。

设计人员常常为自己的应用选择有限脉冲响应(FIR)滤波器,因为此类滤波器易于理解掌握且得到出色的设计与IP实现工具的支持。赛灵思FIR编译器是一种用于将MATLAB®生成的系数映射到DSP和FPGA逻辑资源中的理想工具。不过在大幅降低FPGA资源占用的情况下设计出能够满足特定滤波规范要求的无限脉冲响应(IIR)滤波器是可行的。选用IIR滤波器的主要弊端就是使用设计工具时需要掌握一些专业知识,通常后续还需要手动编写RTL代码。不过只要您完成滤波器的架构设计并以定点方式表达出来,利用像赛灵思System Generator这样的新型工具就能自动为您生成HDL。赛灵思的一篇相关白皮书中全面介绍了各种传统IIR滤波器[1]。

现在我们来了解一下如何在占用极低FPGA资源的情况下实现高性能多相IIR滤波器。这些滤波器结构特点在于NK+1阶的滤波器仅用K次相乘就能实现。此类滤波器对系数量化敏感度低,故可有效地以定点方式实现。此外滤波器级上任何节点的最大增益都是有界的,即中间计算只需要1位余量。这里我们提供的是一种通用架构,适合于实现流水线化并映射到赛灵思7系列器件中的DSP48E1Slice中。该架构包括一定数量的无乘法器五阶椭圆滤波器设计,适合在少量FPGA逻辑片中高效完成多相插值和抽取处理。

MATLAB能够将IIR滤波器设计分解成较低阶级联。这种较低阶级联与直接实现高阶差分方程的做法相比,拥有更加理想的数值特性。一般来说低阶滤波器选用的是二阶双象限段(SOS),其采用的是直接型1结构。每个SOS需要完成四次相乘、三次相加和部分舍入,以减少进入级联中用于下一个滤波器的位宽。对于定点实现一般还需要增加一个乘法器来实现段间缩放。

不过级联分解法对插值器或者抽取器来说并非是一种有效的架构,因为它没有发挥多相分解的作用。例如在插值过程中,在将输入数据应用到滤波器之前,需要先在样本之间插入N-1个零,实现输入数据上采样并将输入采样率提高到与输出采样率相等。但级联IIR滤波器由于每个SOS内存在的反馈路径,就无法通过插入零来降低计算量。

用于多相分解的IIR滤波器

本文介绍的滤波器采用图1中所示的并联滤波器分解架构。在并联方式下,每个分支上的滤波器依次比上一分支多延迟1。此外每个分支中的滤波器限制为N带。每个分支的延迟数由输入/输出采样率决定,但每个An(zN)滤波器的项只涉及z-N幂数,就是说差分方程式只对每第N个输入/输出样本进行计算,而对之间的全部样本忽略不计。

传输函数为被延迟的N

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值