我正在运行如下的无线通信系统。我在matlab中创建了一个基带信号,并将其输出到执行上混的发送器。接收器再次混合信号,我在matlab中找回了基带信号。到目前为止,这工作正常,但是,我观察到两个收发器的时钟既不同步也不完美。我得到了时钟抖动,导致相位噪声(星座中的旋转)。不知何故,时钟抖动接缝是周期性的。是否有可能摆脱软件中的相位错误?
我附上了一个matlab脚本来澄清我的问题。解决此模拟中的相位噪声问题应该有望解决我的问题。 根据相位差,我可以成功地确定恒定载波频率偏移(CFO),但我不知道如何处理相位差中的振荡。
f_s = 40e6; % Sampling frequency
f_d = 2e4; % Frequency offset
f_mix = 15e6; % Mixer frequency
clock_jitter=true;
if clock_jitter
f_d = f_d + 2e3*sin(2 * pi * 1e5/f_s * t.');
end
% Plot the frequency offset
figure;
plot(t, f_d);
title('frequency offset');
% Generate random data
t = 1:1e3-1;
payload_tx = randi([0, 3], [length(t), 1]);
signal_tx = qammod(payload_tx, 4);
scatterplot(signal_tx);
%Mix up
signal_pb = signal_tx .* exp(1j * 2 * pi * f_mix ./ f_s * t.');
% Mix down
signal_rx = signal_pb .* exp(-1j * 2 * pi .* (f_mix+f_d) ./ f_s .* t.');
scatterplot(signal_rx);
% Correct the CFO
f_shift = exp(1j * angle(signal_tx ./ signal_rx));
f_drift = f_shift(2:end) ./ f_shift(1:end-1);
f_drift_m = angle(sum(f_drift));
cfo = f_drift_m .* f_s ./ (2 * pi);
disp(['Estimated CFO to ', num2str(cfo), 'Hz']);
signal_rx_cfo_cor = signal_rx .* exp(1j * f_drift_m * t.');
scatterplot(signal_rx_cfo_cor);
% Plot the phase difference of the received signal
figure;
plot(1:length(f_drift), unwrap(angle(f_drift)));
感谢您的帮助。