Anda di halaman 1dari 7

Travaux Pratiques d’Algorithmes de Réception : Synchronisation

OFDM

Version à Temps Discret de la Chaîne de Transmission OFDM

S0n s0n nk

S1n s1n
Sl sk yk
S/P IFFT P/S PC

SN-1, n sN-1, n

 N

Y0n y0n

Y1n y1n
Yl
P/S FFT S/P PC

YN-1, n yN-1, n

1/N

Diagramme en Bloc d’une Chaîne de Transmission OFDM Discrète

On suppose que le système OFDM est composé de N sous porteuses. On suppose que les

symboles Sl sont d’énergie moyenne Es ( E  Sl  = Es ). On considère exclusivement une


2

modulation QPSK. Ainsi Sl ∈ Ω = { }


Es / 2( ±1 ± j ) . On suppose que le bruit nk est gaussien

centré de variance σ n2 = N 0 , où N 0 est la densité spectrale de puissance du bruit en bande de

base. On suppose que le préfixe est composé de N g échantillons, où N g = N (Tg / Tu ) , Tu et Tg


étant respectivement la durée utile et la durée de l’intervalle de garde du symbole OFDM, et

qu’un symbole OFDM, incluant son préfixe cyclique, est composé de N s = N + N g


échantillons.

- 1/7 -
Etude de l’ICI générée par une erreur de synchronisation en fréquence

Pour étudier l’ICI (InterChannel Interference) générée par une erreur en fréquence de δ f sur
l’une des sous-porteuses, on suppose que le symbole Smn correspondant à cette sous-porteuse

est nul. Sans perte de généralité, on peut supposer que S0n est nul. On suppose aussi que le

bruit nk est nul (variance σ n2 prise nulle). On génère un seul symbole OFDM, à savoir le

symbole numéro 0 ( n = 0 ), S = ( S00 , S10 ,K , S N −1,0 ) , vu le fait qu’une erreur en fréquence


n’entraine aucune ISI.
Si s = ( s− N , s− N +1 ,K , s−1, s0 , s1,K , s N −1) est la séquence d’échantillons générés correspondant au
g g

symbole OFDM numéro 0, alors, en l’absence de bruit, la séquence reçue correspondante


y = ( y− N g , y− N g +1 ,K , y−1 , y0 , y1,K , y N −1 ) est telle que yk = sk e j 2πδ fTe , où Te = Tu / N est la période

d’échantillonnage.

Travail Demandé (Partie 1) : Générer sur MATLAB les échantillons s du symbole OFDM
numéro 0 en prenant S00 = 0 et en tirant Sm 0 , m = 1, 2,K , N − 1 , aléatoirement dans l’alphabet Ω .
Introduire le décalage en fréquence δ f . Démoduler ensuite le signal reçu y pour générer le

vecteur de Y = (Y00 , Y10 ,K , YN −1,0 ) . Vérifier que Y00 est nul lorsque δ f = 0 et qu’il peut ne pas

être nul lorsque δ f ≠ 0 . Estimer la variance de Y00 , σ Y = E  Y00  , en tirant plusieurs


2 2

symboles S , et représenter l’estimation de la variance normalisée, σ Y2 / Es , en fonction de

l’erreur en fréquence normalisée ε = δ fTu , pour N = 64 (WIFI 802.11a&g), 128, 256, 512,
1024, 2048, 4096 et 8192. Pour vérifier les résultats de simulation, tracer également les
courbes correspondant à l’expression théorique de la variance de l’ICI
2 2
sin(πε ) sinc(ε )
var( ICI ) / Es = 1 − = 1− ,
N sin(πε / N ) sinc(ε / N )
valable pour N quelconque.
Pour comparaison, tracer également la courbe correspondant à l’expression théorique de la
variance de l’ICI
2
var( ICI ) / Es = 1 − sinc(ε ) ,

valable pour un système OFDM à temps continu. Que peut-on conclure ?

Programme MATLAB :

- 2/7 -
clear;
N = 16;
Epsilon = -1/2:0.01:1/2;
Es = 1;
M = 2500; % Nombre d'expériences
Statistiques = zeros(size(Epsilon));
for experience = 1:M,
if rem(experience, 100) == 0,
experience
end
S = sqrt(Es/2)*((2*(rand(1, N)>0.5)-1)+ j*(2*(rand(1, N)>0.5)-1)); %
Séquence de symboles du symbole OFDM numéro 0
S(1) = 0; % Rien n'est émis sur la sous-porteuse numéro 0
s = ifft(S)*sqrt(N); % Echantillons générés sans l'insertion d'un
préfixe cyclique
indice = 1;
for epsilon = Epsilon,
d = exp(j*2*pi*epsilon*(0:(N-1))/N); % Décalage en fréquence de
l'erreur de fréquence normalisée epsilon
y = s.*d; % Echnatillons reçus
Y = fft(y)/sqrt(N); % variables de décision contenant uniquement de
l'ICI sur la sous-porteuse numéro 0
Statistiques(indice) = Statistiques(indice) + abs(Y(1))^2;
indice = indice + 1;
end
end
VarICI = Statistiques/(M*Es);
VarICITheN = 1 - (sinc(Epsilon)./sinc(Epsilon/N)).^2; % Expression
théorique de la variance de l'ICI pour N donné
VarICITheInfini = 1 - (sinc(Epsilon)).^2; % Expression théorique de la
variance de l'ICI pour un système OFDM à temps continu
figure;
plot(Epsilon, VarICI, 'k--', Epsilon, VarICITheN, 'b:', Epsilon,
VarICITheInfini, 'r-.');

Etude d’un Algorithme de Synchronisation en Temps et en Fréquence


Pour étudier les performances de l’algorithme de synchronisation aveugle en temps et en
fréquence, on génère les échantillons successifs des M + 2 symboles S = ( S0 n , S1n ,K , S N −1, n ) ,
n = −1, 0,K , M . On rappelle que les échantillons d’un symbole OFDM sont composés d’un

préfixe cyclique comptant N g échantillons et d’une partie utile comptant exactement N

échantillons. On suppose que N = 2 p , où p est un entier naturel pouvant valoir 8 (WIFI


802.11a&g), 9, 10, 11 (DVB-T&H 2K), 12 (DVB-H 4K) et 13 (DVB-T&H 8K). De plus, on

considère les rapports λ = N g / Nu = 1/ 4,1/ 8 et 1/16 .


Afin de tester l’algorithme de synchronisation en aveugle, on introduit un retard

θ ∈ { 0,1,K ,N s }−1 , choisi à l’avance à la main. Pour ce faire, on supprime les N s − θ premiers

échantillons générés. On décale ensuite le signal obtenu en fréquence d’une erreur en

fréquence δ f , en multipliant l’échantillon numéro k par e j 2πδ fkTe = e j 2πε k / N , où Te = Tu / N

- 3/7 -
est la période d’échantillonnage et ε = δ f Tu est le décalage de fréquence normalisé. On

considère uniquement des décalages δ f ∈ [ − F / 2, F / 2[ , où F = 1/ Tu est l’espacement entre

sous-porteuses, ce qui revient à choisir ε dans [ −1/ 2,1/ 2[ . On rajoute ensuite des

échantillons de bruit indépendants gaussiens complexes de variance N 0 , N 0 étant déterminer

par le rapport signal sur bruit (RSB) SNR = Es / N 0 à simuler.

Travail Demandé (Partie 2) : Pour un choix donner de N = 2 p , N g = λ N , (θ , ε ) ,

SNR = Es / N 0 et M , on calcule les quantités

Λ (θ%
) = γ (θ%
) − ρφ (θ%
)


θ%
+ N g −1

γ (θ%
)= ∑
k =θ%
yk* yk + N ,

θ%
+ N g −1

φ (θ%
)=
1
2

k =θ%
(y k
2
+ yk + N
2
),
yk , k ∈ {0,1,K , ( M + 1) N s + θ − 1} sont les échantillons reçus et ρ = SNR / (1 + SNR ) , pour

M durées symboles OFDM successives ( θ%∈ {0,1,K , MN s − 1} ). On représente alors Λ (θ%


) en

fonction de θ%∈ {0,1,K , MN s − 1} pour une expérience unique, lorsque ( N , N g ,θ , ε , M ) =

(1024, 64, 512, 0, 8), (512, 32, 256, 0, 8), (256, 16, 128, 0, 8) et N 0 = 0 (absence de bruit).

On moyenne ensuite, membre à membre, les blocs successifs calculés de longueur N s , afin
d’obtenir
1  M −1 M −1 M −1

Γ=  ∑
M  k =0
Λ ( kN s ), ∑
k =0
Λ (1 + kN s ), K , ∑
k =0
Λ( Ns − 1 + kNs )  .

On trace ensuite les courbes de γ k en fonction de k , k ∈ { 0,1,K , N s − 1} , où γ k est la k -ème

composante de Γ , découlant d’une expérience unique pour les mêmes valeurs de

( N , N g ,θ , ε , M ) .

Programme MATLAB :
clear;
N = 128; % Nombre de porteuses

- 4/7 -
M = 64; % Nombre de symboles OFDM - 2 (M+2) symboles OFDM générés pour
introduire le décalage et calculer les métriques
theta = N/2;
epsilon = 0;
lambda = 1/16; % Durée du préfixe cyclique / Durée utile d'un symbole OFDM
Ng = N*lambda; % Nombre d'échantillons dans le préfixe cyclique
Ns = N + Ng;
Es = 1;
N0 = 0; % Absence de bruit (SNR infini)
rho = 1; % rho = SNR/(1+SNR);
SeqTx = []; % Séquence modulée transmise composée de M+2 symboles OFDM,
incluant leurs préfixes cycliques
for experience = -1:M,
S = sqrt(Es/2)*((2*(rand(1, N)>0.5)-1)+ j*(2*(rand(1, N)>0.5)-1)); %
Séquence de symboles du symbole OFDM numéro 0
s = ifft(S)*sqrt(N); % Echantillons générés sans l'insertion d'un
préfixe cyclique
PC = s((N-Ng+1):N);
SeqTx = [SeqTx, PC, s];
end
d = exp(j*2*pi*epsilon*(0:(Ns*(M+2)-1))/N); % Décalage en fréquence de
l'erreur de fréquence normalisée epsilon
SeqRx = SeqTx.*d; % Sequence reçue
SeqRx = SeqRx(Ns-theta+1:numel(SeqRx)); % Décalage en temps de l'erreur en
temps théta (en nombre d'échantillons de durée Te = Tu/N)
Lambda = []; % Tableau des statistiques
for k=1:M*Ns,
gamma = SeqRx(k+N:(k+Ng+N-1))*SeqRx(k:(k+Ng-1))';
phi = (SeqRx(k:(k+Ng-1))*SeqRx(k:(k+Ng-1))' + SeqRx(k+N:(k+Ng+N-
1))*SeqRx(k+N:(k+Ng+N-1))')/2;
lambda = abs(gamma) - rho*phi;
Lambda = [Lambda lambda];
end
figure;
plot(0:(M*Ns-1), Lambda);
Gamma = zeros(1, Ns); % Statistiques moyennées
for l=1:M,
Gamma = Gamma + Lambda((l-1)*Ns+1:l*Ns);
end
Gamma = Gamma/M;
figure;
plot(0:(Ns-1), Gamma);

Travail Demandé (Partie 3) : On cherche ensuite l’estimation au maximum de


vraisemblance du décalage en temps, θˆ , vérifiant

θˆ = arg max γ k
0≤ k < N s

où γ k est la k -ème composante de Γ . On calcule ensuite l’estimation au maximum de

vraisemblance du décalage en fréquence, εˆ , par

R γ (θˆ)
εˆ = .

- 5/7 -
On répète l’expérience plusieurs fois pour sortir des estimations des variances d’erreurs

 2

d’estimation σ θ = E  θˆ − θ  et σ ε = E  εˆ − ε  . On trace ensuite des courbes représentant
2 2 2

 

σ¶ θ2 et σ¶ ε2 en fonction du SNR = Es / N 0 , en dB, pour les valeurs ( N , N g , θ , ε , M ) =

(1024, 64, 3*64, 1/8, 1), (1024, 64, 3*64, 1/8, 2) et (1024, 64, 3*64, 1/8, 4). On prendra
SNRdB = 10 log10 ( SNR ) dans l’ensemble {0, 1, 2, …, 20}.

Programme MATLAB :
clear;
N = 1024; % Nombre de porteuses
M = 1; % Nombre de symboles OFDM - 2 (M+2) symboles OFDM générés pour
introduire le décalage et calculer les métriques
lambda = 1/16; % Durée du préfixe cyclique / Durée utile d'un symbole OFDM
Ng = N*lambda; % Nombre d'échantillons dans le préfixe cyclique
Ns = N + Ng;
Theta = 3*Ng;
Epsilon = 1/8;
Es = 1;
TabSNRdB = 0:2:20;
NbrExper = 500; % Nombres d'expériences
d = exp(j*2*pi*Epsilon*(0:(Ns*(M+2)-1))/N); % Décalage en fréquence de
l'erreur de fréquence normalisée epsilon
StatThetaErr = zeros(size(TabSNRdB));
StatEpsilonErr = zeros(size(TabSNRdB));
for NumExper = 1:NbrExper,
NumExper
SeqTx = [];
for NumSymbOFDM = -1:M, % Numéro du symbole OFDM
S = sqrt(Es/2)*((2*(rand(1, N)>0.5)-1)+ j*(2*(rand(1, N)>0.5)-1));
% Séquence de symboles du symbole OFDM numéro 0
s = ifft(S)*sqrt(N); % Echantillons générés sans l'insertion d'un
préfixe cyclique
PC = s((N-Ng+1):N);
SeqTx = [SeqTx, PC, s];
end
SeqRxSansBruit = SeqTx.*d; % Sequence reçue sans bruit
SeqRxSansBruit = SeqRxSansBruit(Ns-Theta+1:numel(SeqTx)); % Décalage en
temps de théta de la séquence non bruitée
BruitNorm = sqrt(1/2)*(randn(size(SeqRxSansBruit))
+j*randn(size(SeqRxSansBruit))); % Génération du bruit normalisé de
variance unité
IndiceSNRdB = 1;
for SNRdB = TabSNRdB,
SNR = 10^(SNRdB/10);
N0 = Es/SNR; % Variance du bruit
rho = SNR/(SNR+1);
SeqTx = []; % Séquence modulée transmise composée de M+2 symboles
OFDM, incluant leurs préfixes cycliques
Bruit = sqrt(N0)*BruitNorm; % Génération du bruit
SeqRx = SeqRxSansBruit + Bruit; % Séquence reçue avec bruit
Lambda = []; % Tableau des statistiques
for k=1:M*Ns,

- 6/7 -
gamma = SeqRx(k+N:(k+Ng+N-1))*SeqRx(k:(k+Ng-1))';
phi = (SeqRx(k:(k+Ng-1))*SeqRx(k:(k+Ng-1))' + SeqRx(k+N:
(k+Ng+N-1))*SeqRx(k+N:(k+Ng+N-1))')/2;
lambda = abs(gamma) - rho*phi;
Lambda = [Lambda lambda];
end
%0
%plot(0:length(Lambda)-1, Lambda);
%pause;
Gamma = zeros(1, Ns); % Statistiques moyennées
for l=1:M,
Gamma = Gamma + Lambda((l-1)*Ns+1:l*Ns);
end
Gamma = Gamma/M;
%plot(0:Ns-1, Gamma);
%pause;
[MaxGamma, IndiceMax] = max(Gamma);
ThetaEst = IndiceMax-1; % Estimation de theta
CumulGamma = 0;
for l=1:M,
CumulGamma = CumulGamma + SeqRx(IndiceMax+N+(l-1)*Ns:
(IndiceMax+Ng+N-1+(l-1)*Ns))*SeqRx(IndiceMax+(l-1)*Ns:(IndiceMax+Ng-1+(l-
1)*Ns))';
end
EpsilonEst = phase(CumulGamma)/(2*pi);
%ThetaEst - Theta
StatThetaErr(IndiceSNRdB) = StatThetaErr(IndiceSNRdB) + (ThetaEst -
Theta)^2;
%EpsilonEst-Epsilon
StatEpsilonErr(IndiceSNRdB) = StatEpsilonErr(IndiceSNRdB) +
(EpsilonEst-Epsilon)^2;
IndiceSNRdB = IndiceSNRdB + 1;
end
end
VarTheta = StatThetaErr/NbrExper;
EcartTypeTheta = sqrt(VarTheta);
VarEpsilon = StatEpsilonErr/NbrExper;
EcartTypeEpsilon = sqrt(VarEpsilon);
figure;
plot(TabSNRdB, EcartTypeTheta);
xlabel('SNR [dB]');
ylabel('Sqrt(Est(\sigma_\theta^2))');
figure;
plot(TabSNRdB, EcartTypeEpsilon);
xlabel('SNR [dB]');
ylabel('Sqrt(Est(\epsilon_\theta^2))');

- 7/7 -

Anda mungkin juga menyukai