Lecture 20 detección en códigos lineales de bloque. generación de códigos cíclicos
1. Universidad Nacional de Ingeniería
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
1
Comunicaciones II
Conferencia 20: Detección en Códigos Lineales de Bloque.
Generación de Códigos Cíclicos.
UNIDAD VII: CODIFICACIÓN DE CANAL
Instructor: Israel M. Zamora, MS Telecommunications Management
Profesor Titular, Departamento de Sistemas Digitales y Telecomunicaciones.
Universidad Nacional de Ingeniería
2. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
2
Outline
• Detección de errores
– Ejemplo 2
• Decodificación del síndrome
– Ejemplo Ilustrativo 3 Decodificación de canal
– Ejemplo Ilustrativo 4
• Códigos Cíclicos
• Códigos Cíclicos: Generación
– Ejemplo
3. Matriz
Generadora
Vector mensaje m Vector código c
G
El ruido y otros efectos alteran la palabra de código c
resultando en la palabra de código r en el receptor.
Matriz
Verificación
de paridad
GENERACIÓN
Vector código r Vector síndrome
H
DETECCIÓN
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
s ¹ 0 ERROR!!!
3
Detección de errores
0 OK!!!
• La detección o verificación de errores se obtiene de un proceso
matricial basado en una nueva matriz H denominada matriz de
verificación de paridad.
• El objetivo es identificar el vector síndrome “s”. Si el síndrome resulta
en el vector nulo, entonces el vector de código recibido no presenta
error, de otra forma existe uno o mas bits alterados.
4. Detección de errores
(n-k )´n H
• Para cualquier código lineal podemos encontrar una matriz tal
que sus filas son ortogonales a las filas de :
GHT = 0
Formateo de canal Demodulación
Detección
r r r r
=
( , , ,...., ) palabra de código o vector recibido
1 2 3
r
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
4
H es denominada la matriz de verificación de paridad y sus filas son
linealmente independientes.
• Para códigos lineals de bloque sistemáticos tenemos:
[ T ]
n k H I P - =
G
Formateo Codificación
de canal Modulación
Decodificación
Fuente de
datos
Sumidero
de datos
c
r
m
mˆ
canal
( , , ,...., ) patrón o vector de error
1 2 3
n
n
e e e e
=
e
5. si ha ocurrido un error en la posición i-ésima
1
s = rHT = eHT
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
5
Detección de error
• Consideremos que el vector código c se transmite en un medio que lo altera de
modo que el receptor recibe el vector r resultante del efecto del vector de error
e provocado por el medio tal que:
r = cÅe
• El vector e se denomina vector de error o patrón de error. El i-ésimo elemento
de e es igual a 0 si el elemento correspondiente de r es el mismo que el de c.
Por otra parte, i-ésimo elemento de e es igual a 1 si el elemento
correspondiente de r es diferente del de c, en cuyo caso se dice que ha
ocurrido un error en la i-ésima posición. Es decir, para i=1,2,...,n, tenemos:
î í e = e e ××× e 1 2 n =
ì
si no existe ningún error
ei 0
• El síndrome se obtiene de la expresión:
Con HT la matriz transpuesta de la matriz de verificación H.
6. • La matriz de Verificación de Paridad H se obtiene de la matriz de Paridad P y la
matriz de identidad I según lo indicado.
[ T ]
n k H I P - =
• Propiedad 2: Todos los patrones de error que difieren por una palabra de
código tienen el mismo síndrome.
Para k bits de mensaje, hay Me=2k vectores de códigos distintos denotados
como ci, i=1,2,...,2k. De manera correspondiente, para cualquier patrón de
errores e, definimos los 2k distintos ei como:
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
6
Detección de errores
• Propiedad 1: Los síndromes dependen sólo del patrón de error, y no de la
palabra de código transmitida.
s = rHT = (cÅe)HT = cHT ÅeHT = eHT
e e c , i , , ..., k
i i = Å =1 2 3, 2
7. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
7
Detección de errores
• El conjunto de vectores {ei , i=1, 2,...,2k} se denomina un coconjunto del
código. En otras palabras, un coconjunto tiene exactamente Me=2k elementos
que difieren a lo mas por un vector de código. De esa manera, un código de
bloques lineal (n,k) tiene 2n-k posibles coconjuntos. En cualquier caso, se
puede observar que:
( ) T T
i
T T
i
T
i e H = eÅc H = eH Åc H = eH
• Que es independiente del índice i. Por lo tanto, es posible enunciar que cada
coconjunto del código está caracterizado por un síndrome único.
8. Del ejemplo 1 anterior la matriz H está definida como:
ù
H I PT
= -
é
=
1 0 0 1 0 1 1
0 1 0 1 1 1 0
0 0 1 0 1 1 1
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
8
Ejemplo 2
[ ]
ú ú ú ú
û
ê ê ê ê
ë
H
n k
Cuya matriz transpuesta es HT:
ù
ú ú ú ú ú ú ú ú ú
û
1 0 0
é
ê ê ê ê ê ê ê ê ê
0 1 0
0 0 1
1 1 0
0 1 1
1 1 1
ë
=
1 0 1
HT
9. 1 0 0
é
0 1 0
0 0 1
1 1 0
0 1 1
1 1 1
s rHT
Indica la presencia de error
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
9
Ejemplo 2
Asumiendo que el vector código enviado 1110010 por el transmisor es
alterado de modo que el receptor recibe el vector 1100010, calcularemos el
síndrome:
[ ]
[0 0 1]
1 0 1
1 1 0 0 0 1 0
=
ù
ú ú ú ú ú ú ú ú ú
û
ê ê ê ê ê ê ê ê ê
ë
= =
s
Un síndrome s distinto del vector nulo [0 0 0] indica la presencia de error en el
código recibido.
10. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
10
Decodificación del síndrome
• El receptor tiene la tarea de dividir los 2n vectores recibidos posibles en Me=2k
subconjuntos disjuntos D1, D2,...,DM, de tal forma que i-ésimo subconjunto Di
corresponda al vector de código ci para 1 £ i £ Me.
• El vector recibido r se decodifica en ci si éste se encuentra en el i-ésimo
subconjunto. Para que la decodificación sea correcta, r debe estar en el
subconjunto que pertenece al vector de código ci que realmente fue enviado.
• Los Me=2k subconjuntos descritos aquí constituyen un arreglo estándar del
código de bloque lineal.
• Un arreglo estándar es un arreglo 2n-k x 2k cuyos elementos son secuencias
binarias de longitud n.
11. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
11
Decodificación del síndrome
• Para generar el arreglo estándar se procede de la siguiente manera:
1. Todos los 2k vectores o palabras de código se colocan en una fila o renglón
iniciando por la palabra de código componentes todos cero al extremo izquierdo
el cual nombramos c1. Esta constituye la primera fila.
2. Para la segunda fila o renglón se busca entre todas las secuencias binarias de
longitud n que no están presentes en la primera fila del arreglo. Escojamos una
de estas palabras de código que tenga el menor peso y nombrémosla e1.
Escribámoslo debajo de c1 y escribamos ei Å ci debajo de cada ci para 2£ i £ M.
Es importante que el patrón de errores elegidos como primer elemento en una
fila o renglón no haya aparecido previamente en el arreglo estándar.
3. La tercera fila del arreglo se completa de forma similar. De las tupletas-n que no
han sido usados en las primeras dos filas, los elementos de la tercera fila se
vuelven ciÅ e2. Este proceso se sigue hasta que no quede ninguna tupleta-n
para comenzar una nueva fila.
12. •Representación esquemática de un arreglo estándar.
c =
0 c c c
c
1 2 3 i 2
e e Å c e Å c e Å c
e Å
c
2 2 2 2 3 2 i 2 2
e e Å c e Å c e Å c
e Å
c
3 3 2 3 3 3 i 3 2
e e Å c e Å c e Å c
e Å
c
j j 2 j 3 j i j M
e e Å c e Å c e Å c
e Å
c
2 2 2 2 3 2 i 2 2
Coconjunto líder
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
k
k
12
Decodificación del síndrome
k
n-k n-k n-k n-k n-k k
•Cada fila o renglón del arreglo estándar se llama coconjunto y el primer
elemento de cada coconjunto (ei en general) se llama líder o guía del
coconjunto.
Coconjunto
13. Note que:
Si, , el error es corregido.
Si, , ocurre un error de decodificación NO DETECTABLE!!!.
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
13
Decodificación del síndrome
• Visto lo anterior, es posible describir el procedimiento de
decodificación para un código de bloques lineal:
1. Para un vector o palabra de código recibido r, calculamos el síndrome
.
2. Dentro del coconjunto caracterizado por el síndrome s, indentificamos
el líder o guía del coconjunto (es decir, el patrón de errores con la
probabilidad de ocurrencia más alta o patrón de error estimado, );
llámelo.
cˆ
3. Calculamos el vector o palabra de código estimado como: cˆ = r Åeˆ
Este procedimiento recibe el nombre de decodificación del síndrome.
•Note nuevamente que: s = eˆHT
eˆ
s = rHT
cˆ = r + eˆ = (c + e) + eˆ = c + (e + eˆ)
eˆ = e
eˆ ¹ e
PARA LA CONSTRUCCIÓN DE LA TABLA
DE SÍNDROMES DÉ ERRORES CORREGIBLES
14. • Del ejemplo 2 y tomando la matriz generadora mostrada abajo se obtiene
el conjunto de vectores de códigos (7,4,3) que se resumen en la
diapositiva siguiente.
é
1 1 0 1 0 0 0
0 1 1 0 1 0 0
1 1 1 0 0 1 0
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
14
Ejemplo Ilustrativo 3: Decodificación de canal
ù
ú ú ú ú ú
û
ê ê ê ê ê
ë
=
1 0 1 0 0 0 1
G
15. • Conjunto de vectores de códigos (7,4,3) para el ejemplo 3.
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
15
Ejemplo Ilustrativo 3: Decodificación de canal
Palabra
mensaje
Palabra Código
Peso de
palabra
de código
Palabra
mensaje
Palabra Código
Peso de
palabra
de código
0000 0000000 0 1000 1101000 3
0001 1010001 3 1001 0111001 4
0010 1110010 4 1010 0011010 3
0011 0100011 3 1011 1001011 4
0100 0110100 3 1100 1011100 4
0101 1100101 4 1101 0001101 3
0110 1000110 3 1110 0101110 4
0111 0010111 4 1111 1111111 7
16. • Mapeo de los 2n-k =2p = 27-4 = 23 = 8 síndromes. Puede demostrarse que la
distancia mínima de Hamming es 3 y que el sistema es capaz de corregir
1 error.
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
16
Ejemplo Ilustrativo 3: Decodificación de canal
Sindrome Patrón de error
000 0000000
100 1000000
010 0100000
001 0010000
110 0001000
011 0000100
111 0000010
101 0000001
17. ˆ ˆ
c = r Å
e
ˆ 1100010 0010000
c = ( ) Å
( )
ˆ 1110010
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
17
Ejemplo Ilustrativo 4
Consideramos el caso en el cual se transmitía el código 1110010 y que
debido a perturbaciones del canal el receptor recibía el vector código
1100010, cuyo síndrome era s=(001).
En este caso, de la tabla que mapea los síndromes y los posibles patrones
de errores encontramos que el receptor estima que el patrón de error
cometido corresponde a e=(0010000).
Por tanto, la corrección resulta de sumar dicho patrón de error al vector de
código recibido r:
c =
( )
Bit corregido
19. 000000 000
000001 101
000010 011
000100 110
001000 001
010000 010
100000 100
(101110) transmitido.
(001110) recibido.
=
=
r
c
El síndrome de se calcula :
= = =
(001110) (100)
s
Patrón de error correspondiente a este síndrome es
ˆ =
(100000)
La versión corregida del vector se estima
r e
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
19
Ejemplo de arreglo de palabras de código (6,3)
010001 111
ˆ = + ˆ = (001110) + (100000) =
(101110)
e
rH H
r
c
T T
Partrón de error Síndrome
20. •Si el código es pequeño, por ejemplo (6,3) el decodificador se puede
implementar con circuitería básica. De otra manera se requiere de
programación e implementación en hardware.
•El decodificador dependerá de la ecuación booleana que resulta de
proceso de determinación del síndrome o detección, y luego el proceso de
corrección. Es decir, es fundamental la matriz de verificación de paridad H.
•Como ejemplo ilustrativo, tomemos como válida la siguiente matriz de
verificación de paridad, dada por:
ù
1 0 0
é
0 1 0
0 0 1
HT [ ]
1 1 0
0 1 1
1 0 0
é
0 1 0
0 0 1
1 1 0
0 1 1
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
s = r + r +
r
1 1 4 6
s = r + r +
r
2 2 4 5
s = r + r +
r
20
Implementación del Decodificador
ú ú ú ú ú ú ú ú
û
ê ê ê ê ê ê ê ê
ë
=
1 0 1
ù
ú ú ú ú ú ú ú ú
û
ê ê ê ê ê ê ê ê
ë
= =
1 0 1
1 2 3 4 5 6 s rHT r r r r r r
3 3 5 5
21. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
21
Implementación del Decodificador (6,3)
22. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
22
Códigos Cíclicos
• Códigos cíclicos son una subclase de códigos lineales de
bloque.
• Es un sistema de codificación más fácil que la mayoría de los
demás.
• La codificación y el cálculo del síndrome son facilmente
realizables usando registros de desplazamiento retroalimentado.
– Códigos de bloque relativamente largos pueden ser implementados con una
complejidad razonable.
• Los códigos BCH y Reed-Solomon son códigos cíclicos.
• Características del código cíclico:
– Propiedad de linealidad
• La suma de cualquier par de palabras de códigos del código es siempre otra
palabra de código
– Propiedad cíclica
• Cualquier desplazamiento en una palabra de código origina otra palabra de
código
23. c “i” desplazamientos cíclicos de c
-
c c c c c c c
( , ,..., , , , ,..., )
n i n i n n i
c
(1101)
(1) (2) (3) (4)
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
23
Códigos Cíclicos
• Un código lineal (n,k) se denomina cíclico si todos los
desplazamientos cíclicos de una palabra de código,
son también una palabra de código.
• Ejemplo:
{1 0}
( , , ,..., )
1 1 0 1 2 1
( )
0 1 2 1
donde c ,
c c c c
i
i
n
Î
=
=
- - + - - -
c
c = c = c = c = =
c
=
(1110) (0111) (1011) (1101)
24. x c c x c x c xn -
n-n
0 1 2 ( ) ... 1 grado ( 1)
- C = + + + +
1
2
x x = c x + c x + c x +
c x
c c x c x c x c x c
= + + + + + +
...
( ) ...,
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
- -
1 1
24
Códigos Cíclicos
• La estructura algebraica de un código cíclico (n,k) , implica
que es necesario exprear las palabras de códigos en forma
polinomial coeficientes binarios de orden (n-1).
• La relación entre una palabra de código y sus desplazamientos
cíclicos:
( ) ( 1)
1
(1)
( 1)
( )
1
2
2
1 0 1
1
1
2
2
0 1
1
(1)
= + +
-
+
-
- -
-
-
-
-
n
n
c x
n
n
n
x
n
n n
n
n
n
n
x c x
n
n
C
C
C
C(i) (x) = xiC(x) modulo (xn +1)
Por extensión
C(1) (x) = xC(x) modulo (xn +1)
De allí que:
25. -
= + + -
g {1, 0} i Î
r (x) = g + g x +...+ g x 0 1 O bien, puede G
expresarse como:
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
25
Códigos Cíclicos: Generación
• Dentro del conjunto de códigos polinomiales en C, hay un único
polinomio G(x) con mínimo grado llamado polinomio generador.
En general, G(x) puede expandirse del modo siguiente:
r < n
å-
=
1
1
1
n k
i
i n k
i G(x) g x x
r
• Cada código polinomial en C(x) puede expresarse unívocamente
como:
C(x) =M(x)G(x)
• El polinomio generador G(x) es un polinomio de grado r=n-k el cual es un
factor de (xn + 1), de tal modo que el polinomio G(X) es el polinomio de
menor grado en el código.
26. • El mensaje también se expresa como polinomio con coeficientes
binarios de orden (k-1).
= + + + -
+ -
- M
(x) m m x ... m x m x
0 1 2
• Relación del residuo con el polinomio Generador G(x)
M = +
Q Res
(x) (x)
xn-k (x)
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
26
Códigos Cíclicos: Generación
1
-
1
2
{1 0} 0 1 2 1
si m (m ,m ,...,m ,m ) donde m ,
k- k- i
k
k
k
k
= Î
• La palabra de código depende del mensaje M(x), y del residuo
Res(x) vinculado al polinomio generador G(x).
C(x) =xn-kM(x)+Res(x)
división en mod 2
(x)
(x)
G
G
• Q(x) es el cociente
algebraico.
27. g1 g2 gn-k-1
FF S FF S FF FF S FF S
Codificador de un modo cíclico (n,k) Bits del mensaje
1
i n k
i G(x) g x x FF Flip Flop
S Sumadores
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
27
Códigos Cíclicos: Generación
å- -
=
= + + -
1
1
n k
i
Módulo 2
Bits de Paridad
Palabra
de
Código
. . .
. . .
Compuerta
n k
n k x g g x g x -
- ( ) = + +...+ 0 1 G
28. CÓDIGOS CÍCLICOS SISTEMÁTICOS
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
28
Códigos Cíclicos: Generación
• En un código cíclico sistemático (n,k) los bits de mensaje se
transmiten en forma inalterada.
• Los códigos de bloque sistematicos satisfacen la condición que
los primeros p (=n-k) bits de la izquierda (o los últimos de la
derecha) son idénticos a los correspondientes bits de paridad.
Los últimos k bits de la derecha (o de la izquierda) son idénticos a
los bits de mensaje, siendo como indica la siguiente estructura
para una palabra de código:
p0,p1,...,pn-k-1, m0,m1,...,mk-1
n-k bits de paridad k bits de mensaje
29. 2 3
M(x) = 1 + x + x + 0x con n = 7 y k = 4 o p =
3
como C(x) x M(x) Res(x) y x M(x)
= + = +
n-k 3 2 3 4 5
x M(x) x (1 x x ) x x x
Þ = + + = + +
2 3 4 5
0 0x 0x x x x
= + + + + +
y como G(x) 1 x 0x x
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
Q(x) Res(x)
29
Ejemplo generación de código (1/2)
Encuentre la palabra código para el mensaje (bits de
datos) M=1110. Se usa código cíclico (7,4) y un
polinomio generador G(x)=1+x+x3
Solución:
la operación matemática quedaría así :
G(x)
G(x)
2 3
n-k
n-k
= + + +
30. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
30
Ejemplo generación de código (2/2)
Luego:
C(x) = x3(1+x+x2)+x =0+x+0x2+x3+x4+x5+0x6 como n=7
el código es C = (0101110) Mensaje original
31. Bonificación
2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
31
BONIFICACIÓN 5:
INVESTIGUE Y HAGA UN RESUMEN SOBRE LOS
CÓDIGOS CONVOLUCIONALES
SE ENTREGA EN UNA SEMANA.
32. 2S 2009 I. Zamora
UniVII-Conf20: Det Códs Linls. Gen
Códs Cícl.
32