第二章 雷达信号处理链(上):ADC数据采集、距离维FFT、多普勒维FFT、距离-多普勒图生成

各位同学,欢迎来到雷达信号处理链的第一部分。今天我们要聊的,是整个毫米波雷达最核心的“骨架”——从天线收到模拟信号,到最终生成一张漂亮的距离-多普勒图,中间到底发生了什么。

说实话,我刚入行那会儿,觉得雷达不就是“发个波,收个波,算个距离”嘛。直到第一次调板子,发现出来的图全是噪点,才意识到这里面门道有多深。好,咱们一步步来。

2.1 ADC数据采集:从模拟到数字的第一步

雷达前端混频器输出的信号,是模拟的差拍信号(IF信号)。计算机不认识模拟信号,所以得先把它变成数字。这一步,就是ADC(模数转换器)的工作。

ADC采样的核心参数有两个:

  • 采样率(Fs):决定了能看到的最高频率。根据奈奎斯特定理,采样率必须大于信号最高频率的两倍。
  • 采样点数(N):决定了后续FFT的频率分辨率。采样点数越多,频率分辨得越细。

关键公式:

距离分辨率 ΔR = c / (2 × B),其中B是调频带宽。

最大不模糊距离 R_max = (Fs × c) / (2 × S),其中S是调频斜率。

嗯,这里要注意:采样率不是越高越好。采样率太高,数据量暴增,处理不过来;采样率太低,远距离目标会“折叠”到近处,产生模糊。我有个项目,客户非要看200米外的卡车,结果采样率设低了,卡车显示在50米的位置,差点出事故。

我的经验:采样率一般取最大中频频率的1.2~1.5倍。留点余量,但别太浪费。

2.2 距离维FFT:把时间信号变成距离信息

ADC采集到的数据,是一串随时间变化的电压值。但我们要的是距离,不是时间。怎么办?做傅里叶变换。

距离维FFT,说白了就是把时域信号变到频域。差拍信号的频率 f_b 和目标的距离 R 成正比:

R = (f_b × c) / (2 × S)

所以,只要找到频谱上的峰值频率,就能算出距离。

具体步骤:

  1. 对每个chirp的ADC采样数据,做N点FFT。
  2. 取FFT结果的幅度(或功率)。
  3. 找到峰值对应的频率索引,换算成距离。
// 伪代码示例
for each chirp in frame:
    adc_data = read_adc_samples(chirp)  // 读取N个采样点
    windowed_data = adc_data * hamming_window(N)  // 加窗抑制旁瓣
    fft_result = fft(windowed_data, N)  // N点FFT
    magnitude = abs(fft_result)  // 取幅度
    range_bins = magnitude[0 : N/2]  // 只取正频率部分
    store_to_range_matrix(chirp, range_bins)

避坑指南:我曾经不加窗直接做FFT,结果强目标旁边的弱目标完全被旁瓣淹没了。加窗虽然会稍微降低分辨率,但能大幅提升动态范围。汉明窗、汉宁窗都行,看你的需求。

2.3 多普勒维FFT:从多个chirp中提取速度

距离维FFT做完,我们得到的是每个chirp的距离信息。但一个chirp只能知道目标有多远,不知道它动没动。要测速度,需要多个chirp。

想象一下:你对着一个移动的目标连续发射多个chirp。目标每移动一点,回波的相位就会变化。这个相位变化,就是速度的“指纹”。

多普勒维FFT的做法:

  • 对同一个距离门(range bin)上的所有chirp,再做一次FFT。
  • 这次FFT的峰值位置,对应的是多普勒频率 f_d。
  • 速度 v = (f_d × λ) / 2,其中λ是波长。

你想想看,这其实就是一个二维FFT:先对每个chirp做距离FFT,再对每个距离门做多普勒FFT。结果就是一个二维矩阵,行是距离,列是多普勒(速度)。

速度分辨率: Δv = λ / (2 × T_frame),T_frame是帧周期。

最大不模糊速度: v_max = λ / (4 × T_chirp),T_chirp是chirp周期。

我个人习惯把多普勒维FFT叫做“慢时间FFT”。因为chirp之间的采样率(PRF)比ADC采样率慢得多。这个叫法虽然不正式,但好记。

2.4 距离-多普勒图生成:把二维数据可视化

好了,现在我们有了一张二维矩阵:行是距离门,列是多普勒门。每个元素的值,代表该距离-速度单元的回波强度。

怎么把它变成一张图?很简单:

  1. 取每个元素的幅度(或功率)。
  2. 用颜色映射(比如热力图)把幅度值映射成颜色。
  3. 横轴标距离,纵轴标速度。

这张图,就是距离-多普勒图(Range-Doppler Map,简称RD图)。

RD图是雷达目标检测的“原材料”。静态目标会出现在零多普勒线上;靠近雷达的目标在正多普勒区;远离的在负多普勒区。嗯,这里要注意:多普勒正负取决于目标运动方向相对于雷达视线。

我的经验:RD图出来后,先别急着做检测。先看看背景噪声水平。如果整张图都是亮的,说明有干扰或者噪声太大。我曾经遇到一次,RD图全是竖条纹,查了半天发现是电源纹波耦合到了ADC参考电压上。

下面这张图,展示了整个信号处理链的流程:

雷达信号处理链(上)流程图 ADC数据采集 距离维FFT 多普勒维FFT RD图生成 关键参数: • 采样率 Fs:决定最大不模糊距离 • 采样点数 N:决定距离分辨率 • chirp数 M:决定速度分辨率 • 帧周期 T_frame:决定最大不模糊速度 • 加窗类型:汉明/汉宁/布莱克曼 • FFT点数:通常补零到2的幂次 • 动态范围:60~80dB典型值 • 噪声基底:-120dBm左右

RD图生成后,后续的CFAR检测、角度估计、目标跟踪,都是在这张图上进行的。所以,RD图的质量直接决定了整个雷达系统的性能。

重要提醒:RD图上的每个像素,都对应一个距离-速度单元。如果两个目标在同一个距离门和同一个多普勒门上,它们就会“撞车”,分不开。这就是为什么需要高分辨率雷达。

好了,这一章的内容就到这里。ADC采集、距离FFT、多普勒FFT、RD图生成,这四个步骤环环相扣。每一步做不好,后面的结果都会受影响。我个人建议,初学者先用仿真数据跑通整个流程,再上硬件调试。这样能省很多时间。

可可精品资料库