Дискриминатор частоты с временным сдвигом квадратурных компонент — различия между версиями
Korogodin (обсуждение | вклад) (→Ссылки) |
Dneprov (обсуждение | вклад) (→Сравнение с другими ЧД) |
||
(не показаны 17 промежуточных версий 2 участников) | |||
Строка 1: | Строка 1: | ||
+ | {{TOCright}} | ||
+ | |||
Дискриминатор частоты '''с временным сдвигом квадратурных компонент''' известен в англоязычной литературе как cross-product дискриминатор<ref name="NavipediaFLL">http://www.navipedia.net/index.php/Frequency_Lock_Loop_(FLL)</ref>. | Дискриминатор частоты '''с временным сдвигом квадратурных компонент''' известен в англоязычной литературе как cross-product дискриминатор<ref name="NavipediaFLL">http://www.navipedia.net/index.php/Frequency_Lock_Loop_(FLL)</ref>. | ||
− | Дискриминатор использует отсчеты коррелятора с текущего и предыдущего такта работы | + | Дискриминатор использует отсчеты коррелятора с текущего и предыдущего такта работы: <br /> |
− | <math>u_{D \omega, k} = I_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k})Q_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,k-1}) - Q_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k})I_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,k-1})</math>, | + | :<math>u_{D \omega, k} = I_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k})Q_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,k-1}) - Q_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k})I_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,k-1})</math>, |
где <br /> | где <br /> | ||
− | <math>I_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k)\mbox{cos}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d))</math>,<br /> | + | :<math>I_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k)\mbox{cos}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d))</math>,<br /> |
− | <math>Q_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k)\mbox{sin}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d))</math>,<br /> | + | :<math>Q_k(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k)\mbox{sin}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d))</math>,<br /> |
− | <math>I_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,{k-1}}) = \sum_{l=1}^{L}y(t_{k-1,l})h_{c}(t_{k-1,l}-\widetilde{\tau}_{k-1})\mbox{cos}(\omega_0t_{k-1,l}+\widetilde{\omega}_{d\,k-1}(l-1)T_d))</math>,<br /> | + | :<math>I_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,{k-1}}) = \sum_{l=1}^{L}y(t_{k-1,l})h_{c}(t_{k-1,l}-\widetilde{\tau}_{k-1})\mbox{cos}(\omega_0t_{k-1,l}+\widetilde{\omega}_{d\,k-1}(l-1)T_d))</math>,<br /> |
− | <math>Q_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,k-1}) = \sum_{l=1}^{L}y(t_{k-1,l})h_{c}(t_{k-1,l}-\widetilde{\tau}_{k-1})\mbox{sin}(\omega_0t_{k-1,l}+\widetilde{\omega}_{d\,k-1}(l-1)T_d))</math>.<br /> | + | :<math>Q_{k-1}(\widetilde{\tau}_{k-1},\widetilde{\omega}_{d\,k-1}) = \sum_{l=1}^{L}y(t_{k-1,l})h_{c}(t_{k-1,l}-\widetilde{\tau}_{k-1})\mbox{sin}(\omega_0t_{k-1,l}+\widetilde{\omega}_{d\,k-1}(l-1)T_d))</math>.<br /> |
== Особенности работы == | == Особенности работы == | ||
[[Файл:20151028_Про перекрытие.png|мини|справа|600пкс|Варианты работы дискриминатора]] | [[Файл:20151028_Про перекрытие.png|мини|справа|600пкс|Варианты работы дискриминатора]] | ||
− | |||
− | + | Возможны различные реализация дискриминатора. На рисунке представлено два варианта, условно названных "Перекрытие" и "Перекрытие отсутствует". Поясним рисунок. | |
− | <math>u_{D\omega,k} = S_{D}(\omega_k - \widetilde{\omega_k}) + n_{D,k}</math>, где <math>n_{D,k} \sim N(0, D_\eta)</math> | + | Пусть в некоторый момент времени <math>t_{k}</math> доступны отсчеты с выхода коррелятора <math>I_k, Q_k</math> и отсчеты из предыдущей эпохи <math>I_{k-1}, Q_{k-1}</math>. На их основе можно сформировать отсчет дискриминатора <math>u_{D\omega,k}</math>. Далее возможны варианты. |
+ | |||
+ | В случае, если работа идет с "перекрытием", следующий отсчет дискриминатора <math>u_{D\omega,k+1}</math> будет сформирован из новых отсчетов коррелятора <math>I_{k+1}, Q_{k+1}</math> и уже использованных в предыдущем шаге <math>I_k, Q_k</math>. Таким образом, каждое вычисление отсчета дискриминатора использует отсчеты коррелятора, уже использованные в расчете предыдущего значения дискриминатора. Поэтому шум выхода дискриминатора в данном случае оказывается коррелированным, а его СПМ отличается от СПМ белого шума. | ||
+ | |||
+ | Если дискриминатор работает без "перекрытия", для расчета соседних значений выхода дискриминатора каждый раз используются разные корреляционные суммы. В этом случае, шум дискриминатора будет некорреллированным с равномерной СПМ. Однако, темп работы такого дискриминатора ниже в 2 раза: ему нужно "дождаться" следующей пары отсчетов. | ||
+ | |||
+ | Для дискриминатора "с перекрытием" использование статистического эквивалента вида | ||
+ | |||
+ | :<math>u_{D\omega,k} = S_{D}(\omega_k - \widetilde{\omega_k}) + n_{D,k}</math>, где <math>n_{D,k} \sim N(0, D_\eta)</math> | ||
+ | |||
+ | при моделировании следящих систем недопустимо, т.к. он не отражает корреляционных свойств. Следует воспользоваться статистическими эквивалентами коррелятора. | ||
− | |||
<br clear="all" /> | <br clear="all" /> | ||
Строка 27: | Строка 37: | ||
Сделано допущение, что <math>\varepsilon_{\omega,k-1} = \varepsilon_{\omega,k}</math>. | Сделано допущение, что <math>\varepsilon_{\omega,k-1} = \varepsilon_{\omega,k}</math>. | ||
− | <math>U(\varepsilon_\omega) = A_{IQ}^2\rho(\varepsilon_{\tau,k})\rho(\varepsilon_{\tau,k-1})\mbox{sinc}^2(\varepsilon_{\omega,k-1}T/2)\mbox{sin}(\varepsilon_{\omega,k-1}T),</math> | + | :<math>U(\varepsilon_\omega) = A_{IQ}^2\rho(\varepsilon_{\tau,k})\rho(\varepsilon_{\tau,k-1})\mbox{sinc}^2(\varepsilon_{\omega,k-1}T/2)\mbox{sin}(\varepsilon_{\omega,k-1}T),</math> |
где <math>A_{IQ} = \frac{AL}{2}</math>, <math>A</math> - амплитуда сигнала <math>y(t_{k,l})</math>, <math>L</math> - количество отчетов, накапливаемых в корреляторе, <math>\varepsilon</math> - разность истинного и опорного параметров. | где <math>A_{IQ} = \frac{AL}{2}</math>, <math>A</math> - амплитуда сигнала <math>y(t_{k,l})</math>, <math>L</math> - количество отчетов, накапливаемых в корреляторе, <math>\varepsilon</math> - разность истинного и опорного параметров. | ||
Строка 49: | Строка 59: | ||
Дисперсия шума эквивалентного наблюдения частоты, т.е. шума с выхода дискриминатора, пересчитанного '''к его входу''' при нулевой расстройке по частоте: <br /> | Дисперсия шума эквивалентного наблюдения частоты, т.е. шума с выхода дискриминатора, пересчитанного '''к его входу''' при нулевой расстройке по частоте: <br /> | ||
− | <math>D_{\widetilde{\eta}_\omega} = \frac{1}{q_{c/n_0}T^3}(1+\frac{1}{2q_{c/n_0}T}).</math> | + | :<math>D_{\widetilde{\eta}_\omega} = \frac{1}{q_{c/n_0}T^3}(1+\frac{1}{2q_{c/n_0}T}).</math> |
+ | === Сравнение с другими ЧД === | ||
− | Интересно сравнить дисперсию шумов по входу для | + | Интересно сравнить дисперсию шумов по входу для различных дискриминаторов: |
− | + | ||
− | <math> D_1 | + | * Собственно дисперсия шума на входе рассматриваемого в этой статье cross дискриминатора. Обозначим ее как <math>D_1</math>: |
− | + | :<math> D_1 = D_{\widetilde{\eta}_\omega} = \frac{1}{q_{c/n_0}T_1^3}(1+\frac{1}{2q_{c/n_0}T_1}).</math> | |
− | <math> | + | * Дисперсия шума на входе оптимального при низком отношении сигнал/шум частотного дискриминатора (тот, который <math>I_kI'_k+Q_kQ'_k</math>) <ref name="OptimalFLL">[[Публикация:Корогодин 2013 Потенциальные характеристики оценивания частоты в некогерентном приемнике]]</ref>, <ref name="KorPhD">[[Публикация:Корогодин 2013 Разработка алгоритмов обработки сигналов СНС в аппаратуре определения угловой ориентации объектов]]</ref>. Обозначим ее как <math>D_2</math>: |
+ | :<math> D_2 = D_{\widetilde{\eta}_\omega} = \frac{6}{q_{c/n_0}T_2^3}(1+\frac{1}{q_{c/n_0}T_2}).</math> | ||
− | + | Пусть cross дискриминатор реализован по схеме без перекрытия, тогда <math>T_2 = 2T_1</math> и | |
− | <math>\frac{D_2}{D_1} = \frac{6}{8}</math>, | + | :<math>\frac{D_2}{D_1} = \frac{6}{8}</math>, |
− | + | или для СКО: | |
+ | |||
+ | :<math>\sigma_2 = 0.866*\sigma_1</math>. | ||
+ | |||
+ | Дискриминатор cross проигрывает <math>I_kI'_k+Q_kQ'_k</math> около 15% по СКО во всем диапазоне с/ш. На рисунке ниже приведен график зависимости СКО эквивалентных шумов представленных ЧД от отношения сигнал/шум <math>q_{c/n0}</math>. | ||
[[File:20151029_Сравнение СКО.png|центр|500px]] | [[File:20151029_Сравнение СКО.png|центр|500px]] | ||
+ | |||
+ | |||
+ | Далее построены нормированные на крутизну дискриминационные характеристики сравниваемых дискриминаторов. Как и при сравнении дисперсий шума, полагаем <math>T_2 = 2T_1</math>. | ||
+ | |||
+ | [[File:20151103_FreqDiskrCompare.png|центр|500px]] | ||
+ | |||
+ | |||
+ | Из приведенного рисунка следует вывод, что апертура обоих частотных дискриминаторов равна <br /> | ||
+ | <math>A_\omega=\frac{2}{T_u}</math>.<br /> | ||
+ | <math>T_u</math> - темп работы дискриминатора. Ранее дискриминаторы сравнивались при условии <math>T_u = T_2 = 2T_1</math>, т.е. при одинаковом темпе работы. При анализе "cross" дискриминатора нужно помнить, что <math>T_1</math> в формулах его характеристик - это время когерентного накопления в корреляторе, а темп работы самого дискриминатора по схеме без перекрытия <math>T_u = 2T_1</math>. | ||
== Листинг модели == | == Листинг модели == |
Текущая версия на 15:22, 3 ноября 2015
|
Дискриминатор частоты с временным сдвигом квадратурных компонент известен в англоязычной литературе как cross-product дискриминатор[1].
Дискриминатор использует отсчеты коррелятора с текущего и предыдущего такта работы:
- ,
где
- ,
- ,
- ,
- .
[править] Особенности работы
Возможны различные реализация дискриминатора. На рисунке представлено два варианта, условно названных "Перекрытие" и "Перекрытие отсутствует". Поясним рисунок.
Пусть в некоторый момент времени доступны отсчеты с выхода коррелятора и отсчеты из предыдущей эпохи . На их основе можно сформировать отсчет дискриминатора . Далее возможны варианты.
В случае, если работа идет с "перекрытием", следующий отсчет дискриминатора будет сформирован из новых отсчетов коррелятора и уже использованных в предыдущем шаге . Таким образом, каждое вычисление отсчета дискриминатора использует отсчеты коррелятора, уже использованные в расчете предыдущего значения дискриминатора. Поэтому шум выхода дискриминатора в данном случае оказывается коррелированным, а его СПМ отличается от СПМ белого шума.
Если дискриминатор работает без "перекрытия", для расчета соседних значений выхода дискриминатора каждый раз используются разные корреляционные суммы. В этом случае, шум дискриминатора будет некорреллированным с равномерной СПМ. Однако, темп работы такого дискриминатора ниже в 2 раза: ему нужно "дождаться" следующей пары отсчетов.
Для дискриминатора "с перекрытием" использование статистического эквивалента вида
- , где
при моделировании следящих систем недопустимо, т.к. он не отражает корреляционных свойств. Следует воспользоваться статистическими эквивалентами коррелятора.
[править] Дискриминационная характеристика
Сделано допущение, что .
где , - амплитуда сигнала , - количество отчетов, накапливаемых в корреляторе, - разность истинного и опорного параметров.
Крутизна дискриминационной характеристики при нулевой расстройке по частоте: .
В модели задержка сигнала полагалась известной: .
Дискриминационная характеристика при различных временах накопления:
[править] Флуктуационная характеристика
Получены зависимости СКО шума на выходе дискриминатора от для различных времен накопления. Теоретические кривые пунктирной линией.
Дисперсия шума эквивалентного наблюдения частоты, т.е. шума с выхода дискриминатора, пересчитанного к его входу при нулевой расстройке по частоте:
[править] Сравнение с другими ЧД
Интересно сравнить дисперсию шумов по входу для различных дискриминаторов:
- Собственно дисперсия шума на входе рассматриваемого в этой статье cross дискриминатора. Обозначим ее как :
- Дисперсия шума на входе оптимального при низком отношении сигнал/шум частотного дискриминатора (тот, который ) [2], [3]. Обозначим ее как :
Пусть cross дискриминатор реализован по схеме без перекрытия, тогда и
- ,
или для СКО:
- .
Дискриминатор cross проигрывает около 15% по СКО во всем диапазоне с/ш. На рисунке ниже приведен график зависимости СКО эквивалентных шумов представленных ЧД от отношения сигнал/шум .
convert: no images defined `/tmp/transform_3098c0913706-1.png' @ error/convert.c/ConvertImageCommand/3044.
Далее построены нормированные на крутизну дискриминационные характеристики сравниваемых дискриминаторов. Как и при сравнении дисперсий шума, полагаем .
Из приведенного рисунка следует вывод, что апертура обоих частотных дискриминаторов равна
.
- темп работы дискриминатора. Ранее дискриминаторы сравнивались при условии , т.е. при одинаковом темпе работы. При анализе "cross" дискриминатора нужно помнить, что в формулах его характеристик - это время когерентного накопления в корреляторе, а темп работы самого дискриминатора по схеме без перекрытия .
[править] Листинг модели
Ниже представлен листинг модели, с которой сняты картинки.
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