ES2319590B2 - Codificador ldpc e interleaver para dvb-s2. - Google Patents

Codificador ldpc e interleaver para dvb-s2. Download PDF

Info

Publication number
ES2319590B2
ES2319590B2 ES200602340A ES200602340A ES2319590B2 ES 2319590 B2 ES2319590 B2 ES 2319590B2 ES 200602340 A ES200602340 A ES 200602340A ES 200602340 A ES200602340 A ES 200602340A ES 2319590 B2 ES2319590 B2 ES 2319590B2
Authority
ES
Spain
Prior art keywords
bits
memory
parity
ldpc
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
ES200602340A
Other languages
English (en)
Other versions
ES2319590A1 (es
Inventor
Victor Fernandez Solorzano
Jesus Miguel Perez Llano
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Universidad de Cantabria
Original Assignee
Universidad de Cantabria
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Universidad de Cantabria filed Critical Universidad de Cantabria
Priority to ES200602340A priority Critical patent/ES2319590B2/es
Publication of ES2319590A1 publication Critical patent/ES2319590A1/es
Application granted granted Critical
Publication of ES2319590B2 publication Critical patent/ES2319590B2/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0071Use of interleaving
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0078Avoidance of errors by organising the transmitted data in a format specifically designed to deal with errors, e.g. location

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

Codificador LDPC e interleaver para DVB-S2. La arquitectura propuesta define una novedosa forma de almacenaje de bits en memoria, almacenando los bits sistemáticos en las primeras filas de forma secuencial y los datos de paridad en las últimas "q" filas, almacenados de forma que valores consecutivos en memoria sean valores separados un valor "q".
Esto permite una codificación del "LDPC" con menos latencia al poder realizar 360 operaciones XOR en paralelo, una acumulación de bits más rápida al acumular los datos de paridad por filas y la realización de un "interleaver" capaz de proporcionar a la salida un símbolo en cada ciclo de reloj para todos los tamaños de trama y "rates" definidas por el estándar. Esto confiere al sistema un elevado throughput, un consumo de memoria reducido, una baja latencia y un área moderado con frecuencias de reloj de hasta 55 MHz con la tecnología Xilinx utilizada.

Description

Codificador LDPC e interleaver para DVB-S2.
Sector de la técnica
Invención enmarcada dentro del sector de las telecomunicaciones y diseño microelectrónico.
Estado de la técnica
La presente invención se refiere a un codificador LDPC y a un Interleaver para la codificación de canal propuesta en el estándar DVB-S2 de difusión por satélite de aplicaciones de banda ancha. Más particularmente a la estrategia de almacenamiento de datos en memoria que permite agilizar tanto los cálculos de codificación LDPC, como la acumulación y la posterior salida a través del Interleaver de símbolos codificados.
Un codificador LDPC, o código de chequeo de paridad de baja densidad (Low Density Parity Check), es un sistema de codificación de canal que obtiene los datos codificados a partir de la multiplicación módulo dos de la palabra de información a codificar con una matriz generadora de código, que es la que define al código LDPC concreto. A su vez, un Interleaver es un sistema que permuta el orden de los datos de entraña, haciendo que a la salida se obtengan los datos de entrada en un orden distinto.
El estándar DVB-S2 es la segunda generación de estándar para la transmisión vía satélite de aplicaciones de banda ancha y ha sido publicado como estándar ETSI EN 302 307 en 2005. DVB-S2 ha sido diseñado para cinco diferentes tipos de aplicaciones satelitales: servicios de transmisión como DVB-S (su predecesor), servicios interactivos, servicios de contribución, servicios de distribución de contenido y servicios profesionales de enlace.
La Figura 1 muestra el diagrama de bloques de la parte de codificación de canal FEC (Fordward Error Correction) establecida por el estándar DVB-S2. El primer bloque (BCH) (16) es relativamente sencillo de realizar y una amplia bibliografía puede ser encontrada al respecto. El diseño es más complejo, por aspectos que se comentarán a continuación, para los siguientes módulos: LDPC (17) e Interleaver (18).
Un codificador de canal LDPC se basa en una matriz de codificación que establece la relación entre los bits de salida, o bits codificados, y los de entrada, o bits de información, esto es, define qué bits de información intervienen en la obtención de cada uno de los bits de salida a enviar por el canal de comunicación pertinente, en este caso el espacio. El caso concreto del codificador LDPC del DVB-S2 se engloba dentro de los denominados codificadores sistemáticos, esto es, la palabra codificada se compone no sólo de los bits de paridad, o bits codificados, sino también de los propios bits de información también llamados sistemáticos (los bits de entrada) (19). En este sistema, los bits de paridad se añaden al final de los sistemáticos para dar lugar a la palabra codificada (20). Cada bit añadido a los de entrada (paridad) (23) se obtiene a partir de la operación XOR (24) de los bits de entrada (21) indicados por la matriz de codificación (22), como puede verse en la Figura 2. Los códigos LDPC fueron originalmente diseñados con matrices cuyas propiedades esenciales eran su dispersión de unos y la aleatoriedad en sus posiciones. La dispersión de los unos aseguraba una baja cantidad de operaciones XOR a realizar y la aleatoriedad mejoraba las prestaciones en cuanto a capacidad de corrección de errores. Sin embargo, a efectos de implementarlo en hardware la propiedad de aleatoriedad es una clara desventaja. Es por esta razón que los códigos LDPC implementados de forma práctica tienen un cierto grado de estructura regular que permite una implementación menos costosa a costa de una pequeña pérdida en las prestaciones. Otro aspecto importante a tener en cuenta a la hora de implementar un codificador LDPC es que las operaciones que define la matriz de paridad sobre los bits de entrada son, en general, operaciones sobre todos los bits de entrada de manera que para el cálculo de la salida de paridad se necesita tener almacenada toda la trama de bits sistemáticos de entrada.
El codificador de LDPC que utiliza el estándar DVB-S2 está basado en un tipo especial de LDPC denominado eIRA (código extendido irregular de repetición y acumulación) cuya matriz de codificación puede verse en la Figura 3. Este tipo de código LDPC consta de dos submatrices H_{1} (25) y H_{2} (26).
La matriz H_{1} del DVB-S2 ha sido dotada con una determinada estructura semi-regular que permite que el cálculo de paridades se realice de forma que un determinado grupo de bits de entrada sólo intervengan en un determinado conjunto de bits de paridad. Por ejemplo, el primer bit sistemático está involucrado en el cálculo de los bits de paridad definidos por el estándar a través de unos punteros que definen la posición de esos bits de paridad (29) y cuyo valor fue elegido de forma aleatoria, mientras que los siguientes 359 bits sistemáticos estarán involucrados en el cálculo de los bits de paridad separados un nº entero de veces "q" (definido en el estándar) (30) de dichos punteros, como se explicará con posterioridad. Por otro lado, el sistema cuenta con una parte de acumulación definida en H_{2} del LDPC, como puede verse en la Figura 3. Esta acumulación debe comenzar tras la fase de sumas sobre los bits de información, lo que provoca un incremento de la latencia considerable. Además, la inclusión en el sistema de un interleaver hace que el problema se agrave, ya que los datos de salida del LDPC no llevan el mismo orden que los datos de salida tras el proceso de interleaving. En el caso del DVB-S2, el interleaver es de tipo bloque, es decir, se reciben los datos por columnas y se emiten por filas.
\newpage
El proceso descrito trabaja sobre tramas de un tamaño que puede alcanzar la cifra de 64800 bits. La complejidad del proceso mencionado y la gran cantidad de información sobre la que tiene que llevarse a cabo hacen que el circuito a diseñar pueda necesitar una gran cantidad de memoria y también producir su salida una cantidad de tiempo muy elevada respecto al momento en que recibe la entrada. A este tiempo se le denomina latencia y se define como el retraso acaecido desde que entra el primer bit de información al codificador y sale el primer dato codificado.
El documento de Takashi Yokokawa, Misa Nakane y Makiko Kan: "A Low Complexity and Programmable Encoder Architecture of the LDPC Codes for DVB-S2", International Symposium on Turbo Codes & Related Topics, Munich, Germany, April 03-07 2006, describe un sistema de codificación para el codificador LDPC del DVB-S2 que es capaz de operar y almacenar palabras de 360 bits por ciclo de reloj. El sistema permite codificar la primera fase del LDPC en un tiempo reducido. Sin embargo, el método de extracción de datos de salida hacia el acumulador permite un grado de paralelismo limitado haciendo dicho proceso de acumulación muy lento e incrementando, en gran medida, la latencia del proceso. Por otra parte, los autores no definen interleaver alguno ni dan pautas para su posterior diseño. En cualquier caso, el proceso de interleaver que se tendrá que realizar sobre los datos ordenados que se obtendrán a la salida del módulo LDPC incrementará considerablemente la latencia reportada por los autores. La latencia de este sistema queda definida por la fórmula: N_{LDPC}/8+45 tan sólo para la codificación del LDPC (es decir, sin tener en cuenta el proceso de interleaving) y donde N_{LDPC} representa el tamaño en bits de la trama a la salida del LDPC, es decir, 64800 bits para la trama normal y 16200 para la corta.
A su vez, se da a conocer una IP (Bloque de Propiedad Intelectual) diseñada por Xilinx de todo el bloque Forward Error Correction (FEC) del DVB-S2 (esto es, el codificador BCH, el codificador LDPC y el interleaver) referenciada como: Xilinx LogiCore DVB-S2 FEC Encoder v1.2, January 18, 2006. La arquitectura propuesta por dicha IP presenta un área reducida, pero por el contrario adolece de una latencia muy superior que la del sistema aquí presentado. La latencia de este sistema queda definida por la fórmula: N_{LDPC}/W+K_{BCH}/W+K_{rate}, donde W está definido con valores de 1 y 4, y K_{rate}, no viene especificado y K_{BCH} es el número de bits de la trama de entrada al codificador BCH.
Breve descripción de la invención
Para resolver o reducir los problemas anteriores, el objetivo esencial de la presente invención es proporcionar un codificador LDPC e interleaver capaces de reducir la latencia en la medida de lo posible, proporcionando además una velocidad de salida de datos elevada, así como un área y un consumo de memoria reducidos. Para conseguir estos objetivos la invención presentada se apoya en una distribución de los bits sistemáticos y de paridad de la siguiente manera: Como puede verse en la Figura 5, los bits sistemáticos son almacenados secuencialmente en las palabras de la memoria mientras que los bits de paridad se almacenan separados una cantidad "q" (valor definido en el estándar dependiente de la tasa y sistema de modulación elegidos).
Como se verá con más detalle en la posterior descripción detallada, este sistema de almacenamiento de memoria permite realizar los cómputos con una latencia reducida durante varias fases de la codificación.
En primer lugar permite operar y almacenar palabras de 360 bits en un solo ciclo de reloj durante la primera fase de la codificación LDPC. Los bits son leídos en palabras de 360 bits sistemáticos en una misma fila de la memoria y se actualizan 360 bits de paridad también extraídos de una única fila de la memoria. Al usar memorias de doble puerto esta extracción puede realizarse en el mismo ciclo de reloj.
En segundo lugar, la distribución de bits de paridad en la memoria permite realizar el proceso de acumulación con un alto grado de paralelismo con lo que se realiza todo el cómputo de acumulación en un reducido número de ciclos de reloj.
Por último, el proceso de Interleaving puede realizarse sobre la propia estructura de datos en la memoria extrayendo un símbolo por ciclo de reloj.
Lo expuesto anteriormente así como los objetivos, características y ventajas de la presente invención resultarán más evidentes haciendo referencia a la descripción, reivindicaciones y los dibujos adjuntos proporcionados a continuación.
Breve descripción del contenido de las figuras
La Figura 1 es la distribución de bloques definidos por el estándar DVB-S2 para su parte FEC.
La Figura 2 es un ejemplo de matriz de codificación de un código LDPC.
La Figura 3 es la definición de la matriz de codificación LDPC de tipo eIRA.
La Figura 4 representa la matriz de codificación LDPC definida por el estándar DVB-S2.
La Figura 5 es la distribución de memoria definida para la invención presentada, así como la estructura de operaciones.
La Figura 6 es la topología de doble memoria utilizada en la invención.
La Figura 7 es la organización del almacenamiento de punteros en la memoria de punteros.
La Figura 8 representa la arquitectura de operaciones XOR en paralelo para la obtención de bits de paridad de la invención.
La Figura 9 es el comportamiento en el tiempo de nuestra arquitectura.
La Figura 10 es la distribución en estados del proceso de acumulación definido para la invención y un esquema de cómo se realizaría dicha acumulación.
La Figura 11 es la distribución en columnas del interleaver definido en el estándar DVB-S2.
La Figura 12 es la tabla de permutaciones posibles definidas por el interleaver del estándar.
La Figura 13 es el esquema de formación de símbolos proporcionados a la salida de la invención propuesta.
La Figura 14 es un ejemplo de cambio del número de bits sistemáticos y paridad de un símbolo.
La Figura 15 es la tabla de resultados de la arquitectura propuesta.
Descripción detallada de la invención
El estándar DVB-S2 define una matriz de codificación H, con una estructura determinada (Figura 4) que simplifica la codificación con respecto a un sistema basado en una matriz completamente aleatoria. En el apartado correspondiente a la codificación LDPC, el estándar establece las dos fases correspondientes a un codificador de LDPC basado en eIRAs. En la primera, cada bit sistemático múltiplo de 360 (360*k) (con k=0, 1, 2, 3...) interviene en el cálculo de los bits de paridad de la fila "k" definida en las tablas de punteros del estándar (28), y el resto de los bits sistemáticos (360*k+j con j=1,2,...359) intervienen en los bits de paridad de la fila de punteros sumando a dicho puntero "j*q"; es decir, si i_{0} interviene en p_{30}, i_{1} lo hará en p_{30+q}, i_{2} en P_{30+2q} y así sucesivamente. En la segunda fase se realiza la parte de acumulación en la que cada bit de paridad se acumulará, mediante la operación XOR, con el bit de paridad anterior salvo en el caso del bit de paridad 0 que permanece invariable (27). Uno de los mayores problemas de esta arquitectura es la complejidad de la misma, ya sea traducida en el tiempo empleado en el cálculo o en el número de operaciones involucradas en el mismo, ya que el número de bits sistemáticos puede alcanzar los 58320 y el número de elementos en una fila de punteros puede llegar hasta 13.
La arquitectura objeto de la invención, que puede verse en la Figura 6, requiere dos memorias de tamaño igual al tamaño de trama máximo definido por el DVB-S2. El objeto del uso de dos memorias es leer de una de ellas (37), realizando el proceso de interleaving, la salida de datos del sistema mientras se escribe en la otra (38) los datos codificados, de forma que se pueda mantener el flujo de datos de salida constante (39).
La arquitectura propuesta basa su potencial en la novedosa forma de almacenamiento de datos en las memorias antes mencionadas. En la Figura 5 puede verse como, por una parte, los datos sistemáticos (la entrada al codificador LDPC) son almacenados en la parte alta de la memoria (31), esto es, en las primeras 180-q filas en el caso de la trama normal o primeras 45-q filas en el caso de trama corta, donde "q" es un parámetro definido por el estándar, de forma secuencial, esto es, consecutivamente en cada una de las filas (una fila se corresponderá con una dirección de la memoria) de dicha memoria. En cuanto a los datos de paridad del LDPC, éstos serán almacenados en la parte baja de la memoria (últimas "q" filas de la memoria) (33) de forma que en una misma fila se almacenen datos de paridad separados una cantidad "q".
Cada memoria tendrá como dimensiones 180 filas y 360 bits por cada una de las filas, obteniéndose así los 64800 bits que define el estándar como trama normal. En el caso de la trama corta, se utilizarán 45 filas de las 180, obteniéndose así los 16200 bits definidos como tamaño de trama corta en el estándar. El objeto de disponer la memoria en palabras de 360 bits viene dado por la regularidad definida en el DVB-S2 por la que cada 360 bits sistemáticos consecutivos intervienen en el cálculo de 360 paridades separadas un valor de "q" como puede verse en la Figura 4. De esta forma se pueden almacenar, en un solo ciclo de reloj, los 360 bits de paridad calculados (también en un solo ciclo) con 360 bits sistemáticos consecutivos.
A su vez, se define una forma de almacenaje de punteros en otra memoria (41) en la Figura 5, donde los punteros (40) son definidos por el estándar e indican con qué bit de paridad debe operar un determinado bit sistemático, de forma que en vez de almacenar los punteros tal y como están definidos por el estándar, se almacenan de forma que directamente indiquen la fila (42) y elemento de fila (43) que contiene al bit de paridad con el que se debe operar.
El proceso de codificación de los 360 bits correspondientes seria el siguiente: en un ciclo de reloj la memoria de punteros (40) indica la fila de memoria de datos a leer. Los 360 datos leídos se guardan en un registro (Reg2. en (35)) y se desplazan sobre sí mismos un número de bits igual al indicado por la memoria de punteros (40) mediante el uso de un elemento denominado "barrel shifter" (36) con objeto de que el primer bit de paridad en el Reg2. sea aquel que debe operarse con el primer bit sistemático almacenado en otro registro (R.eg1. en (35)). Una vez realizada la operación (las 360 XORs en paralelo correspondientes a los 360 bits almacenados en cada uno de los registros), los datos resultantes (nuevas paridades) se almacenan en la posición de memoria de la que fueron leídos (es decir, se actualizan los datos de paridad).
La distribución de la memoria de datos propuesta permite, como puede verse en la Figura 8, que se puedan realizar 360 operaciones (XORs) (44) de cálculo de paridades en un único ciclo de reloj, aumentando así la velocidad de procesado del sistema. Otro aspecto importante a considerar es el grado de paralelismo a la salida del módulo BCH que es quien proporciona la entrada al LDPC. Un grado de paralelismo de "a", siendo "a" la cantidad de bits que podamos recibir a la entrada del LDPC en paralelo (en un ciclo de reloj), hace que para recibir los 360 bits con los que el LDPC va a operar, transcurran 360/a ciclos de reloj. Dado que el sistema global (incluido el interleaver) va a proporcionar datos de forma continua (Figura 6 (39)), debemos asegurar que para el caso más restrictivo el sistema pueda proporcionar los datos de salida de forma continua. En el caso del estándar DVB-S2 dicho caso nos da 12960 ciclos, es decir 64800/5, que es el número de bits de una trama divididos por el número de bits proporcionados a la salida por cada ciclo (al estar en ese caso los símbolos constituidos por 5 bits). Podemos realizar el cálculo del tiempo que debemos emplear para codificar una trama (Figura 9) como el tiempo que se tarda en recibir una trama completa de salida del BCH (N_{bch}/a) (46), más un tiempo extra de codificación del último bloque de datos provenientes del BCH (47) (en el peor caso es 26 ciclos, como se explicará a continuación) más el tiempo que se tarda en realizar la acumulación (48). Dado que el número de ciclos que emplearemos para codificar una trama será entonces de N_{bch}/a + t_{acum} + 26 como se ve en la Figura 9, el sistema define un a>4 para cumplir la ecuación 12960>=N_{bch}/a + t_{acum} + 26, ya que el caso de mayor N_{bch}, definido por el estándar es 58320 y el t_{acum} es menor de 600 ciclos como se verá al hablar del proceso de acumulación. Por otro lado, el tiempo que se tarda en recibir un bloque de datos de 360 bits del BCH (45) debe ser mayor o igual que el tiempo que se emplea en codificar el bloque anterior (49). Al no poder escribir y leer a la vez en la misma dirección de memoria, 360/a debe ser menor que 2*(max_punteros_por_fila) (49) (un ciclo para leer de la dirección indicada por el puntero, y otro para operar y escribir en la misma dirección), donde max_punteros_por_fila define el número máximo de bits de paridad en los que interviene un bit cualquiera sistemático, como puede verse en la Figura 4 (28), y que en el caso del estándar resulta ser de 13. Es decir, max_punteros_por_fila es lo que se suele denominar el máximo grado de bit de la matriz de paridad del código LDPC. Esto lleva a que "a" deba tener un valor menor que 14. Con estos datos, la arquitectura propuesta define claramente unos valores de "a" que van desde 5 a 13 (ambos incluidos).
La segunda parte de la arquitectura consiste en la acumulación de los bits de paridad, de forma que cada bit de paridad p_{i} quedará definido, una vez realizado el cálculo completo con los correspondientes bits sistemáticos, como p_{i} XOR p_{i-1}, con salvedad del p_{0} (el primer bit de paridad) que permanece invariable. Dicho proceso realizado de forma iterativa y secuencial llevaría un número de ciclos igual al número de bits de paridad.
Por el contrario, la arquitectura presentada permite realizar el cálculo completo en un tiempo mucho menor, gracias al uso de la distribución de memoria previamente comentada.
La estrategia seguida para acumular los valores de todos los bits de paridad se esquematiza según un ejemplo más pequeño que puede verse en la Figura 10 en el que la memoria (50) tiene 12 elementos con 3 elementos por fila y cuatro filas, y sigue el proceso siguiente:
En primer lugar se leerán las primeras 2 filas de paridad, realizando la XOR de cada bit de paridad con el anterior, almacenando el valor del bit calculado (51). Al final de este primer paso se obtendrá el valor correcto (acumulado) de los dos primeros bits de paridad (52), mientras el resto tendrán valores provisionales (53). Esto mismo se realizará para cada dos filas consecutivas de paridad hasta la penúltima. Este proceso se ha etiquetado en la Figura 9. como estado AS1.
En el siguiente estado AS2, se leerán las dos últimas filas de paridad y se obtendrán valores definitivos (con la acumulación realizada) de todos los bits de la última fila mediante el proceso siguiente: el primer bit de la última fila se operará con el primero de la penúltima, obteniéndose un valor definitivo (54). El segundo bit de la última fila se operará con el primero de la última fila (recién calculado) y el segundo valor de la penúltima fila (55). Y así sucesivamente se operara cada valor de la última fila con el anterior de dicha fila y el mismo de la penúltima. Al final del proceso, como ya hemos comentado, se obtendrán valores definitivos de la última fila (56).
En el estado AS3 se leerán la última fila y cada una de las demás, obteniendo valores definitivos de cada bit, al calcular dicho valor como la XOR entre él mismo y el valor anterior de la última fila (57).
Este proceso, en caso de realizarse cada lectura de dos filas y correspondientes operaciones en un ciclo, tendría un retraso de 4*numero_de_filas-5 ciclos. En el caso de la arquitectura diseñada (para la que se ofrecerán posteriormente datos finales), el sistema trabajará con un solo reloj con una frecuencia igual a la velocidad de los símbolos de salida del sistema completo. Esta velocidad tendrá un valor máximo de 55 Msym/s por ser un valor típico dentro del sector espacial en la actualidad. Para éste caso concreto, y dado el número de bits por fila con los que trabajaremos (360), es necesario paralelizar el estado AS2 en 30 ciclos, con 12 XORs por cada ciclo. El retraso final del sistema de acumulación con esta peculiaridad seria de 4*número_de_filas-5+30-1.
El último bloque de la parte de codificación de canal definido por el estándar es el Interleaver. Dicho módulo proporciona a la salida los datos de la trama codificada formando símbolos (grupos de bits) de tamaño variable. A su vez, los bits que componen esos símbolos son escogidos en un orden distinto al puramente secuencial. Básicamente, el estándar, según el modo de funcionamiento define una escritura secuencial por columnas (58) y una lectura por filas (59), como puede verse en la Figura 11. Se definen 4 modelos distintos de salida, uno de ellos con dos bits por símbolo que no sufre alteración en el orden de salida de los bits (es decir, los símbolos se forman por bits escogidos secuencialmente), y tres más con 3, 4 y 5 bits por símbolo. Cada uno de estos tres últimos modos almacena los bits secuencialmente en columnas de tamaño definido que puede verse en la Figura 12, y lee símbolos compuestos por 3, 4 o 5 bits. Según el esquema utilizado, cada símbolo estará compuesto por un número de bits sistemáticos y otro número de bits de paridad, lo que complica el diseño del interleaver al tener que leer datos que han sido escritos de forma diferente en memoria.
El esquema descrito en la presente invención permite, tras un pequeño retraso inicial (60), la salida de símbolos de forma continua del interleaver. El esquema de salida puede verse en la Figura 13 y consiste en lo siguiente:
En el primer ciclo se lee el bit 1 del 1^{er} símbolo, el bit 1 del 2º y así un número igual al número de bits sistemáticos que forman el símbolo (61). Esto es posible debido a que el almacenaje especial en memoria hace que los bits sistemáticos consecutivos se encuentren en la misma fila (o filas consecutivas en el caso de bits múltiplos de 360). A la vez se leen por el segundo puerto de la memoria los bits de paridad del mismo símbolo (62). En el siguiente ciclo se leerá el bit 2 del 1^{er} símbolo, el 2 del segundo (63) y a la vez los bits de paridad del 2º símbolo (64). Tras un número de ciclos igual al número de bits sistemáticos del símbolo (60), se proporciona a la salida el primer símbolo, seguido en cada ciclo de los subsiguientes símbolos. En el caso de que exista un cambio de distribución de bits sistemáticos y paridad dentro del símbolo en el esquema que en ese momento defina el usuario, como puede verse en el ejemplo de la Figura 14, en el que a partir de un número de símbolos "f" (67) el número de bits sistemáticos y de paridad cambia, se dejará un ciclo de lectura libre (65) y se continuará con la lectura y salida normal de símbolos. Este ciclo libre es debido a que el cambio siempre se produce de un numero de bits sistemáticos a un numero "n-1" (66), lo que hace que el retraso que se obtiene al sacar un símbolo con el nuevo esquema sea menor que el que se venía teniendo.
A continuación se presentan los resultados obtenidos en la implementación de la invención presentada. Se eligió un valor de paralelismo en la entrada ("a") de 12 por estar próximo al máximo permitido, lo cual da los mejores resultados en términos de latencia, y por ser un número que facilita las tareas de extracción de datos al ser múltiplo de dos de los valores de bits/símbolo. Por otra parte, no escoger el valor máximo da al diseño cierta holgura para admitir posibles incrementos de retraso en algunas fases debidas a la elección de tecnologías diferentes para la integración final. Hay que tener en cuenta también que las memorias de palabras de 360 bits se implementaron en realidad con 30 memorias de 12 bits por palabra. Este esquema de memorias de anchura más reducida es más fácilmente implementable en tecnologías actuales tanto de tipo ASIC como programables.
Por otro lado, con objeto de mantener una velocidad de salida que alcance los 55 Mega símbolos por segundo, se divide el estado AS2 del acumulador para realizarle en 30 ciclos (se realizaran 12 XORs por cada ciclo para el total de 360 requeridas).
Con estos dos parámetros se obtienen los resultados mostrados en la Figura 15. Para la obtención de los datos de síntesis presentados se obtuvo usando una herramienta de síntesis de Synopsys y la herramienta de Xilinx ISE v7.1. para la implementación física. La tecnología sobre la que se realizaron dichos procesos fue una FPGA de Xilinx, en concreto la VirtexII 6000 con un speed degree of -5. En la tabla se presentan datos de área consumida por el diseño (LDPC, incluida acumulación, e Interleaver) en la primera columna, medida en Slices; el flujo de datos de salida en Mbits/seg para el caso concreto de modulación 32APSK (esto es, 5 bits por cada símbolo); la frecuencia máxima alcanzada por el sistema (se pretendía alcanzar como ya se comentó con anterioridad los 55 MHz) medida en MHz en la tercera columna; la latencia en ciclos, que depende del número de bits sistemáticos del LDPC (N_{BCH}), el parámetro "q" dependiente del tamaño de trama y tasa y que es definido en el estándar para cada caso, y un parámetro denominado K_{rate} definido como: nºsistematic_bits/symbol+3 y cuyo valor oscila entre 3 y 8 dependiendo del esquema de modulación y tasa utilizado; finalmente, en la última columna se presenta el número de bloques de memoria utilizado por el diseño propuesto, en bloques de RAM predefinidos en la FPGA.

Claims (3)

1. Codificador LDPC e Interleaver para DVB-S2 consistente en un codificador LDPC y un interleaver capaz de implementar todas las tasas, modulaciones y tamaños de trama definidos por el estándar DVB-S2, estando caracterizado por:
Una distribución de elementos en la memoria principal de datos (Figura 5) (donde se almacenan todos los datos codificados por el BCH y el LDPC) consistente en dividir ésta en dos partes, una de "q" filas (32) ("q" definida para cada tasa y tamaño de trama por el estándar) y otra de "180-q" (34) en el caso de trama normal o "45-q" en el caso de trama corta. Cada fila (palabra) de la memoria constará de 360 bits que serán almacenados como sigue: los bits sistemáticos del LDPC (salida del BCH) se almacenarán de forma secuencial, esto es, de forma consecutiva en cada fila y el elemento siguiente al ultimo de una fila será el primero de la siguiente, en las primeras "180-q" filas de la memoria. Los bits de paridad se almacenarán en la segunda parte de la memoria, de tamaño "q" filas de 360 bits cada una, separados por una cantidad "q", de tal forma que en la primera fila de la segunda parte de la memoria irán almacenados los bits de paridad 1, 1+q, 1+2*q, ..., 1+360*q, en la segunda fila de memoria los bits 2, 2+q..., en la tercera 3, 3+q... y así sucesivamente hasta completar las q filas que componen la segunda parte de la memoria.
Un almacenamiento de los punteros definidos por el estándar, en la memoria de punteros, transformando los valores que aparecen en el estándar para que definan de forma inequívoca y sin coste de hardware adicional, la posición en la que un determinado bit de paridad debe ser leído, operado y escrito en la memoria de datos. Esto se realiza almacenando en cada fila de la memoria de punteros dos valores: la fila de la memoria de datos, en la que se encuentran los 360 bits de paridad con que deberán operar los bits sistemáticos correspondientes, y el desplazamiento que debe hacerse de dicha fila de datos de paridad sobre sí misma para que se puedan realizar las 360 XORs bit a bit con los 360 datos sistemáticos de entrada (Figura 7).
2. Codificador LDPC e Interleaver para DVB-S2 según la reivindicación 1 caracterizada porque la acumulación de bits (segunda fase de la codificación LDPC) (Figura 10) realizada, gracias a la distribución de memoria, se procesa con un alto grado de paralelismo reduciendo en gran medida la latencia que supone la acumulación iterativa y secuencial que se establece en el estándar. Esto se consigue mediante la acumulación de elementos de filas consecutivas y operando con valores provisionales, en lugar de la acumulación secuencial de elementos consecutivos.
3. Codificador LDPC e Interleaver para DVB-S2 según la reivindicación 1 caracterizada porque el interleaver permite la salida de símbolos para cualquier esquema definido por el estándar a frecuencia de ciclo de reloj, gracias a la distribución de memoria definida (Figura 13), con un retraso en la salida de símbolos mínimo. Esto se consigue mediante la lectura en un único ciclo de un número de bits sistemáticos y de paridad igual al número de bits sistemáticos y de paridad que compongan un símbolo. Los bits sistemáticos leídos en un ciclo corresponderán a símbolos distintos y los de paridad leídos en un ciclo corresponderán a un mismo símbolo.
ES200602340A 2006-09-08 2006-09-08 Codificador ldpc e interleaver para dvb-s2. Active ES2319590B2 (es)

Priority Applications (1)

Application Number Priority Date Filing Date Title
ES200602340A ES2319590B2 (es) 2006-09-08 2006-09-08 Codificador ldpc e interleaver para dvb-s2.

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ES200602340A ES2319590B2 (es) 2006-09-08 2006-09-08 Codificador ldpc e interleaver para dvb-s2.

Publications (2)

Publication Number Publication Date
ES2319590A1 ES2319590A1 (es) 2009-05-08
ES2319590B2 true ES2319590B2 (es) 2009-10-07

Family

ID=40793338

Family Applications (1)

Application Number Title Priority Date Filing Date
ES200602340A Active ES2319590B2 (es) 2006-09-08 2006-09-08 Codificador ldpc e interleaver para dvb-s2.

Country Status (1)

Country Link
ES (1) ES2319590B2 (es)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2160913C (en) * 1994-03-01 2002-11-19 Jun Yonemitsu Digital signal encoding method and apparatus, digital signal recording medium, and digital signal decoding method and apparatus
DE19937142A1 (de) * 1999-08-06 2001-03-15 Vtq Vidiotronik Gmbh Einrichtung zur Funkübertragung von digital komprimierten Video- und Audio- sowie anderer digitaler und digitalisierter Informationen
GB2400002A (en) * 2003-03-27 2004-09-29 Tandberg Television Asa Decoding a concatenated convolutional and block encoded signal by marking known correct bits
JP3875693B2 (ja) * 2004-03-24 2007-01-31 株式会社東芝 Lpc符号を用いた符号化ビットのマッピング方法及び送信装置

Also Published As

Publication number Publication date
ES2319590A1 (es) 2009-05-08

Similar Documents

Publication Publication Date Title
ES2529182T3 (es) Diseño de LDPC estructurado con agrupación de filas de vector
ES2275508T3 (es) Aparato y metodo de intercalado turbo.
ES2398851T3 (es) Aparato y método de procesamiento de datos
ES2673513T3 (es) Procedimientos que emplean códigos de FEC con inactivación permanente de símbolos para procesos de codificación y decodificación
ES2400950T3 (es) Construcción de códigos para códigos LDPC acortados irregulares con buen rendimiento
EP2387157B1 (en) Efficient encoding of LDPC codes using structured parity-check matrices
ES2243203T3 (es) Adaptacion de velocidades y entrelazado de cables para un sistema de comunicaciones.
US7752524B2 (en) Method and device for decoding DVB-S2 LDPC encoded codewords
US7774674B2 (en) LDPC decoder for DVB-S2 decoding
US7607075B2 (en) Method and apparatus for encoding and decoding data
CA2516716C (en) Method and apparatus for performing low-density parity-check (ldpc) code operations using a multi-level permutation
US7493548B2 (en) Method and apparatus for encoding and decoding data
CN102611460A (zh) Ldpc解码器的有效存储的实现
KR102589918B1 (ko) 저밀도 패리티 체크 디코더 및 그것을 포함하는 저장 장치
US11526396B2 (en) Minimum-size belief propagation network for FEC iterative encoders and decoders and related routing method
RU2010145061A (ru) Способ и устройство декодирования кода порождающей матрицы с низкой плотностью
US20020083391A1 (en) Method and apparatus for encoding a product code
Cassuto et al. Multi-block interleaved codes for local and global read access
ES2319590B2 (es) Codificador ldpc e interleaver para dvb-s2.
CN110741559B (zh) 极化编码器、通信单元、集成电路及其方法
Pei et al. Design of irregular LDPC codec on a single chip FPGA
US8627168B2 (en) Decoding device and decoding method
Naessens et al. A flexible ASIP decoder for combined binary and non-binary LDPC codes
US20100313083A1 (en) Channel constrained code aware interleaver
KR101073636B1 (ko) 저밀도 패리티 검사 부호를 이용한 복호화 장치

Legal Events

Date Code Title Description
EC2A Search report published

Date of ref document: 20090508

Kind code of ref document: A1

FG2A Definitive protection

Ref document number: 2319590B2

Country of ref document: ES