• No se han encontrado resultados

Códigos de chequeo de paridad de baja densidad

N/A
N/A
Protected

Academic year: 2020

Share "Códigos de chequeo de paridad de baja densidad"

Copied!
61
0
0

Texto completo

(1)Universidad Central “Marta Abreu” de Las Villas. Facultad de Ingeniería Eléctrica. Departamento de Telecomunicaciones. TRABAJO DE DIPLOMA. Códigos de chequeo de paridad de baja densidad Autor: Rafael Fernando Treto Carriles. Tutor: MSc, David Beltrán Casanova. Santa Clara 2008 "Año 50 de la Revolución".

(2) Universidad Central “Marta Abreu” de Las Villas Facultad de Ingeniería Eléctrica Departamento de Telecomunicaciones. TRABAJO DE DIPLOMA. Códigos de chequeo de paridad de baja densidad Autor: Rafael Fernando Treto Carriles E-mail: treto@uclv.edu.cu Tutor: MSc, David Beltrán Casanova Prof. Asistente, Dpto. de Telecomunicaciones Facultad de Ing. Eléctrica. UCLV. E-mail: dbeltranc@uclv.edu.cu. Santa Clara 2008 "Año 50 de la Revolución".

(3) Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central “Marta Abreu” de Las Villas como parte de la culminación de estudios de la especialidad de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el mismo sea utilizado por la Institución, para los fines que estime conveniente, tanto de forma parcial como total y que además no podrá ser presentado en eventos, ni publicados sin autorización de la Universidad.. Firma del Autor Los abajo firmantes certificamos que el presente trabajo ha sido realizado según acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe tener un trabajo de esta envergadura referido a la temática señalada.. Firma del Autor. Firma del Jefe de Departamento donde se defiende el trabajo. Firma del Responsable de Información Científico-Técnica.

(4) i. DEDICATORIA. •. A mi familia.. •. A mis amigos de siempre..

(5) ii. AGRADECIMIENTOS. •. A mi Tutor David Beltrán.. •. A mi familia por apoyarme en este proyecto.. •. A mis compañeros de aula por toda la ayuda brindada.. •. A la SEDE pedagógica infantil de Sancti Spíritus..

(6) iii. TAREA TÉCNICA. 1. Búsqueda bibliográfica y estudios relacionados con el tema de los códigos de chequeo de paridad de baja densidad (LDPC). 2. Descripción de la estructura, caracterización y desempeño de los códigos LDPC. 3. Caracterización de las métricas para la selección de un código LDPC. 4. Analizar esquemas que empleen codificadores LDPC.. Firma del Autor. Firma del Tutor.

(7) iv. RESUMEN. Los Códigos de Chequeo de Paridad de Baja Densidad (LDPC) fueron introducidos por Gallager en 1960, sin embargo se ignoraron por largo tiempo. Desde 1993 estos códigos han experimentado un renacimiento, siendo en la actualidad de los más estudiados. En esta tesis se trata la estructura básica de los códigos LDPC, la representación gráfica y el algoritmo iterativo que se usa para su decodificación. También se abordan los diferentes métodos de diseño centrados en aplicaciones de radiocomunicaciones y se muestran algunas aplicaciones que utilizan estos códigos como son: algoritmos de encriptación avanzados, Digital Video Broadcasting por satélite de segunda generación (DVB-S2), enlaces ópticos y su aplicación en el esquema de la TV digital china..

(8) v. TABLA DE CONTENIDO. DEDICATORIA. i. AGRADECIMIENTOS. ii. TAREA TÉCNICA. iii. RESUMEN. iv. TABLA DE CONTENIDO. v. INTRODUCCIÓN. 1. CAPÍTULO 1 ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 5. 1.1 Modelo general de un sistema de comunicaciones digitales. 5. 1.2 Códigos de paridad. 6. 1.3 Códigos de Chequeo de Paridad de Baja Densidad. 6. 1.4 Representación de los códigos LDPC. 7. 1.4.1 Representación matricial. 7. 1.4.2 Representación gráfica: Gráfico de Tanner. 7. 1.5 Códigos LDPC regulares e irregulares. 9. 1.6 Decodificación. 9. 1.6.1 Decodificación por decisión rígida. 9. 1.6.2 Decodificación por decisión suave. 12. 1.7 Codificación. 15.

(9) vi CAPÍTULO 2 DISEÑO Y SELECIÓN DE CODIGÓS LDPC. 17. 2.1 Introducción. 17. 2.2 Métricas para la comparación entre los códigos LDPC. 17. 2.2.1 Eficiencia de potencia. 18. 2.2.2 Complejidad computacional del decodificador. 19. 2.2.3 Estructura del decodificador. 20. 2.2.4 Estructura del codificador. 20. 2.3 Diseño de códigos. 23. 2.3.1 Códigos LDPC regulares. 23. 2.3.2 Códigos de Crecimiento Progresivo de Líneas o PEG. 24. 2.3.3 Códigos multilíneas. 24. 2.3.4 Códigos construidos con acumuladores y otros elementos simples. 25. 2.3.5 Códigos protográficos. 26. 2.3.6 PEG circulante. 28. 2.3.7 Implementación del codificador. 30. 2.4 Selección del código. 31. 2.5 Conclusiones. 32. CAPITULO 3 APLICACIONES DE LOS CÓDIGOS LDPC. 34. 3.1 Introducción. 34. 3.2 DVB-S2 (Digital Video Broadcasting - Sattelite - Second Generation). 34. 3.2.1 Forward Error Correction (FEC) 3.3 Mensajes cifrados con AES (Advanced Encryption Standard) 3.3.1 Introducción 3.3.2 Comparación entre la transmisión sin codificar y la. 35 37 37.

(10) vii transmisión utilizando el algoritmo AES, en un canal con ruido blanco Gaussiano 3.3.3 Esquema combinado de un código LDPC y el algoritmo AES. 37 39. 3.3.4 Implementación práctica, combinado de un código LDPC (2560,1280) y el algoritmo AES (128bits). 40. 3.4 El estándar digital de TV china DTMB (Digital Terrestrial Multimedia Broadcasting). 41. 3.4.1 Antecedentes generales. 41. 3.4.2 El sistema DTMB. 41. 3.4.3 Descripción de codificación del canal. 42. 3.4.4 El bloque FEC (Forward Error Correction). 42. 3.5 Códigos LDPC con OFDM para comunicaciones ópticas. 44. 3.5.1 Ventajas de los códigos LDPC con OFDM para comunicaciones ópticas. 45. CONCLUSIONES Y RECOMENDACIONES. 47. REFERENCIAS BIBLIOGRAFICAS. 48. ANEXOS. 51.

(11) INTRODUCCIÓN. 1. INTRODUCCIÓN. Muchas de las acciones cotidianas por no decir que la mayoría, se realizan en forma digital (desde teléfonos, compras en las tiendas, hasta la música de un CD); por consiguiente, día a día se incrementan las enormes cantidades de datos generados y a la hora de transmitirlos pueden aparecer interferencias que eviten que éstos sean recibidos exactamente como fueron enviados. Cuando se detecta un error, una posible solución es que el receptor solicite al emisor la repetición del bloque de datos transmitido; esta técnica se denomina ARQ, Automatic Repeat Request. Existen algunas aplicaciones en las que no es posible pedir la retransmisión de los datos pues resulta poco eficiente y supone un alto gasto económico, por lo que el mensaje debe ser corregido de alguna forma en el destino. Es en estas situaciones cuando se utilizan los denominados Códigos Correctores de Errores (ECC, Error Correcting Code), nacidos en los años cincuenta y paralelamente a las primeras computadoras. Esta técnica de corrección de errores es denominada FEC (Forward Error Correction). El problema que aparece es: si existe la posibilidad de detectar y corregir los errores producidos para que el mensaje inicial pueda ser recuperado. En los últimos años se ha avanzado mucho en la comprensión y la habilidad para diseñar sistemas de codificación y decodificación iterativas. Se desarrollan y prueban Códigos de Chequeo de Paridad de Baja Densidad (Low Density Parity Check, LDPC) que fueron introducidos originalmente por Gallager en 1960, cuando presentó una tesis doctoral muy significativa ¨Low-Density Parity-Check Codes¨ [1] en plataformas reconfigurables (FPGAs). Los turbo códigos y los códigos LDPC tienen un gran interés debido a que el rendimiento de la tasa de errores por bit, para una cierta razón señal a ruido se aproxima asintóticamente a los límites teóricos..

(12) INTRODUCCIÓN. 2. El año 1993 fue un importante paradigma de cambio en la esfera de las telecomunicaciones: C. Berrou, A. Glavieux y P. Thitimajshima presentaron un nuevo código corrector de errores, llamado turbo códigos [2]. La teoría de codificación después de 50 años de estudio, pero de lentos progresos, daba de repente un gran salto. La nueva técnica con una complejidad solo ligeramente mayor que los esquemas de codificación estándar, como los códigos convolucionales, permite un desempeño que se aproxima al límite de Shannon en un canal con Ruido Aditivo Blanco Gaussiano, alejándose de este límite solo una fracción de dB. La potencia requerida para una transmisión confiable con códigos convolucionales es típicamente de 3dB por encima del límite de Shannon lo que resulta en algunos casos muchas veces mayor que la necesaria para turbo códigos o códigos LDPC. La decodificación iterativa de los códigos LDPC es el ejemplo arquetípico para ilustrar el principio iterativo de procesamiento de señales. Debido principalmente a la simplicidad de los códigos LDPC, los cuales ponen a disposición las ideas de una forma particularmente transparente. Por esta misma razón muchos de los avances en el entendimiento y análisis de sistemas iterativos se han llevado a cabo en el campo de estos códigos. Recientes mejoras en los diseños e implementaciones de hardware explotan su simplicidad produciendo sistemas de codificación que superan a los turbo códigos con una menor complejidad estructural. ¿Qué hace al procesamiento iterativo de señales un candidato tan atractivo para la mayoría de las comunicaciones y en qué se diferencia este método de los clásicos? Consideren el caso de los códigos correctores de errores. La mayoría de los esfuerzos en materia de codificación en los últimos 50 años, estuvieron enfocados en la construcción de códigos altamente estructurados con una distancia mínima lo más grande posible. La estructura mantiene la complejidad de decodificación manejable, mientras que la gran distancia mínima se supone que garantice un buen desempeño. Este método de búsqueda, sin embargo, tiene grandes desventajas. Irónicamente resulta que encontrar códigos estructurados con distancia mínima grande es un problema mayor que el inicial, es decir, comunicaciones confiables cerca de la capacidad del canal. Encontrar un buen código es en esencia trivial ya que de manera aleatoria se encontrará alguno con una alta probabilidad..

(13) INTRODUCCIÓN. 3. Generalmente se puede construir un buen código si se admite una descripción altamente compleja de este, lo cual es una gran desventaja. Los sistemas de codificación iterativa se basan en un método completamente diferente. La idea básica es la siguiente: los códigos son construidos de manera tal que la relación entre sus bits (la estructura de su redundancia) sea localmente simple, implicando decodificación local simple. La descripción local de los códigos está interconectada de manera compleja, que puede ser aleatoria. La descripción global relativamente compleja se produce a la hora de interconectar las estructuras locales entre si. La decodificación iterativa procede efectuando las decodificaciones locales simples y luego intercambiando los resultados, pasando los mensajes entre los locales a través de las interconexiones complejas. Los locales repiten su decodificación simple teniendo en cuenta la nueva información brindada por los otros locales. Usualmente se utiliza un gráfico para representar este proceso. Los locales se corresponden con los nodos en el gráfico y las conexiones con las líneas. La complejidad en la decodificación iterativa consta de tres partes: los cálculos locales, la complejidad de las interconexiones y el número de veces que se necesitan realizar los cálculos locales, es decir, el número de iteraciones. En la práctica toda esta complejidad es perfectamente manejable. Lo que catapultó a la fama a los sistemas de codificación iterativa y en particular los correctores de errores, fue la observación empírica de que para los códigos con representación gráfica suficientemente esparcida, este algoritmo de manera general subóptimo presenta un desempeño muy cercano a un decodificador óptimo de máxima probabilidad. Afortunadamente la dispersión de la matriz ayuda al desempeño de los esquemas iterativos ya que favorece la reducción de la complejidad. Teniendo en cuenta las perspectivas que para las aplicaciones actuales de los códigos LDPC, el presente trabajo pretende en su objetivo principal, abordar los códigos LDPC y algunas de sus aplicaciones en las telecomunicaciones. El presente trabajo se ha estructurado en tres capitulos, donde se abordan. Capítulo 1: hace énfasis en el problema de la codificación y decodificación. Describe la visualización gráfica que en el caso de los códigos LDPC se conoce como Gráfico de Tanner; se describirán dos clases de algoritmos de decodificación iterativa: uno basado en decisiones rígidas y otro en.

(14) INTRODUCCIÓN. 4. decisiones suaves, así como el mecanismo de codificación. En el Capítulo 2 se exponen cuales son las métricas a comparar si se quiere escoger un códigos LDPC, la relación de compromiso entre ellas y se explican los diferentes métodos de diseño existentes para los mismos. En el Capítulo 3 se obordan algunas de las aplicaciones que hacen uso de los códigos LDPC como son: algoritmos de encriptación avanzados, radiodifusión de vídeo por satélite de segunda generación (DVB-S2), enlaces ópticos y su aplicación en el esquema de TV digital china..

(15) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. CAPÍTULO 1.. 5. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 1.1 Modelo general de un sistema de comunicaciones digitales El modelo general de un sistema de comunicación digital se muestra en la Figura 1.1; en él se pueden distinguir los siguientes elementos: •. Una fuente de información que genera una cadena o palabra de código de k símbolos de longitud.. •. Un proceso de codificación que transforma inequívocamente el mensaje anterior en otro de longitud n mayor que k, sobre el mismo alfabeto u otro diferente, y al que se ha añadido información redundante suficiente como para poder detectar y corregir un número razonable de errores que pudieran producirse durante el proceso de almacenamiento o de transmisión.. •. Un canal a través del cual se transmite el mensaje anteriormente codificado o en el que se almacena dicha información, pudiendo sufrir algunos errores debidos al ruido existente en dicho canal o al deterioro del mismo, en el caso de almacenamiento en soporte digital.. •. Un proceso de decodificación que asigna al mensaje distorsionado por el canal otro mensaje que, en caso de haberse producido como máximo un número determinado de errores, es el mensaje introducido inicialmente en el canal, permitiéndonos así recuperar la información transmitida o almacenada, según el caso..

(16) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 6. Figura 1.1 Modelo general de un sistema de comunicaciones digitales 1.2 Códigos de paridad Se impone una explicación de cómo funcionan los códigos de paridad basados en la adición de un bit a la secuencia enviada, de forma que el número de unos sea par o impar, dependiendo del tipo de paridad: si la paridad es par, el número final de unos debe ser par, de lo contrario el número final de unos debe ser impar. Son códigos sistemáticos, es decir, aquellos códigos en los que la palabra de información aparece de forma explícita en la palabra codificada. Sólo será detector (vuelta atrás) y detectará los errores producidos en un número impar de bits. Existen códigos de paridad con más de un bit de chequeo, si se tiene una palabra de código sin codificar de 21 bit, pudieran asignarse tres bits para el chequeo de paridad, cada uno para siete bits de la palabra original.. 1.3 Códigos de Chequeo de Paridad de Baja Densidad Los códigos LDPC son una clase de códigos de bloque lineales. El nombre les viene de la característica de su matriz de chequeo la cual contiene pocos unos en comparación con la cantidad de ceros. Su principal ventaja es que exhiben un comportamiento que se desempeña bien, incluso cuando están muy cerca a la capacidad del canal. Usan un método de decodificación iterativa y son adecuados para implementaciones que explotan a fondo el paralelismo..

(17) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 7. Estos códigos fueron introducidos por Gallager en su tesis doctoral en 1960. Debido al esfuerzo computacional que trae consigo la codificación y decodificación así como el surgimiento de los códigos Reed-Solomon fueron prácticamente ignorados hasta hace cerca de diez años.. 1.4 Representación de los códigos LDPC Hay dos maneras básicas de representar los códigos LDPC; como todos los códigos de bloque pueden ser descritos por una matriz pero en este caso también es posible mediante representación gráfica.. 1.4.1 Representación matricial Primero véase el ejemplo de la matriz correspondiente a un código LDPC. La matriz definida en la ecuación (1) posee dimensiones n x m para un código (8,4). ⎡0 ⎢1 H= ⎢ ⎢0 ⎢ ⎣1. 1 1 0 0. 0 1 1 0. 1 0 0 1. 1 0 0 1. 0 1 1 0. 0 0 1 1. 1⎤ 0⎥⎥ 1⎥ ⎥ 0⎦. (1). Se definen dos magnitudes que también describen esta matriz Wr para el número de unos que hay en cada fila y Wc para las columnas. Se considera que una matriz es de baja densidad si se cumplen dos condiciones: Wc mucho menor que n y Wr mucho menor que m, es decir, la matriz tiene una baja densidad de unos. Para lograrlo las matrices de chequeo de paridad son usualmente muy grandes, es por ello que el ejemplo no se considera estrictamente de baja densidad.. 1.4.2 Representación gráfica: Gráfico de Tanner Tanner [3] introdujo una representación gráfica efectiva para los códigos LDPC que no solo ofrece una idea completa del código, sino que ayudan a explicar el proceso de codificación y decodificación como se analizará más adelante en esta tesis..

(18) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 8. Figura 1.2 Gráfico de Tanner correspondiente a la matriz en la ecuación (1). Los Gráficos de Tanner de los códigos LDPC son grafos bipartitos con nodos variables en un lado y nodos de chequeo en el otro, estos grafos captan la dependencia estructural entre varios bits. Cada nodo variable corresponde a un bit y cada nodo de chequeo corresponde a una restricción de paridad en los bits para definir una palabra de código. Una restricción de paridad se le aplica a cierto subconjunto de bits de la palabra y esta se satisface si el XOR de los bits participantes es cero o equivalentemente la suma módulo dos es cero. Las líneas en el gráfico conectan siempre nodos de diferentes tipos, indicando que los bits asociados con un nodo variable participan en la restricción de paridad asociada con determinado nodo de chequeo. Una secuencia de bits es una palabra de código si y solo si todas las restricciones de paridad se satisfacen. La Figura 1.2 ejemplifica un Gráfico de Tanner que representa el código de la ecuación (1). La relación de estos gráficos es directa y simple y consiste en m nodos de chequeo relacionados uno a uno con las filas de H (el número de bits de paridad) y n nodos variables relacionados de la misma manera con las columnas de H (el número de bits de la palabra de código). Las líneas en el Gráfico de Tanner corresponden a los unos en H, esto quiere decir que la intercepción entre la i-ésima fila y la k-ésima columna de H es uno si y solo si el iésimo nodo de restricción esta conectado al k-ésimo nodo variable en el gráfico. Esta discusión deja claro por qué los códigos LDPC son de chequeo de paridad. Como la matriz tiene una baja densidad de unos, equivalentemente el gráfico de Tanner tiene una baja densidad de líneas. La importancia de esto no debe ser sobrestimada. La complejidad de la decodificación en los códigos LDPC depende directamente de la.

(19) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 9. densidad de líneas, por lo que el diseñador tratará de mantener esta densidad tan baja como sea posible.. 1.5 Códigos LDPC regulares e irregulares Un código LDPC se considera regular si Wc es constante para todas las columnas y Wr = Wc*(n/m) es también constante para toda fila. El ejemplo anterior es regular con Wc = 2 y Wr = 4. También se puede analizar la regularidad desde el gráfico, es decir, debe llegar el mismo número de líneas a todos los nodos variables y lo mismo para los de chequeo. Si H es de baja densidad pero el número de unos por filas y/o columnas no es constante, el código se considera irregular.. 1.6 Decodificación El algoritmo usado para decodificar los códigos LDPC ha sido descubierto de manera independiente en varias ocasiones lo que trae como consecuencia que tengan varios nombres, los más comunes son: Algoritmo Belief Propagation, Algoritmo Massage Passing o Algoritmo Suma-Producto. Para explicar este algoritmo primero será introducida una variante muy simple que trabaja basándose en decisiones rígidas. Luego el algoritmo será extendido al trabajo con decisiones suaves, mejorándose así los resultados. El desempeño de los códigos será evaluado sobre Canales Binarios Simétricos (BSC). En la decodificación Message Passing los mensajes se intercambian a lo largo de las líneas del gráfico y los cálculos se realizan en los nodos.. 1.6.1 Decodificación por decisión rígida Para la explicación del algoritmo véase el ejemplo introducido en la ecuación (1) y la Figura 1.2. Una palabra de código recibida sin error puede ser C = (10010101). Suponga que hay un error de transmisión en el bit correspondiente a C1..

(20) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 10. 1. En el primer paso todos los nodos variables Ci mandan un “mensaje” a sus nodos de chequeo (siempre dos en nuestro ejemplo) Fj conteniendo el bit que ellos consideran correcto. En esta etapa la única información que tienen los nodos variables es la del receptor correspondiente. Esto significa que por ejemplo: C0 manda un mensaje que en este caso es un uno a F1 y a F3, el nodo C1 manda un mensaje conteniendo Y1 (1) a F0 y F1 y así sucesivamente.. Tabla 1.1. Resumen de los mensajes recibidos y enviados por los nodos de chequeo en el paso 2 del Algoritmo Belief Propagation Nodo. de. chequeo. Recibido / Enviado. Recibido. C1 = 1. C3 = 1. C4 = 0. C7 = 1. Enviado. 0 = C1. 0 = C3. 1 = C4. 0 = C7. Recibido. C0 = 1. C1 = 1. C2 = 0. C5 = 1. Enviado. 0 = C0. 0 = C1. 1 = C2. 0 = C5. Recibido. C2 = 0. C5 = 1. C6 = 0. C7 = 1. Enviado. 0 = C2. 1 = C5. 0 = C6. 1 = C7. Recibido. C0 = 1. C3 = 1. C4 = 0. C6 = 0. Enviado. 1 = C0. 1 = C3. 0 = C4. 0 = C6. F0. F1. F2. F3. 2. En el segundo paso todos los nodos de chequeo Fj calculan la respuesta con los nodos variables conectados. El mensaje respuesta contiene el bit que el nodo Fj cree que es el correcto para cada nodo variable, asumiendo que los demás nodos.

(21) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 11. variables conectados a Fj estén correctos. En otras palabras: si se mira el ejemplo, todo nodo de chequeo está conectado a cuatro nodos variables. El nodo de chequeo Fj mira el mensaje recibido de tres de los nodos variables y calcula el valor que debe tener el cuarto para satisfacer la ecuación de chequeo de paridad. Ver Tabla 1.1. Es importante saber cuándo el algoritmo de decodificación debe terminar: cuando todas las ecuaciones de paridad se satisfagan estando de esta manera en presencia de una palabra de código o cuando se realicen el número máximo de iteraciones.. Tabla 1.2. Paso 3 del algoritmo de decodificación descrito Nodo variable. Yi Recibido. Mensajes desde los nodos de chequeo. Decisión. C0. 1. F1 = 0. F3 = 1. 1. C1. 1. F0 = 0. F1 = 0. 0. C2. 0. F1 = 1. F2 = 0. 0. C3. 1. F0 = 0. F3 = 1. 1. C4. 0. F0 = 1. F3 = 0. 0. C5. 1. F1 = 0. F2 = 1. 1. C6. 0. F2 = 0. F3 = 0. 0. C7. 1. F0 = 1. F2 = 1. 1. 3. En la próxima fase los nodos variables reciben un mensaje de los nodos de chequeo y usan esa información adicional para decidir si el bit recibido originalmente está correcto. Una manera muy simple y difundida es tomar el voto de la mayoría. Si se regresa al ejemplo esto se traduce como: cada nodo variable tiene tres fuentes de información concernientes a cada bit, el bit recibido originalmente y dos.

(22) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 12. sugerencias que vienen de los nodos de chequeo conectados a él. La Tabla 1.2 ilustra este paso. Ahora el nodo variable puede mandar otro mensaje con su decisión rígida del valor correcto a los nodos de chequeo.. 4. Regresar al paso 2.. En el ejemplo la segunda ejecución del paso 2 podría terminar el proceso de decodificación ya que C1 votó por cero en el último paso. Esto corrige el error de transmisión y todas las ecuaciones de chequeo están ya satisfechas. La reunión de información puede ser obviamente extendida a múltiples iteraciones, típicamente se realizan muchas rondas, entre 30 y 60 para cada bloque de datos recibidos [4].. 1.6.2 Decodificación por decisión suave La explicación anterior de decisiones rígida es generalmente usada para propósitos educativos y tener una visión de la idea. La decodificación por decisión suave de los códigos LDPC, basada en el concepto Belief Propagation, es más efectiva y por lo tanto más usada. La idea básica es exactamente la misma que en la decodificación por decisión rígida. Antes de presentar este algoritmo se introducirán algunas notaciones:. •. Pi = Pr (c i = 1 / y i ). •. qij es un mensaje enviado por el nodo variable Ci al nodo de chequeo Fj. Todo mensaje contendrá siempre el par qij(0) o qij(1) y contendrá el bit recibido del canal, es decir, Yi.. •. rji es un mensaje enviado por el nodo de chequeo Fj al nodo variable Ci. Nuevamente hay un rji(0) o rji(1) que indica una opinión actualizada con respecto al valor de un bit, es decir, una nueva opinión con una mayor probabilidad de estar correcta..

(23) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 13. El número de los pasos en la descripción siguiente está en correspondencia con los de la decodificación por hardware.. 1. Todos los nodos variables envían su mensaje qij ya que en este paso no hay mas información disponible, qij (1) = Pi y qij (0) = 1 − Pi .. Figura 1.3 a) Ilustración del cálculo de rji(b) y b) qij(b). 2. Los nodos de chequeo calculan su respuesta rji mediante las ecuaciones (3) y (4) a las cuales se llegó apoyándose en la ecuación (2) descubierta por Gallager.. 1 1 M + ∏ (1 − 2 p i ) 2 2 i =1. (2). La ecuación (2) plantea la probabilidad de que el grupo completo contenga un número par de unos donde M es una secuencia de ai dígitos binarios independientes y probabilidad pi de que ai = 1.. rji (0) =. 1 1 + ∏ (1 − 2qi´ j (1)) 2 2 i´∈V j \i. (3).

(24) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. r ji (1) = 1 − r ji (0 ). 14. (4). Los nodos de chequeo calculan la probabilidad de que haya un número par de unos entre los nodos variables excepto Ci (esto es exactamente lo que significa Vj / i). Esta probabilidad es igual a la probabilidad de que rji(0) si Ci es un cero. En este paso la información usada para calcular la respuesta se ilustra en la Figura 1.3.. 3. Los nodos variables actualizan sus mensajes respuestas a los nodos de chequeo; esto se hace de acuerdo a las ecuaciones siguientes:. qij (0) = Kij (1 − Pi ) ∏rj´i (0). (5). qij (1) = K ij Pi. (6). j´∈Ci \ j. ∏ r (1) j ´i. j ´∈Ci \ j. Las constantes Kij son escogidas de tal manera que garanticen que qij(0) +qij(1) = 1.. Ci / j. significa: todos los nodos de chequeo excepto Fj. De nuevo la Figura 1.3 muestra el cálculo de este paso. En este momento los nodos variables también actualizan su estimación Ci’ de sus variables Ci, calculando la probabilidad para cero y para uno y votando por la mayor. Las ecuaciones usadas son:. Qi (0) = Ki (1 − Pi )∏rji (0). (7). Qi (1) = K i Pi ∏ r ji (1). (8). j∈Ci. j∈Ci. Como se aprecia estas ecuaciones son muy similares a las usadas para calcular qij (b) pero ahora se usa la información que viene de cada nodo de chequeo..

(25) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. ⎧ 1 si Q i (1 ) > Q i (0 ) cˆ i = ⎨ otros ⎩ 0 para. 15. (9). Si el estimado actualizado de la palabra de código satisface todas las ecuaciones de chequeo de paridad el algoritmo termina, de otra manera la terminación ocurre cuando se llegue al máximo número de iteraciones.. 4. Ir al paso 2.. La explicación del algoritmo de decodificación por decisión suave es una variante adecuada para BSC y puede ser modificado para mejorar su desempeño. Se obtendrá un resultado muy cercano a cero para longitudes de bloque grandes. Para prevenir esto es posible cambiarse al dominio logarítmico y realizar adiciones en lugar de multiplicaciones. El resultado es un algoritmo más estable que incluso tiene algunas ventajas ya que la adición es computacionalmente menos costosa.. 1.7 Codificación. Un lector detallista pudo notar que el anterior algoritmo de decodificación es solo corrector de errores. Esto puede ser suficiente para un código de bloque sistemático tradicional ya que la palabra de código consiste en los bits de mensaje y algunos bits de chequeo. En ningún lugar se menciona que es posible ver directamente los bits del mensaje original en un mensaje codificado con un código LDPC pero afortunadamente así es. Algunos códigos son usualmente definidos por el proceso de codificación; los códigos LDPC por otra parte se definen desde la perspectiva de la decodificación. La codificación en los códigos LDPC funcionan de la siguiente manera: se colocan los bits de información en ciertos nodos variables y luego el valor de los restantes nodos variables se determina cuando se satisfacen todas las restricciones de paridad. Para un Gráfico de Tanner dado, el problema del diseño de un codificador radica en seleccionar los nodos en los cuales poner los bits de información y encontrar un método para hallar eficientemente los valores de los.

(26) CAPÍTULO 1. ASPECTOS GENERALES DE LOS CÓDIGOS LDPC. 16. demás nodos. En la superficie puede parecer que la codificación con este tipo de códigos, que incluye la solución de las ecuaciones de chequeo de paridad, trae como consecuencia una complejidad bastante grande: cuadrática con respecto a la longitud de bloque. Realmente, un codificador eficiente es siempre realizable y la complejidad de la codificación es una pequeña parte de la complejidad de la decodificación.. Figura 1.4 Gráfico de Tanner A los efectos de una mayor comprensión en la Figura 1.4 se muestra un Gráfico de Tanner con seis nodos variables y tres nodos de chequeo. Para formar una palabra de código, en este caso, la información se pondrá en los tres primeros nodos variables (de C0 a C2) y se calcularán los valores de los restantes nodos variables de manera tal que se satisfagan las restricciones de paridad. La solución son ocho palabras válidas de seis bits cada una: (000000, 011001, 110010, 111100, 101011, 100101, 001110, 010111)..

(27) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. CAPÍTULO 2.. 17. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 2.1 Introducción. Los últimos años de investigación han demostrado que los códigos LDPC poseen un desempeño en términos de corrección de errores comparable e incluso mejor que los turbo códigos, con algunos beneficios adicionales. Comparado con los turbo decodificadores los decodificadores de LDPC usan una estructura más adecuada para implementaciones en hardware de alta velocidad, además pueden requerir de menos cálculo por bit decodificado. Por estas razones existe interés en seleccionar una familia de códigos LDPC; esta tarea es difícil en sí porque los códigos LDPC son una clase extremadamente amplia y con características muy variables.. 2.2 Métricas para la comparación entre los códigos LDPC. En esta sección se definirán algunas características deseables en un código y se describirán las métricas para cada una de ellas. Obviamente, un código debe tener una buena eficiencia de potencia, requiriendo así un valor pequeño de Eb/N0 para cumplir con una razón de error dada, donde Eb es la energia de bit y N0 es la densidad espectral de potencia de ruido. La eficiencia de potencia es una métrica particularmente importante para aplicaciones de radiocomunicaciones donde las señales recibidas son típicamente de muy baja potencia. El costo de implementación de los decodificadores está determinado por varios factores que incluyen la máxima razón de datos que soporta y la complejidad del decodificador requerido. Para los propósitos de diseño y selección de códigos, la complejidad del decodificador se dividirá en dos métricas: complejidad computacional y estructural; el.

(28) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 18. primero mide el número de cálculos requeridos por bit decodificado y el segundo, la simplicidad de la organización y la planificacion de estos cálculos. En los códigos LDPC el codificador requiere mucho menos cálculos que el decodificador correspondiente por lo que se usará un solo parámetro para medir la estructura del codificador.. 2.2.1 Eficiencia de potencia. Los canales espaciales presentan un comportamiento que está muy próximo al de un canal con Ruido Aditivo Blanco Gaussiano (AWGN) sin considerar los efectos del clima. Se compararan los códigos basándose en su capacidad de corregir errores en función de Eb/N0. La corrección de errores se mide de manera común por la razón de error de bit (BER), sin embargo en algunas aplicaciones la razón de error de palabra de código (WER) es la medida más apropiada.. Figura 2.1 Curvas WER (arriba) y BER (debajo) para el código ARAx16+cPEG Los códigos LDPC presentan un valor de Eb/N0 llamado umbral a partir del cual comienzan a funcionar de manera correcta. Al principio la catarata de la curva cae lentamente pero a medida que se aleja del umbral cae de manera más abrupta como se muestra en la Figura 2.1..

(29) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 19. Los códigos LDPC usualmente se decodifican usando un algoritmo iterativo, explicado con anterioridad, que con un número suficiente de iteraciones alcanza un desempeño cercano a un decodificador de máxima probabilidad, con mucha menos complejidad. Una amplia gama de algoritmos han sido propuestos, cada uno de los cuales introduce una modesta pérdida en el desempeño a cambio de reducir la complejidad computacional, sin embargo la comparación se basará en el algoritmo Belief Propagation.. 2.2.2 Complejidad computacional del decodificador. La complejidad computacional que implica decodificar un código LDPC determina los recursos necesarios para un decodificador que corre a una determinada velocidad. La complejidad computacional es medida mejor en diferentes maneras para diferentes tecnologías de implementación, por ejemplo: software, Field Programmables Gate Arrays (FPGAs) o Application-Specific Integrated Circuits (ASICs); la idea será escoger un parámetro que sea independiente de la implementación. El algoritmo Belief Propagation consta de cálculos en cada uno de los nodos del gráfico para hallar los mensajes de salida que están en función de los mensajes de entrada. Los cálculos se repiten para cada línea en el gráfico, según las iteraciones necesarias. Estas observaciones motivan la nueva definición de complejidad computacional: Complejidad = Ie / k Donde I es el número promedio de iteraciones realizadas, e es el número de líneas en el gráfico y k es la dimensión del código. En realidad la dificultad de los cálculos de cada actualización de un mensaje depende del número de variables de entrada, es decir, del número de líneas conectadas a un nodo; este efecto no está incluido en el cálculo de la complejidad computacional porque se ha probado que es muy pequeño para muchas implementaciones de decodificadores. Los decodificadores por hardware pueden realizar todos los cálculos de un nodo o un grupo de estos simultáneamente. Su velocidad esta limitada por los requerimientos de la memoria de acceso para leer o escribir el valor del mensaje de una línea. Esta complejidad es exactamente proporcional a e..

(30) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 20. 2.2.3 Estructura del decodificador. Adicionalmente al número de cálculos requeridos por el decodificador, el orden en que estos se realizan es también un criterio de selección importante. Un código con nodos de un grado alto es más difícil de decodificar que uno con nodos de bajo grado. Líneas bien organizadas pueden permitir estructuras de memoria más simples, posibilitando el direccionamiento. mediante. contadores. o. simplemente. a. través. de. circuitos. combinacionales, sin necesidad de recurrir a tablas de búsquedas. Se sugieren algunas guías a seguir: a) El grado máximo de los nodos tanto variables como de chequeo será de 10, lo cual reduce la lógica. b) Los códigos protográficos [5] simplifican el proceso de decodificación paralela por hardware. c) El protografo debe tener menos de 300 líneas reduciendo así la complejidad descripcional, es decir, la cantidad de memoria requerida para almacenar la descripción del código. d) El. código. debe. usar. permutaciones. circulantes,. simplificando. así. el. direccionamiento.. 2.2.4 Estructura del codificador. Para los códigos LDPC, como para todos los códigos prácticos, la complejidad del codificador es pequeña con relación a la del decodificador. Un código LDPC, técnicamente hablando, no es más que una matriz de chequeo de paridad; el código estandarizado debe constar en primer lugar de una definición de codificación. Antes de 2001, esto había sido aceptado, excepto en casos especiales. Una matriz esparcida H necesita una matriz generadora G, calculada mediante un proceso homólogo a la inversión de una matriz. El vector de codificación de mensaje m requiere el cálculo de mG, de complejidad computacional cuadrática en k. Richardson y Urbanke [6] demostraron que, en general, la complejidad de codificación es casi lineal en k, siendo cuadrática solo en un pequeño término g que crece mucho más lento que k. Para muchas familias de códigos LDPC g = 0,.

(31) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 21. siendo la complejidad verdaderamente lineal. La complejidad computacional del codificador se reduce a una cuestión de proporcionalidad constante que es altamente dependiente de la tecnología de implementación. La dificultad de construir un codificador está determinada primeramente por su complejidad descripcional, es decir una medida de la cantidad de memoria requerida para almacenar la descripción del código. En general, el método de codificación de Richardson y Urbanke depende de matrices esparcidas que no tienen estructura interna y las localizaciones de los elementos que no son cero deben ser enumeradas. Para los códigos LDPC de mayor interés, son posibles codificadores particularmente bien estructurados. Los códigos Irregular Repeat and Accumulate (IRA) [7] son una clase que atrae la atención y como indica su nombre la codificación consiste en la multiplicación con una matriz esparcida seguido de una ampliación de sumas módulo dos. Los códigos Quasi-Cyclic [8] pueden usar codificadores construidos a partir de registros de desplazamiento. Algunas familias de códigos LDPC se construyen por circulación [15] para bajar la complejidad descripcional. Divsalar y otros autores propusieron el método Accumulate-Repeat-Accumulate códigos (ARA) [9] y los Accumulate-Repeat-AccumulateAccumulate códigos (ARAA) [10] los cuales permiten codificadores particularmente simples de estilos bastante diferentes. La discusión anterior identifica atributos deseables de los códigos LDPC desde la perspectiva de la complejidad del codificador pero falla a la hora de dar parámetros cuantitativos. En su lugar se nos presentan parámetros semi-cuantitativos basados en una escala que va desde cero hasta cuatro estrellas; se sugieren los siguientes criterios: a) g < 10, para mantener la complejidad del codificador cercana a lo lineal con respecto a la longitud de bloque. b) Los. códigos. deben. usar. permutación. circulante. simplificando. así. el. direccionamiento. c) El codificador debe poder construirse con componentes simples como por ejemplo acumuladores. d) Un codificador debe requerir a lo sumo dos acumuladores..

(32) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. Tabla 2.1 Comparación de códigos LDPC. 22.

(33) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 23. 2.3 Diseño de códigos. En esta sección se describirán algunas técnicas para la construcción de códigos LDPC. Comenzando por los códigos clásicos introducidos por Gallager. Se identificarán las debilidades en la construcción y se propondrán nuevas técnicas de construcción para resolverlas. En general, cada uno de los métodos de construcción que vienen a continuación supera a sus predecesores en algunas características pero son peores en otras, resultando una relación de compromiso entre los atributos del código. Por ejemplo: si se hace un diseño para bajar el umbral los niveles de error tienden a subir. Cada uno de los códigos caracterizados se ilustra en la Tabla 2.1, mostrando el desempeño mediante los parámetros desarrollados en la sección anterior. Para facilitar la comparación, todos los códigos tienen razón 1/2 y son aproximadamente de (n = 8000, k = 4000).. 2.3.1 Códigos LDPC regulares. Los primeros códigos LDPC introducidos por Gallager [1] fueron regulares con razón de código 1/2. Dentro de la restricción del grado de los nodos, la matriz de chequeo de paridad se escoge de manera aleatoria. Los resultados para un código típico construido con este método se muestran en la primera fila de la Tabla 2.1. Estos códigos exhiben características bastante pobres en la mayoría de las categorías pero sirven como un punto de referencia bien estudiado. Los gráficos de estos códigos contienen varios lazos pequeños, incluyendo lazos de longitud cuatro. El algoritmo de decodificación por Belief Propagation es conocido por ser óptimo [11] para gráficos libres de lazos y sub-óptimo [12] ante la presencia de más de un lazo porque los mensajes de entrada a los nodos no son independientes. Es aceptado de manera general que el algoritmo Belief Propagation tiene un desempeño bastante pobre en presencia de muchos lazos pequeños y se sabe que dentro de los códigos regulares de razón 1/2 los de Wc = 3 y Wr = 6 son la mejor opción; aquellos que tienen una distribución irregular adecuada presentan un mejor desempeño [13]..

(34) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 24. 2.3.2 Códigos de Crecimiento Progresivo de Líneas o PEG (Progressive Edge Growth). La debilidad en los códigos de Gallager causada por la presencia de muchos lazos pequeños puede ser resuelta diseñando H con más lógica, no escogiéndola de manera aleatoria. Algunos investigadores usan construcción algebraica para controlar los enlaces del gráfico [8], otros usan buscadores computacionales. PEG [14] es un algoritmo de búsqueda computacional para diseñar H bajo ciertas restricciones de grado, trata de prevenir lazos cortos en el gráfico. El algoritmo PEG es inicializado con un gráfico trivial que consiste en n nodos variables, r nodos de restricción y sin líneas. Cada nodo es dotado del número apropiado de “sockets” donde las líneas serán insertadas. PEG entonces procede poniendo líneas una por una que conectan un nodo variable a un socket de nodo de chequeo, maximizando la longitud mínima de los lazos en el gráfico resultante. Un código regular construido usando PEG es mostrado en la segunda línea de la Tabla 2.1.. 2.3.3 Códigos multilíneas. El uso de códigos con nodos de distribución irregular puede bajar el valor umbral; distribuciones con buen grado son derivadas en [15]. Las simulaciones muestran que los códigos construidos haciendo las conexiones de manera aleatoria y con una distribución apropiada presentan niveles de error altos y su desempeño es bastante malo. Métodos de diseño para eliminar los lazos cortos mejoran estos códigos pero no de manera sustancial. Este problema se soluciona dividiendo los nodos en categorías y aplicando restricciones en las conexiones entre nodos de varias categorías. Los códigos multilíneas [16] desarrollados por Richardson son los líderes en estas investigaciones. Para construir un código de este tipo se comienza con una colección de nodos variables y de chequeo, cada uno con sockets sin líneas conectadas para indicar el grado del nodo. Cada socket vacío es asignado a un “color” para designar su tipo de línea; debe haber el mismo número de sockets de un color en los nodos variables y en los de chequeo. Finalmente se dibujan las líneas entre los sockets de los nodos variables y los de chequeo, de manera tal que los colores coincidan. Esta distribución se puede hacer de.

(35) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 25. manera aleatoria o para un mejor resultado, usando el algoritmo PEG descrito anteriormente bajo la adición de las restricciones en los colores.. Figura 2.2 Estructura tipo multilíneas de un Código J, con umbral de 0.5 dB La estructura de un código multilíneas, llamado Código J, se muestra en la Figura 2.2. Su desempeño se refleja en la tercera línea de la Tabla 2.1, nótese que su estructura reduce el umbral a 0.5 dB, es decir, cerca de 0.6 dB mejor que los códigos de Gallager lo que sucede a costa de introducir un nivel de error de WER=10-5 que no existía en la construcción de Gallager. Como se ilustra el uso de nodos variables punctured trae como resultado mejoras significativas en cuanto al valor umbral y provee de libertad adicional en el diseño del código. Típicamente hay un costo adicional en la complejidad del decodificador porque los códigos punctured generalmente usan más líneas por cada bit de información que los unpunctured.. 2.3.4 Códigos construidos con acumuladores y otros elementos simples. Una amplia gama de métodos para la construcción de códigos se han expandido sobre la idea central de Códigos Convolucionales Concatenados en Serie (SCCCs) [17] y los códigos IRA. Los codificadores para buenos códigos pueden construirse a partir de: acumuladores, permutadores, repetidores de símbolos y puncturers periódicos. Un codificador para el código Accumulator-Repeat-Accumulator [9] se muestra en la Figura 3.

(36) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 26. a). Este tiene un valor umbral de 0.52 dB y hay variantes con umbrales tanto mayores como menores.. Figura 2.3 a) Codificador b) Protografo de un código ARA El desempeño de un par de códigos ARA se muestra en las cuarta y quinta filas de la Tabla 2.1. Estos códigos por conveniencia usan un bloque entrelazador muy bien estructurado denotados como II ARA en la tabla; es probable que una permutación bien escogida haga disminuir los niveles de error observados.. 2.3.5 Códigos protográficos. Los códigos protográficos [5] combinan la idea de los códigos tipo multilínea con un caso particular de baja complejidad estructural de decodificadores por hardware. La construcción de estos códigos comienza diseñando un pequeño gráfico bipartito, con np nodos variables, rp nodos de chequeo y e p líneas, con la razón de código, distribución del grado de los nodos y el valor umbral deseados en el código final..

(37) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. protografo. se copia T veces (en este caso tres). 27. permutación de las líneas. Figura 2.4 Proceso de construcción de un protografo Hay varios métodos disponibles para el diseño de códigos protográficos; se ha tenido éxito con una guía de selección manual por experiencia y heurística y con simulación tratando de minimizar el umbral dentro de las restricciones del tamaño del protografo. Cada nodo se replica T veces y cada línea es remplazada por un “paquete” de estas, conectando las copias correspondientes de los nodos de chequeo y variables. Finalmente, cada paquete es separado y reconectado en alguna forma de permutación como se muestra en la Figura 2.4; de allí que se interconecten las copias del protografo original. Esta permutación puede ser seleccionada de nuevo por un algoritmo PEG. El resultado es un código de tamaño ( n = Tn p , k = n − r = Tn p − Trp ). Un decodificador por hardware para códigos protográficos LDPC puede ser construido para procesar una copia completa del protografo en cada ciclo de reloj [18], de allí que se procesen ep líneas por ciclo y se requieran T ciclos para media iteración. Por estas razones el tamaño del protografo debe ser consecuente con el tamaño del hardware disponible. El procedimiento de construcción del protografo debe aplicarse de manera recursiva, es por ello que construir un gráfico completo necesite de dos o más etapas. Este método provee de un código que puede ser decodificado con varios niveles de paralelismo. Muchos códigos protográficos han sido diseñados y probados; algunos significativos se muestran en la Figura 2.4 con sus resultados incluidos en la Tabla 2.1, la cual muestra el alcance de los códigos D239+PEG con un umbral de 0.66 dB y nivel de error WER=10-5 y para Summer1+PEG con un umbral destacadamente bajo de 0.28 dB y un nivel de error WER=10-3. Esta relación de compromiso entre valor umbral y nivel de error es un tema. recurrente en el diseño de códigos LDPC..

(38) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 28. Figura 2.4 Algunos buenos protografos Con la adición de una línea por acumulador para cerrar la cadena de manera que formen lazos que se “muerdan la cola”, los códigos ARA y las variantes descritas en la sección anterior se pueden convertir en códigos protográficos. El código ARA con el codificador mostrado en la Figura 3 a) corresponde al protografo mostrado en la Figura 3 b). Usando preferiblemente el bloque entrelazador descrito con anterioridad, otros entrelazadores pueden ser definidos (implícitamente) mediante el uso de expansión PEG del protografo.. 2.3.6 PEG circulante. Los códigos protográficos, descritos con anterioridad, tienen alguna estructura pero su complejidad descripcional permanece alta porque las permutaciones usadas en cada uno de los paquetes de líneas deben ser almacenadas en memoria en el codificador y el decodificador. En vez de construir con permutaciones aleatorias, con el algoritmo PEG se pueden usar permutaciones descritas algorítmicamente. Un algoritmo simple puede reducir en gran medida la complejidad descripcional a costa de sacrificar libertad en el diseño. Si permutaciones particularmente simples no generan lazos cortos u otros defectos estructurales, el código resultante puede ser muy bueno; por el contrario los defectos se replican y los resultados son desastrosos. Un conjunto de permutaciones particularmente simples son las de desplazamiento cíclico, llamadas de manera común circulantes [19]. Un protografo puede ser expandido usando permutaciones circulantes en lugar de generadas por PEG, reduciéndose la complejidad descripcional desde e p log 2 (T !) bits a aproximadamente e p log 2 T bits. El diseño de.

(39) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 29. códigos protográficos circulantes comienza con la selección de un protografo como se describió anteriormente. Luego los circulantes son seleccionados para el grupo de líneas uno a uno, de nuevo por una variante del algoritmo PEG. Un protografo pequeño tiene pocas líneas y la expansión circulante es suficientemente restrictiva; esto quiere decir que de manera común es imposible evitar palabras de código de bajo peso. Una solución es expandir el protografo al código completo en dos o tres etapas usando algoritmo circulante PEG recursivamente. Cuando el factor de expansión protográfica T es pequeño, como por ejemplo en la primera etapa de una expansión protográfica de etapas múltiples, es a veces ventajoso seleccionar el circulante por simple inspección. La Tabla 2.1 muestra los resultados de códigos tales como: Summer1+cPEG, ARAx2+cPEG y ARAx6+cPEG. El valor umbral para estos códigos coincide con la versión no circulante y se agrega una estrella adicional por la simplicidad del codificador y el decodificador. El código Summer1+cPEG se expandió en una sola etapa usando circulante de tamaño T = 1024. Sin importar el circulante escogido esta expansión inevitablemente genera T palabras de código de peso 9 y su desempeño es pobre. El código ARAx2+cPEG fue expandido en dos etapas, primero por un factor de dos para separar las líneas paralelas (cuando un nodo de chequeo esta conectado a uno variable por más de una línea) y luego por un factor de 1024 para el tamaño completo del código. La construcción inevitablemente genera un código con T palabras de peso 12 dando también un pobre desempeño. El código ARAx6+cPEG fue expandido en tres etapas, primero por T = 2 como la anterior, luego por T = 3 y finalmente por T = 341, su distancia mínima es grande (la palabra de código de menor peso que fue hallada es de 31) y el desempeño del código es similar al del ARAx2+cPEG. El código ARAx16+cPEG también se expandió en tres etapas por T = 2, por T = 8 y por T = 128 dando como resultado un código de tamaño (n = 8192, k = 4096); es de señalar que el número de bits de información en este código es una potencia de dos por lo que el manejo de datos en los microprocesadores puede ser simplificado..

(40) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 30. 2.3.7 Implementación del codificador. Todos los códigos descritos pueden ser codificados sistemáticamente usando el algoritmo de codificación de Richardson y Urbanke near-linear-time [6] y en algunos casos este se vuelve particularmente simple como se mencionó en la sección 2.2.4. Su algoritmo pone una porción de H tan grande como sea posible en forma triangular, más específicamente en la triangular inferior de la matriz, a través de la permutación de filas y columnas. En general, g filas no pueden ser triangularizadas y el algoritmo requiere inversión de una matriz de g x g y multiplicación por algunas matrices con dimensión g. Para los casos especiales donde g = 0, el algoritmo de codificación se reduce a una multiplicación por una matriz esparcida, seguido de sustituciones (debido a la porción triangular de H). De los códigos discutidos solo los ARA y ARAA tienen g = 0 pero muchos tienen g = 1. Esto ocurre cuando el código contiene al menos r nodos variables de grado dos o menor, conectados con nodos de nivel dos en un solo lazo, lo que es bastante común porque la distribución de grados ideal para razón 1/2 incluye muchos nodos de grado dos [15] y el algoritmo PEG tiende a ponerlos todos en un mismo lazo cuando se usa con líneas individuales o con circulantes. Borrando una sola línea para romper el lazo, g se hace cero. La porción triangular inferior de la matriz H puede ser arreglada para contener unos en las diagonales primaria y primera, de manera que el resto sea cero. Esto significa que la etapa back-substitution del algoritmo de codificación de Richardson y Urbanke puede ser. implementada con la realimentación 1/(1+D) del registro de desplazamiento, llamado comúnmente acumulador. En este sentido el método de codificación general de Richardson y Urbanke se reduce a repetición irregular y acumulación es decir codificación (IRA) como ha sido desarrollando por Jin [7]. Algunos de los códigos mencionados anteriormente pueden modificarse para convertirse en IRA mediante la eliminación de una línea del gráfico. Esto tiene muy poco impacto en el desempeño del código y la irregularidad debida a esta eliminación de líneas puede ser acomodada fácilmente en el diseño del decodificador. De allí que sea natural la mejora en los códigos D239, Dpunc y Ex2, cada uno de los cuales merecen una estrella adicional por la baja complejidad del codificador, pues poseen esta característica..

(41) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 31. En la Tabla 2.1 se menciona un método de codificación para cada código. Cuando no hay ningún método simple disponible se menciona el general de Richardson y Urbanke como “R/U”. Algunos códigos permiten el método de Repetición Irregular Acumulación Parcial (IRPA) que es una generalización de IRA. El método protográfico mas circulante crea códigos con matrices de chequeo de paridad Quasi-Cyclic.. 2.4 Selección del código. Para la comparación algunos códigos diseñados por diferentes organizaciones fueron agregados en las últimas tres líneas de la Tabla 2.1. El grupo de trabajo de la Digital Video Broadcasting (DVB) escogió un código estructurado tipo IRA que es muy similar a la. construcción protográfica mas circulante. Estos códigos usan un protografo muy grande y tienen un umbral impreciso pero se desarrollan bien en las demás categorías. El desempeño de una versión reducida de estos códigos se muestra en la Tabla 2.1. Flarion Technologies, Ins. es el líder en diseño de códigos LDPC; los datos de dos de sus códigos se muestran al final de la Tabla 2.1. El primero está diseñado para tener un nivel de error particularmente bajo y el segundo para un buen valor umbral. El método de construcción de estos códigos es propiedad de la empresa, pero hay buenas razones para pensar que son extremadamente similares al protográfico con expansión circulante. Resumiendo la Tabla 2.1, se observa que los tipo multilínea y protográfico tienen valores umbrales entre 0.5 dB y 0.8 dB mejores que los regulares de Gallager. Dentro de la clase de códigos protográficos, los de construcción circulante generalmente presentan la menor complejidad del codificador y decodificador. La ubicación de los niveles de error varía ampliamente entre los códigos construidos con el método protográfico mas circulante, los mejores encontrados son los ARAx6+cPEG y ARAx16+cPEG. A cambio de una mejoría en la complejidad descripcional y el umbral, hay un modesto costo adicional en la complejidad computacional. La selección del mejor código en una aplicación específica depende del peso que tenga cada uno de los parámetros para esa aplicación. Determinar ese valor relativo esta más allá del alcance del diseñador del código. Las características de un código cambian con la razón y la longitud de bloque; una familia de códigos debe ser estandarizada para soportar una.

(42) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 32. variedad de aplicaciones. Es deseable que estos códigos LDPC tengan estructuras similares para simplificar la implementación del codificador/decodificador que pueda soportar varios miembros de la familia.. Figura 2.5 Familia de protografos ARA de razones (x+1)/(x+2) para x mayor o igual a cero. Una manera de definir una familia de códigos con diferentes razones es el uso de protografos anidados. Empezando con el protografo ARA mostrado en la Figura 2.3 b) y adicionando nodos variables de grado tres como se muestra en la Figura 2.5 se tiene una familia de protografos de razones. (x + 1) / (x + 2). para x mayor o igual a cero. Cada. miembro de esta familia contiene al protografo de menor razón. Códigos de diferentes longitudes de bloque pueden formarse usando circulantes de diferentes tamaños.. 2.5 Conclusiones. El diseño y selección de códigos LDPC para su estandarización es un proceso difícil porque hay un gran número de características deseables entre las cuales existe una relación de compromiso y la variedad de estos códigos es inmensa. De los códigos estudiados en la actualidad los ARA protográficos con expansión circulante son los que van a la cabeza. En el diseño de estos, lo más importante es seleccionar el número de etapas en las cuales se expandirá el protografo así como el tamaño del circulante en las expansiones. La complejidad del decodificador es relativamente baja y su.

(43) CAPÍTULO 2. DISEÑO Y SELECCIÓN DE CÓDIGOS LDPC. 33. implementación es particularmente simple ya que usan un protografo pequeño y los nodos de chequeo tienen un grado máximo de cinco. La técnica de expansiones circulantes provee a los códigos de una complejidad descripcional baja tanto en el decodificador como en el codificador. La selección de un pequeño grupo de protografos ARA combinados con circulantes de tamaño apropiado puede generar una familia de códigos muy atractiva con una amplia variedad de razones y longitudes de código..

(44) CAPÍTULO 3. APLICACIONES DE LOS CÓDIGOS LDPC. CAPÍTULO 3.. 34. APLICACIONES DE LOS CÓDIGOS LDPC. 3.1 Introducción. Después de su renacimiento, los códigos LDPC han ganado terreno en diversos campos de las telecomunicaciones y muchos de los nuevos estándares que se confeccionan los incluyen. A partir de las ventajas de los códigos LDPC nuevos estandares de telecomunicaciones han implementado dichos códigos, en el presente capítulo se expondrán algunas de las aplicaciones que hacen uso de los mismos, entre ellas: difusión de video digital. por satélite de segunda generación (DVB-S2), algoritmos de encriptación, la. aplicación en el esquema de TV digital chino y en enlaces ópticos. Estos no son los únicos campos en los cuales se implementan códigos LDPC, también se utilizan en comunicaciones espaciales, redes inalámbricas, estructuras MIMO, entre otras.. 3.2 DVB-S2 (Digital Video Broadcasting - Sattelite - Second Generation). A principios de 2005 se ratificó formalmente el estándar DVB-S2 (DVB-Satélite versión 2), que constituye una evolución del estándar de satélite DVB-S e incluye una fuerte corrección contra errores basada en el empleo de una cascada de dos codificadores. DVB-S2 ha sido diseñado para varias aplicaciones: •. Servicios de difusión (Broadcast Services - BS): Distribución de SDTV (Televisión de definición estándar- Standard-Definition Television) y HDTV (Televisión de alta definición- High-Definition Television)..

(45) CAPÍTULO 3. APLICACIONES DE LOS CÓDIGOS LDPC. •. 35. Servicios interactivos (IS): Los servicios de datos interactivos incluyen por supuesto el acceso a Internet. DVB-S2 ha sido diseñado para proveer servicios interactivos al ordenador personal de los usuarios.. •. Contribución de TV Digital (DTVC – Digital TV Contribution) y Seguimiento de noticias Digitales por Satélite (DSNG – Digital Satellite News Gathering): Las aplicaciones DTVC por satélite son transmisiones punto-a-punto o punto-amultipunto, que conectan unidades up link fijas o móviles a estaciones de recepción.. •. Distribución e intercambio de datos para aplicaciones profesionales que pueden realizarse punto-a-punto o punto-a-multipunto.. 3.2.1 Forward Error Correction (FEC). DVB-S2 utiliza un poderoso sistema basado en el mecanismo contra errores FEC mediante concatenación de BCH (Bose-Chaudhuri, Hocquenghem) con LDPC como código interno. El resultado es que el rendimiento está a veces sólo 0.7dB por debajo del Límite de Shannon. La elección de los parámetros del mecanismo FEC depende de los requisitos del sistema, el código puede cambiar las tasas de las tramas de forma dinámica.. Figura 3.1 Ejemplo de configuración DVB-S2 La concatenación de codificadores Reed-Solomon y Convolucional del estándar DVB-S se sustituye en el DVB-S2 por la de codificadores BCH y LDPC, ambos de bloque, porque esta última concatenación escala mejor, es decir, es más fácil de implementar en el caso de regímenes binarios elevados. En la Figura 3.1 puede observarse que el código externo es el BCH y el interno es el LDPC..

(46) CAPÍTULO 3. APLICACIONES DE LOS CÓDIGOS LDPC. 36. Figura 3.2 Diagrama en bloques de un sistema DVB-S2 El diseño de un sistema FEC adaptativo basado en códigos LDPC se hizo con el objetivo de que pueda modificarse la razón de código de manera simple haciendo uso de un solo codificador/decodificador, siendo compatible con el estándar DVB-S. En la Figura 3.2 se muestra el diagrama en bloques del sistema de TV chino y el lugar que ocupa el bloque de codificación.. Figura 3.3 Gráfica que ilustra el desempeño para varias razones de código ¿Cómo implementa DVB-S2 el cambio de la razón? Se parte de una matriz por construcción estructurada Hb de dimensiones j x k llamada matriz base, luego se expande dicha matriz para lograr un grupo de matrices de.

(47) CAPÍTULO 3. APLICACIONES DE LOS CÓDIGOS LDPC. 37. dimensiones m x n correspondiente a cada una de las razones de códigos deseadas [20]. La expansión se hace sustituyendo cada uno de los elementos de la matriz Hb por una matriz pequeña α de dimensiones p x q o alguno de sus cyclic shifts; en el caso de los elementos en Hb que son cero, se sustituyen por una matriz nula de dimensiones p x q. La mayor razón. de código se tiene cuando α es una matriz cuadrada (p = q), para las razones de código restantes a la matriz α se le agrega un número determinado de filas nulas. DVB-S2 ha estandarizado las siguientes razones para el código LDPC: 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9 y 9/10 (ver Figura 3.3) con las longitudes de código de: 16200 bits trama corta y 64800 bits trama normal; la elección será de acuerdo con la sensibilidad al retardo de cada aplicación específica. Una idea más clara de cómo se comercializan los decodificadores de códigos LDPC se aprecia en el Anexo 1.. 3.3 Mensajes cifrados con AES (Advanced Encryption Standard) 3.3.1 Introducción. El algoritmo de encriptación conocido como AES [21] genera un conjunto de operaciones no lineales sobre el mensaje original (típicamente un bloque de 128 bits de información) que le otorgan una fuerte capacidad de encriptamiento. Sin embargo, este mismo efecto no lineal ocasiona una fuerte propagación de errores. Por ejemplo, cuando se utiliza en una transmisión inalámbrica y frente a la acción del ruido, el desempeño de la tasa de error (BER) se deteriora fuertemente si se compara con la transmisión sin codificar. Esta pérdida fluctúa entre los 2 y 5dB. Esto indica la necesidad de utilizar algoritmos con eficientes técnicas para el control de errores, tales como los códigos LDPC o los turbo códigos. Se puede obtener una mejora en la transmisión de mensajes cifrados utilizando el algoritmo AES al codificar mediante el uso de códigos LDPC; su implementación no sólo produce una mejora en la tasa de error del sistema, sino un incremento en la capacidad de encriptamiento propia del algoritmo AES.. 3.3.2 Comparación entre la transmisión sin codificar y la transmisión utilizando el algoritmo AES, en un canal con Ruido Blanco Gaussiano.

(48) CAPÍTULO 3. APLICACIONES DE LOS CÓDIGOS LDPC. 38. En la Figura 3.4 se observa la tasa de errores en una transmisión de información binaria no codificada que se compara con la transmisión de esa misma información encriptada empleando el algoritmo AES.. Figura 3.4 Transmisión usando el algoritmo AES sin codificar y AES codificado Puede observarse que la utilización del algoritmo de encriptamiento trae aparejada una desmejora importante de la tasa de error con respecto a la transmisión no codificada. Esto sugiere que es necesario recurrir al uso de técnicas de control de error, cuando se pretenda utilizar el algoritmo en esquemas de transmisión que enfrentan canales ruidosos. Si se produce un error en los bits que forman algún elemento del campo Galois Field GF (256) sobre el que opera el algoritmo AES, con cierta independencia respecto de la posición y de la cantidad de bits erroneos que generan en la transmisión, el algoritmo AES produce una propagación de errores que multiplica el número de bits errados respecto de la transmisión sin codificar, por un factor que fluctúa entre L/6 y L. En una situación promediada este factor resulta ser aproximadamente igual a TAES = 74. Esto significa que la tasa de error en bits se incrementa en un factor TAES..

Figure

Figura 1.1 Modelo general de un sistema de comunicaciones digitales  1.2 Códigos de paridad
Figura 1.2 Gráfico de Tanner correspondiente a la matriz en la ecuación (1)
Tabla 1.1. Resumen de los mensajes recibidos y enviados por los nodos de chequeo en el  paso 2 del Algoritmo Belief Propagation
Tabla 1.2.  Paso 3 del algoritmo de decodificación descrito
+7

Referencias

Documento similar

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

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:

Habiendo organizado un movimiento revolucionario en Valencia a principios de 1929 y persistido en las reuniones conspirativo-constitucionalistas desde entonces —cierto que a aquellas

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

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,

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

[r]