简介《FMCW Radar Design》英文原版技术PDF面向77GHz毫米波雷达、车载防撞与自动驾驶领域的工程师及信号处理学习者。全书系统讲解FMCW连续波雷达设计全流程从线性/三角/分段扫频波形、距离与速度测量原理到LPI低截获概率设计、匹配滤波、脉冲压缩、天线与相控阵方案并深入FFT、多普勒处理、目标检测跟踪等核心算法兼顾电磁理论、信号处理与硬件工程理论与工程实践结合紧密。资源为单文件PDF全书共1个文件压缩包约22.3MB便于离线查阅适合放在案头或平板中随时翻看。已有167人学习/下载。对需要从原理到工程落地完整掌握FMCW雷达、尤其关注77G毫米波频段的设计人员是一份值得收藏的系统性参考。1. FMCW Radar design 的第一道坎先把“测距”这件事用频率差想明白FMCW Radar design 最容易被低估的不是天线而是信号链。很多人把毫米波评估板买回来跑通 demo 就以为会设计 FMCW 了真正到量产才发现距离分辨率、最大不模糊速度、中频带宽这几个指标互相打架调一个另两个就崩。FMCW调频连续波的核心思想是用一个线性调频的连续波代替脉冲把电磁波飞行时间转换成频率差来测量好处是峰值功率低、成本低、测距测速能同时做。这篇文章从信号模型、Python 仿真到参数约束和实测校准把一套可落地的 FMCW 设计路径讲清楚适合正在做毫米波传感器选型、或者准备把算法跑进嵌入式 DSP 的工程师自己完整推演一遍。2. FMCW 雷达的信号模型chirp 怎么变成中频信号再变成距离和速度2.1 线性调频的数学表达与差频beat frequency来源FMCW 发射信号一般写成一个线性调频脉冲串也叫 chirp。瞬时频率随时间线性增长斜率为 S单位 Hz/s带宽为 B持续时间为 Tc。发射信号频率表示为f_tx(t) f_c S·t0 ≤ t Tc电磁波碰到目标反射回来接收信号是发射信号的延时τ 2R/c版本。混频器把发射信号和接收信号相乘、低通滤波后得到一个差频信号IF 信号频率等于发射和接收瞬时频率之差f_b S·τ 2·S·R/c这是整个 FMCW 设计里最核心的公式。距离 R 和中频频率 f_b 是线性关系所以对中频信号做一次 FFT峰值对应的 bin 直接换算成距离。需要特别说明的是这里的 FFT 是对单个 chirp 的 ADC 采样序列做的叫距离维 FFTrange FFT。采样率 Fs 决定了最大可测中频频率也就决定了最大不模糊距离R_max c·Fs /4·S这里中频信号的最高频率一般取 Fs/2。初学者常踩的坑是把 R_max 算成 c·Fs/(2·S)少了 1/2 因子。工程上要留采样定理的裕量IF 信号是实部单边谱实际可用带宽只有 Fs/2。TI 的应用手册和 MATLAB 雷达工具箱里都采用前者。2.2 二维 FFT如何从一组 chirp 里同时拿到距离和速度单 chirp 只能测距离测速度需要一组 chirpframe。假设一个 frame 里有 M 个 chirp目标以径向速度 v 运动相邻两个 chirp 之间目标距离变化 ΔR v·Tc对应中频信号相位变化为Δφ 4π·f_c·v·Tc / c通常写作 4πvTc/λ这就是多普勒频移在相位上的体现。对 M 个 chirp 的距离门range bin沿慢时间维chirp 索引维再做一次 FFT得到多普勒频率 f_D 2v/λ。两次 FFT 组合起来叫 range-Doppler mapRDM。慢时间维 FFT 的 bin 间距对应多普勒分辨率 Δf_D 1/(M·Tc)换算成速度分辨率Δv λ/(2·M·Tc)最大不模糊多普勒频率是 ±1/(2Tc)对应最大不模糊速度v_max λ/(4·Tc)这两条公式直接决定 frame 参数要测高速目标就把 Tc 缩短要区分速度接近的目标就加大 M。但 Tc 变大会占用更长的发射周期影响帧率需要和距离维参数一起权衡。设计变量决定指标公式调参方向带宽 B距离分辨率ΔR c/(2B)B 越大分辨率越高斜率 S最大距离R_max c·Fs/(4S)S 越小测距越远chirp 周期 Tc最大速度v_max λ/(4Tc)Tc 越小测速范围越大frame 内 chirp 数 M速度分辨率Δv λ/(2·M·Tc)M 越大速度分辨率越高2.3 中频采样与 I/Q 通道的取舍IF 信号经过 ADC 采样后做复数I/Q或实数单通道处理。低成本方案常只用单通道于是镜像频率混叠无法区分正负多普勒频率——目标靠近还是远离无法判断。仪表级 FMCW 雷达通常做 I/Q 双通道采集硬件成本增加但换来 ±f_D 的对称可测范围。还有一个工程细节中频信号的频带可以选择镜像折叠利用。令中频中心落在 Fs/4 附近把有用信号搬到 0 到 Fs/2 中间两边镜像留出过渡带方便后续抗混叠滤波。这个技巧在高斜率设计中很常见能省一级低通滤波器。3. 用 Python 从零搭建 FMCW 雷达中频信号仿真3.1 仿真参数表与发射信号生成写仿真前先定参数。把参数集中成一个字典方便调参对照硬件。以下参数对应 77 GHz 车载前向雷达的典型配置import numpy as np params { fc: 77e9, # 载频 Hz B: 1e9, # 线性调频带宽 1 GHz Tc: 40e-6, # chirp 周期 40 us Fs: 10e6, # ADC 采样率 10 MHz M: 128, # frame 内 chirp 数 Ns: 256, # 每个 chirp 的采样点数 R: 50.0, # 目标距离 m v: 12.0, # 目标径向速度 m/s }先算这个参数下能压住哪些指标距离分辨率 ΔR c/(2B) ≈ 0.15 m最大不模糊距离 R_max c·Fs/(4S)S B/Tc 25 GHz/msR_max ≈ 30 m。目标设在 50 m 就超出了最大不模糊距离这就是设计里最常见的首轮迭代Fs 或 S 必须调整。修正一版Fs 提高到 20 MHzR_max ≈ 60 m才能罩住 50 m 目标。采样率翻倍意味着 ADC 功耗和数据处理量翻倍这是实际硬件里头一个要权衡的点仿真阶段就要记录这个代价。# 修正参数 params[Fs] 20e6 S params[B] / params[Tc] # 斜率 25 GHz/ms t np.arange(params[Ns]) / params[Fs] # 快时间轴 Tc_actual params[Ns] / params[Fs] # 实际采样时长3.2 中频信号生成与距离维 FFT发射和接收的混频输出在仿真里可以直接用相位差构造中频信号。考虑目标延时 τ 2(R v·t)/c中频信号复包络写为def generate_if_frame(params, num_targets): 生成一个 frame 的 IF 信号返回形状 (M, Ns) fc params[fc]; B params[B]; Tc params[Tc] Fs params[Fs]; M params[M]; Ns params[Ns] S B / Tc t_fast np.arange(Ns) / Fs frame np.zeros((M, Ns), dtypecomplex) for m in range(M): t_abs m * Tc t_fast # 绝对时间 for (R0, v) in num_targets: tau 2 * (R0 v * t_abs) / 3e8 # 差频相位第一项产生距离频点第二项积累多普勒相位 if_sig np.exp(1j * 2 * np.pi * S * tau * t_fast) \ * np.exp(-1j * 4 * np.pi * fc * (R0 v * t_abs) / 3e8) frame[m] if_sig return frame代码说明第一项 exp(j2πS·τ·t) 是线性调频的差频项距离信息对应到频点位置第二项 exp(-j4πfc·R/c 展开) 是载频项慢时间维的相位积累是速度信息来源。把目标和帧循环分开写方便后续加多目标场景。实际硬件里没有这个复数构造但仿真里用它能验证后面 FFT 峰值位置的正确性。距离维 FFT 直接对每行做 512 点补零 FFTdef range_fft(frame, params): Nfft 512 win np.hanning(params[Ns]) spectrum np.fft.fft(frame * win, Nfft, axis1) freq_bins np.fft.fftfreq(Nfft, d1/params[Fs]) # 正半轴对应距离R c·f/(2S) ranges 3e8 * freq_bins / (2 * params[B] / params[Tc]) return spectrum, ranges参数说明窗函数用 Hanning 是抑制旁瓣的常规做法主瓣会宽一点但旁瓣从 -13 dB 压到 -31 dB 左右多目标场景下值得。ranges 数组里只有正频率索引 0 到 Nfft/2-1 是有效距离负频率部分是镜像。峰值位置换算距离后应落在目标真实距离附近偏差来自 τ 对 t_fast 的近似一般小于一个距离 bin。3.3 二维 FFT慢时间维的速度解算慢时间维 FFT 需要先做距离维 FFT再取每个距离门的一列做第二个 FFTdef doppler_fft(range_spec, params): M params[M] Nfft_d 256 win_d np.hanning(M) # 沿 chirp 维加窗抑制多普勒旁瓣 rdm np.fft.fft(range_spec * win_d[:, None], Nfft_d, axis0) doppler_bins np.fft.fftfreq(Nfft_d, dparams[Tc]) # 速度v λ·f_D/2 lam 3e8 / params[fc] velocities lam * doppler_bins / 2 return rdm, velocities速度分辨率理论值是 λ/(2M·Tc) ≈ 3.9e-3/(2×128×40e-6) ≈ 0.38 m/s。从 velocities 数组找峰值索引速度值应和仿真里设置的 12 m/s 接近±0.38 m/s 误差。CFAR 检测一般在这个 RDM 上做而不是在距离谱上做因为二维检测能同时抑制静态杂波和随机噪声抬底。注意一个耦合现象距离-速度耦合会让运动目标的峰值在距离维偏移一个量偏移量为 ΔR v·Tc 对应的距离变化。低速目标这一项远小于距离分辨率可以忽略但高速目标必须用测得的 v 反向补偿距离维索引否则报出的距离偏大或偏小一个系统量。4. FMCW 参数设计的约束链从分辨率倒推硬件指标4.1 带宽、斜率与 chirp 周期之间的闭式约束FMCW 设计本质是解一组联立不等式。给定雷达指标——距离分辨率 ΔR、速度分辨率 Δv、最大距离 R_max、最大速度 v_max——先用这四个指标把 B、Tc、M、Fs 全部解出来。以 77 GHz 车载雷达为例ΔR c/(2B) ≤ 0.1 m得 B ≥ 1.5 GHzR_max ≥ 100 m结合 Fs 20 MHz 得 S ≤ c·Fs/(4R_max) 15 GHz/msTc B/S ≥ 1.5e9/15e9 100 μs注意这是下限v_max ≥ 70 m/s约 252 km/h 相对速度需要 Tc ≤ λ/(4v_max) ≈ 3.9e-3/(280) ≈ 13.9 μs矛盾出现了Tc 要同时满足 ≥100 μs 和 ≤13.9 μs做不到。这就是 FMCW 单斜率设计的硬伤。业内解法有三条路用更高 Fs意味着 ADC 成本上升、拆成多段斜率sub-chirp、或者换 OFDM/OTFS 波形。4.2 多段斜率 FMCW 的工程折中常见做法是把一个 frame 拆成两个不同斜率的 chirp 组一组大斜率测速、一组小斜率测距。速度组用短 Tc距离组用长 Tc两组交替发射接收端分别做二维 FFT 再配对。配对条件是两组目标的数量和大致距离一致用幅度做关联。代价是帧率下降一半因为每个测量周期只算一组有效数据。以下是一组常用参数起点参数测速组测距组带宽 BMHz1500800chirp 周期 Tcμs1250frame 内 chirp 数 M256128采样率 FsMHz2015R_maxm3055v_maxm/s8119注意测速组 R_max 只有 30 m只能负责中近距离的跟车场景远距目标交给测距组。这就是为什么量产雷达一定有多组波形分时复用而不是单一配置打天下。4.3 OFDM / OTFS 雷达与 FMCW 的取舍最近行业里讨论多的 OFDM 雷达和 OTFS 雷达本质上是把通信波形复用成雷达波形。OFDM 雷达把每个子载波当作独立的连续波在频域做匹配滤波距离维用 IDFT 替代多普勒维用符号间的相移估计。OTFS 更进一步把调制放在时延-多普勒域对高速目标的感知比 OFDM 更稳。对 FMCW 设计者来说这两者不是替代关系而是互补。FMCW 在单目标信噪比和硬件成熟度上仍然占优DSP 里一个 FFT 就能测距但 OFDM/OTFS 的价值在通信感知一体化ISAC场景——同一个波形同时传数据和测距频谱利用率是 FMCW 做不到的。如果项目是车载 V2X 融合认真评估 OTFS如果只是单传感器测距测速FMCW 的成本优势明显。波形选择的第一判据是「是否必须和通信共用硬件」不是性能对比表。4.4 一个实用的参数迭代顺序我一般按这个顺序调参先定 B 满足距离分辨率再定 Fs 满足 R_max然后算 Tc 上下限若上下限交叉就立刻转多段斜率方案最后定 M 满足速度分辨率。每轮改完只动一个变量其他锁死这样能清楚看到哪个指标被牺牲了。仿真里每轮记录 RDM 的峰值旁瓣比和目标位置的偏差偏差超过一个 bin 就回头看是窗函数的问题还是耦合补偿没做。5. 相位校准与多目标配对的两个实战技巧5.1 I/Q 不平衡校准FMCW 雷达上电后第一件事不是采集是校准——尤其是 I/Q 两路的幅度和相位不平衡。I/Q 不平衡会导致镜像频带泄漏镜像抑制比变差在 RDM 上表现为目标左右出现对称的假峰。简单的校准方法注入一个单音中频信号采样后估计幅度比 α 和相位差 φdef iq_calibrate(i_samples, q_samples): x i_samples 1j * q_samples # 幅度比与相位偏差估计Russell 方法 alpha np.std(np.real(x)) / np.std(np.imag(x)) phi np.mean(np.real(x) * np.imag(x)) / \ np.sqrt(np.mean(np.real(x)**2) * np.mean(np.imag(x)**2)) phi np.arcsin(phi) return alpha, phi def iq_correct(sig, alpha, phi): 按标准正交化公式补偿 re np.real(sig) im (np.imag(sig) - np.tan(phi) * re) / (alpha * np.cos(phi)) return re 1j * im校准系数算一次存进 flash每次上电加载即可。这个估计对噪声敏感注入信号的幅度要用接近 ADC 满量程、频率落在中频带中心的值采样点数至少 1024否则 φ 估计的方差下不来。5.2 多目标配对联合门限另一个实战技巧是多目标配对时的幅度-相位联合门限。距离维峰值和速度维峰值分别找出来后用幅度比主峰值/旁瓣和相位方差两个量做联合判决幅度比大于 13 dB 且相位方差小于 0.1 rad² 的峰值才判定为真实目标。这个方法在密集车流场景下能挡住大部分镜面反射形成的假目标。最后补一个排查顺序任何一版参数改动后优先做一次静态场景的 RDM 本底电平记录本底抬升 3 dB 以上先查 I/Q 校准系数再查天线隔离度。这个顺序能省一半调试时间。本文还有配套的精品资源点击获取