ES2319590B2 - Codificador ldpc e interleaver para dvb-s2. - Google Patents
Codificador ldpc e interleaver para dvb-s2. Download PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 52
- 230000009897 systematic effect Effects 0.000 claims abstract description 34
- 238000009825 accumulation Methods 0.000 claims abstract description 21
- 230000001131 transforming effect Effects 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000000034 method Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 17
- 239000011159 matrix material Substances 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 101100120298 Rattus norvegicus Flot1 gene Proteins 0.000 description 2
- 101100412403 Rattus norvegicus Reg3b gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000006185 dispersion Substances 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 241001184731 Eira Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013075 data extraction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0071—Use of interleaving
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/0078—Avoidance 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.
Invención enmarcada dentro del sector de las
telecomunicaciones y diseño microelectrónico.
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.
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.
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.
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.
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)
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符号を用いた符号化ビットのマッピング方法及び送信装置 |
-
2006
- 2006-09-08 ES ES200602340A patent/ES2319590B2/es active Active
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 |