You are on page 1of 62

Tcnicas de Deteccin y Correccin de

Errores
Profesora Mara Elena Villapol
mvillap@strix.ciens.ucv.ve

Tcnicas de Deteccin y Correccin de


Errores
Los canales inalmbricos proporcionan los ndices
de error que suelen
en torno a 10-2.
Estas altas tasas de error son el multipath fading
que caracterizan a los canales de radio mvil.
Existen dos aproximaciones para poder tratar este
problema:
Correccin de Error Hacia Adelante (Forward Error
Correction, FEC).
Requerimiento de Repeticin Automtica (Automatic
Repeat Request, ARQ).

Deteccion vs Correccion
Existen tecnicas para detectar errores y
otras para corregir errores.

Redundancia
Para detectar o corregir errores se
necesita agregar cierta redundancia a los
bits de informacin.

FEC
Cdigos de bloques.
Lineales
cclicos

Cdigos convolucionales.

Cdigos para la deteccin de errores


Cada bloque de k bits es codificado con un bloque de
(k+r) bits denominado palabra cdigo (codeword).
La palabra cdigo es la que se transmite.
En el receptor varias cosas pueden pasar:
Si no hay errores, la salida de decodificador es igual al cdigo
original.
Para ciertos errores, el decodificador puede detectar y corregir
los mismos.
Para ciertos patrones de errores, el decodificador puede
detectar el error pero no corregirlo.
Para ciertos errores el decodificador no puede detectar el error y
produce una seal de salida que difiere de la original.

Codificacin por Bloques

Cdigos por Bloques Lineales


Casi todos los cdigos de bloque utilizado
hoy en da pertenecen a un subgrupo
llamado bloque de cdigos lineales.
Un cdigo de bloque lineal es un cdigo
en el que el OR exclusivo (adicin
mdulo-2) de dos palabras de cdigo
vlidas crea otra palabra de cdigo vlida

Deteccin de Errores

Principios de la deteccin de errores

El algoritmo suma r bits al bloque de datos de m bits.


Los k bits en la seal original se transmiten en la palabra cdigo de
(k+r) bits.
La distancia de Hamming, d(v1,v2) se define como el nmero de
bits en los cuales v1 y v2 difieren.
La distancia mnima para una palabra cdigo que consiste de
w1,w2, ws donde s = 2n .
dmin = minij [d(wi,wj)]
Por ejemplo, si v1 = 011011 y v2 = 110001 d(v1,v2) = 3
La funcin de la forma vc = f(vd) donde vd es un vector de data de
m bits y vc la palabra cdigo.
El radio de redundancia (ie redundancia) es r/k.
La tasa del cdigo es k/(k+r) y mide la cantidad adicional de ancho
de banda que se necesita.

Principios de la deteccin de errores


Las siguientes consideraciones se deben tener en el
diseo de un cdigo:
Dado k y r, nos gustara el valor ms grande de dmin.
El codificador debera ser sencillo requiriendo un mnimo de
memoria y tiempo de procesamiento.
Nos gustara un pequeo nmero de extra bits r, para reducir el
ancho de banda.
Nos gustara una gran nmero de extra bits r para reducir la
tasa de error.

Note que los dos ltimos objetivos estn en conflicto y


deben negociarse.

Principios de la deteccin de errores


Para detectar d errores se requiere una
distancia de d+1. Por ejemplo, bit de
paridad.
Para corregir d errores, se requiere una
distancia de 2d+1.

Bit de Paridad
Sumar un bit al final
de un bloque de data.
De forma tal que, el
carcter tiene:
Un nmero par de
unos (paridad par).
Un nmero impar de
unos (paridad impar).

Ventajas:
Simple

Desventajas:
Un nmero par de errores
no se pueden detectar.

Ejemplos (paridad par):

Data = 1110011
Transmite (A)= 11100111
Llega = 11100101
Calculo en el receptor (B) =
11100100
|Distancia A-B| = 2

Chequeo Cclico Redundante (CRC)


Para un bloque de k bits,
el transmisor genera una
secuencia de r bits.
El transmisor transmite
una secuencia de k+r bits,
la cual es exactamente
divisible por un nmero.
La secuencia de r bits se
llama secuencia de
chequeo de trama (frame
check sequence, FCS).

Lgica aritmtica
T = trama de (r+k)
bits, r <k
M= mensaje de k
bits.
F = secuencia FCS
de r bits.
P = divisor con un
patrn
predeterminado.
Tienen r+1 bits.

Chequeo Cclico Redundante (CRC)

El objetivo es que T/P no tenga resto.


Es claro que:
T = 2rM + F
2rM desplaza el mensaje a la izquierda y lo rellena de ceros (0).
Dividir 2rM entre P:
2rM/P= Q + R/P
Usemos R como el FCS
T = 2rM + R y T/P = 2rM /P+ R/P = Q + (R/P + R/P) = Q
As que no hay resto.
Esto es por la suma modulo 2 basada en la operacin OR-exclusivo:
0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0.
Entonces, dividir 2rM entre P y usar el resto como el FCS.

Chequeo Cclico Redundante (CRC)


Se puede demostrar que los siguientes errores
son detectables:
Errores de un bit
Errores de dos bits siempre que P tiene tres trminos
en 1.
Cualquier nmero de errores impares, si el divisor
contiene un factor x+1.
Cualquier error en el cual la longitud del error (en
rfaga) es menor que la longitud del FCS.
La mayora de rfagas largas de error.

CRC: Representacin Polinomial/Ejemplo


M = 1010001101 (10 bits) <->
X9+X7+X3+X2+1
P = 110101 (6 bits) <-> X5+X4+X2+1
FCS = ?
K = 10
n=61=5
Genere el mensaje a ser transmitido.

Lgica Digital
CRC puede ser representado usando un circuito
con compuertas XOR y un registro de
desplazamiento.
El circuito es implementado:
El registro contiene r bits (la long del FCS).
Hay hasta r compuertas XOR.
La presencia o ausencia de una compuerta
corresponde con la presencia o ausencia de un
termino en el divisor polinomial, P(X), excluyendo el
trmino 1 y Xr.

Representacin Digital

P(X)= X5+X4+X2+1

Correccin de Errores

FEC: Principios

El algoritmo FEC suma (n-k) bits al bloque de datos de k bits.


Los k bits en la seal original se transmiten en la palabra cdigo de
n bits.
La distancia de Hamming, d(v1,v2) se define como el nmero de bit
en los cuales v1 y v2 difieren.
Por ejemplo, si v1 = 011011 y v2 = 110001 d(v1,v2) = 3
La funcin de la forma vc = f(vd) donde vd es un vector de data de k
bits y vc la palabra cdigo.
Dentro de un bloque de cdigo (n,k) hay 2K cdigos vlidos de 2n
cdigos posibles.
El radio de redundancia (ie redundancia) es (n-k)/k.
La tasa del cdigo es k/n y mide la cantidad adicional de ancho de
banda que se necesita.

FEC: Principios

La distancia mnima para una palabra cdigo que consiste de


w1,w2, ws donde s = 2n .
dmin = minij [d(wi,wj)]

Las siguientes condiciones se cumplen:


dmin >= 2t+1, el cdigo puede corregir hasta e incluyendo t bits.
dmin >= 2t puede corregir todos los errores <= t-1 bits y los
errores de t bits pueden ser detectados.

Otra forma de expresar esta relacin es:


El mximo nmero de errores corregibles es:
t=[(dmin-1)/2]
[x] el ms grande de los enteros que no excede x.

El mximo nmero de errores que pueden ser detectados es:


t=dmin-1

FEC: Ejemplo
k=2 y n=5
Suponga que se
recibe 00100.
El cual es un cdigo
invlido.
La distancia de
Hamming a cada
cdigo vlido es:

Distancia mnima

Bloque de
datos

Palabra Cdigo

00

00000

01

00111

10

11001

11

11110

FEC: Ejemplo

Obsrvese que si ocurren dos errores no se pueden corregir.

FEC: Principios
Las siguientes consideraciones se deben tener
en el diseo de un cdigo de bloque:
Dado n y k, nos gustara el valor ms grande de dmin.
El codificador debera ser sencillo requiriendo un
mnimo de memoria y tiempo de procesamiento.
Nos gustara un pequeo nmero de extra bits (n-k),
para reducir el ancho de banda.
Nos gustara una gran nmero de extra bits (n-k) para
reducir la tasa de error.

Note que los dos ltimos objetivos estn en


conflicto y deben negociarse.

FEC: Cdigo de Hamming

Diseado para corregir errores de bit simples.


Familia de bloques de correccin de error (n,k) con los siguientes
parmetros:
Longitud del bloque:
n = 2m 1
Nmero de bits de dato: k = 2m m 1
Nmero de bits de chequeo: n k = m
Distancia mnima: dmin = 3

El proceso de codificacin/descodificacin tiene la misma estructura


del FEC.
En el receptor el resultado de la comparacin (XOR de la seal
recibida y otra de la calculada) es realizada.
El resultado se conoce como palabra sndrome.

FEC: Cdigo de Hamming


La palabra sndrome tiene un rango de 2 (nk) 1.
0 indica no error entonces no se cuenta.
Como un error puede ocurrir en los k bits
de data o (n-k) bit de chequeo:
2(n-k) - 1 >= k+(n-k) = n
Esto nos permite calcular el nmero de
bits de chequeo.

FEC: Cdigo de Hamming

Codificacin: k bits de datos + (n -k) bits de chequeo.


Decodificacin: compara los (n-k) bits recibido con los (n -k) bits
calculados bits usando XOR.
Los (n-k) bits resultantes se llaman palabra sndrome.
El rango del sndrome esta entre 0 y 2(n-k)-1.
El sndrome indica:
Si contiene solo 0s, no se han detectados errores.
Si el sndrome contiene un solo bit en 1 entonces un error ha ocurrido
en uno de los bits de chequeo. Por lo tanto, no se requiere correccin.
Si el sndrome contiene ms de un bit en 1, entonces el valor numrico
del sndrome indica la posicin de un bit de data en error. El bit en error
es invertido para su correccin.

FEC: Cdigo de Hamming-Ejemplo


Bloque de datos = 00111001

FEC: Cdigo de Hamming-Ejemplo

Bit con error

Cdigos Cclicos
Pueden ser codificados y decodificados usando
registros (LFSRs).
Para un cdigo cclico, un cdigo vlido (c0, c1,
, cn-1), desplazado hacia la izquierda un bit
(cn-1, c0, , cn-2), es tambin un cdigo vlido.
La entrada de longitud fija (k) toma y produce un
cdigo (n-k).

Cdigos Cclicos

Codificacin: los k bits de data son usados como entrada para


producir un cdigo de chequeo de (n-k) bits.
Decodificacin: la entrada recibe un stream de bits de longitud n (ie
k bits de data seguidos de (n-k) bits de chequeo).
Se procesan los bits recibidos para calcular el cdigo sndrome (en la
misma manera que se calcularon los bits de chequeo).
Si todos los bits del sndrome son cero, no se ha detectado error.
En caso contrario, se ejecuta procesamiento adicional del sndrome
para corregir el error.

Cdigos Cclicos
Parmetros:
T = trama de n bits que se transmite.
D = data de k bits de longitud (los primeros k bits de
T).
P = patrn de (nk+1) bits predeterminados.
Q = Cociente.
C = Resto.

Representacin polinomial: los coeficientes


corresponden a los bits en el nmero binario.
Ejemplo,
P(X) = 1 + I=1n-k-1AiXi + X n-k

Cdigos Cclicos
Para que T/P no tenga resto entonces
comenzar por:
T(X) = Xn-kD(X) + C(X)
Si se divide Xn-kD(X) entre P(X) el
resultado da un cociente y un resto:
Xn-kD(X)/P(X)= Q(X) + C(X)/P(X)

Cdigos Cclicos
Si uno o ms errores ocurren el bloque recibido
tendr la forma:
Z(X) = T(X) + E(X)
E(X) es el polinomio de n bits con un 1 en cada
posicin de bit que es un error en Z(X).
Si se pasa Z(X) por el mismo LFSR se tiene:
Z(X)/P(X)= B(X) + S(X)/(P(X)
S(X) es el sndrome de longitud (n-k) bits.

Cdigos Cclicos
Se puede demostrar que E(X)/P(X) produce el mismo
resto que Z(X)/P(X) es decir S(X)/P(X).
Z(X)/P(X) = B(X)+S(X)/P(X)
(T(X)+E(X))/P(X) = B(X) + S(X)/P(X)
Q(X)+E(X)/P(X) = B(X) + S(X)/P(X)
E(X)/P(X)=[Q(X)+B(X)]+ S(X)/P(X)

Entonces S(X) depende solo de los bits de error.


As que los bits de error se pueden corregir usando un
suma simple:
Z(X) + E(X) = T(X) + E(X) + E(X) = T(X)

Cdigos Cclicos: Ejemplo


Cdigo (7,4), es decir, n=7, k=4, n-k =3.
P(X) = X3+X2+1 1101.
Para que un cdigo se capaz de corregir errores
simples:
n<= (2n-k-1)
Ya que n=7 = 23-1=7 este cdigo es capaz de
corregir un error.
Ver tabla (a) a continuacin, note que la
distancia mnima es 3, entonces se confirma lo
anterior de acuerdo lo que se muestro
anteriormente.

Cdigos Cclicos: Ejemplo

Cdigos Cclicos: Ejemplo


Para cada patrn de error E(X) calcular el sndrome
S(X).
Proceder como se muestra a continuacin para cada
patrn de error.
As se obtiene la tabla (b) en la lmina anterior.

E(X)=X6

110

Cdigo BCH
Para un par de enteros positivos m y t un cdigo
BCH (n,k) tiene los siguientes parmetros:
Longitud del bloque: n = 2m 1
Nmero de bits de chequeo: n k mt
Distancia mnima: dmin >= 2t + 1

Corrige combinaciones de t o menos errores.


Permite gran flexibilidad en la eleccin de los
siguientes parmetros
Longitud del bloque y tasa del cdigo

Cdigo Reed-Solomon
Sub clase de lo cdigos BCH.
La data es procesada en trozos de m bits,
llamados smbolos.
Un cdigo RS (n,k) tiene los siguientes parmetros:

Longitud del smbolo: m bits por smbolo


Longitud del bloque: n = 2m 1 smbolos = m(2m 1) bits
Longitud de la data: k smbolos
Tamao del cdigo de chequeo: n k = 2t smbolos =
m(2t) bits
Distancia mnima: dmin = 2t + 1 smbolos

Cdigo Reed-Solomon: Ejemplo


Sea t=1 y m=2. Denotemos los smbolos
0,1,2,3 que se pueden escribir en forma
binaria como 0=00, 1=01, 2=10 y 3=11. El
cdigo tiene los siguientes parmetros:
n= 22-1 = 3 smbolos = 6 bits
(n-k) = 2 smbolos = 4 bits

Este cdigo puede corregir una rfaga de


errores que se expande en un smbolo de
2 bits

Intercalamiento de bloques

La data es escrita y leda de la memoria en ordenes diferentes.


Una tcnica muy comn consiste en almacenar la data para ser
transmitida en arreglos rectangulares en los cuales cada fila
consiste de n bits.
La data es leda por columnas.
Los bits de datos y bits de chequeo son expandidos y salpicada con
los bits de otros bloques.
En el receptor la data es des intercalada para recuperar el orden
original.
Si errores por rfagas ocurren, el error es expandido sobre un
nmero de bloques haciendo posible la correccin.

Cdigos Convolucionales

Generan bit redundantes continuamente.


Chequeo y correccin de errores realizados continuamente.
Cdigo representado como (n, k, K).
El proceso de entrada procesa k bits en un determinado tiempo.
La salida produce n bits por cada k bits de entrada.
K = factor de restriccin
k y n generalmente muy pequeos.
La salida de n bits del cdigo (n,k,K) depende de:
Bloque en curso de k bits de entrada.
Los K-1 bloques previos de k bits de entrada.

La tasa de un cdigo convolucional es k/n.

Codificacin

un-1,un-2

Cdigos Convolucionales: Codificacin


Existen varias maneras de representar
grficamente un codificador convencional:
rbol de cdigo.
Enramado (trellis).
Diagrama de Estado.

Cdigos Convolucionales :
Descodificacin
El cdigo de Viterbi es uno de los ms importantes
algoritmos de correccin para los cdigos
convolucionales.
Cdigo de Viterbi algoritmo de correccin:
Compara la secuencia recibida con todas las posibles
secuencias transmitidas.
El algoritmo elige el camino a travs del diagrama de enramado
cuya posible secuencia transmitida difiere en el menor nmero
de sitios.
Una vez una camino vlido es seleccionado como el camino
correcto, el decodificador puede recuperar la data de entrada de
los bits del cdigo de salida.

Diagrama de Enramado del Codificador en la


Figura Previa

Cdigos Convolucionales : Descodificacin


Existen diversa variaciones del algoritmo
de Viterbi.
Ellas dependen de la mtrica usada para
medir las deferencias entre las
secuencias recibidas y las secuencias
validas.
Una de las mas comunes es usar la
distancia de Hamming.

Cdigos Convolucionales : Descodificacin


El algoritmo opera de la siguiente manera:
El algoritmo procede en pasos o niveles, j.
M<=j<=L, M= K-1 (memoria del codificador, L es la long
de la secuencia del mensaje entrante.
En cada nodo del enramado se comparan las dos
trayectorias (path) que entran al nodo.
Se retiene la trayectoria con menor mtrica.
Estas trayectorias se llaman sobrevivientes o activas.

Cdigos convolucionales : Descodificacin


Paso por paso el algoritmo opera de la siguiente
manera:
Paso (nivel) 0:
Se marca como 0 el estado ms a la izquierda del
enramado.
Pues en este punto no hay discrepancia.
Se identifican todas las trayectorias sobrevivientes.
Se almacenan las trayectorias sobrevivientes y su
mtrica para cada estado del enramado.

Cdigos Convolucionales : Descodificacin


Paso (nivel) j+1:
Se calcula la mtrica para todas las trayectorias que
entran en cada estado del enramado.
Esto consiste en la suma del la mtrica de las
ramas entrantes a las mtrica de la trayectoria
sobreviviente conectora desde el paso j.
Se identifican todas las trayectorias sobrevivientes (la
trayectoria con la mtrica ms baja).
Se almacenan las trayectorias sobrevivientes y su
mtrica para cada estado del enramado.

Cdigos Convolucionales : Descodificacin


Paso final:
Continua el calculo hasta que el algoritmo completa su
bsqueda hacia delante.
Si la secuencia recibida es muy grande (casi infinita) el
requerimiento de memoria para el algoritmo pude ser alto.
Para solventar el problema se establece una ventana de
descodificacin.
Esta tiene una longitud b.
El algoritmo se interrumpe despus de b pasos.
Se toma un decisin con respecto a la mejor trayectoria y se
libera al usuario el smbolo asociado con la primera de rama de
esa trayectoria.
Se mueve la ventana un intervalo de tiempo y se toma una
decisin sobre la siguiente trama.

Otro
Ejemplo

Dmin (00,01) = 1
Dmin (11,01) = 1

00

n = 2, k=1, K=3
Tasa del cdigo 1/2

11
(Dmin (00,00) = 0)+1 =1
(Dmin (11,00) = 2)+1=3
(dmin(10,00)=1)+1=2
(dmin(01,00)=1)+1=2

10
01

Secuencia enviada
0000000
Secuencia recibida
0100010000

Secuencia enviada
0000000
Secuencia recibida
1100010000

Decodificacin
incorrecta de la
secuencia de
puros ceros
recibidas

Revisar este Link


http://www.brianjoseph.com/viterbi/worksh
op.htm

You might also like