上篇文章《基于软件无线电的频谱监测》介绍了Windows系统上用USRP实现频谱监测的功能,这篇文章我们继续介绍一下用USRP来实现FM调频广播收音机的功能,当然,同样也是在Windows系统上实现的。
FM调频广播信号是我们生活中最常见到的一种无线信号,其频率范围为76-108MHz (在我国为87-108MHz)。
所谓调频,是使得载波的瞬时频率按调制信号的变化而变化,但载波幅度保持不变的一种调制方式。
FM调频广播支持左右声道立体声调制,其信号产生过程如下:
- 将左声道信号(L)和右声道信号(R)进行叠加,产生和信号M(即L R);
- 将L和R进行相减,产生差信号S(即L-R);
- 将S信号按幅度调制(AM)方式调制在38kHz的副载波上(并抑制副载波),留下38kHz已调波的上下边带分量信号±S;
- 将M信号、±S信号以及19kHz导频信号进行叠加成为立体声复合信号;
- 将立体声复合信号与主载波(76-108MHz)以FM方式进行调制后发射。
抑制副载波的目的是因为调幅波在能量的角度上看,载频占有最大的能量,而上下边带不超过载频幅度的1/2。但是,信息是靠边带来传送的,所以幅度恒定的副载波是不起到信息承载作用的,将它抑制掉对提高信噪比和节约发射机的发射功率都有好处。然而,在接收端就必须要将抑制了的38kHz载波信号进行恢复才能正确解调出S信号,而且恢复的38kHz载波信号必须要和发射端的38kHz信号在相位上保持一致。这也是为什么在发射信号中加入了19kHz(38kHz的一半)导频信号的原因。
下图示意了FM调制信号的频率分布情况:
立体声FM调制信号频率分布
接下来,介绍一下对FM调频广播信号的解调过程。
通常我们会以一个较高的采样率进行信号采集接收,然后在数字信号处理过程中进行滤波抽取,以此来保证一定的接收性能。我们以2MHz采样率为例,进行低通滤波和5倍抽取后,即得到400kHz采样率下的基带信号,信号频谱图如下所示:
FM已调信号频谱图
然后就是FM解调,FM调制是改变了载波的频率,所以FM解调就是要得到信号的瞬时频率,解调思路是对信号的瞬时相位进行求导(差分)来得到瞬时频率,可用下式概括:
完成FM解调之后的频谱图如下:
FM解调信号频谱图
从调解结果来看,确实出现了19kHz导频信号,也在38kHz处看到有谱峰,但38kHz处的功率明显偏小,难道当前FM发射机并未进行立体声调制?
由于副载波处的功率明显偏小,所以不再进行立体声解调,直接将以上FM解调结果进行低通滤波和抽取,即可得到单声道音频信号,如下图所示:
FM信号承载的音频波形
将该音频信号根据对应的采样率调用音频驱动即可完成音频播放。
通过软件开发,对USRP实时接收的数据流完成上述处理流程,即得到了软件化的FM调频广播收音机。下图是开发的软件功能界面:
基于软件无线电的FM调频广播收音机软件界面
采用的软件开发环境与《基于软件无线电的频谱监测》提到的一致,其中音频播放功能用到了Windows的waveOut接口API函数。软件开辟了信号接收缓存和音频播放缓存,并在界面上可实时监测缓存的使用率(界面中的Rx Buffer和Play Buffer)。经实际测试,缓存均不会溢出,系统可实时稳定工作。
,