主要内容

调频广播接收机

这个例子展示了如何使用MATLAB®和通信工具箱™构建一个FM单声道或立体声接收器。您可以使用捕获的信号,也可以使用RTL-SDR Radio、ADALM-PLUTO Radio或USRP™Radio实时接收信号。

所需硬件和软件

要使用来自文件的记录数据运行此示例,需要Communications Toolbox™。

为了实时接收信号,您还需要以下SDR设备之一和相应的软件附加组件:

  • RTL-SDR无线电和RTL-SDR无线电附加组件的通信工具箱支持包

  • ADALM-PLUTO无线电和模拟设备通信工具箱支持包ADALM-PLUTO无线电插件

  • USRP无线电和USRP®无线电插件的通信工具箱支持包

有关更多信息,请参见软件定义无线电(SDR)发现页面

背景

调频广播使用调频(FM)在广播无线电频道上提供高保真的声音传输。预强调和去强调滤波器用于减少噪声对高音频频率的影响。立体声编码可在同一调频频道上同时传送左右声道[1]。

运行示例

要运行该示例,需要输入以下信息:

  1. 接收持续时间(秒)

  2. 信号源(捕获数据、RTL-SDR收音机、ADALM-PLUTO收音机或USRP收音机)

  3. 调频频道频率

这个例子通过计算机的扬声器播放接收到的音频。

注意:本例使用的中心频率超出默认PlutoSDR调优范围。要在合格调谐范围之外使用ADALM-PLUTO收音机,请在MATLAB®命令行上运行configurePlutoRadio(模拟设备ADALM-Pluto无线电通信工具箱支持包)使用“AD9364”作为输入参数。

接收机结构

FM广播解调基带系统对象™将228 kHz的输入采样率转换为45.6 kHz,即主机计算机音频设备的采样率。根据美国FM广播标准,去强调低通滤波器时间常数设置为75微秒。本例处理接收到的单声道信号。解调器还可以处理立体声信号。

为了执行立体声解码,FM广播解调基带对象使用峰值滤波器,从创建的38khz载波中挑选出19khz导频音。使用产生的载波信号,FM广播解调基带块将以38khz为中心的L-R信号向下转换为基带。然后,L-R和L+R信号通过75微秒的去强调滤波器。FM广播解调基带块分离L和R信号,并将它们转换为45.6 kHz音频信号。

示例代码

接收端请求用户输入并初始化变量。然后循环调用信号源和调频广播接收机。循环还使用帧持续时间和信号源报告的丢失样本来跟踪无线电时间。

信号源的延迟输出指示了实际接收样本的时间,并可用于确定接收器运行的时间有多接近实时。时延值为1,丢失样本值为0,表示系统处于实时运行状态。延迟值大于1表示接收端无法实时处理样本。延迟是根据帧数来报告的。它可以在1到128之间。如果延迟大于128,则样本丢失。

如果要更改默认设置,请将|cmdlineInput|设置为1。cmdlineInput = 0;如果cmdlineInput从命令行请求用户输入应用程序参数userInput = helperFMUserInput;其他的负载(“defaultinputsFM.mat”);结束根据用户输入计算FM系统参数[fmRxParams,sigSrc] = helperFMConfig(userInput);创建FM广播接收机对象,并根据用户输入进行配置fmBroadcastDemod = com . fmbroadcastdemodulator (...“SampleRate”, fmRxParams。FrontEndSampleRate,...“FrequencyDeviation”, fmRxParams。FrequencyDeviation,...“FilterTimeConstant”, fmRxParams。FilterTimeConstant,...“AudioSampleRate”, fmRxParams。AudioSampleRate,...“立体”、假);%创建音频播放器播放器= audioDeviceWriter(“SampleRate”, fmRxParams.AudioSampleRate);初始化无线电时间radioTime = 0;%主循环radioTime < userInput。持续时间接收基带样本(信号源)如果fmRxParams.isSourceRadio如果fmRxParams。isSourcePlutoSDR rcv = sigSrc();Lost = 0;迟到= 1;elseiffmRxParams。isSourceUsrpRadio rcv= sigSrc();Lost = 0;其他的[rcv,~,lost,late] = sigSrc();结束其他的rcv = sigSrc();Lost = 0;迟到= 1;结束解调调频广播信号并播放解码后的音频。audioSig = fmBroadcastDemod(rcv);球员(audioSig);%更新无线电时间。如果有丢失的样品,也加进去。radioTime = radioTime + fmRxParams。FrontEndFrameTime +...双(失去)/ fmRxParams.FrontEndSampleRate;结束释放音频和信号源release(sigSrc) release(fmBroadcastDemod) release(player)

进一步的探索

为了进一步探索这个示例,您可以改变RTL-SDR无线电、ADALM-PLUTO无线电或USRP无线电的中心频率,并收听其他无线电台。

您可以将FM解调器对象的立体声属性设置为true,以立体声方式处理信号并比较音质。

您可以通过以下功能查看系统参数的详细信息:

您可以使用FMReceiverExampleApp用户界面进一步探索FM信号。这个应用程序允许您选择信号源和改变RTL-SDR无线电,ADALM-PLUTO无线电或USRP无线电的中心频率。要启动应用程序,键入FMReceiverExampleApp在MATLAB命令窗口中。该界面如下图所示

选定的参考书目

Baidu
map