滤波器间位宽

信息处理 过滤器 有限脉冲响应 位深度
2022-02-12 19:13:12

我正在设计一个2级滤波器,并在滤波器输出处模拟量化到一定位数的效果。我得到的结果远非预期 - 并且希望这里的专家有任何直觉。

高层次的想法是:

  1. 过滤输入数据是N位。
  2. Stage1是一个半带插值2.
  3. 在内部保持过滤精度(大约30位),但输出四舍五入为M位。
  4. 2nd阶段采取M位,以完全精度过滤它(再次半带插值2过滤器,内部具有全精度)
  5. 滤波器的输出四舍五入为P位。

最初我设置N=M=P成为16-位。滤波器本身的阻带衰减为90 dB. 让我吃惊的是16- 滤波器之间的位是不够的 - 至少在频率响应方面。

因此,如果我不量化滤波器间值,我当然会得到理想的行为,并且整体频率响应(通过脉冲响应的 FFT 测量)是每个单独频率响应的组合 - 我的阻带衰减是90 dB. 当然,输入位宽在这里并不重要。

但是,如果我量化为16-阶段之间的位,四舍五入,我认为这足以保持滤波器频率响应精度 - 但我错了 - 阻带衰减降至84 dB在地方。它需要18-bits 过滤位宽以保持性能。

所以问题是 - 有多少位要保留的经验法则。为什么是16-位不够90 dB衰减?

2个回答

动态范围问题的根源可能是量化,如果在数据路径中会导致求和中的噪声增加,或者如果系数本身具有太大的舍入误差,则会导致频率响应中的误差。量化噪声K-tap FIR 滤波器可以增加多达10log10K当您在滤波器输入处缩放信号时,以 dB 为单位。这就是扩展精度累加器的原因;好的做法是让滤波器增大信号,然后在滤波器后衰减。同样重要的是,您的系数至少应该(根据经验)DR/6+2精度位在哪里DR是您的滤波器的阻带抑制要求。

在某种程度上,您的滤波器中每个抽头处的每个信号都可以被认为是不相关的(如果信号是白色的,这也成立,但是您的第一个滤波器将在延迟抽头之间提供一些相关性,从而减少噪声的总增加)。

请参阅下面粘贴的数字,比较了三种缩放信号的方法。

为了解释这些数字,这是具有固定精度数据路径的滤波器的情况,以及由于信号的输入电平,滤波器会溢出的情况(因为带宽内的信号将增加 1 倍)K量级)。为了防止滤波器溢出,滤波器设计者可以缩放输入,或缩放系数,或者(正确答案)是让滤波器精确增长,然后缩放输出。在前两种情况下,噪声将是由于缩放引起的量化噪声,并且幅度会随着K(换句话说,方差增长为K, 标准差增长K),在最后一种情况下,噪声只是由于缩放(6.02 dB/bit + 1.76dB 用于满量程正弦波)而没有进一步增长的量化噪声。

(笔记Δ2/12表示由于量化噪声引起的方差,其中Δ是一个 LSB 步长)

FIR 缩放输入

FIR 缩放系数

FIR 缩放输出

我观察到一个有趣的结果——我认为这可能突出了通过量化数据路径使用脉冲响应来测量整体性能的弱点。在所有情况下,我的系数以下的测试都是相同的,并且总是被量化的。结果是:

  1. 不使用数据路径量化 - 在进行 fft 脉冲响应时,我得到了整体理想的滤波器链响应。
  2. 正如我在最初的帖子中一样——当我在每个滤波器级的输出将数据路径量化为 16 位并重新进行脉冲响应时,fft 显示出降级的结果——这导致了原始帖子
  3. 我进行了另一项测试——这次使用单个相干正弦波的扫描并对滤波结果进行 FFT。通过与 2 中相同的量化数据路径运行它,显示了真实的频率响应(尽管是以非数学方式)——我惊讶地发现阻带分布与理想结果匹配,而不是退化的阻带——通过 2) 制作的乐队

所以好消息是滤波器级之间的 16 位似乎足以确保我需要的性能。有趣的事情似乎是脉冲响应测试没有正确显示这一点。

我很想知道其他人是否看到过类似的东西,并且可以建议一种替代方法来测量量化滤波器链的真实频率响应。