CAPÍTULO 3: CODIFICACIÓN DE CANAL
3.4 Codificación mediante secuencias estructuradas
3.4.3 Códigos de bloques lineales
Los códigos de bloques lineales son una clase de los códigos de verificación de paridad que pueden ser caracterizados por la notación . Cada bloque de bits de mensaje es codificado en un bloque de bits, como se ilustra en la figura 3.7, añadiendo bits de verificación derivados de los bits de mensaje. El bloque de -bits a la salida del codificador del canal se conoce como palabra código, y los códigos (o esquemas de codificación) en donde los bits de mensaje
aparecen al principio de la palabra código son conocidos como códigos sistemáticos. A demás, si cada una de las palabras códigos puede ser
expresadas como combinaciones lineales de vectores código lineales e
independientes, entonces el código es llamado código de bloque lineal sistemático.
La operación de codificación en un esquema de codificación de bloques lineal consiste en dos pasos básicos: 1) La secuencia de información es segmentado en bloques de mensaje; cada bloque consiste en bits de información sucesivos. 2) El codificador transforma cada bloque de mensaje en un bloque más grande de bits de acuerdo con un algún conjunto predeterminado de reglas. Estos bits adicionales son generados por combinaciones lineales de bits de mensaje, y se puede describir las operaciones de codificación usando matrices.
Se denotará el bloque de mensaje como un vector fila o secuencia de -bits donde cada bit de mensaje puede ser 0 o 1. Así, tenemos bloques de mensaje distintos. Cada bloque de mensaje se transforma en una palabra código con una longitud de bits ( ) por el codificador y hay palabras código; una palabra código única para cada bloque de mensaje distinto. Éste conjunto de palabras código distintas, también llamadas vectores código, es denominado código de bloque . La razón de codificación de este código es .
En un código de bloque lineal sistemático, los primeros bits de la palabra código son los bits de mensaje, lo cual es:
(3.12)
Los últimos bits en la palabra código son bits de verificación generados a partir de los bits de mensaje, de acuerdo a alguna regla predeterminada:
Los coeficientes en la ecuación 3.13 son 0’s y 1’s y las sumas son realizadas
en aritmética de módulo-2 ( ) de modo que
las ’s son 0’s y 1’s. Se puede combinar las ecuaciones 3.12 y 3.13 y escribirlas
matricialmente:
(3.14)
O
(3.15)
Donde es la matriz del lado derecho de la ecuación 3.14. La matriz es llamada matriz generadora del código y tiene la forma:
(3.16)
La matriz es la matriz identidad de orden y es una matriz arbitraria ( . Cuando se especifica, define el código de bloques completamente.
Un paso importante en el diseño de un código de bloques es la selección de una matriz de modo que el código generado por tenga ciertas propiedades deseables como facilidad de implementación, habilidad de corregir errores
aleatorios y de ráfagas, alta tasa de eficiencia, y así sucesivamente. Mientras que no exista un procedimiento para seleccionar una matriz que satisfaga todas las limitaciones mencionadas, investigaciones pasadas en la teoría de la información han dado clases especiales de códigos de bloques lineales que poseen muchas propiedades deseables y una cantidad justa de estructura matemática.
El codificador esencialmente tiene que almacenar la matriz (o por lo menos la submatriz de ) y realizar operaciones aritméticas binarias para generar los bits de paridad. La complejidad del codificador incrementa a medida del tamaño del bloque y el número de bits de paridad aumenta.
Una matriz de verificación de paridad es asociada con cada bloque de código
, la cual se define como:
(3.17)
La matriz de verificación de paridad puede ser usada para verificar si una palabra código es generada por la matriz . Esta verificación puede ser hecha como a continuación. es una palabra código en el bloque de código generado por sí y solo sí:
(3.18)
Donde es la transpuesta de la matriz . La prueba de la ecuación 3.18 es simple, al realizar las operaciones en aritmética de módulo-2.
Mientras la matriz generadora es usada en la operación de codificación, la matriz de verificación de paridad es usada en la operación de decodificación, como a continuación. Se considerará un código de bloques lineal con una matriz generadora y una matriz de verificación de paridad
. será considerada un vector código que fue transmitido a través de un canal ruidoso y se considerará como el vector dañado por el ruido que fue recibido. El vector es la suma del vector código original y el vector erróneo , lo que es:
(3.19)
El receptor no conoce ni ; su función es decodificar a partir de , y el bloque mensaje a partir de . El receptor realiza la operación de decodificación determinando un vector definido como:
(3.20)
El vector es denominado síndrome de error de . Se puede reescribir como:
Obteniendo:
Ya que . Así, el síndrome de un vector recibido será cero si es un vector código válido. Si ocurren errores en la transmisión, entonces el síndrome del vector recibido será distinto a cero. A demás, está relacionado al vector erróneo
y el decodificador usa para detectar y corregir errores.
El peso Hamming de un vector código es definido como el número distinto a cero de componentes de . La distancia Hamming entre dos vectores y es definida como el número de componentes en los que ambos vectores difieren. Finalmente, la distancia mínima de un bloque de código es la distancia más pequeña entre un par de palabras código en el código.