1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
EbN0dB = -4:1:3;
TEB_pratique = zeros(1, length(EbN0dB));
TEB_theorique = zeros(1, length(EbN0dB));
for i = 1:length(EbN0dB);
%Calculer sigma2b
EbN0 = 10^(EbN0dB(i)/10);
EsN0 = 2*EbN0;
%la partie sans codage
nbErreurs = 0;
nbBits = 0;
NCO_mem=0; % initialisation NCO
filtre_mem=0; % initialisation de la memoire du filtre
phi_est(1)=0; % phase estimee : valeur initiale
while((nbErreurs<10)&&(nbBits < 1000))
for ii = 1:length(xe_echant)
d_phi=d_phi_deg*pi/180+2*pi*df_Rs*ii; % dephasage pour le symbole no ii en radians
xe_echant(ii)=xe_echant(ii)*exp(j*d_phi); % symbole complexe bruite et dephase = symbole recu
% PLL
out_det(ii)= -imag((xe_echant(ii)*exp(-1i*phi_est(ii))).^4);
% filtre de boucle
w(ii)=filtre_mem+out_det(ii); % memoire filtre + sortie detecteur
filtre_mem=w(ii);
out_filtre=A*out_det(ii)+B*w(ii); % sortie du filtre a l'instant ii : F(z)=A+B/(1-z^-1)
%NCO
phi_est(ii+1)=(out_filtre+NCO_mem); % N(z)=1/(z-1)
NCO_mem=phi_est(ii+1);
end
TEB_pratique(i)=nbErreurs/nbBits;
TEB_theorique(i)=qfunc(sqrt(2*EbN0));
end
%Tracé le TEB de la PLL
figure('name','comparaison entre TEB pratique et TEB th�orique');
semilogy(EbN0dB, TEB_pratique, 'b',EbN0dB, TEB_theorique, 'r')
title('comparaison entre TEB pratique et TEB th�orique');
legend('TEB pratique','TEB theorique'); |
Partager