应用笔记

使用 FIR 滤波器生成器精确生成延迟

为任意模拟输入生成分数延迟的经济高效的方法

Moku 是一个软件定义的仪器平台,用于 发展, 测试控制 新技术和设计。 Moku 的直观工作流程将仪器集成与无与伦比的灵活性相结合,可帮助科学家、学生和工程师提高效率并降低项目风险。 

 


信号延迟生成

在许多应用中,精确调整信号的延迟可能很重要。 例如,在高速信号传输中,平衡和补偿由电缆长度不匹配、信号处理时间差异和许多其他因素引起的不同信号路径之间的延迟非常重要。 以数字方式产生延迟最常见的方法是使用延迟寄存器暂时存储输入信号,然后在下一个时钟周期输出信号。 可以通过在信号路径之间链接额外的延迟寄存器来简单地调整延迟量。 最小延迟受时钟速度限制。 对于数字信号,提高时钟速度的成本相对较低。 然而,对于模拟信号,高速 ADC 的价格可能要高得多。 额外的采样率和带宽也可能给系统带来额外的噪声。

数字 1:数字延迟可以由延迟寄存器生成。

引入不是时钟周期整数倍的延迟可能会更复杂。 对于正弦信号,延迟可以由锁相环 (PLL) 产生。 Phasemeter 可配置为 PLL,能够跟踪 1000 Hz 至 200 MHz 的正弦信号,并输出具有任意相移的输入信号的锁相副本。 但是,输出仅限于正弦波形。 任意波形发生器上的触发输出功能可用于通过输出移位的预加载信号来产生延迟。 但是,此方法仅适用于明确定义的重复信号。 在本文中,我们将演示如何使用 Moku:Lab 的 FIR 滤波器生成器为任意模拟输入生成小数延迟。 这个方法也可以用 Moku:Go 和 Moku:Pro FIR Filter Builders 来实现。

有限脉冲响应 (FIR) 滤波器和整数延迟

有限脉冲响应 (FIR) 滤波器用于对数字化数据实施波段选择滤波器。 滤波器通常由离散脉冲响应函数定义。 系统在每个采样周期将输入信号与用户定义的脉冲响应函数进行数值卷积,并连续输出卷积结果。 这个时域的卷积过程可以看作是频域的(傅里叶变换函数的)乘法过程。 通过设计脉冲响应函数的形状,我们可以有效地进行时域的频段选择。 例如,如果系统的脉冲响应是 delta 函数,则 delta 函数的傅里叶变换是常数,因此在频域中给出平坦的响应。 在频域相乘后,输入信号的频谱保持不变。 因此,增量脉冲响应函数对应于全通滤波器。

 

数字 2:增量脉冲响应函数生成全通频率响应。

 

通过在脉冲前添加额外的零,我们可以为我们的系统添加整数延迟(相对于时钟速度)。 Moku:Lab 的 FIR Filter Builder 工具一次可以部署两个 FIR 滤波器,系数高达 14,819(脉冲响应函数的长度)。 它允许用户部署预定义的脉冲函数或从文件上传脉冲响应函数。 为了演示整数延迟的影响,将 10 kHz 正弦波发送到部署了 FIR Filter Builder 仪器的 Moku:Lab 的输入 1。 FIR Filter Builder 中的控制矩阵将输入信号组合、重新缩放和重新分配到两个独立的滤波器路径。 输出向量是控制矩阵乘以输入向量的乘积:

控制矩阵设置为[1, 0; 1, 0] 将输入 1 路由到两个滤波器路径,如下面的图 3 所示。 顶部(绿色)滤波器使用 [0, 1] 的脉冲响应,底部(紫色)滤波器使用 [0,0,1]。 两个滤波器均以 122.1 kHz 运行。 在输出探测点,我们可以看到两个通道之间产生了 1/122.1 kHz 的延迟。

 

 

数字 3:使用 Moku:Lab 的 FIR 滤波器生成器生成的整数时钟延迟

从整数延迟到小数延迟

虽然通过在 delta 函数之前添加零很容易生成整数延迟,但乍一看 FIR 滤波器如何生成小数延迟可能并不明显。 第一步是将单点 delta 函数扩展为有限/窗口 sinc 函数。 尽管 sinc 函数在频域中具有有限的矩形响应,与 delta 函数全通滤波器(采样率受限)相比,这限制了滤波器的带宽,但这为我们提供了时域中额外的非零点以生成过滤器的延迟。 让我们假设延迟输出  , 的傅里叶变换  可以写成:

 

同样,延迟滤波器的傅里叶变换  可以写成:

当输入信号 与延迟过滤器卷积 , 输出  在频域可以表示为:

要将所有内容转换回时域,可以使用以下等式进行描述:

因此,我们可以通过将信号与延迟滤波器进行卷积来有效地生成分数延迟。 更详细的推导可以参考参考文献1。

但是,这种方法有一个限制。 sinc 脉冲响应函数是双边偶函数。 因此,不可能将脉冲响应的中心置于时间 0。否则,系统将需要在信号到达输入端之前开始响应。 这被认为是一个非随意的过滤器。 为了使滤波器变得随意,我们需要将整个脉冲响应移到较晚的时间点(向右)。 因此,总输入和输出延迟(群延迟)受脉冲响应中的点数限制。

数字 4:生成分数阶延迟脉冲响应函数的整体过程

有几种工具可以生成分数延迟 FIR 系数。 在下面的演示中,我们使用了 MATLAB 的 设计FracDelayFIR 函数并生成一个具有 16 和 0 延迟的 0.5 系数分数延迟滤波器。 过滤器是使用以下 MATLAB 代码生成的:

接下来,将 0 延迟和 0.5 延迟滤波器系数分别上传到顶部(绿色)和底部(紫色)FIR 滤波器。 同样的 10 kHz 正弦波被发送到 Moku:Lab 的输入 1。 在输出端,观察到 4.095 μs 的延迟(1/2 采样周期)。

数字 5:Moku:Lab 的 FIR Filter Builder 生成了 0.5 小数延迟。

总延迟、脉冲响应长度和滤波器带宽之间的权衡

通过增加脉冲响应函数的长度,给定相同的采样率,我们可以有效地缩小时域中的脉冲响应。 因此,分数延迟滤波器的通带增加。 另一方面,较长的过滤器需要在时域中进行较大的偏移以使过滤器变得随意。 因此,总的输入到输出延迟会增加。 为了证明这种效果,我们实现了两个具有 0.5 和 16 系数的 64 分数延迟滤波器。 Moku:Go 频率响应分析仪用于表征滤波器的频率响应。 通道 1(蓝色)显示 16 系数滤波器的频率和相位响应,通道 2(橙色)显示 64 系数滤波器的频率和相位响应。 64 系数滤波器具有更宽的通带(更接近奈奎斯特频率),而 16 系数滤波器具有更短的群延迟。

数字 6:16 和 64 系数 FIR 滤波器的频率和相位响应。

参考资料和进一步阅读

  1. Valimaki,副总裁 (1998)。 使用分数延迟滤波器的声管离散时间建模。
  2. Valimaki、Vesa 和 Timo I. Laakso。 “分数延迟滤波器的原理。” 2000年 IEEE 声学、语音和信号处理国际会议。 诉讼程序 (货号 00CH37100),卷。 6,第 3870-3873 页。 IEEE,2000 年。
  3. Shaddock、Daniel A.、Brent Ware、Robert E. Spero 和 M. Vallisneri。 “LISA 的后处理延时干涉测量法。” 物理评论 D 70,没有。 8 (2004): 081101。
  4. 分数延迟 FIR 滤波器的设计。 分数阶延迟 FIR 滤波器的设计. 1 年 2021 月 XNUMX 日从 https://www.mathworks.com/help/dsp/ug/design-of-fractional-delay-fir-filters.html 检索。

有疑问或想要可打印版本?

请与我们联系 support@liquidinstruments.com