主要内容

Simulink中ADALM-PLUTO无线电的频率校正金宝app

这个例子展示了如何使用adal - pluto Radio Receiver块的频率校正参数同步两个PlutoSDRs的基带采样率和中心频率。

一个plutodr的基带采样率和中心频率是由同一个振荡器物理推导出来的。尽管每个PlutoSDR都经过工厂校准,使用适当的锁相环设置来数字补偿振荡器的组件变化,但由于量化效应和操作条件(特别是温度)的变化,补偿是不完美的。因此,即使两个plutosdr对应的系统对象或Simulink块使用相同的基带采样率和相同的中心频率,两个plutosdr也将以略微不同的基带采样率和中心频率运行。金宝app为了解决这一问题,可以使用ADALM-PLUTO Radio Receiver模块的频率校正参数。

频率校正参数指定基带采样率和中心频率的百万分之几变化。默认值是0,这意味着无线电将使用其出厂校准的锁相环设置。在这个例子中,我们将一个PlutoSDR(发射机)作为一个具有准确基带采样率和中心频率的源。我们使用由另一个PlutoSDR接收到的信号,接收器,估计正确的接收机的频率校正块的价值,和表明,当频率校正设置适当,收到了音调的频率将会非常接近80 kHz,传播的频率。

指的是开始有关配置主机以使用PlutoSDR的详细信息的文档。

频率校正估计算法

假设一个信号从一个PlutoSDR传输到另一个PlutoSDR。让f c {} $ $f{年代}$ $为发射机的中心频率和基带采样率。让f {c '} $ $f{年代}$ $为接收机的中心频率和基带采样率。假设发射机的振荡器没有漂移,接收机的振荡器漂移了一个因子K美元,即$f_{c} = K * f_{c}$$f_{s} = K * f_{s}$在哪里K美元是一个非常接近1的数。

基带频率的音f {ref} $ $在传输的信号中将出现基带频率的音调f{收到}$ $在接收器里,在哪里$ f{收到}= {{f {ref} + (f c {} - K * f_c)} \ / {K}} $.这个词$ (f c {} - K * f_c)美元在分子中是由于中心频率的不匹配。比例因子K美元在分母是由于不匹配的基带采样率。因此,我们可以解K美元f {ref} $ $f{收到}$ $,f_c美元$K = {{f_c + f_{ref}}\over{f_c + f_{received}} $

为了消除发射机和接收机之间的频率偏移,我们需要将基带采样率和接收机的中心频率按倍缩放1美元\ / K美元.让$ p $为基带采样率和接收机中心频率的百万分之几变化。然后$1 + {p\ / 10^6} = {1\ / K}$.因此$ p = {f f {ref}{收到}- {}\ / f c {} {+ f {ref}}} * 10 ^ 6美元

设置发射器和接收器

我们使用一个PlutoSDR在20、40和80千赫传输三个音调。在80千赫的音调是用来估计值的频率校正为接收器。20和40千赫的音调只用于帮助可视化频谱。

%设置参数和信号sampleRate = 200年e3;centerFreq = 2.42 e9;fRef = 80年e3;s1 = exp (1 j * 2 *π* 20 e3 * [0:10000-1] / sampleRate);% 20千赫s2 = exp (1 j * 2 *π* 40 e3 * [0:10000-1] / sampleRate);% 40千赫s3 j = exp(1 * 2 *π* fRef * [0:10000-1] / sampleRate);% 80千赫S = s1 + s2 + s3;= 0.6 *年代/ max (abs (s));%缩放信号,以避免在时域的裁剪安装发射机% FrequencyCorrection使用默认值0,对应于%工厂校准条件tx = sdrtx (“冥王星”“RadioID”“usb: 1”“CenterFrequency”centerFreq,...“BasebandSampleRate”sampleRate,“获得”0,...“ShowAdvancedProperties”,真正的);%使用info方法显示各种硬件相关的实际值%属性txRadioInfo = info (tx)%发送信号disp (“发送3个音调,分别为20、40和80千赫”);transmitRepeat (tx, s);%打开receiver模型open_system (“plutoradioFrequencyCorrectionRx”%运行receiver。检测到的频率可能远低于80千赫disp (“运行接收机…”);sim卡(“plutoradioFrequencyCorrectionRx”) disp ([检测到的频率是num2str (peakFreq / 1000)“赫兹”。]);
##连接硬件这个过程可能需要几秒钟。txRadioInfo = struct with fields: Status: 'Full information' CenterFrequency: 2.4200e+09 BasebandSampleRate: 200000 SerialNum: '1000002355237309002300260902167028' Gain: 0 RadioFirmwareVersion: "0.30" ExpectedFirmwareVersion: "0.30" HardwareVersion: "A0" FrequencyCorrection:0发送3个音调在20,40,和80千赫##建立连接到硬件。这个过程可能需要几秒钟。##波形传输已成功启动,并将无限期重复。##调用release方法来停止传输。运行接收器…##连接硬件这个过程可能需要几秒钟。 The detected frequency is 68.0386 kHz.

估计频率校正值

additionalCorrection = (centerFreq - fRef) / (centerFreq + fRef) * 1e6;

应用频率校正值

美元(1 + {p_1} / 10 ^ 6) * (1 + {p_2} / 10 ^ 6) = 1 + ({p_1} + {p_2} + {p_1} * {p_2} * 10 ^{6}) / 10 ^ 6美元,应用两个更改p_1美元p_2美元连续等效于应用的单个变化${p_1} + {p_2} + {p_1}*{p_2}*10^{-6}$与工厂校准的条件。

currentFrequencyCorrection = str2double (...get_param (“plutoradioFrequencyCorrectionRx / ADALM-Pluto无线电接收机”...“FrequencyCorrection”) newFrequencyCorrection = currentFrequencyCorrection + additionalCorrection +...currentFrequencyCorrection * additionalCorrection * 1 e-6 set_param (“plutoradioFrequencyCorrectionRx / ADALM-Pluto无线电接收机”...“FrequencyCorrection”num2str (newFrequencyCorrection“% .12f”))
currentFrequencyCorrection = 0 newFrequencyCorrection = -4.9426

验证结果

再次运行接收器。检测到的频率应该接近80khz。

disp (“再接一次电话……”);sim卡(“plutoradioFrequencyCorrectionRx”) disp ([检测到的频率是num2str (peakFreq / 1000)“赫兹”。]);松开无线电发射机释放(tx);
再次打开听筒……##连接硬件这个过程可能需要几秒钟。检测频率为80.04 kHz。