4. 基于S32R的干扰检测与特征提取
干扰抑制的第一步不是“抑制”,而是“看清”。如果系统不知道当前回波里是否存在干扰、干扰落在哪个距离-多普勒区域、占用了多宽带宽、持续了多长时间、调频率是正是负,那么后续的自适应滤波、时域加窗或子空间投影都只能盲目工作。S32R 系列处理器在雷达信号链中提供了两类关键硬件资源:SPT(Signal Processing Toolbox,信号处理工具箱)和 BBE32(Bit Manipulation and Butterfly Engine,位操作与蝶形运算引擎)。前者负责 FFT、复数乘加、向量运算等信号处理原语,后者擅长位级操作、查表、蝶形运算和快速排序类操作。把干扰检测算法映射到这两类资源上,是本节要解决的核心工程问题。
4.1 干扰检测的三条技术路线
在 S32R 上实现干扰检测,通常有三条互补的路线,它们分别对应不同的干扰类型和计算代价。
能量检测是最直接的方法。雷达前端 ADC 采样后,对每个 chirp 的时域样本计算滑动窗能量,或者对距离维 FFT 后的距离门能量做统计。当某个距离门或某个时间窗的能量显著高于噪声底时,判定存在干扰。能量检测的优点是计算量小、可用 SPT 的向量乘加和平方运算直接实现;缺点是无法区分干扰和真实目标,强目标回波也会触发告警。因此工程上通常把能量检测作为第一级粗筛,用较低的阈值保证不漏检,再用后续方法做确认。
循环平稳检测利用干扰信号(尤其是通信、广播类干扰)的循环平稳特性。雷达回波中的目标信号通常是非循环平稳的,而很多人为干扰具有周期性的调制结构,其循环谱在非零循环频率处存在峰值。在 S32R 上实现时,可以先对时域样本做分段,计算每段的循环自相关,再通过 BBE32 的位操作和蝶形运算加速相关累加。循环平稳检测的计算量明显高于能量检测,但它能在低信噪比下区分干扰与目标,适合作为第二级确认。
时频分析则用于非平稳干扰,例如扫频干扰、脉冲干扰和跳频干扰。短时傅里叶变换(STFT)是最常用的手段:把长时信号切成短段,每段加窗后做 FFT,得到时间-频率二维分布。在 S32R 上,STFT 的每一帧 FFT 可以交给 SPT 的 FFT 加速器完成,帧间重叠和窗函数乘法可以用 SPT 的向量运算实现。时频图能直观显示干扰的调频率、持续时间和带宽,是特征提取的主要来源。
4.2 能量检测在 SPT 上的实现细节
假设雷达前端输出 256 个复数样本为一个 chirp,采样率 10 MHz,噪声底约为 -90 dBm。能量检测的第一步是计算每个样本的功率:P[n] = I[n]² + Q[n]²。在 SPT 中,这可以映射为一次向量平方运算加一次向量加法,256 点大约消耗几十个周期。随后做长度为 16 的滑动窗求和,得到平滑后的功率序列。阈值设定通常采用噪声底加固定余量,例如噪声底估计值加 10 dB。如果某个窗的功率超过阈值,就标记该时间位置为“疑似干扰”。
这里有一个工程细节:噪声底不是固定不变的,它会随温度和增益漂移。因此实际实现中会用前若干个 chirp 的功率中位数作为噪声底估计,再乘以一个系数。SPT 本身不提供排序功能,但可以用 BBE32 的位操作做近似中位数估计,或者用简单的指数平均代替。例如:
noise_floor = alpha * noise_floor + (1 - alpha) * mean_power;
threshold = noise_floor * 10^(margin_dB / 10);
其中 alpha 取 0.95 左右,margin_dB 取 8~12 dB。这个阈值会随帧更新,避免因环境变化导致虚警率失控。
4.3 循环平稳检测与 BBE32 的配合
循环平稳检测的核心是计算循环自相关函数。对于离散信号 x[n],循环频率为 α 的循环自相关定义为:
R_x^α(τ) = lim (1/N) Σ x[n] * x*[n+τ] * exp(-j2παn)
直接计算这个式子需要大量复数乘法和指数运算。在 S32R 上,可以把 exp(-j2παn) 预先做成查找表,用 BBE32 的查表指令快速读取。同时,x[n] * x*[n+τ] 的共轭乘法可以用 SPT 的复数乘法指令完成。BBE32 的蝶形运算适合做分段累加:把 N 个样本分成若干段,每段先做局部累加,再用蝶形结构合并,减少中间结果的存储压力。
实际工程中不会对所有循环频率做扫描,而是根据先验知识选择几个候选循环频率。例如,对于常见的调频连续波干扰,循环频率往往与调制周期有关;对于脉冲干扰,循环频率与脉冲重复频率有关。候选循环频率的数量通常控制在 8~16 个,这样计算量可以接受。
4.4 时频分析与特征提取
时频分析是特征提取的关键。假设我们取 1024 个时域样本,窗长 128,重叠 50%,则可以得到 15 帧 STFT 结果,每帧 128 个频率点。在 S32R 上,每帧 FFT 由 SPT 的 FFT 加速器完成,128 点复数 FFT 大约需要几百个周期。15 帧总计几千个周期,对于帧周期为 50 ms 的雷达来说完全可接受。
得到时频图后,特征提取按以下逻辑进行:
- 带宽 B:在时频图上,对每一帧找到能量超过阈值的频率范围,取所有帧的并集,得到干扰占用的频率跨度。如果干扰是扫频的,带宽就是扫频范围;如果是窄带干扰,带宽就是其占用宽度。
- 持续时间 T:统计能量超过阈值的帧数,乘以帧间步进时间。例如帧步进为 64 个样本,采样率 10 MHz,则每帧间隔 6.4 μs,若连续 20 帧超阈值,持续时间约为 128 μs。
- 调频率 K:对时频图上能量脊线做线性拟合,斜率即为调频率。正斜率表示频率随时间上升,负斜率表示下降。拟合时可以用最小二乘法,也可以用简单的首尾帧频率差除以时间差做粗估。
- 干扰类型:根据 B、T、K 的组合判断。例如 B 大、T 长、K 接近常数,可能是扫频干扰;B 小、T 短、周期性出现,可能是脉冲干扰;B 大、T 长、K 接近零,可能是宽带噪声干扰。
4.5 一个可参考的特征提取参数表
下表给出一个教学示例中的参数设置和典型输出,用于说明特征提取的输入输出关系。这些数值属于合理假设,不是实测结果。
| 参数/特征 | 符号 | 示例值 | 说明 |
|---|---|---|---|
| 采样率 | fs | 10 MHz | ADC 复数采样率 |
| STFT 窗长 | Nw | 128 | 汉明窗 |
| 帧重叠 | — | 50% | 帧步进 64 样本 |
| 检测阈值 | — | 噪声底 + 10 dB | 指数平均更新 |
| 干扰带宽 | B | 约 2.4 MHz | 时频图频率轴展宽 |
| 持续时间 | T | 约 128 μs | 20 帧 × 6.4 μs |
| 调频率 | K | 约 +18.75 MHz/ms | 脊线斜率 |
| 干扰类型 | — | 正扫频 | B 大、T 长、K 为正 |
4.6 从特征到抑制策略的映射
特征提取的最终目的是为抑制策略提供依据。一个简单的映射关系是:如果干扰是窄带且持续时间长,优先使用时域陷波或频域置零;如果是宽带扫频,优先使用自适应滤波或子空间投影;如果是短脉冲,优先使用时域加窗或脉冲消隐。调频率的符号和大小则决定了自适应滤波器的更新方向。在 S32R 上,这些策略的切换可以通过软件状态机实现,而特征提取模块输出的 B、T、K 和类型标志就是状态机的输入条件。
需要强调的是,干扰检测和特征提取不是一次性的工作,而是每个雷达帧都要执行的在线过程。S32R 的 SPT 和 BBE32 提供了足够的算力,使得在 50 ms 的帧周期内完成三级检测和特征提取成为可能。实际部署时,建议先用能量检测做快速粗筛,只在粗筛触发时才启动循环平稳检测和时频分析,这样可以显著降低平均功耗和计算负载。