首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Farrow滤波器:在离散世界的缝隙里,寻找“丢失的时间”

Farrow滤波器:在离散世界的缝隙里,寻找“丢失的时间”

原创
作者头像
3GPP仿真实验室
发布2026-02-03 20:04:54
发布2026-02-03 20:04:54
1170
举报

在数字信号处理(DSP)的世界里,我们习惯了被“整数”统治。

采样点是 $n$,下一个是 $n+1$。它们像一个个孤立的台阶,泾渭分明,不可逾越。但我们身处的物理世界不是跳跃的,它是连续流动的。

当我们想知道两个采样点“中间”发生了什么时,或者当我们需要把采样率从 44.1kHz 变成一个奇怪的非整数倍时,痛苦就产生了。

你可能会说:“这不就是插值吗?我会。”

但如果你需要在 FPGA 里,以每秒上亿次的速度,动态地、随意地去调整这个“中间位置”呢?比如前一秒你需要延迟 0.3 个周期,下一秒需要延迟 0.3001 个周期?

这时候,普通的滤波器就失效了。你需要请出 Farrow 结构

大多数教科书会冷冰冰地告诉你:Farrow 是一种“基于多项式近似的高效分数延迟结构”。但这把它的格局说小了。

Farrow 真正迷人的地方在于:它用一种极其优雅的方式,解决了“变”与“不变”的矛盾。

它不仅是一个电路结构,更是一种看待时间的哲学。

01 老裁缝的困境:为什么传统滤波器会失效?

为了理解 Farrow 的天才之处,我们先看看没有它的时候,我们是多么笨拙。

想象你是一个裁缝(传统的 FIR 滤波器),你的任务是给信号“做衣服”(滤波/延迟)。

如果客户要求:“给我做一个延迟 $\mu = 0.5$ 的波形。”

这很好办。你翻开《多相滤波系数表》,找到 $\mu = 0.5$ 对应的那一行系数,装进卷积机器,搞定。

但现代通信和音频系统是个“刁钻”的客户。

接收机的时钟在漂移,多普勒效应在变化,客户的要求变成了:

  • “现在我要延迟 0.501。”
  • “哎呀,快了点,现在要 0.502。”
  • “等等,变成 0.499 了。”

这时候,老裁缝就崩溃了。

因为在传统结构里,位置($\mu$)变了,系数($hn$)就得变

每一次微小的调整,你都得去查找新的系数表,或者现场疯狂计算新的系数,然后把几百个乘法器的参数全部刷新一遍。

在硬件实现里,这意味着巨大的计算量、海量的存储器(RAM)和噩梦般的时序约束。

这似乎是一个死结:我们要灵活性,就必须牺牲算力。

02 Farrow 的洞见:把“变量”剥离出来

Cecil W. Farrow 在 1988 年提出这个结构时,他并没有发明新的插值数学(底层通常还是拉格朗日或样条插值),但他做了一件“解构”的工作。

他敏锐地发现:那些随着 $\mu$ 疯狂变化的滤波器系数,其实是有规律的。

如果我们把系数 $hn$ 展开成关于 $\mu$ 的多项式(比如三次多项式),奇迹就发生了:

$$

hn = c_0n + c_1n\mu + c_2n\mu^2 + c_3n\mu^3

$$

看懂了吗?

他把“变量 $\mu$”提出来了!

Farrow 把整个结构拆成了两层:

  1. 底层的“骨架”:是一组完全固定的子滤波器($c_0, c_1, c_2, c_3$)。不管你怎么调延迟,这些滤波器的系数永远不变。它们就像建筑的钢筋,坚固而稳定,直接焊死在电路里。
  2. 上层的“皮肤”:是变量 $\mu$。它在最后才参与进来,通过简单的乘法和加法(Horner 法则),赋予骨架以形态。

这就是 Farrow 的核心哲学:将“动态的控制”与“静态的结构”解耦。

你只需要输入一个变量 $\mu$,就能通过简单的代数运算,让这个坚固的骨架瞬间产生出千变万化的波形。

这一刻,数字信号不再是僵硬的台阶,它变成了一条可以任意滑动的曲线。

03 工程美学的巅峰:它到底在算什么?

很多工程师用 Farrow,只是因为它“省资源、不用重载系数”。但在算法设计者的眼里,它有一种数学上的对称美。

如果你去仔细推导那些固定子滤波器的系数,你会发现一个惊人的事实——它本质上是在逼近泰勒级数(Taylor Series)

让我们试着用物理直觉来理解这几路并行工作的子滤波器:

  • 第 0 路子滤波器:它提取的是信号的“本身”(位置)。
  • 第 1 路子滤波器:它提取的是信号的“一阶导数”(速度/斜率)。
  • 第 2 路子滤波器:它近似提取的是信号的“二阶导数”(加速度/曲率)。

看到这里,你是否有一种豁然开朗的感觉?

Farrow 结构的物理意义其实是:

“只要我掌握了信号在当前时刻的幅值($C_0$)、变化速度($C_1$)和弯曲程度($C_2$),我就能精准地预测它在未来微小时间段内($\mu$)的任何位置。”

这就是为什么 Farrow 能够在不需要存储海量系数表的情况下,实现任意精度的重采样。

它掌握了信号变化的“趋势”,而不是死记硬背每一个点的位置。

这不就是我们一直追求的“第一性原理”吗?

04 这种思想,还能带我们去哪?

理解了 Farrow,你就不只是学会了一个滤波器,你学会了一种“降维”的思维方式。

当你面对一个复杂的、动态变化的系统时,试着问自己:

“我能不能把变的东西提出来,让剩下的东西静止?”

这种思想在各个领域回响:

  • 在无线通信里:我们不知道信号什么时候到达,但 Farrow 让我们能在不知道对方时钟快慢的情况下,强行对齐眼图(定时同步)。它是数字接收机的心脏。
  • 在计算机图形学里:你熟悉的 Bézier 曲线,其生成逻辑与 Farrow 异曲同工。控制点是静止的(像子滤波器),参数 $t$ 是流动的(像 $\mu$),它们共同编织出平滑的形状。
  • 在音频合成里:当你听到合成器里那平滑的滑音(Pitch Bend),或者吉他物理建模中的琴弦振动,往往都是 Farrow 在底层默默地搬运采样点,模拟出物理世界的连续性。

写在最后

工程不仅仅是把寄存器填对,或者是把公式推导出来。

最高级的工程,是找到那个最简洁的结构,让复杂的问题瞬间坍缩。

Farrow 滤波器就是这样一个存在。

它告诉我们要在这个离散的、充满了 0 和 1 的数字世界里,保持对“连续性”的敬畏,以及对“简单”的追求。

下次当你看到 5G 信号的星座图稳定旋转,或者听到数字音乐中丝般顺滑的变调时,不妨在心里向那个默默工作的 Farrow 结构致意:

谢谢你,帮我们在离散数据的缝隙里,找回了丢失的时间。

“欢迎关注公众号 3GPP仿真实验室!这里是通信算法工程师的加油站。

我们不搬运新闻,只输出可运行的代码深度标准解读

👇 新人见面礼(后台回复关键词获取):

回复【LDPC】:获取 5G NR LDPC 编解码 MATLAB 代码(含注释)。

回复【工具】:通信人减负神器:5G NR 帧结构与频点一键生成器(Python+Excel+Web三版)。

回复【Pytorch】:获取 5G NR OFDM 链路 Pytorch 教学代码(含注释),助力人工智能 + 通信

让我们一起探索 6G 的无限可能。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01 老裁缝的困境:为什么传统滤波器会失效?
  • 02 Farrow 的洞见:把“变量”剥离出来
  • 03 工程美学的巅峰:它到底在算什么?
  • 04 这种思想,还能带我们去哪?
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档