Codificación de Canal Mónica Aguilar Igartua
Índice Resumen fundamentos de codificación de canal Códigos bloque Código Lineal. Matrices generadora y de comprobación. Distancia mínima de un código. Redundancia mínima para una capacidad correctora/detectora determinada. Probabilidad de error residual. Eficiencia de un código. Códigos e-perfectos. Códigos de Hamming. Código ISBN. Códigos cíclicos y polinómicos. 2/33
Fundamentos de Codificación de Canal Objetivos de la transmisión digital de la información: Transmisión fiable (control de errores) Transmisión rápida (compresión) Transmisión segura (autenticidad, privacidad) Codificación de canal Codificación de fuente Criptografía Codificación de canal: Protege la información frente a degradaciones del canal. Añade redundancia de forma inteligente. Detecta y/o corrige errores que produce el canal. 3/33
Fundamentos de Codificación de Canal Ubicación del codificador/decodificador de canal en el Sistema de Transmisión de Datos: Fuente Equivalente Codificación de canal Mapeo Modulación Canal Destino Decodificación de canal Mapeo Inverso Demodulación Canal discreto equivalente 4/33
Fundamentos de Codificación de Canal Estrategias de uso: Detectora: ARQ (Automatic Repeat Request), solicitud automática de re-envío. Correctora: FEC (Forward Error Correction), corrige a partir de la información recibida. Clasificación en función de cómo se introduce la redundancia: Códigos Convolucionales x(i) Código y(i) De forma continua a medida que llega la información al codificador Códigos Bloque Asociada a bloques de información X Código Y 5/33
Codificación de Bloque Código (n, k) Redundancia = r = n-k X (x(),, x(k)) Codificador de canal Y (y(),, y(n)) Canal discreto equivalente Z (z(),, z(n)) Decodificador de canal X (x(),, x(k)) X (k digitos) Mensaje de usuario Y (n digitos, n>k) Palabra código Z (n digitos) Palabra recibida X (k digitos) Mensaje estimado x(i) alfabeto de q símbolos q k X Codificador Y q n q k Código Bloque Para ser útil Aplicación biyectiva. q k palabras código distintas. Código Lineal. se reduce la complejidad del código. Estructura sistemática de la palabra código. extraer de inmediato el mensaje de usuario. mensaje redundancia palabra, n dígitos k r 6/33
Código Lineal de Bloque El código bloque de q k palabras código (de longitud n) es un Código Lineal Bloque (n, k) si y sólo si tiene estructura de subespacio vectorial k-dimensional (del espacio vectorial formado por las n-tuplas) sobre un Cuerpo de Galois (GF). Conjunto finito de elementos con los cuales se opera como con los números reales. Consideraremos GF(2). El Codificador se elige de tal manera que sea una aplicación lineal: X Y X 2 Y 2 c X + c 2 X 2 c Y + c 2 Y 2 c, c 2 GF { { Ejemplo: = = 7/33
Matriz Generadora del Código Lineal de Bloque, G Del Código Lineal (n, k) hallamos k palabras código lin. indep. (g, g 2,..., g k ) Base Cada palabra código Y es una combinación lineal de esas k palabras código: k=3 Y = x g + x 2 g 2 + x 3 g 3, x i = {, } Todo mensaje de usuario X puede expresarse como combinación lineal de una base: X = (x, x 2, x 3 ) = x () + x 2 () + x 3 () El código queda determinado conociendo la codificación de una base del conjunto de mensajes de usuario, X: () (g g 2... g n ) = g () (g 2 g 22... g 2n ) = g 2 () (g 3 g 32... g 3n ) = g 3 Matriz Generadora del Código X = (x, x 2,..., x k ) Y = X G G( kxn ) = g g M g 2 k = g g M k g g 2 M k 2 K K g g n M kn 8/33
Código Lineal Sistemático de Bloque Estructura Sistemática k r mensaje redundancia palabra, n dígitos Un código lineal (n, k) SISTEMÁTICO de bloque queda definido por una matriz G(kxn): G( kxn) = M L O K M p p p 2 M k L p p r kr = ( I P( kxr) ) k Ejemplo: Código de paridad. k=2, n=3. r=n-k= (2x3) = = I G 2 9/33
Detección/corrección de errores Cómo detectar errores? X (x(),, x(k)) Codificador de canal Y (y(),, y(n)) Canal discreto equivalente Z (z(),, z(n))? Decodificador de canal Y=X G Si Z Y ERROR. Pero Y no es conocida en recepción! Si Z código ERROR. Es cierto. Si Z código NO ERROR. Es una suposición: puede que el error haya transformado una palabra código en otra! Diseñar el Código para que sea poco probable. Cómo saber si Z a un código C? Comparar Z con todas las Y del código. Ineficaz si k es grande! Una palabra Z a un código C si es a C, subespacio vectorial a C. /33
Matriz de Comprobación del Código Lineal de Bloque, H Un código lineal de bloque (n, k) tiene asociada otra matriz H(rxn): H( rxn) h h = M h 2 r h h = M h 2 r L L L h h h n 2n M r n Matriz de Comprobación del Código G(kxn) H(rxn) g i h j g i h j g i h j = 2 n palabras Z Código C: 2 k palabras Y Y H T = Subespacio vectorial ortogonal a C G H T = /33
Matriz de Comprobación del Código Lineal de Bloque, H En un código lineal de bloque (n, k) SISTEMÁTICO, la matriz H es de la forma: G(kxn) = ( I k P(kxr) ) G H T = H T -P = H(rxn) = ( -P T I r ) I r Nota: En GF(2), +=, -, -P P Ejemplo: Código de paridad. k = 2, n = 3 r = n - k = (2x3) = = ( I P(2x) ) H(x3) = ( I ) ( ) G 2 = Z = Z H T = () = Z C Z = Z H T = () = Z C 2/33
Sea un código lineal de bloque (n, k) sistemático del que conocemos sus matrices G y H. Sea Y una palabra código que se transmite por un canal ruidoso. Se recibe la palabra Z. Z = Y + e e = (e,..., e n ) con Una vez que se ha obtenido e SÍNDROME de Z: s = Z H T s = (s,..., s r ) s = Z H T = (Y+ e ) H T = Y H T + e H T = e H T s = e H T Síndrome y detección de errores e i = si Z i Y i e i = si Z i = Y i (*) Es posible que Z sea errónea siendo s=? Y = Z + e Y canal e, vector de error si Z H T = s = No error (*) si Z H T s Error - Si e C, e Z=Y+e Z C s= - Hay 2 k - palabras código Hay 2 k - errores no detectables Z 3/33
Síndrome y detección de errores Para obtener e, basta con resolver r ecuaciones lineales, con n incógnitas! Hay n - r = k grados de libertad. Hay 2 k soluciones, es decir hay 2 k errores que producen igual síndrome: s = e H T ( s, s,..., s ) 2 r = (e, e 2,..., e n h h ) M h 2 n h h h 2 22 M 2 n L L L h h h r r 2 M r n Para minimizar la probabilidad de error, se elige el error e más probable. Regla de decisión para corregir errores: Cómo determinar Y a partir de Z recibida? Distancia d(y, Z) mínima Depende del Modelo de Canal. 4/33
Modelo de Canal Canal Binario Simétrico (BSC) Canal sin memoria errores aleatorios e independientes no hay ráfagas de errores Y canal Z Canal discreto equivalente p = Prob. error bit -p y i = z i = p p y i = z i = -p Distancia, d(y, Z) = Nº de bits diferentes entre Z e Y = Distancia de Hamming = = Peso (nº bits =) de la suma = W(Y+Z) y c Ejemplo: Código de paridad. k=2, n=3 distancias de Hamming Y Y 2 Y 3 Y 4 d(y, Y 4 )=W(+)=W()=2 d(y 2, Y 3 )=W(+)=W()=2 Y 3 Y 2 2 Y 2 distancias Euclídeas y b y a Y 4 5/33
Modelo de Canal Canal con memoria. Se producen ráfagas de errores ENTRELAZADO: Ejemplo: n = 4 a) b) X X X X X Y Y 2 Y 3 Y 4 Y 5 X X X X X 2 3 4 5 6 7 8 9 2 Canal b) necesita código con capacidad correctora 3 Es necesaria una redundancia 6 Canal a) necesita código con capacidad correctora Es necesaria una redundancia 2. Diseñar código para canal del tipo a), pero procesar las Y antes de enviarlas al canal con memoria....... canal Qué valor debe tener D? X código Y Y Y 2 Y 3 Y 4 Y 5 2 3 4 X 5 6 7 8 X X X X n = 4 D = profundidad de entrelazado D Longitud media ráfaga Qué problema surge? Aumenta el retardo 6/33
Distancia mínima de un código Distancia de Hamming = d(y, Z) = W(Y+Z) Dado un código C lineal de bloque (n, k), su distancia mínima d mín se define como: d mín = mín. d(y i, Y j ), con Y i, Y j C, i j Dado que C es un subespacio vectorial, Y i + Y j es otra palabra código, por tanto: d mín = mín. W(Y k ) = W mín El menor de los pesos de todas las Y Y k Ejemplo: Código de paridad. k=2, n=3 Y Y 2 Y 3 Y 4 W 2 = 2 W 3 = 2 W 4 = 2 W mín = 2 = d mín Qué relación guarda la d mín de un Código con su capacidad detectora y correctora de errores? 7/33
Capacidad correctora/detectora de un código Ejemplo: Z Y j Y i e = 3 δ = 6 d mín = 7 Capacidad correctora de errores e = d min 2 - Capacidad detectora de errores δ = d min d min 2 e + d min δ + - BORRÓN: Y canal Z {, } {,, #} Indica incertidumbre en su valor - dónde? Corregir un error - valor? Conocemos la posición Mayor facilidad de corrección Capacidad correctora de borrones ρ = d min - d min ρ + 8/33
Redundancia y Probabilidad de error residual REDUNDANCIA: Cuál es el valor mínimo de r para garantizar una cierta capacidad correctora? planteemos un caso extremo. Ejemplo: Código lineal de bloque (5, 3) sistemático, que consiste en añadir s al mensaje de usuario. n=5 k=3 r = n-k = 2 k=3 r=2 d mín = + r En general, d mín r + d mín 2 e + r d mín - 2 e r 2 e P E, Probabilidad de error residual: Código bloque capaz de corregir e errores i P = p ( p) n i Canal binario simétrico con prob. error p E n i= e+ n i 9/33
Códigos e-perfectos y Códigos de Hamming Códigos e-perfectos. Corrige hasta e errores y ningún otro más. Cada error corregible Un síndrome diferente s = (s,..., s r ) Nº de síndromes = 2 r = + n + n 2 +... + n e no error error e errores Códigos de Hamming. Código -perfecto e = corrige errores simples. 2 r = + = + n n n = 2 r - r = 2 n = 2 2 -=3 k=n-r= Código (3, ) r = 3 n = 2 3 -=7 k=n-r=4 Código (7, 4) r = 4 n = 2 4 -=5 k=n-r= Código (5, ) 2/33
Código (7, 4) de Hamming Ejercicio. Generar un Código (7, 4) de Hamming. Se trata de obtener la matriz generadora G(kxn). H Código (n, k) n = 7, k = 4 r = n - k = 3 Corrige error simple: e = Sólo una componente de e es diferente de cero. e tiene n=7 componentes, e = (e, e 2,..., e 7 ) Hay 7 vectores error e diferentes Hay 7 errores corregibles 7 síndromes s diferentes Como s = e H T, Cada síndrome asociado a error corregible, coincide con una columna de H(rxn) H(3x7) tiene 7 columnas T ( 3x7) = ( P I ) r Cómo elegimos las 4 columnas de H? x x x x No puede haber una columna. = x x x x 2 columnas no pueden ser iguales. x x x x Las 4 columnas serán las 2 3 --3 = 4 ternas restantes, en cualquier orden. 2/33
H = r x n Código (7, 4) de Hamming ( ) (-P T 3x7 = I ) G( 4x7) = = ( I P) Código generado: Y = X G X Y r s = e H T Y = k x n error síndrome k ª columna de H 2ª columna de H 3ª columna de H 7ª columna de H Corrección de errores simples Detección de errores Corrección de borrones 22/33
Código (7, 4) de Hamming a) Corrección de error simple: Y = Z = s = Z H T = () = () e = () Y = Z + e = + = = = Y b) Capacidad detectora de errores: δ = 2 e = 2 Y = Z = s = Z H T = () = () () Ha habido error. Los 2 errores han sido detectados. No debo corregir, pues el número de errores (2) excede la capacidad correctora, e=: e = () Y = Z + e = + = Y 23/33
Código (7, 4) de Hamming c) Corrección de borrones: ρ = δ = 2 Y = Z = # # Comparando con todas las palabras código, podemos decir SIN DUDA que la palabra código transmitida es Y =. Con un número mayor de borrones, no podemos asegurar el poder discernir entre varias palabras código. Ejemplo: Z = # # # Y = Y =? 24/33
Códigos de Hamming recortados Si borramos cualesquiera B columnas de la matriz de comprobación H(rxn) de un código Hamming, obtenemos una matriz H de orden r x (n-b). A partir de H podemos obtener la matriz G (estructura sistemática) de un código Hamming recortado con los siguientes parámetros: n = n - B k = k - B r = r e = d mín = 3 H = r x n r x n ( 3x7) = H' ( 3x5) = (-P ) T I G' ( 2x5) = ( I P) = k x n k Por ejemplo, B=2: n = 7-2 = 5 k = 4-2 = 2 r = 3 e = d mín = 3 X r Y=X G Código(6,3) Código(5,2) 25/33
Código (5, 2) de Hamming recortado Diseñar un Código (5,2) con el simulador Ptolemy..- La probabilidad de error del canal equivalente es del 2%. 2.- Diseñar las tablas de emisor y receptor. 3.- Hallar la probabilidad de error final residual. 4.- Hallar la eficiencia del código. Compararla con la del Código (7,4). 5.- Conclusiones. p() Código (5, 2) E = k/n = 2/5 =,4 = 4% P E =,38% Código (7, 4) E = k/n = 4/7 =,57 = 57% P E =,78% 26/33
Ejercicios. La matriz de comprobación H(3x7) de un Código de Hamming (7, 4) es: ( ) H 3x7 = Se recibe la palabra Z = ab. Cuál fue el mensaje enviado? Es de Hamming Capacidad correctora de errores e= Capacidad correctora de borrones ρ=2 s = (ab) H T = (a+b+, b, a+) = (,, ) b=, a= Mensaje = 2. Se tiene un canal caracterizable por una prob. de error de bit de -3 que genera ráfagas de error de longitud 2. Es inaceptable una prob. de error de usuario de -7. Considere n=5. Con qué codificador es posible? 5 a) e=, D=4 D 2, P E -6 2 = -5 > -7, No. b) e=2, D= No, no se está entrelazando. c) e=2, D=2 D 2, P E -9 5 = -9 < -7, Sí. 3 El proceso de entrelazado permite suponer errores independientes y aleatorios. n Es aplicable la expresión P E p e+ e+ 27/33
Código ISBN Código ISBN (International Standard Book Number). Código utilizado para detectar errores producidos al mecanografiar. El mensaje de usuario consta de k=9 símbolos {,, 2, 3, 4, 5, 6, 7, 8, 9, X}. Se añade otro símbolo de ese mismo alfabeto como redundancia, r=. La palabra código consta de n=k+r= símbolos. Trabajamos en el Cuerpo de Galois GF(), utilizando aritmética módulo. El código es sistemático: la palabra código está formada por el mensaje de usuario seguido de la redundancia. Obtención de la redundancia: Suma de los 9 dígitos del mensaje ponderados por su posición Proporciona información para detectar errores comunes de transposición. Puede corregir borrón -> ρ= => No corrige ningún error => e= 28/33
Código ISBN Código ISBN. Obtención de las matrices de generación G y de comprobación H. mensaje m m 2 m 3 m 4 m 5 m 6 m 7 m 8 m 9 * * * * * * * * * posición 2 3 4 5 6 7 8 9 redundancia = m +2 m 2 +3 m 3 +4 m 4 +5 m 5 +6 m 6 + + 7 m 7 +8 m 8 +9 m 9 2 3 4 G(9x ) = 5 = 9 x kxn 6 kxr 7 8 9 ( I P(9 ) ) El manuscrito carmesí, A. Gala. 84 32 722-X H(x) = rxn T ( P I ) = ( 9 8 7 6 5 4 3 2 ) -2-3 r - 9 8-4 7 X 6-5 - 5 2-6 3 4-9 -8-7 29/33
3 3/33 /33 Código ISBN Código ISBN. Ejemplo. ( ) ( ) ( ) X 8432722 8432722 9 8 7 6 5 4 3 2 8432722 G X Y = = = ( ) ( ) 29 mod X 98 7 6 5 4 3 2 8432722X H Y T T = = = El manuscrito carmesí, A. Gala. 84 32 722-X Redundancia = = 8+2 4+3 3+4 2+5 +6 7+7 +8 2+9 2 = = 9 mod = = X Corrige borrón ρ = e =
Códigos cíclicos y Códigos polinómicos Códigos cíclicos. Subconjunto de los códigos bloque lineales. Pueden ser modelados fácilmente mediante polinomios. Pueden ser implementados con registros de desplazamiento LFSR (Lineal Feedback Shift Register). Un código bloque lineal C es cíclico si: Y = y n- y n-2... y 3 y 2 y y C Y = y n-2... y 3 y 2 y y y n- C Y = y y n- y n-2... y 3 y 2 y C Correspondencia polinómica: Y = y n- y n-2... y 3 y 2 y y Y(D) = y + y D + y 2 D 2 +... + y n- D n- (MPI=Más Peso a la Izquierda) 3/33
Códigos cíclicos y Códigos polinómicos Códigos cíclicos sistemáticos. Y(D) = y + y D + y 2 D 2 +... + y r- D r- + y r D r +... + y n- D n- Y(D) = R(D) + D r X(D) R(D) = D r X(D) mod g(d) k posiciones r D r X(D) D r X(D) = g(d) C(D) + R(D) Y(D) = R(D) + D r X(D) = g(d) C(D) D r X(D) g(d) R(D) C(D) D r X(D) R(D) Y(D) = g(d) C(D) Y(D) mod g(d) = g(d) = polinomio generador, grado r Errores: Z(D) = Y(D) + e(d) S(D) = Z(D) mod g(d) = Y(D) mod g(d) + e(d) mod g(d) = e(d) mod g(d) =, No error, Error Qué errores se detectan? Aquellos cuyo e(d) no sea múltiplo de g(d). 32/33
Códigos cíclicos y Códigos polinómicos Ejemplo. Código cíclico (7, 4) sistemático definido por el polinomio generador g(d) = D 3 + D 2 +. Hallar la palabra código asociada al mensaje de usuario X =. X= X(D) = D 3 + D + Y(D) = R(D) + D r X(D) R(D) = D r X(D) mod g(d) r = n-k = 7-4 = 3 D r X(D) = D 3 (D 3 + D + ) = D 6 + D 4 + D 3 D 6 + D 4 + D 3 D 3 + D 2 + D 6 + D 5 + D 3 D 3 + D 2 D 5 + D 4 D 5 + D 4 + D 2 D 2 = R(D) Y(D) = R(D) + D r X(D) = D 2 + D 6 + D 4 + D 3 = D 6 + D 4 + D 3 + D 2 Y = 33/33