主要内容

接收器的频率偏差校正

此示例显示了如何使用MATLAB®和通信工具箱在接收机处测量和校准发射机和接收机之间的频率偏移™. 您可以使用捕获的信号,也可以使用RTL-SDR无线电通信工具箱支持包金宝app.接收机监控接收到的信号,计算发射机和接收机之间的频率偏移,并显示在MATLAB®命令窗口中。

所需硬件和软件

要使用捕获的信号运行此示例,您需要以下软件:

为了实时接收信号,还需要以下硬件:

  • RTL-SDR无线电

和下面的软件

有关通信工具箱支持的SDR平台的完整列表,请参阅金宝app软件定义无线电(SDR)发现页面

如果您选择使用无线电实时接收信号,则需要调到已知的广播导频或提供具有已知中心频率的信号源来建立基线。如果您没有可用的信号发生器,您可以使用低成本的家庭无线电服务步话机作为信号源。注意信号源必须是窄带的,正弦波是理想的信号源。

出身背景

与发射机相比,所有的无线电接收机都表现出频率偏移。在某些情况下,频率偏移可能超过接收机算法所能处理的范围。因此,您可能需要校准接收器,使频率偏移最小化。

该示例提供了有关通信链路的以下信息:

  • 频率偏移的定量值,单位为Hz和PPM

  • 接收信号的定性SNR水平的图形视图

如果你有一个发射机,你可以用它来产生一个窄带信号,比如音调。

如果您没有发射机,则可以使用广播信号。例如,在美国,ATSC数字电视信号包括射频载波上的窄带导频音。导频音通常位于信道底部边缘上方309.440 kHz的标称频率。如果您所在区域存在此类信号,您可以将预期的中心频率值设置为音调的频率。该示例使用信道29的导频音调,其约为560e6+309.440e3 Hz。有关通道编号和频率值的列表,请参阅北美电视频率

如果使用RTL-SDR无线电作为接收器,请将显示的PPM校正值指定为RTL-SDR接收器系统对象的FrequencyCorrection属性™ 补偿频率偏移。请确保在规格中使用偏移符号。完成此操作后,接收器的频谱分析仪系统对象显示的频谱应具有大约0 Hz的最大振幅。

运行示例

使用已知的信号源开始发射。如果您在美国,您可以将预期的中心频率设置为附近数字电视发射机的导频音。然后,键入接收器采样的频率偏移校准在MATLAB命令窗口或单击“打开示例”按钮,打开并运行示例。

示例显示接收信号在- 200khz到200khz的频率范围内的频谱,并在命令窗口中打印估计的频率偏移(Hz和PPM)。在下面所示的情况下,最大接收信号功率的频率约为-35 kHz。

示例代码

接收器请求用户输入并初始化变量。然后它在一个循环中调用信号源、直流阻断器、粗音频率偏移估计器和频谱分析仪。该循环还使用帧持续时间跟踪无线电时间。

%从命令行请求用户输入应用程序参数userInput=helperFrequencyCalibrationUserInput;%根据用户输入计算系统参数[fcParam,sigSrc]=helperFrequencyCalibrationConfig(用户输入);%创建一个DC阻塞器系统对象,以删除%接收信号,提高频率偏移估计的精度。dcBlocker=dsp.dcBlocker(“算法”,“减去平均值”);%创建要计算的粗略频率偏移估计系统对象%的偏移量。系统对象对其输入信号和执行FFT%表示最大功率的频率。这个量就是频率%抵消。首席财务官= comm.CoarseFrequencyCompensator (...“FrequencyResolution”, 25,...“采样器”,fcParam.FrontEndSampleRate);%创建频谱分析仪范围以可视化信号频谱范围=dsp.SpectrumAnalyzer(...“姓名”,“实际频率偏移”,...“标题”,“实际频率偏移”,...“光谱类型”,“权力”,...“FrequencySpan”,“满”,...“采样器”,fcParam.FrontEndSampleRate,...“YLimits”, [-40,10],...“SpectralAverages”, 50,...“FrequencySpan”,“启动和停止频率”,...“起始频率”-200年e3,...“StopFrequency”,200e3,...“位置”, figposition([50 30 30 40]));

流处理

msgLength = 0;radioTime = 0;secondCounter = 1;radioTime可视化光谱并打印结果范围(rxSig);如果radioTime > secondCounter fprintf(repmat(“\ b”,1,msgLength);msg=sprintf(['频率偏移=%f Hz,\n'...'频率校正值(Hz) = %f \n'...'频率校正值(PPM)=%f\n'],...偏移量,-偏移量,频率校正);fprintf(msg);msgLength=numel(msg);secondCounter=secondCounter+1;终止%更新广播时间无线电时间=无线电时间+fcParam.FrameDuration;终止%释放所有系统对象释放(sigSrc);释放(dcBlocker);释放(首席财务官);

结论

在本例中,您使用了“通信工具箱”™ 系统对象构建一个接收机,用于计算发射机和接收机之间的相对频率偏移。