一文看懂 FMCW 毫米波雷达的底层逻辑

4 阅读3分钟

大家好,这里是 3GPP 仿真实验室。

平时我们聊了太多 5G/6G、空天基网络和信道编解码。今天我们稍微跨个界,来拆解一个在自动驾驶、无人机甚至是智能家居里杀疯了的物理层传感器——毫米波雷达。

你可能会嘀咕,现在满大街都是高清摄像头和动辄上百线的激光雷达(LiDAR),毫米波雷达还有什么戏份?原因很简单:摄像头一到黑夜和雨雪天就容易“致盲”,激光雷达成本高昂且同样怕大雾。而毫米波雷达就像个不挑环境的“全天候战士”,穿透力强、测速极准,更重要的是,硬件成本已经被打下来了。

在当今的毫米波雷达界,绝对的统治者只有一种技术体制:FMCW(Frequency Modulated Continuous Wave,调频连续波)

今天,我们就撇开那些封装好的 API,直接下沉到信号处理的最底层,硬核拆解 FMCW 雷达是如何利用电磁波,把真实世界的 3D 坐标精准还原出来的。

打破“一问一答”:为什么是 FMCW?

老派的脉冲雷达(Pulse Radar)原理很直白:大吼一声(发射极短的高功率脉冲),然后掐着秒表等回音。算出一来一回的时间差,距离就有了。但这就带来两个致命伤:一是盲区大,吼的时候听不见,离得太近就瞎了;二是瞬时峰值功率极其恐怖,射频前端成本压不住。

FMCW 换了一种极其优雅的降维打击思路。

它不吼,而是像吹滑音笛一样,持续不断地发射一种频率随时间线性攀升的信号——也就是大家常听说的 Chirp(啁啾信号)。

正因为发射频率在均匀增加,当这个信号打到目标弹回来时,我们只要拿“此刻正在发射的频率”去减“刚刚接收到的回波频率”,就能算出这个信号在空中飞了多久,进而推断出距离。

测距:混频器里的降维魔法

我们把这个过程翻译成数学语言。假设发射的一个 Chirp 信号,其频率的爬升斜率为 SS

S=BTcS = \frac{B}{T_c}

这里面 BB 是扫频带宽,TcT_c 是一个 Chirp 的持续时间。

雷达发出去的波,飞到目标再弹回来,飞行时间设为 τ\tau。很显然:

τ=2Rc\tau = \frac{2R}{c}

RR 是目标距离,cc 是光速)。

此时,雷达射频链路里的核心器件——混频器(Mixer)登场了。它在模拟域直接把发射信号和接收回波“相乘”,经过低通滤波后,直接拍出了一个差频信号(中频信号 IF)。这个中频信号的频率 fbf_b 就是两者的频率差。

既然频率是线性增加的,那时间差 τ\tau 对应的也就是频率差:

fb=Sτ=S2Rcf_b = S \cdot \tau = \frac{S \cdot 2R}{c}

稍微挪一下位置,FMCW 最底层的测距公式就出来了:

R=cfb2SR = \frac{c \cdot f_b}{2S}

在数字信号处理(DSP)流水线中这意味着什么? 意味着距离 RR 和中频频率 fbf_b 是严格绑定的。我们只需要对 ADC 采样后的中频数据跑一次 1D FFT(Range FFT),频谱上哪个频点冒了尖(峰值),目标就在那个距离上!

测速:捕捉相位的微小涟漪

测距搞定了,那速度怎么算?如果只发一个 Chirp,你其实是测不出速度的。

FMCW 的聪明之处在于,它会密集地连发一串(比如 128 或 256 个)一模一样的 Chirp,这就构成了一帧(Frame)。

想象一下,如果目标在动,那么在相邻两个 Chirp 之间,目标的距离 RR 会发生极其微小的位移(通常是毫米级)。这点位移,在刚才的 1D FFT 频谱上根本看不出频偏(频率分辨率不够),但是!它会剧烈地改变回波信号的相位(Phase)

物理常识告诉我们,微小的距离变化 ΔR\Delta R 对应着多大的相位差 Δϕ\Delta \phi 呢?

Δϕ=4πΔRλ\Delta \phi = \frac{4\pi \Delta R}{\lambda}

ΔR\Delta R 不就是速度 vv 乘以两个 Chirp 之间的间隔时间 TcT_c 吗?代入进去,速度 vv 就呼之欲出了:

v=λΔϕ4πTcv = \frac{\lambda \cdot \Delta \phi}{4\pi T_c}

在算法实现上,这步操作丝滑得让人拍案叫绝:我们在做完 1D FFT 的基础上,沿着 Chirp 索引的维度,再跑一次 2D FFT(Doppler FFT)。

算完之后,你就会得到一张经典的距离-多普勒热力图(Range-Doppler Heatmap)。图上的高亮像素点,直接同时锁死了目标的两个维度:离我多远,以及相对我跑得多快。

测角:天线阵列的几何学

有了距离和速度,最后一块拼图就是角度(方位角与俯仰角)。这就不是单根天线能搞定的了,我们需要请出 MIMO 天线阵列。

测角的底层逻辑依然是“玩弄”相位。

当回波以某个角度 θ\theta 拍到天线阵列时,到达相邻两根接收天线(间距设为 dd)的路径长度会有微小的波程差,大小为 dsinθd \sin\theta

这个多跑的路程,同样会造成两根天线接收信号之间的相位差 Δω\Delta \omega

Δω=2πdsinθλ\Delta \omega = \frac{2\pi d \sin\theta}{\lambda}

反解一下,角度 θ\theta 就拿到手了:

θ=arcsin(λΔω2πd)\theta = \arcsin\left(\frac{\lambda \cdot \Delta \omega}{2\pi d}\right)

在基带处理代码里,我们在 2D FFT 找到目标峰值后,沿着天线维度(Antenna Index)再抡一次 3D FFT(Angle FFT)。至此,FMCW 雷达经典的 3D FFT 处理链路就彻底闭环了。

写在最后:从公式到代码变现的距离

复盘一下,FMCW 雷达的物理机制其实充满了一种对仗的数学美感:

  • 距离,映射到了单个 Chirp 内的中频频率上。
  • 速度,映射到了多个 Chirp 间的多普勒相位上。
  • 角度,映射到了多根天线间的空间相位上。 而这所有的一切,最后都被伟大的 FFT 统一在了矩阵运算里。

不过,推导公式只是键盘侠的狂欢,真正的工程落地才刚刚开始。在实际的物理层仿真和基带芯片开发中,你马上就会被一堆现实问题糊一脸:

  • 底噪太高怎么办?怎么手写 CFAR(恒虚警率) 算法从杂波里抠出真实目标?
  • 目标跑得太快,相位转了一圈以上,**速度模糊(Velocity Ambiguity)**怎么解?
  • 天线阵列太少,角度分辨率不够,怎么利用 MIMO 体制做虚拟孔径合成

这才是真正拉开算法工程师段位的地方。