You are on page 1of 14

Universit e de Li` ege Facult e des Sciences Appliqu ees

Th eorie de linformation et du codage

Notes relatives aux travaux pratiques

Ann ee acad emique 2006-2007

Table des mati` eres


1 Introduction 1.1 Outils mis a ` disposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Algorithme de Viterbi 3 Turbo-codes 4 Correction derreurs en rafale 5 Description du mod` ele turbo wgn 6 Description du mod` ele bch interleaver markov 7 D enir un encodeur convolutionnel dans Matlab 8 Pilotage de Simulink par script 2 2 2 3 5 7 8 10 12 13

Introduction

Ces notes reprennent lensemble des informations n ecessaires aux travaux pratiques sur ordinateur du cours de th eorie de linformation et du codage. Pour lann ee acad emique 2006-2007, le travail porte essentiellement sur l etude du codage de canal et fait appel a ` Matlab. Le but de ces travaux pratiques est de permettre aux etudiants de manipuler de fa con concr` ete les notions th eoriques introduites dans ce cours gr ace a ` di erentes exp eriences.

1.1

Outils mis ` a disposition

Deux mod` eles illustrant des techniques de codage de canal sont propos es pour la r ealisation de ce travail. Il sagit de chiers de type .mdl, qui souvrent dans Matlab. Les chiers .mdl sont des chiers Simulink. Simulink est un composant de Matlab qui permet de notamment de construire et simuler des syst` emes sous forme de blocs-diagrammes. Pour faire fonctionner les mod` eles, il est n ecessaire de disposer des composants Matlab suivants : Communications toolbox, Simulink, Communications Blockset, Signal Processing Blockset.

1.2

Organisation

Le travail doit etre r ealis e par groupe de deux etudiants. Une fois constitu e, le groupe enverra un e-mail a ` ladresse bdf@monteore.ulg.ac.be signalant les noms des etudiants constituant ce groupe, ainsi quune adresse e-mail. Les mod` eles Simulink (qui fonctionnent sous Matlab) n ecessaires a ` la r ealisation du travail seront envoy es a ` cette adresse. On demande aux etudiants de remettre un rapport ecrit d ecrivant, discutant et justiant de fa con susamment d etaill ee les r esultats obtenus par exp erimentation. Le but est de montrer quon a bien compris les notions du cours sur lesquelles porte le travail. Les changements apport es aux chiers Simulink, tels que la modication des param` etres des blocs, doivent etre clairement d etaill es, de fa con a ` pouvoir reconstituer les simulations a ` partir des chiers initialement transmis. Le rapport du groupe doit etre remis par e-mail a ` bdf@monteore.ulg.ac.be et une copie papier du rapport doit etre remise a ` la date limite. La date limite de remise des travaux est x ee au jour de lexamen oral.

Algorithme de Viterbi

Soit (Xt , Yt ) (t = 1, 2, . . .) une cha ne de Markov cach ee dordre 1, invariante dans le temps, a ` deux etats 1 et 2, et deux symboles observables 1 et 2. Cette cha ne admet la matrice de transition = 0.1 0.9 0.3 0.7 ,

dont l el ement ij donne la probabilit e P (Xt+1 = j |Xt = i). Les probabilit es de l etat initial sont donn ees par = [0.4 0.6]; l el ement i de vaut la probabilit e P (X1 = i). A chaque instant t, un symbole Yt est emis. Il y a deux symboles possibles, 1 et 2. Les probabilit es d emission des symboles d epend de l etat de la cha ne a ` linstant t consid er e. Plus pr ecis ement, on donne la matrice dobservation 0.8 0.2 = , 0.45 0.55 dont l el ement ij donne la probabilit e P (Yt = j |Xt = i). On demande 1. 2. De dessiner le r eseau bay esien qui repr esente les relations entre les variables impliqu ees aux 3 premiers instants, cest-` a-dire X1 , Y1 , X2 , Y2 , X3 , Y3 . D ecrire une fonction Matlab function [xx,yy] = simMC(T,pi init,trans,sigm) capable de g en erer une suite d etats Xt et dobservations Yt de la cha ne, de linstant 1 a ` linstant T . La fonction prendra en argument T le nombre de pas de temps a ` simuler, pi init le vecteur , trans et sigm les matrices de transition et dobservation. La fonction renverra un vecteur colonne xx peupl e de 1 et de 2 pour les etats, et un vecteur colonne yy peupl e de 1 et de 2 pour les symboles emis. Suggestion : comment g en erer les symboles 1 et 2 avec une probabilit e p 1 , p2 a ` partir des r ealisations dune variable al eatoire a ` distribution uniforme dans lintervalle [0,1] ? La fonction rand eectue des tirages (pseudo) al eatoires uniform ement dans lintervalle [0,1] (aide avec help rand). 3. D ecrire un script qui lance la g en eration de N suites d etats Xt et dobservations Yt de longueur et de la distribution de probabilit T pour construire les estimations , e de l etat initial, des matrices de transition et dobservation, a ` partir des fr equences dapparition des etats (quon suppose ici et ici seulement observ es) et des symboles emis. Ce script devrait permettre de v erier le bon comportement de la fonction simMC en comparant les estimations au vecteur et aux matrices et . Assurez-vous que cest-ce bien le cas (en choisissant des valeurs N, T susamment elev ees). V eriez que les fr equences sont correctement calcul ees en choisissant des valeurs N, T tr` es faibles an de pouvoir recompter les transitions et les observations par examen visuel de xx et yy. Dimpl ementer lalgorithme de Viterbi (d ecrit au chapitre 5 du cours th eorique) pour lestimation des etats a ` partir des obervations. Autrement dit, ecrire une fonction 3

4.

function ee = viterbiMC(yy,pi init,trans,sigm) qui renvoie lestimation ee des etats X1 , . . . , XT selon les observations Y1 , . . . , YT report ees dans yy, connaissant la distribution initiale des etats et les matrices de transition et dobservation de la cha ne de Markov cach ee. 5. De tester les performances de votre impl ementation de lalgorithme de Viterbi dans les conditions lexercice. On propose le protocole suivant : i. Initialiser le g en erateur de nombres al eatoires : rand(state,0); ii. G en erer une suite d etats xx et dobservations yy de longueur T = 10 a ` laide de simMC. iii. G en erer lestimation des etats ee a ` laide de viterbiMC. iv. Estimer le taux derreur en comptant le nombre de fois quun etat estim e ne correspond pas a ` l etat r eel de la cha ne, et en divisant ce nombre par T . v. Estimer le taux derreur moyen en r ep etant plusieurs fois les etapes 2 a ` 4 pour di erentes suites g en er ees, an de moyenner les taux obtenus en 4. Comparez le taux derreur moyen obtenu au taux derreur moyen que vous obtiendriez en utilisant a ` la place de viterbiMC la fonction na ve naiveMC sur la m eme suite dobservation etats : yy, pour obtenir une estimation na ve ee naive des function ee naive = naiveMC(yy) ee naive = yy ; 6. De reproduire le protocole du point pr ec edent pour di erentes longueurs Tk de s equences. Portez le taux derreur moyen relatif a ` viterbiMC et celui relatif a ` naiveMC sur un m eme graphique, en fonction des longueurs Tk (allez au moins jusqu` a T = 1000). Constatez-vous une d egradation des performances de viterbiMC avec la longueur des s equences ? Est-ce que les performances de naiveMC se mettent a ` d epasser celles de viterbiMC ? Si les performances de naiveMC se d egradent avec T , cest anormal ! Proposez alors une modication de votre fonction viterbiMC rem edier au probl` eme. Testez votre nouvelle version selon le protocole du point pr ec edent. Suggestion : votre impl ementation se comporte-t-elle bien num eriquement ? Si les performances de votre fonction viterbiMC ne se d egradent pas avec T , cette question est sans objet. De justier de fa con th eorique le taux derreur moyen de naiveMC obtenu pour des longueurs de s equences susamment longues (disons T=2000). Suggestion : pour quelles raisons lhypoth` ese des s equences longues va-t-elle simplier le calcul th eorique du taux derreur moyen ? Finalement, apr` es avoir men e vos exp eriences, que pensez-vous de lalgorithme de Viterbi appliqu ea ` une cha ne de Markov cach ee dordre 1 ? Synth etisez vos r eexions en abordant, par exemple, la question de la sensibilit e a ` la bonne estimation des param` etres (, , ), les performances auxquelles vous vous attendriez pour une cha ne de Markov dordre sup erieur a ` 1, etc. Alternativement, vous pourriez aussi tester dautres param` etres (, , ) de la cha ne, observer leet sur l ecart de performance entre viterbiMC et naiveMC, et justier les r esultats obtenus. Le but est de montrer que vous cherchez a ` comprendre ce que vous observez sur vos simulations.

7.

8.

9.

Turbo-codes

Pour cette question vous disposez dun mod` ele Simulink (chier turbo wgn.mdl). Gr ace a ` lui, vous pouvez simuler le comportement dun syst` eme source/encodeur/canal bruit e/d ecodeur reposant sur les turbo-codes, et obtenir les performances du syst` eme en terme de taux derreur par bit source suivant di erents param` etres. Le mod` ele se pr esente sous la forme dun bloc-diagramme a ` ouvrir dans Matlab. Un double-clic sur un bloc permet de d eterminer les eventuels param` etres du bloc. La s election dun bloc, suivie du choix de larticle Look under mask dans le menu Edit de la fen etre du mod` ele, permet douvrir une nouvelle fen etre avec le contenu du bloc. Lisez la description du mod` ele en section 5 et la fa con dont un encodeur convolutionnel est sp eci e dans Matlab en section 7. Comprenez bien les gures 1 et 2 de la section 5 qui montrent comment le mod` ele est construit. Consultez eventuellement la section 8 pour apprendre comment modier les param` etres et lancer des simulations sans passer par linterface graphique de Simulink. Pour cette question, on utilisera lencodeur convolutionnel r ecursif t2 = poly2trellis(3,[7 5],[7])
1 First Output

1 Input

-1 Z

-1 Z

2 Second Output

qui est d ej` a sp eci e dans turbo wgn.mdl en param` etre. On demande : 10. De g en erer une table (dite table du code) qui donne, pour chaque message de 4 bits, le code correspondant. Le code peut etre obtenu au moyen de la fonction convenc de Matlab, dont les arguments sont le message et lencodeur convolutionnel a ` utiliser. Par exemple, pour g en erer le code c relatif a ` 0000, il faut entrer dans la fen etre de commande c = convenc([0 0 0 0],t2) apr` es avoir d eni t2 au moyen de t2 = poly2trellis(3,[7 5],[7]) ; Pr esentez cette table de code et v eriez en examinant la table que le code est syst ematique (dans le sens suivant : on peut retrouver les bits du message sur certains bits bien d etermin es du mot de code). 11. De calculer la r eponse impulsionnelle de lencodeur gr ace a ` la fonction convenc (faire un graphique en b atonnets). Comparer le sch ema de t2 au sch ema de la gure 15.11 du cours th eorique. Comparer la r eponse impulsionnelle de t2 a ` lexpression de la section 15.11.1.1 du cours th eorique : h(D) = 1 + D + D2 + D3 = (1 + D + D2 + D3 )(1 + D3 + D6 + D9 + . . . + D3k + . . .). 1 + D3 5

12.

De d eduire du sch ema de la gure 2 (voir section 5) la puissance du signal envoy e sur le canal (AWGN Channel). Sur la gure 2, on voit que le bloc Unipolar to Bipolar Converter convertit les bits 0 et 1 en r eels -1 et +1, au moment de la transmission sur le canal. De donner le mode dutilisation du canal, et de dire en quoi cela inue sur la capacit e de celui-ci. Fixer le param` etre noiseVar, la variance du bruit du canal, a ` 1. Si le canal quon notera C etait remplac e par un mod` ele de canal sym etrique binaire C (section 9.1.3.4 du cours th eorique), quelle serait la probabilit e derreur p de la matrice de transition du canal C ? Notez bien que dans le cours th eorique, cette matrice doit se lire 1p p p 1p

13.

pour etre coh erente avec la gure correspondante du cours ; p est bien la probabilit e que la sortie du canal soit 1 (resp. 0) lorsque lentr ee est 0 (resp.1). Evaluer la capacit e du canal C . Evaluer revient ici a ` donner des bornes inf erieures et sup erieures sur la capacit e, a ` partir des capacit es des deux autres modes dutilisation du canal. Comparer au d ebit du turbo-code. 14. De relever les taux derreur par bit obtenus pour des messages de longueur N=4, 128 ou 1024 bits. Consid erer 1, 3, 9, 13 ou 19 it erations. Il y a donc en tout 15 taux a ` relever. Pr esenter les r esultats graphiquement. Commenter les r esultats obtenus.

Correction derreurs en rafale

Pour cette question, vous disposez dun mod` ele Simulink (chier bch interleaver markov.mdl). Le mod` ele bch interleaver markov illustre les id ees des sections 15.5.4.9 et 15.5.4.10 du cours th eorique. On cherche un codage de canal qui d etecte et corrige des erreurs en rafale, i.e. des erreurs sur plusieurs bits cons ecutifs du message qui transite par le canal. Pour mod eliser un canal introduisant des erreurs en rafale, on utilise une cha ne de Markov de m emoire 1 dont l etat a ` linstant t est not e Nt et prend sa valeur dans {0, 1}. Si on note Xt , et Yt respectivement lentr ee 0/1 et la sortie 0/1 du canal a ` linstant t, on a la relation Yt = (Xt + Nt ) mod 2 pour mod eliser le comportement du canal bruit e. Le fait dutiliser une cha ne de Markov de m emoire 1 seulement nest pas une tr` es bonne id ee pour bien repr esenter des erreurs en rafale, mais permet n eanmoins de d ej` a mettre en evidence certaines caract eristiques de ce type de bruit. Lisez la description du mod` ele et de ses param` etres en section 6 et comprenez bien les gures correspondantes. Consid erez un canal (binaire) dont la matrice de transition du bruit additif binaire (cf section 6) est 0.95 0.05 . = 0.50 0.50 Ainsi, si le bruit g en er e selon ce mod` ele est la s equence [0 0 0 1 1 1 0 1 1 1 0 1], et que lentr ee du canal est le signal [1 1 1 1 1 1 0 0 0 0 0 0], on obtiendra le signal [1 1 1 0 0 0 0 1 1 1 0 1] a ` la sortie du canal. On demande : 15. 16. De calculer la distribution stationnaire 0 de la matrice de transition du bruit . De calculer la capacit e du canal. La capacit e du canal avec m emoire (nie) est d enie par C = lim max n
n P (X

I (X n ; Y n ) . ) n

17.

D ecrire un script capable, a ` partir du signal channelnoise obtenu a ` lissue dune simulation du mod` ele bch interleaver markov, de compter le nombre derreurs de longueur 1,2,... introduites par le canal. Le script commencera par channelnoise = reshape(channelnoise, 1, numel(channelnoise)); car le signal channelnoise arrive sous forme de matrice. Le script doit renvoyer un vecteur dont le i` eme el ement est le nombre derreurs de longueur i. Par exemple, la s equence [0 0 0 1 1 1 0 1 1 1 0 1] correspond a ` lintroduction de deux erreurs de longueur 3, et dune erreur de longueur 1 ; le script renverra donc [1 0 2].

18.

De comparer la distribution des erreurs de longueur 1,2,... du canal, dont la matrice de transition du bruit est , et initialis e selon sa distribution stationnaire 0 = [1 p, p], a ` la distribution des erreurs de longueur 1,2,... dun signal de bruit g en er e par un canal sym etrique binaire (de probabilit e derreur p). Dexp erimenter di erentes valeurs du nombre de blocs nB et de codes (N,K) obtenus en modiant K. R egler le param` etre p ini pour initialiser le bruit du canal selon sa distribution stationnaire. Il nest pas n ecessaire de prendre des valeurs de K telles que N devient trop grand (disons au-del` a de N=127). De commenter les r esultats de simulation obtenus.

19.

20.

Fig. 1 Le mod` ele turbo wgn calcule le taux derreur par bit source dun syst` eme reposant sur les turbo-codes.
U U(E) err_count Turbo code received_bits Turbo Code received_bits Bit Error Rate Calculation Bit Error rate; Bit Error count; Total received bits. err_count 0 BER

Description du mod` ele turbo wgn

ecodeur de turbo-code de la section 15.11 Le mod` ele turbo wgn permet de tester lencodeur et le d du cours th eorique. Des messages de N bits (tous equiprobables) emis par une source sont cod es puis transitent par un canal a ` bruit blanc gaussien additif. Le d ecodage a ensuite lieu en sortie du canal. Un taux derreur est calcul e en comparant les symboles emis par la source aux sorties obtenues a ` lissue du processus de d ecodage. Il existe di erents param` etres pour xer le type de source, de canal, et dencodeur et de d ecodage. On peut les modier en double-cliquant sur le bloc Turbo Code repr esent e gure 1. Les param` etres sont les suivants. i. N xe le nombre de bits qui composent le message destin ea ` etre encod e. ii. noiseVar xe la variance du bruit blanc gaussien du canal par lequel le message encod e transite. iii. t est la structure qui d enit lencodeur convolutionnel r ecursif du turbo-code, typiquement obtenue via la fonction Matlab poly2trellis (voir section 7). iv. r0 est un entier positif qui xe l etat initial commun de lentrelaceur et du d esentrelaceur. v. numIter donne le nombre dit erations a ` eectuer lors du d ecodage. Le contenu du bloc Turbo Code peut etre ach e. Il faut s electionner ce bloc, puis choisir Look Under Mask dans le menu Edit. Une fen etre souvre, contenant les blocs repris a ` la gure 2. Tous les entrelaceurs et d esentrelaceurs utilisent r0 comme etat initial. Tous les encodeurs et d ecodeurs utilisent t comme treillis dencodeur convolutionnel. Le bloc Bit Error Rate Calculation permet dacher le taux derreur du syst` eme (BER : Bit Error Rate), obtenu en divisant le nombre de bits erron es obtenus en sortie du syst` eme (Bit Error count) par le nombre total de bits obtenus en sortie du syst` eme (Total received bits). En doublecliquant sur ce bloc, on peut r egler les param` etres suivants, qui d eterminent en fait deux crit` eres darr et possibles (` a utiliser seuls ou combin es) pour la simulation. i. maxNumErrs : nombre derreurs d etect ees au-del` a duquel la simulation sarr ete. ii. maxNumBits : nombre de bits envoy es au-del` a duquel la simulation sarr ete. Pour ne pas tenir compte dun de ces crit` eres darr et, on xe la valeur correspondante a ` Inf. Pour que la source g en` ere sur une simulation un nombre M de messages de longueur N envoy es, on donne a ` maxNumBits la valeur MN.

             
[msg]

[msg]

[msg]

Convolutional Encoder Convolutional Encoder

s s-p1 s'-p2 Multiplexer s-p1-p2

Unipolar to Bipolar Converter {0,1} -> {-1,1}

[coded_msg]

[msg]

Random Interleaver

[msg] Zero-Order Hold [coded_msg] AWGN [noised_coded_msg] [L12] L to 0/1

Tx

err_count

1 err_count

Rx received_bits

2 received_bits

AWGN Channel

Error Count on last iterations Delay z -2048

[noised_coded_msg] L(u) s Demux p1 p2


s p1

L(u) APP Decoder L(c) APP Decoder 1 Random Interleaver

[L12]

s-p1

L(c) Zero-Order Hold

Mux

Random Deinterleaver

Random Interleaver

s' s'-p2 p2

L(u) APP Decoder L(c) Zero-Order Hold APP Decoder 2

L(u) L(c) Terminator

Mux

Fig. 2 Le bloc Turbo Code contient lencodeur (haut), le canal (milieu gauche), le d ecodeur (bas), et le comparateur entre messages transmis et re cus (milieu droit). Les ` eches [msg], [L12],... permettent de propager les signaux correspondants. Les blocs Zero-Order Hold bloquent l emission dun nouveau message tant que le nombre dit erations prescrit nest pas r ealis e au niveau du d ecodeur.

Fig. 3 Le mod` ele bch interleaver markov calcule des taux derreur par bit. Le canal introduit des erreurs en rafale. Le nombre total de bits alt er es par le canal au cours de la simulation est ach e par Altered bits counter.
Altered bits counter
cum_err B

0 [B] [B]

BCH code with interleaver Note : The bit error rate is saved as BER.

Bit Error rate; Bit Error count; Total received bits.

Description du mod` ele bch interleaver markov

evidence lint er et dune Le mod` ele bch interleaver markov (gure 3) permet de mettre en strat egie dentrelacement lors de lencodage an de lutter contre des erreurs en rafale. Cette strat egie est d ecrite en commentaire de la gure 4. Pour mod eliser un canal introduisant des erreurs en rafale, on utilise une cha ne de Markov de m emoire 1, a ` deux etats 0/1. La probabilit e dintroduire une erreur sur le symbole i sera plus grande si une erreur a et e introduite sur le symbole i 1. Du point de vue du canal, introduire une erreur sur un bit revient a ` lui ajouter un 1 ; ceci se traduira par le fait que la cha ne de Markov se trouve dans l etat 1. La matrice de transition de la cha ne de Markov, que lon appelera matrice de transition du bruit du canal, s ecrira p0 1 p 0 = p1 1 p 1 avec p0 la probabilit e d emettre un 0 (pas derreur) sachant que l emission pr ec edente etait 0 (pas derreur), et p1 la probabilit e d emettre un 0 (pas derreur) sachant que l emission pr ec edente etait 1 (erreur). Les param` etres du mod` ele sont modi es en double-cliquant sur le bloc BCH code with interleaver (gure 3) : i. nB est le nombre de fragments (ou blocs) en lequel le message est d ecoup e (nB correspond a `j dans le cours). ii. K est la longueur en bits de chaque fragment. Le message a donc une longueur totale de nBK bits. iii. p ini donne la probabilit e initiale pour le canal d emettre un premier symbole 0 (pas derreur). iv. p0 donne la probabilit e p0 de la matrice de transition . v. p1 donne la probabilit e p1 de la matrice de transition . vi. seed xe l etat initial du g en erateur al eatoire du canal. vii. maxNumBits xe le nombre de bits que la source doit g en erer avant que la simulation ne stoppe. A lissue de la simulation, le mod` ele exporte le signal de bruit g en er e par le canal dans la variable channelnoise.

10

             

reshape(U,M,N) block inputs by columns Zero-Order Hold

[msg]

U U(R,C) C
1

BCH en BCH Encoder Buffer Channel out Markov cum_err

Matrix Interleaver Interleaver

[coded_msg]

Selector idx Block index

[noised_coded_msg] 1 cum_err

[coded_msg]

in

[noised_coded_msg]

Matrix Deinterleaver Deinterleaver U U(R,C) C1 Selector

reshape(U,M,N) block inputs by columns BCH de BCH Decoder Buffer Zero-Order Hold [msg] Tx Error Rate Calculation Rx Error Rate Calculation

2 B

idx

Block index

Fig. 4 Le bloc BCH code with interleaver contient lencodeur (haut), lajout dun bruit binaire a ` m emoire, (milieu), le d ecodeur (bas). Les blocs Reshape d ecomposent le long message initial en fragments plus courts, qui sont successivement trait es par un m eme encodeur BCH. Le bloc idx est un compteur qui indique le num ero du fragment en cours de traitement. Les fragments cod es saccumulent dans un buer. Lorsque le dernier fragment a et e encod e, le bloc Interleaver prend le premier bit de chaque fragment (dans lordre), puis le deuxi` eme (toujours dans lordre des fragments), et ainsi de suite jusquau dernier. Les blocs Zero-Order Hold bloquent la g en eration dun nouveau message tant que tous les fragments nont pas et e trait es. En pratique, le codage des fragments sex ecuterait en parall` ele ; le traitement s equentiel permet de changer facilement le nombre de fragments sans alt erer la structure du mod` ele Simulink.

11

Le contenu du bloc BCH code with interleaver est comment ea ` la gure 4. Il peut etre ach e en s electionnant le bloc et en choisissant Look Under Mask dans le menu Edit. Pour une longueur de mot K, on sait que les possibilit es de longueurs N pour le mot cod e sont en nombre limit e. Par exemple, si K=7, il nexiste de code BCH que pour N=15 et N=63. Si K=12 il nexiste aucun N (donc pas de possibilit e de codage BCH). De plus, a ` un code (N,K) est associ e une capacit e de d etection derreur en rafale, et une capacit e de correction derreur en rafale. Lorsque lutilisateur modie le param` etre N, le bloc BCH code with interleaver appelle une fonction checkKN (fournie). Le bloc peut ainsi acher une longueur N et une capacit e de correction derreur errCorrCap. A noter que [N,errCorrCap] = checkKN(K) ne fait que parcourir une liste 1 de triplets (N, K ,errCorrCap), et s electionne le triplet tel que N est le plus elev e mais inf erieur ou egal a ` 127 (pour limiter la complexit e du code), sil y a deux N pour un K donn e. Remarque. Si vous pilotez Simulink par script (section 8, non n ecessaire a ` la r ealisation du travail), et que vous modiez K, vous devrez vous-m eme modier la valeur de N (directement sp eci ee ou obtenue en appelant checkKN).

D enir un encodeur convolutionnel dans Matlab


Laide de Matlab d etaille la proc edure a ` suivre pour d enir la structure dun encodeur tel que
1 First Output

1 Input

-1 Z

-1 Z

-1 Z

-1 Z

-1 Z

-1 Z

2 Second Output

au moyen dun appel a ` la fonction poly2trellis : t6 = poly2trellis(6+1,[171 133]). Le lecteur int eress e peut se reporter a ` la section Communication Toolbox/Error-Control Coding/Polynomial Description of a Convolutional Encoderainsi qu` a la section Communication Blockset/Getting started/Building Models/Building a Convolutional Code Model/Blocks in the Models de laide Matlab. Pour la r ealisation de ce travail, les sch emas des encodeurs ainsi que les commandes poly2trellis correspondantes sont donn es. Si vous d esirez tester dautres sch emas, vous pouvez lire les sections daide signal ees.

1 Nh esitez

pas a ` parcourir par vous-m eme cette liste en ouvrant checkKN.m.

12

Pilotage de Simulink par script

Pour lancer une simulation, le plus simple est de r egler les param` etres des blocs, puis de cliquer sur le bouton Play ( ) situ e dans la barre doutils de la fen etre du mod` ele Simulink. A lissue dune simulation, le taux derreur est plac e dans une variable BER accessible dans le workspace de Matlab. Mais il devient vite laborieux de modier les param` etres des simulations au travers de linterface graphique de Simulink lorsque plusieurs simulations successives doivent etre lanc ees. Pour ceux qui voudraient piloter les mod` eles Simulink au moyen dun script Matlab, voici quelques recettes utiles. Important : le pilotage par script nest pas indispensable a ` la r ealisation du travail. Pour ouvrir un mod` ele Simulink : i. En supposant que le chier Simulink est mysyst.mdl, ex ecuter open mysyst. Pour modier un param` etre : i. Ouvrir le mod` ele Simulink. ii. Cliquer sur le bloc dont on veut modier un param` etre. iii. Dans la fen etre de commande, ex ecuter block name = gcb qui a pour eet dattribuer a ` la variable block name le chemin dacc` es du dernier bloc cliqu e. Prendre note de la cha ne de caract` ere block name pour usage ult erieur. Dans la suite, on suppose quelle vaut mysyst/myblock. iv. A supposer que lon veuille attribuer au param` etre N du bloc la valeur 16, ex ecuter set param(block name, N, num2str(16)). Pour lancer une simulation : i. Ex ecuter sim(mysyst). Dans le script Matlab, open mysyst set param(mysyst/myblock, N, num2str(16)) sim(mysyst) est la s equence compl` ete. A toute n utile, signalons aussi que old N = get param(mysyst/myblock, N) ; permet de sauver dans old N la valeur de N.

Bon travail.

13

You might also like