过采样然后过滤和下采样

信息处理 过滤器设计 下采样
2022-02-07 00:58:34

目前我正在做一个项目来记录来自接收器的 ELF(极低频)信号。感兴趣的最高频率约为 30 Hz,系统应具有平坦的频率响应。我正在寻找一个使用 8 位 ADC 的简单解决方案,我想知道如何使用过采样来提高分辨率并减轻对 ADC 之前的模拟低通滤波器的要求。在没有过采样和 64 sps 的采样率的情况下,需要一个相当陡峭的模拟低通滤波器来避免混叠。通过过采样和多 3 位的增益,采样率为 2^(2*3) 乘以 64 sps = 4096 sps,并且 ADC 之前的模拟滤波器更容易实现。问题是使用数字低通滤波器和下采样将 4096 sps 信号转换回 64 sps。

从我目前所读到的,对于 11 位,衰减需要在 32 Hz 时接近 68 dB,但同时应该通过大约 30 Hz 的信号。似乎需要一个非常陡峭的数字低通滤波器。我尝试使用滤波器设计软件进行一些计算,但所需的阶数太高而无法得到结果。这真的很难实现还是我错过了什么?任何帮助将不胜感激。

2个回答

正如您所知道的,对于您提供的过滤器规格,您需要一个非常高的过滤器。总而言之,您要求:

  • 通带边缘:30 Hz
  • 阻带边缘:32 Hz
  • 最小阻带衰减:68 dB

您需要满足规范的滤波器阶数的主要决定因素是过渡带的宽度,作为采样率的一部分。在您的情况下,您需要一个 2 Hz 宽的过渡带,采样率为 4096 Hz。这是一个非常尖锐的转变!

更好的方法是在串联级联的多个滤波器级中执行抽取。这使您无需使用单个非常高阶滤波器即可满足整体频率响应要求。您需要通过级联滤波器实现 64 的总体抽取因子。可能很难确定阶段的最佳安排(就应用过滤器的总体计算而言),但我会推荐以下方法作为开始:

  • 第 1 阶段:设计一个滤波器,其通带边缘为 30 Hz,阻带边缘为 (512 - 32) = 480 Hz。将滤波器的输出抽取 8。因此,在该滤波器的输出端,您将获得一个以 512 Hz 采样的信号。

    您可能会注意到,这种方法会产生一些混叠,因为允许第一级滤波器的过渡带超出新的 256 Hz 奈奎斯特频率。然而,这不是问题,因为在整个级联的所需通带内不会发生任何混叠。您允许一些能量混叠到将成为第 2 阶段的阻带的区域,在那里它将被消除。扩展第 1 级滤波器的过渡带可以节省一些计算,因为更宽的过渡将需要更低的滤波器阶数。由于阶段 1 以最高采样率运行,这可能是一个显着的好处。

  • 第 2 阶段:设计一个通带边缘为 30 Hz 和阻带边缘为 32 Hz 的滤波器。将滤波器的输出抽取 8。因此,在该滤波器的输出端,您将获得一个以 64 Hz 采样且通带为 30 Hz 的信号。

    虽然这仍然是一个相当尖锐的过渡带,但它应该更容易设计,因为当以滤波器采样率的比率表示时,过渡带宽度是 8 倍大。此外,应用第 2 级滤波器所需的工作进一步减少,因为它以较低的 512 Hz 频率而不是 4096 Hz 运行。

使用 MATLAB 的fdatool,上述规范产生以下过滤器:

  • 阶段1:29 阶 FIR,0.1 dB 通带纹波,80 dB 阻带衰减

在此处输入图像描述

  • 阶段 2: 852 阶 FIR,0.1 dB 通带纹波,80 dB 阻带衰减

在此处输入图像描述

我只是使用默认衰减设置进行说明。您会注意到,使用此设置,第二级过滤器仍然非常复杂。虽然我以前使用过这种长度的过滤器,但您可能希望进一步分解问题以避免如此长的过滤器。为此,您将添加更多的抽取阶段。例如,您可以尝试 4 次抽取的三个阶段,或 2 次抽取的 6 个阶段。前进的最佳方式取决于您的系统的限制,但您应该了解该方法的想法。

正如所写,这是一个非常难以满足的约束。您有两个基本选择:

  1. 线性相位滤波器:保留原始相位,但需要较大的体延迟,并在时间上向前和向后涂抹时域。在时域中保存瞬变方面做得很差
  2. 最小相位滤波器:不需要大量延迟,并且只在时间上向前涂抹(因果关系大部分被保留)。在保留瞬态方面做得更好,但相位响应受到严重影响。在您的示例中,具有 0.1dB 通带纹波的 12 阶椭圆滤波器可以完成这项工作。

在任何一种情况下,都会出现持续数秒的大量时域振铃。无论滤波器类型或结构如何,频率转换越陡峭,您获得的时域振铃就越多。

建议再次重新评估应用程序约束,以检查您是否真的需要一个陡峭的过滤器。它真的需要有多“平坦”?应用程序可以容忍多少幅度和相位纹波?输入信号的频谱是什么样的?您是否真的有混叠范围内的满量程频谱分量,或者信号是否已经在混叠频率处衰减?