• No se han encontrado resultados

Análisis de códigos de detección y corrección de errores en sistemas de comunicaciones inalámbricos

N/A
N/A
Protected

Academic year: 2020

Share "Análisis de códigos de detección y corrección de errores en sistemas de comunicaciones inalámbricos"

Copied!
50
0
0

Texto completo

(1)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.

(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. Asesor RAFAEL CAMERANO. UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELCTRÓNICA BOGOTÁ D. C. 2006. 2.

(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.. 3.

(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. 4.

(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. 5.

(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.. 6.

(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.. 7.

(8) 1.2 CODIFICADOR. El diagrama de bloques del sistema completo de codificación y decodificación es el siguiente:. Modulador Codificador CRC. X. C A N A L. M U X. Y. Verificación CRC. Ruido 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:. cx. § xrd x Modulo¨¨ © g x. · ¸¸  x r d x ¹. c(x) es la palabra código obtenida, g(x) es el “polinomio generador” del código, d(x) es el polinomio mensaje y x r d x 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 g x. particular,. para. el. protocolo. IEEE. 802.16. usa. CRC-8,. en. donde. x 8  x 2  x  1 . 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).. 8.

(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:. x. k=4. x. r=8. x. n = 12. Suponemos que el mensaje es d = [1 1 0 0], por lo que d x. d x xr. x 3  x 2 . Entonces:. x 11  x 10. § xrd x · § x 11  x 10 · ¸¸ Modulo ¨¨ 8 ¸¸ Modulo ¨¨ 2 g x    x x x 1 © ¹ © ¹ 11 10 5 2 c x x x x x. x5  x2. 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. 9.

(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: Sindrome. §r x · ¸¸ Modulo¨¨ ©g x ¹. 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:. x. 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 r x. Sindrome Sindrome. x 11  x 10  x 5  x 2 .. § x 11  x 10  x 5  x 2 Modulo¨¨ 8 2 © x  x  x 1 0. · ¸¸ ¹. 10.

(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].. x. 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 r x. que. hay. un. error. en. el. cuarto. bit,. entonces. x 11  x10  x 8  x 5  x 2 . Sindrome Sindrome. § x11  x 10  x 8  x 5  x 2 Modulo¨¨ x8  x 2  x  1 © x2  x 1 z 0. · ¸¸ ¹. 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:. 11.

(12) 12.

(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.. 13.

(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. 14.

(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.. 15.

(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:. 16.

(17) X. Codificador RS. M U X. C A N A L. Y. Decodificador RS. ruido 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. 17.

(18) polinomio generador del código utilizando el álgebra del campo de la siguiente manera: r. – x D. g x. i. i 1. La palabra código es obtenida de la siguiente manera: cx. § x nk d x · ¸¸  x n  k d x Modulo¨¨ © g x ¹. x n  k d x 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 p x. x2  x 1,. por lo que los elementos del campo son:. Elemento Forma Exponencial Forma Polinomial 0. 0. 0. 1. 1. 1. 2. D. D. 3. D2. D 1. El polinomio generador es entonces 2. g x. – x D. i. x D x D 2. x  D x D 1. x2  x 1. i 1. El mensaje escogido es d = [3], con lo que d x. 3x 0 . El código se calcula a. continuación:. 18.

(19) cx cx. § x 2 ˜ 3x 0 · ¸¸  x 2 ˜ 3 x 0 Modulo¨¨ 2 © x  x 1¹ 2 3x  3x  3. 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: §r x · ¸¸ Modulo¨¨ ©g x ¹. Sindrome 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: n 1. rDj. sj. ¦rD i. ij. j. ,. 1, 2, ..., 2t. i 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: sj. j. j. j. Y1 X 1  Y2 X 2  ...  Yz X z ,. j. 1, 2, ..., 2t. 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.. 19.

(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], r x. 3 x 2  3x  3 . El síndrome (calculado de la primera forma explicada) es el. siguiente: Sindrome. § 3x 2  3x  3 · ¸¸ Modulo¨¨ 2 © x  x 1 ¹. 0. 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], r x. 3x 2  3 x  1 , con un error en. el último símbolo, entonces el síndrome (calculado de la segunda forma explicada) será: s1. D 2  3D  3 1. s2. D 4  3D 2  3 3. 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: Y1 X 1 Y1 X 1. X1. 1 2. 3. 3; Y1. 2. 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: cc x. r x  2x 2. cc x. x 2  3x  3  2 x 2. cc x. 3x 2  3x  3. 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.. 20.

(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: t. « n  k  1» «¬ 2 »¼. 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: 2t  v  n  k  1. 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 ReedSolomon 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.. 21.

(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 SNR. 4dB , 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:. 22.

(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:. 23.

(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.. 24.

(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:. 25.

(26) Vemos que las gráficas son consistentes con los datos obtenidos anteriormente, cuando nos encontrábamos situados sobre SNR. 4dB . 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:. 26.

(27) Recordemos que la capacidad de corrección de este código es t. 127  99 / 2 14 .. 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.. 27.

(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:. 28.

(29) Se puede apreciar que entre para. Eb entre 3.5 dB y 5 dB, que es donde coinciden la No. 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 ReedSolomon 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. 29.

(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.. 30.

(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.. 31.

(32) C1. X. S. S. C2 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.. 32.

(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 n u k , 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, g. ª1 1 1º «1 0 1» . ¼ ¬. 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.. 0 / 00. 00. 00 0 / 11. 1 / 11. 01. 01. 1 / 00 0 / 10 10 0 / 01 11. 10 1 / 01. 1 / 10. 11. Figura 3.2. Diagrama Trellis de la figura 3.1.. 33.

(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.. C1 X. RSC1. Permutador. RSC2. C2. C3. 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.. 34.

(35) C1. X. S. S. C2 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. 35.

(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.. X. RSC1. Permutador. C A N A L. RSC2. Decodificador 1 Le2. Le1. Decodificador 2. Ruido 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.. 36.

(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 Le1. Lout1  La1  Y1. 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 Le 2. Lout 2  La 2  perm Y1. 6. Se genera un vector de bits estimados mediante la ecuación:. Yˆ. perm sign Lout 2  1 / 2. 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:. sign x. ­ 1, x ! 0 ° ® 0, x 0 ° 1, x  0 ¯. Para generar Lout, existen varios algoritmos de decodificación usando información apriori. 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:. 37.

(38) Lout. § P x 1y · ¸ log¨¨ ¸ P x 0 y © ¹. Por lo tanto, si Lout < 0, sabemos que P>mi. 0 y @ > P>mi. 1 y @, 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 SNR. 4dB :. 38.

(39) 39.

(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 SNR. 4dB . Los resultados obtenidos se. presentan a continuación:. 40.

(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:. 41.

(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:. 42.

(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:. 43.

(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:. 44.

(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:. 45.

(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.. 46.

(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. No tiene BER puesto La codificación y Fácil CRC-8. que no corrige errores, decodificación. de. implementar. es pues solo es necesario. sí existe una probabili- rápida.. realizar. dad de error asociada.. polinomios.. Tiene un alto BER para En general es lento, En. división. general. no. de. es. un SNR menor a 8dB. pero depende del demasiado difícil de imReed-. Para SNR mayores, el polinomio. Solomon BER. genera- plementar, pero se debe. mejora dor que defina el considerar que se debe. significativamente.. espacio.. usar. el. álgebra. del. campo de Galoise. Tiene un buen BER La codificación y Fácil de implementar, la para SNR menor a 8dB. decodificación Viterbi. Para SNR mayores, el realiza BER. no. es. tan rápido.. se dificultad más grande. bastante está en la implementación del trellis.. representativo. Turbo. Tiene el mejor BER de Depende en gran El codificador es fácil de. 47.

(48) Códigos. todos. los. estudiados.. códigos medida del número implementar (similar a Presenta de iteraciones usa- Viterbi). El decodifica-. gran ventaja sobre los das para decodifi- dor tiene mayor compledemás y se acerca al car. En general es jidad pues debe calcular límite Shannon.. teórico. de considerado lento y probabilidades para cada se debe implemen- bit usando un algoritmo tar en hardware.. como el SOVA o logMAP.. 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.. 48.

(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.. 49.

(50) BIBLIOGRAFÍA. [Berrou 93] Berrou, C., Glavieux, A., Thitimajshima, P., “Near Shannon Limit errorcorrecting 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.. 50.

(51)

Referencias

Documento similar

La campaña ha consistido en la revisión del etiquetado e instrucciones de uso de todos los ter- mómetros digitales comunicados, así como de la documentación técnica adicional de

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

dente: algunas decían que doña Leonor, &#34;con muy grand rescelo e miedo que avía del rey don Pedro que nueva- mente regnaba, e de la reyna doña María, su madre del dicho rey,

Abstract: This paper reviews the dialogue and controversies between the paratexts of a corpus of collections of short novels –and romances– publi- shed from 1624 to 1637:

Después de una descripción muy rápida de la optimización así como los problemas en los sistemas de fabricación, se presenta la integración de dos herramientas existentes

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de