主要内容

频率偏差校准接收机使用模拟设备AD9361/AD9364

本示例展示了如何使用Xilinx®zynq基于无线电支持包和MATLAB®来确定使用Analog devices™AD金宝app9361和AD9364的SDR设备之间的频率偏移。该示例包含两个互补脚本:一个用于发送方,另一个用于接收方。

要传输10khz的正弦波,运行使用AD9361/AD9364模拟器件的频率偏置校准发射机示例,在MATLAB命令窗口中输入脚本名称:

zynqRadioFrequencyCalibrationTransmitterAD9361AD9364ML

要接收信号并计算频偏,请在MATLAB命令窗口中输入脚本名称来运行这个示例:

zynqRadioFrequencyCalibrationReceiverAD9361AD9364ML

请参阅引导主机无线电硬件设置文档,详细介绍如何配置主机以使用Xilinx®zynq无线电支持包。金宝app

简介

这个例子使用一对匹配的脚本来确定两个SDR设备之间的频率偏移:

发射机发出10千赫的音调。接收机使用基于fft的检测方法检测发送的音调。然后可以计算发送的10 kHz音调和接收音调之间的偏移,并用于补偿接收机的偏移。这对脚本提供了以下信息:

  • 频率偏移量的定量值

  • 接收器的无刺激动态范围的图形视图

  • 接收信号的定性信噪比水平的图形化视图

设置

在运行示例之前,请确保已执行以下步骤:

1.将您的主机配置为使用基于Xilinx®zynq的无线电支持包。金宝app看到引导主机无线电硬件设置寻求帮助。

2.确保您有两个发送器脚本使用AD9361和AD9364模拟器件的频偏校准发射机和接收脚本频率偏差校准接收机使用模拟设备AD9361和AD9364open,每个都配置为在自己的MATLAB实例中运行在自己的SDR硬件上。

3.您可以在AD936x或FMCOMMS5无线电硬件上使用此示例。默认情况下,该示例配置为使用AD936x运行。要为FMCOMMS5配置示例,必须使用com . sdrrxfmcomms5对象而不是com . sdrrxad936x对象。要更新FMCOMMS5的示例,请遵循内联注释中的说明。

运行示例

将示例配置为在硬件上运行。

prmFreqCalibRx。SDRDeviceName =“AD936x”如果要更新FMCOMMS5的示例,请设置|prmFreqCalibRx。SDRDeviceName |,% | |“FMCOMMS5”。

确保发射器正在发送10 kHz的音调,然后启动接收器脚本。看到使用AD9361/AD9364模拟器件的频率偏置校准发射机我要你帮我搞定发射机。

计算出的频偏显示在MATLAB命令窗口中。频谱分析仪对象用于可视化接收信号的频谱。接收到的频谱样本如下所示。

在这种情况下,接收信号功率最大的频率约为2.86kHz。由于发射机以10千赫的频率发送音调,这意味着频率偏移约为7.14千赫。信号的伪散自由动态范围约为44.5 dB。

要补偿发射机/接收机的频率偏移,请设置prmFreqCalibRx。OffsetCompensation变量设置为命令窗口中显示的值。该值被添加到中心频率SDR Receiver对象的。一定要在加法中使用偏移量的符号。重新运行应用频率偏移补偿的接收机。计算显示的偏移频率现在应该接近于零,频谱中的峰值应该接近10千赫。

需要注意的是,频率偏移值仅对用于运行校准的中心频率有效。

接收机设计:系统架构

初始化

下面的代码设置用于控制接收器的参数。

接收器运行的大约时间长度(以秒为单位)prmFreqCalibRx。RunTime = 10;设置要补偿的偏移值prmFreqCalibRx。偏移补偿= 0;% SDR接收器参数prmFreqCalibRx。RadioIP =“192.168.3.2”;prmFreqCalibRx。RadioOutputDataType =“双”;prmFreqCalibRx。RadioSamplesPerFrame = 4096;prmFreqCalibRx。RadioChannelMapping = 1;prmFreqCalibRx。DesiredRadioCenterFrequency = 2.4e9;prmFreqCalibRx。RadioBasebandSampleRate = 520.841e3;prmFreqCalibRx。RadioCenterFrequency =...prmFreqCalibRx。DesiredRadioCenterFrequency +...prmFreqCalibRx.OffsetCompensation;prmFreqCalibRx。RadioGainControlMode =“AGC快攻”预期的正弦波参数prmFreqCalibRx。rxsinfrequency = 10e3;%(赫兹)prmFreqCalibRx。Fs = prmFreqCalibRx.RadioBasebandSampleRate;% FFT长度用于计算频偏prmFreqCalibRx。FocFFTSize= 4096;

使用上面的参数,创建了三个System对象:

使用这些参数,生成并发送一个正弦波到SDR硬件进行上采样和传输。然后可视化传输基带信号的频谱。

prmFreqCalibRx。FocFFTSize变量设置用于计算频率偏移的FFT的大小。默认值4096表示计算的频率偏移限制在48 Hz的分辨率内。

sdrReceiver = sdrrx(prmFreqCalibRx。SDRDeviceName,...“IPAddress”, prmFreqCalibRx。RadioIP,...“CenterFrequency”, prmFreqCalibRx。RadioCenterFrequency,...“GainSource”, prmFreqCalibRx。RadioGainControlMode,...“SamplesPerFrame”, prmFreqCalibRx。RadioSamplesPerFrame,...“BasebandSampleRate”, prmFreqCalibRx。RadioBasebandSampleRate,...“OutputDataType”, prmFreqCalibRx。RadioOutputDataType,...“ChannelMapping”, prmFreqCalibRx。RadioChannelMapping,...“ShowAdvancedProperties”,真的,...“BypassUserLogic”,真正的);coarseFrequencyOffset = sdrzCoarseFrequencyOffset...“FFTSize”, prmFreqCalibRx。FocFFTSize,...“SampleRate”, prmFreqCalibRx.Fs);光谱分析仪(...“SpectrumType”“权力”...“FrequencySpan”“全部”...“FrequencyResolutionMethod”“RBW”...“RBWSource”“属性”...“RBW”现年48岁的...“SampleRate”, prmFreqCalibRx。Fs,...“YLimits”, [-120, 20],...“SpectralAverages”10);

接收和基带信号处理

然后在目标时间内运行接收器。

prmFreqCalibRx。currentTime = 0;prmFreqCalibRx。timePerStep = (1 / prmFreqCalibRx.Fs) *...prmFreqCalibRx.RadioSamplesPerFrame;Valid = false;prmFreqCalibRx。currentTime < prmFreqCalibRx。运行时继续呼叫接收者,直到有可用数据为止~valid [rxSig, valid] = srrreceiver ();结束显示接收频谱。spectrumScope (rxSig);计算频率偏移。由于SDRCoarseFrequencyOffset对象返回频率的峰值功率,需要进行补偿%的事实,我们正在prmfreqcalibrx . rxsinfrequency传输。值“offset”表示需要的频率偏移%应用于中心频率。offset = coarseFrequencyOffset(rxSig) + prmfreqcalibrx . rxsinfrequency;用MATLAB命令打印频偏补偿值%的窗口。compensationValue = -offset% #好< NOPTS >prmFreqCalibRx。currentTime = prmFreqCalibRx。currentTime +...prmFreqCalibRx.timePerStep;%重置有效,所以我们可以等待新数据Valid = false;结束释放所有系统对象释放(sdrReceiver);释放(coarseFrequencyOffset);释放(spectrumScope);清晰的sdrReceivercoarseFrequencyOffsetprmFreqCalibRx

选择实现

本例描述了一个接收机的MATLAB实现,该接收机使用Analog devices AD9361和AD9364在两个SDR设备之间执行频偏校准。匹配的发射机为使用AD9361/AD9364模拟器件的频率偏置校准发射机

您还可以在中查看这些示例的Simulin金宝appk®实现使用AD9361/AD9364模拟设备进行频偏校准

故障处理

如果接收到的信号非常微弱,您可以尝试通过改变信号的频率来增加接收增益prmFreqCalibRx。RadioGain可变增益用手动控制方式或通过改变prmFreqCalibRx。RadioGainControlMode改为“AGC快攻”或“AGC慢攻”。

如果您运行所描述的示例,但未能看到如图所示的信号(例如,您只接收到噪声或频谱显示从未显示),请参见常见问题及修复

附录

本例使用了以下helper文件: