anÁlisis de cÓdigos de detecciÓn y correcciÓn de …

50
ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE ERRORES EN SISTEMAS DE COMUNICACIONES INALÁMBRICOS MICHAEL BALTAXE MILWER UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELCTRÓNICA BOGOTÁ D. C. 2006

Upload: others

Post on 25-Jun-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE ERRORES EN SISTEMAS DE COMUNICACIONES INALÁMBRICOS

MICHAEL BALTAXE MILWER

UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELCTRÓNICA BOGOTÁ D. C.

2006

Page 2: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

2

ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE ERRORES EN SISTEMAS DE COMUNICACIONES INALÁMBRICOS

MICHAEL BALTAXE MILWER

Trabajo de grado para optar por el título de Ingeniero Electrónico

AsesorRAFAEL CAMERANO

UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELCTRÓNICA BOGOTÁ D. C.

2006

Page 3: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

3

AGRADECIMIENTOS

Agradezco a Rafael Camerano, asesor de este proyecto, por su colaboración y

oportuna guía durante el desarrollo del mismo. Agradezco no solo su guía durante

este trabajo, sino también toda su enseñanza a lo largo de mis estudios de pregrado.

También quisiera aprovechar la oportunidad para agradecer a mis padres, mi

hermano y mis amigos por su continuo apoyo durante esta etapa.

Page 4: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

4

TABLA DE CONTENIDOS

INTRODUCCIÓN…………………………………………………………………….5

1. CRC-8 para IEEE 802.16…………………………………………………………..7

1.1 Introducción……………………………………………………………….7

1.2 Codificador………………………………………………………………..8

1.3 Decodificador……………………………………………………………..9

1.4 Simulaciones……………………………………………………………..11

1.5 Ventajas, Desventajas y Aplicaciones…………………………………...14

2. Códigos Reed-Solomon…………………………………………………………...16

2.1 Introducción……………………………………………………………...16

2.2 Codificador……………………………………………………………....16

2.3 Decodificador…………………………………………………………….19

2.4 Criterios de Diseño………………………………………………………21

2.5 Simulaciones……………………………………………………………..21

2.6 Ventajas, Desventajas y Aplicaciones…………………………………...29

3. Turbo Códigos…………………………………………………………………….31

3.1 Introducción……………………………………………………………...31

3.2 Códigos Convolucionales………………………………………………..31

3.3 Codificador………………………………………………………………34

3.4 Decodificador……………………………………………………………35

3.5 Simulaciones……………………………………………………………..38

3.6 Ventajas, Desventajas y Aplicaciones…………………………………...46

CONCLUSIONES…………………………………………………………………...47

BIBLIOGRAFÍA…………………………………………………………………….50

Page 5: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

5

INTRODUCCIÓN

La comunicación ha sido un elemento característico del ser humano a lo largo de su

evolución en la historia. Diversos sistemas de comunicación han existido hasta llegar

hoy en día a complejos sistemas digitales que incluyen comunicaciones inalámbricas,

como por ejemplo los sistemas de comunicación celular y los sistemas satelitales.

Para obtener un buen sistema de comunicaciones, es necesario caracterizar su

eficiencia y su eficacia. En este caso, la eficiencia es entendida como la velocidad con

que se transmite un conjunto de datos. La eficacia por su parte, es la veracidad con

que la información es transmitida y recibida, es decir, qué tantos errores se presentan

en el receptor con respecto al transmisor.

Para cuantificar la veracidad del sistema, se utiliza usualmente como unidad de

medición el BER (bit error rate), el cual determina la cantidad de bits errados en el

mensaje recibido, con respecto a aquel que fue transmitido. Esta tasa de error es

función del la relación señal a ruido (SNR) del canal en el cual se transmiten los

datos. El tema central de este trabajo trata del desempeño del BER en diferentes

sistemas y escenarios.

Para disminuir el BER, disminuyendo así la probabilidad de obtener errores en el

mensaje recibido, es necesario aumentar la relación señal a ruido del canal. Con esta

finalidad, son comúnmente utilizados en los sistemas de comunicaciones los códigos

de detección y corrección de errores.

De acuerdo al trabajo de Shannon, si la tasa de trasmisión de un sistema es menor que

la capacidad del canal, se puede diseñar un código corrector de errores en el cual la

probabilidad de error sea tan pequeña como se quiera. Así mismo, se sostiene que es

más económico usar los códigos de corrección de errores que aumentar la potencia de

Page 6: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

6

transmisión, pues siempre se tendrá la presencia de ruido que corrompa la

información transmitida.

Existen diversos tipos de código, usados en diferentes situaciones, dependiendo de las

características del canal a utilizar y del sistema de comunicaciones completo. Hasta

ahora, ningún código ha podido alcanzar el límite teórico propuesto por Shannon,

aunque algunos códigos sí han logrado acercarse.

Este trabajo pretende estudiar algunos códigos utilizados frecuentemente en sistemas

de comunicaciones y determinar las fortalezas y desventajas de cada uno de ellos en

diferentes escenarios para así poder tomar decisiones respecto a qué código se debe

utilizar en un sistema complejo, con base en los experimentos realizados.

Lo que resta de este documento se organiza de la siguiente manera: primero se

estudian los códigos CRC, seguidos por los códigos Reed-Solomon, y los Turbo

Códigos. Cada uno de estos capítulos presenta las simulaciones realizadas, así como

las bondades y deficiencias del código a partir de los resultados obtenidos.

Finalmente, se exponen las conclusiones del trabajo.

Page 7: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

7

1. CRC-8 PARA IEEE 802.16

1.1 INTRODUCCIÓN

El IEEE 802.16 es un protocolo de comunicación para redes inalámbricas de acceso

metropolitano de banda ancha. Debido a esto, esta tecnología también es llamada de

manera oficial WirelessMAN, y en la industria de las telecomunicaciones WiMAX

(Worldwide Interoperability for Microwave Acces). En la actualidad, este tipo de

redes de comunicaciones tiene un gran auge, debido a que permiten la conexión de

computadores a Internet, de manera inalámbrica, en áreas de amplia cobertura y a alta

velocidad. Esto permite la libre movilidad de personas, por ejemplo en una ciudad,

manteniendo el acceso a la transmisión de datos.

Por su parte, el algoritmo CRC (Cyclic Redundancy Check), es un código de

detección de errores de bloque y lineal. Lineal significa que si dos palabras X e Y

pertenecen al código, entonces la palabra resultante de la suma X + Y también

pertenece al código. Que sea cíclico quiere decir que para cualquier palabra que

pertenezca al código, un corrimiento de todos sus símbolos también pertenece al

código. Es decir, si X = {x1, x2, x3, …, xn} pertenece al código, entonces Y =

{xmodulo(1+i, n), xmodulo(2+i, n), xmodulo(3+i, n), …, xmodulo(n+i, n)} para cualquier i entero,

también pertenece al código.

Así mismo, el CRC es un código sistemático, lo que indica que todos los símbolos del

mensaje también aparecen en el código. En particular, la tecnología IEEE 802.16

utiliza símbolos binarios.

Lo que resta de este capítulo se distribuye de la siguiente manera: inicialmente se

describe el codificador y el decodificador, seguidamente se presentan las

simulaciones realizadas con su respectivo análisis, y finalmente se presentan las

ventajas, desventajas y aplicaciones de los códigos CRC.

Page 8: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

8

1.2 CODIFICADOR

El diagrama de bloques del sistema completo de codificación y decodificación es el

siguiente:

Figura 1.1. Diagrama de bloques de un sistema CRC

En general, la forma de codificar una palabra usando CRC es mediante la expresión

matemática:

xdxxg

xdxModuloxc r

r

c(x) es la palabra código obtenida, g(x) es el “polinomio generador” del código, d(x)

es el polinomio mensaje y xdxr representa un corrimiento en este último. La

operación módulo es el residuo de la división. El grado del polinomio generador es

r = n – k.

En particular, para el protocolo IEEE 802.16 usa CRC-8, en donde

128 xxxxg . Por lo tanto, en este caso, r = 8. Esto quiere decir que cada

palabra código tendrá 8 bits más que la palabra mensaje, por lo tanto, siempre se

tendrán códigos del tipo CRC(k+8, k).

CodificadorCRCX

CANAL

Verificación CRC

MUX

Y

Ruido

Modulador

Page 9: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

9

Así mismo, de acuerdo a [IEEE 04], un sistema que implemente el protocolo IEEE

802.16 debe soportar obligatoriamente las modulaciones spread BPSK, BPSK,

QPSK, 16-QAM, 64-QAM, y opcionalmente 256-QAM.

A continuación se presenta un ejemplo de codificación de un mensaje usando CRC-8.

En este ejemplo, se toma:

k = 4

r = 8

n = 12

Suponemos que el mensaje es d = [1 1 0 0], por lo que 23 xxxd . Entonces:

251011

2528

1011

1011

1

xxxxxc

xxxxx

xxModulo

xg

xdxModulo

xxxxd

r

r

Por lo tanto, la palabra código transmitida será c = [1 1 0 0 0 0 1 0 0 1 0 0].

1.3 DECODIFIFCADOR

Los códigos CRC son códigos de detección de errores. Esto significa que el código no

corrige los errores, únicamente revisa si la palabra código recibida pertenece al

conjunto de los códigos definidos por el polinomio generador o no.

Debido a que el código es sistemático, la decodificación se limita a verificar que la

palabra recibida pertenece al conjunto de códigos, y en caso tal de que sea así, el

Page 10: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

10

mensaje decodificado corresponde a extraer los primeros k bits de la palabra código

recibida. Si se detectó un error en la palabra código recibida, lo mejor que se puede

hacer es descartar todo el paquete de datos y pedir la retransmisión de los mismos.

La verificación de que el código recibido representa una palabra correcta se realiza

mediante la siguiente expresión matemática:

xg

xrModuloSindrome

Donde r(x) es el polinomio recibido y g(x) es el mismo polinomio generador que se

uso en la etapa de codificación.

Si Síndrome es igual a cero, entonces el código es válido y el mensaje son los

primeros k símbolos de r(x). Si por el contrario, el síndrome es diferente de cero,

entonces r(x) no es una palabra código válida.

Otra forma de realizar la verificación es extraer inicialmente los primeros k términos

de r(x) y realizar la codificación sobre este segmento tal como se explicó en la

sección anterior. Si el código obtenido es igual al recibido, entonces la palabra es

correcta, si hay diferencias, entonces hay errores en la palabra recibida.

Siguiendo con el ejemplo de la sección anterior, tenemos lo siguiente:

Asumiendo que el código recibido es r = [1 1 0 0 0 0 1 0 0 1 0 0], es decir que

no hay errores en la transmisión, entonces 251011 xxxxxr .

0

128

251011

Sindrome

xxx

xxxxModuloSindrome

Page 11: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

11

Tenemos que Síndrome = 0, por lo tanto, se deduce que la palabra código recibida

es correcta y por lo tanto, el mensaje decodificado es d’ = [1 1 0 0].

Si por el contrario el código recibido es r = [1 1 0 1 0 0 1 0 0 1 0 0], lo cual

implica que hay un error en el cuarto bit, entonces

2581011 xxxxxxr .

01

12

28

2581011

xxSindrome

xxx

xxxxxModuloSindrome

En este caso Síndrome 0, por lo tanto se sabe que hay un error y se debe pedir la

retransmisión del mensaje.

1.4 SIMULACIONES

Las simulaciones se realizaron en un canal de tipo ruido blanco gaussiano aditivo

(AWGN), y usando el código CRC-8, con mensajes de 100 bits, por lo que el código

se describe como CRC(108, 100). El sistema implementado es como el que se

muestra en la figura 1.1. El sistema de modulación utilizado es BPSK. Lo que se

pretende es analizar el número de retransmisiones necesarias para recibir

correctamente un bloque de datos.

Inicialmente la simulación se realizó en un canal con relación señal a ruido (SNR) de

4 dB, en donde se enviaron 500 paquetes de 100 bits generados de manera aleatoria.

El resultado obtenido es el siguiente:

Page 12: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

12

Page 13: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

13

Se encontró que el número de retransmisiones sigue una función exponencial

decreciente. El promedio de retransmisiones fue 78.1940 y la desviación estándar fue

86.3056. Esto nos indica que en pocas ocasiones fue necesario retransmitir más de

164 veces, que hay un gran número de paquetes que necesitaron un número pequeño

de retransmisiones.

Seguidamente se simuló el número de retransmisiones necesarias mientras que se

variaba el SNR del canal. El SNR se varió desde 0 dB hasta 12 dB en pasos de 1 dB,

y para cada paso se enviaron 200 paquetes de 500 bits generados de manera aleatoria

y se promedió el número de retransmisiones necesarias. El resultado obtenido es el

siguiente:

Se encontró que antes de los 3dB, el SNR del canal el muy bajo y por lo tanto, el

número de retransmisiones necesarias es alto (casi todos los paquetes se deben

retransmitir). Desde los 3dB en adelante, el número de transmisiones necesarias

disminuye de manera continua.

Page 14: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

14

Se comprobó entonces que al incrementar la relación señal a ruido del canal, el

número de retransmisiones que se requieren para recibir correctamente un mensaje

disminuye. Sin embargo, existe una cota mínima en la cual la cantidad de errores es

tan grande que se mantiene constate sin importar que se disminuya aún más el SNR.

1.5 VENTAJAS, DESVENTAJAS Y APLICACIONES

Una importante ventaja de los códigos CRC es que estos son fáciles de implementar

en hardware, lo que garantiza una codificación y decodificación veloz en sistemas

reales.

Como principal desventaja, encontramos que el CRC es un algoritmo de detección de

errores y no de corrección de errores. Por lo tanto, si se determina que r(x) tiene

errores, lo mejor que se puede hacer es enviar un mensaje al transmisor pidiendo la

retransmisión del paquete de datos. Esto hace que sea necesario retransmitir una gran

cantidad de información, disminuyendo la tasa de transmisión efectiva.

Otro problema de este tipo de codificación es que el síndrome verifica que la palabra

r(x) pertenezca al espacio de palabras definido por el polinomio generador g(x). Esto

no asegura que el mensaje extraído sea el mismo que el enviado. Sin embargo, debido

a la forma de construcción del código, la probabilidad de que el mensaje decodificado

sea igual a el enviado dado que el síndrome es cero, es mayor que la probabilidad de

recibir un mensaje correcto sin ningún tipo de codificación en un canal de tipo

AWGN (aditive white gaussian noise), tal como el que se presenta en los sistemas

que usan IEEE 802.16. Aún así, se debe tener en cuenta que siempre existe una

probabilidad de obtener errores.

Como se puede ver, el CRC es usado en varios sistemas de comunicaciones. En este

caso particular se estudia la aplicación de CRC a IEEE 802.16, pero también es usado

Page 15: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

15

en otros sistemas. Estos códigos son ampliamente usados en la capa de enlace de

redes de computadores, por ejemplo Ethernet utiliza CRC de 32 bits (CRC-32).

También es usado en los protocolos TCP, IP, UDP, ICMP.

Page 16: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

16

2. CÓDIGOS REED-SOLOMON

2.1 INTRODUCCIÓN

Los códigos Reed-Solomon (denotados códigos RS) fueron descubiertos en 1960 por

los matemáticos Irving Reed y Gustave Solomon, y fueron presentados por primera

vez en su artículo titulado "Polynomial Codes over Certain Finite Fields". La teoría

matemática expuesta en este artículo representó un gran avance, e incluso, fue

necesario esperar varios años hasta que la tecnología alcanzara el desarrollo suficiente

para poderlos implementar de forma práctica. Estos códigos hacen parte de los

códigos lineales de bloque y cíclicos, así mismo son códigos sistemáticos.

El capitulo se organiza de la siguiente manera: Inicialmente se explica el codificar,

seguido por el decodificador y los criterios de diseño de los códigos. Luego se

presentan las simulaciones realizadas para caracterizar su desempeño y su análisis.

Para finalizar, se mencionan las ventajas, desventajas y aplicaciones que encuentran

los códigos Reed-Solomon.

2.2 CODIFICADOR

Debido a que los códigos RS son códigos lineales de bloque y cíclicos, el codificador

es el mismo que el usado en el resto de estos códigos. La descripción del codificador

y decodificador presentados en este capítulo se basa en la explicación que se

encuentra en [Roldán 02]. El diagrama de bloques del sistema es el siguiente:

Page 17: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

17

Figura 2.1. Diagrama de bloques de los códigos Reed-Solomon

La notación usada en esta sección y en el resto del capítulo es la siguiente:

m es el número de bits de cada símbolo.

n = 2m – 1 es el número de símbolos en la palabra código.

k es el número de símbolos en el mensaje.

r = n – k es el número de símbolos de paridad en el mensaje.

t = (n – k)/2 es la capacidad de corrección (el máximo número de símbolos errados

que se puede corregir).

g(x) es el polinomio generador del código.

d(x) es el polinomio mensaje.

c(x) es el polinomio código.

RS(n, k) es un código Reed-Solomon con parámetros n y k.

Recordemos que los códigos RS son códigos sistemáticos, es decir que todos los

símbolos del mensaje están en la palabra código. Es por esto que el número de

símbolos de paridad está dado por el tamaño del código menos el tamaño del

mensaje.

Inicialmente es necesario definir el Campo de Galois en el que se va a trabajar. Esto

se hace a partir del número de bits que tienen los símbolos del mensaje. El Campo de

Galois usado será GF(2m). Una vez se ha construido el Campo de Galois, se calcula el

CodificadorRSX

CANAL

Decodificador RS

MUX

Y

ruido

Page 18: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

18

polinomio generador del código utilizando el álgebra del campo de la siguiente

manera:

r

i

ixxg1

La palabra código es obtenida de la siguiente manera:

xdxxg

xdxModuloxc kn

kn

xdx kn representa un corrimiento en el mensaje. La operación módulo es el residuo

de la división.

A continuación se presenta un ejemplo para clarificar la codificación de un mensaje.

Se escoge m = 2, t = 1. Por lo tanto n = 3, k = 1, r = 2 y se usará GF(22). Según

[Roldán 02], el polinomio generador de este Campo de Galois es 12 xxxp ,

por lo que los elementos del campo son:

Elemento Forma Exponencial Forma Polinomial

0 0 0

1 1 1

2

3 2 1

El polinomio generador es entonces

11 222

1

xxxxxxxxgi

i

El mensaje escogido es d = [3], con lo que 03xxd . El código se calcula a

continuación:

Page 19: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

19

333

31

3

2

022

02

xxxc

xxxx

xxModuloxc

Con lo cual el mensaje enviado es c = [3 3 3]. Es importante recordar que todas las

operaciones se realizan utilizando álgebra de GF(22).

2.3 DECODIFICADOR

Es necesario calcular el “Síndrome” del código recibido para determinar si este es

correcto o si tiene errores. En general, el síndrome está dado por:

xg

xrModuloSindrome

Donde r(x) es el código recibido.

Si el síndrome es 0, entonces el código fue recibido correctamente, de lo contrario

hay errores que se deben intentar corregir (se podrán corregir siempre y cuando el

número de símbolos errados sea menor que t). Otra forma de calcular el síndrome es

la siguiente:

tjrrsn

i

ij

i

j

j 2...,,2,1,1

0

En este caso, es necesario que todos los sj sean iguales a 0 para que el código haya

sido recibido sin errores.

En caso de haber errores, se debe solucionar el conjunto de ecuaciones no lineales:

tjXYXYXYsj

zz

jj

j 2...,,2,1,...2211

Donde 0 < z < t es el número de errores en el mensaje recibido. Los Xj indican las

posiciones en donde están los errores y su respectivo Yj indica el valor del error.

Page 20: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

20

Siguiendo con el ejemplo de la sección de codificación tenemos lo siguiente.

Inicialmente, asumimos que el mensaje fue recibido correctamente, por lo tanto r = [3

3 3], 333 2 xxxr . El síndrome (calculado de la primera forma explicada) es el

siguiente:

01

3332

2

xx

xxModuloSindrome

Por lo tanto se decide que no hay errores y se entrega los k primeros símbolos

correspondientes al mensaje. En este caso d’ = [3] es el mensaje recibido.

Si por el contrario se recibe el código r = [3 3 1], 133 2 xxxr , con un error en

el último símbolo, entonces el síndrome (calculado de la segunda forma explicada)

será:

333

13324

2

21

s

s

Realizando las operaciones en el álgebra de GF(22). Dado que tanto s1 como s2 son

diferentes de 0, hay errores que se deben corregir. Para esto se soluciona (nuevamente

usando álgebra de GF(22)) el conjunto de ecuaciones:

3

12

11

11

XY

XY

2;3 11 YX

Por lo tanto, r(x) tiene un error de valor 2 en la posición 3. Para corregirlo debemos

adicionar 2 de la siguiente manera:

333

233

2

2

22

2

xxxc

xxxxc

xxrxc

Finalmente, el mensaje recibido está comprendido por los k primeros símbolos de

c’(x), por lo que d’ = [3] y el mensaje se ha decodificado correctamente.

Page 21: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

21

2.4 CRITERIOS DE DISEÑO

Según [Wicker 94], un código Reed-Solomon puede corregir t errores donde t está

dado por:

2

1knt

Es posible que algunos símbolos se pierdan. Esto puede ocurrir, por ejemplo, al ser

descartados por el demodulador debido a la recepción de niveles muy cercanos al

umbral de decisión, lo cual implicaría una alta probabilidad de error en la

decodificación. Si v es el número de símbolos borrados (perdidos o descartados) y t el

número de errores, de acuerdo a [Wicker 94], un código Reed-Solomon puede

corregir un paquete de datos mientras que se cumpla lo siguiente:

12 knvt

A partir de este par de ecuaciones, es posible escoger los valores de n y k, los cuales a

su vez determinan el valor de m, r y el Campo de Galois a usar.

2.5 SIMULACIONES

Las simulaciones realizadas buscan analizar el desempeño de los códigos Reed-

Solomon bajo dos condiciones específicas. El primer escenario comprende la

introducción de errores aleatorios a partir de un canal con ruido blanco gaussiano

aditivo (AWGN), y el segundo escenario simula la introducción de errores en ráfaga.

En todos los casos, el código usado es de tipo RS(127, 99), es decir, los parámetros

del código son m = 7, n = 127, k = 99, r = 28.

Page 22: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

22

Debido a que los códigos Reed-Solomon envían y recuperan símbolos no

necesariamente binarios, se caracteriza tanto el SER (Symbol Error Rate), como el

BER (Bit Error Rate) del código utilizado.

El SER y el BER estimado para un canal de tipo AWGN con relación señal a ruido

dBSNR 4 , se obtuvo enviando 500 paquetes de datos. El SER se calculó revisando

el número de símbolos errados después de la decodificación, mientras que el BER se

obtuvo revisando los errores en cada bit. Los resultados obtenidos son los siguientes:

Page 23: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

23

Debido a la naturaleza del canal, vemos que el SER sigue una distribución gaussiana.

Se encontró que la media de esta distribución es 0.3319 y la desviación estándar es

0.0463. Esto quiere decir que el 33.19% de los símbolos enviados en un canal de tipo

AWGN son recibidos incorrectamente.

La simulación obtenida para el BER se presenta a continuación:

Page 24: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

24

Nuevamente, la distribución del BER sigue una distribución de tipo gaussiana. En

este caso, la media fue 0.0563, mientras que la desviación estándar fue 0.0084. Esto

quiere decir que el 5.63% de los bits fueron decodificados incorrectamente.

Page 25: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

25

Encontramos entonces que mientras que el 5.63% de los bits fueron decodificados de

manera errada, el 33.19% de los símbolos no se recuperaron correctamente. Esto es

debido a que en el código usado, cada símbolo está compuesto de 7 bits, y si uno solo

de ellos falla, todo el símbolo es incorrecto. Debido a esto, al introducir errores

aleatorios de forma gaussiana, el desempeño del SER es muy malo, haciendo que este

tipo de códigos no sea efectivo en canales de tipo AWGN. Sin embargo, se concluye

que el tipo de código usado tiene una fuerte repercusión en los resultados obtenidos.

Si se usa un código con símbolos de menor longitud, el desempeño será mejor.

En la siguiente simulación se utilizó el mismo código RS(127, 99), y se varió la

relación señal a ruido (SNR) desde 0 dB hasta 12 dB. En este caso se enviaron 200

paquetes de datos para cada SNR y se promedió el resultado:

Page 26: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

26

Vemos que las gráficas son consistentes con los datos obtenidos anteriormente,

cuando nos encontrábamos situados sobre dBSNR 4 . Encontramos que a medida

que se aumenta el SNR, tanto el BER como el SER disminuyen, sin embargo la

pendiente en la gráfica del SER es más pronunciada que en la obtenida en el BER.

Esto es debido nuevamente a que muchos bits componen un solo símbolo.

Finalmente se simuló un escenario en donde los errores son introducidos en forma de

ráfaga, es decir una gran cantidad de bits seguidos con error. Para esto, se

introdujeron desde 0 hasta 200 bits errados seguidos en el código recibido. El

resultado obtenido es el siguiente:

Page 27: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

27

Recordemos que la capacidad de corrección de este código es 142/99127t .

Lo cual quiere decir que se pueden corregir 14 símbolos, los cuales están compuestos

de 14*7 = 98 bits. Vemos en la gráfica que hasta 98 bits errados en recepción tienen

un BER y un SER de 0, pues todos los errores son corregidos. Desde 99 errores en

adelante el BER está dado por una recta pues todos los bits recibidos con error son

decodificados incorrectamente, mientras que el SER tiene forma escalonada pues

entre l*7 y (l+1)*7, para l entero mayor que 14 el número de símbolos decodificados

de forma incorrecta es el mismo.

Para verificar la validez de los resultados, se comparó el comportamiento del sistema

simulado con los resultados de la bibliografía. En [Odenwalder 76], se presenta la

siguiente gráfica que caracteriza el comportamiento de un codificador RS. La

codificación se realiza con n = 31 y para varios valores de t. Además se utiliza

modulación MFSK 32-aria.

Page 28: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

28

Se implementó el mismo sistema simulado anteriormente, pero en este caso se usó

RS(31, 29), para tener el caso t = 1. También se implementó un bloque modulador

después de la codificación, usando FSK 32-aria. El resultado es el siguiente:

Page 29: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

29

Se puede apreciar que entre para No

Eb entre 3.5 dB y 5 dB, que es donde coinciden la

gráfica de la bibliografía y la teórica, los valores encontrados son bastante parecidos,

concluyendo así que el modelo implementado es válido.

2.6 VENTAJAS, DESVENTAJAS Y APLICACIONES

Una importante ventaja de los códigos Reed-Solomon es que su codificación y

decodificación es rápida. Esto permite usar este tipo de códigos en aplicaciones en

donde se necesita recibir información en tiempo real.

Inicialmente la desventaja se encontraba en que fue difícil encontrar un algoritmo de

decodificación útil. Los algoritmos propuestos inicialmente solo podían decodificar

códigos con pocos errores debido a que al incrementar la complejidad del código, el

tiempo de decodificación crecía de forma que el problema se volvía

computacionalmente intratable. Sin embargo, este problema se solucionó con

posteriores implementaciones en los decodificadores.

Como se pudo apreciar en las simulaciones, hoy en día la principal desventaja se

encuentra en que es necesario usar además un código convolucional para obtener una

baja tasa de error de bit, es por esto que en algunas aplicaciones los códigos Reed-

Solomon han sido reemplazados por los Turbo Códigos.

Las aplicaciones más usadas se encuentran en codificación de errores en CD’s y

DVD’s. Los errores generados en estos tipos de dispositivos de almacenamiento de

datos se deben principalmente a imprecisiones en los movimientos del láser que

escribe la información en el medio. Este tipo de codificación es adecuado en estas

Page 30: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

30

aplicaciones ya que los errores se presentan usualmente en ráfagas, los cuales son

corregidos de manera apropiada tal como se comprobó en las simulaciones.

Hasta ahora, los códigos Reed-Solomon han sido usados en misiones de espacio

profundo de la NASA. De acuerdo a [JPL 06], las sondas Voyager, Galileo y Cassini

usaron una combinación de códigos Reed-Solomon y códigos Convolucionales para

transmitir datos a la Tierra.

Page 31: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

31

3. TURBO CÓDIGOS

3.1 INTRODUCCIÓN

Los Turbo Códigos fueron desarrollados en 1993 por los investigadores Berrou,

Glavieux y Thitimajshima [Berrou 93]. Estos se basan en los códigos convolucionales

y explotan la idea de la transmisión de un par de códigos de manera paralela. Es

importante anotar que los Turbo Códigos representan uno de los mayores avances en

el estudio e implementación de los códigos de corrección de errores, no solo en los

últimos años sino desde que se inició su estudio, pues se acercan al Límite de

Shannon, el cual el determina el límite teórico de la tasa máxima de transmisión de

información sobre un canal con ruido.

Este capítulo se desarrolla de la siguiente manera: a continuación se presenta una

introducción a los códigos de corrección de errores de tipo convolucional,

seguidamente, se presenta el codificador y el decodificador de los códigos

convolucionales. La siguiente sección está dedicada a presentar las simulaciones

realizadas para caracterizar su desempeño junto con su análisis, y finalmente se

mencionan las ventajas, desventajas y aplicaciones de este tipo de código de

detección de errores.

3.2 CÓDIGOS CONVOLUCIONALES

Los códigos convolucionales, como los demás códigos de detección y corrección de

errores, introducen información redundante en los datos a transmitir. La información

redundante es introducida mediante el uso de un codificador compuesto por un

conjunto de registros de corrimiento, cuyas salidas están conectadas entre sí, y un

conjunto de sumadores, que realizan adición modulo 2. En la figura 3.1 se presenta el

esquema de un codificador convolucional típico.

Page 32: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

32

Figura 3.1. Codificador convolucional ejemplo

La entrada al codificador es la secuencia de bits X, y las salidas (paralelas) son C1 y

C2. Para realizar la suma modulo 2, se realiza la operación XOR.

Inicialmente los registros de corrimiento (S) se encentran en el estado “00”, es decir

que cada uno almacena un ‘0’. Cada vez que llega un bit a codificador, el dato

almacenado en cada registro es pasado al siguiente, de forma que el estado cambia y

se tiene en cuenta el nuevo bit.

De acuerdo a las convenciones explicadas en [Huang 97], el decodificador

convolucional se puede representar de varias formas. Los parámetros que definen el

codificador son los siguientes:

- Longitud (k), la cual representa el número de bits que intervienen en la salida,

por lo tanto, está dada por el número de registro de corrimiento más 1 (los bits

que hay en los registro más el bit de la entrada). En el ejemplo de la figura

3.1, k = 3.

X

C1

C2

S S

Page 33: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

33

- Tasa (r), la cual indica la tasa a la que se están codificando los símbolos. Para

un codificador con m bits de entrada por cada símbolo y n salidas, la tasa es

r = m/n. En el ejemplo de la figura 3.1, r = 1/3.

- Polinomio característico (g), el cual es una representación común para

identificar las conexiones en el codificador. g es una matriz de kn , en

donde si el elemento (i, j) es ‘1’, quiere decir que hay conexión entre la salida

del registro j y el sumador de la salida i. De lo contrario será ‘0’. En el

ejemplo de la figura 3.1, 101

111g .

A partir de estos datos, se puede definir una máquina de estados de los registros de

corrimiento, y un “Trellis”, el cual muestra el estado futuro y la salida para cada

estado presente y cada posible entrada. La figura 3.2 muestra el Trellis del

codificador de la figura 3.1. Los números de la izquierda representan el estado inicial,

los de la derecha el estado final, y los de las flechas muestran el bit que entra al

codificador y la salida.

Figura 3.2. Diagrama Trellis de la figura 3.1.

00

01

10

11

00

01

10

11

0 / 00

1 / 10

1 / 11

0 / 11

1 / 00

0 / 10

1 / 01 0 / 01

Page 34: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

34

Existen varios algoritmos para decodificar el código convolucional. En particular, el

algoritmo Viterbi es usado en diversas aplicaciones y será el que utilicemos en la

decodificación de Turbo Códigos.

3.3 CODIFICADOR

El codificador para Turbo Códigos está compuesto de dos codificadores

convolucionales y un bloque para realizar una permutación. Los codificadores suelen

ser del tipo RSC (Recursive Systematic Convolutional) [Huang 97]. La figura 3.3

muestra el diagrama de bloques del codificador para Turbo Códigos.

Figura 3.3. Codificador para Turbo Códigos

La entrada al codificador está representada por la secuencia de bits X. Los

codificadores RCS1 y RCS2 son iguales. Dado que se usan codificadores sistemáticos,

una de las salidas (en este caso C1) es igual a los datos que se introducen. Es decir, el

transmisor envía los datos originales y los códigos generados.

El codificador presentado en la sección anterior es convolucional, pero no es

recursivo. Un codificador recursivo es aquel que tiene realimentación de al menos

una de las salidas de los registros de corrimiento. La figura 3.4 presenta un

codificador convolucional RSC. Este codificador es el que usará en la sección de

simulaciones.

RSC1

RSC2Permutador

X

C1

C2

C3

Page 35: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

35

Figura 3.4. Codificador RSC

El bloque Permutador, genera una permutación conocida del mensaje de entrada. Esta

permutación es codificada y su resultado es transmitido. La idea del permutador es

introducir aleatoriedad al mensaje transmitido, y de esta forma, alcanzar un mejor

desempeño en el momento de realizar la decodificación.

Es importante notar que debido a que los codificadores RSC1 y RSC2 son iguales, el

bloque RSC2 también generará una salida sistemática (igual a los datos de entrada),

sin embargo, esta salida no es transmitida y en el momento de realizar la

decodificación se debe tener cuidado de realizar las permutaciones y permutaciones

inversas necesarias.

3.4 DECODIFICADOR

Debido a que los datos transmitidos están compuestos de la salida de dos

codificadores separados, el decodificador también está compuesto de dos

decodificadores de códigos convolucionales separados. Uno de ellos se encarga de

X

C1

C2

S S

Page 36: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

36

decodificar la los datos codificados por RSC1 y el otro decodifica la salida de RSC2.

Claramente, la salida de ambos debe ser la misma, sin embargo, debido a la

aleatoriedad del ruido introducido en el canal, los resultados no serán iguales.

Para solucionar este problema, y darle mayor robustez a la decodificación, no se

utiliza un algoritmo como el Viterbi. Por el contrario, cada uno de los dos

decodificadores utiliza información a-priori generada por el otro. El esquema

completo de un sistema de codificación y decodificación de Turbo Código se presenta

en la figura 3.5.

Figura 3.5. Sistema de codificación y decodificación de Turbo Código

Cada decodificador calcula la probabilidad de que el bit sea ‘1’ o ‘0’, y le pasa esta

información al otro decodificador, después de un número determinado de iteraciones,

el proceso termina y se escoge el valor del bit. El algoritmo general de decodificación

es el siguiente:

1. Inicializar la información extrínseca del Decodificador 2 (Le2) con un vector

de ceros.

RSC1

RSC2Permutador

XCANAL

Ruido

Decodificador 1

Decodificador 2

Le2 Le1

Page 37: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

37

2. Decodificador 1 recibe la salida sistemática (Y1), el código generado por

RSC1 (Y2) y la información a-priori, La1 = perm-1(Le2). Genera un vector de

probabilidades de los bits recibidos (Lout1).

3. Decodificador 1 genera su información extrínseca (Le1) mediante la ecuación

1111 YLaLoutLe

4. Decodificador 2 recibe como entrada la permutación de la salida sistemática,

perm(Y1), el código generado por RSC2 (Y3) y la permutación de Le1 que es la

información a priori, La2 = perm(Le1). Genera un vector de probabilidades de

los bits recibidos (Lout2).

5. Decodificador 2 genera su información extrínseca (Le2) mediante la ecuación

1222 YpermLaLoutLe

6. Se genera un vector de bits estimados mediante la ecuación:

2/1ˆ2LoutsignpermY

7. Volver al paso 2.

Donde perm() es la función que realiza la permutación de un vector de datos, perm-1()

realiza la permutación inversa y sign() es la función de signo definida como sigue:

0,1

0,0

0,1

x

x

x

xsign

Para generar Lout, existen varios algoritmos de decodificación usando información a-

priori. Entre los más comunes están MAP (Maximum Aposteriori Probability) y

SOVA (Soft Output Viterbi Algorithm). Además, existen algunas optimizaciones del

algoritmo MAP como log-MAP y max-log-MAP que utilizan propiedades de los

logaritmos para simplificar el algoritmo.

Estos algoritmos calculan la siguiente probabilidad:

Page 38: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

38

yxP

yxPLout

0

1log

Por lo tanto, si Lout < 0, sabemos que ymP i 0 > ymP i 1 , lo cual quiere decir

que es mas probable que el bit sea ‘0’. Igualmente, se puede deducir que es más

probable que el bit sea ‘1’ si Lout > 0. De esta forma, se deduce que es adecuado usar

la función sign(Lout) para estimar el valor del bit transmitido.

3.5 SIMULACIONES

En las simulaciones realizadas se supone un canal con ruido blanco gaussiano aditivo

(AWGN). Lo que se pretende es estimar la tasa de error de bit (BER) de los Turbo

Códigos y comparar su desempeño con los otros códigos estudiados.

El sistema implementado es como el mostrado en la figura 3.5, los codificadores

convolucionales son como el mostrado en la figura 3.4. El algoritmo de

decodificación a-priori usado es el SOVA. La permutación se implementó invirtiendo

la cadena de datos. El número de iteraciones entre los dos decodificadores SOVA fue

5.

El BER estimado se presenta a continuación. Se obtuvo transmitiendo 1000 paquetes

de 200 bits y revisando el número de errores obtenidos en un canal con relación de

señal a ruido dBSNR 4 :

Page 39: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

39

Page 40: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

40

Vemos que el BER sigue una distribución gaussiana. Se calculó que la media de esta

gaussiana es 0.0064 y su desviación estándar es 0.0086. Esto quiere decir que el

0.64% de los bits enviados fue decodificado incorrectamente, o lo que es lo mismo, el

99.36% de los bits de decodificó de forma correcta.

La misma simulación se realizó para un sistema convolucional simple con codificador

como el mostrado en la figura 3.4 (el mismo usado para la simulación de Turbo

Códigos). Igualmente, se transmitieron 1000 paquetes de 200 bits a través de un canal

con AWGN cuya relación señal a ruido es dBSNR 4 . Los resultados obtenidos se

presentan a continuación:

Page 41: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

41

Nuevamente, vemos que el BER sigue una distribución gaussiana. En este caso, se

calculó que la media es 0.0852 y la desviación estándar es 0.0312. Esto quiere decir

que el 8% de los bits transmitidos fueron mal decodificados.

En la siguiente simulación, se transmitió y decodificó usando Turbo Códigos. En este

caso se enviaron 200 paquetes de 1000 bits, variando la relación señal a ruido (SNR)

desde 0dB, hasta 12dB:

Page 42: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

42

Es claro, que al aumentar la relación señal a ruido, la señal transmitida es recibida con

una mejor calidad, por lo tanto, la tasa de error de bits disminuye a medida que SNR

crece. Vemos también que en los Turbo Códigos, el BER se acerca al límite

propuesto por Shannon.

La misma simulación se realizó para el codificador convolucional simple, usando el

algoritmo Viterbi para la decodificación. El resultado obtenido se presenta a

continuación:

Page 43: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

43

Gracias a los resultados obtenidos, podemos concluir que la tasa de error de bit de los

Turbo Códigos es muy superior a la que se obtiene usando un codificador

convolucional simple. Sin embargo, se debe mencionar que el tiempo de codificación

y decodificación del Turbo Código es mucho mayor. La simulación se llevó a cabo en

un computador Pentium 4 de 3.0GHz y 1GB de RAM y se encontró que mientras que

la simulación del Turbo Código tomó 5 minutos, la del código convolucional simple

tomó 6 segundos. Es importante tener en cuenta estas diferencias en los desempeños

en el momento de escoger un código para implementar un sistema real.

Para aseguraos de la validez de las simulaciones, se realizaron comparaciones con la

bibliografía revisada. El comportamiento de los Turbo Códigos presentado en [Berrou

93] se muestra a continuación. En este caso, el codificador tiene r = ½ y un

permutador de 256 x 256:

Page 44: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

44

Vemos que los resultados concuerdan con la simulación presentada anteriormente.

Así mismo, se realizó una comparación del codificador convolucional simple con

decodificador Viterbi. En [Heller and Jacobs 71] se utiliza un codificador con r = ½ y

modulación BPSK. El resultado obtenido se presenta a continuación:

Page 45: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

45

Se realizó entonces nuevamente la simulación del codificador convolucional (con el

mismo codificador), pero se adición un bloque de modulación BPSK y k = 7. El

resultado obtenido es el siguiente:

Page 46: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

46

Vemos que la simulación es bastante parecida a los datos de la bibliografía.

3.6 VENTAJAS, DESVENTAJAS Y APLICACIONES

La principal ventaja de los Turbo Códigos, es que se acerca al Límite de Shannon, el

cual es el límite teórico de la tasa máxima de transmisión de información sobre un

canal con ruido. Por lo tanto, es posible aumentar la tasa de transmisión manteniendo

constante la potencia de transmisión.

Por otra parte, las desventajas de este tipo de códigos es que la decodificación tiene

una alta complejidad. Como se mencionó, es necesaria la implementación de un

algoritmo de decodificación con información a-priori. Además, se necesita no uno

sino dos decodificadores que realicen un número de iteraciones. Por esta razón el

tiempo de decodificación es alto, imprimiendo una demora en la transmisión de datos.

Debido a las ventajas y desventajas expuestas, los Turbo Códigos encuentran

aplicación en las comunicaciones satelitales, en donde la alta latencia de

decodificación no es problema debido a que las grandes distancias introducen una

demora aún mayor, la cual domina el tiempo de retraso en la transmisión de la

información.

Finalmente, se acuerdo a [JPL 06], la NASA busca migrar sus futuras misiones

espaciales a esta tecnología. Esto se debe al buen desempeño de los Turbo Códigos en

su BER, y a que en las misiones espaciales de espacio profundo las distancias que

recorre la información son muy grandes, haciendo que el tiempo que domina la

latencia sea la de propagación y no la de decodificación. Sin embargo, es importante

anota que la NASA ha desarrollando hardware especializado para la decodificación

de Turbo Códigos.

Page 47: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

47

CONCLUSIONES

Inicialmente es importante notar que el CRC es un código de detección de errores y

no de corrección de errores. Es decir que si se presenta un error, lo mejor que puede

hacer es encontrarlo y pedir la retransmisión del paquete. Por el contrario, los códigos

Reed-Solomon, Viterbi y Turbo Códigos son códigos de corrección de errores, por lo

que si encuentran un error en la palabra código recibida, intentarán corregirlo.

La siguiente tabla muestra una comparación de las principales características de cada

código.

BER Velocidad Implementación

CRC-8

No tiene BER puesto

que no corrige errores,

sí existe una probabili-

dad de error asociada.

La codificación y

decodificación es

rápida.

Fácil de implementar

pues solo es necesario

realizar división de

polinomios.

Reed-

Solomon

Tiene un alto BER para

un SNR menor a 8dB.

Para SNR mayores, el

BER mejora

significativamente.

En general es lento,

pero depende del

polinomio genera-

dor que defina el

espacio.

En general no es

demasiado difícil de im-

plementar, pero se debe

considerar que se debe

usar el álgebra del

campo de Galoise.

Viterbi

Tiene un buen BER

para SNR menor a 8dB.

Para SNR mayores, el

BER no es tan

representativo.

La codificación y

decodificación se

realiza bastante

rápido.

Fácil de implementar, la

dificultad más grande

está en la implementa-

ción del trellis.

Turbo Tiene el mejor BER de Depende en gran El codificador es fácil de

Page 48: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

48

Códigos todos los códigos

estudiados. Presenta

gran ventaja sobre los

demás y se acerca al

límite teórico de

Shannon.

medida del número

de iteraciones usa-

das para decodifi-

car. En general es

considerado lento y

se debe implemen-

tar en hardware.

implementar (similar a

Viterbi). El decodifica-

dor tiene mayor comple-

jidad pues debe calcular

probabilidades para cada

bit usando un algoritmo

como el SOVA o log-

MAP.

La comparación del BER en todos los códigos se presenta a continuación:

En general, se encontró que si el nivel de ruido al que se encontrará sometida la

transmisión es muy alto y la velocidad de decodificación no es importante, la mejor

opción es usar Turbo Códigos, pues estos tienen un muy alto BER en condiciones de

SNR bajas.

Page 49: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

49

Si por el contrario se debe realizar una decodificación rápida, los códigos que

representan la mejor opción son Reed-Solomon y Viterbi. La selección de uno de

estos dos se encuentra a la relación señal a ruido que se presentará en el sistema de

comunicaciones a usar. Si el SNR es menor que 8dB, se debe usar un codificador

Viterbi, si por el contrario el SNR es mayor que 8dB, es más apropiado un

codificador de tipo Reed-Solomon.

El CRC-8 se debe usar en situaciones en donde se desee mantener un sistema simple

que no realice corrección de errores. Sin embargo, este codificador debe ser usado

solo en situaciones en donde el tiempo de transmisión no sea una variable crítica,

pues es probable que sea necesaria la retransmisión de muchos paquetes.

En general, en sistemas grandes y complejos, la facilidad de implementación no

debería ser una métrica definitiva para la escogencia de un codificador sobre otro.

Esto es debido a que la implementación se realiza una sola vez en el sistema, y la

finalidad última del mismo debe ser la transmisión de datos de forma confiable

transparente para el usuario.

Page 50: ANÁLISIS DE CÓDIGOS DE DETECCIÓN Y CORRECCIÓN DE …

50

BIBLIOGRAFÍA

[Berrou 93] Berrou, C., Glavieux, A., Thitimajshima, P., “Near Shannon Limit error-correcting coding and decoding: Turbo-codes”, Proceedings of IEEE International Communications Conference, 1993.

[Heller and Jacobs 71] Heller, J. A., Jacobs, I. M., “Viterbi Decoding for Satellite and Space Communication”, IEEE Trans. Commun. Technol., vol. COM 19, no.5, October 1971.

[Huang 97] Huang, F., “Evaluation of Soft Output Decoding for Turbo Codes”, Tésis de Maestría en Ingeniería Eléctrica, Virginia Polytechnic Institute and State University, 1997.

[IEEE 04] “IEEE Standard for Local and Metropolitan Area Networks, Part 16: Air Interface for Fixed Broadband Wireless Access Systems”, IEEE, 2004.

[Odenwalder 76] Odenwalder, J. P., “Error Control Coding Handbook”, M/A-COM LINKABIT, Inc. San Diego, Calif., 1976.

[JPL 06] “Communications Systems and Research Section, JPL”, recuperado el 30 de Agosto de 2006 de http://www331.jpl.nasa.gov/public/JPLtcodes.html.

[Roldán 02] Roldán, J. M., “Estudio Sobre las Aplicaciones en Telecomunicaciones de los Códigos Correctores de Error Reed-Solomon”, Proyecto de Grado en Ingeniería Eléctrica, Universidad de los Andes, 2002.

[Wicker 94] Wicker, S. B., Bhargava, V. K., “Reed-Solomon Codes and Their Applications”, IEEE Press, 1994.