You are on page 1of 36

DEPARTAMENTO DE

INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
5. Códigos de control de errores
La codificación es el estudio de los códigos de corrección de errores,
que se emplean para transmitir información en presencia de ruido.
•Sus rangos de aplicación van desde las comunicaciones de espacio
profundo a la recuperación de la pérdida de paquetes en Internet.
•Parte del fondo matemático, p. ej., teoría de números ó álgebra
sobre campos finitos, también tiene un impacto sobre la teoría de la
complejidad y la criptografía.
Se usan dos técnicas: Codificación de bloque y convolucional
Codificación de bloque:
Códigos cíclicos: Reed Solomon (RS), BCH
Codificación convolucional
Codificación Trellis




DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Introducción a la teoría de la codificación
El propósito de la corrección de errores hacia adelante (Forward Error
Correction - FEC) es mejorar la capacidad de un canal de
transmisión, agregando a los datos de origen alguna información
redundante cuidadosamente diseñada.
Para cada uno de ellos existe muchos tipos de codificación así como
algoritmos de decodificación.
Se debe tomar en cuenta que el esquema de la FEC debe tomar en
cuenta tres aspectos principales:
1. Construcción
2. Codificación
3. Decodificación
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Introducción a la teoría de la codificación
La construcción es la creación de un código inteligente que satisfaga
un conjunto limitado de parámetros de código.
La codificación está relacionada con el transporte del mensaje fuente a
un código especial.
La decodificación es la elección de una de las palabras de código
posibles de las muestras recibidas en receptor a través de un
algoritmo apropiadamente seleccionado.
Objetivo definido: lograr la frontera de Shannon.
Las métricas para evaluar el progreso hacia este objetivo son:
la relación de señal a ruido (SNR)
el performance del error y
la complejidad computacional.

DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Teoría de la codificación
También llamada teoría de codificación algebraica,
Nace para diseñar códigos para una transmisión segura de información
vía canales ruidosos (teorema de Shannon).
Desde 1950, cuando se introdujeron los primeros códigos de
corrección de errores, la teoría de codificación ha usado:
técnicas algebraicas clásicas/modernas de campos finitos,
teoría de grupos y polinomios,
matemática discreta,
teoría de números
Sin embargo, casi todos los códigos se basan en la noción del campo.

DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Codificación de canal
Bits redundantes: son bits añadidos a los bit de información, los
cuales son usados por el receptor para detectar y corregir errores.
Esta técnica se conoce como corrección de errores hacia adelante
(Forward Error Correction - FEC).
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Velocidad de código
La velocidad de código r
c
, esta definida por:



La notación del código es (n, k).
Por ejemplo un código que contiene una palabra de datos de
4 bits en una palabra de código de 7 bits será un código (7,4).
Su velocidad de código será: r
c
= 4/7


n
k
r
c
=
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos lineales en bloque
Un código de bloque requiere que un mensaje sea particionado
en bloques de bits.
Un bloque tiene k bits, los cuales definen una palabra de datos
(data word).
Entonces, el número de palabras de datos (data words) es de 2
k

Luego, las palabras de datos son codificadas en palabras de código
(code words), cada una de n bits.
El número posible de palabras de código (code words), es de 2
n
,
pero sólo se emplean 2
k
, las cuales serán transmitidas.
Los n-k bits adicionales son denominados como bits de chequeo de
paridad

DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Palabra de código en forma sistemática
Bits de
redundancia
de chequeo
Mensaje
K dígitos n-k dígitos
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Código de repetición
Un código de repetición muestra algunas de las propiedades de los
códigos de bloque.
En un código de repetición cada bit es una palabra de datos:
K = 1
Para una codificación de redundancia n, la salida del codificador será
de n bits idénticos al bit de entrada.
Considerando el caso de n = 3
Si se transmite el bit 1, la salida será la palabra de código 111
Si se transmite el bit 0 la palabra de código será 000
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Código de repetición
Si se usa el FEC, se llevará a cabo sobre el voto mayoritario
El decodificador interpretará como 1 a las palabras de código 111, 101,
011, 110.
Como un asunto de definición, un código es lineal si la combinación de
dos palabras de código también es una palabra de código. Se
emplea la operación lineal de adición en módulo 2 (XOR)
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Distancia de Hamming
La distancia de Hamming entre dos palabras de código esta definida
como el número de posiciones en las cuales estas palabras de
código difieren.
Cuanto menor sea la distancia entre dos palabras de código, el código
será mejor. En el código siguiente la distancia mínima es 2.

DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Matrices empleadas en códigos
Una palabra de datos de tamaño k, esta denotada por un vector fila
d. Por ejemplo la sexta palabra de datos en la tabla es
d6 = [101] y su palabra de código es el vector fila c6 = [1010]

DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Matrices empleadas en códigos
• En general, una palabra de código es generada desde una palabra
usando una matriz generadora denotada por G, donde: c = dG.
• Un ejemplo de matriz generadora para el código (7,4) es:

(
(
(
(
¸
(

¸

=
1 1 0 1 0 0 0
1 0 1 0 1 0 0
0 1 1 0 0 1 0
1 1 1 0 0 0 1
G
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Generación de una palabra de código
• La primeras 4 columnas forman una matriz identidad.
• Esta submatriz permite que los primeros 4 bits de la palabra
de código, correspondan a la palabra de datos.
• Los bits restantes son responsables de generar los bits de
paridad desde lo bits de datos.
• Como ejemplo generemos la palabra de código desde la
palabra de datos [1010].

| |
| | 0 1 0 0 1 0 1
1 1 0 1 0 0 0
1 0 1 0 1 0 0
0 1 1 0 0 1 0
1 1 1 0 0 0 1
0 1 0 1
=
(
(
(
(
¸
(

¸

=
C
C
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Submatriz P y su transpuesta
Las 3 últimas columnas forma la submatriz denotada por P (Parity bits):




Y su transpuesta es P
T
:




(
(
(
(
¸
(

¸

=
1 1 0
1 0 1
0 1 1
1 1 1
P
(
(
(
¸
(

¸

=
1 1 0 1
1 0 1 1
0 1 1 1
T
P
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Matriz de chequeo de paridad H
La matriz H esta formada por la inclusión de la matriz identidad
a la matriz P
T
.



• El número de filas en H es igual al número de bits de paridad
n-k, y el número de columnas es n, de tal manera que la matriz
de chequeo de paridad es una matriz de (n-k, n).
• Una propiedad fundamental de las matrices de código es:
GH
T
= 0




(
(
(
¸
(

¸

=
1 0 0 1 1 0 1
0 1 0 1 0 1 1
0 0 1 0 1 1 1
H
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Matriz de chequeo de paridad H
Cuando se recibe una palabra de código, esta puede ser verificada si es
correcta al multiplicarla por H
T
.
El producto cH
T
debe ser igual a 0.
Esto es una consecuencia desde que c = dG y de allí: cH
T
= dGH
T
=
0.
Si el resultado no es cero, es que se ha recibido un error.
En términos generales, el producto cH
T
proporciona lo que es
conocido como un síndrome, y esta denotado por s:
s = cH
T


DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Síndrome ¨s¨
De manera general, si se recibe una palabra de código c
R
y la
palabra de código transmitidas es c
T
y el vector error es e, usando
la adición módulo 2 tenemos:
c
R
= c
T
+ e
Sustituyendo c en la ecuación s = cH
T
tenemos:
s = (c
T
+ e) H
T
= c
T
H
T
+ e H
T
pero c
T
H
T
= 0, entonces:
s = eH
T
Este resultado muestra que el síndrome depende sólo del error
vector y es independiente de la palabra de código transmitida.
Como el vector error tiene n bits, serán posibles 2
n
vectores de
error.

DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Síndrome ¨s¨
El síndrome solo tiene n-k bits (determinado por el número de filas
de la matriz H, lo cual nos da 2
n-k
síndromes. Como uno de estos es
el síndrome cero, el número de errores que puede ser detectado es
2
n-k
-1.
En la práctica los decodificadores están diseñados para corregir los
errores de mayor probabilidad, por ejemplo aquellos con un solo
bit de error.
El síndrome recibido es comparado con los valores de una tabla de
tabulación de los patrones de error conocidos, y se halla al error
mas probable.
Esto se conoce como decodificación de máxima probabilidad.
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Ejemplo de corrección de un solo error
Supongamos que se transmite la palabra de código [1010010]. Pero
ocurre un error en el quinto bit (contando de la izquierda), de tal
manera que la palabra de código recibida es [1010110]. Aplicando
la ecuación: s = cH
T



| |
| | 0 0 1
1 0 0
0 1 0
0 0 1
1 1 0
1 0 1
0 1 1
1 1 1
0 1 1 0 1 0 1
=
(
(
(
(
(
(
(
(
(
¸
(

¸

=
s
s
El síndrome [100] corresponde a la quinta columna de la matriz H y nos
indica que el quinto bit esta errado. Este bit se cambia y corrige el error.
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos cíclicos
Estos códigos son una subclase de los códigos de bloque lineales.
Poseen la propiedad que un desplazamiento cíclico de una palabra de
código también es una palabra de código.
Ejemplo:
Una palabra de código tiene los elementos {c
1
c
2
c
3
c
4
c
5
c
6
c
7
}, entonces
{c
2
c
3
c
4
c
5
c
6
c
7
c
1
} es una palabra de código.
Son implementados con registros de desplazamiento.
Se emplean en transmisión satelital y como un código es una invención,
los códigos son nombrados por sus inventores.
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos cíclicos: Códigos Hamming
Para un entero m mayor ó igual a 2, los valores de k y n están
relacionados por: n = 2
m
-1 y k = n - m.
Conforme la velocidad de código rc = k/n se aproxima a la unidad m
se incrementa lo cual hace mas eficiente al código. Sin embargo,
solo se puede corregir un solo error.
Algunas de las combinaciones permisibles son:




DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos cíclicos: Códigos BCH
BCH (Bose, Chaudhuri y Hocquenghen).
Pueden corregir hasta t errores y m puede ser cualquier entero
positivo y los valores permisibles son: n = 2
m
-1 y k mayor ó igual = (n –
mt). Los enteros m y t son arbitrarios lo cual brinda flexibilidad al
diseñador de códigos.
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos cíclicos: Códigos R-S
R-S: Reed-Solomon
Se emplean con errores que ocurren en ráfagas.
En lugar de codificar directamente en bits, los bits primero son
agrupados en símbolos y las palabras de datos y las palabras de código
son codificadas en estos símbolos.
Lo errores que afectan a un grupo de bits es mas probable que afecten
a solo un solo símbolo, el cual puede ser corregido por el código R-S.

DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos cíclicos: Códigos R-S
Sea el número de bits por símbolo k y el número de posibles símbolos
q = 2
k
.
Sea K el numero de símbolos por palabra de datos y N el número de
símbolos por palabra de código.
De manera similar que en los códigos de bloque, en R-S las palabras de
datos de K símbolos son mapeadas en palabras de códigos de N
símbolos.
Los símbolos N-K redundantes son derivados de los símbolos del
mensaje pero no son parte del mensaje.
El número posible de palabras de código es 2
N
pero solo 2
K
de estos
contendrán palabras de datos y estos serán los únicos a ser
transmitidos.


DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos cíclicos: Códigos R-S
Las reglas de diseño de los códigos R-S son:
q = 2
k
N = q – 1
2t = N - K
Donde t = número de símbolos con error que pueden ser corregidos.
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Ejemplo: Códigos R-S
Las reglas de diseño de los códigos R-S son:
K = 2 entonces q = 4 y estos cuatro símbolos son etiquetados como A, B,
C y D.
En términos de símbolos binarios (bits) se tendría que A = 00, B = 01,C =
10 y D = 11
El número de símbolos por palabra de código es N = q – 1 = 3
Supongamos que t = 1 entonces la regla 2t = N- K da K = 1.
Es decir habrá un solo símbolo por cada palabra de datos.
El número de palabras de datos es q
K
=4 (es decir A, B, C y D)
El número de palabras de código es q
N
=4
3
= 64
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos de convolución
Estos son códigos lineales.
Un codificador de convolución consiste en un registro de
desplazamiento que provee almacenamiento temporal y operación de
desplazamiento para los bits entrantes y una circuitería de puertas OR-
Ex generarán una salida codificada desde los bits que están
almacenados en ese momento en el registro de desplazamiento.
En general, los K bits de datos puede ser desplazados en el registro a la
vez, y se generarán n bits de código. En la práctica k = 1 y n = 2,
obteniéndose un código de r
c
=1/2.
El registro esta cargado con 0s binarios. La entrada es Rb bits.
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Codificador convolucional de tasa r
c
= 1/2
Datos
de
entrada
Salida
codificada
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Diagrama de árbol
del codificador r
c

= ½

Entrada: 1001
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Diagrama de árbol
del codificador r
c

= ½

Entrada: 1001
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Diagrama de rejilla
(trellis) del
codificador r
c
= ½

Entrada: 1001

(n, k, L)
(2, 1, 2)

L = número de bits
de estado
Estado actual Salida Próximo estado
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Diagrama de rejilla (trellis) del codificador rc = ½ Entrada:
1001 (n, k, L) (2, 1, 2) L = número de bits de estado
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Decodificación
Decodificación de Viterbi (máxima verosimilitud)
Decodificación secuencial
Decodificación de realimentación (feedback decoding)
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Códigos concatenados
Los códigos para corregir errores de ráfaga se combinan con códigos
para corregir errores aleatorios en un proceso de concatenación
Código R-S
Código
convolucional
Código
convolucional
Código R-S
DEPARTAMENTO DE
INGENIERÍA
SECCIÓN DE INGENIERÍA DE
LAS TELECOMUNICACIONES
Gráfica de BER versus Eb/No para señales codificadas
y no codificadas