调频信号检测

信息处理 信号检测 特别提款权 调频
2022-02-16 16:36:47

我只是在玩基于 RTL 的廉价 SDR 加密狗,我想实现一个简单的 FM 无线电接收器。我设法毫无问题地获得单声道声音,但是我决定对广播电台实施自动扫描。

我的第一种方法是检测功率谱中的峰值,但结果并不让我满意,因为只检测到几个通道,比使用便宜的独立无线电接收器要少得多。请注意,在已知为无线电台的特定频率上进行调谐,但在功率谱中看不到清晰的峰值,会产生具有合理质量的解调声音。

然后我接近了这样一个事实,即我正在寻找的是调频信号,并尝试基于 FM 星座构建一些调谐测量(样本模数的标准偏差 - 越低越好,因为这意味着星座类似于一个圆圈) . 然而,这种方法也给出了不好的结果。

下一个想法是利用无线电信道结构已知的事实并尝试检测立体声导频(解调频带中的 19 kHz 音调,厌倦了对 17 到 21 kHz 的带通部分进行音调分析并使用 THD 作为音调- 测量)。然而,该方法再次给出了许多假阳性结果,并且调谐测量结果非常不精确。

我尚未测试的最后一个想法是测量解调单声道音频的 SINAD,但我担心结果类似于立体声导频案例。

所以我的问题是:如何正确地做到这一点?我的意思是 - 可以采取什么措施来检测 FM 信号的存在并估计载波频率是多少?

2个回答

在您已经尝试过的方法中,对我来说“寻找光谱中的峰值”听起来是最有希望的,但是:

我的猜测是您的“频谱”实际上是使用 FFT 完成的 PSD 估计。这是了解光谱的好方法——但您可能已经注意到,“峰值”不会很清楚。

想一想:FM 的整个原理是改变载波的频率。因此,在单个 FFT 箱中寻找能量不会很好,因为这些箱太窄而无法“包含”单个站的所有能量(除非您选择非常低的 FFT 长度 -> 宽箱,但随后你无法区分车站)。

看待 FFT(这只是 DFT 的一种实现)而不是作为时域和频域之间的(基本)变换的另一种方式是将其理解为sinc 形滤波器的滤波器组因此,如果您的无线电台的频谱恰好具有 sinc 形状,并且是fsampleNFFT间隔,这确实会很好。

可悲的是,该描述不适合 FM 广播电台。但是:使用不太具体的滤波器组,我们也许可以找到频道!

第一个观察结果是,如果它的频谱有点宽,并且在 87 到 108 MHz 之间的 UHF 频段,它就是一个 FM 电台,或者是非法的。所以,让我们不要过多考虑 FM 电台的特定光谱形状¹;相反,让我们

  1. 使用允许通过大约 160 kHz 带宽的滤波器
  2. 计算通过滤波器的所有信号的功率(只需对样本进行幅度平方并平均输出)
  3. 使用该过滤器+检测器并将其应用于所有潜在通道

滤波现在,该滤波器 (1.) 的设计可能相当简单:我将采用截止频率为 80 kHz 的任意实值低通滤波器;这将允许围绕其中心频率的 -80 kHz 和 +80 kHz 之间的 160 kHz。

幅度平方请记住,数字样本与 ADC 上的电压成正比,但在这里将是数字的。|·|² 只是一种计算与信号功率成正比的数字的方法——由于我们对绝对功率不感兴趣,而只对比某个任意阈值“更强”的东西感兴趣,这将做。

在整个频谱上应用滤波器老式的频谱分析仪方法是采用混频器,将其按顺序调谐到不同的频率,将滤波器应用于下混信号,然后计算功率。事实上,我们可以做这样的事情!但是,我们一次只能获得有关单个站点的信息。这对我们来说可能不够好,也可能不够好,而且它肯定和普通的汽车收音机一样好(它也能扫描!)。
现在,我们是 DSP 的骄傲申请者,所以我们不妨回到滤波器组的想法:让我们使用那个滤波器,复制它,移动 50 kHZ(我假设是 FM 电台频率光栅),然后应用这 420 个过滤器同时进行!

好吧,这将要求您一次“看到”完整的 21 MHz FM 分配频谱,而您的 RTL 加密狗不会这样做。相反,让我们选择您的加密狗能够一次采样的 2 MHz。那是40个过滤器。稍后我会回来为您准备一个信号处理流程图和代码。


¹ 顺便说一下,贝塞尔函数。你不想分析地处理这些。

²(10887)MHz50kHz=211035101=420

在尝试检测 RF 噪声底附近的 W-FM 信号时,寻找频谱中的峰或峰并不是很可靠,因为频谱很宽且变化多端。

更可靠的方法是对解调的 FM 使用音频噪声静噪算法,将解调的音频频谱与噪声频谱进行比较。通常,在 FM 解调噪声和典型的语音或音乐信号之间,音频频谱中靠近音频截止频率的部分随时间的行为是非常不同的。