Sunteți pe pagina 1din 20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

Transmissions Numriques
Simulation d'une chane de transmission DVB-S (Digital Video Broadcasting by Satellite) et tude de ses performances Michal Crosnier et Julien Manteau

L'objectif de ce projet est de simuler et d'analyser les performances d'une chane de transmission DVB-S. Pour cela cette chane va tre modlise sous Matlab 7 l'aide de la Communication Toolbox. Ensuite la simulation permettra d'analyser les performances de la chane en fonction du BER (Bit Error Rate) et du rapport Eb/No o Eb est l'nergie reue par bit et No/2 la densit spectrale du bruit gaussien.

1/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

Transmissions Numriques
Simulation d'une chane de transmission DVB-S (Digital Video Broadcasting by Satellite) et tude de ses performances Michal Crosnier et Julien Manteau
L'objectif de ce projet est de simuler et d'analyser les performances d'une chane de transmission DVB-S. Pour cela cette chane va tre modlise sous Matlab 7 l'aide de la Communication Toolbox. Ensuite la simulation permettra d'analyser les performances de la chane en fonction du BER (Bit Error Rate) et du rapport Eb/No o Eb est l'nergie reue par bit et No/2 la densit spectrale du bruit gaussien.

Table des matires


I.Introduction...................................................................................................................................................2 II.Chanedetransmission.................................................................................................................................2 II.1.metteur...............................................................................................................................................2 II.1.1.Bitsmis......................................................................................................................................2 II.1.2.CodageblocReedSolomon........................................................................................................3 II.1.3.Entrelacement..............................................................................................................................3 II.1.4.Codageconvolutionnel(avecpoinonnage)................................................................................3 II.1.5.ModulationQPSK.......................................................................................................................4 II.1.6.MiseenformeSRRCF................................................................................................................4 II.2.Canal....................................................................................................................................................4 II.2.1.Dphasage...................................................................................................................................5 II.2.2.Bruitblancgaussien....................................................................................................................5 II.3.Rcepteur.............................................................................................................................................5 II.3.1.Filtrageadapt.............................................................................................................................5 II.3.2.chantillonnage...........................................................................................................................6 II.3.3.Estimationetcorrectiondephase................................................................................................6 II.3.4.Dmodulation..............................................................................................................................6 II.3.5.DcodagecanalparViterbi.........................................................................................................6 II.3.6.Dsentrelacement........................................................................................................................6 II.3.7.DcodageblocReedSolomon...................................................................................................6 II.3.8.Bitsreus.....................................................................................................................................6 III.Simulations.................................................................................................................................................7 III.1.OrganigrammedesprogrammesMatlab.............................................................................................7 III.2.Paramtres...........................................................................................................................................7 III.3.Calculdesperformancesthoriques....................................................................................................8 III.4.Rsultats..............................................................................................................................................8 IV.Conclusion..................................................................................................................................................8

2/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

I.Introduction
Le monde d'aujourd'hui est un monde o les mdias tiennent une place de plus en plus importante. La tlvision est un vecteur prdominant et ainsi pour le passage au numrique de la tlvision s'est cre le consortium DVB pour Digital Video Broadcasting en 1994. Il a pour but de dvelopper une suite complte de technologie broadcast pour le satellite, le cble et la diffusion terrestre partir de technologies existantes et a abouti des normes comme le DVB-S (Satellite), DVB-T (Terrestre), DVB-C (Cable) ou encore le DVB-H (Handheld). Nous allons tudier le cas du DVB-S qui est adapt la diffusion par le canal satellite. Les caractristiques de celui-ci sont:

la bande disponible est relativement large (36 MHz), canal de type AWGN (Additive White Gaussian Noise), signal fortement attnu et domin par le bruit, transmission en ligne directe.

L'objectif est de simuler la chane de transmission complte de l'metteur au rcepteur afin d'tablir les performances de la chane en fonction du BER (Bit Error Rate) et du rapport Eb/No o Eb est l'nergie reue par bit et No/2 la densit spectrale du bruit gaussien. On comparera galement ces rsultats aux thoriques lorsqu'ils seront disponibles. La modlisation de la chane s'est faite par blocs symtriques. On implmentait un bloc et simultanment son symtrique en rception. On part du centre de la chane pour en revenir ses extrmits. Ainsi on ajoute progressivement de la complexit et cela nous permet de vrifier tapes par tapes le bon fonctionnement de la modlisation. Dans l'ordre nous avons implment : la modulation QPSK et le codage en SRRCF, le codage canal convolutif et l'algorithme de Viterbi, l'estimation de phase par PLL puis laboration de la chane globale.

II.Chane de transmission
II.1.metteur
II.1.1.Bits mis
L'objectif premier du DVB est la diffusion de vido et le format retenu pour cette diffusion dans le DVB-S est le MPEG-2. Il y a aussi possibilit de transmettre des donnes avec encapsulation de paquets IP dans les trames MPEG-2. Pour modliser l'mission de ces paquets on pourrait tudier la rpartition des 0 et 1 pour de l'encodage vido mais nous supposerons plus simplement que l'on mettra des 0 et des 1 quiprobables.

3/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

II.1.2.Codage bloc Reed-Solomon


Un code Reed-Solomon est un code BCH de longueur 2 et le codage Reed-Solomon utilis dans la norme DVB-S est le RS(255,239,8) ce qui veut dire 255 octets en sortie du codeur pour 239 octets en entre avec une capacit de correction de 8 octets. On appelle ce processus FEC, Forward Error Correction, correction prdictive des erreurs. Le codage Reed-Solomon ajoute de la redondance aux donnes afin de reconstituer celles-ci si il y a une erreur de transmission.
m1

II.1.3.Entrelacement
Une chose difficile corriger est une longue suite de bits ou d'octets conscutifs errons du message original. Or les erreurs se produisent essentiellement par bursts pour le canal satellite d'o la ncessit de se prvenir contre ce type de phnomnes. Pour cela on va utiliser l'entrelacement. Dans notre modlisation nous avons retenu un simple entrelaceur lignes/colonnes grce la fonction Matlab matintrlv.
2: 1: Canard poules renard canard poules renard 3: cpr aoe nun ala rer dsd 4: cpr aoenunalarerdsd Ajout d'erreurs de transmission burst : 5: cpr aoe****larerdsd 6: Cpr aoe *** *la rer dsd

7: ca**rd po*les re*ard

Exemple: On crit le message (1) , on le scinde en paquets de mme taille (2), on le lit en vertical (3) et on le transmet en horizontal (4). On ajoute les erreurs de transmission (5) et la rception on fait la manuvre inverse (6) afin de rcuprer le message original mais affect d'erreurs (7). Cependant on voit nettement que l'entrelacement a permis de rpartir les erreurs sur plusieurs paquets. Ainsi le code Reed-Solomon vu prcdemment peut facilement corriger les erreurs l'chelle de la transmission. Sans entrelacement, cela aurait t des mots complets que l'on n'aurait pu rcuprer.

II.1.4.Codage convolutionnel (avec poinonnage)


Le codage convolutionnel permet de corriger des erreurs de transmission du au bruit dans le canal. Pour cela on utilise le code mre DVB_S (7,1/2) avec les polynmes gnrateurs [171,133] (octal) et avec la matrice de poinonnage X=10 Y=1 1 Grce au poinonnage on obtient un code de rendement 2/3.

II.1.5.Modulation QPSK
La modulation QPSK est une modulation complexe de 4 symboles :
4/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

00 ->(1+j)/ 01 ->(1-j)/

2 2 10 ->(-1+j)/ 2 11 ->(-1-j)/ 2
On utilise la QPSK avec un codage de Gray: en passant de /4 d'un symbole l'autre seul un bit change. Cette modulation a t obtenue grce la fonction pskmod avec les paramtres adapts.

II.1.6.Mise en forme SRRCF


La mise en forme est l pour viter l'ISI et limiter l'encombrement spectral du signal. En effet l'interfrence inter symbole peut perturber la dcision l'instant d'chantillonnage en prsence de bruit. Pour cela il faut ouvrir l'oeil afin que l'ISI perturbe le moins possible d'o le critre de Nyquist : he k.Ts =0 si k 0 et 1 si k=0 . Pour cela on peut utiliser plusieurs famille de filtres mais le cosinus surlev a l'avantage d'avoir non seulement une ouverture verticale maximale ( une meilleure rsistance au bruit, c'est la condition de Nyquist), mais aussi une ouverture horizontale maximale afin d'tre le plus tolrant possible vis--vis de l'instant d'chantillonnage.

.t t T ht =sinc . cos T 2t 2 1 T
Le filtrage est pour moiti dans l'metteur et pour l'autre moiti dans le rcepteur. Le filtrage dans l'metteur doit donc avoir une rponse frquentielle en "racine de cosinus surlev". Un des paramtres importants de ce genre de filtre est le roll-off .(cf III.2.Paramtres)

II.2.Canal
Le canal satellitaire prsente les caractristiques suivantes :

la bande disponible est relativement large (36 MHz), canal de type AWGN (Additive White Gaussian Noise), signal fortement attnu et domin par le bruit, transmission en ligne directe.

II.2.1.Dphasage
Pour modliser les erreurs de phase , les chantillons de signal mis sont multiplis par des exponentielles complexes exp( j. ) .

5/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

II.2.2.Bruit blanc gaussien


Le canal de transmission ajoute du bruit blanc. Cependant pour garantir une comparaison fiable entre les diffrentes chanes (codes et non codes) il faut se rappeler que k bits avec une nergie EB(c) dans une chane code sont convertis en n bits avec une nergie EB(nc) dans la chaine non code.
1 2 % calcul des variances du bruit 3 Eh= 1; 4 constellation=pskmod([0:M-1],M,phase,'gray'); 5 sigma2 = mean(abs(constellation).^2); 6 7 R=1/2; 8 % calcul de No 9 EbNo=10.^(EbNo_dB./10); 10 No = (sigma2 * Eh)./ (log2(M) * EbNo * R* (K/N));

K/N est le rapport du au code Reed-Solomon. Une fois le No dtermin, on rajoute le bruit de la faon suivante:
bruit = sqrt(No/2)*((randn(1,length(meform)))+i*(randn(1,length(meform))));

II.3.Rcepteur
II.3.1.Filtrageadapt
Le filtrage adapt est l pour minimiser le TEB. Il permet en conjonction avec le filtre de mise en forme l'oeil afin d'avoir un chantillonnage efficace. Comme lui c'est un filtre en racine de cosinus surlev. Les figures ci dessous montrent l'impact de ce filtre:

II.3.2.chantillonnage
On chantillonne tous les priodes d'un symbole (Ts) l'instant de plus grande ouverture du diagramme de l'oeil (0+K Ts).

6/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

II.3.3.Estimationetcorrectiondephase
L'estimation de la phase est obtenu par un filtre de second degr sur le signal et aprs on rectifie la phase. Ceci permet de corriger l'erreur de phase induit par le canal. Dans un premier temps on cherche obtenir la S-curve du dtecteur en l'utilisant en boucle ouverte. On en tire la pente qu'on rutilise ensuite en boucle ferme pour dtecter l'erreur de phase. A gauche, une figure montrant l'accroche de la phase. L'erreur que l'on peut dtecter ne peut dpasser /4 ceci cause de la modulation QPSK.

Pour pallier ce problme, deux solutions :


utilisation d'un Unique Word (UW), squence d'apprentissage connue par le rcepteur codage par transition, quand on a une transition on met un -1 et 1 si on n'en a pas.

II.3.4.Dmodulation
La dmodulation est l'opration inverse de la modulation, on utilise pour cela la fonction inverse du pskmod (pskdemod).Cette tape n'a t effectue que pour comparer le dcodage hard (avec dmodulation pralable) et le dcodage soft (sans dmodulation pralable).

II.3.5.DcodagecanalparViterbi
Le dcodage se fait selon l'algorithme de Viterbi. Cette opration est effectue avec la fonction vitdec. Les paramtres de cette fonction permettent de choisir si le decodage est Hard (distance de Hamming) ou Soft (distance euclidienne). Cette opration permet de corriger certaines erreurs dues au bruit dans le canal.

II.3.6.Dsentrelacement
Le dsentrelacement fait l'opration inverse de l'entrelacement. On crit le message par paquet et on lit en colonnes. Le but du dsentrelaceur est de remplacer en rception, une salve d'erreurs regroupes et souvent non-corrigeables pour une multitude d'erreurs rparties et et souvent corrigeables pour le dcodeur de Reed-Solomon

7/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

II.3.7.DcodageblocReed-Solomon
Le dcodage bloc fait cho au codage bloc et enlve la redondance introduit et corrige si besoin est un maximum de 8 erreurs sur la trame (on utilise le code RS(255,239,8) )

II.3.8.Bitsreus
En fin de chane s'effectue la rception des donnes mais on peut aussi calculer le TEB final de la chane de transmission: nombre de bits errons

nombre de bits reus

III.Simulations
III.1.OrganigrammedesprogrammesMatlab

III.2.Paramtres
Roll-off: La norme prconise un roll-off de 0,35 . Il est impos par la norme afin de pouvoir transmettre dans le canal sans trop empiter chez les autres au niveau frquentiel. Les figures ci dessous montre que pour un roll-off lev le diagramme de l'oeil est plus ouvert mais au prix d'une occupation spectrale plus importante.

8/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

B1T_dB: Cette courbe a t ralise avec un Eb/No en dB de 3 et avec une zone de poursuite de 7000 points et montre que la valeur 3 offre le meilleur compromis. Au del on risque un trop fort dpassement afin stabilisation.

Nombre de symboles: On a t oblig de prendre un multiple cause du codage de ReedSolomon qui imposait afin d'obtenir un nombre de mots entiers. Nous avons crit ce nombre de la forme k*5736 et k valait typiquement 10. Nombre de blocks: pour obtenir un TEB de 1012 il faut simuler 10000000000 bits et avoir une erreur. La simulation serait impossible en une seule fois. Nous avons donc introduit des blocks d'un certain nombre de bits dfini juste avant. Et on passait un certain nombre de fois dans la chane les blocks pour un Eb/No afin d'avoir des erreurs en plus grand nombre. On a pris 10 comme valeur car sinon les simulations duraient vraiment trop longtemps. Nombre d'erreurs: on considre qu'il faut au moins 100 erreurs afin que le calcul du TEB soit considr fiable. Ceci moins que la boucle quitte pour cause de nombre de blocks max transmis. Plage de Eb/No en dB: on ne peut descendre en dessous de 0 (du moins pas avant l'apparition des turbos codes). Pour la borne suprieure on voit que le phnomne d'avalanche se produit en dessous de 15. Valeur que l'on pouvait dj obtenir par le calcul thorique avec seulement le filtre de mise en forme. Paramtres de codage bloc et Reed-Solomon: ces paramtres ont t dfinis en accord avec la norme DVB-S.

III.3.Calculdesperformancesthoriques
La probabilit davoir un 0 dtect a la sortie du rcepteur lorsquun 0 a et mis dpend de la puissance du bruit qui a t ajoute au signal. Considrons la fonction de densit du bruit blanc gaussien :

On obtient la fonction de densit de probabilit pour un 0 transmis: avec

Aprs changement de variable on obtient TEB= 0.5*Q((Eb/No)). On a dfini l'erreur du 0 la place du 1 mais les rgions de dcision tant symtriques par rapport l'origine l'autre cas revient au mme. Dans notre cas il faut en plus considrer le changement de puissance introduit par les codes en
9/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

bloc ce qui nous fait

1 Eb TEB= Q . R 2 No
o R vaut dans notre cas.

III.4.Rsultats

Voici la courbe obtenue aprs bien de laborieuses (et longues) simulations. La courbe 3 et 4 sont relativement en accord, conformment nos attentes (l'erreur finale est due au nombre insuffisant de bits simuls). Entre la courbe 1 et 2 on observe que l'influence du codage RS est faible au dbut mais l'effet d'avalanche est clairement prsent par la suite. Les courbes 1 et 2 sont au dessus de la 3 et 4 car au dbut lorsque beaucoup d'erreurs sont prsentes 1 et 2 sont plus influences par ce phnomne. En effet lors du codage comme les bits prcdents sont utiliss pour dcoder les suivants les erreurs se rpercutent. Ce qui explique les meilleurs rsultats des courbes 3 et 4 au dbut.

IV.Conclusion
Durant l'laboration de la modlisation de la chane DVB-S nous avons t confront divers problmes. L'intrt t de mobiliser nos connaissances acquises depuis deux ans afin d'obtenir une vision d'ensemble de la chane. La conception de la chaine a t faite et teste bloc aprs bloc aprs une simplification de la norme DVB-S. L'tude nous a permis de mettre en relief les efficacits des diffrents codages (RS et convolutionnel) malheureusement le temps de calcul nous a empch d'atteindre le TEB de 10E-12 qui correspond 1 heure de transmission vido sans erreur. L'tude devrait tre amliore au niveau de la PLL en testant avec une variation de l'erreur de phase au niveau d'un bloc.

10/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

11/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

Annexes

11~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 12% ################################################################ 13% |Modlisation d'une chaine DVB-S | 14% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 15% 16% ### 17% Objectif: modiliser une chaine DVB-S afin de comparer les 18% performances d'une chaine non encode une chaine code 19% au travers d'un canal avec ajout de bruit blanc et dphasage. 20% 21% ### 22% Entre: minimum de Eb/No en dB, maximum de Eb/No en dB et le pas 23% 24% ### 25% Sortie: TEB= f(EbNo_dB) 26% 27% ################################################################ 28 29clear all; 30close all; 31 32 33% ### Paramtres 34% Pour estimer le TEB de faon efficace il faut un certain 35% nombre d'erreurs. POur cela on envoie Nb bits (qui vaut 36% un NB_BLOCKS) dans la simulation jusqu' ce que l'on 37% ait min_erreur ( typiquement une centaine). Afin d'viter 38% de perdre des ressources et d'avoir des simulation trop 39% longues, on rajoute le paramtre NB_BLOCKS qui consiste 40% en le maximum de blocks que l'on va envoyer pour un Eb/No 41% et on s'arrete lorsqu'on a envoy un certain nombre de 42% blocks. 43 44 45% Paramtre de la boucle sur les TEBs 46min=0; 47max=15; 48pas=1; 49 50EbNo_dB=[min:pas:max]; 51leb=length(EbNo_dB); 52min_erreur=1000; 53 54% Paramtres de la simulation 55k_block=10; 56Nb=k_block*5736; % mettre assez de points pour accrocher la PLL! 57NB_BLOCKS=10; 58 59% ### 60 61 62 63%boucle sur les BER
12/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

64for m=1:leb 65 66 EB_No_dB= EbNo_dB(m) 67 68 69 % appel del la simulation pour un ratio; 70 [TEB_chaine_non_codee,TEB_chaine_sans_RS,TEB_chaine_totale,TEB_theorique _chaine_non_codee]=DVBS_EbNodB(EbNo_dB(m),min_erreur,Nb,NB_BLOCKS); 71 72 TEB_chaine_non_codee_array(m)=TEB_chaine_non_codee; 73 TEB_chaine_sans_RS_array(m)=TEB_chaine_sans_RS; 74 TEB_chaine_totale_array(m)=TEB_chaine_totale; 75 TEB_theorique_chaine_non_codee_array(m)=TEB_theorique_chaine_non_codee; 76 77 78 79 80end 81 82figure; 83semilogy(EbNo_dB,TEB_chaine_non_codee_array,'r') 84 85hold on 86semilogy(EbNo_dB,TEB_chaine_sans_RS_array,'b') 87semilogy(EbNo_dB,TEB_chaine_totale_array,'g') 88semilogy(EbNo_dB,TEB_theorique_chaine_non_codee_array,'k')

89function [TEB_chaine_non_codee,TEB_chaine_sans_RS,TEB_chaine_totale,TEB_theorique_chain e_non_codee]=DVBS_EbNodB(EbNo_dB,min_erreur,Nb,NB_BLOCKS) 90 91% ################################################################ 92% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 93% |Modlisation d'une chaine DVB-S | 94% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95% 96% ### 97% Objectif: modiliser une chaine DVB-S afin de comparer les 98% performances d'une chaine non encode une chaine code 99% au travers d'un canal avec ajout de bruit blanc et dphasage. 100% 101% @@@ Cette fonction calcule les TEB pour un Eb/No. @@@ 102% 103% ### 104% Entre: Eb/No en dB, minimum d'erreur faire, le nombre de bits par 105% bloc Nb et le nombre max de blocks transmettre NB_BLOCKS 106% 107% ### 108% Sortie: TEB_chaine_non_codee,TEB_chaine_sans_RS,TEB_chaine_totale, 109% TEB_theorique_chaine_non_codee 110% 111% ################################################################ 112 113 114 115 116

13/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

117% Ajout de phase dans le canal 118phase_canal=pi/5*rand(1,1); 119% codage Reed Solomon 120Ms=8; 121t=8; 122N=2^Ms-1; 123K=N-2*t; %longueur de contrainte 124nb_mots=Nb/(Ms*K); 125R=1/2; %rendement du code 126 127% parametres entrelaceur 128Nrows=N*Ms; 129Ncols=nb_mots; 130 131% calcul du treillis 132trellis = poly2trellis(7,[171 133]); 133 134% paramtre qpsk 135M=4; 136phase=pi/4; 137 138% paramtres du rcosfir 139retard=6; % retard introduit par rcosfir 140npts=20; 141Te=1; 142Ts=npts*Te; 143rolloff=0.35; 144 145% calcul et normalisation du rcosfir 146filtre= rcosfir(rolloff,retard,Ts,1,'sqrt'); 147filtre= filtre/norm(filtre); 148 149% calcul des variances du bruit 150Eh= 1; 151constellation=pskmod([0:M-1],M,phase,'gray'); 152sigma2 = mean(abs(constellation).^2); 153 154% calcul de No 155EbNo=10.^(EbNo_dB./10); 156No = (sigma2 * Eh)./ (log2(M) * EbNo * R* (K/N)); 157 158% Calcul du TEB thorique pour une chaine non code. 159TEB_theorique_chaine_non_codee=0.5*erfc(sqrt(EbNo*R)); 160 161 162nb_erreur3= 0; 163total3= 0; 164nb_erreur2= 0; 165total2= 0; 166nb_erreur1= 0; 167total1= 0; 168nb_blocs_max=0; 169first_pass=1; 170 171 172% Dbut de la boucle de simulation 173 174% nb_erreur3 est le plus restrictif (chute du TEB la plus rapide) 175% c'est lui qui doit faire au moins un certain nombre d'erreurs

14/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

176% moins d'avoir deja transmis le nombre de blocks max 177while (nb_blocs_max<NB_BLOCKS) 178 179 if (nb_erreur3 < min_erreur) 180 181 182 183 184 %%%% EMETTEUR %%%% 185 186 % gnration des bits 187 bits=randint(Nb,1); 188 189 % codage Reee Solomon 190 bits_RS=codeur_RS(bits,Ms,t); 191 192 % entrelaceur ligne/colonne 193 bits_entrelaces=matintrlv(bits_RS,Nrows,Ncols); 194 195 196 % codage convolutionnel 197 bits_codage_conv=convenc(bits_entrelaces,trellis); 198 199 %matrice de poinconnage 200 %P= [ 1 1 0 1]; 201 bits_poinconnes= zeros(1,length(bits_codage_conv)*3/4); 202 bits_poinconnes(1:3:end)= bits_codage_conv(1:4:end); 203 bits_poinconnes(2:3:end)= bits_codage_conv(2:4:end); 204 bits_poinconnes(3:3:end)= bits_codage_conv(4:4:end); 205 206 207 208 %on reforme la matrice en mots de longueur n 209 bits_formes=reshape(bits_poinconnes,2,length(bits_poinconnes)/2); 210 bits_formes=bits_formes.'; 211 212 % on les convertit en dcimal pour prparer l'encodage qpsk 213 bits_converti=bi2de(bits_formes); 214 215 %on les convertit en qpsk et ajoute la phase (modulation qpsk M=4) 216 qpsk=pskmod(bits_converti,M,phase,'gray'); 217 218 %ajout de zros pour le dcodage RS (compensation du retard) 219 qpsk_pad=zeros(length(qpsk)+ 2*retard,1); 220 qpsk_pad(1:end-2*retard)=qpsk; 221 222 %diagramme de l'oeil en sortie du modulateur QPSK 223 % figure; 224 % plot(real(reshape(qpsk_pad,2,length(qpsk_pad)/(2)))); 225 226 227 %suite d'impulsion de diracs correspondantes 228 dirac =[1,zeros(1,npts-1)]; 229 diracqpsk=kron(qpsk_pad.',dirac); 230 231 % mise en forme avec un filtre cos surrelev 232 meform= filter(filtre,1,diracqpsk); 233 234 %diagramme de l'oeil en sortie du filtre de mise en forme

15/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

235 % figure; 236 % plot(real(reshape(meform,npts*2,length(meform)/(npts*2)))) 237 % title('Diagramme de l''oeil apres filtre de mise en forme'); 238 % xlabel('roll off= 0,35'); 239 240 241 %%%% /EMETTEUR %%%% 242 243 %%%% CANAL %%%% 244 245 % Ajout du bruit 246 bruit = sqrt(No/2) * ((randn(1, length(meform))) + i*(randn(1, length(meform)))); 247 % canal= (meform + bruit) * exp(i*phase) ; 248 canal= (meform )*exp(i*phase_canal) + bruit ; 249 250 %%%% /CANAL %%%% 251 252 %%%% RECEPTEUR %%%% 253 254 %diagramme de l'oeil en entre du filtre adapt 255 % figure; 256 % plot(real(reshape(canal ,npts*2,length(canal )/(npts*2)))) 257 % title('Diagramme de l''oeil avant filtrage adapt'); 258 259 %filtre adapt en rception 260 filtradap = filtre;%fliplr(filtre); 261 hadap=filter(filtradap./norm(filtradap),1,canal); 262 263 264 %diagramme de l'oeil en sortie du filtre adapt 265 % figure; 266 % plot(real(reshape(hadap,npts*2,length(hadap)/(npts*2)))) 267 % title('Diagramme de l''oeil apres filtrage adapt'); 268 269 270 %chantillonage 271 hadap1=hadap(1:Ts:end); 272 dece=hadap1(2*retard+1:1:end); 273 274 % PLL 275 276 % Dans le cas du premier passage on passe la boucle ouverte afin 277 % d'obtenir la s-curve et de calculer la pente 278 if (first_pass==1) 279 pente=PLL_QPSK_BO_NDA([-90:90],EbNo_dB); 280 first_passe= 2; 281 end 282 283 % sinon on passe directement dans la PLL pour estimer la phase 284 phase_esti=Pll_qpsk_NDA_EbNo(-3,2,dece,length(dece)); 285 286 % On corrige le signal avec la phase estime 287 dece= dece*exp(-i*phase_esti); 288 289 290 %%% pour comparaison TEB : hard decoding %%% 291 % dmodulation qpsk 292 deqpsk=pskdemod(dece.',M,phase,'gray');

16/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

293 294 % passage en binaire 295 demodbi=de2bi(deqpsk.'); 296 297 dbits=reshape(demodbi.',size(demodbi,1)*size(demodbi,2),1); 298 299 %%% /pour comparaison TEB %%% 300 301 % recomposition 302 pre_decodeds= zeros(length(dece)*2,1); 303 pre_decodeds(1:2:end)=real(dece); 304 pre_decodeds(2:2:end)=imag(dece); 305 306 307 308 % dpoinconnage 309 entree_dec= zeros(length(pre_decodeds)*4/3,1); 310 entree_dec(1:4:end)=pre_decodeds(1:3:end); 311 entree_dec(2:4:end)=pre_decodeds(2:3:end); 312 entree_dec(3:4:end)=zeros(1,length(entree_dec)/4); 313 entree_dec(4:4:end)=pre_decodeds(3:3:end); 314 315 316 % decodage viterbi 317 decodeds = vitdec(entree_dec,trellis,15,'trunc','unquant'); %soft decision 318 319 % desentrelaceur 320 bits_desen=matdeintrlv(decodeds,Nrows,Ncols); 321 322 % decodage Reed Solomon 323 bits_decode=decodeur_RS(bits_desen,Ms,t); 324 325 326 % EbNo_dB(m) 327 328 329 nb_erreur3= nb_erreur3+ (length(bits)-sum(bits_decode.'==bits)) 330 total3= total3 + length(bits); 331 332 nb_erreur2= nb_erreur2+ (length(decodeds)sum(bits_entrelaces.'==decodeds)); 333 total2= total2 + length(decodeds); 334 335 nb_erreur1= nb_erreur1+ (length(dbits)-sum(bits_poinconnes.'== dbits)); 336 total1= total1 + length(dbits); 337 338 nb_blocs_max= nb_blocs_max + 1; 339 340 BLOCK_RESTANTS= NB_BLOCKS - nb_blocs_max 341 342 % TEB_chaine_non_codee(m) = 1sum(bits_decode.'==bits)/length(bits); 343 % TEB2(m) = 1sum(bits_entrelaces.'==decodeds)/length(decodeds); 344 % TEB1(m) = 1- sum(bits_poinconnes.'== dbits)/length(dbits); 345 346

17/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

347 else 348 nb_blocs_max= NB_BLOCKS+1; 349 350 end 351 352end 353 354TEB_chaine_totale= nb_erreur3/ total3; 355TEB_chaine_sans_RS= nb_erreur2/ total2; 356TEB_chaine_non_codee= nb_erreur1/ total1; 357function pente=PLL_QPSK_BO_NDA(d_phi_deg,EbNodB) 358 359% ################################################################ 360% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 361% |Boucle ouverte pour une PLL en NDA| 362% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 363% 364% ### 365% Objectif: Obtenir la S-curve et ainsi sauvegarder le coefficient 366% de pente pour un Eb/No ie une sorte d'talonnage 367% 368% ### 369% Entre: l'amplitude en degr de la phase, le Eb/No en dB 370% 371% ### 372% Sortie: la pente 373% 374% ################################################################ 375 376EbNo=10.^(EbNodB/10); 377 378N_symb=1000; 379 380for jj=1:length(d_phi_deg) % boucle sur erreur de phase 381 382 for ii=1:N_symb % boucle sur symboles 383 384 bits=2*randint(1,2)-1; 385 IE=bits(1); 386 QE=bits(2); 387 388 symb_emis=IE+j*QE; 389 390 Es=sum(abs(symb_emis).^2); 391 392 % 393 %bruit 394 % 395 sigma=sqrt(Es/EbNo/4); 396 397 noise=randn(2,1)*sigma; 398 399 %rajouter l'erreur de phase+ le bruit 400 recu= symb_emis*exp(-j*pi*d_phi_deg(jj)/180) + noise(1) +j*noise(2); % a completer 401 402 % 403 % detecteur

18/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

404 % 405 out_det(ii)=imag(recu^4); 406 407 end 408 409 S_curve(jj)=mean(out_det); 410 411end 412 413% on calcule la pente de la caracteristique (S-Curve) autour de 0 (entre -3 et 3 degres) : 414pente=S_curve((length(S_curve)+1)/2+3)-S_curve((length(S_curve)+1)/2-3); 415pente=pente/(6*(d_phi_deg(2)-d_phi_deg(1))*pi/180); 416 417save pente_NDA_QPSK pente 418 419function phase_estimee=Pll_qpsk_NDA_EbNo(BlT_dB,ordre,recu,N_symb) 420 421% ################################################################ 422% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 423% |Boucle ferme pour une PLL en NDA| 424% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 425% 426% ### 427% Objectif: estimer l'erreur de phase du signal 428% 429% ### 430% Entre: le B1T_dB (sorte de coeff d'amortissement), ordre du filtre 431% le signal traiter recu, N_symb le nombre de symbole, et la pente 432% en BO obtenu par PLL_QPSK_BO_NDA.m 433% 434% ### 435% Sortie: la phase estime 436% 437% ################################################################ 438load pente_NDA_QPSK 439 440%BlT_dB (ex: -3 pour 0.1%) 441BlTT=10.^(BlT_dB); 442 443if ordre==2 444 zeta=sqrt(2)/2; 445 wnT=2*BlTT./(zeta+1/(4*zeta)); 446 A=wnT.*(2+wnT)./(1+3*wnT+wnT.^2); 447 B=wnT.^2./(1+3*wnT+wnT.^2); 448 449elseif ordre==1 450 B=0*BlTT; 451 A=4*BlTT; 452else 453 display ('order1 assumed'); 454 B=0*BlTT; 455 A=4*BlTT; 456end 457 458 459 460

19/20

Julien Manteau, Michal Crosnier

Simulation d'une chane de transmission DVB-S

461 462NCO_mem=0; 463filtre_mem=0; 464phi_est(1)=0; 465 466for ii=1:N_symb 467 468 % PLL 469 out_det(ii)=-imag( (recu(ii)*exp(-i*phi_est(ii)))^4)/pente; 470 471 % filtre de boucle 472 w(ii)=filtre_mem+out_det(ii); 473 filtre_mem=w(ii); 474 out_filtre=A*out_det(ii)+B*w(ii); 475 476 %NCO 477 phi_est(ii+1)=out_filtre+ NCO_mem; 478 NCO_mem=phi_est(ii+1); 479 480end 481 482% moyenne sur 1/10 du signal la fin pour etre sur d'etre accroch. 483error=phi_est((end-floor( N_symb/10 )):length(phi_est)); 484phase_estimee=mean(error); 485 486 487% figure; 488% plot(phi_est,'g') 489% grid on 490% title('Phase estime')

20/20

S-ar putea să vă placă și