相位噪声和时钟抖动

时间:2015-01-30 17:37:49

标签: matlab signal-processing

我正在运行如下的无线通信系统。我在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)));

感谢您的帮助。

0 个答案:

没有答案