Metodosd de Detección y Corrección de Errores

Anuncio
UNIVERSIDAD CENTRAL DE VENEZUELA
Facultad de Ciencias
Postgrado en Ciencias de la Computación
Lecturas de Docencia
Fundamentos de la Tecnología Inalámbrica:
Técnicas de Corrección y Detección de Errores
Profesora Agregado Maria Elena Villapol
Noviembre del 2006.
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
1. Técnicas de Control de Errores en Redes Inalámbricas
Las técnicas de control de errores incluyen aquellas para detectar y/o corregir
errores. Las aproximaciones más comunes son:



Códigos para la detección de errores, tales como Chequeo de Paridad y
Chequeo Cíclico Redundante (Cyclic Redundancy Check, CRC): son capaces
de detectar la presencia de errores en una secuencia de bits más no pueden
corregirlos. Ellos confían en técnicas tales como la de Requerimiento de
Repetición Automática y Retransmisiones para el tratamiento de tramas con
errores.
Códigos para la corrección de errores, entre los que se encuentran: Códigos
para la Corrección de Errores de Bloque, Código de Hamming, Códigos Cíclicos,
Códigos BCH, Intercalamiento de Bloques, Códigos Convolucionales, Codificación
Turbo, son usualmente usados en ambientes de comunicación inalámbricas,
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 Repetición Automática (Automatic Repeat Request,
ARQ): incluyen técnicas para la retransmisión de tramas no reconocidas después
de cierto intervalo de tiempo.
1.1.
Principios Generales de la Corrección y Detección de Errores
Cada bloque de m bits es codificado con un bloque de (m+r) bits denominado
palabra código (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 código es la que
se transmite.
En el receptor varias cosas pueden pasar:




Si no hay errores, la salida de decodificador es igual al código 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 señal 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 número de bits en los cuales las siguientes secuencias, v1 y v2,
difieren. La distancia mínima para una palabra código que consiste de w1,w2, …ws
donde s = 2n.
d min  min
i j
d ( wi , w j )
Por ejemplo, si v1 = 011011 y v2 = 110001, entonces d(v1,v2) = 3
2 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
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 código es m/(m+r) y mide la cantidad adicional de ancho de banda que se
necesita.
1.2.
Detección de Errores
A continuación se describirá una técnica muy común para la detección de
errores en sistemas de comunicación, tal como lo es el Chequeo Cíclico Redundante
(CRC). Otra técnica ampliamente conocida es el chequeo de paridad, la cual no es
descrita en este documento, pero cuya descripción puede ser encontrada en [3].
1.2.1. Chequeo Cíclico 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 número. 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 patrón predeterminado, cuya longitud es n+1 bits.
Para obtener la FCS se debe multiplicar 2n por M (es decir 2nM) y dividirlo (división
modulo 2) por el generador polinomial P. El resto de dicha división se envía en la
trama como el FCS. En el receptor se debe realizar la misma operación, 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
número 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
término 1 y Xn.
El siguiente un ejemplo de cómo funciona CRC:
M (mensaje) = 1010001101 (10 bits) (representación polinomial es D(X) =
X9+X7+X5+X2+1)
P (generador polinomial) = 110101 (6 bits) (P(X) = X5+X4+X2+1)
Así, n+k = 15, k= 100 y n = 5.
3 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
25M= 101000110100000 y es dividido entre P de la siguiente manera (ver
Ilustración 1):
1 1 0 1 01 0 1 10 (Q )
_ _ _ _ _ __ _ _ __ _ _ __
1 1 0 1 01 /1 0 10 0 0 11 0 1 00 0 0 0
110101
--------111011
110101
----------111010
y e nto nce s:
110101
T : 10 1 0 00 1 1 01 0 1 11 0
----------FCS
111110
110101
----------101100
110101
----------110010
110101
----------0 1 1 1 0 (R )
Ilustración 1: CRC: Ejemplo
Se suma módulo 2 el resto, R, a 101000110100000, dando como resultado.
101000110100000
+
01110 = 101000110101110 = T
La trama T es la que se envía. Si no hay errores cuando la trama T es recibida
y dividida entre P, el resto debería ser 0.
La Ilustración 2 muestra el circuito digital representado en el ejemplo anterior
e n tra d a
R e g istro de de spla za m ie n to de u n bit
C irc u ito O R E xc lu s ivo
Ilustración 2: Circuito digital el divisor polinomial P(X) = X5+X4+X2+1.
.
1.3. Códigos de Corrección de Errores por Bloque
Las técnicas de detección de errores combinadas con las técnicas de ARQ son
inadecuadas en ambientes inalámbricos porque:
4 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores


La tasa de error de bit es alta.
En algunos casos, como lo son los satélites, el retardo de propagación es
largo comparado con el tiempo de transmisión de una trama.
C o d ific a d o r
FEC
n bits
codeword
data
k bits
Por lo tanto seria deseable que un sistema fuera capaz de corregir errores
contenidos en una transmisión. Un esquema de cómo esto podría ser realizado se
muestra en Ilustración 3. El codificador FEC (Corrección de Error Hacia Adelante)
suma (n-k) bits al bloque de datos de k bits. Los k bits en la señal original se
transmiten en la palabra código (codeword) de n bits (Ver Ilustración 3). Dentro de
un bloque de código (n,k) hay 2K códigos válidos de los 2n códigos posibles. El radio
de redundancia (es decir, redundancia) es (n-k)/k. La tasa del código es k/n y mide
la cantidad adicional de ancho de banda que se necesita.
E m is o r
data
codeword
N o h a y e rro r
o e s c o rre g ib le
C o d ific a d o r
FEC
In d ic a c ió n d e l
e rro r
E rro r d e te c ta d o p e ro n o
c o rre g ib le
R e c e p to r
Ilustración 3: Proceso de FEC.
Otra definición importante cuando se esta trabajando con los códigos de
detección de errores por bloques es la distancia mínima, dmin, (ver Sección 1.1), la
cual es determinada como se muestra a continuación:
dmin >= 2t+1, el código 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 relación se da a continuación. El máximo número
de errores corregibles es:
t 
 d min
 1 / 2 
Eq 1.1
Donde [x] el más grande de los enteros que no excede x.
El máximo número de errores que pueden ser detectados es:
t  d min  1
Eq 1.2
5 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
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 relación entre el bloque de
datos y la palabra código (es decir, las palabras válidas). La distancia mínima entre
los código válidos, es decir, dmin (00000, 00111, 11001, 11110) es 3 (ver Sección
1.1), por lo tanto el número 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 código
00
00000
01
00111
10
11001
11
11110
Tabla 1: Relación de la secuencia de datos con la palabra código
Ahora, suponga que se recibe la siguiente secuencia 00100, la cual es un
código inválido (ya que no está en la Tabla 1). La distancia de Hamming desde dicha
secuencia a cada código válido es:
d(00000,00100)
=
1
(distancia
d(11001,00100)=4; d(11110,00100)=3
mínima);
d(00111,00100)
=2;
Ya que la distancia mínima es uno, que significa que existe un cambio en un
bit de la secuencia, debería ser posible corregir el error, buscando la palabra código
cuya distancia a la secuencia recibida es 1. En este caso la palabra código que
cumple tal condición es la 00000 y la palabra transmitida es 00. Este hecho se puede
observar en la Ilustración 4.
Ahora, si la secuencia recibida es 01010, la distancia mínima a las palabras
códigos es de 2:
d(00000,01010) = 2 (distancia mínima); d(00111, 01010) =3; d(11001,
01010)=3; d(11110, 01010)=2 (distancia mínima)
6 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Ilustración 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 Ilustración 4 (observar códigos en el rectángulo), dicha
secuencia recibida puede corresponderse a dos palabras códigos válidas y no hay
forma de conocer cual de ellas es.
1.3.1. Códigos Cíclicos
Los códigos cíclicos son códigos de corrección de errores por bloques que
siguen los principios generales enunciados anteriormente. Los mismos pueden ser
codificados y decodificados usando registros (LFSRs). Para un código cíclico, un
código válido (c0, c1, …, cn-1), desplazado hacia la izquierda un bit (cn-1, c0, …, cn2), es también un código válido. La entrada de longitud fija (k) toma y produce un
código
(n-k).
A
continuación
se
describe
el
procedimiento
de
codificación/descodificación:


Codificación: los k bits de data son usados como entrada para producir un
código de chequeo de (n-k) bits (siguiendo el mismo procedimiento explicado en
la sección 1.2.1).
Decodificación: 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 código síndrome (de la misma manera que se calcularon los bits
de chequeo). Si todos los bits del síndrome son cero, no se ha detectado error.
En caso contrario, se ejecuta procesamiento adicional del síndrome para corregir
el error.
Ejemplo: Los siguientes parámetros se utilizan en la explicación:
T = trama de n bits que se transmite
D = data de k bits de longitud (los primeros k bits de T)
P = patrón de (n–k+1) bits predeterminados
7 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Q = Cociente
C = Resto
Sea un código (7,4), es decir, n=7, k=4, n-k =3. P(X) = X3+X2+1 ó 1101.
Para que un código sea capaz de corregir errores simples:
n<= (2n-k-1) (ver [1])
Ya que n=7= 23-1 este código es capaz de corregir un error. La Ilustración 5
muestra todas las palabras códigos generadas usando el polinomio P(X) = X3+X2+1 y
el procedimiento descrito en la Sección 1.2.1. Por ejemplo, el procedimiento para
calcular la palabra código asociado al bloque de datos D=0000, fue multiplicar 23M =
0000000. Este resultado se divide módulo 2 entre P(X). Esto da como resto R= 000.
Por lo tanto la palabra código es 0000000000. Así se continua con cada uno de los
bloque de data.
Note en la Ilustración 5 que la distancia mínima entre las palabra códigos es
de 3. Lo que confirma que solo se puede corregir un error (usar Eq 1.1).
Ilustración 5: Palabras códigos válidas para el ejemplo.
Desde que solo un error puede ser corregido, los patrones de error (E(X))
posibles se muestran en la Ilustración 6. En este caso, el bit en uno (1) indica que se
ha producido un error en esa posición del stream de datos. Entonces, para cada
patrón de error E(X) calcular el síndrome S(X) (ver Ilustración 6). Para ello se debe
dividir, módulo 2, E(X) entre el polinomio P(X). El resto es el síndrome [1].
8 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Ilustración 6: Síndromes para errores simples.
Suponga que se recibe el bloque de data Z(X) = X6+X5+X3+X2+1 (1101101).
Decodificar Z(X), dividiéndolo entre P(X). Si el resto es 0 no hay errores. En caso
contrario, buscar el resto, S(X), en tabla de la Ilustración 6. En este caso el resto es,
S(X) = X2+1 (101), por lo tanto E(X) = X3 (0001000). Para obtener la palabra
correcta, se realiza la suma lógica (módulo 2) de Z e E, es decir T =Z + E. Se busca
el resultado, T, en la tabla de la Ilustración 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. Código de Hamming
Está diseñado para corregir errores de bit simples. Los códigos de Hamming
son una familia de bloques de corrección de error de (n,k) con los siguientes
parámetros:
Longitud del bloque: n = 2m – 1
Número de bits de dato: k = 2m – m – 1
Número de bits de chequeo: n – k = m
Distancia mínima: dmin = 3
El proceso de codificación/descodificación tiene la misma estructura del FEC.
En el receptor el resultado de la comparación (XOR de la señal recibida y otra de la
calculada) es realizado, dando como resultado lo que se conoce como palabra
síndrome.
1.3.2.1. Codificación
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 relación se mantiene (ver [1]):
2(n-k) - 1 >= k+(n-k) = n
9 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Esto nos permite calcular el número de bits de chequeo. Así, por ejemplo,
para un bloque de datos de k=8 bits, se requieren 4 bits de chequeo (es decir, nk=4.
Para el cálculo de la palabra código a ser enviada se deben seguir los
siguientes pasos:



Los bits de datos y de chequeo se reorganizan como se describe a
continuación:
o Partiendo de la posición 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
posición en binario. Por ejemplo, si el bit en la novena posición tiene un
valor de uno, su posición es representado como 1001.
Todos lo valores posiciónales 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 Ilustración 7 (ver fila de check bit). También se puede
observar que cuatro de los bits de datos tienen el valor de 1 (están sombreados en la
ilustración) y por lo tanto los valores de sus posiciones han sido relacionados usando
la función del XOR (ver tabla (b) de la ilustración). El código de Hamming resultante
es 0111 y el bloque transmitido es 001101001111.
Ilustración 7: Ejemplo del cálculo del código de Hamming (tomado de [3]).
10 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
1.3.2.2. Descodificación
El receptor compara los (n-k) bits recibido con los (n -k) bits calculados bits
usando la función XOR. Los (n-k) bits resultantes se llaman palabra síndrome. El
rango del síndrome esta entre 0 y 2(n-k)-1. El síndrome indica:



Si contiene solo 0s, no se han detectados errores.
Si el síndrome contiene un solo bit en 1 entonces un error ha ocurrido en
uno de los bits de chequeo. Por lo tanto, no se requiere corrección.
Si el síndrome contiene más de un bit en 1, entonces el valor numérico del
síndrome indica la posición de un bit de data en error. El bit en error es
invertido para su corrección.
El procedimiento de decodificación en el receptor es como sigue:



Todos los valores binarios de las posiciones donde hay un 1 son
relacionados con la función 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 síndrome y su valor es igual a la posición
del bit que esta errado.
Siguiendo con el ejemplo anterior, suponga que el bit de datos 3, en la
posición 6, llega con error, siendo el bloque recibido de 001101101111. El receptor
realiza el XOR como explicado anteriormente y como se muestra en la Ilustración 8.
Note que en la tabla (d), el resultado de realizar un XOR de todas las posiciones
donde están los código 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
posición donde ocurrió el error, es decir, el bit en la posición 6.
11 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Ilustración 8: Ejemplo de aplicación del código de Hamming en el receptor
(tomado de [3]).
1.3.3. Códigos BCH
Los códigos BCH constituyen una de las clases más importantes y poderosas
de los códigos de bloques lineales. Los códigos BCH más comunes son los códigos
BCH binarios, que están caracterizados por cualquiera entero positivo m, igual o
mayor a 3 y t menor que (2m – 1)/2 mediante los siguientes parámetros:
Longitud del bloque: n = 2m – 1
Número de bits de chequeo: n – k  mt
Distancia mínima: dmin >= 2t + 1
Corrige combinaciones de t o menos errores. Una explicación detallada de la
construcción de los códigos BCH esta más allá del objetivo de este documento, pero
se puede encontrar en [1]. Para proporcionar una idea de su capacidad se muestran
los parámetros en la Ilustración 9 y los polinomios generadores en Ilustración 10.
12 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Ilustración 9: Parámetros de los Códigos BCH (tomado de [3]).
Ilustración 10: Polinomios generadores para los códigos BCH (tomado de
[3]).
1.3.4. Códigos Reed-Salomon
Los códigos Reed-Salomon (códigos RS) son una subclase de los códigos BCH
no binarios, ya que el codificador de un código RS opera sobre un bloque de bits en
vez de bits individuales como en el caso de los códigos binarios. Así, la data es
procesada en trozos de m bits, llamados símbolos. Y un código RS (n,k) tiene los
siguientes parámetros:
Longitud del símbolo: m bits por símbolo
Longitud del bloque: n = 2m – 1 símbolos = m(2m – 1) bits
Longitud de la data: k símbolos
Tamaño del código de chequeo: n – k = 2t símbolos = m(2t) bits
Distancia mínima: dmin = 2t + 1 símbolos
Similarmente al caso anterior una explicación mas detallada de cómo se
codifica/decodifica un código RS esta fuera del alcance de este documento pero se
puede encontrar en [1].
13 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
1.4.
Códigos Convolucionales
Similarmente a los códigos por bloques los códigos convolucionales son
ampliamente usados en los sistemas de comunicación inalámbricos. Sin embargo, a
diferencia de los primeros, estos generan bit redundantes continuamente y el
chequeo y corrección de errores realizados continuamente.
Un código 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 códigos por bloques estos códigos tienen
memoria, así la salida de n bits del código (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
restricción y k y n son generalmente muy pequeños.
1.4.1. Codificación
El proceso de codificación de un código convolucional se explicará usando un
ejemplo el cual es mostrado en la Ilustración 11. Note que las dos representaciones
son equivalentes, una a través 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 código (ver [2]) y el enramado (ver Sección 1.4.2).
Así para un código 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 código
convolucional es k/n. En el ejemplo se usa un código (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  un2. vn2 = un  un-2.
Un código convolucional puede representarse como una máquina de estado
con
estados. El número 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 transición 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.
2k(K-1)
Siguiendo con el ejemplo, se tiene una maquina con 2k(K-1) = 2 (3-1) = 4
estados. La entrada del próximo bit causa una transición de estados y produce una
salida de n= 2 bits. Por ejemplo, si los últimos bits fueron 10 (estado b) y el próximo
bit es 1, el próximo estado es el d(11). Entonces:
vn1 = un-2  un-1  un = 0  1  1 = 0
vn2 = un-2  un = 0  1 = 1
14 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Ilustración 11: Codificador convolucional con (n,k,K) = (2,1,3) (tomado de
[3]).
1.4.2. Descodificación
El código de Viterbi es uno de los más importantes algoritmos de corrección
para los códigos convolucionales. Antes de explicar este código se debe explicar en
que consiste en diagrama de enramado mostrado en Ilustración 12. Para simplificar
la explicación se hará uso del diagrama de estado mostrado en la Ilustración 11b. Si
el diagrama esta en posición 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 próximo estado es
b(10). Esto coincide con la salida generada usando el registro de desplazamiento y
el diagrama de estado de la Ilustración 11.
15 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Ilustración 12: Diagrama de trellis para el codificador de la Ilustración 11
(tomado de [3]).
El código de Viterbi compara la secuencia recibida con todas las posibles
secuencias transmitidas. El algoritmo elige el camino a través del diagrama de
enramado cuya posible secuencia transmitida difiere en el menor número de plazas.
Una vez un camino válido es seleccionado como el camino correcto, el decodificador
puede recuperar la data de entrada de los bits del código de salida.
Existen diversas variaciones del algoritmo de Viterbi. Ellas dependen de la
métrica usada para medir las deferencias entre las secuencias recibidas y las
secuencias validas. Una de las más 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 métrica. 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 más a la izquierda del enramado. Pues en este
punto no hay discrepancia.
Paso (nivel) j+1:
Sea j=0,1,2,…
16 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
 En el nivel (tiempo de reloj) j+1, se calcula la métrica para todas las
trayectorias que entran en cada estado del enramado para dicho tiempo,
agregando la métrica de las ramas entrantes a la métrica de la trayectoria
sobreviviente conectora desde el nivel j.
 Se identifican todas las trayectorias sobrevivientes (la trayectoria con la
métrica más baja).
 Se almacenan las trayectorias sobrevivientes y su métrica para cada estado
del enramado.
Paso final:
 Se continúa el cálculo hasta que el algoritmo completa su búsqueda 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 descodificación.
 Esta tiene una longitud b.
 El algoritmo se interrumpe después de b pasos.
 Se toma una decisión con respecto a la mejor trayectoria y se libera al
usuario el símbolo asociado con la primera de rama de esa trayectoria.
 Se mueve la ventana un intervalo de tiempo y se toma una decisión sobre
la siguiente trama.
Por ejemplo, la Ilustración 13 muestra la aplicación del algoritmo de Viterbi a
la secuencia recibida 10010100101100 con un decodificador cuya ventana es b=7.
Las líneas en la figura representan las trayectorias validas a través del enramado y
las líneas 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 válidas son
00 y 11 (ver Ilustración 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 métrica para
cada uno de los 4 posibles estados (ver Ilustración 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 métrica en el estado a. La métrica para la trayectoria sobreviviente
conectora del paso 1 es 1. A esto se le suma la métrica para la distancia entre la
secuencia válida 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 válida. Por lo tanto, algunas trayectorias no sobreviven como trayectorias
activas (o sobrevivientes). Por ejemplo, la 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 través
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. Fíjense que si b=5 el error no se hubiese podido
corregir porque hay dos trayectorias sobrevivientes.
17 / 18
Fundamentos de la Tecnología Inalámbrica: Técnicas de Corrección y Detección de Errores
Ilustración 13: Algoritmo de Viterbi para w= 10010100101100 con b=7
para el codificador de la Ilustración 12 (tomado de [3]).
[1] Morelos-Zaragoza R. The Art of error Correcting Coding. John Wiley and Sons.
2002.
[2] Haykyn S. Sistemas de Comunicación. Limusa Wiley. 2001.
[3] Stallings W. Wireless Communications and Networks. Prentice Hall. 2002.
18 / 18
Descargar