Дискриминатор частоты с временным сдвигом квадратурных компонент — различия между версиями
Dneprov (обсуждение | вклад) (→Флуктуационная характеристика) |
Dneprov (обсуждение | вклад) (→Дискриминационная характеристика) |
||
Строка 31: | Строка 31: | ||
Файл:20151028_DhChd_newT5ms.png|Дискриминационная характеристика при T=5 мс | Файл:20151028_DhChd_newT5ms.png|Дискриминационная характеристика при T=5 мс | ||
</gallery></center> | </gallery></center> | ||
+ | |||
+ | |||
+ | {{Hider | ||
+ | |title = Листинг модели | ||
+ | |content = <source lang = matlab> | ||
+ | clear all | ||
+ | clc | ||
+ | close all | ||
+ | |||
+ | plotDX = 1; %считаем ДХ | ||
+ | plotFX = 0; %считаем дисперсию шумов | ||
+ | |||
+ | if plotDX | ||
+ | N = 3000; | ||
+ | stdn_IQ = 8; | ||
+ | Tc = 0.005; | ||
+ | qcno_dB = 45; | ||
+ | qcno = 10^(qcno_dB/10); | ||
+ | |||
+ | wdop_real = 2*pi*100; | ||
+ | wdop_oporn = [wdop_real-2*pi*(1/Tc):2*pi*(2/Tc)/500:wdop_real + 2*pi*(1/Tc)]; | ||
+ | |||
+ | UdFLL = zeros(1, length(wdop_oporn)); | ||
+ | |||
+ | A_IQ = stdn_IQ * sqrt(2 * qcno * Tc); | ||
+ | Sd = A_IQ^2*Tc; | ||
+ | |||
+ | for k = 1:N | ||
+ | for j = 1:length(wdop_oporn) | ||
+ | n_I_old = 1*stdn_IQ * randn(1,1); | ||
+ | n_I = 1*stdn_IQ * randn(1,1); | ||
+ | n_Q_old = 1*stdn_IQ * randn(1,1); | ||
+ | n_Q = 1*stdn_IQ * randn(1,1); | ||
+ | |||
+ | phi_real = [pi/3 pi/3 + Tc*wdop_real(1)]; | ||
+ | phi_oporn =[pi/4 pi/4 + Tc*wdop_oporn(j)]; | ||
+ | |||
+ | m_I_old = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | m_I = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | m_Q_old = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | m_Q = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | I_old = m_I_old + n_I_old; | ||
+ | I = m_I + n_I; | ||
+ | Q_old = m_Q_old + n_Q_old; | ||
+ | Q = m_Q + n_Q; | ||
+ | |||
+ | UdFLL(1, j) = UdFLL(1,j) + I*Q_old - Q*I_old; | ||
+ | end | ||
+ | if ~mod(k, N/10) | ||
+ | fprintf('Progress %d%%\n', k*100/N) | ||
+ | end | ||
+ | end | ||
+ | |||
+ | UdFLL_mean = A_IQ^2*(sinc((wdop_real(1)-wdop_oporn)*Tc/2 /pi)).^2.*sin((wdop_real(1)-wdop_oporn)*Tc); | ||
+ | |||
+ | UdFLL = UdFLL/N; | ||
+ | |||
+ | figure | ||
+ | plot((wdop_real-wdop_oporn)/2/pi,[UdFLL; UdFLL_mean; Sd*(wdop_real-wdop_oporn)]); | ||
+ | ylim([1.1*min(UdFLL_mean) 1.1*max(UdFLL_mean)]) | ||
+ | grid on; | ||
+ | xlabel('\Delta f, Гц') | ||
+ | ylabel('M[u_{Д}]') | ||
+ | title(['q = ' num2str(qcno_dB) ' дБГц, T = ' num2str(Tc) ' c']) | ||
+ | end | ||
+ | |||
+ | if plotFX | ||
+ | N = 5000; | ||
+ | stdn_IQ = 8; | ||
+ | Tc = 0.02; | ||
+ | qcno_dB = [10:1:50]; | ||
+ | wdop_real = [2*pi*100]; | ||
+ | wdop_oporn = [2*pi*100]; | ||
+ | |||
+ | D_etta_FLL = zeros(1,length(qcno_dB)); | ||
+ | CKO_etta_FLL_teor = nan(1,length(qcno_dB)); | ||
+ | |||
+ | for i = 1:length(qcno_dB) | ||
+ | fprintf('qcno_dB = %.0f\n', qcno_dB(i)); | ||
+ | qcno = 10^(qcno_dB(i)/10); | ||
+ | A_IQ = stdn_IQ * sqrt(2 * qcno * Tc); | ||
+ | |||
+ | UdFLL = nan(1, N); | ||
+ | |||
+ | for k = 1:N | ||
+ | |||
+ | for j = 1:length(wdop_oporn) | ||
+ | n_I_old = 1*stdn_IQ * randn(1,1); | ||
+ | n_I = 1*stdn_IQ * randn(1,1); | ||
+ | n_Q_old = 1*stdn_IQ * randn(1,1); | ||
+ | n_Q = 1*stdn_IQ * randn(1,1); | ||
+ | |||
+ | phi_real = [pi/3 pi/3 + Tc*wdop_real(1)]; | ||
+ | phi_oporn =[pi/4 pi/4 + Tc*wdop_oporn(j)]; | ||
+ | m_I_old = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | m_I = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | m_Q_old = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | m_Q = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2); | ||
+ | |||
+ | I_old = m_I_old + n_I_old; | ||
+ | I = m_I + n_I; | ||
+ | Q_old = m_Q_old + n_Q_old; | ||
+ | Q = m_Q + n_Q; | ||
+ | |||
+ | UdFLL(1, k) = I*Q_old - Q*I_old; | ||
+ | end | ||
+ | end | ||
+ | D_etta_FLL(1,i) = mean((UdFLL - mean(UdFLL)).^2); | ||
+ | |||
+ | CKO_etta_FLL(1,i) = sqrt(D_etta_FLL(1,i)); | ||
+ | CKO_etta_FLL_teor(1,i) = sqrt((A_IQ^2*Tc)^2*(1/(qcno*Tc^3))*(1 + 1/(2*qcno*Tc))); | ||
+ | end | ||
+ | figure | ||
+ | plot(qcno_dB, CKO_etta_FLL, 'r*', qcno_dB, CKO_etta_FLL_teor, 'g') | ||
+ | xlabel('q_c/n0, дБГц') | ||
+ | ylabel('\sigma_{вых} ЧД') | ||
+ | grid on | ||
+ | end | ||
+ | </source> | ||
+ | |frame-style = border:1px solid Plum | ||
+ | |title-style = color:black;background-color:lavender;font-weight:bold | ||
+ | |content-style = color:black;background-color:ghostwhite;text-align:center | ||
+ | |footer = См. [[другую статью]] | ||
+ | |footer-style = background-color:lightgray;text-align:right | ||
+ | }} | ||
== Флуктуационная характеристика == | == Флуктуационная характеристика == |
Версия 18:30, 28 октября 2015
Содержание |
Описание дискриминатора
Дискриминатор использует отсчеты коррелятора с текущего и предыдущего такта работы.
,
где
,
,
,
.
Особенности работы
Отметим, что возможна различная интерпретация работы дискриминатора. На рисунке представлено два возможных варианта, условно названных "Перекрытие" и "Перекрытие отсутствует". Поясним рисунок. Пусть в некоторый момент времени доступны отсчеты с выхода коррелятора и отсчеты из предыдущей эпохи . На их основе можно сформировать отсчет дискриминатора . Далее возможны варианты. В случае, если работа идет с "перекрытием", следующий отсчет дискриминатора будет сформирован из новых отсчетов коррелятора и уже использованных в предыдущем шаге . Таким образом, каждое вычисление отсчета дискриминатора использует отсчеты коррелятора, уже использованные в расчете предыдущего значения дискриминатора. Поэтому шум выхода дискриминатора в данном случае оказывается коррелированным, а его СПМ отличается от СПМ белого шума. В случае работы без "перекрытия" для расчета соседних значений выхода дискриминатора каждый раз используются разные корреляционные суммы. В этом случае, шум дискриминатора будет некорреллированным с равномерной СПМ. Однако, темп работы такого дискриминатора ниже в 2 раза: ему нужно "дождаться" следующей пары отсчетов.
Дискриминационная характеристика
Сделано допущение, что .
где , - амплитуда сигнала , - количество отчетов, накапливаемых в корреляторе, - разность истинного и опорного параметров.
Крутизна дискриминационной характеристики .
В модели задержка сигнала полагалась известной: .
clc
close all
plotDX = 1; %считаем ДХ
plotFX = 0; %считаем дисперсию шумов
if plotDX
N = 3000;
stdn_IQ = 8;
Tc = 0.005;
qcno_dB = 45;
qcno = 10^(qcno_dB/10);
wdop_real = 2*pi*100;
wdop_oporn = [wdop_real-2*pi*(1/Tc):2*pi*(2/Tc)/500:wdop_real + 2*pi*(1/Tc)];
UdFLL = zeros(1, length(wdop_oporn));
A_IQ = stdn_IQ * sqrt(2 * qcno * Tc);
Sd = A_IQ^2*Tc;
for k = 1:N
for j = 1:length(wdop_oporn)
n_I_old = 1*stdn_IQ * randn(1,1);
n_I = 1*stdn_IQ * randn(1,1);
n_Q_old = 1*stdn_IQ * randn(1,1);
n_Q = 1*stdn_IQ * randn(1,1);
phi_real = [pi/3 pi/3 + Tc*wdop_real(1)];
phi_oporn =[pi/4 pi/4 + Tc*wdop_oporn(j)];
m_I_old = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
m_I = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
m_Q_old = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
m_Q = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
I_old = m_I_old + n_I_old;
I = m_I + n_I;
Q_old = m_Q_old + n_Q_old;
Q = m_Q + n_Q;
UdFLL(1, j) = UdFLL(1,j) + I*Q_old - Q*I_old;
end
if ~mod(k, N/10)
fprintf('Progress %d%%\n', k*100/N)
end
end
UdFLL_mean = A_IQ^2*(sinc((wdop_real(1)-wdop_oporn)*Tc/2 /pi)).^2.*sin((wdop_real(1)-wdop_oporn)*Tc);
UdFLL = UdFLL/N;
figure
plot((wdop_real-wdop_oporn)/2/pi,[UdFLL; UdFLL_mean; Sd*(wdop_real-wdop_oporn)]);
ylim([1.1*min(UdFLL_mean) 1.1*max(UdFLL_mean)])
grid on;
xlabel('\Delta f, Гц')
ylabel('M[u_{Д}]')
title(['q = ' num2str(qcno_dB) ' дБГц, T = ' num2str(Tc) ' c'])
end
if plotFX
N = 5000;
stdn_IQ = 8;
Tc = 0.02;
qcno_dB = [10:1:50];
wdop_real = [2*pi*100];
wdop_oporn = [2*pi*100];
D_etta_FLL = zeros(1,length(qcno_dB));
CKO_etta_FLL_teor = nan(1,length(qcno_dB));
for i = 1:length(qcno_dB)
fprintf('qcno_dB = %.0f\n', qcno_dB(i));
qcno = 10^(qcno_dB(i)/10);
A_IQ = stdn_IQ * sqrt(2 * qcno * Tc);
UdFLL = nan(1, N);
for k = 1:N
for j = 1:length(wdop_oporn)
n_I_old = 1*stdn_IQ * randn(1,1);
n_I = 1*stdn_IQ * randn(1,1);
n_Q_old = 1*stdn_IQ * randn(1,1);
n_Q = 1*stdn_IQ * randn(1,1);
phi_real = [pi/3 pi/3 + Tc*wdop_real(1)];
phi_oporn =[pi/4 pi/4 + Tc*wdop_oporn(j)];
m_I_old = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
m_I = A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*cos(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
m_Q_old = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(1) - phi_oporn(1) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
m_Q = - A_IQ * sinc((wdop_real(1)-wdop_oporn(j))*Tc/2 /pi)*sin(phi_real(2) - phi_oporn(2) + (wdop_real(1)-wdop_oporn(j))*Tc/2);
I_old = m_I_old + n_I_old;
I = m_I + n_I;
Q_old = m_Q_old + n_Q_old;
Q = m_Q + n_Q;
UdFLL(1, k) = I*Q_old - Q*I_old;
end
end
D_etta_FLL(1,i) = mean((UdFLL - mean(UdFLL)).^2);
CKO_etta_FLL(1,i) = sqrt(D_etta_FLL(1,i));
CKO_etta_FLL_teor(1,i) = sqrt((A_IQ^2*Tc)^2*(1/(qcno*Tc^3))*(1 + 1/(2*qcno*Tc)));
end
figure
plot(qcno_dB, CKO_etta_FLL, 'r*', qcno_dB, CKO_etta_FLL_teor, 'g')
xlabel('q_c/n0, дБГц')
ylabel('\sigma_{вых} ЧД')
grid on
end
Флуктуационная характеристика
Получены зависимости СКО шума на выходе дискриминатора от для различных времен накопления. Теоретические кривые пунктирной линией.
Дисперсия эквивалентных шумов на входе дискриминатора при нулевой расстройке