linéaires GEL-7064 : Théorie et pratique des codes correcteurs Notes de cours Département de génie électrique et de génie informatique Université Laval jean-yves.chouinard@gel.ulaval.ca 12 février 2013
linéaires Plan de la présentation 1 linéaires Représentation polynômiale des codes cycliques linéaires Idéals 2 3 4
linéaires Définition des codes cycliques linéaires Représentation polynômiale des codes cycliques linéaires Idéals Définition (code cyclique linéaire) : Un code bloc linéaire C(n, k) est dit code cyclique linéaire si pour tout mot-code c = (c 0, c 1,...,c n 1 ), il existe un motcode c = (c n 1, c 0,...,c n 2 ). Dans un code cyclique linéaire C, toutes les permutations (circulaires) cycliques d un mot-code sont aussi des mot-codes. Par exemple, si le vecteur x = (1, 0, 0, 0, 1, 1, 0) est un mot-code dans C, alors toutes ses versions décalées sont aussi des mot-codes du code cyclique linéaire : (1, 0, 0, 0, 1, 1, 0),(0, 0, 0, 1, 1, 0, 1),(0, 0, 1, 1, 0, 1, 0),...,(0, 1, 0, 0, 0, 1, 1) C
linéaires Représentation polynômiale des codes cycliques linéaires Idéals Représentation polynômiale des codes cycliques linéaires Soit f(x) = a 0 a 1 x a 2 x 2...a n 1 x n 1 a n x n où les coefficients a i sont des éléments (scalaires) d un corps fini. Le degré du polynôme f(x) est la plus grande valeur de n telle que a n 0. Un polynôme de degré n est appelé polynôme monique si le coefficient a n = 1 : f(x) = a 0 a 1 x a 2 x 2...a n 1 x n 1 x n Les éléments des mot-codes peuvent être exprimés comme les coefficients d un polynôme mot-code : c(x) = c 0 c 1 x c 2 x 2...c n 2 x n 2 c n 1 x n 1 où l exposant i de x i indique la position de l élément dans le mot-code c(x), i.e. c.
linéaires Représentation polynômiale des codes cycliques linéaires Idéals Représentation polynômiale des codes cycliques linéaires En utilisant cette notation polynômiale, les décalages circulaires (ou cycliques) d un mot-code c, peuvent s exprimer en multipliant le polynôme mot-code c(x) par x i où i indique le nombre de décalages circulaires vers la droite, et en réduisant le polynôme résultant modulo x n 1. décalage circulaire mot-code polynôme mot-code i c c(x) 0 (c 0, c 1, c 2,...,c n 1 ) c(x) = c 0 c 1 x c 2 x 2...c n 1 x n 1 1 (c n 1, c 0, c 1,...,c n 2 ) x c(x) = c n 1 c 0 x c 1 x 2...c n 2 x n 1 2 (c n 2, c n 1, c 0,...,c n 3 ) x 2 c(x) = c n 2 c n 1 x c 0 x 2...c n 3 x n 1... n 1 (c 1, c 2, c 3,...,c 0 ) x n 1 c(x) = c 1 c 2 x c 3 x 2...c 0 x n 1
linéaires Représentation polynômiale des codes cycliques linéaires Idéals Représentation polynômiale des codes cycliques linéaires Considérons un autre polynôme de la forme : a(x) = a 0 a 1 x...a n 1 x n 1 CG(q)[x]/x n 1 (La notation CG(q)[x]/f(x) dénote un anneau de polynômes CG(q)[x] réduits modulo f(x).) En multipliant le polynôme mot-code c(x) par ce polynôme a(x) : a(x) c(x) = a 0 c(x)a 1 x c(x)...a n 1 x n 1 c(x) on obtient une combinaison linéaire des versions décalées (cycliques) du polynôme mot-code original c(x). Le polynôme produit a(x)c(x) est donc un autre polynôme du code, ou mot-code valide, du code linéaire cyclique C, c est-à-dire : a(x)c(x) C où a(x) CG(q)[x]/x n 1 et c(x) CG(q)[x]/x n 1
Idéals linéaires Représentation polynômiale des codes cycliques linéaires Idéals Un anneau R est un ensemble d éléments tels que : 1 R est un groupe commutatif sous l addition, c est-à-dire : 1 (ab)c = a(b c), a, b, c R (associativité), 2 a0 = 0a = a, 0 R (élément identité), 3 a R, il existe un élément unique a 1 R tel que aa 1 = a 1 a = 0 : (inverse unique), 4 a R, b R : ab = b a (commutativité). 2 L opération de multiplication est associative : (a b) c = a (b c), a, b, c R. 3 L opération de multiplication est distributive sur l addition : a (b c) = (a b)(a c), a, b, c R.
Idéals linéaires Représentation polynômiale des codes cycliques linéaires Idéals Si l opération de multiplication est commutative, i.e. a b = b a, a, b R, et qu elle possède un élément identité, 1, alors l anneau R est un anneau commutatif avec identité. L ensemble de tous les polynômes q-aires CG(q)[x] forme un anneau commutatif avec identité.
linéaires Définition d un idéal Représentation polynômiale des codes cycliques linéaires Idéals Définition (idéal) : Un sous-ensemble non vide I R, où R est un anneau, est un idéal si : 1 le sous-ensemble I forme un groupe sous l addition dans l anneau R, et 2 a r = b I pour tous les a I et r R. Par exemple, l ensemble I = {0, 4, 8, 12} est un idéal dans l anneau R = {0, 1, 2, 3,...,15} sous les opérations addition et multiplication modulo 16.
linéaires Définition d un idéal principal Représentation polynômiale des codes cycliques linéaires Idéals Définition (idéal principal) : Un idéal I R est un idéal principal si il existe un élément g I tel que chaque élément c I peut s exprimer par : c = mg pour m R.
linéaires Exemple (idéal principal) Représentation polynômiale des codes cycliques linéaires Idéals Considérons les éléments du corps de Galois CG(8) et les polynômes minimaux dans CG(2)[x]. On peut construire le corps de Galois CG(8) à l aide du polynôme primitif : p(α) = α 3 α1 = 0 α 3 = α1 représentation exponentielle représentation polynômiale 0 0 1 1 α α α 2 α 2 α 3 α 1 α 4 α 2 α α 5 α 2 α 1 α 6 α 2 1
linéaires Exemple (idéal principal) Représentation polynômiale des codes cycliques linéaires Idéals Les classes de conjugués sont : β = 0 : = {0} β = 1 : 1, 1 2 = 1 = {1} β = α : α,α 2,α 22 = α 4,α 23 = αα = {α,α 2,α 4 } β = α 3 : α 3,(α 3 ) 2 = α 6,(α 3 ) 4 = α 12 = α 5 = {α 3,α 5,α 6 } et les polynômes minimaux correspondants sont : classes de conjugués polynômes minimaux {0} M (x) = x {1} M 0 (x) = x 1 {α,α 2,α 4 } M 1 (x) = (x α)(x α 2 )(x α 4 ) M 1 (x) = x 3 x 1 {α 3,α 5,α 6 } M 3 (x) = (x α 3 )(x α 5 )(x α 6 ) M 3 (x) = x 3 x 2 1
linéaires Exemple (idéal principal) Représentation polynômiale des codes cycliques linéaires Idéals Le polynôme x 7 1 = x 7 1 peut être factorisé par l ensemble des polynômes minimaux : x 7 1 = M 0 (x) M 1 (x) M 3 (x) x 7 1 = (x 1) (x 3 x 1) (x 3 x 2 1) Les idéaux principaux dans CG(2)[x]/x 7 1 sont : 0, x 1, x 3 x 1, x 3 x 2 1, (x 1)(x 3 x 1), (x 1)(x 3 x 2 1), (x 3 x 1)(x 3 x 2 1), (x 1)(x 3 x 1)(x 3 x 2 1) Il y a donc 8 idéaux principaux incluant les deux idéaux triviaux : 0 et x 7 1 (i.e. (x 1)(x 3 x 1)(x 3 x 2 1) ).
linéaires Théorème (idéal) Représentation polynômiale des codes cycliques linéaires Idéals Théorème (idéals dans CG(q)[x]/x n 1) : Si I est un idéal dans CG(q)[x]/x n 1, alors : 1 Il existe un polynôme unique monique g(x) I de degré minimal, 2 I est un idéal principal ayant un polynôme générateur g(x), 3 le polynôme générateur g(x) divise le polynôme x n 1 dans CG(q)[x].
linéaires 1 Dans l ensemble des polynômes mot-codes {c(x)} C, il existe un polynôme unique g(x) : g(x) = g 0 g 1 x g 2 x 2...g r 1 x r 1 x r de degré minimal r < n. Ce polynôme g(x) est le polynôme générateur du code C. 2 Tout polynôme mot-code {c(x)} C peut être exprimé de manière unique par : c(x) = m(x)g(x) où m(x) est un polynôme de degré inférieur à (n r) dans CG(q)[x]. 3 Le polynôme générateur g(x) C est un facteur de (x n 1) dans CG(q)[x]
linéaires Le polynôme m(x) représente le message, un bloc d information, de degré plus petit ou égal à n r 1, c est-à-dire de (n r) éléments. Le choix des polynômes générateurs des codes cycliques linéaires est limité aux polynômes diviseurs du polynôme x n 1.
linéaires Exemple (sélection des polynômes générateurs) Supposons que l on désire trouver les polynômes générateurs pour un code linéaire cyclique binaire de longueur n = 15. Alors g(x) doit diviser x 15 1. Nous avons vu que le polynôme x 15 1 est le produit de polynômes minimaux, obtenus des classes de conjugués, c est-à-dire : avec q = 2, m = 4 pour x qm 1 1. β,β q,β q2,β q3,β q4,...
linéaires Exemple (sélection des polynômes générateurs) Les classes de conjugués sont : β = 1 : 1, 1 2 = 1 = {1} β = α : α,α 2,α 22 = α 4,α 23 = α 8,α 24 = α 16 = α = {α,α 2,α 4,α 8 } β = α 3 : α 3,(α 3 ) 2 = α 6,(α 3 ) 4 = α 12,(α 3 ) 8 = α 24 = α 9,(α 3 ) 16 = α 48 = α 3 = {α 3,α 6,α 9,α 12 } β = α 5 : α 5,(α 5 ) 2 = α 10,(α 5 ) 4 = α 20 = α 5 = {α 5,α 10 } β = α 7 : α 7,(α 7 ) 2 = α 14,(α 7 ) 4 = α 28 = α 13,(α 7 ) 8 = α 56 = α 11,(α 7 ) 16 = α 112 = α 7 = {α 7,α 11,α 13,α 14 }
linéaires Exemple (sélection des polynômes générateurs) Les polynômes minimaux sont obtenus des classes de conjugués : classes de conjugués polynômes minimaux {1} M 0(x) = x 1 {α,α 2,α 4,α 8 } M 1(x) = (x α)(x α 2 )(x α 4 )(x α 8 ) M 1(x) = x 4 x 1 {α 3,α 6,α 9,α 12 } M 3(x) = (x α 3 )(x α 6 )(x α 9 )(x α 12 ) M 3(x) = x 4 x 3 x 2 x 1 {α 5,α 10 } M 5(x) = (x α 5 )(x α 10 ) M 5(x) = x 2 x 1 {α 7,α 11,α 13,α 14 } M 7(x) = (x α 7 )(x α 11 )(x α 13 )(x α 14 ) M 7(x) = x 4 x 3 1
linéaires Exemple (sélection des polynômes générateurs) Donc le polynôme x 15 1 = x 15 1 peut de décomposer en produit des polynômes minimaux suivants : x 15 1 = M 0 (x) M 1 (x) M 3 (x) M 5 (x) M 7 (x) x 15 1 = (x 1) (x 4 x 1) (x 4 x 3 x 2 x 1) (x 2 x 1) (x 4 x 3 1) Maintenant, à l aide des facteurs du polynôme x 15 1, c est-à-dire l ensemble des polynômes minimaux, on peut construire des polynômes générateurs de codes cycliques, g(x), de n importe quel degré.
linéaires Exemple (sélection des polynômes générateurs) degré polynômes générateurs 1 g(x) = M 0 (x) g(x) = x 1 2 g(x) = M 5 (x) g(x) = x 2 x 1 3 g(x) = M 0 (x) M 5 (x) g(x) = (x 1) (x 2 x 1) g(x) = x 3 1 4 g(x) = M 1 (x) g(x) = x 4 x 1 g(x) = M 3 (x) g(x) = x 4 x 3 x 2 x 1 g(x) = M 7 (x) g(x) = x 4 x 3 1
linéaires Exemple (sélection des polynômes générateurs) degré polynômes générateurs 5 g(x) = M 0 (x) M 1 (x) g(x) = (x 1) (x 4 x 1) g(x) = x 5 x 4 x 2 1 g(x) = M 0 (x) M 3 (x) g(x) = (x 1) (x 4 x 3 x 2 x 1) g(x) = x 5 1 g(x) = M 0 (x) M 7 (x) g(x) = (x 1) (x 4 x 3 1) g(x) = x 5 x 3 x 1 6 g(x) = M 5 (x) M 1 (x) g(x) = (x 2 x 1) (x 4 x 1) g(x) = x 6 x 5 x 4 x 3 1 g(x) = M 5 (x) M 3 (x) g(x) = (x 2 x 1) (x 4 x 3 x 2 x 1) g(x) = x 6 x 4 x 3 x 2 1 g(x) = M 5 (x) M 7 (x) g(x) = (x 2 x 1) (x 4 x 3 1) g(x) = x 6 x 3 x 2 x 1
linéaires Exemple (sélection des polynômes générateurs) degré polynômes générateurs 7 g(x) = M 0 (x) M 5 (x) M 1 (x) g(x) = (x 1) (x 2 x 1) (x 4 x 1) g(x) = x 7 x 3 x 1 g(x) = M 0 (x) M 5 (x) M 3 (x) g(x) = (x 1) (x 2 x 1) (x 4 x 3 x 2 x 1) g(x) = x 7 x 6 x 5 x 2 x 1 g(x) = M 0 (x) M 5 (x) M 7 (x) g(x) = (x 1) (x 2 x 1) (x 4 x 3 1) g(x) = x 7 x 6 x 4 1 8 g(x) = M 1 (x) M 3 (x) g(x) = (x 4 x 1) (x 4 x 3 x 2 x 1) g(x) = x 8 x 7 x 6 x 4 1 g(x) = M 1 (x) M 7 (x) g(x) = (x 4 x 1) (x 4 x 3 1) g(x) = x 8 x 7 x 5 x 4 x 3 x 1 g(x) = M 3 (x) M 7 (x) g(x) = (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 8 x 4 x 2 x 1
linéaires Exemple (sélection des polynômes générateurs) degré polynômes générateurs 9 g(x) = M 0 (x) M 1 (x) M 3 (x) g(x) = (x 1) (x 4 x 1) (x 4 x 3 x 2 x 1) g(x) = x 9 x 6 x 5 x 4 x 1 g(x) = M 0 (x) M 1 (x) M 7 (x) g(x) = (x 1) (x 4 x 1) (x 4 x 3 1) g(x) = x 9 x 7 x 6 x 3 x 2 1 g(x) = M 0 (x) M 3 (x) M 7 (x) g(x) = (x 1) (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 9 x 8 x 5 x 4 x 3 1 10 g(x) = M 5 (x) M 1 (x) M 3 (x) g(x) = (x 2 x 1) (x 4 x 1) (x 4 x 3 x 2 x 1) g(x) = x 10 x 8 x 5 x 4 x 2 x 1 g(x) = M 5 (x) M 1 (x) M 7 (x) g(x) = (x 2 x 1) (x 4 x 1) (x 4 x 3 1) g(x) = x 10 x 5 1 g(x) = M 5 (x) M 3 (x) M 7 (x) g(x) = (x 2 x 1) (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 10 x 9 x 8 x 6 x 5 x 2 1
linéaires Exemple (sélection des polynômes générateurs) degré polynômes générateurs 11 g(x) = M 0 (x) M 5 (x) M 1 (x) M 3 (x) g(x) = (x 1) (x 2 x 1) (x 4 x 1) (x 4 x 3 x 2 x 1) g(x) = x 11 x 10 x 9 x 8 x 6 x 4 x 3 1 g(x) = M 0 (x) M 5 (x) M 1 (x) M 7 (x) g(x) = (x 1) (x 2 x 1) (x 4 x 1) (x 4 x 3 1) g(x) = x 11 x 10 x 6 x 5 x 1 g(x) = M 0 (x) M 5 (x) M 3 (x) M 7 (x) g(x) = (x 1) (x 2 x 1) (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 11 x 8 x 7 x 5 x 3 x 2 x 1 12 g(x) = M 1 (x) M 3 (x) M 7 (x) g(x) = (x 4 x 1) (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 12 x 9 x 6 x 3 1 13 g(x) = M 0 (x) M 1 (x) M 3 (x) M 7 (x) g(x) = (x 1) (x 4 x 1) (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 13 x 12 x 10 x 9 x 7 x 6 x 4 x 3 x 1
linéaires Exemple (sélection des polynômes générateurs) degré polynômes générateurs 14 g(x) = M 5 (x) M 1 (x) M 3 (x) M 7 (x) g(x) = (x 2 x 1) (x 4 x 1) (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 14 x 13 x 12 x 11 x 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 15 g(x) = M 0 (x) M 5 (x) M 1 (x) M 3 (x) M 7 (x) g(x) = (x 1) (x 2 x 1) (x 4 x 1) (x 4 x 3 x 2 x 1) (x 4 x 3 1) g(x) = x 15 1
linéaires Exemple (sélection des polynômes générateurs) À partir de ces tableaux, on peut construire un code linéaire cyclique de degré r = 1 avec le polynôme générateur g(x) = x 1. L ensemble des messages possibles {m(x)} comprends tous les 2 14 = 16 384 vecteurs binaires de 14 bits. Chacun de ces message est codé par un mot-code de 15 bits : c(x) = m(x)g(x) De la même manière, si on choisit le polynôme générateur g(x) = x 2 x 1, on peut coder 2 13 = 8 192 messages distincts de 13 bits en mot-codes de 15 bits, et ainsi de suite. À la limite, on peut coder de courts messages d un seul bit en l un de deux mot-codes de 15 bits en utilisant le polynôme générateur g(x) de degré 14 : g(x) = x 14 x 13 x 12 x 11 x 10 x 9 x 8 x 7 x 6 x 5 x 4 x 3 x 2 x 1 Il s agit d un simple code de répétition C(n, k) = C(15, 1).
linéaires Le processus de codage à l aide de codes cycliques linéaires est effectué en multipliant le polynôme message m(x) de degré (n r 1) avec le polynôme générateur du code g(x) de degré r conduisant ainsi à un polynôme mot-code c(x) de degré (n 1)
linéaires Message : Générateur du code : Mot-code : m(x) = m 0 m 1 x m 2 x 2...m n r 1 x n r 1 g(x) = g 0 g 1 x g 2 x 2...g rx r c(x) = c 0 c 1 x c 2 x 2...c n 1 x n 1 c(x) = m(x) g(x) c(x) = (m 0 m 1 x m 2 x 2...m n r 1 x n r 1 ) g(x) c(x) = m 0 g(x)m 1 xg(x)m 2 x 2 g(x)...m n r 1 x n r 1 g(x) g(x) xg(x) x 2 g(x) c(x) = [ m 0 m 1 m 2... m n r 1 ]. x n r 1 g(x)
linéaires En remplaçant les polynômes par des vecteurs et une matrice génératrice : m = [ m 0 m 1 m 2... m n r 1 ] c = [ c 0 c 1 c 2... c n 1 ] on représente le codage cyclique par : c [ ] c0 c 1... c n 1 = m G = [ m 0 m 1... m n r 1 ] g 0 g 1 g 2 g r 0 0 0 0 g 0 g 1 g r 1 g r 0 0 0 0 g 0 g r 2 g r 1 0 0..................... 0 0 0 g r 0 0 0 0 g r 1 g r
linéaires La matrice génératrice du code cyclique est donc : G = g 0 g 1 g 2 g r 0 0 0 0 g 0 g 1 g r 1 g r 0 0 0 0 g 0 g r 2 g r 1 0 0............. 0 0 0 g r 0 0 0 0 g r 1 g r
linéaires La figure ci-dessous montre un codeur cyclique non systématique.......... c c c c c
linéaires Exemple de codage avec un code cyclique Dans cet exemple, on veut former un code cyclique binaire de longueur n = 7. Le polynôme générateur du code g(x) doit être un facteur de x 7 1 dans l ensemble CG(2)[x]. Reprenons le polynôme primitif p(x) = x 3 x 1. α 3 = α1 est racine du polynôme primitif. On obtient le corps de Galois CG(8) = {0, 1,α,α 2,α 3,α 4,α 5,α 6 }. Les classes de conjugués sont : {0}, {1}, {α,α 2,α 4 } et {α 3,α 5,α 6 }. Les polynômes minimaux correspondants sont : M 0 (x) = x 1, M 1 (x) = x 3 x 1 et M 3 (x) = x 3 x 2 1. Ils factorisent x 7 1 : x 7 1 = (x 1) (x 3 x 1) (x 3 x 2 1)
linéaires Exemple de codage avec un code cyclique Choisissons, par exemple le polynôme générateur : g(x) = M 0 (x) M 1 (x) = (x 1) (x 3 x 1) = x 4 x 3 x 2 1 Le degré maximal du polynôme message, m(x), est le degré maximal du polynôme mot-code moins le degré du polynôme générateur, c.-à-d. 6-4=2. Le code cyclique comprendra donc 8 messages de 3 bits. Choisissons le message m(x) = x 2 1, ou [101] sous forme de vecteur. La matrice génératrice correspondant au polynôme générateur g(x) = x 4 x 3 x 2 1 est donc : G = 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 1 1
linéaires Exemple de codage avec un code cyclique La figure montre le codeur cyclique (non-systématique) résultant. m 0 m 1 m 2 r 0 r 1 r 2 r 3 r 4 r 5 r 6 c 0 c 1 c 2 c 3 c 4 c 5 c 6 La séquence de codage est illustrée aux figures suivantes.
linéaires Exemple de codage avec un code cyclique 1 0 1 0 0 0 0 0 0 0 c 0 c 1 c 2 c 3 c 4 c 5 c 6
linéaires Exemple de codage avec un code cyclique 1 0 1 0 1 1 1 0 0 c 0 c 1 c 2 c 3 c 4 c 5 c 6
linéaires Exemple de codage avec un code cyclique 1 0 1 0 1 1 1 0 c 0 c 1 c 2 c 3 c 4 c 5 c 6
linéaires Exemple de codage avec un code cyclique 1 0 0 1 0 1 1 c 0 c 1 c 2 c 3 c 4 c 5 c 6
linéaires Exemple de codage avec un code cyclique 1 0 0 1 0 1 1 c 0 c 1 c 2 c 3 c 4 c 5 c 6 1 0 0 1 0 1 1
linéaires Exemple de codage avec un code cyclique La séquence codée est [1001011] ou encore : On vérifie que : c(x) = x 6 x 5 x 3 1 c(x) = m(x) g(x) c(x) = ( x 2 1 ) (x 4 x 3 x 2 1 ) c(x) = x 6 x 5 x 3 1
linéaires Au décodeur, un polynôme de contrôle h(x) est employé pour décoder les mot-codes reçus (et possiblement corrompus par le canal). Pour tout polynôme générateur g(x) de degré r, il existe un polynôme de contrôle h(x) de degré k = (n r) tel que : ou encore : g(x)h(x) = x n 1 g(x)h(x) = 0 modulo (x n 1) Le polynôme mot-code c(x) étant un multiple du polynôme générateur g(x), i.e. c(x) = m(x)g(x), alors : c(x)h(x) = m(x)g(x)h(x) c(x)h(x) = m(x) 0 modulo (x n 1) c(x)h(x) = 0 modulo (x n 1)
linéaires Un mot-code c(x) transmis dans un canal de transmission bruité sera vraisemblablement affecté par celui-ci et le polynôme reçu, r(x), sera différent, i.e. r(x) c(x). r(x)h(x) = s(x) modulo (x n 1) Le polynôme s(x) = s 0 s 1 x s 2 x 2...s n k 1 x n k 1 est le polynôme syndrôme de degré (n k 1). Ce polynôme syndrôme s(x) est obtenu en divisant le polynôme reçu r(x) par le polynôme générateur du code cyclique, g(x). Le reste de la division est le polynôme syndrôme : r(x) = a(x)g(x)s(x) où le degré du polynôme syndrôme est plus petit que le degré du polynôme générateur : deg[s(x)] < deg[g(x)].
linéaires Si r(x) = c(x), alors : r(x) = c(x) = a(x)g(x) et le message décodé est : ˆm(x) = a(x). La figure montre le circuit de division cyclique. g 0 g r-1 g 1 a 0 a 1... a n-1... q 0 q 1... q j-1 d 0 d r- d 1 d r-2 1
linéaires Exemple de décodage avec circuit de division Reprenons l exemple du code cyclique binaire de longueur n = 7 de polynôme générateur du code g(x) = x 4 x 3 x 2 1. Le circuit de division cyclique est donné à la figure ci-dessous. g 0 =1 g 1 =0 g 2 =1 g 3 =1 a 0 a 1 a 3 a 4 a 5 a 6 a 2 r 0 r 1 r 2 r 3 d 0 d 1 d 2 d 3 Supposons que la séquence codée reçue du canal est r(x) = x 6 x 5 x 3 1.
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 a 0 a 1 a 3 a 4 a 5 a 6 a 2 r 0 r 1 r 2 r 3 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division 1 0 0 1 0 1 1 g 0 =1 g 1 =0 g 2 =1 g 3 =1 0 0 0 0 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 1 0 0 1 0 1 1 0 0 0 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 1 0 0 1 0 1 1 0 0 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 1 0 0 1 0 1 1 0 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 1 0 0 1 0 1 1 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 1 0 1 1 1 0 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division 1 g 0 =1 g 1 =0 g 2 =1 g 3 =1 0 1 1 1 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 0 0 0 0 d 0 d 1 d 2 d 3
linéaires Exemple de décodage avec circuit de division g 0 =1 g 1 =0 g 2 =1 g 3 =1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0
linéaires Exemple de décodage avec circuit de division Le résultat de la division du mot-code reçu, r(x), par le polynôme générateur g(x) est donc : r(x) = a(x)g(x)s(x) r(x) = ( x 2 1 ) (x 4 x 3 x 2 1 ) 0 Le syndrome s(x) = 0 indique donc que le mot-code reçu r(x) est un mot-code valide et le message est : m(x) = a(x) = ( x 2 1 ).
linéaires En général, le codage cyclique résultant du produit des polynômes message et générateur c(x) = m(x)g(x) ne conduit pas à des codes systématiques. Un code systématique C est de la forme : c = (c 0, c 1,...,c n k 1, c n k,...,c n 1 ) c = (c 0, c 1,...,c n k 1, m 0,...,m } {{ k 1 ) } message où m = (m 0,...,m k 1 ) est le message de longueur k. Sous forme polynômiale, on a : c(x) = c 0 c 1x c 2x 2...c n k 1 x n k 1 c n k x n k...c n 1x n 1 c(x) = c 0 c 1x c 2x 2...c n k 1 x n k 1 m 0x n k...m k 1 x n 1
linéaires Le vecteur mot-code c peut être représenté par une somme de deux vecteurs : c = (c 0, c 1,...,c n k 1, c n k,...,c n 1 ) c = (0, 0,...,0, m 0,...,m k 1 )( d 0, d 1,..., d n k 1, 0,...,0) ou encore sous forme polynômiale : c(x) = x n k m(x) d(x) où d(x) = d 0 d 1 x...d n k 1 x n k 1.
linéaires La figure ci-dessous montre le circuit de multiplication cyclique.......... 0 0 0 m m
linéaires Or le polynôme mot-code c(x) doit aussi être un multiple du polynôme générateur g(x) de degré r : avec c(x) = q(x)g(x) g(x) = g 0 g 1 x...g r x r et q(x) = q 0 q 1 x...q n r 1 x n r 1 Étant donné que c(x) = x n k m(x) d(x) et que c(x) = q(x)g(x), alors : x n k m(x) = q(x)g(x)d(x)
linéaires Le polynôme d(x) est donc le reste de la division du polynôme x n k m(x) par le polynôme générateur g(x). On peut donc former le mot-code c(x) avec les polynômes m(x) et d(x) : c(x) = d 0 d 1 x... d n k 1 x n k 1 m 0 x n k...m k 1 x n 1 g 0 g r-1 g 1 a 0 a 1... a n-1... q 0 q 1... q j-1 d 0 d r- d 1 d r-2 1
linéaires Algorithme de codage cyclique systématique : Multiplication : x n k m(x). Division par g(x) : x n k m(x) = q(x)g(x)d(x). Soustraction : c(x) = x n k m(x) d(x).
linéaires La figure ci-dessous montre un codeur cyclique systématique. g 0 g r-1 - g 1 - -... m 0 m 1... m k-1...... -d 0 -d 1 -d n-k-1 c 0 c 1 c n-k-1...... m 0 m 1 m k-1 c n-k c n-k1 c n-1
linéaires Circuit de multiplication (entrée inversée) Circuit de multiplication de deux polynômes avec les entrées inversées. /( 0) 1! " -(.) 1 (()) = ( $ (%) (#)#, (&)& *()) = * $ *%) *#) #, *' ) ' ()) = (()) * ()) ( ) $ % # # & ' % & ' % & ' & ) = ) ), ' ) ) ()) (( $ * $ ) ((%* $ ( $ *% )) ((#* $ (%*% ( $ *# ))# ((&*' % (& %*' ))& ' ((&*' ))& =, '
linéaires Circuit de multiplication (entrée non inversée) Circuit de multiplication de deux polynômes avec entrées non inversées. J( K) L = < ; : 9 8 7 6 5 4 3 H( I) 2 2 L 2 2 C( D) = C? C@ D C> D> G CADA E( D) = E? E@ D E> D > G EB D B F( D) = C( D) E( D) ( )? @ > > A B @ A B @ A B A F D = F F D F D G F B D F D F( D) ( C? E? ) ( C@ E? C? E@ ) D ( C> E? C@ E@ C? E> ) D> ( CAEB @ CA @ EB ) DA B ( CAEB ) DA = G B