Дискриминатор задержки NELP — различия между версиями

Материал из SRNS
Перейти к: навигация, поиск
(Листинг модели)
Строка 133: Строка 133:
 
grid on
 
grid on
 
</source>
 
</source>
 +
 +
[[Категория:Дискриминаторы]]

Версия 21:36, 27 марта 2014

Описание дискриминатора

Non-coherent Early minus Late Power (NELP) - некогерентный дискриминатор задержки, описываемый следующим соотношением:

u_{d\tau}=(I_{E,k}^2+Q_{E,k}^2) - (I_{L,k}^2+Q_{L,k}^2),

где
I_{E,k}(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k+\frac{\Delta\tau}{2})\mbox{cos}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d)),
I_{L,k}(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k-\frac{\Delta\tau}{2})\mbox{cos}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d)),

Q_{E,k}(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k+\frac{\Delta\tau}{2})\mbox{sin}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d)),
Q_{L,k}(\widetilde{\tau}_k,\widetilde{\omega}_{d\,k}) = \sum_{l=1}^{L}y(t_{k,l})h_{c}(t_{k,l}-\widetilde{\tau}_k-\frac{\Delta\tau}{2})\mbox{sin}(\omega_0t_{k,l}+\widetilde{\omega}_{d\,k}(l-1)T_d)).

\Delta\tau - сдвиг дальномерного кода между запаздывающей и опережающей компонентами.

Дискриминационная характеристика

Дискриминационная характеристика описывается выражением
U(\varepsilon_\tau) = 2q_{c/n0}T\mbox{sinc}^2(\varepsilon_{\omega,k}T/2)\left ( \rho\left (\varepsilon_\tau - \frac{\Delta\tau}{2}  \right )^2 - \rho\left (\varepsilon_\tau + \frac{\Delta\tau}{2}  \right )^2 \right ).

Ее крутизна S_d = 2q_{c/n0}T\mbox{sinc}^2(\varepsilon_{\omega,k}T/2)\left ( \frac{4}{\tau_{chip}} - \frac{2\Delta\tau}{\tau_{chip}^2} \right ) .


Для проверки формул составлена модель в Matlab. В модели принято:

  • длительность символа дальномерного кода {{\tau }_{chip}} = 2 мкс,
  • расстройка по частоте {{\varepsilon }_{\omega }}=10 Гц,
  • каждая точка моделируемой дискриминационной характеристики усреднялась 1000 раз,
  • корреляционная функция дальномерного кода соответствует сигналу с BPSK : \rho \left( {{\varepsilon }_{\tau }} \right)=1-\frac{\left| {{\varepsilon }_{\tau }} \right|}{{{\tau }_{chip}}}.


Результат моделирования для {q}_{c/n0}=45 дБГц, T=1 мс, \Delta \tau ={{\tau }_{chip}}:

20140327 DZO q45,T=1ms,delta=chip.png


Результаты моделирования для {q}_{c/n0}=45 дБГц, T=1 мс, \Delta \tau =\frac{\tau_{chip}}{10}:

20140327 DZO q45,T=1ms,delta=0.1chip.png


Результаты моделирования для {q}_{c/n0}=35 дБГц, T=20 мс, \Delta \tau =\frac{\tau_{chip}}{5}:

20140327 DZO q35,T=20ms,delta=chip5.png


Листинг модели

close all;
clear
clc

global tauChip
tauChip = 1e-3/511; % Длительность чипа

NoiseEnable = 1;

Np = 1000;

Tc = 0.001; % Период интегрирования в корреляторе

qcno_dB = 45;
stdn_IQ = 1; % СКО шума квадратурных сумм

qcno = 10^(qcno_dB/10);
A_IQ = stdn_IQ * sqrt(2 * qcno * Tc);

tauIst = tauChip/5;
deltaTau = tauChip/10;

Dp=stdn_IQ^2; % Дисперсия promt компоненты
Dpe=ro(deltaTau/2)*stdn_IQ^2; % Взаимная дисперсия promt-early/late
Del=ro(deltaTau)*stdn_IQ^2; % Взаимная дисперсия early-late

L=chol([Dp  Dpe Dpe;  % Используем разложение Холецкого
           Dpe Dp  Del;
           Dpe Del Dp])';


tauExtr= [tauIst-2*tauChip:4*tauChip/1000:tauIst+2*tauChip];
NtauExtr = length(tauExtr);

EpsPhi = 1*rand(1,1)*2*pi;
EpsW = 1*10*2*pi;

SdTeor = 2*qcno*Tc*sinc(EpsW*Tc/2 /pi)^2*[4/tauChip - 2*(deltaTau/tauChip^2)]; % Теоретическая крутизна

Ud = zeros(1,NtauExtr);
Udteor = zeros(1,NtauExtr);

p = nan(1,NtauExtr);
p_early = nan(1,NtauExtr);
p_late = nan(1,NtauExtr);
EpsTau = nan(1,NtauExtr);

for k = 1:NtauExtr
   
    EpsTau(k) = tauIst - tauExtr(k);
   
    p(k) = ro(EpsTau(k));
    p_late(k) = ro(EpsTau(k)+deltaTau/2);
    p_early(k) = ro(EpsTau(k)-deltaTau/2);
   
    for n = 1:Np
       
        nI = L * randn(3,1); % Применяем результат разложения Холецкого и получаем коррелированные шумы
        nQ = L* randn(3,1);
       
        mI = A_IQ * p(k) * sinc(EpsW*Tc/2 /pi) * cos(EpsW*Tc/2 + EpsPhi);
        mIe = A_IQ*p_early(k) * sinc(EpsW*Tc/2 /pi) * cos(EpsW*Tc/2 + EpsPhi);
        mIl = A_IQ*p_late(k) *sinc(EpsW*Tc/2 /pi) * cos(EpsW*Tc/2 + EpsPhi);
       
        mQ = -A_IQ * p(k) * sinc(EpsW*Tc/2 /pi) * sin(EpsW*Tc/2 + EpsPhi);
        mQe = -A_IQ*p_early(k) * sinc(EpsW*Tc/2 /pi) * sin(EpsW*Tc/2 + EpsPhi);
        mQl = -A_IQ*p_late(k) * sinc(EpsW*Tc/2 /pi) * sin(EpsW*Tc/2 + EpsPhi);
       
        I = mI + NoiseEnable*nI(1,1);
        Ie = mIe + NoiseEnable*nI(2,1);
        Il = mIl + NoiseEnable*nI(3,1);
        Q = mQ + NoiseEnable*nQ(1,1);
        Qe = mQe + NoiseEnable*nQ(2,1);
        Ql = mQl + NoiseEnable*nQ(3,1);
       
        Ud(k) = Ud(k) + (Ie^2-Il^2) + (Qe^2-Ql^2);
    end
    Udteor(k) = 2*qcno*Tc*(sinc(EpsW*Tc/2 /pi)^2)*(p_early(k)^2 - p_late(k)^2);
    if ~mod(k,100)
    fprintf('Progress: %.2f %%\n', k*100/NtauExtr)
    end
end

plot(EpsTau/tauChip, [Ud/Np; Udteor; SdTeor*EpsTau])
xlabel('\epsilon_{tau}/\tau_{chip}')
ylim([min(Udteor)-10 max(Udteor)+10])
grid on
Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты