
让我把标题拆开理解一遍。PLFM 是 Pulse Linear Frequency Modulation 的缩写也就是脉冲线性调频RADAR 不用多说代表整个回波接收与处理链路。所以 PLFM_RADAR 这个名字指向的并不是某一台成品雷达的型号而是一套完整的脉冲压缩雷达信号处理项目。这个项目解决的问题非常具体在发射峰值功率受到限制、又想获得足够距离分辨力的前提下怎么通过线性调频宽脉冲加匹配滤波把回波里的目标信息高保真地提取出来。它最典型的应用场景是移动平台近程探测验证比如无人机避障、地面无人车环境感知、小型船只导航雷达以及在实验室里搭一套可重复研究的雷达试验平台。如果你是雷达信号处理方向的学生、刚入行的硬件工程师或者正打算把雷达装到某个无人平台上这套链路上的波形设计、定时同步、脉压实现、杂波抑制和标定方法大概率都是你躲不开的必经之路。1.1 为什么选脉冲线性调频而不是 FMCW很多人拿到“雷达探测”需求后第一反应是调频连续波FMCW。FMCW 体制在车载雷达里确实用得很多硬件简单、灵敏度高、距离速度可以同时解算。但它有一个很棘手的工程问题收发隔离。发射机一直在工作接收机也同时在工作哪怕功放和接收天线之间只泄漏回来一点点信号这个泄漏信号也会把弱目标回波彻底淹没。为了压低泄漏FMCW 雷达要么用环形器要么用双天线加高隔离度要么在基带做泄漏对消每一招都增加硬件复杂度和调试成本。脉冲体制则是在时间上把发射和接收隔开发射机只在脉冲持续时间内工作其余时间全部让给接收。这样收发隔离的压力小了很多接收链路的动态范围也能做得更好。对于我这次要验证的平台来说动辄几十 dB 的杂波动态范围需要处理脉冲体制在这一项上的优势是实实在在的。当然脉冲体制也有自己的缺点比如距离分辨力天然受限于脉宽要想同时获得远作用距离和细距离分辨力就必须引入脉冲压缩。这恰好就是 PLFM 的核心价值发射大时宽带宽积的线性调频脉冲在接收端用匹配滤波把它压成窄脉冲距离分辨力由带宽决定探测能量由脉宽决定两者不再互相绑架。1.2 目标约束与系统架构这个项目从立项起就有明确的性能约束作用距离覆盖 50 米到 3 公里距离分辨力 1.5 米能分辨两个相距较近的目标并能输出目标距离、速度和方位信息供平台决策使用。这个指标不算激进但对一套要从零搭建的工程原型来说已经足够检验信号处理链路里的每一个环节了。系统整体划分成四个模块波形产生与发射模块包括 FPGA 或 DDS 产生基带 I/Q 线性调频波形经过上变频、功放后送至发射天线。射频前端模块包含收发天线、低噪声放大器LNA、下变频链路和中频滤波。数据采集模块ADC 对中频信号带通采样转换为数字中频序列。数字信号处理模块数字下变频、匹配滤波、MTI 对消、多普勒积累、CFAR 检测和点迹输出。这套架构里最值得花时间的是数字处理部分。因为波形参数一旦定下来雷达性能的理论上限就固定了你能不能把这个上限发挥出来完全取决于后端处理干不干净。2. 波形设计从参数计算到落地2.1 线性调频信号的数学表达线性调频信号的复数表达式为s(t) rect(t/Tp) · exp[j·2π·(f0·t 0.5·K·t²)]其中 f0 是起始载频Tp 是脉冲宽度K B/Tp 是调频斜率。瞬时频率随时间线性增加f(t) f0 K·t。也就是说一个脉冲从开始到结束频率总共扫过了 B 赫兹的宽度。有人可能会问为什么要让频率“扫”起来答案在于匹配滤波。发射信号通过目标反射回来后接收机里存放着一份与发射信号相位严格同步的参考信号两者做相关运算时同一目标在不同时刻的回波会在某个时延处相干叠加形成一个尖锐的相关峰。线性调频相当于给脉冲内部的每一个时刻贴上了不同的频率标签让匹配滤波可以把它们精确地“聚”到一起。当然没有任何波形是免费的。线性调频信号在做匹配滤波时会产生距离-多普勒耦合也就是目标径向速度带来的多普勒频移会让相关峰峰值位置沿距离轴发生少量偏移。脉冲体制里这个偏移通常可以忽略但如果目标速度很快、脉宽又很长就需要在数据处理时补偿掉。2.2 核心参数计算带宽、脉宽、PRF距离分辨力的公式是ΔR c / (2B)如果指标要求 ΔR 1.5 米那么带宽B c / (2ΔR) 3×10⁸ / (2×1.5) 100 MHz这个数字一出来后面很多东西都被它锁定了。采样率至少要到 200 MSPS 以上滤波器带宽、功放平坦度、天线带宽都要覆盖 100 MHz这些都是硬件上逃不掉的开销。脉宽 Tp 的选择则要看能量的需求。目标回波功率和脉宽成正比脉宽越长单个脉冲携带的能量越大。但它也决定了信号的时宽带宽积 Tp·B这个数值就是匹配滤波的理论处理增益。比如 20 微秒脉宽配 100 MHz 带宽时宽带宽积是 2000换算成对数约 33 dB。通俗点说就是用 20 微秒的宽脉冲发射经过脉压后能得到大约 33 dB 的信噪比提升再弱的目标回波也会被抬起来。脉冲重复频率PRF的选取需要同时考虑最大无模糊距离和多普勒覆盖。最大无模糊距离 R_max c / (2·PRF)。如果 PRF 取 10 kHzR_max 就是 15 公里对近程平台来说完全溢出覆盖需求而多普勒无模糊速度范围是 ±λ·PRF/4载频 5.8 GHz 时波长约 51.7 毫米对应最大无模糊速度约 ±129 m/s中低速平台和一般地面目标都在这个范围里。下表是我在这个项目里实际使用的波形参数可以作为一套能直接跑通的基准配置参数数值说明载频5.8 GHzC 波段兼顾体积与性能带宽100 MHz理论距离分辨力 1.5 m脉宽20 μs时宽带宽积 2000脉压增益约 33 dBPRF10 kHz最大无模糊距离 15 km采样率250 MSPS覆盖带宽并留有余量ADC 位数14 bit动态范围满足强杂波场景2.3 频段选型的工程考量选 5.8 GHz 这个载频我不完全是拍脑袋。S 波段2~4 GHz大气衰减小、穿透性好适合远距离但天线尺寸较大同样增益的天线在 5.8 GHz 下可以做小一半左右。X 波段8~12 GHz天线更小、带宽更容易做大但雨衰和器件成本就上去了。对移动平台来说C 波段是一个比较舒服的折中天线尺寸适中带宽能轻松做到 100 MHz 以上器件成熟度高功放也好选。如果你的平台对体积有更极限的要求可以用 X 波段如果更看重低成本和小体积甚至可以考虑 K 波段但那些频段的射频器件选型和 PCB 设计要求都会明显更高。3. 数字信号处理链路的完整实现3.1 波形产生DDS 与正交调制数字链路的第一步是产生基带线性调频 I/Q 数据。我用的方法是在 FPGA 里做一个 DDS 核用相位累加器的步进值随时间线性增加来产生频率递增的正弦信号同时输出 I、Q 两路。因为后续上变频要用正交调制器需要的是复数基带信号而不是单路实信号。这一步有几个细节值得提醒。第一DAC 更新率要留够余量。基带信号带宽 100 MHzDAC 更新率至少要在 250 MSPS 以上否则高频分量会在频谱上折叠出镜像。第二必须在波形产生之后实测一次发射链路的幅频响应因为 DAC、滤波器、功放的幅频特性都不可能是理想的平坦直线如果不做补偿脉压后的主瓣会有畸变旁瓣也会被抬高。3.2 接收链路与中频采样接收端的经典做法是先把射频信号经过 LNA 放大下变频到几十 MHz 的中频再交给 ADC 采样。很多初学者会下意识以为采样率越高越好其实在中频采样的架构里我们按照带通采样定理选择采样率就行关键是让频谱完整搬移、不发生混叠。比如中频选 120 MHz采样率用 250 MSPS信号频谱落在 70~170 MHz 之间正好处于第一奈奎斯特区内。这样既降低了对 ADC 速率的要求数字下变频的实现也更简单。采样得到的是一路实中频序列要得到 I/Q 数据可以在 FPGA 里做一个数字下变频NCO 产生 120 MHz 本振混频后级联低通滤波和抽取最后输出基带 I/Q 数据。这段链路里最容易被忽视的是滤波器的过渡带设计。过渡带太陡时域会有振铃表现为脉压后出现伪峰过渡带太缓带外泄漏又会污染相邻频段。我的经验是先用离线数据在仿真环境里把滤波器参数粗调一遍再上板看实际频谱反复迭代几轮才能拿到一个“干净”的基带信号。3.3 匹配滤波与旁瓣抑制匹配滤波在数字域有标准实现方式回波做 FFT参考信号做 FFT 后取共轭两者相乘再 IFFT 回时域。写成伪代码就是import numpy as np # r: 一帧回波数据, ref: 与发射信号一致的参考信号 N_fft len(r) len(ref) - 1 R_fft np.fft.fft(r, N_fft) Ref_fft np.fft.fft(ref, N_fft) y np.fft.ifft(R_fft * np.conj(Ref_fft), N_fft)这里有三个要点。第一参考信号必须和发射信号严格一致包括起始相位和采样时钟。如果参考信号和发射信号有频率或相位偏差相关峰幅度会下降距离测量也会偏移。第二FFT 长度必须大于回波长度和参考长度之和否则圆周卷积会把能量从正确的距离单元混叠到其他位置这属于工程上很低级但很容易犯的错误。第三输出信号是相关峰旁瓣控制必须提前规划。如果不加窗LFM 脉压后的第一旁瓣只比主瓣低 13.2 dB。这个水平在单目标场景下凑合但在多目标或强杂波场景下强目标的旁瓣会把附近弱目标完全淹没。我在参考信号上做了汉明窗加权旁瓣压到约 -42 dB代价是主瓣展宽约 1.5 倍距离分辨力从理论值的 1.5 米变成大约 2.2 米。窗函数第一旁瓣电平主瓣展宽倍数适用场景矩形窗-13.2 dB1.0对旁瓣不敏感汉明窗-42 dB1.5一般工程默认泰勒窗-35~-45 dB1.3~1.6需要灵活权衡凯泽窗可调可调定制化要求高如果你的场景里强杂波特别多可以直接上泰勒窗或凯泽窗。这两种窗的旁瓣抑制能力可以通过参数连续调节在旁瓣电平和主瓣宽度之间找平衡调起来更灵活。3.4 慢时间积累、多普勒处理和 CFAR 检测单个脉冲做完脉压后得到的一维距离剖面只能告诉你“多远有回波”还不能测速度。要测速度需要用多个脉冲组成慢时间序列把每个距离单元上的复数值沿脉冲序号方向做 FFT就得到该距离单元上的多普勒频谱。这个过程叫慢时间积累能同时提高信噪比和获得目标速度。我的处理流程是多脉冲距平排列成矩阵先做一个简单的两脉冲对消器把静止杂波抑制掉再沿慢时间维做 FFT输出距离-多普勒二维图。对消器虽然简单但效果立竿见影地面建筑、护栏这一类固定目标的回波在相邻脉冲间相位基本不变相减后直接对消只剩下运动目标。检测环节用 CFAR 而不是固定门限。CFAR 的核心思想是对待检单元附近的一段区域做统计估计当前的杂波功率再把门限设为统计量的若干倍。这样做的好处是门限自适应杂波强的地方门限抬高杂波弱的地方门限降低检测性能比固定门限好太多。CA-CFAR单元平均恒虚警是最常用的实现。待检单元前后各留几个保护单元再取保护单元两侧的多个训练单元求平均值作为杂波功率估计门限 均值 × 门限因子。保护单元的目的是防止强目标能量泄漏进训练单元训练单元数量则决定估计的稳健性。实际调参时我发现虚警率设得太低弱小目标会被门限压掉设得太高强杂波点又会漏进点迹。我最终取了虚警率约 1e-5 到 1e-6 之间的配置在近地杂波环境里能保持稳定的检测效果。如果目标密集出现、相互遮挡的情况比较多可以把 CA-CFAR 换成有序统计 CFAROS-CFAR它能抵抗多个目标同时对训练单元的污染。3.5 点迹输出与平台集成距离-多普勒图只是中间产物真正的雷达要输出目标点迹。检测到目标后需要把距离-多普勒单元的坐标换算成平台坐标系下的距离、方位、俯仰再结合惯导数据做运动补偿最终送给显控或决策模块。这里的工作量大多不在算法而在数据流衔接FPGA 做完脉压和积累后点迹量可能很大得做降采样、合并和优先级排序再用低延迟接口发给上位机。平台集成时我踩得最深的一个坑是同步。发射脉冲和接收采样必须有统一时基否则哪怕每个脉冲都做了完美匹配滤波慢时间积累时也会因为时间漂移失配多普勒谱会出现异常展宽。解决方法是把 PRF 触发信号由 FPGA 内部产生并回环到接收 ADC 的采样时钟域保证每个脉冲的起点都和发射严格对齐。硬件端还要注意收发天线的相位中心对齐如果发射和接收天线分开安装两路的相位误差会直接影响测角精度需要在标定的时候做补偿。4. 实测排错那些教科书里不会写的坑4.1 频谱混叠和镜像频率第一次整机联调时我在距离-多普勒图上总能看到一个“影子目标”位置刚好和真实目标成镜像。排查到最后发现是 ADC 采样率设得太低中频信号在带通采样时发生频谱折叠真实回波的高频部分混叠到了错误位置。这类问题的排查思路很直接把发射机关掉接一个已知信号源看频谱里有没有多余的峰值。如果有优先检查采样率和前端抗混叠滤波器的截止频率。4.2 强目标旁瓣淹没弱目标城市环境里大楼墙面、金属围栏这类强反射体非常多。它们的回波强脉压后旁瓣也跟着高旁边的弱目标哪怕真实存在也很容易被掩埋。我采用的方案是两层防护脉压前先用幅度归一化和非线性压缩把信号动态范围压低CFAR 之前再对先验的强静态杂波位置做凹口处理。如果条件允许也可以在波形设计阶段改用非线性调频或相位编码波形把旁瓣能量打散到更宽的时延区间。4.3 平台运动带来的多普勒展宽静态调试一切正常一装到运动平台上多普勒谱立刻变糊。原因并不复杂平台径向速度给所有回波叠加了一个额外的多普勒频移。这时候不能简单调 CFAR 门限去掩盖而要做运动补偿根据惯导提供的平台速度和航向对每个距离单元的相位做补偿后再积累。一个容易忽略的细节是惯导数据延迟如果延迟大于最小积累时间间隔补偿后的残余相位误差反而会让速度估计变乱。4.4 标定和校准必须前置这个系统里各种非理想特性很折磨人功放非线性、I/Q 不平衡、滤波器群延迟、天线相位中心不一致。这些误差不标定理论值永远只是参考。我的做法是每次上电后先跑一遍内部校准环路把发射信号直接耦合进接收通道测出系统延迟和幅相响应再在数字处理中做补偿。这一步做完实测距离精度会收敛很多这为后续测角、跟踪打下基础。5. 一点经验总结PLFM_RADAR 做下来我最深的一个体会是雷达工程百分之八十的时间都花在“让信号变干净”这件事上。波形设计和理论参数计算只是起点频谱不混叠、时序对齐、系统标定做完后面的检测和跟踪才谈得上。另一个很实际的经验是不要一上来就追求极限参数先搭一个带宽适中、硬件简单、能跑通全链路的原型比一开始就堆高性能器件重要得多。参数优化留到链路稳定之后再去抠效率会高不少。最后分享一个小技巧调试雷达时准备一个金属角反射器当标准目标比用真人真车方便得多。它雷达截面积大、方向性好、成本低在不同距离上测一组回波能直观看到脉压峰值、旁瓣电平和距离测量误差随信噪比变化的曲线。这套方法论让我把很多“看起来玄学”的问题变成了可以量化的指标。