
在数字信号处理(DSP)的世界里,我们习惯了被“整数”统治。
采样点是 $n$,下一个是 $n+1$。它们像一个个孤立的台阶,泾渭分明,不可逾越。但我们身处的物理世界不是跳跃的,它是连续流动的。
当我们想知道两个采样点“中间”发生了什么时,或者当我们需要把采样率从 44.1kHz 变成一个奇怪的非整数倍时,痛苦就产生了。
你可能会说:“这不就是插值吗?我会。”
但如果你需要在 FPGA 里,以每秒上亿次的速度,动态地、随意地去调整这个“中间位置”呢?比如前一秒你需要延迟 0.3 个周期,下一秒需要延迟 0.3001 个周期?
这时候,普通的滤波器就失效了。你需要请出 Farrow 结构。
大多数教科书会冷冰冰地告诉你:Farrow 是一种“基于多项式近似的高效分数延迟结构”。但这把它的格局说小了。
Farrow 真正迷人的地方在于:它用一种极其优雅的方式,解决了“变”与“不变”的矛盾。
它不仅是一个电路结构,更是一种看待时间的哲学。
为了理解 Farrow 的天才之处,我们先看看没有它的时候,我们是多么笨拙。
想象你是一个裁缝(传统的 FIR 滤波器),你的任务是给信号“做衣服”(滤波/延迟)。
如果客户要求:“给我做一个延迟 $\mu = 0.5$ 的波形。”
这很好办。你翻开《多相滤波系数表》,找到 $\mu = 0.5$ 对应的那一行系数,装进卷积机器,搞定。
但现代通信和音频系统是个“刁钻”的客户。
接收机的时钟在漂移,多普勒效应在变化,客户的要求变成了:
这时候,老裁缝就崩溃了。
因为在传统结构里,位置($\mu$)变了,系数($hn$)就得变。
每一次微小的调整,你都得去查找新的系数表,或者现场疯狂计算新的系数,然后把几百个乘法器的参数全部刷新一遍。
在硬件实现里,这意味着巨大的计算量、海量的存储器(RAM)和噩梦般的时序约束。
这似乎是一个死结:我们要灵活性,就必须牺牲算力。
Cecil W. Farrow 在 1988 年提出这个结构时,他并没有发明新的插值数学(底层通常还是拉格朗日或样条插值),但他做了一件“解构”的工作。
他敏锐地发现:那些随着 $\mu$ 疯狂变化的滤波器系数,其实是有规律的。
如果我们把系数 $hn$ 展开成关于 $\mu$ 的多项式(比如三次多项式),奇迹就发生了:
$$
hn = c_0n + c_1n\mu + c_2n\mu^2 + c_3n\mu^3
$$
看懂了吗?
他把“变量 $\mu$”提出来了!
Farrow 把整个结构拆成了两层:
这就是 Farrow 的核心哲学:将“动态的控制”与“静态的结构”解耦。
你只需要输入一个变量 $\mu$,就能通过简单的代数运算,让这个坚固的骨架瞬间产生出千变万化的波形。
这一刻,数字信号不再是僵硬的台阶,它变成了一条可以任意滑动的曲线。
很多工程师用 Farrow,只是因为它“省资源、不用重载系数”。但在算法设计者的眼里,它有一种数学上的对称美。
如果你去仔细推导那些固定子滤波器的系数,你会发现一个惊人的事实——它本质上是在逼近泰勒级数(Taylor Series)。
让我们试着用物理直觉来理解这几路并行工作的子滤波器:
看到这里,你是否有一种豁然开朗的感觉?
Farrow 结构的物理意义其实是:
“只要我掌握了信号在当前时刻的幅值($C_0$)、变化速度($C_1$)和弯曲程度($C_2$),我就能精准地预测它在未来微小时间段内($\mu$)的任何位置。”
这就是为什么 Farrow 能够在不需要存储海量系数表的情况下,实现任意精度的重采样。
它掌握了信号变化的“趋势”,而不是死记硬背每一个点的位置。
这不就是我们一直追求的“第一性原理”吗?
理解了 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 删除。