Vous êtes sur la page 1sur 19

UNIVERSIDAD CENTRAL DE VENEZUELA

Facultad de Ciencias
Postgrado en Ciencias de la Computacin
Lecturas de Docencia

Fundamentos de la Tecnologa
Inalmbrica: Tcnicas de Correccin y
Deteccin de Errores

Profesora Agregado Maria Elena Villapol

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Noviembre del 2006.

2 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

1. Tcnicas de Control de Errores en Redes Inalmbricas


Las tcnicas de control de errores incluyen aquellas para detectar
y/o corregir errores. Las aproximaciones ms comunes son:

Cdigos para la deteccin de errores, tales como Chequeo de


Paridad y Chequeo Cclico Redundante (Cyclic Redundancy Check,
CRC): son capaces de detectar la presencia de errores en una
secuencia de bits ms no pueden corregirlos. Ellos confan en tcnicas
tales como la de Requerimiento de Repeticin Automtica y
Retransmisiones para el tratamiento de tramas con errores.
Cdigos para la correccin de errores, entre los que se encuentran:
Cdigos para la Correccin de Errores de Bloque, Cdigo de Hamming,
Cdigos Cclicos, Cdigos BCH, Intercalamiento de Bloques, Cdigos
Convolucionales, Codificacin Turbo,
son usualmente usados en
ambientes de comunicacin inalmbricas, dada su propiedad de poder
detectar y corregir algunos errores, lo que reduce el uso de
retransmisiones que pueden ocasionar mucho overhead en ste tipo de
enlaces, caracterizados por tener poco ancho de banda.
Requerimiento de Repeticin Automtica (Automatic Repeat
Request, ARQ): incluyen tcnicas para la retransmisin de tramas no
reconocidas despus de cierto intervalo de tiempo.

1.1.

Principios Generales de la Correccin y Deteccin de Errores

Cada bloque de m bits es codificado con un bloque de (m+r) bits


denominado palabra cdigo (codeword). El algoritmo suma r bits al bloque
de datos de m bits con la finalidad de poder detectar o incluso corregir
errores. 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.

Adicionalmente, se puede medir la cantidad de bits en las cuales dos


secuencias difieren. Esta es conocida como la distancia de Hamming, d.
As, d(v1,v2) se define como el nmero de bits en los cuales las siguientes
secuencias, v1 y v2, difieren. La distancia mnima para una palabra cdigo
que consiste de w1,w2, ws donde s = 2n.
d min min i j d ( wi , w j )

3 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Por ejemplo, si v1 = 011011 y v2 = 110001, entonces d(v1,v2) = 3


Para detectar d errores se requiere una distancia de d+1. Para
corregir d errores, se requiere una distancia de 2d+1 [3].
El radio de redundancia (o solamente redundancia) es r/m. Mientras
que la tasa del cdigo es m/(m+r) y mide la cantidad adicional de ancho
de banda que se necesita.
1.2.

Deteccin de Errores

A continuacin se describir una tcnica muy comn para la


deteccin de errores en sistemas de comunicacin, tal como lo es el
Chequeo Cclico Redundante (CRC). Otra tcnica ampliamente conocida es
el chequeo de paridad, la cual no es descrita en este documento, pero
cuya descripcin puede ser encontrada en [3].
1.2.1. Chequeo Cclico Redundante (CRC)
Para un bloque de k bits, el transmisor genera una secuencia de n
bits. El transmisor transmite una secuencia de k+n bits, la cual es
exactamente divisible por un nmero. La secuencia de n bits se llama
secuencia de chequeo de trama (Frame Check Sequence, FCS).
Sea T la trama de (n+k) bits, n <k, M el mensaje de k bits, F la
secuencia FCS de n bits y P el divisor con un patrn predeterminado, cuya
longitud es n+1 bits. Para obtener la FCS se debe multiplicar 2n por M (es
decir 2nM) y dividirlo (divisin modulo 2) por el generador polinomial P. El
resto de dicha divisin se enva en la trama como el FCS. En el receptor se
debe realizar la misma operacin, sobre M, la cual es la trama recibida.
T, M y P puede ser representados en forma polinomial, usando una
variable X, con los coeficientes binarios. Los coeficientes se corresponden
con los bits en el nmero binario.
El CRC puede ser implementado usando un circuito con compuertas
XOR y un registro de desplazamiento de la siguiente forma:

El registro contiene n bits (la longitud del FCS)


Hay hasta n 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 Xn.

El siguiente un ejemplo de cmo funciona CRC:


M (mensaje) = 1010001101 (10 bits) (representacin polinomial es
D(X) = X9+X7+X5+X2+1)
P (generador polinomial) = 110101 (6 bits) (P(X) = X5+X4+X2+1)
4 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

As, n+k = 15, k= 100 y n = 5.


25M= 101000110100000 y es dividido entre P de la siguiente
manera (ver Ilustracin 1):

1101010110 (Q)
_______________
110101 /101000110100000
110101
--------111011
110101
----------111010
y entonces:
110101
T: 101000110101110
----------FCS
111110
110101
----------101100
110101
----------110010
110101
----------01110 (R )

Ilustracin 1: CRC: Ejemplo

Se suma mdulo 2 el resto, R, a 101000110100000, dando como


resultado.
+

101000110100000 01110 = 101000110101110

=T
La trama T es la que se enva. Si no hay errores cuando la trama T es
recibida y dividida entre P, el resto debera ser 0.
La Ilustracin 2 muestra el circuito digital representado en el
ejemplo anterior
entrada

Registro de desplazamiento de un bit

Circuito OR Exclusivo

Ilustracin 2: Circuito digital el divisor polinomial P(X) =


X5+X4+X2+1.
5 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

1.3.

.
Cdigos de Correccin de Errores por Bloque

Las tcnicas de deteccin de errores combinadas con las tcnicas de


ARQ son inadecuadas en ambientes inalmbricos porque:

La tasa de error de bit es alta.


En algunos casos, como lo son los satlites, el retardo de
propagacin es largo comparado con el tiempo de transmisin de
una trama.

Codificador
FEC

n b its

c o d e w o rd

d a ta

k b its

Por lo tanto seria deseable que un sistema fuera capaz de corregir


errores contenidos en una transmisin. Un esquema de cmo esto podra
ser realizado se muestra en Ilustracin 3. El codificador FEC (Correccin
de Error Hacia Adelante) suma (n-k) bits al bloque de datos de k bits. Los k
bits en la seal original se transmiten en la palabra cdigo (codeword) de
n bits (Ver Ilustracin 3). Dentro de un bloque de cdigo (n,k) hay 2K
cdigos vlidos de los 2n cdigos posibles. El radio de redundancia (es
decir, redundancia) es (n-k)/k. La tasa del cdigo es k/n y mide la cantidad
adicional de ancho de banda que se necesita.

No hay error
o es corregible

d a ta

c o d e w o rd

Emisor

Codificador
FEC

Indicacin del
error

Error detectado pero no


corregible

Receptor

Ilustracin 3: Proceso de FEC.


Otra definicin importante cuando se esta trabajando con los
cdigos de deteccin de errores por bloques es la distancia mnima, d min,
(ver Seccin 1.1), la cual es determinada como se muestra a continuacin:
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 se da a continuacin. El
mximo nmero de errores corregibles es:

6 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

t d min 1 / 2

Eq 1.1

Donde [x] el ms grande de los enteros que no excede x.


El mximo nmero de errores que pueden ser detectados es:

t d min 1

Eq 1.2

Para ilustrar lo antes expuesto se presenta un ejemplo. En el


siguiente ejemplo se tiene que k=2 y n=5. La Tabla 1 muestra la relacin
entre el bloque de datos y la palabra cdigo (es decir, las palabras
vlidas). La distancia mnima entre los cdigo vlidos, es decir, d min
(00000, 00111, 11001, 11110) es 3 (ver Seccin 1.1), por lo tanto el
nmero de errores que se puede corregir es t = 1 y detecta errores de 2
bits (ver Eq 1.1 y 1.2).

Bloque de datos
Palabra cdigo
00
00000
01
00111
10
11001
11
11110
Tabla 1: Relacin de la secuencia de datos con la palabra cdigo
Ahora, suponga que se recibe la siguiente secuencia 00100, la cual
es un cdigo invlido (ya que no est en la Tabla 1). La distancia de
Hamming desde dicha secuencia a cada cdigo vlido es:
d(00000,00100) = 1 (distancia mnima); d(00111,00100) =2;
d(11001,00100)=4; d(11110,00100)=3
Ya que la distancia mnima es uno, que significa que existe un
cambio en un bit de la secuencia, debera ser posible corregir el error,
buscando la palabra cdigo cuya distancia a la secuencia recibida es 1. En
este caso la palabra cdigo que cumple tal condicin es la 00000 y la
palabra transmitida es 00. Este hecho se puede observar en la Ilustracin
4.
Ahora, si la secuencia recibida es 01010, la distancia mnima a las
palabras cdigos es de 2:
d(00000,01010) = 2 (distancia mnima); d(00111, 01010) =3;
d(11001, 01010)=3; d(11110, 01010)=2 (distancia mnima)

7 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Ilustracin 4: Ejemplo de FEC (tomado de [1]).


Por lo tanto, el error puede ser detectado, pero no puede ser
corregido porque, como se ve en la Ilustracin 4 (observar cdigos en el
rectngulo), dicha secuencia recibida puede corresponderse a dos
palabras cdigos vlidas y no hay forma de conocer cual de ellas es.
1.3.1. Cdigos Cclicos
Los cdigos cclicos son cdigos de correccin de errores por bloques
que siguen los principios generales enunciados anteriormente. Los mismos
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). A continuacin
se describe el procedimiento de codificacin/descodificacin:

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


producir un cdigo de chequeo de (n-k) bits (siguiendo el mismo
procedimiento explicado en la seccin 1.2.1).
Decodificacin: la entrada recibe un stream de bits de longitud n (es
decir, k bits de data seguidos de (n-k) bits de chequeo). Se procesan los
bits recibidos para calcular el cdigo sndrome (de 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.
Ejemplo: Los siguientes parmetros se utilizan en la explicacin:
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
8 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Q = Cociente
C = Resto
Sea un cdigo (7,4), es decir, n=7, k=4, n-k =3. P(X) = X 3+X2+1
1101.
Para que un cdigo sea capaz de corregir errores simples:
n<= (2n-k-1) (ver [1])
Ya que n=7= 23-1 este cdigo es capaz de corregir un error. La
Ilustracin 5 muestra todas las palabras cdigos generadas usando el
polinomio P(X) = X3+X2+1 y el procedimiento descrito en la Seccin 1.2.1.
Por ejemplo, el procedimiento para calcular la palabra cdigo asociado al
bloque de datos D=0000, fue multiplicar 23M = 0000000. Este resultado se
divide mdulo 2 entre P(X). Esto da como resto R= 000. Por lo tanto la
palabra cdigo es 0000000000. As se continua con cada uno de los
bloque de data.
Note en la Ilustracin 5 que la distancia mnima entre las palabra
cdigos es de 3. Lo que confirma que solo se puede corregir un error (usar
Eq 1.1).

Ilustracin 5: Palabras cdigos vlidas para el ejemplo.


Desde que solo un error puede ser corregido, los patrones de error
(E(X)) posibles se muestran en la Ilustracin 6. En este caso, el bit en uno
(1) indica que se ha producido un error en esa posicin del stream de
datos. Entonces, para cada patrn de error E(X) calcular el sndrome S(X)
(ver Ilustracin 6). Para ello se debe dividir, mdulo 2, E(X) entre el
polinomio P(X). El resto es el sndrome [1].

9 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Ilustracin 6: Sndromes para errores simples.


Suponga que se recibe el bloque de data Z(X) = X 6+X5+X3+X2+1
(1101101). Decodificar Z(X), dividindolo entre P(X). Si el resto es 0 no
hay errores. En caso contrario, buscar el resto, S(X), en tabla de la
Ilustracin 6. En este caso el resto es, S(X) = X 2+1 (101), por lo tanto E(X)
= X3 (0001000). Para obtener la palabra correcta, se realiza la +suma lgica
(mdulo 2) de Z e E, es decir T =Z E. Se busca el resultado, T, en la tabla
de la Ilustracin 5 para obtener el bloque de datos. En este caso,
T=Z

E = 1101101+

0001000 = 1100101

Por lo tanto, el bloque de datos transmitido es 1100.


1.3.2. Cdigo de Hamming
Est diseado para corregir errores de bit simples. Los cdigos de
Hamming son una familia de bloques de correccin de error de (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 realizado, dando como resultado lo que
se conoce como palabra sndrome.
1.3.2.1.Codificacin
A los k bits de datos se le suman los (n -k) bits de chequeo. Como
un error puede ocurrir en los k bits de datos o en los bits de chequeo, se
tiene que la siguiente relacin se mantiene (ver [1]):
2(n-k) - 1 >= k+(n-k) = n
Esto nos permite calcular el nmero de bits de chequeo. As, por
ejemplo, para un bloque de datos de k=8 bits, se requieren 4 bits de
chequeo (es decir, n-k=4.
10 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Para el clculo de la palabra cdigo a ser enviada se deben seguir


los siguientes pasos:

Los bits de datos y de chequeo se reorganizan como se describe a


continuacin:
o Partiendo de la posicin menos significativa (mas a la
derecha), los (n-k) bits de chequeo de Hamming se insertan
en las posiciones que son potencias de 2 (es decir,
posiciones 1,2, 4, 2(n-k)).
o Los bits restantes son bits de datos.
Para calcular los valores de los bits de chequeo se tiene que, para
cada uno de los bits de datos que tienen un valor de 1, se debe
representar su posicin en binario. Por ejemplo, si el bit en la
novena posicin tiene un valor de uno, su posicin es
representado como 1001.
Todos lo valores posicinales calculados anteriormente son
relacionados usando un XOR.

Por ejemplo, asuma que se tiene un bloque de datos 00111001.


Entonces se tiene que hay k = 8 bits de datos y (n-k) = 4 bts de chequeo.
Los cuales se insertan como se muestra en la Ilustracin 7 (ver fila de
check bit). Tambin se puede observar que cuatro de los bits de datos
tienen el valor de 1 (estn sombreados en la ilustracin) y por lo tanto los
valores de sus posiciones han sido relacionados usando la funcin del XOR
(ver tabla (b) de la ilustracin). El cdigo de Hamming resultante es 0111
y el bloque transmitido es 001101001111.

Ilustracin 7: Ejemplo del clculo del cdigo de Hamming (tomado


de [3]).
11 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

1.3.2.2.Descodificacin
El receptor compara los (n-k) bits recibido con los (n -k) bits
calculados bits usando la funcin 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.

El procedimiento de decodificacin en el receptor es como sigue:

Todos los valores binarios de las posiciones donde hay un 1 son


relacionados con la funcin XOR. En este caso se incluyen tanto
los bits de datos como los de chequeo.
Si el resultado es cero, el error no es detectado.
De lo contrario el resultado es el sndrome y su valor es igual a la
posicin del bit que esta errado.

Siguiendo con el ejemplo anterior, suponga que el bit de datos 3, en


la posicin 6, llega con error, siendo el bloque recibido de
001101101111. El receptor realiza el XOR como explicado anteriormente
y como se muestra en la Ilustracin 8. Note que en la tabla (d), el
resultado de realizar un XOR de todas las posiciones donde estn los
cdigo de chequeo cuyo valor es 1 es 0111 (es decir, 0001 xor 0010 xor
0110).
Finalmente el resultado de XOR es 0110, que es diferente de 0 e
indica la posicin donde ocurri el error, es decir, el bit en la posicin 6.

12 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Ilustracin 8: Ejemplo de aplicacin del cdigo de Hamming en el


receptor (tomado de [3]).
1.3.3. Cdigos BCH
Los cdigos BCH constituyen una de las clases ms importantes y
poderosas de los cdigos de bloques lineales. Los cdigos BCH ms
comunes son los cdigos BCH binarios, que estn caracterizados por
cualquiera entero positivo m, igual o mayor a 3 y t menor que (2m 1)/2
mediante 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. Una
explicacin
detallada de la construccin de los cdigos BCH esta ms all del objetivo
de este documento, pero se puede encontrar en [1]. Para proporcionar una
idea de su capacidad se muestran los parmetros en la Ilustracin 9 y los
polinomios generadores en Ilustracin 10.

13 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Ilustracin 9: Parmetros de los Cdigos BCH (tomado de [3]).

Ilustracin 10: Polinomios generadores para los cdigos BCH


(tomado de [3]).
1.3.4. Cdigos Reed-Salomon
Los cdigos Reed-Salomon (cdigos RS) son una subclase de los
cdigos BCH no binarios, ya que el codificador de un cdigo RS opera
sobre un bloque de bits en vez de bits individuales como en el caso de los
cdigos binarios. As, la data es procesada en trozos de m bits, llamados
smbolos. Y 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
Similarmente al caso anterior una explicacin mas detallada de
cmo se codifica/decodifica un cdigo RS esta fuera del alcance de este
documento pero se puede encontrar en [1].

14 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

1.4.

Cdigos Convolucionales

Similarmente a los cdigos por bloques los cdigos convolucionales


son ampliamente usados en los sistemas de comunicacin inalmbricos.
Sin embargo, a diferencia de los primeros, estos generan bit redundantes
continuamente y el chequeo y correccin de errores realizados
continuamente.
Un cdigo convolucional es representado como (n, k, K). As, el
proceso de entrada procesa k bits en un determinado tiempo y la salida
produce n bits por cada k bits de entrada. A diferencia de los cdigos por
bloques estos cdigos tienen memoria, as la salida de n bits del cdigo
(n,k,K) depende del bloque en curso de k bits de entrada y los K-1 bloques
previos de k bits de entrada. K es un factor de restriccin y k y n son
generalmente muy pequeos.
1.4.1. Codificacin
El proceso de codificacin de un cdigo convolucional se explicar
usando un ejemplo el cual es mostrado en la Ilustracin 11. Note que las
dos representaciones son equivalentes, una a travs de un registro de
desplazamiento y la otra un diagrama de estado. Otras formas graficas de
representar un codificador convolucional y que son totalmente
equivalentes a la del diagrama de estado son el rbol de cdigo (ver [2]) y
el enramado (ver Seccin 1.4.2).
As para un cdigo de (n,k;K) el registro de desplazamiento contiene
las mas recientes K x k entradas de bits. El registro es inicializado en cero.
El codificador produce n bits por cada k bits (n > k). Lo que significa que la
tasa de un cdigo convolucional es k/n. En el ejemplo se usa un cdigo
(2,1,3), lo que implica que k=1 y la longitud del registro es de K=3. En el
ejemplo, el codificador convierte un bit de entra un en dos bits vn1 y vn2,
usando los tres bits mas recientes. vn1 = un un-1 un-2. vn2 = un un-2.
Un cdigo convolucional puede representarse como una mquina de
estado con 2k(K-1) estados. El nmero de estado es debido a que para una
entrada de k bits hay 2k(K-1) diferentes funciones que concuerdan k bits de
entrada en n bits de salida. La transicin de un estado a otro esta
determinada por los k bits mas recientes y produce n bits. El estado es
inicial corresponde al estado de todos ceros.
Siguiendo con el ejemplo, se tiene una maquina con 2 k(K-1) = 2 (3-1) =
4 estados. La entrada del prximo bit causa una transicin de estados y
produce una salida de n= 2 bits. Por ejemplo, si los ltimos bits fueron 10
(estado b) y el prximo bit es 1, el prximo estado es el d(11). Entonces:
vn1 = un-2 un-1 un = 0 1 1 = 0
vn2 = un-2 un = 0 1 = 1

15 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Ilustracin 11: Codificador convolucional con (n,k,K) = (2,1,3)


(tomado de [3]).
1.4.2. Descodificacin
El cdigo de Viterbi es uno de los ms importantes algoritmos de
correccin para los cdigos convolucionales. Antes de explicar este cdigo
se debe explicar en que consiste en diagrama de enramado mostrado en
Ilustracin 12. Para simplificar la explicacin se har uso del diagrama de
estado mostrado en la Ilustracin 11b. Si el diagrama esta en posicin
vertical como en este caso, el diagrama expandido, llamado enramado
(trellis) se organiza en forma tal que se reproducen los estados de forma
horizontal. Las transiciones entre estados corresponden a tiempo o data
de entrada. Este diagrama se lee de izquierda a derecha. Por ejemplo, si
se esta en el estado a=00 y el bit de entrada es un 1, la salida ser 11 y el
prximo estado es b(10). Esto coincide con la salida generada usando el
registro de desplazamiento y el diagrama de estado de la Ilustracin 11.

16 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

Ilustracin 12: Diagrama de trellis para el codificador de la


Ilustracin 11 (tomado de [3]).
El cdigo de Viterbi 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 plazas. Una vez un camino vlido es seleccionado como
el camino correcto, el decodificador puede recuperar la data de entrada de
los bits del cdigo de salida.
Existen diversas 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 ms comunes es usar la
distancia de Hamming. El algoritmo procede en pasos o niveles, j y opera
de la siguiente manera. Sea M<=j<=L, M= K-1 la memoria del codificador
y L la longitud de la secuencia del mensaje entrante. En cada nodo del
enramado se comparan las dos trayectorias (paths) que entran al nodo, la
secuencia codificada representada por la trayectoria calculada y la
secuencia recibida, y se retiene la trayectoria con menor mtrica. Estas
trayectorias se llaman sobrevivientes o activas.
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.
Paso (nivel) j+1:
Sea j=0,1,2,
17 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

En el nivel (tiempo de reloj) j+1, se calcula la mtrica para todas


las trayectorias que entran en cada estado del enramado para
dicho tiempo, agregando la mtrica de las ramas entrantes a la
mtrica de la trayectoria sobreviviente conectora desde el nivel 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.
Paso final:
Se contina el clculo 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 puede 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 una 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.
Por ejemplo, la Ilustracin 13 muestra la aplicacin del algoritmo de
Viterbi a la secuencia recibida 10010100101100 con un decodificador cuya
ventana es b=7. Las lneas en la figura representan las trayectorias
validas a travs del enramado y las lneas gruesas las trayectorias activas.
En el paso 0 se inicializa el estado a en cero, 0. En el paso 1, se ha
recibido la secuencia 10. Las dos secuencias vlidas son 00 y 11 (ver
Ilustracin 12). Para ambos casos hay una distancia de 1 con respecto a la
secuencia recibida. Por ejemplo d(10,00) = 1. Las dos trayectorias activas
se definen con un estado con etiqueta 1.
En el paso 2, se tiene la secuencia recibida de 01. Se calcula la
mtrica para cada uno de los 4 posibles estados (ver Ilustracin 12). De
arriba hacia abajo, los valores son 2,2,3,1. Para ilustrar el procedimiento se
muestra como se calculo el valor de la mtrica en el estado a. La mtrica
para la trayectoria sobreviviente conectora del paso 1 es 1. A esto se le
suma la mtrica para la distancia entre la secuencia vlida y la recibida, es
decir d(01,00)=1. Dando un total de 2. Similarmente se procede en los
otros casos. Dado que existe una sola trayectoria para cada estado, todas
las trayectorias se marcan como sobrevivientes.
En el paso 3, se procede de forma similar que en el paso 2. Pero en
este caso se tiene que cada trayectoria termina en un estado para el cual
existe otra trayectoria vlida. Por lo tanto, algunas trayectorias no
sobreviven como trayectorias activas (o sobrevivientes). Por ejemplo, la
18 / 19

Fundamentos de la Tecnologa Inalmbrica: Tcnicas de Correccin y Deteccin de


Errores

secuencia de estado a-a-a-a tiene una discrepancia de 3 mientras que la


secuencia a-b-c-a tiene una discrepancia de 4. En el paso 7, el algoritmo
finaliza. Note que todas las trayectorias activas pasan a travs del lado a-b
que tiene una salida 11, corrigiendo as los dos primeros de bits de la
secuencia de entrada de 10 a 11. Fjense que si b=5 el error no se hubiese
podido corregir porque hay dos trayectorias sobrevivientes.

Ilustracin 13: Algoritmo de Viterbi para w= 10010100101100 con


b=7 para el codificador de la Ilustracin 12 (tomado de [3]).
[1]Morelos-Zaragoza R. The Art of error Correcting Coding. John Wiley and
Sons. 2002.
[2]Haykyn S. Sistemas de Comunicacin. Limusa Wiley. 2001.
[3]Stallings W. Wireless Communications and Networks. Prentice Hall.
2002.

19 / 19