Exercices sur les codes cycliques



Documents pareils
Introduction à l étude des Corps Finis

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Représentation des Nombres

Théorie et codage de l information


Pour l épreuve d algèbre, les calculatrices sont interdites.

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

DOCM Solutions officielles = n 2 10.

Chapitre 1 : Évolution COURS

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Exercices Corrigés Premières notions sur les espaces vectoriels

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Probabilités sur un univers fini

I. Ensemble de définition d'une fonction

Continuité en un point

avec des nombres entiers

Probabilités sur un univers fini

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

3 Approximation de solutions d équations

Les indices à surplus constant

V- Manipulations de nombres en binaire

Conversion d un entier. Méthode par soustraction

Extrait du poly de Stage de Grésillon 1, août 2010

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Intégration et probabilités TD1 Espaces mesurés Corrigé

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

IV- Equations, inéquations dans R, Systèmes d équations

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

1 Complément sur la projection du nuage des individus

ÉPREUVE COMMUNE DE TIPE Partie D

I. Polynômes de Tchebychev

Nombres premiers. Comment reconnaître un nombre premier? Mais...

Résolution de systèmes linéaires par des méthodes directes

Polynômes à plusieurs variables. Résultant

Cours d Analyse. Fonctions de plusieurs variables

1 Définition et premières propriétés des congruences

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

TOUT CE QU IL FAUT SAVOIR POUR LE BREVET

Groupe symétrique. Chapitre II. 1 Définitions et généralités

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

DÉRIVÉES. I Nombre dérivé - Tangente. Exercice 01 (voir réponses et correction) ( voir animation )

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Cours 02 : Problème général de la programmation linéaire

Présentation du cours de mathématiques de D.A.E.U. B, remise à niveau

108y= 1 où x et y sont des entiers

VIII- Circuits séquentiels. Mémoires

Le produit semi-direct

III- Raisonnement par récurrence

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Angles orientés et trigonométrie

Etude de fonctions: procédure et exemple

CCP PSI Mathématiques 1 : un corrigé

Représentation d un entier en base b

NOMBRES COMPLEXES. Exercice 1 :

Programmation linéaire

Transmission d informations sur le réseau électrique

* très facile ** facile *** difficulté moyenne **** difficile ***** très difficile I : Incontournable T : pour travailler et mémoriser le cours

Fonctions de plusieurs variables

Complément d information concernant la fiche de concordance

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Licence Sciences et Technologies Examen janvier 2010

Date : Tangram en carré page

Problèmes de Mathématiques Filtres et ultrafiltres

Exercices de dénombrement

Chapitre VI - Méthodes de factorisation

Un K-espace vectoriel est un ensemble non vide E muni : d une loi de composition interne, c est-à-dire d une application de E E dans E : E E E

Théorème du point fixe - Théorème de l inversion locale

Calcul fonctionnel holomorphe dans les algèbres de Banach

Université Paris-Dauphine DUMI2E 1ère année, Applications

Structures algébriques

Programmation linéaire

Relation d ordre. Manipulation des relations d ordre. Lycée Pierre de Fermat 2012/2013 Feuille d exercices

Définitions. Numéro à préciser. (Durée : )

Correction de l examen de la première session

La fonction exponentielle

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Chapitre 7. Récurrences

La question est : dans 450 combien de fois 23. L opération est donc la division. Le diviseur. Le quotient

Suites numériques 4. 1 Autres recettes pour calculer les limites

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Cryptographie et fonctions à sens unique

Cours d arithmétique Première partie

CONCOURS D ENTREE A L ECOLE DE 2007 CONCOURS EXTERNE. Cinquième épreuve d admissibilité STATISTIQUE. (durée : cinq heures)

Factorisation Factoriser en utilisant un facteur commun Fiche méthode

Baccalauréat ES/L Métropole La Réunion 13 septembre 2013 Corrigé

ELEC2753 Electrotechnique examen du 11/06/2012

Résolution d équations non linéaires

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Chapitre 2. Eléments pour comprendre un énoncé

Texte Agrégation limitée par diffusion interne

Chapitre 11. Séries de Fourier. Nous supposons connues les formules donnant les coefficients de Fourier d une fonction 2 - périodique :

NOTATIONS PRÉLIMINAIRES

Chapitre 2. Matrices

3. Conditionnement P (B)

Développements limités, équivalents et calculs de limites

COURS EULER: PROGRAMME DE LA PREMIÈRE ANNÉE

Exercices - Nombres complexes : corrigé. Formes algébriques et trigonométriques, module et argument

IV- Comment fonctionne un ordinateur?

Transcription:

Exercice 8.1 Exercices sur les codes cycliques Soit g(x) un polynôme générateur d un code bloc (n, k). Montrer que si g(x) divise (1X n ), alors si C 1 (X) = c 0 c 1.X c 2.X 2... c n 1.X n 1 est un mot-code (correspondant au n- uple ([c n 1, c n 2,..., c 0 ]) alors C 2 (X) = c n 1 c 0.X c 1.X 2... c n 2.X n 1 est aussi un mot-code (correspondant au n-uple ([c n 2, c n 1,..., c 0, c n 1 ]). En déduire qu une condition nécessaire et suffisante à l obtention d un code cyclique est la divisibilité de (1 X n ) par g(x). Exercice 8.2 Pourquoi le polynôme générateur d un code (n, k) est-il de degré n k? Combien de mots-code pourra-t-on générer avec un polynôme générateur d un tel degré? Exercice 8.3 1. Trouver le polynôme générateur d un code cyclique (7, 4) et donner l ensemble des motscode. 2. Trouver la distance minimale entre les mots-codes et en déduire la capacité de détection et la capacité de correction du code. 3. Trouver une matrice génératrice systématique d un tel code (7, 4). 4. La matrice génératrice que vous avez trouvée garde-t-elle les mêmes correspondances entre les mots d information et les mots-codes que celles trouvées à la question 1. Exercice 8.4 Soit un code cyclique (n, k) dont le polynôme générateur est g(x). 1. Montrer que pour l = 1,2,... k, X n l peut s écrire sous la forme X n l = A l (X).g(X) R l (X) et indiquer le degré maximum de R l (X). 2. En déduire que X n l R l (X) est divisible par g(x). 3. Indiquer à l aide d un bloc de bits jusqu où vont s étendre les bits correspondants à X n l et ceux correspondants à R l (X). Montrer que ces deux types de bits ne peuvent jamais interférer à la même position. 4. Montrer qu une matrice systématique G S peut être constituée en prenant k lignes induites par les polynômes X n l R l (X) pour l = 1,2,... k. 5. En reprenant l exemple précédent où le polynôme générateur du code valait soit g 1 (X) = (X 3 X 2 1) ou soit g 2 (X) = (X 3 X 1), construire les matrices génératrices G S1 et G S2 des deux codes. Montrer que les deux codes ont les mêmes capacités de détection et de correction. Exercice 8.5 Soit un code cyclique ou non (n, k) dont le polynôme générateur est g(x). Montrer que si le polynôme générateur contient un facteur X 1 alors tout message de longueur n comportant un nombre impair d erreurs est détecté. TBA1 1

Exercice 8.6 Soit le circuit de la figure 8.1 dans lequel tous les additionneurs sont modulo 2 (OU exclusif). Soit U(X) un polynôme de degré k 1 tel que U(X) = u 0 u 1 X...u k 1 X k 1 correspondant au k-uple [u k 1, u k 2,..., u 0 ] dans lesquels les u i pour [i = 0...k 1] appartiennent à CG(2). On suppose que l on présente à l entrée du circuit de la figure 8.1 les bits u i dans l ordre suivant, u k 1 est envoyé au temps 0, u k 2 au temps 1,... u 0 au temps k 1. 1. Montrer que Y (X) est égal à Q(X) = U(X) 1XX 3. 2. En déduire la valeur de y i à chaque temps i pour i = 0...k 1 en fonction des termes q i du polynôme quotient Q(X) (Q(X) = q 0 q 1.X q 2.X 2...). 3. Déduire de la question précédente les composantes du 3-uple qui se trouve à la sortie des bascules au temps k en fonction de u 0, u 1, u 2, q 0, q 1 et q 2. 4. En calculant le reste de la division polynômiale de U(X) par 1 X X 3 déduire que ce reste se trouve stocké à la sortie des bascules à l instant n. 5. Soit k = 7 et U(X) = X X 2 X 3 X 4 X 6, trouver le quotient et le reste de la division polynômiale de U(X) par 1 X X 3 6. Présenter maintenant à l entrée du circuit de la figure 8.1 le 7-uple correspondant au polynôme U(X) = X X 2 X 3 X 4 X 6 et vérifier que vous obtenez bien par le circuit le quotient et le reste de la division par g(x) = 1 X X 3 en calculant les sorties des bascules de l instant 0 à l instant 7. 7. Que se passe-t-il en sortie du circuit si l on continue à itérer jusqu à n = 9 en mettant à 0 l entrée depuis l itération 7 (i.e. u 7 = u 8 = u 9 = 0)? 8. De manière générale, soit le circuit de la figure 8.2 dans lequel les g i valent 0 ou 1. Dans le cas où g i = 1, cela veut dire qu il existe un rebouclage unitaire entre la sortie y i et l entrée de l additionneur correspondant à g i, dans le cas où g i = 0 le rebouclage correspondant n existe pas. Montrer que le circuit divise U(X) par g(x) = 1g 1 Xg 2 X 2...g m 1 X m 1 X m. 9. Expliquez comment on calcule le reste de la division polynômiale de U(X) par g(x) à l aide du circuit de la figure 8.2. u i y i D 0 D 1 D 2 FIG. 8.1 Figure associée à l exercice 8.6 (questions 1 à 7) u i y i D 0 D 1 D 2 D m-1 1 g 1 g 2 g 3 g m-1 1 FIG. 8.2 Figure associée à l exercice 8.6 (questions 8 et 9) 2 TBA1

Exercice 8.7 Dans le protocole de liaison de données HDLC (High-level Data Link Control) on utilise une structure de trame qui a la forme décrite à la figure 8.3. Fanion 01111110 (8 bits) Adresse (8 bits) Contrôle (8 bits) Données (8.K d bits) CRC (16 bits) Fanion 01111110 (8 bits) FIG. 8.3 Structure d une trame HDLC Les données sont en nombre variable d une trame à sa suivante mais elles sont toujours sur un nombre entier d octets K d. Le champ CRC (Cyclic redundancy check) est calculé à l aide d un polynôme générateur normalisé appelé CRC-CCITT V.41 de la forme g(x) = 1 X 5 X 12 X 16 Le champ CRC est calculé à l aide d un polynôme générateur que l on applique sur la trame à l exception des bits de fanion et du CRC lui-même. Le CRC est ici exclusivement utilisé en détection d erreurs. Après détection éventuelle d erreurs, la trame sera redemandé à l expéditeur. 1. En appelant k le nombre de bits correspondant au champ d adresse, de contrôle et de données, calculez la longueur n des mots-code. 2. Combien y-a-t-il de bits de contrôle par mot-code? Est-ce en accord avec la structure de la trame donnée à la figure 8.3? 3. Comment calculeriez-vous le mot-code et en particulier les bits de contrôle? (Tenez compte du fait que le code est systématique) 4. Montrer que si un nombre impair d erreurs est présent alors il sera détecté par le CRC. 5. Montrer que les salves d erreurs de longueur inférieure à 16 sont détectées. 6. Montrer que toutes les erreurs doubles sont détectées. (Indications : montrer que le reste de la division de X 17 1 par g(x) est non nul, puis par récurrence montrer que si le reste de la division de X l 1 par g(x) est non nul, alors le reste de la division de X l1 1 par g(x) est aussi non nul. 7. Montrer que toutes les erreurs simples et triples sont détectées. 8. Montrer qu il est relativement simple de construire un cas ou une erreur quadruple n est pas détectée. 9. Déduire des 3 questions précédentes la distance minimale entre les mots du code. 10. Quelle est la capacité de détection du code? 11. Quelle serait la capacité de correction si le code était utilisé en correcteur? 12. Vous êtes chargé de réaliser un code CRC-CCITT V.41 sous forme de circuit. Votre premier réflexe est de chercher sur Internet un schéma du circuit. Vous trouvez rapidement le schéma de la figure 8.4, cependant les explications sont lacunaires. Analyser comment devrait fonctionner ce circuit. Vérifier que le circuit est correct et expliquer ce que l on doit faire avec la porte et les interrupteurs. 13. Après que vous ayez codé avec succès vous êtes chargé du décodage. Quel circuit allez-vous proposer? TBA1 3

D D D D D D D D D D D D D D Porte D D 1 2 Sortie Entrée FIG. 8.4 Structure d un codeur CRC-CCITT V.41 4 TBA1

Solution de l exercice 8.1 Si g(x) divise (1 X n ), on en déduit qu il existe un polynôme A(X) tel que D autre part g(x).a(x) = 1 X n C 2 (X) = c n 1 c 0.X c 1.X 2... c n 2.X n 1 = c n 1 X.(c 0 c 1.X c 2.X 2... c n 2.X n 2 ) Rappelons que les additions s effectuent en addition modulo-2 et que c n 1.X n 1 c n 1.X n 1 = 0 On peut donc faire intervenir cette somme dans le dernier terme de droite de l égalité précédente afin de faire apparaître C 1 (X), soit C 2 (X) = c n 1 X.(c 0 c 1.X c 2.X 2... c n 2.X n 2 c n 1.X n 1 c n 1.X n 1 ) = c n 1 X.(C 1 (X) c n 1.X n 1 ) = c n 1.(1 X n ) X.C 1 (X) Montrons maintenant que C 2 (X) est forcément un mot-code, c est à dire qu il est divisible par le polynôme générateur g(x). Comme C 1 (X) est par hypothèse un mot-code, il est divisible par g(x). Il existe donc un mot d information I 1 (X) tel que g(x).i 1 (X) = C 1 (X). On en déduit donc que C 2 (X) = c n 1.(1 X n ) X.C 1 (X) = c n 1.g(X).A(X) X.g(X).I 1 (X) = g(x).(c n 1.A(X) X.I 1 (X)) Ce qui prouve donc que C 2 (X) qui est divisible par g(x) est aussi un mot-code. Un décalage de type cyclique vers la gauche d un mot code C 1 (X) induit un mot C 2 (X) tel que C 2 (X) = X.C 1 (X) c n 1.(1 X n ) Comme C 1 (X) est divisible par g(x), une condition nécessaire et suffisante pour que C 2 (X) soit divisible par g(x) est que 1X n soit divisible par g(x). Par récurrence, i décalages vers la gauche pour i n 1 du mot-code C 1 (x) produiront aussi un mot divisible par g(x) dans le cas où g(x) divise 1 X n. Solution de l exercice 8.2 Un code bloc (n, k) fait correspondre à des blocs de k bits des blocs de n bits. Si l on utilise des polynôme générateurs, cela veut dire que l on transforme les mots source de k bits en polynômes de degré k 1, puis que l on multiplie ces polynômes "source" par le polynôme générateur pour arriver à un polynôme de mot-code de degré n 1 correspondant à un bloc de n bits. Pour passer d un polynôme de degré k 1 à un polynôme de degré n 1 il faut nécessairement que le polynôme générateur soit exactement de degré ((n 1) (k 1) = n k. Comme il y a 2 k mots-source, auxquels vont correspondre 2 k polynômes-source, il y aura 2 k polynômes-code après multiplication par le polynôme générateur. Il y a donc bien 2 k mots-codes générés. TBA1 5

Solution de l exercice 8.3 1. On sait qu il existera un code cyclique (7, 4) si l on est capable de trouver un polynôme de degré n k = 3 qui divise 1 X 7. Comme X = 1 est racine de 1 X 7 (1 1 7 = 0), on en déduit que X 1 divise X 7 1. Divisons donc d abord X 7 1 par X 1, on obtient comme quotient X 6 X 5 X 4 X 3 X 2 X 1. On peut donc écrire que X 7 1 = (1 X).(X 6 X 5 X 4 X 3 X 2 X 1) Reste donc maintenant à factoriser X 6 X 5 X 4 X 3 X 2 X 1 par un polynôme de degré 3. Si ce polynôme existe, il en existe forcément un second de degré 3 comme facteur de X 6 X 5 X 4 X 3 X 2 X 1. Observons que ces deux facteurs doivent avoir chacun un terme de degré 3 et de degré 0 non nuls, car dans le cas contraire on ne pourrait faire apparaître ni X 6 ni 1 dans X 6 X 5 X 4 X 3 X 2 X 1. On peut donc écrire X 6 X 5 X 4 X 3 X 2 X 1 = (X 3 a.x 2 b.x 1).(X 3 c.x 2 d.x 1) Reste à déterminer a, b, c et d. Pour ce faire, développons l expression de droite de l égalité précédente, il vient X 6 X 5 X 4 X 3 X 2 X1 = X 6 (ac)x 5 (bacd)x 4 (cbad)x 3 (cbda)x 2 (bd)x1 On a alors 5 équations pour 4 inconnues. Ces équations sont a c = 1 b ac d = 1 cb ad = 1 c bd a = 0 b d = 1 De la première équation ac = 0, on déduit deux possibilités, soit a = 1 et c = 0, soit a = 0 et c = 1. Choisissons la première possibilité a = 1 et c = 0. De la 3iéme équation cb ad = 1 sachant que c = 0 et a = 1, on déduit que d = 1. De la seconde équation b ac d = 1 sachant que c = 0, d = 1, on déduit que b = 0. On a alors nos 4 inconnues a = 1, b = 0, c = 0, d = 1 à l aide de 3 équations, vérifions que les équations restantes sont bien vérifiées. On a bien c bd a = 0 0.1 1 = 1 et b d = 0 1 = 1. On en déduit que X 6 X 5 X 4 X 3 X 2 X 1 = (X 3 X 2 1).(X 3 X 1) et donc X 7 1 = (1 X).(X 3 X 2 1).(X 3 X 1) On a donc le choix pour polynôme générateur, on peut prendre g 1 (X) = X 3 X 2 1 ou g 2 (X) = X 3 X 1 Prenons g 1 (X) pour polynôme générateur. Les 2 k = 2 4 = 16 mots d information sont transformés de manière indiquée par la table 8.1. 2. La distance minimale est donnée par le nombre de "1" qui se trouvent dans le mot-code ayant un nombre minimal de "1" en exceptant le mot-code nul. On en déduit par examen de la table 8.1 que d min = 3. La capacité de détection est donc d min 1 = 2 erreurs. La capacité de correction est partie entière de (d min 1)/2) soit une erreur. 6 TBA1

Mots d information Mots-code X 3 X 2 X 1 X 6 X 5 X 4 X 3 X 2 X 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 1 1 0 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1 TAB. 8.1 Correspondance entre mots d information et mots-code pour l exercice 8.3 3. Pour trouver une matrice génératrice systématique du code, il faut trouver une matrice 4 lignes et 7 colonnes. Cette matrice va être simplement trouvée en observant que les images de [0,0,0,1], [0,0,1,0], [0,1,0,0] et [1,0,0,0] doivent être respectivement pour un code systématique [0,0,0,1,1,0,1], [0,0,1,0,1,1,1], [0,1,0,0,0,1,1] et [1,0,0,0,1,1,0]. En effet, seules ces quatre correspondances gardent indemnes l information en tête de message. On en déduit alors les quatres lignes de la matrice en observant que la première ligne doit-être le mot-code image de [1,0,0,0], la seconde ligne doit être le mot-code image de [0,1,0,0], etc... soit G S = 1 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1 4. Bien entendu les correspondances entre mots d information et mots-codes lorsque l on utilise G S ne sont pas celles indiquées par la table 8.1. On a choisi implicitement en prenant les quatres mots-code qui forment G S une base du code qui va engendrer les mêmes 16 motscode que celle du code cyclique de la table 8.1 mais avec des correspondances différentes entre mots-codes et mots d information. Solution de l exercice 8.4 1. Si l on divise X n l par g(x) on obtient X n l = A l (X).g(X) R l (X) Le degré de R l (X) est inférieur à celui de g(x). Comme le degré de g(x) est n k, le degré de R l (X) est strictement inférieur à n k. D après l équation précédente en ajoutant R l (X) au membre de droite et de gauche, il vient TBA1 7

X n l R l (X) = A l (X).g(X) R l (X) R l (X) Comme R l (X) R l (X) = 0 en addition modulo-2, il vient X n l R l (X) = A l (X).g(X) qui prouve la divisibilité de X n l R l (X) par g(x). 2. Le bit correspondant à X n l est en position n 1 à partir de la droite quand l = 1, et en position n k à pour l = k (en partant d une position 0 à droite). Les bits correspondants à R l (X) s tendent de la position 0 en partant de la droite à la position n k 1 à partir de la droite. Les deux types de bits ne peuvent interférer. n 1 n 2... n k 1 n k n k 1... 1 0 X n 1 1 0... 0 0 r 1n k 1... r 11 r 10 R(X) X n 2 0 1... 0 0 r 2n k 1... r 21 r 20 R(X). X n k1 0 0... 1 0 r n k1n k 1... r n k11 r n k10 R(X) X n k 0 0... 0 1 r n kn k... r n k1 r n k0 R(X) 3. Les k mots X n l R l (X) pour l = 1...k sont des mots-codes car ils sont divisibles par g(x). Ils sont tous différents et forment donc une base du code. Pour constituer la matrice génératrice G S, il suffit donc de reprendre directement les lignes induites par les mots mots X n l R l (X) tels que l on peut les prendre dans la table précédente, en effet la matrice identité [k k] apparaîtra en tête de la matrice G S. 4. Pour les codes cycliques (7, 4) dont les polynômes générateurs sont g 1 (X) = X 3 X 2 1 et g 2 (X) = X 3 X 1, il suffit donc pour appliquer la méthode de trouver les mots codes par divisions successives de X 6, X 5, X 4 et X 3 par g 1 (X) et g 2 (X). Commençons par g 1 (X) on a X 6 = (X 3 X 2 1).(X 3 X 2 X) (X 2 X) X 5 = (X 3 X 2 1).(X 2 X 1) (X 1) X 4 = (X 3 X 2 1).(X 1) (X 2 X 1) X 3 = (X 3 X 2 1).1 (X 2 1) On en déduit la matrice génératrice G S1 qui sera de la forme 1 0 0 0 1 1 0 G S1 = 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 1 1 0 1 Cette matrice est bien la même que celle trouvée dans l exercice précédent. Passons maintenant aux divisions successives de X 6, X 5, X 4 et X 3 par g 2 (X), il vient X 6 = (X 3 X 1).(X 3 X 1) (X 2 1) X 5 = (X 3 X 1).(X 2 1) (X 2 X 1) X 4 = (X 3 X 1).X (X 2 1) X 3 = (X 3 X 1).1 (X 1) 8 TBA1

On en déduit la matrice génératrice G S2 qui sera de la forme G S2 = 1 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 0 1 1 G S1 et G S2 sont différentes. Les mots-codes engendrés par les deux matrices ne seront pas tous les mêmes (par calcul on montrerait que 9 mots-code sont communs aux deux matrices). Toutefois on peut construire tous les mots-code de G S1 par des décalages cycliques des lignes 1 et 3 de la matrice G S1 (à l exception des mots-codes [0000000] et [1111111] qui peuvent toujours s obtenir par des combinaisons linéaires des 4 lignes). On peut aussi construire tous les mots-code de G S2 par des décalages cycliques des lignes 1 et 2 de la matrice G S2 (à l exception des mots-codes [0000000] et [1111111] qui peuvent toujours s obtenir par des combinaisons linéaires des 4 lignes). Il s ensuit que la distance minimale entre les mots-code construits pour G S1 est le nombre de "1" qui se trouve dans la ligne de G S1 qui en contient le moins. Ce nombre est 3, ce qui prouve que la distance minimale entre les mots du code engendré par G S1 est 3. En opérant de même pour G S2 on trouve la même distance minimale d min = 3. Les capacités de détection et de correction sont donc les mêmes pour les deux types de matrice génératrice. Solution de l exercice 8.5 Si pour un code (n, k) on est capable de détecter tout nombre impair d erreurs, c est que e(x) n est pas divisible par g(x) pour un nombre impair d erreurs. En effet, soit C(X) un mot-code, il est donc divisible par g(x). Soit maintenant un "mot-code" entaché d un nombre impair d erreurs tel que C(X) = C(X) e(x) On voit que l on détectera une non divisibilité de C(X) par g(x) si e(x) n est pas divisible par g(x). Comment assurer cette non divisibilité? Si l on remarque que le polynôme e(x) contient un nombre impair de coefficients, on voit que e(1) = 1 comme somme d un nombre impair de "1". On en déduit que "1" n est pas racine de e(x), ou d une une autre façon que X 1 (equivalent à X 1) ne divise jamais e(x) pour un nombre impair d erreurs. Si l on place justement le facteur X 1 dans g(x), c est à dire si g(x) = (X 1).Q(X) on ne pourra jamais diviser exactement e(x) car X = 1 n est pas racine de e(x). TBA1 9

Solution de l exercice 8.6 1. Les opérateurs D i sont des bascules bistables dites D telles que leur entrée échantillonnée et stockée au coup d horloge n se trouve restituée à la sortie au coup d horloge n1. La bascule D est donc un opérateur de retard. Par exemple si le 4 uple [1,0,1,0] correspondant au polynôme X 3 X est présenté à l entrée d une bascule D, ce 4 uple sera retardé d un coup d horloge à la sortie de telle sorte qu apparaisse le 4 uple [0,1,0,1] correspondant 1 au polynôme X 2 1. On voit donc qu une bascule D, selon que l on considère qu elle opère sur des bits ou sur des polynômes peut être interprétée soit comme un retard pur soit comme un opérateur de division par X. Autrement dit si l on considère le schéma de la figure 8.1, on peut le remplacer formellement par celui de la figure 8.5 dans lequel on a remplacé les bits d entrée et sortie par des polynômes et les opérateurs de retard D par un opérateur de division par X (i.e. X 1 ). U(X) X -1 X -1 X -1 Y(X) FIG. 8.5 Interprétation du circuit d un point de vue polynômial. La sortie Y (X) se calcule en constatant que trois termes vont lui être contributifs, d une part l entrée U(X) et d autre part les deux rebouclages de la sortie sur elle-même. L entrée va contribuer à la sortie après trois passages par les opérateurs de division, on retrouvera donc à la sortie, le terme dépendant de l entrée sous la forme U(X).X 3. Le premier rebouclage par Y (X) va se retrouver à la sortie après le passage par trois opérateurs de division et contribuera sur la sortie par un terme de la forme Y (X).X 3. Le deuxième rebouclage par Y (X) va apparaître à la sortie après le passage par deux opérateurs de divisions et contribuera donc sur la sortie par un terme Y (X).X 2. Ces trois termes contribuant de façon additive, on aura Y (X) = U(X).X 3 Y (X).X 3 Y (X).X 2 En addition modulo-2, l addition ou la soustraction sont équivalentes car 1 = 1 modulo 2. Il s ensuit que Y (X) Y (X).X 3 Y (X).X 2 = U(X).X 3 Soit et donc Y (X).(1 X 2 X 3 ) = U(X).X 3 Y (X) = U(X).X 3 1 X 2 X 3 En multipliant numérateur et dénominateur par X 3, il vient donc Y (X) = U(X) X 3 X 1 (8.1) 1 Il serait plus juste de dire qu au 4 uple [1, 0, 1,0] correspond le 5 uple [0, 1, 0,1, 0], en gardant la même origine des temps, ce 5 uple s interprête donc comme 0.X 1 1 0.X 1.X 2 0.X 3 = 1 X 2. 10 TBA1

2. On vient de voir que la sortie Y (X) était la division polynômiale de Y (X) par g(x) = 1 X X 3. Appelons Q(X) le quotient de cette division. Ce quotient a pour degré la différence des degrés entre U(X) et g(x) soit k 1 3 = k 4. Il s écrit donc sous la forme Q(X) = q 0 q 1 X q 2 X 2... q k 3 X k 3 X k 4 0.X k 3... 0.X k 1 Pour passer dans le domaine temporel il suffit maintenant de passer du polynôme Q(X) aux bits q i en faisant attention toutefois à bien positionner l axe du temps. Le monôme de plus haut degré (k 1) correspond au temps 0, alors que le monôme de degré 0 correspond au temps (k 1). Il s ensuit que le premier bit sortant du circuit est Les deux bits suivants seront aussi nuls, i.e. y k 1 = q k 1 = 0 y k 2 = q k 2 = 0 y k 3 = q k 3 = 0 Le bit suivant sera forcément 1 car Q(X) étant de degré k 4, q k 4 vaut 1 (si ce n était pas le cas Q(X) serait de degré inférieur à k 4). y k 4 = q k 4 = 1 Tous les autres bits suivants contiendront donc les quotients dans l ordre suivant y k 5 = q k 5 y k 6 = q k 6. y 0 = q 0 On aura donc la correspondance suivante entre l entrée et la sortie [u k 1,u k 2,...,u 0 ] [0,0,0,1,q k 5,q k 6,...q 0 ] (8.2) 3. Si l on veut savoir quel terme se trouve stocké à la sortie des trois bascules, on peut remarquer que la sortie de la bascule D 0 au temps k est égal à la somme de l entrée u au temps k 1 et de la sortie de la bascule D 2 au temps k 1. D où l on déduit que D 0(k) = u(k 1) D 2(k 1) Or l on sait que l entrée présentée au temps k 1 est u 0 et que d après la réponse précédente D 2(k 1) = q 0, il en résulte que la sortie de la bascule D 0 au temps k s écrit Pour la bascule D 1, l examen du circuit au temps k montre que Or D 0(k) = u 0 q 0 (8.3) D 1(k) = D 0(k 1) D 2(k 1) = D 0(k 1) q 0 (8.4) D 0(k 1) = u(k 2) D 0(k 2) (8.5) Or la réponse précédente nous a montré que D 2(k 2) = q 1 et comme l entrée présenté à l itération k 2 est u(k 2) = u 1, on en déduit que D 0(k 1) = u 1 q 1 (8.6) TBA1 11

En injectant l équation (8.6) dans l équation (8.4), on obtient Pour la bascule D 2, nous avons Or D 1(k) = u 1 q 0 q 1 (8.7) D 2(k) = D 1(k 1) D 1(k 1) = D 0(k 2) D 2(k 2) (8.8) Nous savons d après la réponse précédente que D 2(k 2) est égal à q 1, d où D autre part D 1(k 1) = D 0(k 2) q 1 (8.9) D 0(k 2) = u(k 3) D 2(k 3) = u 2 q 2 (8.10) D après les équations (8.9) et (8.10), il s ensuit que D 0(k 2) = u 2 q 1 q 2 (8.11) En récapitulant les équations (8.3), (8.7) et (8.11), les sorties des trois bascules au temps k s expriment D 0(k) = u 0 q 0 D 1(k) = u 1 q 0 q 1 (8.12) D 0(k 2) = u 2 q 1 q 2 4. Si l on écrit le reste de la division de U(X) par 1X X 3, observons que ce reste est forcément de degré strictement inférieur à 3 puisque 1 X X 3 est de degré 3. En conséquence ce reste vaut R(X) = r 0 r 1 X r 2 X 2 (8.13) Nous pouvons écrire aussi ce reste sous la forme R(X) = U(X) (1 X X 3 ).Q(X) Or l addition étant équivalente à la soustraction pour des additions modulo 2, il vient aussi R(X) = U(X) (1 X X 3 ).Q(X) = U(X) (1 X X 3 ).(q 0 q 1 X q 2 X 2...) = U(X) q 0 (q 0 q 1 )X (q 1 q 2 )X 2... = u 0 u 1 X u 2 X 2... q 0 (q 0 q 1 )X (q 1 q 2 )X 2... = (u 0 q 0 ) (u 1 q 0 q 1 )X (u 2 q 1 q 2 )X 2... (8.14) Dans l équation (8.14), nous nous sommes seulement intéressés aux termes jusqu au degré 2 puisque R(X) est au plus de degré 2. En revenant maintenant dans le domaine temporel on voit en comparant la dernière ligne de l équation (8.14) avec l équation (8.13) que r 0 = u 0 q 0 r 1 = u 1 q 0 q 1 (8.15) r 2 = u 2 q 1 q 2 En comparant les équations (8.12) et (8.15) dont les termes de droite sont identiques, nous pouvons conclure que le reste de la division apparaîtra à la sortie des bascules D 0, D 1 et D 2 à l itération k. En particulier r 0 se trouvera à la sortie de la bascule D 0, r 1 à la sortie de la bascule D 1 et r 2 à la sortie de la bascule D 2. 12 TBA1

5. Soit n = 7 et U(X) = X X 2 X 3 X 4 X 6. Divisons U(X) par 1 X X 3, il vient X 6 X 4 X 3 X 2 X = (X 3 ).(X 3 X 1) X 2 X Et donc dans ce cas particulier on obtient Q(X) = X 3 R(X) = X 2 X 6. Pour calculer l état du circuit à chaque instant il faut examiner la dépendance entre les variables du circuit que sont les sorties des bascules D et l entrée du circuit. L observation du circuit montre que la sortie de la bascule D 0 au temps i est égale à la somme de l entrée u au temps précédent (u(i 1)) et de la sortie de la bascule D 2 au temps précédent (D 2(i 1) ) la sortie de la bascule D 1 à l instant i est égale à la somme de la sortie de la bascule D 0 au temps i 1 et de la sortie de la bascule D 2 au temps i 1 la sortie de la bascule D 2 est quant à elle décalée d une itération. Ces dépendances entre variables d état et entrée s écrivent donc sous la forme D o(i) = u(i 1) D 2(i 1) D 1(i) = D o(i 1) D 2(i 1) D 2(i) = D 1(i 1) Y (i) = D 2(i) (8.16) On peut donc maintenant écrire dans une table l ensemble des sorties et des entrées à tout instant. Pour ne pas se tromper, il est évidemment essentiel d observer l ordre dans lequel les données sont présentées à l entrée du circuit. On notera que u(0) = u 6, u(1) = u 5, etc... L ensemble des variables d entrée, d état et de sortie sont présentées à la table 8.2. t U D 0 D 1 D 2 Y 0 u 6 = 1 0 0 0 0 1 u 5 = 0 1 0 0 0 2 u 4 = 1 0 1 0 0 3 u 3 = 1 1 0 1 1 (q 3 = 1) 4 u 2 = 1 1 1 0 0 (q 2 = 0) 5 u 1 = 1 1 0 0 0 (q 1 = 0) 6 u 0 = 0 1 1 0 0 (q 0 = 0) 7 0 0 (r 0 = 0) 1 (r 1 = 1) 1 (r 2 = 1) 1 (r 2 = 1) TAB. 8.2 Le quotient obtenu est [1,0,0,0] correspondant bien à X 3 et le reste est [r 2,r 1,r 0 ] = [1,1,0] correspondant à X 2 X. 7. Si l on continue à itérer en maintenant l entrée nulle aux instants 8 et 9 les restes vont se décaler et apparaître à la sortie de manière séquentielle. Complétons la table précédente jusqu à l itération 9, il vient la table 8.3. A un 7-uple [u 6,u 5,...,u 0 ] correspondra un 10-uple de la forme [0,0,0,q 3,q 2,q 1,q 0,r 2,r 1,r 0 ]. Pour le 7-uple [1,0,1,1,1,1,0], le 10-uple de sortie est [0,0,0,1,0,0,0,1,1,0]. 8. On traite ici de manière tout à faire générale la question 1). En considérant la figure 8.6 et en appliquant la même méthodologie qu en 1), on voit que la sortie dépend d une part l entrée U(X) qui aura traversé m opérateurs X 1 et qui interviendra donc sur la sortie par un terme additif X m U(X) et de m 1 rebouclages de la sortie sur elle-même. Chaque TBA1 13

t U D 0 D 1 D 2 Y 0 u 6 = 1 0 0 0 0 1 u 5 = 0 1 0 0 0 2 u 4 = 1 0 1 0 0 3 u 3 = 1 1 0 1 1 (q 3 = 1) 4 u 2 = 1 1 1 0 0 (q 2 = 0) 5 u 1 = 1 1 0 0 0 (q 1 = 0) 6 u 0 = 0 1 1 0 0 (q 0 = 0) 7 0 0 (r 0 = 0) 1 (r 1 = 1) 1 (r 2 = 1) 1 (r 2 = 1) 8 0 0 0 (r 0 = 0) 1 (r 1 = 1) 1 (r 1 = 1) 9 0 0 0 0 (r 0 = 0) 0 (r 0 = 0) TAB. 8.3 Le quotient obtenu est [1,0,0,0] correspondant bien à X 3 et le reste est [r 2,r 1,r 0 ] = [1,1,0] correspondant à X 2 X. rebouclage qui fait intervenir un coefficient de rebouclage 2 g i contribuera à la sortie par un terme X m i Y (X). La sortie Y (X) s écrit donc Y (X) = X m U(X) Y (X). ( X m g 1.X m1 g 2.X m2... g m 1.X 1) (8.17) U(X) X -1 X -1 X -1 X -1 Y(X) 1 g 1 g 2 g 3 g m-1 1 FIG. 8.6 Interprétation du circuit général d un point de vue polynômial. En notant une fois de plus que l addition est équivalente à la soustraction pour les opérations modulo 2, l équation (8.17) devient Y (X). ( X m g 1.X m1 g 2.X m2... g m 1.X 1 1 ) = X m U(X) (8.18) Soit Y (X) = X m U(X) X m g 1.X m1 g 2.X m2... g m 1.X 1 1 (8.19) Soit encore en multipliant numérateur et dénominateur du membre de droite par X m Y (X) = U(X) 1 g 1.X g 2.X 2... g m 1.X m 1 X m (8.20) Le circuit divise bien U(X) par g(x), si l on appelle le quotient de cette division Q(X) = q 0 q 1 X q 2 X 2..., au temps k 1, la sortie du circuit sera q 0, alors qu au temps k 2 la sortie du circuit valait q 1, etc 2 Bien noter que g 0 = 1. 14 TBA1

9. Il s agit de généraliser la démonstration que nous avons faite en 4) et concernant le reste qui doit apparaître à la sortie des bascules D. Observons d abord que si g(x) est degré m, U(X) étant de degré k 1, le quotient Q(X) qui apparaît à la sortie du circuit est de degré k 1 m, le reste quant à lui est de degré au plus égal à m 1. Le reste s écrit sous la forme polynômiale comme R(X) = U(X) g(x).q(x) ou bien avec l équivalence de l addition et de la soustraction en arithmétique modulo-2 R(X) = U(X) g(x).q(x) = U(X) (1 g 1 X g 2 X 2... g m 1 X m 1 X m )(q 0 q 1 X q 2 X 2...) En revenant dans le domaine temporel on voit que r 0 = u 0 g 0.q 0 r 1 = u 1 g 0.q 1 g 1.q 0 r 1 = u 2 g 0.q 1 g 1.q 1 g 2.q 0. r l = u l l i=0 g i.q l i. r m 1 = u m 1 l i=0 g i.q m 1 i Pour démontrer que le reste est bien stocké à la sortie des bascules il faut donc prouver que la sortie de la bascule D l à l instant k est bien u l l i=0 g i.q l i. Calculons la sortie de la bascule D l à l instant k. Celle-ci s écrit par récurrence D l(k) = D l 1(k 1) g l q 0 = D l 2(k 2) g l 1 q 1 g l q 0 = D l 3(k 3) g l 2 q 2 g l 1 q 1 g l q 0. = D 0(k l) g 1 q l 1 g 2 q l 2... g l 2 q 2 g l 1 q 1 g l q 0 = u l g 0 q l g 1 q l 1 g 2 q l 2... g l 2 q 2 g l 1 q 1 g l q 0 = u l l i=0 g i.q l i Ceci montre bien que le reste apparaît à la sortie des bascules D à l itération n. Solution de l exercice 8.7 1. La longueur de la trame si l on exclut les bits de fanions et de CRC est k = 16 8.K d = 8(K d 2) 2. Les données au sens large (donnéesadressecontrôle) vont former un k-uple auquel va correspondre un polynôme U(X) de degré k 1, i.e. U(X) = u 0 u 1 X u 2 X 2... u k 1 X k 1 A ce polynôme U(X) va correspondre un polynôme "mot-code" de la forme U(X).g(X). Toutefois, la multiplication directe par g(x) n assure pas que le code soit systématique (conservation de l information en en-tête). La procédure de construction des bits de contrôle TBA1 15

n applique donc pas le principe de la multiplication directe par g(x) mais elle respecte le principe que le mot-code doit être divisible par g(x) et que d autre part son degré est la somme du degré de U(X) et de celui de g(x), le polynôme "mot-code" est donc de degré k 116, et par conséquent le mot-code est sur k16 bits. Si le mot-code est sur k16 bits alors que le mot d information était sur k bits, cela veut dire qu il y a bien 16 bits de contrôle comme il est indiqué à la figure 8.3. On aurait plus raisonner plus vite, en disant que le polynôme générateur est de degré n k et que le nombre de bits de contrôle est aussi n k. Le degré du polynôme générateur donne en fait le nombre de bits de contrôle. 3. Pour calculer les bits de contrôle on utilise un encodage systématique. Les bits de contrôle correspondent au reste de la division polynômiale de X n k U(X) par g(x). Soit R(X) ce reste, il sera au plus de degré n k 1 de la forme R(X) = r 0 r 1 X r 2 X 2... r n k 1 X n k 1 Si l information avant codage est U(X) telle que le n-uple après codage sera U(X) = u 0 u 1 X u 2 X 2... u k 1 X k 1 C = [u k 1,u k,...,u 1,u 0,r n k 1,r n k 2,...,r 2,r 1 ] 4. Pour prouver que le code détectera les erreurs en nombre impair, il faut prouver que g(x) est divisible par X 1. En faisant la division euclidienne de g(x) par X 1 on trouve X 16 X 12 X 5 1 = (X 15 X 14 X 13 X 12 X 4 X 3 X 2 X 1).(X 1) On a bien divisibilité ge g(x) par 1 X qui prouve bien que le code détectera toutes les erreurs en nombre impair. 5. Une salve d erreurs de longueur inférieure à 16 se caractérisera par un premier "1" apparaissant dans un n-uple, le dernier "1" du n-uple apparaissant à une position décalée au plus de 15 positions par rapport à la première. Du point de vue polynômial on peut donc écrire un salve d erreurs de longueur 15 sous la forme e S15 (X) = X p e p1 X p1 e p2 X p2... e p14 X p14 X p15 Dans l expression e S15 (X) les bits d erreurs e pi pour i = 1...14 pouvant valoir "1" ou "0". La salve d erreurs de longueur 15 s écrit donc e S15 (X) = X p ( 1 e p1 X 1 e p2 X 2... e 14 X 14 X 15) Cette salve d erreur serait non détectée s il existait une combinaison des e pi pour i = 1...14 tel g(x) divise e S15 (X). En effet lorsqu on reçoit C(X) = C(X)e S15 (X), C(X) étant divisible par g(x), la seule condition pour que l erreur échappe à la détection est que e S15 (X) soit divisible par g(x) auquel cas C(X) apparaîtrait comme divisible par g(x) comme somme de deux polynômes divisibles par g(x). Or e S15 (X) contient deux facteurs dont on peut trouver facilement qu ils ne peuvent être divisibles par g(x) ni l un ni l autre. Le premier facteur X p ne peut être divisible par g(x). Si nous supposons que p 1, et si nous supposons que X p est divisible par g(x) nous arrivons à une contradiction. En effet, s il y avait divisibilité par g(x) cela voudrait dire que g(x) serait 16 TBA1

de la forme X l avec 1 l p. Or g(x) a son premier coefficient g 0 = 1 ce qui contredit g(x) = X l 1 l p. D autre part si l on suppose maintenant que p = 0, on a X p = X 0 = 1. Or 1 ne peut être divisible que par lui-même, et g(x) étant différent de 1, la divisibilité de 1 par g(x) n est pas possible. Le deuxième facteur 1e p1 X 1 e p2 X 2...e 14 X 14 X 15 est de degré inférieur à 16 et ne peut donc être divisible par g(x) qui est de degré 16. Ceci montre que e S15 (X) ne pourra donc jamais être divisible par g(x) et par conséquent un salve d erreur de longueur 15. On pourrait généraliser le raisonnement pour toutes les longueurs de salves inférieures à 16. Le vecteur d erreur sera de la forme e Sj (X) = X p ( 1 e p1 X 1 e p2 X 2... e j 1 X j 1 X j) j 15 Comme g(x) ne peut diviser ni X p ni un polynôme de degré j < 16, ceci montre que e Sj (X) n est pas divisible par g(x) et les erreurs correspondantes à des salves de longueur inférieure à 16 seront toujours détectées. 6. Une erreur double se caractérise par un n-uple d erreur de la forme e(x) = X p X t = X p.(1 X (t p) ) Dans cette expression t p représente le nombre de décalages entre les positions des deux erreurs. Ce nombre de décalages peut donc varier entre 1 et n 1. Appelons l ce nombre de décalages. e(x) = X p.(1 X l ) Pour être sûr que les toutes les erreurs doubles soient détectées, il faut donc assurer que g(x) ne puissent diviser ni X p ni 1 X l pour l = 1..n 1. Nous venons de voir à la question précédente que g(x) ne peut diviser X p quel que soit p. Il reste donc à prouver que g(x) ne peut diviser 1 X l pour l = 1..n 1. Il y a ici une difficulté car k n est pas connu, il est variable de trame en trame, on sait simplement que c est un multiple de 8. On peut quand même constater que g(x) étant de degré 16 ne pourra diviser 1 X l tant que l 15. Si l on divise X 16 1 par g(x), on obtient un reste non nul (X 12 X 5 ), en effet X 16 1 = (X 16 X 12 X 5 1).1 X 12 X 5 Si l on continue en divisant X 17 1 par g(x), on obtient encore un reste non nul (X 13 X 6 X 1), en effet X 17 1 = (X 16 X 12 X 5 1).X X 13 X 6 X 1 En particulier le reste calculé à l ordre 17 r 0 r 1 X r 2 X 2... contient un terme r 0 = 1. Essayons de montrer cette propriété par récurrence. Supposons qu à l ordre l le reste R l (X) de la division de X l 1 par g(x) contienne un terme r 0 = 1 soit X l 1 = (X 16 X 12 X 4 1).Q l (X) R l (X) avec r 0 = 1 = g(x).q l (X) R l (X) avec r 0 = 1 (8.21) à l ordre l 1 nous aurons X l1 1 = X l1 X X 1 En effet X X = 0 en addition modulo-2. Cette artifice permet de faire apparaître X l1 1 en fonction de X l 1, en effet TBA1 17

X l1 1 = X l1 X X 1 = (X l 1).X X 1 (8.22) En injectant (8.21) dans (8.22), il vient X l1 1 = (X l 1).X X 1 = (g(x).q l (X) R l (X)).X X 1 = (X.g(X).Q l (X)) X.R l (X) X 1 (8.23) Si l on observe la dernière ligne on peut faire deux hypothèses, soit R l (X) est de degré 15, soit il ne l est pas, on peut donc écrire R l1 (X) = X.R l (X) X 1 si deg.(r l (X)) < 15 = g(x) (X.R l (X) X 1) si deg.(r l (X)) = 15 (8.24) Dans le premier cas, i.e. si R l1 (X) = X.R l (X)X 1 on voit que R l1 (X) est la somme de 3 polynômes, les deux premiers X.R l (X), X ne contiennent pas de terme de degré 0, alors que le troisième polynôme est le terme de degré 0 ("1"). La somme de ces 3 termes ne peut être nulle car on a toujours r 0 = 1. Dans le deuxième cas, il est moins évident de montrer que g(x) (X.R l (X) X 1) ne peut être nul. En effet si l on prend un R l (X) tel que R l (X) = X 15 X 11 X 4 1 alors (X).(R l (X)) X 1 = g(x) Il faut donc nécessairement qu un tel reste ne puisse exister. Comment montrer qu un tel reste est impossible? On peut itérer en sens inverse, et montrer que l on arrivera à une violation de la règle d itération. La table 8.4 montre qu en itérant 4 fois en sens inverse on arrive à une violation du calcul itératif du reste. Le reste R l1 (X) ne peut donc être jamais nul. Il s ensuit que 1 X l n est jamais divisible par g(x) et que le code détecte bien toutes les erreurs doubles. Itération R l (X) (R l 1 (X)).(X) X 1 R l 1 (X) l X 15 X 11 X 4 1 (X 14 X 10 X 3 1).(X) X 1 X 14 X 10 X 3 1 l 1 X 14 X 10 X 3 1 (X 13 X 9 X 2 1).(X) X 1 X 13 X 9 X 2 1 l 2 X 13 X 9 X 2 1 (X 12 X 8 X 1).(X) X 1 X 12 X 8 X 1 l 3 X 12 X 8 X 1 (X 11 X 7 ).(X) X 1 X 11 X 7 l 4 X 11 X 7 (X 10 X 6 ).(X) 0 0 Violation TAB. 8.4 Itération en sens inverse prouvant que le reste ne peut être égal à g(x) à l itération l 1 7. Les erreurs simples et triples sont forcément détectées puisque l on a déjà montré que l on détectait tout nombre impair d erreurs. 8. Comment montrer qu il existe des mots tels que quatre erreurs ne soient pas détectées. Il suffit de constater que le polynôme g(x) est à 4 coefficients dès lors si l on choisit e(x) = g(x) = 1 X 5 X 12 X 16 l erreur ne sera jamais détectée car C(X) = C(X) e(x) sera divisible par g(x) comme somme de 2 termes divisibles par g(x). 9. Les erreurs simples, doubles et triples étant toujours détectées, on en déduit que les motscode sont forcément distant d une distance de Hamming supérieure à 3. Comme il existe des mots-codes séparés d une distance de Hamming de 4, on en déduit que d min = 4. 18 TBA1

10. La capacité de détection est donc égale à à d min 1 = 3. 11. Si le code était utilisé en correcteur, sa capacité de correction serait Partie Entière ((d min 1)/2) = 1 12. Considérons le circuit de la figure 8.4. Comme dans l exercice précédent remplaçons les bascules D par des opérateurs X 1 et travaillons dans le domaine polynômial. Si nous remplaçons dans un premier temps la porte logique par un simple court-circuit, le circuit équivalent est donné à la figure 8.7. Calculons le signal Y (X). X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 Entrée Y(X) 1 2 Sortie C(X) U(X) FIG. 8.7 Codeur pendant les k premières itérations de 0 à k 1 Pour ce faire appelons l entrée U(X). Observons que le signal Y (X) va dépendre de l entrée et de 3 rebouclages de Y (X) sur lui-même. Ces trois rebouclages traversent respectivement 16, 11 et 4 opérateurs X 1. Il vient Y (X) = U(X) Y (X).X 4 Y (X).X 11 Y (X).X 16 Soit en tenant compte du fait que la soustraction est équivalente à l addition en arithmétique modulo-2 Y (X) Y (X).X 4 Y (X).X 11 Y (X).X 16 = U(X) ou encore Soit Y (X)(1 X 4 X 11 X 16 ) = U(X) Y (X) = U(X) 1 X 4 X 11 X 16 En multipliant numérateur et dénominateur par X 16, il vient Soit Y (X) = U(X).X 16 X 16 X 12 X 5 1 Si l on itère pendant k coups d horloge de 0 à k 1, l interrupteur étant en position 2 et la porte étant un court-circuit, le signal U(X) se retrouve intégralement à la sortie C(X). Pendant ce temps à chaque itération Y (X) est le quotient de U(X).X 16 par g(x). Si l on résume la situation, lorsqu on transmet [u k 1,u k 2,...u 1,u 0 ], pendant les k coups d horloge on trouvera en sortie [c n 1 = u k 1,c n 2 = u k 2,...,c n k1 = u 1,c n k = u 0 ]. Pendant ces k itérations, la sortie Y verra successivement les bits [q n k 1,q n k,...q 1,q 0 ] Le reste de la division polynômiale s écrit R(X) = U(X)X n k Q(X).G(X) TBA1 19

Comme R(X) est de degré inférieur à n k et U(X)X n k a des termes nuls jusqu à l ordre n k, on peut donc écrire R(X) = Q(X).G(X) (8.25) Il s ensuit que si l on écrit R(X) = r 0 r 1 X... r n k 1 X n k 1, on voit que d après (8.25) l r l = q i.g l j i=0 Examinons la sortie de la bascule D l à l instant k. Il vient D l(k) = D l 1(k 1) g l q 0 = D l 2(k 2) g l 1 q 1 g l q 0 = D l 3(k 3) g l 2 q 2 g l 1 q 1 g l q 0. = D 0(k l) g 1 q l 1 g 2 q l 2... g l 2 q 2 g l 1 q 1 g l q 0 = g 0 q l g 1 q l 1 g 2 q l 2... g l 2 q 2 g l 1 q 1 g l q 0 = l i=0 g i.q l i Il s ensuit que les bascules au coup d horloge k contiennent les restes. r 0 est sur la bascule la plus à gauche sur le schéma de la figure 8.7 alors que r n k 1 = r 15 est sur la bascule la plus à droite. Pour que les restes apparaissent à la sortie, il faut bloquer la porte à partir de l itération k, faire passer l interrupteur en position 1, on charge ainsi les bits de reste du coup d horloge k au coup d horloge n 1. Le schéma du codage dans cette position est donné à la figure 8.8. Porte fermée X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 X -1 Entrée Y(X) 1 2 Sortie C(X) U(X) FIG. 8.8 Codeur pendant les n k dernières itérations de k à n 1 Le vecteur qui se trouvera codé en sortie après les passages de l interrupteur de la position 2 à la position 1 et de l ouverture et de la fermeture de la porte sera tel [c n 1 = u k 1,c n 2 = u k 2,...,c n k1 = u 1,c n k = u 0,r 15,r 14,...,r 1,r 0 ] 13. Soit C(X) un mot reçu. On peut considérer que ce mot est subdivisé en un mot contenant l information altérée ou non X n k.ũ(x) et un reste R(X). n k Les bits de X.Ũ(X) et de n k R(X) se trouvent à des positions différentes, les k premiers bits étant liés à X.Ũ(X) et les n k derniers à R(X). On sait que pour décoder C(X), il suffit d effectuer le reste de la division de X n k.ũ(x) par g(x). Le reste obtenu R(X) est alors additionné à R(X) pour n k obtenir le syndrome. Comme il faut diviser X.Ũ(X) par g(x), le même circuit peut-être utilisé au décodage avec le même mode opératoire concernant les interrupteurs et la porte logique. Les bits R(X) seront simplement ajoutés à ceux de R(X) pour former le syndrome. 20 TBA1