ES2559637T3 - Codificación LDPC cuasi-cíclica - Google Patents

Codificación LDPC cuasi-cíclica Download PDF

Info

Publication number
ES2559637T3
ES2559637T3 ES10710590.0T ES10710590T ES2559637T3 ES 2559637 T3 ES2559637 T3 ES 2559637T3 ES 10710590 T ES10710590 T ES 10710590T ES 2559637 T3 ES2559637 T3 ES 2559637T3
Authority
ES
Spain
Prior art keywords
matrix
code word
bits
parity
bit
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
ES10710590.0T
Other languages
English (en)
Inventor
Jorge Vicente Blasco Claret
Salvador Iranzo Molinero
Agustín BADENES CORELLA
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.)
MaxLinear Hispania SL
Original Assignee
MaxLinear Hispania SL
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
Priority claimed from ES200900343A external-priority patent/ES2363846B1/es
Priority claimed from ES201030066A external-priority patent/ES2386449B1/es
Application filed by MaxLinear Hispania SL filed Critical MaxLinear Hispania SL
Application granted granted Critical
Publication of ES2559637T3 publication Critical patent/ES2559637T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • H03M13/1188Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/615Use of computational or mathematical techniques
    • H03M13/616Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • H03M13/6362Error control coding in combination with rate matching by puncturing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6522Intended application, e.g. transmission or communication standard
    • H03M13/6527IEEE 802.11 [WLAN]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/65Purpose and implementation aspects
    • H03M13/6522Intended application, e.g. transmission or communication standard
    • H03M13/6544IEEE 802.16 (WIMAX and broadband wireless access)
    • 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/0045Arrangements at the receiver end

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Signal Processing (AREA)
  • Error Detection And Correction (AREA)

Abstract

Procedimiento y dispositivo de comunicación de datos a través demedios ruidosos para mejorar la protección frente a errores en latransmisión de información a través de un canal o medio de transmisión ruidoso. El procedimiento y dispositivo mejorado consisteen la utilización de un nuevo tipo de estructura de la matriz deparidad para la tecnología de códigos de paridad de baja densidad(Low Density Parity Check Codes) en la codificación y decodificación de datos, que mejora las prestaciones de corrección de errores sin aumentar la complejidad de la implementación hardware.

Description

5
10
15
20
25
30
35
40
45
50
55
DESCRIPCION
Codificacion LDPC cuasi-dclica
La invencion presentada en este punto se aplica al campo de la transmision de datos, y mas espedficamente, a la comunicacion de datos a traves de medios con ruido, es decir, medios o canales de comunicacion que pueden introducir errores en la comunicacion.
Tecnica anterior
En entornos de comunicacion es comun para el medio de comunicacion o las senales externas introducir errores de senal. Dichos errores deben detectarse y, si es posible, corregirse en la recepcion de modo que los datos corregidos puedan recuperarse. Existen varias maneras para incluir deteccion y correccion de errores en el estado de la tecnica, siendo una de ellas la codificacion y decodificacion de los datos basandose en codigos de comprobacion de paridad de baja densidad para corregir errores.
Los codigos de comprobacion de paridad de baja densidad (LDPC) son codigos de correccion de errores que se usan al transmitir sobre canales de transmision con ruido. Estos codigos introducen una cierta redundancia en el mensaje (se envfa un mayor numero de bits que en el mensaje original), pero de tal manera que en la recepcion es posible detectar si hay errores en el mensaje recibido y corregirlos.
Un codigo de LDPC es un codigo cuya matriz de paridad no es muy densa, es decir que la mayona de sus elementos son ceros. Este tipo de codigo se publico por primera vez a principios de 1960, por Robert G. Gallagher “Low Density Parity Check Codes”, M.l.T. Press, 1963, y se mostro que tienen caractensticas muy cercanas al lfmite de Shannon conocido (velocidad maxima teorica para transmision de datos). Sin embargo, con la definicion original de los codigos y la tecnologfa de ese momento, no fue posible una implementacion conseguible de complejidad adecuada. Recientemente, gracias a la evolucion de los circuitos integrados y a la invencion de matrices estructuradas, estos codigos son de nuevo de gran interes.
En el estado de la tecnica existen multiples procedimientos para conseguir codificacion y decodificacion de errores. Algunos procedimientos son aquellos publicados en las patentes US 7.343.548B2 y US 7.203.897B2, ambas tituladas “Method and Apparatus for Encoding and Decoding Data”, cada una de las cuales senala procedimientos para mejorar la proteccion cuando se enfrentan con errores en transmision de datos. La invencion puede relacionarse tambien con las normas IEEE802.16e y 802.11n, que presentan codificacion y decodificacion para reducir errores. En cualquier caso, las patentes y normas mencionadas usan la estructura de doble diagonal, que es conocida en el estado de la tecnica, mientras la estructura presentada en este documento es nueva y permite una implementacion con mejores caractensticas sin aumentar el nivel de complejidad (por lo tanto a coste inferior) de proteccion frente a errores al comunicar datos a traves de medios con ruido. Se conoce en el estado de la tecnica que tener columnas con un peso de Hamming igual a o menor que 2 en la matriz de paridad restringe las caractensticas de los LDPC. Sin embargo, por razones de complejidad de implementacion del codificador, las matrices con una seccion de doble diagonal H*1 se han usado en el estado de la tecnica. La nueva estructura presentada en este documento, que anade una tercera diagonal a la seccion H*1 de la matriz de modelo binario, permite que el numero total de columnas en la matriz de paridad con un peso de Hamming menor que o igual a 2 sea inferior, y por lo tanto pueden conseguirse mejores caractensticas. Esta tercera diagonal se selecciono de tal manera que el aumento en la complejidad de implementacion del codificador es practicamente insignificante.
El documento US 2008/0222486 A1 se refiere a procedimientos y aparatos para codificar y decodificar codigos de comprobacion de paridad de baja densidad (LDPC). Este documento desvela un aparato y procedimiento novedosos para codificar datos usando un codigo de comprobacion de paridad de baja densidad (LDPC) capaz de representacion mediante un grafo bipartite. Para codificar los datos, puede generarse una cadena acumulada de una pluralidad de nodos variables de grado bajo. La cadena acumulada a continuacion puede cerrarse para formar un bucle dos veces, una vez usando unos nodos variables de grado bajo y una vez usando un grado variable mas alto que es mas alto que el nodo variable de grado bajo, donde el nodo variable de grado mas alto comprende un borde de cierre no de bucle. En una realizacion desvelada en este documento, la pluralidad de nodos variables de grado bajo pueden tener la misma permutacion en cada borde.
Los documentos anteriormente presentados no interfieren con la novedad ni la superioridad inventiva de la presente invencion. Aunque todos ellos estan basados en la utilizacion de la tecnologfa de LDPC, que es conocida en el estado de la tecnica, el procedimiento y dispositivo inventivos de este documento utilizan un tipo de codigo cuasi- dclico (Codigo de Comprobacion de Paridad de Baja Densidad Cuasi-Cfclico, o QC-LDPC), y aplica una matriz de paridad con una estructura diferente como el punto central de la invencion.
A lo largo de todo este documento, se empleara una nomenclatura espedfica para diferenciar los elementos utilizados a lo largo de toda la descripcion de la invencion. Una letra mayusculas en negrita (por ejemplo, A) indica que el elemento es una matriz; una letra minuscula en negrita (por ejemplo, a) indica que el elemento es un vector, mientras una letra minuscula no en negrita (por ejemplo, a) indica que el elemento es un valor escalar. Por otro lado, los elementos escalares que comprenden una matriz del tamano MxN se indican en la forma a(i,j), donde la tupla (ij) es la posicion de dicho elemento en la matriz, siendo 0<i<M-1 el numero de fila y 0<j<N-1 el numero de columna. Los
5
10
15
20
25
30
35
40
45
50
55
elementos que comprenden un vector de tamano M se indican en la forma de a(i), siendo (i) la posicion del elemento en el vector (0<i<M-1).
Tambien, se usara a lo largo de toda la invencion la expresion “rotacion dclica”, que se definira a continuacion. Una rotacion dclica z en un vector a=|a(0),a(1),...,a(M-2), a(M-1)| consiste en rotar dclicamente sus elementos hacia la derecha, obteniendo el vector |a((M-z)%M),...,a((M-z-1)%M)| como el resultado, siendo % el operador “modulo”. De la misma manera, una rotacion dclica z aplicada sobre una matriz A=|a(0),..., ,a(N-1)| opera en sus columnas, obteniendo la matriz |a((N-z)%N),...,a((N-z-i)%N)| como el resultado. Una rotacion dclica puede definirse tambien en la direccion opuesta (hacia la izquierda) de modo que una rotacion dclica z hacia la derecha es equivalente a una rotacion dclica M-z y N-z respectivamente para vector y matriz hacia la izquierda.
Descripcion de la invencion
Es por lo tanto el objeto de la presente invencion proporcionar una codificacion de datos mejorada que aplique una matriz de paridad a un bloque de datos y que use codigos de LDPC.
Este objeto se resuelve mediante la materia objeto de la reivindicacion 1.
Se definen realizaciones preferidas mediante las reivindicaciones dependientes.
Para conseguir los objetivos y evitar las desventajas indicadas en las secciones anteriores, la invencion consiste en un procedimiento y dispositivo para comunicar datos a traves de un medio con ruido. En concreto, la invencion presenta un procedimiento para codificar datos usados en transmision, su dispositivo de codificacion asociado, un procedimiento para decodificar y su dispositivo de decodificacion asociado. Este grupo de invenciones componen un unico concepto inventivo, que se describira a continuacion. Si el procedimiento o dispositivo se usan en transmision, los equivalentes deben usarse tambien en recepcion, y viceversa, de modo que los datos enviados puedan recuperarse.
El procedimiento para codificar datos se aplica en transmision y genera bits de paridad en un bloque de datos de tal manera que se genera una palabra de codigo de N bits desde una palabra de K bits (N>K) que incluye proteccion frente a errores. Dicho procedimiento comprende multiples etapas. En primer lugar se selecciona un factor b, que es un numero natural entre 1 y k de manera que la division de N y K por el factor de b seran numeros naturales (n=N/b; k=K/b). A continuacion se define una matriz de modelo binario Ho =[HaIHb] de tamano (n-k) x n como la combinacion de una submatriz que corresponde a las posiciones de los bits de datos Ha y una submatriz que corresponde a los bits de paridad Hb, donde dicha segunda submatriz Hb =[hbo|Hbi] esta compuesta de un vector de columna de n-k posiciones hbo y una matriz Hbi que tiene una estructura de triple diagonal, es decir, donde los elementos de las dos diagonales centrales hbi(i,i), hbi(i+1,i) 0<i<n-k-2 y la diagonal de la ultima fila hbi(n-k-1,0) son iguales a 1, donde n-k es el numero de filas y columnas de la matriz Hb, y el resto de elementos son iguales a cero. Posteriormente, se genera la matriz compacta Hi y a partir de ella, la matriz de paridad H. Desde all/ se toma un bloque de datos y se usa la matriz de paridad H en el bloque de datos para determinar los bits de paridad que corresponden a dicho bloque. Finalmente, los bits de paridad se transmiten juntos con el bloque de datos.
En una implementacion del procedimiento, es posible eliminar uno o mas elementos de la palabra de codigo antes de que se transmitan, reduciendo la redundancia en la transmision sin danar seriamente la capacidad de proteccion frente a errores. Esta tecnica se denomina “perforar”. En este caso la palabra transmitida tendra un numero menor de bits que la palabra de codigo obtenida en el procedimiento inicial.
El dispositivo de codificacion de datos comprende medios para almacenar la matriz compacta H; obtenida a partir de una matriz de modelo binario Ho = [Ha/Hb] formada como la combinacion de una submatriz que corresponde a la posicion de los bits de datos Ha y una submatriz que corresponde a los bits de paridad Hb, donde dicha segunda submatriz Hb = [hbo|Hbi] esta compuesta de un vector de columna de n-k posiciones hbo y una matriz Hbi que tiene una estructura de triple diagonal, es decir, donde los elementos de las dos diagonales centrales hbi(i,i), hbi(i+1,i) 0<<n-k-2 y la diagonal de la ultima fila hbi(n-k-1,0) son iguales a 1, cuando n-k es el numero de filas y columnas de la matriz Hb, y el resto de los elementos son iguales a cero; y de un microprocesador que toma el bloque de datos, usa la matriz compacta Hi para generar la matriz de paridad H, aplica la matriz de paridad H al bloque de datos para obtener los bits de paridad que corresponden a dicho bloque y anade los bits de paridad al bloque de datos antes de que se transmitan.
En una implementacion concreta de este dispositivo, uno o mas elementos de la palabra de codigo se eliminan despues de anadir los bits de paridad al bloque de datos pero antes de la transmision aplicando la tecnica de perforacion. De esta manera la palabra transmitida tendra un numero menor de bits que la palabra de codigo generada originalmente.
Por otro lado, el procedimiento de decodificacion de datos opera en la recepcion y estima cual es el bloque de datos recibido desde un vector de senal recibido desde el canal. Desde una palabra de codigo recibida de N bits (que puede tener errores debido al ruido del canal) se obtiene la palabra de datos de K bits que el transmisor desea enviar. Esta toma en primer lugar un vector de senal desde el canal y la matriz de modelo binario Ho = /Ha/Hb] que es una combinacion de una submatriz que corresponde a la posicion de los bits de datos Ha, y una submatriz que
5
10
15
20
25
corresponde a los bits de paridad Hb, donde dicha segunda submatriz Hb =[hbo|Hbi] esta compuesta de un vector de columna de n-k posiciones hb0 y una matriz Hb1 que tiene una estructura de triple diagonal, es decir, donde los elementos de las dos diagonales centrales hbi(i,i), hbi (i+1,i) 0<i<n-k-2 y la diagonal de la ultima fila hbi: (n-k-1,0) son iguales a 1, donde n-k es el numero de filas y columnas de la matriz Hb, y el resto de los elementos son iguales a cero. Posteriormente, se genera la matriz compacta H1 y a partir de ella, la matriz de paridad H, y finalmente el bloque de datos se estima a partir de la senal de vector recibida y la matriz de paridad H.
Si la tecnica de perforacion se uso en la transmision, los datos perdidos deben recuperarse en la recepcion. En este caso, se inserta un valor de indicador en las posiciones eliminadas en la transmision por la tecnica de perforacion antes de hacer la estimation del bloque de datos a partir del vector de senal recibido y de la matriz de paridad.
El dispositivo de decodificacion de datos comprende medios para almacenar la matriz compacta H1 que se obtiene a partir de la matriz de modelo binario Ho = [HaH] que es una combination de una submatriz que corresponde a la position de los bits de datos Ha y una submatriz que corresponde a los bits de paridad Hb, donde dicha segunda submatriz Hb =[hbo|Hb1] esta compuesta de un vector de columna de n-k posiciones hbo y una estructura de triple diagonal Hb1, es decir, una en la que los elementos de las dos diagonales centrales hb1 (i, i), hb1(i+1,i) 0<i<i-k-2 y la diagonal de la ultima fila hb1(n-k-1,0) son iguales a 1 donde n-k es el numero de filas y columnas de la matriz Hb, y el resto de los elementos son iguales a cero; un microprocesador que genera la matriz de paridad H a partir de la matriz compacta H1, aplica dicha matriz de paridad H al vector de senal recibido, y estima el bloque de datos recibido.
Si el dispositivo de transmision uso la tecnica de perforacion, los datos perdidos deben recuperarse antes de que se haga la correction de errores. Por lo tanto, en esta implementation y antes de aplicar la matriz de paridad H al vector de senal recibido, se inserta un valor de indicador en las posiciones eliminadas en la transmision mediante la tecnica de perforacion.
En una implementacion es posible usar una de las siguientes matrices compactas H1 para obtener palabras de
imagen1
En otra implementacion es posible usar una de las siguientes matrices compactas H1 para obtener palabras de codigo de 1920 bits con una tasa de codification de 1/2. La matriz:
*1
92 -1 64 -1 -1 60 -1 -1 -l -1 1 0 -1 * 1 -1 -l -1 -1 -l -1 -1
10
-1 -1 -1 -1 79 -1 -1 79 -1 78 91 -1 0 0 -1 -l -1 -1 -1 -1 -1 -1
9
-1 -I -l -l -1 -i 76 29 72 0 -1 -1 0 0 -1 '1 -l -1 -1 -1
-1
62 16 63 -l 69 -1 -1 -1 -1 -1 40 -1 0 0
-1
-1
-1
-1
-1
-1
-1
24 -1 -1 4? 1 39 -l •*1 ■1 -1 -1 -1 0 0 *1 -l -1 -l
-1
62
-1 -1 -1 -1 -l -1 -1 53 79 48 -1 -1 -1 .-1 -l 0 0 -1 -1 -1 -1
-1
0 -1 -1 72 -1 67 57 -1 -1 '1 -1 -1 -l -1 -1 -1 0 0
-1
-1
-1
-1
7 -l -1 -1 2 60 -l -1 -1 -1 19 -l -1 -1 1 1 -1 -1 0 0 -l
-1
16
-1 19 -l -1 -t -1 76 51 4.1 -1 -1 -l -1 -1 -1 -1 -1 -1 0 0 -1
72
-l -l -l 30 -1 -1 1 69 -1 62 -1 -1 -1 -1 -1 -1 -1 -1 -l -1 0 0
-1
19 41 -1 *1 L 41 -1 -1 -t -1 0 -1 -1 -1 -1 -1 -1 -l -1 -1 0
41
-1 17 -1 -l -1 -1 15 -1 30 40 6 *1 -1 -1 -1 -1 -1 -1 -1 -1
0
0
o de lo contrario esta matriz:
27
-l -1 -1 66 19 -1 30 -1 -l -1 *1
-1
-1
0 -1 1 -1 70 -1 47 -l 62
-1
-1
-1
41 -1 -1 -l 44 -1 -1 69 60 29
16
77 -l -1 5 -1 40 -l -t -1 -l
-1
“1 -1 45 -1 27 - 1 46 19 -l
-1
-1
1
-1 OJ -1 -l 55 -1 -1 -l 44 26
-1
-1
-l 42 -l 21 -1 54 -1 41
-1
-1
-1
-1
-1
-1
78 0 -t 7 52
-1
-1
-1
-1
29 9 *1 -l -l 3? -1 -1 -1 35 21
-1
-1
22 72 -l 47 -1 -1 -1 0 •1
.16
-l -1 -1 13 -l J5 -1 79 1 -1
*1
46 20 - 1 • 1 -1 38 -1 -1 -1 0 -1
-1
0 -1 -1 -t -1 -1 *1
-1
-1
-1
-1
0 0 “1 -I -1 -1 -1 -1 -l -1 -1
-1
-l 0 0 -1 -1 -1 -1 -l
-1
-1
-1
-1
-1 0 0 -t -1 -1 -1 -1 -1 -l
-1
-l -1 -l 0 0 -I
-1
-1
-1
-1
-1
10
-1 -1 _ « 4 -1 9 0 * 1 -l *1 -l
-1
-1
-l -1 -l *1 0 0 -1 -1 -1 l
-l
-1 -1 -1 -l -1 0 0 -1 -1 -1
-l
-1 -1 -1 -1 -1 -1 -1 0 0 -1 -1
-1 -1 -1 -1 -l -1 -1 0 0 -i
0
-l -1 -1 1 -1 -1 -1 -1 -l
0
0
10
90 -1 -l -1 '1 -1 -1 -l -1 -l 0
En otra implementacion es posible usar una de las siguientes matrices compactas Hi para obtener palabras de 5 codigo de 8640 bits con una tasa de codificacion de 1/2. La matriz:
-1
-1
-1
-1
-1
-l ;
290
0 312 -1 32 -i
103
57 -1 -1 107 60
-1
-1
-1
323
-1
-1
-1
-1
220 -1 -1 -t
119
90 -1 1 120 29
-1
-l -t -1 -1 -l
-1
-l 142 •1 -1 -l
328 269
-1 29? 10$ 92a *1
0 -l -I
1 -l -1
•1 224 -1 114 -l 249
-1 -I -1 -t -1 -1 -1 1JS -I 10> 45 62
1
•1 99 -1
-1
-1 -1 -
-l
260 -1 0
-1
l 162 -
l 941 61
66 166 96 -1 -i
I
-I
-I
-1
-I
-1
-1 -1 -1
0 0
46
:1
212
104 -1 •1 102 -l •l -1
-1
-1
-1
-1 -1 -t -1 00
207
70 -1 7 2J5 -1 -1 -1
-1 120 -1 -1 19 -1 .129 192
-1 -1 -1 "1
-I -l 0 -1 01 109
-1
-I
-1
1
-1 -1 -1 -1 -1
-I
-1 -1 -1 -1 -1
-1
-1
-l
-1
-1
-1
0
-1 -1 -1 -1 -1
0
0
-i -1 -1 -l
-1
0 0 -1 -l
-1
-1
-l 0 0 -l
-1
-1
-1
-l 0 0
-1
-1
-1
-1
-1
0 0
-1
-l
-1
-l
-I -1
-1 -l
-l
-1
-1
-1
-l
-1
0
-t
•1

0 1

0 0

-1 0
o de lo contrario la matriz:
-1
34 -1 95
-1
-1
0
-1
51
-1 27 -1
-1
124 -1 290
-l
340 -1 99
163
-1 46 -1
-1
105 -1 24
-1
223 -1 225
0 -1
-t -1
99 996 -1
-1
-1
-1
-I
46 -1 314 -l -t -1 -1 -1 121 -1 -1 -1
-1 303 -1
-1 -1 312
-1
-t -1 -1 240
-1
-1 -1 134 356 275
-1
-1
22 142 -l 57
15
-1 -1 -1 -1 -1
-1
1 -1 -l
-1
-1
-l
-1 -1 306 -1 06
1
94 0 -l
-1
-1
-1
-l 297
-1
59
-1 -1 67 -1 120
'1 189
-1 16 -1 -
-1
-1 100 -
-1 303 -1 264
130 -1 -1 -1
-1 144 -1 301
33 -
0
0
-1
-l
166
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-l
-1
-1
0
-1 -1 -1 -1 -1 -1
0
0
'1 -1 -1 -1 -1
-1
0 0
-1
-1
-1
-1
-l
-l
0 0 -1 -1
-l
0 0 -l -1
-1
-l -1 -1 0 0
-1
-1
-1
-1
-1
-1
0 0
-1
-1
-1
-1
-1
-1
9
-1
-1
-1
-1
-1
-1
-1
-1
-l
-1
-1
-1
-1
-1
0
0
■1
5
10
15
En otra implementacion es posible usar la siguiente matriz compacta Hi para obtener palabras de codigo de 1440 bits con una tasa de codificacion de 2/3.
19
-1 -1 21 21 -1 S7 -1 -1 10 -l 20
-1
7 32 -l -1 37 -1 32 10 -1 26 '1
53
-l -l 20 SO -1 -1 J 16 -1 49 -1
-1
se 2} -1 -1 IS 54 -1 -1 9 -l ia
-1 1 se •1 9 *1 26 57 -1 41 -1
-1
10 49 -1 so -1 7 -l -1 30 l 18
48
-1 -1 so 18 -1 -1 11 52 -1 59 -1
-1
24 16 -j -1 O 53 1 -1 41 -l 38
2
-1 19 -1 -1 0 -l -1 -l -1 -1 -1
-1
59 -1 48 0 0 -1 -1 -1 -1
-1
28 14 -1 -1 -1 0 0 -1 -1 •1
49
-1 -l 13 -1 -l 0 0 -1 -1
31
-1 21 -l -l -1 -l -1 0 0 -l -1
1
48 -l 7 59 •1 -1 -1 0 0 -1
-1
37 - I 10 O -1 -1 -1 -1 0 0
51
- 1 59 -1 59 8 -1 -1 -1 1 1 0
En otra implementacion es posible usar la siguiente matriz compacta Hi para obtener palabras de codigo de 6480 bits con una tasa de codificacion de 2/3:
7* 1
-1 -1 167 237 -1 3 -1 266 -1 -1 1 802 153 -1 -1 212 -1 0 -1 -1 -1 -1
l -1
83 109 -1 -1 60 -1 178 -1 90 205 -1 -1 13 4 -l -l 0 0 -1 -l -1 -1
-1
226 147 -1 46 -1 -l 76 -1 116 -l 211 -1 113 -1 118 -1 0 0 -l
-1
-1
92
-1 -1 214 -1 2 36 241 -1 157 -1 143 -1 214 -l 207 -1 -l -1 -1 0 0 -l -1
144
-1 -1 258 264 -1 SJ -1 114 -1 172 -1 •1 02 262 -1 62 -1 -t 0 0 *1
-l
153 120 -t -l 199 -1 126 ■1 61 -1 183 19 -1 -1 134 -1 -l -1 -1 -1 0 0
-1
100 -1 141 •1 36 .1 17 -1 156 -t 124 162 -1 -1 57 0 -1 -1 -1 -l -1 0
196
-1 187 -1 73 -1 80 -l 139 -1 57 -1 -1 236 267 -1 62 2S6 -1 -l -l -1 -1
o
0
En otra implementacion es posible usar la siguiente matriz compacta Hi para obtener palabras de codigo de 1152 bits con una tasa de codificacion de 5/6:
-1
13 32 47 41 24 -1 25 22 40 1 31
25
46 19 43 49 29 39 47 23 30 39 12
35
45 45 38 14 16 6 11 -1 18 7 41
9
32 6 22 26 31 .9 0 22 32 40 4
8
15 20 IS 42 JO 13 J -1 0 -1 -l
-1
21 -1 38 33 0 0 -1 39 0 0
-1
35
17 32 45 41 -1 18 17 0 -1 0 0
10
40 36 -1 -1 23 31 41 39 20 -1 0
En otra implementacion es posible usar la siguiente matriz compacta H1 para obtener palabras de codigo de 5184 bits con una tasa de codificacion de 5/6:
imagen2
Una implementacion en la que se usa la tecnica de perforacion se inicia con una palabra de codigo de 1152 bits y tasa de codificacion de 5/6 y aplica el siguiente patron de perforacion:
PPuV,m»[l I ••• 1 0 0 - 0 I I — 1 0 0 0 )
•*» M MS * A
para obtener una palabra de codigo de 1080 bits y tasa de codificacion de 16/18.
Otra implementacion en la que se usa la tecnica de perforacion se inicia con una palabra de codigo con 5184 bits y una tasa de codificacion de 5/6 y aplica el siguiente patron de perforacion
ppVw" “I* 1 ... 10 0 — q j 1 — 10 0 q i i *» i ]
. i&o ' " tb "* »h wi «**
para obtener una palabra de codigo de 4860 bits y tasa de codificacion de 16/18.
Otra implementacion en la que se usa la tecnica de perforacion se inicia con una palabra de codigo con 1152 bits y una tasa de codificacion de 5/6 y aplica el siguiente patron de perforacion
5
10
15
20
25
30
35
40
PPim1 = [1 1 ••• 10 0 0 1 1 ••• 10 0 0 1 I ••• 1 J

no « w « •
para obtener una palabra de codigo de 1080 bits y tasa de codificacion de 20/21.
Y por ultimo, una implementacion final en la que se usa la tecnica de perforacion se inicia con una palabra de codigo de 5184 bits y tasa de codificacion de 5/6 y aplica el siguiente patron de perforacion

pp«““* e[0 0 ••• 0 1 1 10 0 **• 0 1 1 *** 1 }

— y ' y ■ y * '—— -v“— * ‘ '

110 4J20 411 110
para obtener una palabra de codigo de 4536 bits y tasa de codificacion de 20/21.
A continuacion, para facilitar un mayor entendimiento de este documento descriptivo, se proporciona la descripcion, a modo de ilustracion pero no de limitacion, de una implementacion de ejemplo de la invencion. Esta forma una parte integral del mismo documento.
Breve descripcion de las figuras
La Figura 1.- muestra el diagrama de bloques del codificador en el transmisor.
La Figura 2.- muestra el diagrama de bloques del decodificador en el transmisor.
La Figura 3.- muestra el grafo de dos partes de la matriz H del ejemplo.
La Figura 4.- muestra el diagrama de flujo de la construccion de un codigo de LDPC estructurado.
Descripcion de un ejemplo de la implementacion de la invencion
A continuacion se presenta la descripcion de un ejemplo de implementacion de la invencion, que hace referencia a la numeracion adoptada en las figuras.
El problema que el procedimiento de la invencion pretende resolver, desde un punto de vista teorico, consiste en el exito al optimizar la correccion de errores en comunicacion de datos usando implementaciones de hardware de bajo coste y codigos de LDPC.
Un codigo de LDPC es un codigo lineal que opera en bloques de datos. El codigo se define por su matriz de paridad H. En este ejemplo de implementacion los codigos son codigos binarios, pero es posible generalizar la invencion a codigos sobre cualquier campo de Galois GF(q), donde q es >2.
En transmision se tienen bloques de datos compuestos de K bits. Dicho bloque e datos se designa como u = [u(0),u(1),...,u(K-1)]. Despues de aplicar el procedimiento de la invencion, se genera una palabra de un codigo lineal v = [v(0),v(1),...,v(W-1)] con N bits (donde N<K). Dicho codigo se genera a traves del producto v=uG, donde G es una matriz binaria KxN, generadora del codigo de LDPC. El conjunto de posibles codigos generados se denomina conjunto C, y la tasa de codificacion del codigo sera R=K/N.
Por lo tanto, es posible definir un codigo C de codificacion R como el conjunto de vectores veC generados por todos los posibles 2k vectores binarios aplicandoles la matriz generadora G. Una definicion equivalente sena que C es el espacio vectorial de tamano N incluido en la base compuesta de las K filas de la matriz G. Otra forma alternativa de definir el codigo C es a traves de su matriz de paridad H, que es la forma mas usada en el estado de la tecnica. Esta matriz, en tamano (N-K)xN, tiene como filas la base del espacio dual C, y por lo tanto GHT = 0. Cualquier vector del codigo satisface
vHT =0
(donde “T” es el operador de transposicion).
En el momento que se utilizan estos codigos desde un punto de vista practico, se prefiere considerar los codigos como codigos sistematicos, es decir, aquellos en que los bits de la palabra de codigo estan entre los bits de datos. Sin perder generalidad, este ejemplo se centra en el caso donde v=[u|p], donde es un
vector compuesto de los bits de paridad, u el bloque de datos que se ha de transmitir y v la palabra de codigo realmente transmitida (despues de incluir el codigo de LDPC).
Se muestra a continuacion un ejemplo de implementacion en el que puede observarse la relacion entre la matriz de paridad y una palabra de codigo. En este ejemplo, el codigo tiene una tasa de codificacion de R=1/2 y se define mediante la siguiente matriz de paridad:
5
10
15
20
25
30
35
40
rl
1 0 ] 0
1 0 0
]
1 0 1
0
0
1
0
0
0
]
]
0 0 1 1
1
0 0
1
0
0
0
1
1
0 0
0
K
En esta matriz, la seccion izquierda corresponde a los K=5 bits de datos, mientras la seccion derecha corresponde a los N-K=5 bits de paridad. Aplicando la ecuacion vHT =0 a la matriz H se obtiene el siguiente sistema de ecuaciones:
f;/(()) 4- i/( 1) 4- z/(3) 4- /?(()) + p(3) + pi4) = 0 w(0')4-//(1)4-w(2)4- p( 0) 4- p( 2)4- p( 4) = ()
< w(0) 4- w( 1) 4- w(2 ) 4- u(4) 4* /?(1) 4- p(3) = 0
|«(2) + w(3)4-«(4)+ *>(()) + />(1)4- p(2) = i)
[w(3) 4- W(4.) 4- pi 1) 4- p(2) 4- pi3) 4- /;(4) = 0
Un codigo de LDPC puede representarse tambien en forma grafica con un grafo de dos partes denominado un grafo de Tanner. En un grafo de Tanner los vertices o nodos se clasifican en dos grupos o conjuntos separados: los “nodos variables”, que representan los bits de la palabra de codigo, y los “nodos de comprobacion”, que representan las relaciones de paridad. Entre ambos conjuntos de nodos se encuentran los posibles bordes que definen la ecuacion de paridad. En el caso del codigo definido en el ejemplo anterior, este grafo correspondiente se representa en la Figura 3, pueden encontrarse 10 nodos (14) variables y 5 nodos (16) de comprobacion, unidos por multiples bordes (15). Cada nodo de comprobacion esta unido a traves de bordes a 6 nodos variables, como se representa en el sistema de ecuaciones anterior. Puede observarse que el grafo tiene tantos nodos de control y variables como la matriz de paridad correspondiente tiene filas y columnas, y que se encuentra un borde entre el nodo de comprobacion i y el nodo variable j cuando el elemento h(ij) de la matriz, es decir, el localizado en la fila i=0,..., N-K- 1 y en la columna j=0,...,N-1 no es cero.
Por otro lado, pueden definirse ciclos en codigos de LDPC, donde se define un ciclo de longitud 2c como la trayectoria de 2c bordes de longitud que procesan c nodos de comprobacion y c nodos variables en el grafo de Tanner que representa el codigo antes de volver al mismo nodo de comienzo. Para optimizar las caracteristicas del codigo, puede demostrarse que es de vital importancia que el numero de ciclos cortos sea el mrnimo posible. El ciclo de longitud minima se denomina circunferencia. Es particularmente deseable que la circunferencia sea mayor que 4 para evitar reducir las caracteristicas de un decodificador iterativo.
En la descripcion general, R. Gallagher presento codigos cuyas matrices de paridad se generaron aleatoriamente. En el estado de la tecnica se conoce en general que para obtener buenas caracteristicas, cerca del lfmite de Shannon, el tamano del codigo debe ser relativamente grande, y como consecuencia de eso, la matriz de paridad debe ser grande. El problema es que las matrices que son grandes y se generan aleatoriamente producen dificultad en la implementacion de tanto el codificador como el decodificador. Una manera de evitar esta dificultad es usar matrices con una estructura regular. A continuation se presentan las etapas necesarias para generar una estructura regular:
1. En primer lugar, se genera una matriz de modelo binario Ho de tamano (n-k)x n donde n<N, k<Ky R=k/n=K/N. Si el peso de Hamming de las columnas y filas de Ho es constante, el codigo generado se denomina LDPC regular. Sin embargo, pueden conseguirse mejores caracteristicas si la matriz es irregular, es decir, si los pesos de las columnas siguen una distribution estadfstica dependiente de la tasa de codification y del canal donde se hara finalmente la transmision de datos.
2. Una vez que se ha obtenido la matriz de modelo binario Ho, se genera la matriz compacta H1, sustituyendo cada elemento de Ho que es igual a “1” con un numero entero positivo pseudo-aleatorio 0<x<b (donde b=N/n) y cada elemento igual a “0” con el valor -1.
3. Para obtener la matriz de paridad H, los elementos positivos de H1 se sustituyen por una submatriz de identidad rotada dclicamente el numero de veces indicado por el valor del elemento positivo de H1 en cuestion, y los elementos iguales a -1 se sustituyen por una submatriz nula del mismo tamano. El tamano de estas submatrices sera tambien b x b.
El resultado es una matriz de paridad H de tamano (N-K) x N que define un codigo de LDPC con tasa de codificacion R=K/N. El grado de densidad (dispersion) de la matriz dependera del tamano de b. En general, cuanto mayor es b, mejores son las caracteristicas que se obtienen usando un decodificador iterativo.
10
15
20
25
Si los ciclos de la matriz generada (grafo de Tanner) resultan ser muy cortos, deberia aplicarse la etapa 2 (o incluso la etapa 1 si fuera necesario) para el fin de mejorar estas propiedades.
Para facilitar la implementacion del codificador, es necesario generar la matriz de modelo binario Ho en una forma especifica. En primer lugar, dicha matriz se divide en dos partes Ho = [Ha|Hb] donde la submatriz Ha corresponde a las posiciones de los bits de datos y Hb a los bits de paridad. La primera submatriz se genera pseudo-aleatoriamente de la manera anteriormente descrita. Sin embargo, la segunda seccion normalmente es deterministica.
Esta segunda seccion Hb, de acuerdo con el estado de la tecnica y pretendida para facilitar el diseno de un codificador eficaz, toma una de las siguientes dos formas; la primera forma es
imagen3
' M0)
1 0 O'
h,, (1)
1 1 ‘ 0 1 ' . 1 0 1 1
(n - k - 1)
0 . 1 I 0 1
donde la primera seccion es un vector de columna pseudo-aleatorio que tiene un peso de Hamming mayor que 2 y Hbi es una matriz de doble diagonal cuyos elementos hbi(i,j) son iguales a “1” cuando i=j,i=j+1 e iguales a “0” en las posiciones restantes.
imagen4
donde los elementos de la submatriz hb(i,j) son iguales a “1” cuando i=j,i=j+1 e iguales a cero en las posiciones restantes.
Una vez que se ha generado esta estructura de matriz base, se genera la matriz compacta H1, en la forma anteriormente descrita con la unica excepcion de que en la parte de doble diagonal de Hb, los “1” se sustituyen por el mismo numero entero positivo y los “0” por “-1”. Tambien, la matriz de paridad final se obtiene cambiando los enteros positivos por identidades rotadas dclicamente y los negativos por una submatriz nula. El procedimiento puede observarse graficamente en la Figura 4, donde el bloque (17) genera la matriz de modelo binario H0, el bloque (18) genera la matriz compacta H1, el bloque (19) decide si los ciclos son lo suficientemente largos, y el procedimiento pasa a generar la matriz de paridad H con el bloque 20, o de los contrario si los ciclos son cortos, la matriz de modelo (21) o de lo contrario la matriz de base (22) se genera de nuevo.
El procedimiento y dispositivo de la invencion juntos modifican la estructura de la matriz de paridad conocida en el estado de la tecnica para facilitar la implementacion final de la codificacion y decodificacion y mejorar las caracteristicas. Para esto, la estructura propuesta consiste en que la seccion del modelo binario H0 que corresponde a los bits de paridad tiene la siguiente forma:
*u«n
1 0 0
MU
1 1 \
0 > \ **.
■*. **. 1 0
■*. 1 1
1 0 1.
donde la estructura Hb1 es triple diagonal, es decir, ademas de los elementos de las dos diagonales centrales hbi(I,i), hbi(i+1,i), el elemento de la diagonal de la ultima linea hbi (n-k-1,0) es tambien igual a “1”. La matriz compacta se genera de la manera anteriormente descrita excepto que el elemento de la ultima fila igual a “1” se sustituye por un entero estrictamente positivo w>0.
Una matriz de modelo binario Ho para r=1/2 con n=24 y k=12 puede tener la siguiente estructura:
l
0 1 0 0 X 0 1 0 0 0 0 0 X 0 0 0 0 0 b 0 0 0 0
X
0 0 0 l 0 0 0 1 0 1 X 0 X 1 0 0 0 0 0 0 0 0 0
0
1 0 0 0 0 l 0 1 0 X 1 0 0 X l
0
0
0
0
0
0
0
0
0
0
1 0 0 1 0 l O 1 0 0 1 0 0 X 1
0
0
0
0
0
0
0
0
0
1 1 1 1 c 0 0 0 0 0 0 0 0 0 X l
0
0
0
0
0
0
0
1 0 0 0 0 0 0 t 0 1 l 3 0 0 0 0 l l 0 0 0 3
0
0
0
L 1 0 1 l 0 0 0 0 0 0 0 0 0 0 0 X 1
0
0
0
0
1
0 l 0 l 1 0 0 0 0 0 0 0 0 0 0 0 0 0 X 1 0 0 0
0
1 O 0 0 0 0 0 1 1 1 l 0 0 0 0 0 0 0 0 1 X
0
0
0
0
0
1 0 0 0 0 » 0 1 1 0 0 0 0 0 0 0 0 0 1 l
0
0
0
1 0 0 1 1 t 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 X
0
0
0
0
0
0
0
0
1 1 1 X X X 0 0 0 0 0 0 0 0 0 X
Una matriz compacta H1 obtenida a partir de la anterior por un tamano de bloque de N=336 y teniendo por lo tanto un factor de expansion b=14 seria la siguiente:
5
imagen5
o como se prefiera, puede usarse la siguiente matriz como alternativa:
*1
-X -1 6 -I -1 9 6 X ~x 2
-X
0 -X -X -X 3 -1 12 X -l 1
-X
9 XI -X -X X J -X -1 2 12
-X
X
-X -X XX -X -X 7 -1 -X -1 11
-X
-X
-X
4 8 -1 -X -X -1 -1 2
-X
3 0 -X -X 8 -X -X X -1
-X
-X
-X
-X
0 6 -1 -X -1 -X ft 1J
-1
-1
-1
9 -I -X • 1 J -1 -X 3
9
0 IJ -1 -l 12 -X -1 e -X -l
-1
ft -1 -1 1 4 -X - X 5 -1 -X
-X
-1 -x 0 -l -X 8 -X -1 9 0
10
XX -1 -l 3 -X -1 0 -1 -X
0 • l -1 *1 * X •1 -X -X -I - X
0 0 -X -1 -X -X -1 -1 -X -X -X
-1 0 0 -i -X -X -1 -X -X -1 -X
-1 -1 0 0 -1 -X -1 -X -1 -l
-1 -1 -1 0 0 -X -1 -1 -X
-1 -X -1 0 0 -1 -1 -1 -1 *1
-1 -x -X -1 -1 0 0 -1 -l -X -X
. 1 -1 -l -1 -X -X 0 0 -l -1 -l
-1 -x -1 -1 -X -1 -1 0 0 -1
-x -1 -X -1 -1 -X -1 0 0
0
-1 -X 1 -1 -X -1 -X -X
0
0
4
8 -x -X -X l -1 -X -X -X -X 0
para un tamano de bloque diferente puede definirse una matriz compacta diferente que puede obtenerse a partir de la misma matriz de modelo binario o a partir de otra diferente.
10 Para obtener palabras de codigo de 1920 bits con una tasa de codificacion de 1/2, puede usarse la siguiente matriz:
imagen6
o de lo contrario, preferentemente, la matriz:
27
-1 -1 -l 65 19 -1 30
-1
-1
0 -1 1 *1 70 -t
-1
-1
41 -1 -1 -1 44
-1
16
77 -1 -1 -1 6 -1 46
-1
-1
-1
46 -1 27 -1 46
-1
-1
63 -1 -1 -1 55
-1
-1
-1
-1
42 -1 21 -1 SB
-1
-1
-1
-1
76 0 -1 1
-1
29 9 -1 -1 -1 37
-1
-l
-1 22 72 -1 -1 47
-l
35
-1 -1 -1 -1 13 • 1 36
-1
46 26 -1 *1 -1 36
-1
-1
-1
-1
-l 0
-1
-1
47
-1 62 -l 0 0 -1
-1
59 60 26 -1 -1 0 0
-l
-1 -1 -1 -1 -1 -1 0
19
-1 -1 -1 -1 -J -l -1
-1
-1
46 26 10 -1 -1 -l
-l
41 -t -1 -1 -1 -1 -1
62
1 1 -1 -1 -1 -l -1
-1
1 JS 21
-1
-1
-1
-1
-1
-l o -1 1 -1 -l
-1
-1
70 -1 -1 0 -1 •1
-1
1
-1 6 -1 10 58 'l -1
1
-1 -t -1 •1 -1 -l
1
-1 -1 -1 -t -1 -1 -1
l
-1 -1 -t -l -I -1 -1
0
-1 1 *1 -1 -1 -l
0
0
-1 -1 -1 -1 -1 -1
1
0 0 -1 -1 -1 -l
l
-l 0 0 -t -1 -1
1
-1 -1 0 0 -1 -1
1
-1 -1 -1 0 0 -1 -1
I
-1 -1 -l 1 0 0 -l
1
-1 -1 *1 -1 "1 0 0
l
-l -1 -1 -1 -1 -l 0
Una matriz compacta para N=8640 bits con factor de expansion 360 obtenida a partir de una matriz de modelo 5 binario diferente seria la siguiente:
-l
■1 -1 1
290
0 312 -1 32
163
67 -1 197
-1
-1
-1
323 -l
-l
-l
226 -l -1
113
90 -1 -1 120
-l
-1 -l -1 -1
-l
*1 142 -l -1
329
265 -1 66 166
212
104 l 102
*t
-l -1 -1 -1
20?
70 -1 / 2J9
-1
297 106 328 -l -1 99 -1 0
-1
120 -1 -l -1 -1 ‘1 •1 0
66
-l -1 -l -1 260 -» HI -1
_ 4 4
-1 1 37 354 -1 -t 162 -1 -1
-1
'1 224 -1 114 -i 245
-1
-1
23
-l
-1 1 J« *1 18 * 46 62 -l -1
-1
347 67 -l -1 -1 46 -l
96
-1 -1 -l -1 -1 -1 -1
-1
-1
-1
-1
120 -1 1
-1
-1
-1
1 BO 16 • 1 32 9 15J 0
-1
-l
*1 -1 ~ 1 -1 -1 -1 61 165
1
-1 -1 -l -l -1 -1 -1 -1 •1
0
-1 -l -1 *1 -1 -1 -1 -1 -l
0
0
-l -1 1 -1 -1 -1 -l
1
0 0 -1 -1 -l -1 -1 -1 -1
1
-1 0 0 -l -1 -1 -1 -1 -l
0 0 -1 -1 -1 -1 -1
1
-1 -l -l 0 0 -1 -1 -1 -1
-1 -1 -1 • 1 0 0 - 3 -l
1
“1 -1 -1 -1 -1 0 0 -1
1
1
-1 -1 -1 -1 -1 -1 0 0 -1
1
-1 -l -1 -l -1 -1 -1 0 0
1
-1 -1 -1 -1 -1 -1 1 -l 0
Otra alternativa preferente para obtener palabras de codigo de 8640 bits con una tasa de codificacion de 1/2 es la matriz:
5
10
15
20
25
30
35
40
-1
34 -1 95 -1 219 -l -l -1 -1 348 -1 -1 0 -l -1 -1 -i -1 -l -l
-1
-1
-1
-I O -1 O *1 *1 -1 1J4 356 315 -1 0 0 -l -l -i -l -l -l -1 -1 -1
51
-1 31 -l -1 -1 -1 22 152 -1 57 -l -1 0 0 -1 -i -1 -1 -l -1 -1 -1
-I
134 -1 390 -1 261 13 -l -1 -1 -1 -1 -1 -1 -1 0 0 -l -1 -1 -i -1 -1 -1
-1
340 -1 99 J36 -l 1 -1 -1 •1 -1 33 -1 -1 -1 0 0 -1 -1 -l
-1
-1
-1
163
*1 46 -1 -1 -1 -1 -1 -1 304 -t 84 -1 -1 -1 -1 -l 0 0 -1 -l -1 -1 -1
-1
165 -1 34 -1 -1 -1 94 0 -1 -1 -1 -1 -1 -1 -1 -i -1 0 0 -l -1 -l
-1
-1
323 -1 333 339 -1 -1 -1 -1 291 -1 -1 -1 -1 -l -i -l -1 0 0
-1
-1
-1
46
-1 314 -1 -1 -1 59 -1 -1 61 -1 120 -1 -1 -1 -1 -i -1 -l -l 0 0 -l -1
-1
-1
131 -l -1 -1 -1 161 -1 303 -1 264 -1 -1 -l -1 -l -1 -1 -l -1 0 0 *1
-1
303 -1 6 •1 169 -1 -1 136 -1 -1 -1 0 -1 -l -1 -i -1 -1 -l -1 -1 0 0
-1
-1
313 -1 -1 -1 100 -l -1 144 -1 301 33 166 -1 -1 -i -1 -1 -i -1 -1 -1 0
La etapa desde la matriz compacta al modelo binario es umvoca, pero para la etapa opuesta, no lo es; es dedr, pueden obtenerse diferentes matrices compactas a partir de una matriz de modelo binario. La matriz binaria se introduce como una etapa que facilita la descripcion de la invencion. Es posible desarrollar una matriz compacta directamente sin pasar a traves de la matriz de modelo binario. En ese caso, para esa matriz compacta, puede obtenerse su matriz de modelo binario correspondiente que, si es de triple diagonal, estara de acuerdo con el procedimiento de la invencion.
Los codigos de correccion de errores pueden “perforarse”, en el que la tecnica para perforar consiste en eliminar elementos de la palabra de codigo de modo que no se transmitiran. En lugar de transmitir una palabra de codigo v=[v(0),v(1),...,v(N-1)], se transmitira una palabra w=[w(0),w(1),...,w(M-1)] donde M<N. La perforacion debe hacerse de una manera controlada, de modo que se transmita la redundancia necesaria para que el decodificador del receptor pueda evaluar los datos transmitidos. Esta perforacion se aplica a tanto los bits de datos como los bits de paridad. Puede definirse un patron de perforacion como la secuencia de bits que se ha de transmitir como perforados, donde dicho patron de bits pude ser periodico o aperiodico. En caso de que no haya regularidad, dicho patron puede describirse con un vector pp de N posiciones, indicando con un “1” los bits a transmitirse y con un “0” los bits a eliminarse (perforarse). Gracias a la tecnica de perforacion, la comunicacion de datos puede amplificarse, puesto que se envfa menos redundancia. Si el peso de Hamming del patron pp es M, la tasa de errores del sistema total es R=K/M.
Por ejemplo, si se tiene un codigo con R=5/6 y el tamano de bloque N=5184 y se desea realizar una perforacion para aumentar la tasa a R=16/18, puede usarse el siguiente patron de perforacion, que producira un bloque con N=4860 bits:
pPhm** =1* i ... i o o — a i i ••• i p o — o i i * * i i
XUft tq IM M
Para conseguir la implementacion de codigos de LDPC, se usa un dispositivo electronico, ya sea un programa ejecutado en un microprocesador o una implementacion de hardware FPGA o ASIC. Dicho dispositivo recibe un bloque de datos, calcula los bits de paridad, los concatena con los bits de informacion y los envfa a la siguiente fase del transmisor para modularse adecuadamente y transmitirse a traves del canal correspondiente. El calculo de los bits de paridad puede hacerse por medio del producto de la matriz generadora G o la solucion del sistema de ecuaciones anteriormente presentado.
El decodificador de codigos de LDPC normalmente esta basado en un decodificador iterativo. Un posible decodificador, entre varias opciones de la tecnica, consiste en un estimador que, tras recibir la palabra que
A
corresponde al codigo transmitido r=v+z, donde Z es ruido de canal aditivo, realiza una estimacion de ruido Z de manera que <r-2)HT=o En e| caso donde el sistema hace uso de la tecnica de perforacion, antes del decodificador habra una unidad que inserta un indicador en las posiciones perforadas. Este indicador sirve para dirigir al decodificador para estimar el valor apropiado en estas posiciones.
La Figura 1 muestra el diagrama de bloques de un codificador tipico, donde (1) es el bloque de datos a transmitirse u=[u(0),u(1),...,u(K-1)], (2) es una memoria que contiene la representacion de la matriz de paridad H o la matriz generadora G, (3) es dicha matriz, (4) es el bloque que realiza el algoritmo de codificacion, (5) es la palabra de codigo lineal obtenida desde la codificacion v = [v(0),v(1),...,v(N-1)], (6) es el bloque que hace la perforacion, y (7) es la palabra obtenida despues de la perforacion w = [w(0),w(1),...,w(M-1)].
La Figura 2 muestra el diagrama de bloques para un decodificador, donde (8) representa la senal recibida desde el canal s=[Sn,S1,...,SM-1], que sera similar a la palabra obtenida despues de perforar pero despues de verse afectada por el ruido de canal, (9) representa el bloque que realiza la “des-perforacion”, obteniendo una palabra (10) r=[r(()), r(1),...,r(N-1)] con el numero de bits en el codigo de LDPC. (11) es la memoria que contiene cualquiera de la matriz
de paridad o la matriz generadora en el receptor y que la transmite (12) al bloque que realiza el algoritmo de decodificador (13). La salida de este bloque seran los datos reconstruidos (14) u =[0(0), 0(1),..., 0(K-1)].

Claims (21)

  1. 5
    10
    15
    20
    25
    30
    35
    REIVINDICACIONES
    1. Un procedimiento aplicado a codificar datos durante transmision de senal, en el que la codificacion incluye generar bits de paridad en un bloque de datos de manera que desde una palabra de K bits se genera una palabra de codigo de N bits, comprendiendo el procedimiento:
    seleccionar un factor b, donde 1 < b <K, donde n y k son enteros positivos, y donde n = N/b y k = K/b;
    definir una matriz de modelo binario Ho=[Ha|Hb] de tamano (n-k)x n como una combinacion de una primera submatriz Ha que corresponde a los bits de datos y una segunda submatriz Hb que corresponde a los bits de paridad, donde la segunda submatriz Hb=[hbo|Hbi] esta compuesta de un vector de columna hbo que tiene n-k posiciones y una triple diagonal estructurada Hbi, en el que los elementos de las dos diagonales centrales hbi(i,i), hbi(i+1,/), o</<n-k-2 y el primer elemento hbi(n-k-1,0) de la ultima fila son iguales a 1, donde n-k es el numero de filas y columnas de la submatriz Hb, y de los elementos restantes de la triple diagonal estructurada Hb1 son iguales a cero;
    generar una matriz compacta H1 desde la matriz de modelo binario Ho sustituyendo cada uno de los 1 en la matriz de modelo binario Ho con un numero entero y los 0 en dicha matriz de modelo binario Ho con -1, en el que los numeros enteros son mayores que o iguales a o y menores que b;
    generar una matriz de paridad H de un codigo de comprobacion de paridad de baja densidad cuasi-dclico, LDPC, desde la matriz compacta H1;
    aplicar la matriz de paridad H al bloque de datos para determinar los bits de paridad para el bloque de datos para generar la palabra de codigo de LDPC; y
    transmitir la palabra de codigo de LDPC mediante un transmisor a traves de un canal desde un primer dispositivo de comunicacion a un segundo dispositivo de comunicacion.
  2. 2. El procedimiento de la reivindicacion 1, en el que los enteros positivos usados para generar la matriz compacta son enteros positivos pseudo-aleatorios mayores que, o iguales a, o y menores que b.
  3. 3. El procedimiento de la reivindicacion 1, en el que la generacion de la matriz de paridad H comprende:
    sustituir los elementos positivos de la matriz compacta H1 con una sub-matriz de identidad rotada dclicamente un numero de veces indicado por el valor del elemento positivo; y
    sustituir los elementos de la matriz compacta H1 que son iguales a -1 con una sub-matriz nula.
  4. 4. El procedimiento de la reivindicacion 1, en el que la matriz de paridad H define el codigo de LDPC con una tasa de codificacion de R=K/N.
  5. 5. El procedimiento de la reivindicacion 1, que comprende adicionalmente perforar la palabra de codigo mediante un dispositivo de perforacion para eliminar los bits de la palabra de codigo antes de que se transmita la palabra de codigo, en el que la perforacion incluye eliminar al menos un bit de datos y al menos un bit de paridad de la palabra de codigo.
  6. 6. El procedimiento de una cualquiera de las reivindicacion 1 a 5, que comprende adicionalmente modular y transmitir la palabra de codigo con una fase del transmisor a traves del canal, o
    en el que la matriz compacta H1 se genera mediante un procesador, o
    en el que la matriz compacta H1, se genera mediante uno de un circuito integrado y un campo de matriz de puertas programables.
  7. 7. El procedimiento de la reivindicacion 1, en el que la matriz compacta H1 usada para obtener palabras de codigo de 336 bits con una tasa de codificacion de A es:
    13
    -1 7 -1 -1 1 -1 1 -1 -1 -1 -1 -1 O -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
    5
    -1 -1 -1 11 -1 -1 -1 4 -1 4 6 -1 0 O -1 -1- -1 -1 -1 -1 -1 -1 -1
    -1
    13 -1 -1 -1 -1 11 -1 10 -1 9 13 -1 -1 O 0
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    13 -1 -1 6 -1 10 -1 5 -1 -1 4 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    8 8 2 11 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 • -1
    -1
    -1
    -1
    -1
    3 -1 -1 -1 -1 -1 -1 1 -1 4 1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    4 2 -1 2 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    2
    -1 13 -1 4 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1
    -1
    11 -1 -1 -1 -1 -1 -1 6 4 11 12 -1 -1 -1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    10 -1 -1 -1 -1 1 -1 13 13 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    0 -1 -1 0 2 2 -1 -1 -1 -1 O -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    1 2 11 2 4 12 -1 -1 -1 -1 -1 -1 -1 -1 -1 0
  8. 8. El procedimiento de la reivindicacion 1, en el que la matriz compacta Hi usada para obtener palabras de codigo de 1920 bits con una tasa de codificacion de ^ es:
    -1
    52 -1 64 -1 -l 60 -1 -1 -1 -1 1 -1 0 -1 -l
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    10
    -1 -1 -1 -1 79 -1 -1 79 -1 78 51 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
    9
    -1 -1 -1 -1 -1 -1 75 29 72 a -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1
    -1
    52 16 63 -1 -1 65 -1 -1 -1 -l -1 40 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    24 -1 -1 47 1 39 -1 -1 -1 -l -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    52
    -1 -1 -1 -1 -1 -1 -1 53 79 48 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1
    -1
    O -1 -1 72 -1 67 57 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    7 -1 -1 -1 2 50 -1 -1 -1 -l 15 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -l
    15
    -1 19 -1 -l -1 -1 -1 75 51 43 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1
    72
    -1 -1 -1 38 -1 -1 -1 69 -1 62 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1
    -1
    19 -1 41 -1 -1 1 41 -1 -1 -l -1 0 -l -1 -1 -1 -1 -1 -1 -1 -1 0 0
    41
    -1 17 -1 -1 -1 -1 _1 15 -1 30 -1 40 6 -1 -1 -1 -1 -1 -1 -1 -1 -1 0
    5 9. El procedimiento de la reivindicacion 1, en el que la matriz compacta Hi usada para obtener palabras de codigo de
    8640 bits con una tasa de codificacion de ^ es:
    -l
    -1 -1 -1 -1 -1 297 106 328 -1 -1 99 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
  9. 290
    . 0 312. ' -1 32. -1 120 : -i -1 -i -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
    183
    57 -1 -1 187 68 -1 -i -1 -l 260 -1 81 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1
    -1
    -1
    -t 323 -1 -1 -1 137 354 -l -1 162 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    228 -1 -1 -1 -1 224 -1 114 -1 245 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    113
    98 -1 -1 120 23 -1 -1 -1 -1 -1 -1 -1 -1 -1 -l -1 0 0 -1 -1 -1 -1 -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    138 -1 187 45 62 -1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    142 -1 -1 -1 347 67 -1 -1 -1 46 -1 -1 -1 -1 -1 -1 -1 0 0
    -1
    -1
    -1
    328
    265 -1 66 156 96 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1
    212
    184 -1 -1 102 -1 -1 -1 -1 120 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1
    -1
    -1
    -1
    -1
    -1
    -1
    -1
    80 15 -1 329 153 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0
    207
    70 -1 7 235 -1 -1 -1 -1 -1 -1 -1 81 185 -1 -1 -1 -1 -1 -1 -1 -1 -1 0
  10. 10. El procedimiento de la reivindicacion 1, en el que la matriz compacta H1 usada para obtener palabras de codigo de 1440 bits con una tasa de codificacion de 2/3 es:
    49
    -1 -1 21 31 -1 57 -1 -1 19 -1 29 2 -1 19 -1 -1 0 -l -l -1 -1 -1 -1
    -1
    7 22 -1 -1 37 -1 32 10 -1 26 -1 -1 59 -1 48 -1 0 0 -l
    -1
    -1
    -1
    -1
    53
    -1 -1 20 50 -1 -1 3 16 -1 49 -1 -1 28 14 -1 -1 -1 0 0 -1 -1 -1 -1
    -1
    58 23 -1 -1 15 54 -1 -1 5 -1 18 49 -1 -1 13 -1 -1 -l 0 0
    -1
    -1
    -1
    55
    -1 -1 58 -1 9 -1 26 57 -1 41 -1 31 -1 21 -1 -1 -1 -l -1 0 0 -1 -1
    -1
    10 49 -1 59 -1 7 -1 -1 30 -1 18 -1 48 -1 7 59 -1 -l -1 -1 0 0
    -1
    48
    -1 -1 50 18 -1 -1 11 52 -1 59 -1 -1 37 -1 10 0 -1 -l -1 -1 -1 0 0
    -1
    24 16 -1 -1 0 S3 -1 -1 41 -1 38 51 -1 58 -1 59 a -l -1 -1 -1 -1 0
  11. 11. El procedimiento de la reivindicacion 1, en el que la matriz compacta H1 usada para obtener palabras de codigo de 6480 bits con una tasa de codificacion de 2/3 es:
    5
    10
    15
    20
    25
    78
    -1 -1 167 237 -1 3 -1 266 -1 -1 102 153 -1 -1 212 -1 0 -1 -1 -1 -1 -1 -1
    -1
    83 189 -1 -1 68 -1 178 -1 90 205 -1 -1 13 4 -1 -1 0 0
    -1
    -1
    -1
    -1
    -1
    -1
    226 147 -1 46 -1 -1 76 -1 116 -1 211 -1 112 -1 118 -1 -1 0 0
    -1
    -1
    -1
    -1
    92
    -1 -1 214 -1 236 241 -1 157 -1 143 -1 214 -1 207 -1 -1 -1 -1 0 0 -1 -1 -1
    144
    -1 -1 258 264 -1 53 -1 114 -1 172 -1 -1 82 262 -1 62 -1 -1 -1 0 0 -1 -1
    -1
    153 120 -1 -1 199 -1 126 -1 61 -1 183 15 -1 -1 134 -1 -1 -1 -1 -1 0 0
    -1
    -1
    100 -1 141 -1 36 -1 17 -1 156 -1 124 162 -1 -1 57 0 -1 -1 -1 -1 -1 0 0
    196
    -1 187 -1 73 -1 80 -1 139 -1 57 -1 -1 236 267 -1 62 256 -1 -l -1 -1 -1 0
  12. 12. El procedimiento de la reivindicacion 1, en el que la matriz compacta Hi usada para obtener palabras de codigo de 1152 bits con una tasa de codificacion de 5/6 es:

    -1 13 32 47 41 24 -1 25 22 40 1 31 8 15 20 15 42 30 13 3 -1 0 -1 1

    25 46 15 43 45 29 39 47 23 38 39 12 -1 21 -1 38 33 0 0 -1 39 0 0 1

    35 45 45 38 14 16 6 11 -1 18 7 41 35 17 32 45 41 -1 18 17 0 -1 0 0

    9 32 6 22 26 31 9 8 22 32 40 4 18i 40 36 -1 -1 23 3i 41 39 20 -1 0
  13. 13. El procedimiento de la reivindicacion 1, en el que la matriz compacta H1 usada para obtener palabras de codigo de 5184 bits con una tasa de codificacion de 5/6 es:
    imagen1
  14. 14. El procedimiento de la reivindicacion 1, en el que uno o mas elementos de la palabra de codigo se eliminan antes de que se transmitan incluyendo aplicar una tecnica de perforacion de manera que la palabra de codigo transmitida tiene un numero menor de bits que la palabra de codigo obtenida antes de la perforacion.
  15. 15. El procedimiento de la reivindicacion 14, en el que:
    la palabra de codigo es una palabra de codigo de 1152 bits y una tasa de codificacion correspondiente es 5/6; y
    la tecnica de perforacion incluye el siguiente patron de perforacion:
    ppm!1*'=n 1 — 100 — 01 1 - 10 0 — 01
    ?jo ' 5 ' ' 55 ’ *
    para obtener una palabra de codigo de 1080 bits y una tasa de codificacion de 16/18.
  16. 16. El procedimiento de la reivindicacion 14, en el que:
    la palabra de codigo es una palabra de codigo de 5184 bits y una tasa de codificacion correspondiente es 5/6; y
    la tecnica de perforacion incluye el siguiente patron de perforacion:
    PP«Si‘"=[l 1-100 01 !■••• 1 00 - 011-1 I
    »n ' iu ' ' m ' >*1 ®
    para obtener una palabra de codigo de 4860 bits y una tasa de codificacion de 16/18.
  17. 17. El procedimiento de la reivindicacion 14, en el que:
    la palabra de codigo es una palabra de codigo de 1152 bits y una tasa de codificacion correspondiente es 5/6; y
    la tecnica de perforacion incluye el siguiente patron de perforacion:
    imagen2
    para obtener una palabra de codigo de 1008 bits y una tasa de codificacion de 20/21.
  18. 18. El procedimiento de la reivindicacion 14, en el que:
    la palabra de codigo es una palabra de codigo de 5184 bits y una tasa de codification correspondiente es 5/6; y la tecnica de perforation incluye el siguiente patron de perforation:
    PP«!1SI’=[0 0 — 0 1 1 ••• 10 ° ••• 0 1 1 ••• 1 ]

    116 030 433 216
    5 para obtener una palabra de codigo de 4536 bits y una tasa de codificacion de 20/21.
  19. 19. El procedimiento de la reivindicacion 1, en el que la matriz compacta H1 usada para obtener palabras de codigo de 336 bits con una tasa de codificacion de % es:

    -1 -1 -1 6-1-1 9 6 -1 -1 2-1-1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 ’I

    -1 0 -1 -1 -1 3 -1 12 1-1-1 3-1 0 0 -1 -1 -1 -1 -1 “I -1 "I "I

    -1 9 11 -1 -1 13 -1 -1 2 12 -1 -1 -1-1 0 0 -1 -1 -1 -1 -1 -1 "I -1

    1 -1 -1 11 -1 -1 7 -1 -1 -1 11 -1 -1 -1-1 0 0 -1 -1 -1 -1 -1 -1 -1

    -1 -1 -1 4 8 -1 -1 -1 -1 -1 2 5 4 -1 -1 -1 0 0 -1 -1 -1 -1 “I 'I

    -1 3 0-1-1 8 -1 -1 1 -1 "I -1 -1 “I -1 -1-1 0 0 -1 -1 -1 -1 -1

    -1 -1-1 0 6 -1 -1 -1 -1 5 13 -l -1 -1 -1 -1 -1-1 0 0 -1 -1 -1 -1

    -1 -1 -1 9 -1 -1 -1 3-1-1 3 1 -1 -1 -1 -1 -1 -1-1 0 0 -1 -1 -1

    9 0 13 -1 -1 12 -1 -1 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1

    -j 5-1-1 1 4 -1 -1 5 -1 -1 -1 -l -1 -1 -1 -1 -1 -1 -1-1 0 0 -I

    -1 -1 -1 8-1-1 8-1-1 9 0-1 0 -1 -1 -1 -1 -1 -1 -1 -1-1 0 0

    10 11 -1 -1 -1 3-1-1 0 -1 -1 -1 4 8 -1 -1 -1 -1 -1 -1 -1 -1 -1 0
  20. 20. El procedimiento de la reivindicacion 1, en el que la matriz compacta H1 usada para obtener palabras de codigo 10 de 1920 bits con una tasa de codificacion de % es:
    27
    -1 -1 -1 55 19 -1 30 -1 -1 -1 -1
    -1
    -1
    0 -1 1 -1 70 -1 47 -1 62
    -1
    -1
    -1
    41 -1 -1 -1 44 -1 -1 59 60 25
    16
    77 -1 -1 -1 5 -1 48 -1 -1 -1 -1
    -1
    -1
    -1
    45 -1 27 -1 46 19
    -1
    -1
    -1
    -1
    -1
    63 -1 -1 -1 55 -1 -1 -1 48 26
    -1
    -1
    -1
    42 -1 21 -1 58 -1 41
    -1
    -1
    -1
    -1
    -1
    -1
    78 0 -1 7 52
    -1
    -1
    -1
    -1
    29 9 -1 -1 -1 37 -1 -1 -1 35 21
    -1
    -1
    22 72 -1 -1 47 -1 -1 -1 0
    -1
    35
    -1 -1 -1 -1 13 -1 35 -1 70 -1 -1
    -1
    46 28 -1 -1 -1 38 -1 -1 -1 8
    -1

    -1 0 -1 -1 -1 -1 -1 -1 -1 -1 _1 -1

    -l 0 0-1 -1 -1 -1 -1 -1 -1 -1 -1
    -1-1 0 0-1 -1 -1 -1 -1-1 -1 -1

    -1 -1-1 0 0 -1 -1 -1 -1 -1 ”1 -i

    -1 -l -1-1 0 0 -1 -1 -1 -1 -1 -1

    10 -1 -1 -1-1 0 0 -1 -1 -1 -1 -1

    -l -1 -1 -1 -1-1 0 0 -1 -1 -1 -1

    -1 -1 -1 -1 -1 -1-1 0 0 -1 -1 -1

    -1 -1 -1 -1 -1 -1 -1-1 0 0 -1 -1

    -l -1 -1 -1 -1 -1 -1 -1-1 0 0 -1

    0 -1 -1 -1 -1 -1 -1 -1 -1-1 0 0

    10 58 -1 -1 -1 "I "I ”1 "1 "1 "1 0
  21. 21. El procedimiento de la reivindicacion 1, en el que la matriz compacta H1 usada para obtener palabras de codigo de 8640 bits con una tasa de codificacion de % es:

    -1 34 -1 95 -1 279 -1 -1 -1 -1 248 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 _1

    -1 -1 0 -1 0 -1 -1 -1 -1 134 356 275 -1 0 0 -1 -1 -1 -1 ”1 "1 "1 _1 -1

    51 -1 27 -1 -1 -1 -1 -1 22 152 -1 57 -1 -1 0 0 -1 -1 -1 -1 -1 “1 "1 _1

    -1 124 -1 290 -1 281 15 -1 -1 -1 -1 -1 “1 "1 '1 0 0 -1 -1 -1 -1 “1 _1 _1

    -1 340 -1 99 336 -1 -1 1 “1 -1 “1 '1 33 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1

    163 -1 46 -1 -1 -1 -1 -1 -1 306 -1 86 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 "1

    -1 185 -1 24 -1 -1 -1 94 0 -1 -1 -1 -1 “I "I -1 -1-1 0 0 -1 -1 -1 “1

    -1 223 -1 225 325 -1 -1 -1 -1 "1 297 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 "1

    46 -1 314 -1 -1 -1 59 -1 -1 67 -1 120 -1 -1 -1 -1 -1 -1 -1 ~1 0 0 -1 -1

    -1 -1 121 -1 -1 -1 -1 161 -1 303 -1 264 -1 -1 -1 -1 -1 "1 “1 -1 *1 0 0 -1

    -1 303 -1 8 -1 185 -1 -1 138 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 "1 -1 “1 0 0

    -1 -1 312 -1 -1 -1 100 -1 -1 144 -1 307 33 166 -1 -1 -1 -1 -1 “1 "1 “1 _1 0
ES10710590.0T 2009-02-06 2010-02-05 Codificación LDPC cuasi-cíclica Active ES2559637T3 (es)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
ES200900343 2009-02-06
ES200900343A ES2363846B1 (es) 2009-02-06 2009-02-06 Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos.
ES201030066 2010-01-20
ES201030066A ES2386449B1 (es) 2010-01-20 2010-01-20 Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos mejorado.
PCT/ES2010/070067 WO2010089444A1 (es) 2009-02-06 2010-02-05 Codificar y decodificar usando códigos cuasi-cíclicos ldpc

Publications (1)

Publication Number Publication Date
ES2559637T3 true ES2559637T3 (es) 2016-02-15

Family

ID=42145914

Family Applications (1)

Application Number Title Priority Date Filing Date
ES10710590.0T Active ES2559637T3 (es) 2009-02-06 2010-02-05 Codificación LDPC cuasi-cíclica

Country Status (6)

Country Link
US (3) US8719655B2 (es)
EP (1) EP2395667B1 (es)
KR (1) KR101636965B1 (es)
CN (1) CN102301603B (es)
ES (1) ES2559637T3 (es)
WO (1) WO2010089444A1 (es)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101636965B1 (ko) 2009-02-06 2016-07-20 디세노 데 시스테마스 엔 실리시오, 에스.에이. 잡음성 매체들에서 데이터를 통신하기 위한 방법 및 장치
KR102019893B1 (ko) * 2013-07-22 2019-09-09 삼성전자주식회사 저밀도 패리티 검사 부호를 지원하는 통신 시스템에서 신호 수신 장치 및 방법
CN106849958B (zh) * 2016-12-29 2020-10-27 上海华为技术有限公司 低密度奇偶校验码校验矩阵的构造方法、编码方法及系统
CN106953644A (zh) * 2017-03-15 2017-07-14 中山大学 一种基于汉明码的多元qc‑ldpc码构造方法
CN109586733B (zh) * 2018-11-23 2021-06-25 清华大学 一种基于图形处理器的ldpc-bch译码方法
US11175826B2 (en) * 2019-05-03 2021-11-16 Government Of The United States Of America, As Represented By The Secretary Of Commerce Diagonal node data block matrix for adding hash-linked records and deleting arbitrary records while preserving hash-based integrity assurance

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100809619B1 (ko) * 2003-08-26 2008-03-05 삼성전자주식회사 이동 통신 시스템에서 블록 저밀도 패러티 검사 부호부호화/복호 장치 및 방법
US7260763B2 (en) * 2004-03-11 2007-08-21 Nortel Networks Limited Algebraic low-density parity check code design for variable block sizes and code rates
US7203897B2 (en) 2004-08-12 2007-04-10 Motorola, Inc. Method and apparatus for encoding and decoding data
US7343548B2 (en) 2004-12-15 2008-03-11 Motorola, Inc. Method and apparatus for encoding and decoding data
US20070198905A1 (en) * 2006-02-03 2007-08-23 Nokia Corporation Transmitter for a communications network
US8261155B2 (en) 2007-03-09 2012-09-04 Qualcomm Incorporated Methods and apparatus for encoding and decoding low density parity check (LDPC) codes
CN101159515B (zh) * 2007-11-22 2010-08-25 普天信息技术研究院有限公司 一种可变长低密度奇偶校验码的编码方法及系统
KR101636965B1 (ko) 2009-02-06 2016-07-20 디세노 데 시스테마스 엔 실리시오, 에스.에이. 잡음성 매체들에서 데이터를 통신하기 위한 방법 및 장치
US8464123B2 (en) * 2009-05-07 2013-06-11 Ramot At Tel Aviv University Ltd. Matrix structure for block encoding
WO2012118766A1 (en) * 2011-02-28 2012-09-07 Clariphy Communications, Inc. Non-concatenated fec codes for ultra-high speed optical transport networks
US9252811B2 (en) * 2011-06-07 2016-02-02 Analogies Sa Time-varying low-density parity-check convolutional codes

Also Published As

Publication number Publication date
EP2395667A1 (en) 2011-12-14
US8719655B2 (en) 2014-05-06
US9240806B2 (en) 2016-01-19
CN102301603A (zh) 2011-12-28
US20120266039A1 (en) 2012-10-18
WO2010089444A1 (es) 2010-08-12
US20140304569A1 (en) 2014-10-09
KR101636965B1 (ko) 2016-07-20
EP2395667B1 (en) 2015-12-16
KR20110126097A (ko) 2011-11-22
CN102301603B (zh) 2014-08-06
US9543985B2 (en) 2017-01-10
US20160119000A1 (en) 2016-04-28

Similar Documents

Publication Publication Date Title
ES2559637T3 (es) Codificación LDPC cuasi-cíclica
EP3457575B1 (en) Encoding method and device and decoding method and device for structured ldpc
EP2387157B1 (en) Efficient encoding of LDPC codes using structured parity-check matrices
ES2427179T3 (es) Codificación de los códigos de comprobación de paridad de baja densidad
ES2529182T3 (es) Diseño de LDPC estructurado con agrupación de filas de vector
ES2922630T3 (es) Códigos LDPC cuasi cíclicos basados en una matriz base de dimensión 5x27 y módulo de elevación
ES2907089T3 (es) Diseño de códigos ldpc cuasi-cíclicos para un sistema de comunicaciones móviles 5g
US8099644B2 (en) Encoders and methods for encoding digital data with low-density parity check matrix
US8539304B1 (en) Parallel encoder for low-density parity-check (LDPC) codes
BRPI0514245B1 (pt) Método e aparelho para codificar e decodificar dados
CN102394659A (zh) Ldpc码校验矩阵构造方法及对应矩阵乘法运算装置
Chen et al. Construction of quasicyclic LDPC codes based on the minimum weight codewords of Reed-Solomon codes
Tan et al. Efficient quantum stabilizer codes: LDPC and LDPC-convolutional constructions
US20190268021A1 (en) Method and apparatus for encoding and decoding of variable length quasi-cyclic low-density parity-check, qc-ldpc, codes
EP2309650B1 (en) A systematic encoder with arbitrary parity positions
EP3047575B1 (en) Encoding of multiple different quasi-cyclic low-density parity check (qc-ldpc) codes sharing common hardware resources
CN104426553B (zh) 低密度奇偶校验矩阵的编码方法
Butler et al. On distance properties of quasi-cyclic protograph-based LDPC codes
ES2386449B1 (es) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos mejorado.
JP5310701B2 (ja) 復号装置および復号方法
Stuart et al. Design and implementation of hardware-efficient modified Rao–Nam scheme with high security for wireless sensor networks
Ivanov et al. Low-density parity-check codes based on the independent subgroups
ES2363846B1 (es) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos.
Kumar et al. Application of T-Direct Codes in Multiple-Rate Codes
Huang et al. Construction of Multiple-Burst-Correction Codes in Transform Domain