ES2424463T3 - Aparato de decodificación, método de decodificación y programa - Google Patents

Aparato de decodificación, método de decodificación y programa Download PDF

Info

Publication number
ES2424463T3
ES2424463T3 ES10178005T ES10178005T ES2424463T3 ES 2424463 T3 ES2424463 T3 ES 2424463T3 ES 10178005 T ES10178005 T ES 10178005T ES 10178005 T ES10178005 T ES 10178005T ES 2424463 T3 ES2424463 T3 ES 2424463T3
Authority
ES
Spain
Prior art keywords
decoding
results
progress
matrix
calculation
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.)
Expired - Lifetime
Application number
ES10178005T
Other languages
English (en)
Inventor
Takashi Yokokawa
Toshiyuki Miyauchi
Yasuhiro Iida
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.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Application granted granted Critical
Publication of ES2424463T3 publication Critical patent/ES2424463T3/es
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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
    • 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/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1114Merged schedule message passing algorithm with storage of sums of check-to-bit node messages or sums of bit-to-check node messages, e.g. in order to increase the memory efficiency
    • 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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1134Full parallel processing, i.e. all bit nodes or check nodes are processed in parallel
    • 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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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/1105Decoding
    • H03M13/1145Pipelined decoding at code word level, e.g. multiple code words being decoded simultaneously
    • 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/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/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
    • 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/6502Reduction of hardware complexity or efficient processing
    • H03M13/6505Memory efficient implementations
    • 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/6566Implementations concerning memory access contentions
    • 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/6577Representation or format of variables, register sizes or word-lengths and quantization

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

Un aparato de decodificación (400) para decodificar un Código de Control de Paridad de Baja Densidad LDPCadaptado para poner en práctica una propagación de creencia sobre una representación de gráfico de Tanner del códigoLDPC, en donde la matriz de control de paridad, correspondiente al gráfico de Tanner de dicho código LDPC, estáconstituida por una combinación de una pluralidad de sub-matrices P x Pen donde cada sub-matriz es una matriz unitaria P x P; una matriz cuasi-unitaria en donde uno o varios `1', que sonelementos de la matriz unitaria P x P se sustituyen por 0; una matriz de desplazamiento en donde dicha matriz unitaria odicha matriz cuasi-unitaria está desplazada de forma cíclica; una matriz suma P x P, que es la suma de dos o más dedicha matriz unitaria P x P, de dicha matriz cuasi-unitaria y de dicha matriz de desplazamiento, en donde dicha matrizsuma P x P tiene un peso de ponderación de línea o de columna de dos o más; o una matriz nula P x P y dichacombinación comprende matrices suma P x P, comprendiendo dicho aparato de decodificación: un segundo medio de cálculo (415) adaptado para realizar simultáneamente una primea parte de P cálculos de nodos devariables para obtener P segundos resultados de decodificación en curso v (D415) según la ecuaciónen donde u0 representa un valor inicial para un mensaje recibido a decodificarse y representa un valor integradoen donde un primer resultado de decodificación en curso uj previamente obtenido por un primer medio de cálculo (412) ymemorizado en una primera memoria (413) se suma en todos los dv bordes conectados a un nodo de variable;una segunda memoria (410) adaptada para memorizar los P segundos resultados de decodificación en curso v a partirdel segundo medio de cálculo en una misma dirección; un primer medio de cálculo (412), adaptado para realizar simultáneamente una segunda parte de los P cálculos de nodosde variables según la ecuación vi >= v - udv, en donde udv es un primer resultado de decodificación en curso obtenidoanteriormente correspondiente al borde para el que debe determinarse el mensaje de borde vi y para realizarsimultáneamente P cálculos de nodos de control utilizando los valores de mensaje de borde para vi para obtener los Pprimeros resultados de decodificación en curso ui (D412) y la primera memoria (413) adaptada para memorizar los P primeros resultados de decodificación en curso ui procedentesdel primer medio de cálculo en una misma dirección; en donde la primera memoria está, además, adaptada para memorizar, en una misma dirección, para una matriz sumacuyo peso de ponderación de línea o de columna es dos o más, los primeros resultados de decodificación en cursocorrespondientes a los P bordes que pertenecen a la matriz unitaria, a la matriz cuasi-unitaria o a la matriz dedesplazamiento incluida en la suma para formar dicha matriz suma, cuyo peso de ponderación de línea o de columna esdos o más.

Description

Aparato de decodificación, método de decodificación y programa
5 CAMPO TÉCNICO
La presente invención se refiere a un aparato de decodificación, un método de decodificación y un programa. Más en particular, la presente invención se refiere a un aparato de decodificación y un método de decodificación para decodificar códigos en los que se realiza la codificación utilizando códigos de control de paridad de baja densidad (códigos LDPC) y para un programa relacionado.
ANTECEDENTES DE LA INVENCIÓN
En los últimos años, la investigación en, a modo de ejemplo, los campos de comunicación tales como la comunicación
15 móvil y la comunicación de espacio profundo y los campos de difusión tales como las difusiones digitales por satélite o de ondas terrestres ha progresado de forma notoria. Junto con esta situación, la investigación sobre las teorías de codificación para obtener la codificación de corrección de errores y una decodificación eficiente se ha realizado de forma activa.
Como un límite teórico de la realización de códigos, se conoce el denominado límite de Shannon implicado por el así denominado teorema de codificación de canales de Shannon (C.E. Shannon). La investigación sobre las teorías de codificación se ha realizado para la finalidad de desarrollar códigos que presentan una ejecución cercana a este límite de Shannon. En los últimos años, como un método de codificación que presenta una ejecución cercana al límite de Shannon, a modo de ejemplo, se han desarrollado técnicas para lo que se suele denominar “codificación turbo”, tal como
25 códigos convolucionales concatenados paralelos (PCCC) y códigos convolucionales concatenados en serie (SCCC). Además, mientras se ha desarrollado esta codificación turbo, los códigos de control de paridad de baja densidad (en adelante referidos como “código LDPC”), que es un método de codificación que ha sido conocido durante un largo periodo de tiempo, han atraído la atención.
Los códigos LDPC fueron propuestos primero en R.G. Gallager, “Códigos de Control de Parida de Baja Densidad”, Cambridge, Massachusetts: M.I. T. Press, 1963. Más adelante, los códigos LDPC volvieron a atraer la atención en el Documento D. J.C. MacKay, “Códigos de corrección de errores adecuados basados en matrices muy escasas de elementos”, presentado a IEEE Trans. Inf. Theory, IT-45, páginas 399-431, 1999 y M. G. Luby, M. Mitzenmacher, M. A. Shokrollahi y D. A. Spielman, “Análisis de códigos de baja densidad y diseños mejorados utilizando gráficos irregulares”,
35 en Proceedings of ACM Symposium on Theory of Computing, páginas 249-258, 1998.
A partir de esta reciente investigación comienza a conocerse que, para los códigos LDPC, a medida que aumenta la longitud del código, se puede obtener un rendimiento próximo al límite de Shannon, de forma similar a la denominada codificación turbo. Además, puesto que los códigos LDPC tienen la propiedad de que la longitud mínima es proporcional a la longitud del código, tienen las ventajas operativas de que las características de la probabilidad de errores de bloques son buenas y un así denominado fenómeno de límite inferior de errores, que se observa en las características de decodificación de la codificación turbo, es difícil que ocurra.
Dichos códigos LDPC se describirán a continuación, en detalle. Los códigos LDPC son códigos lineales y no siempre
45 necesitan ser bidimensionales, pero aquí se proporciona una descripción suponiendo que los códigos LDPC son bidimensionales.
Las principales características de los códigos LDPC son que la matriz de control de paridad, que define los códigos, LDPC es escasa de elementos. En este caso, una matriz escasa se forma que tal manera que el número de ‘1’ en los elementos de la matriz es muy pequeño. Si la matriz de control escasa se indica como H, sus ejemplos incluyen una matriz de control en la que, según se ilustra en la Figura 1, el peso de ponderación de Hamming de cada columna (número de ‘1’; peso) es “3” y el peso de Hamming de cada fila es “6”.
Según se describió anteriormente, los códigos LDPC definidos por la matriz de control H, en donde el peso de Hamming
55 de cada fila y de cada columna es fijo, se denominan “códigos LDPC regulares”. Por otro lado, los códigos LDPC definidos por una matriz de control H en donde el peso de Hamming de cada fila y de cada columna no es fijo, se denominan “códigos LDPC irregulares”.
La codificación por dichos códigos LDPC se realiza generando una matriz de generación G sobre la base de la matriz de control H y generando una palabra de código multiplicando esta matriz de generación G por un mensaje de información bidimensional. Más concretamente, un aparato de codificación para realizar la codificación mediante códigos LDPC calcula una matriz de generación G en donde la ecuación GHT = 0 se mantiene con una matriz de transposición HT de la matriz de control H. En este caso, cuando la matriz de generación G es una matriz k x n, el aparato de codificación multiplica la matriz de generación G por un mensaje de información de k bits (vector u) y genera una palabra de código 65 de n bits c (= uG). La palabra de código generada por este aparato de codificación se transmite con el bit de código cuyo
valor es “0” siendo objeto de mapeado a “+1” y el bit de código cuyo valor es “1” siendo objeto de mapeado a “-1” y se recibe en el lado de recepción a través de un canal de comunicación predeterminado.
Por otro lado, la decodificación de los códigos LDPC se puede realizar mediante un algoritmo de paso de mensajes
5 mediante la propagación de creencia en un así denominado gráfico de Tanner, que está constituido por un nodo de variable (también denominado un nodo de mensaje) y un nodo de control; este algoritmo de paso de mensaje fue propuesto por Gallager y es conocido como “decodificación probabilística”. En adelante, los nodos de variables y los nodos de control se refieren también simplemente como nodos, en donde sea adecuado.
10 Sin embargo, en la decodificación probabilística, puesto que los mensajes intercambiados entre nodos son valores de números reales, con el fin de encontrar una solución analítica, es necesario efectuar un seguimiento de la distribución de probabilidad del mensaje que toma un valor continuo. Esto necesita un análisis que implica un alto grado de dificultad. En consecuencia, Gallager ha propuesto un algoritmo A o un algoritmo B como un algoritmo para decodificar códigos LDPC.
15 En general, la decodificación de los códigos LDPC se realiza en conformidad con el procedimiento ilustrado en la Figura
2. En este caso, el valor de recepción se indica como U0 (u0i), la salida del mensaje desde el nodo de control se indica como uj y la salida de mensaje desde el nodo de variable se indica como vi. En este caso, el mensaje es un valor de número real tal como el “0” – semejanza del valor se representa por una así denominada ratio de probabilidad logarítmica.
20 En la decodificación de los códigos LDPC, inicialmente, según se ilustra en la Figura 2, en la etapa S11, se recibe el valor de recepción u0 (u0i), se inicializa a 0 el mensaje uj y una variable k que toma un valor entero como un contador para un proceso iterativo se inicializa a 0. A continuación, el proceso prosigue con la etapa S12. En la etapa S12, basada en el valor u0 (u0i) recibido, se determina un mensaje vi realizando un cálculo representado en la ecuación (1). Además, sobre
25 la base de este mensaje vi, se determina un mensaje uj realizando un cálculo representado en la ecuación (2).
30 En este caso, dv y dc, en las ecuaciones (1) y (2) son parámetros, respectivamente, que indican el número de '1' en la dirección vertical (en la dirección de filas) y en la dirección horizontal (en la dirección de columnas) de la matriz de control H y que se pueden seleccionar según se desee. A modo de ejemplo, en el caso de un código (3, 6), dv = 3 y dc = 6.
35 En el cálculo de cada una de las ecuaciones (1) y (2), puesto que la entrada del mensaje desde un borde desde el que procede un mensaje no se utiliza como un parámetro para un cálculo de suma o producto, la gama del cálculo de suma o producto es desde 1 a dv - 1 o 1 a dc - 1. En la práctica, el cálculo indicado en la ecuación (2) se realiza creando, por anticipado, una tabla de una función R (v1, v2), representada en la ecuación (3), que se define con una salida con respecto a dos entradas v1 y v2 y utilizando esta tabla continuamente (de forma recursiva), según se representa en la
40 ecuación (4).
45 En la etapa S12 además, la variable k se aumenta en 1 y el proceso prosigue luego con la etapa S13. En la etapa S13, se determina si la variable k es, o no, mayor que o igual a un número predeterminado N de decodificaciones iterativas. Cuando se determina, en la etapa S13, que la variable k no es mayor que o igual a N, el proceso retorna a la etapa S12 y se realiza de nuevo el procesamiento idéntico.
50 Cuando se determina, en la etapa S13, que la variable k es mayor que o igual a N, el proceso prosigue con la etapa S14, en donde el mensaje v que sirve como el resultado decodificado, que es finalmente objeto de salida como un resultado de realizar el cálculo representado en la ecuación (5), se determina y se proporciona a la salida. Con esta operación concluye el proceso de decodificación de los códigos LDPC.
55 En este caso, a diferencia del cálculo de la ecuación (1), el cálculo de la ecuación (5) se realiza utilizando los mensajes de entrada desde todos los bordes conectados a los nodos de variables.
5 En dicha decodificación de códigos LDPC, a modo de ejemplo, en el caso del código (3, 6), según se indica en la Figura 3, se intercambian mensajes entre nodos. En el nodo (nodo de variable) indicado por el “=” en la Figura 3, se realiza el cálculo representado en la ecuación (1). En el nodo indicado por “+” (nodo de control), se realiza el cálculo representado en la ecuación (2). En particular, en el algoritmo A, el mensaje se forma para ser bidimensional; en el nodo indicado por
10 “+”, se realiza un cálculo de la función lógica OR exclusiva de dc - 1 mensajes de entrada y en el nodo indicado por “=”, con respecto al valor R recibido, cuando todos los dv - 1 mensajes de entrada son valores de bits diferentes, se invierte el signo y se proporciona a la salida.
Además, en los últimos años, se ha realizado una investigación sobre un método de puesta en práctica de la
15 decodificación de códigos LDPC. Antes de describir el método de puesta en práctica, la decodificación de códigos LDPC se describe de una forma esquemática.
La Figura 4 representa un ejemplo de una matriz de control de paridad de (3, 6) códigos LDPC (una tasa de codificación de 1/2, una longitud de código de 12). La matriz de control de paridad de códigos LDPC puede ser objeto de escritura 20 utilizando un gráfico de Tanner, según se representa en la Figura 5. En la Figura 5, los nodos indicados por “+” son nodos de control y los nodos indicados por “=” son nodos de variables. Los nodos de control y los nodos de variables corresponden a las filas y las columnas de la matriz de control de paridad, respectivamente. La línea de conexión entre el nodo de control y el nodo de variable es un borde y corresponde a “1” de la matriz de control. Es decir, cuando el elemento de la j-ésima fila y la i-ésima columna de la matriz de control es 1, en la Figura 5, el i-ésimo nodo de variable
25 (nodo de “=”) desde la parte superior y el j-ésimo nodo de control (nodo de “+”) desde la parte superior se conectan entre sí con un borde. El borde indica que el bit de signo correspondiente al nodo de variable tiene una condición restrictiva correspondiente al nodo de control. La Figura 5 representa un gráfico de Tanner de la matriz de control de la Figura 4.
En el algoritmo de suma-producto, que es un método de decodificación de códigos LDPC, el cálculo del nodo de variable 30 y el cálculo del nodo de control se realizan de forma repetida.
En el nodo de variable, según se ilustra en la Figura 6, se realiza el cálculo de la ecuación (1). Es decir, en la Figura 6, el mensaje vi correspondiente al borde a calcularse es objeto de cálculo utilizando los mensajes u1 y u2 procedentes de los bordes restantes conectados al nodo de variable y la información u0i recibida. Los mensajes correspondientes a los otros
35 bordes se calculan también de forma similar.
Antes de describir el cálculo del nodo de control, la ecuación (2) se expresa de nuevo como se indica en la ecuación (6) utilizando la ecuación a x b = exp {ln (| a |) + ln / | b |)} x sign (a) x sign (b), en donde (x) es 1 cuando > 0 y es -1 cuando x
< 0. 40
Además, en el caso de x > 0, cuando se realiza la definición φ (x) = ln (tanh (x/2)) puesto que φ-1 (x) = 2 tanh-1 (e-x), la ecuación (6) se puede escribir como la ecuación (7).
En el nodo de control, según se indica en la Figura 7, se realiza el cálculo de la ecuación (7). Es decir, en la Figura 7, el mensaje uj correspondiente al borde para el que ha de realizarse un cálculo se calcula utilizando los mensajes v1, v2, v3, v4 y v5 procedentes de los bordes restantes conectados al nodo de control. Los mensajes correspondientes a los otros
5 bordes se calculan también de forma similar.
La función φ (x) puede expresarse como φ (x) = ln ((ex + 1) / (ex-1)), y cuando x > 0, φ (x) = φ-1 (x). Cuando las funciones φ (x) y φ-2 (x) se ponen en práctica como hardware, existen casos en los que se ponen en práctica utilizando una LUT (Tabla de Consulta) y ambas son la misma LUT.
10 Cuando el algoritmo de suma-producto se pone en práctica como hardware, es necesario realizar, de forma repetida, el cálculo de nodos de variables expresado por la ecuación (1) y el cálculo de nodos de control expresado por la ecuación
(7) con una escala circuital adecuada y a una frecuencia operativa adecuada.
15 A modo de ejemplo de la puesta en práctica del aparato de decodificación, se proporciona primero una descripción de un método de puesta en práctica de un caso en donde la decodificación se realiza efectuando simplemente el cálculo de cada nodo, uno a uno, en secuencia (decodificación serie completa).
Se supone, en este caso, que, a modo de ejemplo, los códigos (una tasa de código de 2/3 y una longitud de código de
20 90) representados por una matriz de control de 30 (filas) x 90 (columnas), representada en la Figura 8, son objeto de decodificación. El número de '1' de la matriz de control de la Figura 8 es 269; por lo tanto, en el gráfico de Tanner, el número de bordes se hace de 269. En este caso, en la matriz de control de la Figura 8, 0 se representa por “.”.
La Figura 9 representa, a modo de ejemplo, la configuración de un aparato de decodificación para decodificar códigos 25 LDPC una vez.
En el aparato de decodificación de la Figura 9, se calcula un mensaje correspondiente a un borde para cada frecuencia de reloj a la que opera.
30 Más concretamente, el aparato de decodificación de la Figura 9 incluye dos memorias 100 y 102 para bordes, un calculador de nodos de control 101 y un calculador de nodos de variables 103, una memoria 104 para recepción y una sección de control 105.
En el aparato de decodificación representado en la Figura 9, datos de mensajes son objeto de lectura, uno a uno, desde
35 la memoria 100 o 102 para bordes y utilizando los datos de mensajes, se calculan los datos de mensajes correspondientes al borde deseado. A continuación, los datos de mensajes determinados por ese cálculo se memorizan, uno a uno, en la memoria 100 o 102 para bordes en una etapa subsiguiente. Cuando ha de realizarse una decodificación iterativa, la decodificación iterativa se realiza concatenando, en serie, una pluralidad de los aparatos de decodificación representados en la Figura 9 para decodificar códigos LDPC una vez o utilizando, de forma repetida, el aparato de
40 decodificación según se ilustra en la Figura 9. En este caso, se supone que, a modo de ejemplo, están conectados una pluralidad de los aparatos de decodificación ilustrados en la Figura 9.
La memoria 100 para bordes memoriza los mensajes D100 suministrados desde el calculador de nodos de variables 103 del aparato de decodificación (no ilustrado) en una etapa anterior en el orden en el que son objeto de lectura por el
45 calculador de nodos de control 101 en una etapa posterior. A continuación, en la fase del cálculo del nodo de control, la memoria 100 para bordes suministra, al calculador de nodos de control 101, los mensajes D100 como una salida de mensajes D101 en el orden en el que están memorizados.
Sobre de la base de la señal de control D106 suministrada desde la sección de control 105, el calculador de nodos de
50 control 101 realiza un cálculo en conformidad con la ecuación (7) utilizando el mensaje D101 suministrado desde la memoria 100 para bordes y suministra un mensaje D102 determinado por ese cálculo a la memoria 102 para bordes en una etapa posterior.
La memoria 102 para bordes memoriza los mensajes D102 suministrados desde el calculador de nodos de control 101
55 en una etapa anterior en el orden en el que son objeto de lectura por el calculador de nodos de variables 103 en una etapa posterior. A continuación, en la fase del cálculo de nodos de variables, la memoria 102 para bordes suministra el mensaje D102 como un mensaje D103 al calculador de nodos de variables 103 en el orden en el que son memorizados.
Además, una señal de control D107 se suministra al calculador de nodos de variables 103 desde la sección de control
60 105 y los datos recibidos D104 se le suministran desde la memoria 104 para recepción. Sobre la base de una señal de control D107, el calculador de nodos de variables 103 realiza un cálculo en conformidad con la ecuación (1) utilizando el mensaje D103 suministrado desde la memoria 100 para bordes y los datos recibidos D104 suministrados desde la memoria 100 para recepción y suministra un mensaje D105 obtenido como resultado del cálculo para la memoria 100 para bordes, del aparato de decodificación (no ilustrado) en una etapa posterior.
65 En la memoria 104 para recepción, los datos recibidos (códigos LDPC) que se convierten en códigos LDPC, son objeto de memorización. La sección de control 105 suministra una señal de control D106 para controlar un cálculo de nodos de variables y una señal de control D107 para controlar un cálculo de nodos de control para el calculador de nodos de control 101 y el calculador de nodos de variables 103, respectivamente. La sección de control 105 suministra la señal de
5 control D106 al calculador de nodos de control 101 cuando los mensajes de todos los bordes se guardan en la memoria 100 para bordes y la sección de control 105 suministra la señal de control D107 al calculador de nodos de variables 103 cuando los mensajes de todos los bordes se guardan en la memoria 102 para bordes.
La Figura 10 representa, a modo de ejemplo, la configuración del calculador de nodos de control 101, representado en la Figura 9 para realizar los cálculos de nodos de control, uno a uno.
En la Figura 10, el calculador de nodos de control 101 se ilustra suponiendo que cada mensaje, junto con el bit de signo, es objeto de cuantización en un total de seis bits. Además, en la Figura 10, se realiza un cálculo de nodos de control de códigos LDPC representados por la matriz de control de la Figura 8. Además, una señal de reloj ck se suministra al
15 calculador de nodos de control 101 de la Figura 10, siendo esta señal de reloj ck suministrada a los bloques necesarios. Cada bloque realiza el procesamiento en sincronización con la señal de reloj ck.
Sobre la base, a modo de ejemplo, de una señal de control de 1 bit D106 suministrada desde la sección de control 105, el calculador de nodos de control 101, representado en la Figura 10, realiza los cálculos en conformidad con la ecuación
(7) utilizando los mensajes D101 que son objeto de lectura, uno a uno, desde la memoria 100 para bordes.
Más concretamente, en el calculador de nodos de control 101, los mensajes de 6 bits D101 (mensajes vi) procedentes del nodo de variables, correspondiente a cada columna de la matriz de control, son objeto de lectura, uno a uno, mientras que el valor absoluto D122 (| vi |), que es los bits de más bajo orden, se suministra a la LUT 121 y un bit de signo D121,
25 que es el bit de más alto orden, se suministra a un circuito EXOR 129 y a una memoria FIFO (Primero en entrar, primero en salir) 133, respectivamente. Además, la señal de control D106 se suministra al calculador de nodos de control 101 desde la sección de control 105 y la señal de control D106 se suministra a un selector 124 y a un selector 131.
La LUT 121 realiza la lectura de un resultado de cálculo de 5 bits D123 (φ | vi |)) de modo que el cálculo de φ (| vi |) en la ecuación (7) se realiza sobre el valor absoluto D122 (| vi |) y lo suministra a un dispositivo sumador 122 y una memoria FIFO 127.
El dispositivo sumador 122 integra los resultados del cálculo D123 sumando juntos los resultados de los cálculos D123 (φ (| vi |)) y un valor de 9 bits D124 memorizado en un registro 123 y memoriza el valor de integración de 9 bits obtenido en
35 el registro 123 de nuevo. Cuando los resultados del cálculo para los valores absolutos D122 (| vi |) de los mensajes D101 desde todos los bordes a través de una fila de la matriz de control son integrados, el registro 123 es objeto de reposición operativa.
Cuando los mensajes D101 a través de una fila de la matriz de control son objeto de lectura, uno a uno, y el valor integrado, de modo que los resultados del cálculo D123 para una sola fila se memorice en el registro 123, la señal de control D106 suministrada desde la sección de control 105 cambia desde 0 a 1. A modo de ejemplo, cuando el peso de ponderación de fila es “9”, la señal de control D106 se pone a “0” en la primera a octava señales de reloj y es “1” en la novena señal de reloj.
45 Cuando la señal de control D106 es “1”, el selector 124 selecciona el valor memorizado en el registro 123, es decir, el valor de 9 bits D124 (∑ φ (| vi |) desde i = 1 a i = dc) tal como φ (| vi |) que se determina a partir de los mensajes D101 (mensajes vi) desde todos los bordes a través de una sola fila de la matriz de control y proporciona, a la salida, el valor como un valor D125 a un registro 125, en donde se memoriza. El registro 125 suministra el valor memorizado D125 como un valor de 9 bits D126 al selector 124 y al dispositivo sumador 126. Cuando la señal de control D106 es “0”, el selector 124 selecciona el valor D126 suministrado desde el registro 125 y proporciona, a la salida, el valor al selector 124, en donde se memoriza de nuevo. Es decir, hasta que se integren los φ (| vi |) determinados desde los mensajes D101 (mensajes vi) procedentes de todos los bordes a través de una sola fila de la matriz de control, el registro 125 suministra el valor φ (| vi |) anteriormente integrado al selector 124 y al dispositivo sumador 126.
55 Por otro lado, la memoria FIFO 127 retarda los resultados del cálculo D123 (φ (| vi |)), a la salida, por la LUT 121 hasta que se obtenga, a la salida, desde el registro 125 un nuevo valor D126 (∑ φ (| vi |) desde i = 1 a i dc) y lo suministra como un valor de 5 bits D127 a un dispositivo restador 126. El dispositivo restador 126 sustrae, desde el valor D126 suministrado desde el registro 125, el valor D127 suministrado desde la memoria FIFO 127 y suministra el resultado sustraído como un valor sustraído de 5 bits D128 a la LUT 128. Es decir, el dispositivo restador 126 sustrae φ (| vi |) determinado desde los mensajes D101 (mensajes vi) desde el borde a determinarse, a partir del valor integrado de φ (| vi |) determinado desde los mensajes D101 (mensajes vi) desde todos los bordes a través de una sola fila de la matriz de control y suministra el valor sustraído (∑ φ (| vi |) desde i = 1 a i = dc -1) como un valor sustraído D128 a la LUT 128.
La LUT 128 proporciona, a la salida, los resultados del cálculo de 5 bits D129 (φ-1 (∑ φ (| vi |))) de modo que el cálculo de 65 φ-1 (∑φ (| vi |)) en la ecuación (7), se realice sobre el valor sustraído D128 (∑ φ (| vi |) desde i = 1 a i = dc -1).
En paralelo con el procesamiento anterior, el circuito EXOR 129 realiza una multiplicación de bits de signo calculando la función OR exclusiva de un valor de 1 bit D131 memorizado en un registro 130 y el bit de signo D121 y memoriza el resultado de la multiplicación de 1 bit D130 en el registro 130 de nuevo. Cuando los bits de signos D121 del mensaje D101, desde todos los bordes a través de una sola fila de la matriz de control, se multiplican, se realiza la reposición del registro 130.
Cuando los resultados multiplicados D130 (! sign (vi) desde i = 1 a dc) de modo que los bits de signos D121 de los mensajes D101, desde todos los bordes a través de una fila de la matriz de control, se multipliquen y se memoricen, la señal de control D106 suministrada desde la sección de control 105 cambia desde “0” a “1”.
Cuando la señal de control D106 es “1”, el selector 131 selecciona el valor memorizado en el registro 130, es decir, el valor D131 (! sign (vi) desde i = 1 a i = dc), de modo que los bits de signos D121 de los mensajes D101 desde todos los bordes, a través de una fila de la matriz de control, sean multiplicados y se proporciona, a la salida, el valor como un valor de 1 bit D133 a un registro 132, en donde se memoriza. El registro 132 suministra el valor memorizado D132 como un valor de 1 bit D132 al selector 131 y al circuito de función lógica EXOR 134. Cuando la señal de control D106 es “0”, el selector 131 selecciona un valor D133 suministrado desde el registro 132 y proporciona, a la salida, el valor al registro 132, en donde se memoriza de nuevo. Es decir, hasta que se multipliquen los bits de signo D121 de los mensajes D101 (mensajes vi) desde todos los bordes a través de una fila de la matriz de control, el registro 132 suministra el valor memorizado, en el tiempo anterior, al selector 131 y al circuito EXOR 134.
Por otro lado, la memoria FIFO 133 retarda los bits de signo D121 hasta que un nuevo valor D133 (! sign (vi) desde i = 1 a i = dc) se suministre desde el registro 132 al circuito EXOR 134 y suministre el resultado como un valor de 1 bit D134 al circuito EXOR 134. El circuito EXOR 134 divide el valor D133 por el valor D134 calculando la función OR exclusiva del valor D133 suministrado desde el registro 132 y el valor D134 suministrado desde la memoria FIFO 133 y proporciona, a la salida, un resultado dividido de 1 bit como un valor dividido D135. Es decir, el circuito EXOR 134 divide el valor de multiplicación de los bits de signo D121 (sign (| vi |)) de los mensajes D101 desde todos los bordes a través de una fila de la matriz de control por los bits de signos D121 (sign (| vi |)) de los mensajes D101 desde el borde que se va a determinar y proporciona, a la salida, el valor dividido (! sign (| vi |) desde i = 1 a i = dc -1) como un valor dividido D135.
En el calculador de nodos de control 101, un total de seis bits tal como el resultado del cálculo de 5 bits D129 procedente de la LUT 128 es los 5 bits de más bajo orden y el valor dividido de 1 bit D135 a la salida desde el circuito EXOR 134 es el bit de más alto orden que se proporciona, a la salida, como un mensaje D102 (mensaje uj).
Según se describió anteriormente, en el calculador de nodos de control 101, se realiza el cálculo de la ecuación (7) y se determina un mensaje uj.
Puesto que el máximo del peso de ponderación de fila de la matriz de control de la Figura 8 es 9, es decir, puesto que el número máximo de los mensajes suministrados al nodo de control es 9, el calculador de nodos de control 101 tiene una memoria FIFO 127 y la memoria FIFO 133 para retardar nueve mensajes (φ (| vi |)). Cuando ha de calcularse un mensaje de la fila cuyo peso de ponderación es menor que 9, la magnitud del retardo en la memoria FIFO 127 y la memoria FIFO 133 se reduce al valor del peso de ponderación de fila.
La Figura 11 representa, a modo de ejemplo, la configuración del calculador de nodos de variables 103 representado en la Figura 9, para realizar cálculos de nodos de variables, uno a uno.
En la Figura 11, el calculador de nodos de variables 103 se representa suponiendo que cada mensaje, junto con el bit de signo, es objeto de cuantización en un total de seis bits. En la Figura 11, el cálculo de nodos de variables de códigos LDPC que se representa por la matriz de control de la Figura 8 es realizado en esta etapa. Además, una señal de reloj ck se suministra al calculador de nodos de variables 103 de la Figura 11 y la señal de reloj ck se suministra a los bloques necesarios. Cada bloque realiza el procesamiento en sincronización con la señal de reloj ck.
Sobre la base de, a modo de ejemplo, una señal de control de 1 bit D107 suministrada desde la sección de control 105, el calculador de nodos de variables 103 de la Figura 11 realiza cálculos en conformidad con la ecuación (1) utilizando los mensajes D103 que son objeto de lectura, uno a uno, desde la memoria 102 para bordes y los datos recibidos D104 que son objeto de lectura desde la memoria 104 para recepción.
Más concretamente, en el calculador de nodos de variables 103, mensajes de 6 bits D103 (mensajes uj), desde el nodo de control correspondiente a cada fila de la matriz de control, es objeto de lectura, uno a uno, y los mensajes D103 se suministran al dispositivo sumador 151 y a la memoria FIFO 155. Además, en el calculador de nodos de variables 103, los datos recibidos de 6 bits D104 son objeto de lectura, uno a uno, desde la memoria 104 para recepción y se suministran al dispositivo sumador 156. Además, una señal de control D107 se suministra al calculador de nodos de variables 103 desde la sección de control 105 y la señal de control D107 se suministra a un selector 153.
El dispositivo sumador 151 integra los mensajes D103 sumando juntos los mensajes D103 (mensajes uj) y un valor de 9 bits D151 memorizado en el registro 152 y memoriza el valor integrado de 9 bits en el registro 152 de nuevo. Cuando el
mensaje D103 desde todos los bordes a través de una fila de la matriz de control es objeto de integración, se efectúa la reposición del registro 152.
Cuando los mensajes D103, desde todos los bordes a través de una fila de la matriz de control, son objeto de lectura, uno a uno, y el valor tal como los mensajes D103 para una columna están integrados, se memoriza en el registro 152, la señal de control D107 suministrada desde la sección de control 105 cambia desde “0” a “1”. A modo de ejemplo, cuando el peso de ponderación de columna es “5”, la señal de control D107 es “0” en la primera señal de reloj hasta la cuarta señal de reloj y es “0” en la quinta señal de reloj.
Cuando la señal de control D107 es “1”, el selector 153 selecciona el valor memorizado en el registro 152, es decir, un valor de 9 bits D151 (∑uj desde j = 1 a dv), de modo que los mensajes D103 (mensajes uj) desde todos los bordes a través de una fila de la matriz de control sean integrados y proporciona, a la salida, el valor al registro 154, en donde se memoriza. El registro 154 suministra el valor memorizado D151 como un valor de 9 bits D152 al selector 153 y al dispositivo sumador –restador 156. Cuando la señal de control D107 es “0”, el selector 153 selecciona un valor D152 suministrado desde el registro 154 y proporciona, a la salida, el valor a un registro 154, en donde se memoriza de nuevo. Es decir, hasta que se integren los mensajes D103 (mensajes uj) desde todos los bordes a través de una fila de la matriz de control, el registro 154 suministra el valor anteriormente integrado al selector 153 y al dispositivo sumador–restador
156.
Por otro lado, la memoria FIFO 155 retarda el mensaje D103 desde el nodo de control hasta un nuevo valor D152 ((∑uj desde j = 1 a dv) sea objeto de salida desde el registro 154 y lo suministra como un valor de 6 bits D153 al dispositivo sumador-restador 156. El dispositivo sumador-restador 156 sustrae el valor D153 suministrado desde la memoria FIFO 155, desde el valor D152 suministrado desde el registro 154. Es decir, el dispositivo sumador-restador 156 sustrae el mensaje uj desde el borde a determinarse, desde el valor integrado del mensaje D103 (mensajes uj) desde todos los bordes a través de una fila de la matriz de control y determina el valor sustraído (∑uj desde j = 1 a dv -1). Además, el dispositivo sumador-restador 156 añade los datos recibidos D104 suministrados desde la memoria 104 para recepción al valor sustraído (∑uj desde j = 1 a dv -1), y proporciona, a la salida, el valor de 6 bits obtenido, de este modo, como un mensaje D105 (mensaje vi).
Según se describió anteriormente, en el calculador de nodos de variables 103, se realiza el cálculo de la ecuación (1) y se determina el mensaje vi.
Puesto que el máximo del peso de ponderación de columna de la matriz de control de la Figura 8 es 5, es decir, puesto que el número máximo de los mensajes suministrados al nodo de variable es 5, el calculador de nodos de variables 103 tiene una memoria FIFO 155 para retardar cinco mensajes (uj). Cuando un mensaje de una columna cuyo peso de ponderación es menor que 5 ha de calcularse, la magnitud del retardo en la memoria FIFO 155 se reduce al valor del peso de ponderación de la columna.
En el aparato de decodificación representado en la Figura 9, se suministra una señal de control desde la sección de control 105 en función del peso de ponderación de la matriz de control. Según el aparato de decodificación de la Figura 9, si solamente las capacidades de las memorias para bordes 100 y 102 y las memorias FIFO 127, 133 y 155 del calculador de nodos de control 101 y el calculador de nodos de variables 103 son suficientes, pueden decodificarse códigos LDPC de varias matrices de control cambiando solamente la señal de control.
Aunque no se ilustra, en el aparato de decodificación de la Figura 9, en la etapa final de la decodificación, en lugar del cálculo de nodos de variables de la ecuación (1), se realiza el cálculo de la ecuación (5) y el resultado del cálculo es objeto de salida como el resultado decodificado final.
Cuando se decodifican los códigos LDPC utilizando, de forma repetida, el aparato de decodificación de la Figura 9, el cálculo de los nodos de control y el cálculo de los nodos de variables se realiza de forma alternativa. Es decir, en el aparato de decodificación de la Figura 9, se realiza un cálculo de nodos de variables por el calculador de nodos de variables 103 utilizando el resultado del cálculo de nodos de control por el calculador de nodos de control 101 y se realiza un cálculo de nodos de control por el calculador de nodos de control 101 utilizando el resultado del cálculo de nodos de variables por el calculador de nodos de variables 103.
Por lo tanto, para realizar una decodificación utilizando la matriz de control que tiene 269 bordes de la Figura 8, 269 x 2 = 538 señales de reloj se requieren. A modo de ejemplo, para poder realizar 50 decodificaciones iterativas, 538 x 50 = 26900 operaciones de reloj son necesarias, mientras que una trama en la que se establecen 90 códigos (datos recibidos) como una sola trama, que es la longitud del código, se recibe y por lo tanto, se hace necesaria una operación de alta velocidad de aproximadamente 300 (aproximadamente 26900/90) veces tan alta como la frecuencia de recepción. Si la frecuencia de recepción se supone que es de varias decenas de MHz, se requiere la operación a una velocidad del orden de GHz o superior.
Además, en un caso en donde, a modo de ejemplo, 50 aparatos de decodificación, según se ilustra en la Figura 9, están concatenados para decodificar códigos LDPC, se pueden realizar simultáneamente una pluralidad de cálculos de nodos de variables y de cálculos de nodos de control. A modo de ejemplo, mientras se realiza un cálculo de nodos de variables de la primera trama, se realiza un cálculo de nodos de control de la segunda trama y se realiza un cálculo de nodos de variables de la tercera trama. En este caso, mientras se reciben 90 códigos, puesto que necesita calcularse 269 bordes, el aparato de decodificación necesita operar a una frecuencia aproximada de 3 (aprox. 269/90) veces tan alta como la frecuencia de recepción y de este modo, la realización es suficientemente posible. Sin embargo, en este caso, la escala
5 del circuito se hace, en términos simples, 50 veces tan grande como el aparato de decodificación de la Figura 9.
A continuación, se proporciona una descripción del método de puesta en práctica del aparato de decodificación en un caso en donde se realiza la decodificación mediante la realización simultánea de cálculos de todos los nodos (decodificación en paralelo completa).
Este método de puesta en práctica se describe en, a modo de ejemplo, en el documento de C. Howland y A. Blanksby, “Arquitecturas de decodificación en paralelo para códigos de control de paridad de baja densidad”, Symposium sobre circuitos y sistemas, 2001.
15 Las Figuras 12A a 12C representan la configuración de formas de realización, a modo de ejemplo, del aparato de decodificación para decodificar los códigos (una tasa de codificación de 2/3 y una longitud de código de 90) representados por la matriz de control de la Figura 8. La Figura 12A representa la configuración global del aparato de decodificación. La Figura 12B representa la configuración detallada de la parte superior en la Figura rodeada por la línea de puntos B del aparato de decodificación de la Figura 12A. La Figura 12C representa la configuración detallada de la parte inferior en la Figura rodeada por la línea de puntos C del aparato de decodificación de la Figura 12A.
El aparato de decodificación de las Figuras 12A a 12C incluye una memoria 205 para recepción, dos dispositivos de intercambio de bordes 200 y 203, dos memorias 202 y 206 para bordes, un calculador de nodos de control 201 constituido por 30 calculadores de nodos de control 2011 a 20130 y un calculador de nodos de variables 204 constituido
25 por 90 calculadores de nodos de variables 2041 a 20490.
En el aparato de decodificación de las Figuras 12A a 12C, todos los datos de mensajes correspondientes a 269 bordes son objeto de lectura simultánea desde la memoria 202 o 206 para bordes y utilizando los datos de mensajes, se calcula nuevos datos de mensajes correspondientes a los 269 bordes. Además, todos los datos de mensajes nuevos determinados como resultado del cálculo se memorizan simultáneamente en la memoria 206 o 202 para bordes en una etapa posterior. Utilizando, de forma repetida, el aparato de decodificación de las Figuras 12A a 12C, se realiza una decodificación iterativa. Cada sección se describirá a continuación en detalle.
La memoria 206 para bordes memoriza simultáneamente todos los mensajes D2061 a D20690 desde los calculadores de
35 nodos de variables 2041 a 20490 en una etapa anterior, efectúa la lectura de los mensajes D2061 a D20690 como mensajes D2071 a D20790 en la siguiente señal de reloj (la temporización del siguiente reloj) y los suministra como mensajes D200 (D2001 a D20090) al dispositivo de intercambio de bordes 200 en la etapa posterior. El dispositivo de intercambio de bordes 200 redispone (intercambia) el orden de los mensajes D2001 a D20030 suministrados desde la memoria 206 para bordes en conformidad con la matriz de control de la Figura 8 y los suministra como mensajes D2011 a D20130 a los calculadores de nodos de control 2011 a 20130.
Los calculadores de nodos de control 2011 a 20130 realizan un cálculo en conformidad con la ecuación (7) utilizando los mensajes D2011 a D20130 suministrados desde el dispositivo de intercambio de bordes 200 y suministra los mensajes D2021 a D20230 obtenidos como resultado del cálculo a la memoria 202 para bordes.
45 La memoria 202 para bordes memoriza simultáneamente todos los mensajes D2021 a D20230 suministrados desde los calculadores de nodos de control 2011 a 20130 en la etapa anterior y en el momento siguiente, suministra todos los mensajes D2021 a D20230, como mensajes D2031 a D20330, al dispositivo de intercambio de bordes 203 en la etapa posterior.
El dispositivo de intercambio de bordes 203 redispone el orden de los mensajes D2031 a D20330 suministrados desde la memoria 202 para bordes en conformidad con la matriz de control de la Figura 8 y los suministra como mensajes D2041 a D20490 a los calculadores de nodos de variables 2041 a 20490.
55 Los calculadores de nodos de variables 2041 a 20490 realizan un cálculo en conformidad con la ecuación (1) utilizando los mensajes D2041 a D20490 suministrados desde el dispositivo de intercambio de bordes 203 y los datos recibidos D2051 a D20590 suministrados desde la memoria 205 para recepción y suministra los mensajes D2061 a D20690 obtenidos como resultado del cálculo a la memoria 206 para bordes en la etapa posterior.
La Figura 13 ilustra, a modo de ejemplo, la configuración de un calculador de nodos de control 201m (m = 1, 2, …, 30) de las Figuras 12A a 12C para realizar simultáneamente los cálculos de nodos de control.
En el calculador de nodos de control 201m de la Figura 13, de forma similar al calculador de nodos de control 101 de la Figura 10, el cálculo de los nodos de control de la ecuación (7) se realiza y los cálculos del nodo de control se realizan
65 simultáneamente para todos los bordes.
Más concretamente, en el calculador de nodos de control 201m de la Figura 13, todos los mensajes D2211 a D2219
(vi) desde el nodo de variable correspondiente a cada fila de la matriz de control de la Figura 8, que se suministran desde el dispositivo de intercambio de bordes 200 son objeto de lectura simultánea y los valores absolutos D2221 a D2229 (| vi |) que son sus respectivos 5 bits de más bajo orden, se suministran a las LUTs 2211 a 2219, respectivamente. Los bits de signo de 1 bit D2231 a D2239, que son los bits de más alto orden del mensaje D2211 a D2219 (vi), se suministran a los circuitos EXOR 2261 a 2269, respectivamente y también se suministran al circuito EXOR 225.
Las LUTs 2211 a 2219 efectúan la lectura de los resultados del cálculo de 5 bits D2241 a D2249 (φ (| vi |)) de modo que se realice el cálculo de φ (| vi |) en la ecuación (7), respectivamente, sobre los valores absolutos de D2221 a D2229 (| vi |), respectivamente y los suministra a los respectivos restadores 2231 a 2239. Las LUTs 2211 a 2219 suministran los resultados de cálculos de D2241 a D2249 (φ (| vi |)) a un dispositivo sumador 222.
El dispositivo sumador 222 calcula la suma total de los valores de los resultados de cálculos D2241 a D2249 (φ (| vi |)) (la suma total de los resultados del cálculo para una sola fila) y suministra los resultados de cálculo de 9 bits D225 (∑φ (| vi |) desde i = 1 a 9) a los restadores 2231 a 2239. Los dispositivos restadores 2231 a 2239 sustraen los resultados de cálculos D2241 a D2249 (φ (| vi |)) a partir de los resultados del cálculo D225, respectivamente, y suministra el valor sustraído de 5 bits D2271 a D2279 a las LUTs 2241 a 2249. Es decir, los dispositivos restadores 2231 a 2239 sustraen φ (| vi |) determinado a partir del mensaje vi desde el borde que se va a determinar, a partir del valor integrado de φ (| vi |) determinado desde el mensaje vi desde todos los bordes y suministra los valores sustraídos D2271 a D2279 (∑ φ (| vi |) desde i = 1 a 8) a las LUTs 2241 a 2249, respectivamente. Las LUTs 2241 a 2249 efectúan la lectura de los resultados de cálculos de 5 bits D2281 a D2289, de modo que se realice el cálculo de φ-1 (∑ φ (| vi |)) de la ecuación (7) sobre los valores sustraídos D2271 a D2279 y los proporcione a su salida.
Por otro lado, el circuito EXOR 225 realiza una multiplicación de los bits de signo D2231 a D2239 calculando la función OR exclusiva de todos los bits de signo D2231 a D2239 y suministra un valor de multiplicación de 1 bits D226 (valor de multiplicación de los bits de signo para una sola fila (! sign (vi) desde i = 1 a 9)) al respectivo circuito EXOR 2261 a 2269. Calculando la función OR exclusiva del valor de la multiplicación D226 y los bits de signo D2231 a D2239, respectivamente, los circuitos EXOR 2261 a 2269 determinan los valores divididos de 1 bit D2291 a D2299 (! sign (vi) desde i = 1 a 8), de modo que el valor de multiplicación D226 se divida por los bits de signo D2231 a D2239, respectivamente, y los proporcione a la salida.
En el calculador de nodos de control 201m, un total de seis bits tal como los resultados del cálculo de 5 bits D2281 a D2289 objeto de salida desde las LUTs 2241 a 2249, se realizan cada uno para ser los cinco bits de más bajo orden y los valores divididos D2291 a D2299 procedentes de los circuitos EXOR 2261 a 2269 se hacen cada uno para ser el bit de más alto orden, a la salida, como mensajes D2301 a D2309 obtenidos como un resultado de cada cálculo de nodos de control.
En la manera anteriormente descrita, en el calculador de nodos de control 201m, se realiza el cálculo de la ecuación (7) y se determina el mensaje uj.
En la Figura 13, el calculador de nodos de control 201m se representa suponiendo que cada mensaje, junto con el bit de signo, es objeto de cuantización para un total de seis bits. El circuito representado en la Figura 13 corresponde a un nodo de control. Para la matriz de control a procesarse en este caso en la Figura 8, puesto que los nodos de control de 30 filas, que es el número de sus filas, existen, el aparato de decodificación de las Figuras 12A a 12C tienen 30 calculadores de nodos de control 201m representados en la Figura 13.
En el calculador de nodos de control 201m de la Figura 13, se pueden calcular simultáneamente nueve mensajes. Para el peso de ponderación de fila de la matriz de control a procesarse en este caso en la Figura 8, el peso de ponderación de la primera fila es 8 y el peso de ponderación de la segunda fila es 9, es decir, existe un caso en el que el número de mensajes suministrados al nodo de control es 8 y existen nueve casos en los que el número de mensaje es 9. Por lo tanto, el calculador de nodos de control 2011 tiene una configuración circuital capaz de calcular simultáneamente ocho mensajes de forma similar al circuito de la Figura 13 y los calculadores de nodos de control restantes 2012 a 20130 se configuran de la misma manera que para el circuito de la Figura 13.
La Figura 14 representa, a modo de ejemplo, la configuración de un calculador de nodos de variables 204p (p = 1, 2, …, 90) de las Figuras 12A a 12C para realizar simultáneamente cálculos de nodos de variables.
En los calculadores de nodos de variables 204p de la Figura 14, de forma similar al calculador de nodos de variables 103 de la Figura 11, se realizan los cálculos de nodos de variables de la ecuación (1) y los cálculos de nodos de variables se realizan simultáneamente para todos los bordes.
Más concretamente, en los calculadores de nodos de variables 204p de la Figura 14, todos los mensajes de 6 bits D2511 a D2515 (mensajes uj) desde el nodo de control correspondiente a cada fila de la matriz de control, que se suministran desde el dispositivo de intercambio de bordes 203, son objeto de lectura simultánea y estos mensajes se suministran a los respectivos dispositivos sumadores 2521 a 2525 y se suministran también al dispositivo sumador 251. Además, los
datos recibidos D271 se suministran al calculador de nodos de variables 204p desde la memoria 205 para recepción y los datos recibidos D271 se suministran a los dispositivos sumadores-restadores 2521 a 2525.
El dispositivo sumador 251 integra todos los mensajes D2511 a D2515 (mensajes uj) y suministra un valor integrado de 9 bits D252 (el valor de la suma total de mensajes para una sola columna (∑uj desde j = 1 a 5)) a los dispositivos sumadores-restadores 2521 a 2525. Los dispositivos sumadores-restadores 2521 a 2525 sustraen los mensajes D2511 a D2515 (mensajes uj) desde el valor añadido D252, respectivamente, es decir, los dispositivos sumadores–restadores 2521 a 2525 sustraen los mensajes D2511 a D2515 (mensajes uj) desde el borde a determinarse, a partir del valor integrado D252 en los mensajes uj desde todos los bordes, respectivamente, y determinar el valor sustraído ((∑uj desde j = 1 a 4).
Además, los dispositivos sumadores-restadores 2521 a 2525 añaden los datos recibidos D271 (u0i) al valor sustraído (∑uj desde j = 1 a 4) y proporcionan, a la salida, valores añadidos de 6 bits D2531 a D2535 como los resultados de los cálculos de nodos de variables.
En la manera anteriormente descrita, en el calculador de nodos de variables 204p, se realiza el cálculo de la ecuación (1) y se determina el mensaje vi.
En la Figura 14, los calculadores de nodos de variables 204p se muestran suponiendo que cada mensaje, junto con el bit de signo, es objeto de cuantización para seis bits. El circuito de la Figura 14 corresponde a un solo nodo de variable. Para la matriz de control que ha de procesarse, en este caso, en la Figura 8, puesto que los nodos de variables de 90 columnas, que es el número de sus columnas, existen, el aparato de decodificación de las Figuras 12A a 12C tiene 90 circuitos ilustrados en la Figura 14.
En los calculadores de nodos de variables 204p de la Figura 14, es posible calcular simultáneamente cinco mensajes. La matriz de control que se va a procesar en este caso, en la Figura 8, tiene 15, 45, 29 y 1 columnas que presentan pesos de ponderación de 5, 3, 2 y 1 respectivamente. Por lo tanto, 15 calculadores de nodos de variables de entre los calculadores de nodos de variables 2041 a 20490 tienen la misma configuración circuital que el del circuito de la Figura 14. Los restantes calculadores de nodos de variables 45, 29 y 1 tienen la configuración circuital capaz de calcular simultáneamente 3, 2 y 1 mensajes de forma similar al circuito representado en la Figura 14.
Aunque no se ilustra, también en el aparato de decodificación de las Figuras 12A a 12C, de forma similar al caso de la Figura 9, en la etapa final de la decodificación, en lugar del cálculo de nodos de variables de la ecuación (1), se realiza el cálculo de la ecuación (5) y el resultado del cálculo se proporciona como el resultado decodificado final.
Según el aparato de decodificación de las Figuras 12A a 12C, es posible calcular simultáneamente todos los mensajes correspondientes a 269 bordes en una sola señal de reloj.
Cuando se realiza la decodificación utilizando, de forma repetida, el aparato de decodificación de las Figuras 12A a 12C, se realizan, de forma alternada, el cálculo de nodos de control y el cálculo de nodos de variables y se puede realizar una sola decodificación en dos señales de reloj. Por lo tanto, a modo de ejemplo, para poder realizar 50 decodificaciones, el aparato de decodificación necesita funcionar a 2 x 50 = 100 frecuencias de reloj, mientras que los datos recibidos en los que se reciben códigos que tienen una longitud de código de 90 son una sola trama y por lo tanto, puede utilizarse aproximadamente la misma frecuencia operativa que la frecuencia de recepción. En general, puesto que la longitud de código de los códigos LDPC es tan grande como varios miles a varias decenas de miles, si el aparato de decodificación de las Figuras 12A a 12C se utiliza, el número de decodificaciones puede aumentarse en gran medida y puede esperarse la mejora en la ejecución de la corrección de errores.
Sin embargo, en el aparato de decodificación de las Figuras 12A a 12C, puesto que los cálculos de mensajes correspondientes a todos los bordes de un gráfico de Tanner se realizan en paralelo, la escala circuital aumenta en proporción a la longitud de código. Cuando el aparato de decodificación de las Figuras 12A a 12C está configurado como un aparato para realizar la decodificación de los códigos de LDPC que tienen una matriz de control particular, de una longitud de código particular y de una tasa de codificación particular, resulta difícil, para el aparato de decodificación, realizar la decodificación de códigos LDPC que tengan otra matriz de control, de otra longitud de código y de otra tasa de codificación. Es decir, a diferencia del aparato de decodificación de la Figura 9, es difícil para el aparato de decodificación de las Figuras 12A a 12C tratar la decodificación de varios códigos aún cuando se cambie solamente la señal de control y la dependencia de los códigos sea alta.
Además del aparato de decodificación de la Figura 9 y de las Figuras 12A a 12C, el método de puesta en práctica para calcular simultáneamente mensajes en unidades de cuatro mensajes en lugar de un solo mensaje o todos los mensajes se describe en, a modo de ejemplo, el documento de E. Yeo, P. Pakzad, B. Nikolic y V. Anantharam, “Arquitecturas de VLSI para decodificadores iterativos en canales de registro magnético”, IEEE Transactions on Magnetics, vol. 37, nº 2, marzo 2001. En este caso, existen problemas por cuanto que, por lo general, no es fácil evitar la lectura simultánea desde, o la escritura simultánea en, diferentes direcciones de la memoria y el control de acceso a la memoria es difícil.
Además, un método de puesta en práctica aproximando el algoritmo de suma-producto ha sido también propuesto. Sin embargo, en este método, el deterioro del rendimiento es causa de que ocurra. Para la puesta en práctica del algoritmo de suma-producto como hardware, existe, según se describió anteriormente, un método en el que los cálculos de mensajes correspondientes a los bordes (un cálculo de nodos de control y un cálculo de nodos de bits) se realizan en
5 serie, uno a uno, un método en el que todos los cálculos de mensajes se realizan en paralelo (en paralelo total) y un método en el que los cálculos de mensajes se realizan en unidades de varios cálculos en paralelo (paralelo).
Sin embargo, en el método en el que los cálculos de mensajes, correspondientes a los bordes, se realizan uno a uno, se requiere una alta frecuencia operativa. En consecuencia, como un método para aumentar el rendimiento, se conoce un método para disponer el aparato en una estructura de tipo ‘tubería’. En este caso, la escala de circuitos, en particular, (la capacidad de) la memoria aumenta.
En el método en el que todos los cálculos de los mensajes se realizan en paralelo, aumenta la escala circuital para la lógica y la dependencia de los códigos es alta.
15 En el método en el que los cálculos de mensajes se realizan en unidades de varios cálculos en paralelo, el control del acceso a la memoria es difícil.
En el documento de Hocevar, “Construcción de código LDPC con puesta en práctica de hardware flexible”, Proc IEEE International Conference on Communications, ICC 2003, p 2708-2712, da a conocer una técnica de construcción de códigos LDPC para códigos irregulares de varios tamaños de bloques que utilizan una arquitectura de decodificador eficiente y práctica que puede conseguir un alto grado de paralelismo.
DESCRIPCIÓN DE LA INVENCIÓN
25 La presente invención se ha dado a conocer con miras a dichas circunstancias. Un objetivo de la presente invención es suprimir la frecuencia operativa a una gama suficientemente realizable, al mismo tiempo que se suprime la escala circuital para la lógica y la memoria y para ser capaz de controlar, con facilidad, el acceso a la memoria.
La invención se define en las reivindicaciones adjuntas.
BREVE DESCRIPCIÓN DE LOS DIBUJOS
La Figura 1 ilustra una matriz de control H de códigos LDPC. 35 La Figura 2 es un diagrama de flujo que ilustra un procedimiento para decodificar códigos LDPC.
La Figura 3 ilustra el flujo de mensajes.
La Figura 4 representa una forma de realización, a modo de ejemplo, de una matriz de control de códigos LDPC.
La Figura 5 representa un gráfico de Tanner de la matriz de control.
La Figura 6 representa un nodo de variable. 45 La Figura 7 representa un nodo de control.
La Figura 8 representa, a modo de ejemplo, una matriz de control de códigos LDPC.
La Figura 9 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un aparato de decodificación de códigos LDPC para realizar los cálculos de nodos, uno a uno.
La Figura 10 es un diagrama de bloques que representa, una forma de realización, a modo de ejemplo, de la configuración de un calculador de nodos de control para calcular los mensajes, uno a uno.
55 La Figura 11 es un diagrama de bloques que representa, a modo de ejemplo, la configuración de un calculador de nodos de variables para calcular los mensajes, uno a uno.
La Figura 12A es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un aparato de decodificación de códigos LDPC para realizar simultáneamente todos los cálculos de nodos.
La Figura 12B es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del aparato de decodificación de códigos LDPC para realizar simultáneamente todos los cálculos de nodos.
65 La Figura 12C es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del aparato de decodificación de códigos LDPC para realizar simultáneamente todos los cálculos de nodos.
La Figura 13 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador de nodos de control para calcular simultáneamente los mensajes.
5 La Figura 14 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador de nodos de variables para calcular simultáneamente los mensajes.
La Figura 15 representa una matriz que está dividida en matrices unitarias 5 x 5.
La Figura 16A es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un aparato de decodificación que no es una forma de realización de la presente invención.
La Figura 16B es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del aparato de decodificación que no es una forma de realización de la presente invención.
15 La Figura 16C es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del aparato de decodificación que no es una forma de realización de la presente invención.
La Figura 17 es diagrama de flujo que ilustra el proceso de decodificación del aparato de decodificación de las Figuras 16A a 16C.
La Figura 18 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de una forma de realización del aparato de decodificación al que se aplica la presente invención.
25 La Figura 19 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador de nodos de control.
La Figura 20 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador de nodos de variables.
La Figura 21 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador representado en la Figura 18.
La Figura 22 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del calculador representado en 35 la Figura 18.
La Figura 23 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de una memoria para memorizar los resultados de la decodificación en curso de la Figura 18.
La Figura 24 es un diagrama de temporización que ilustra la operación de una memoria RAM para memorizar resultados de decodificación en curso de la Figura 18.
La Figura 25 es un diagrama de flujo que ilustra el proceso de decodificación del aparato de decodificación de la Figura
18.
45 La Figura 26 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del aparato de decodificación que no es una forma de realización de la presente invención.
La Figura 27 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador de nodos de control.
La Figura 28 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador de nodos de variables.
55 La Figura 29 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador representado en la Figura 26.
La Figura 30 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del calculador representado en la Figura 26.
La Figura 31 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de una memoria para memorizar los resultados de decodificación en curso de la Figura 26.
La Figura 32 es un diagrama de temporización que ilustra la operación de la memoria RAM para memorizar los 65 resultados de decodificación en curso de la Figura 31.
La Figura 33 es un diagrama de flujo que ilustra el proceso de decodificación del aparato de decodificación representado en la Figura 26.
La Figura 34 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de una forma de realización de un ordenador al que se aplica la presente invención.
DESCRIPCIÓN DEL MEJOR MODO PARA REALIZAR LA INVENCIÓN
Formas de realización específicas a las que se aplica la presente invención se describirán a continuación, en detalle, con referencia a los dibujos.
La Figura 15 ilustra, a modo de ejemplo, una matriz de control 30 x 9, que está dividida en unidades de matriz 5 x 5. La matriz de control, representada en la Figura 15, es la misma que la matriz de control ilustrada en la Figura 8.
En la Figura 15, la matriz de control se representa por una combinación de una matriz unitaria 5 x 5, una matriz en la que uno o más '1' que son elementos de la matriz unitaria, se sustituyen con '0' (en adelante referida como una “matriz cuasiunitaria”, en donde sea adecuado), en cuya matriz la matriz unitaria o la matriz cuasi-unitaria se desplaza, de forma cíclica (en adelante referida como una “matriz de desplazamiento”, en donde sea adecuado), una suma de dos o más (plural) de la matriz unitaria, la matriz cuasi-unitaria y la matriz de desplazamiento (en adelante referida como una “matriz suma” en donde sea adecuado) y una matriz nula 5 x 5. Los códigos LDPC, representados por la matriz de código de la Figura 15, tienen una tasa de codificación de 2/3 y una longitud de código de 9.
Puede decirse que la matriz de código de la Figura 15 está formada por una matriz 5 x 5, una matriz cuasi-unitaria, de una matriz de desplazamiento, una matriz suma y una matriz nula. Por lo tanto, estas matrices 5 x 5, que forman la matriz de control, se referirán, en lo sucesivo, como “sub-matrices” en donde sea adecuado.
Las Figuras 16A a 16C ilustran, a modo de ejemplo, la configuración de un aparato de codificación para decodificar códigos LDPC representados por la matriz de control de la Figura 15. Las Figuras 16A a 16C son diagramas de bloques que representan, a modo de ejemplo, la configuración de dicho aparato de decodificación, que no es una forma de realización de la presente invención. La Figura 16A ilustra la configuración global del aparato de decodificación. La Figura 16B representa la configuración detallada de la parte izquierda en la Figura rodeada por la línea de puntos B del aparato de decodificación de la Figura 16A. La Figura 16C representa la configuración detallada de la parte derecha en la Figura rodeada por la línea de puntos C del aparato de decodificación representado en la Figura 16A.
Un aparato de decodificación 300 de las Figuras 16A a 16C incluye los conmutadores 310 y 315, una memoria de almacenamiento de datos de bordes 311 constituida por seis FIFOs 3111 a 3116, un selector 312, un calculador de nodos de control 313 constituido por cinco calculadores de nodos de control 3131 a 3135, dos circuitos de desplazamiento cíclicos 314 y 320, una memoria de almacenamiento de datos de bordes 316 constituida por 18 FIFOs 3161 a 31618, un selector 317, una memoria de datos recibidos 318 para memorizar la información recibida, un calculador de nodos de variables 319 y una sección de control 321.
Antes de describir, en detalle, cada sección del aparato de decodificación 300, se describirá primero el método de memorización de datos en las memorias de almacenamiento de datos de bordes 311 y 316.
La memoria de almacenamiento de datos de bordes 311 incluye seis FIFOs 3111 a 3116, siendo el número tal como 30, el número de filas de la matriz de control se divide por 5, que es el número de filas. Las FIFO 311y (y = 1, 2, …, 6) se forma de tal manera que los mensajes correspondientes a cinco bordes, que es el número de las filas y de las columnas de la sub-matriz, puede ser objeto de lectura o escritura simultáneamente. Su longitud (el número de etapas) es 9, que es el número máximo de '1' (peso de ponderación de Hamming) en la dirección de las filas de la matriz de control.
En la FIFO 3111, los datos correspondientes a las posiciones de '1' desde la primera fila hasta la quinta fila de la matriz de control, representada en la Figura 15, se memorizan de tal manera que estén empaquetados más próximos (en una manera en la que se ignoran los '0') en la dirección horizontal (en la dirección de columna) para cada fila. Es decir, si la jésima fila y la i-ésima columna se indica como (j, i), en el primer elemento (la primera etapa) de la FIFO 3111, se memorizan los datos correspondientes a las posiciones de '1' de la matriz unitaria 5 x 5 desde (1, 1) a (5, 5) de la matriz de control. En el segundo elemento, los datos correspondientes a las posiciones de '1' de la matriz de desplazamiento (matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza, de forma cíclica, en tres a la derecha) desde (1, 21) a (5, 25) de la matriz de control, que es la sub-matriz de la matriz de control, en donde se memoriza. Además, en los tercero a octavo elementos, de forma similar, los datos se memorizan de tal manera que correspondan a la sub-matriz de la matriz de control. En el noveno elemento, los datos correspondientes a las posiciones de '1' de la matriz de desplazamiento (la matriz de desplazamiento en la que los '1' de la primera fila, dentro de la matriz unitaria 5 x 5, se sustituyen con '0' y la matriz unitaria se desplaza, de forma cíclica, en uno a la izquierda) desde (1, 86) a (5, 90) de la matriz de control en donde se memoriza. En este caso, en la matriz de desplazamiento desde (1, 86) a (5, 90) de la matriz de control, puesto que no existe ningún '1' de la primera fila, el número de elementos se hace 8 solamente para la primera fila de la FIFO 3111 y el número de elementos se hace de 9 para las filas restantes.
En la FIFO 3112, los datos correspondientes a las posiciones de '1' desde la sexta fila hasta la décima fila de la matriz de control de la Figura 15 son objeto de memorización. Es decir, en el primer elemento de la FIFO 3112, los datos correspondientes a las posiciones de '1' de la primera matriz de desplazamiento que forman la matriz suma desde (6, 1) a (10, 5) de la matriz de control (la matriz suma que es la suma de una primera matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza, de forma cíclica, en '1' a la derecha y una segunda matriz de desplazamiento, en la que la matriz unitaria 5 x 5 se desplaza, de forma cíclica, en dos a la derecha) es objeto de memorización. En el segundo elemento, se almacenan datos correspondientes a las posiciones de '1' de la segunda matriz de desplazamiento que forma la matriz suma desde (6, 1) a (10, 5) de la matriz de control.
Más concretamente, para la sub-matriz cuyo peso de ponderación es 2 o más, los datos (el mensaje correspondiente a los bordes que pertenecen a la matriz unitaria, la matriz suma o la matriz de desplazamiento) correspondientes a las posiciones de '1' de la matriz unitaria cuyo peso de ponderación es 1, la matriz cuasi-unitaria o la matriz de desplazamiento, cuando la sub-matriz se representa en la forma de la suma de dos o más de la matriz unitaria (P x P) cuyo peso de ponderación es 1, la matriz cuasi-unitaria en la que uno o más '1', que son elementos de la matriz unitaria, se sustituyen con 0 y la matriz de desplazamiento en la que la matriz unitaria o la matriz cuasi-unitaria se desplazan de forma cíclica, se memoriza en la misma dirección (las mismas FIFOs entre las FIFOs 3111 a 3116).
En adelante, para el tercer al noveno elementos, los datos se memorizan de tal manera que corresponden a la matriz de control. El número de los elementos de la FIFO 3112 es 9 para todas las filas.
Para las FIFOs 3113 a 3116, de forma similar, los datos se memorizan de tal manera que corresponden de la matriz de control y la longitud de cada una de las FIFOs 3113 a 3116 es 9.
La memoria 316 para memorizar datos de bordes está formada por 18 FIFOs 3161 a 31618, siendo su número tal como 90, el número de filas de la matriz de control se divide por 5, el número de las filas de la sub-matriz. La FIFO 316x (x = 1, 2, …, 18) está formada de tal manera que los mensajes correspondan a cinco bordes, siendo dicho número el número de las filas y el número de las columnas de la sub-matriz, pudiéndose efectuar la lectura o escritura simultáneamente.
En la FIFO 3161, los datos correspondientes a las posiciones de '1' desde la primera columna hasta la quinta columna de la matriz de control de la Figura 15 se memorizan de tal manera que se empaqueten más próximos en la dirección vertical (en la dirección de la fila) para cada columna (en una manera en la que se ignoran los '0'). Es decir, en el primer elemento (la primera etapa) de la FIFO 3161, se memorizan los datos correspondientes a las posiciones de '1' de la matriz unitaria 5 x 5 desde (1, 1) a (5, 5) de la matriz de control. En el segundo elemento, los datos correspondientes a las posiciones de '1' de la primera matriz de desplazamiento que forma la matriz suma de (6, 1) a (10, 5) de la matriz de control (la matriz suma, que es la suma de una primera matriz de desplazamiento en la que matriz unitaria 5 x 5 se desplaza, de forma cíclica, en uno a la derecha y una segunda matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza, de forma cíclica, en dos a la derecha) es objeto de memorización. En el tercer elemento, se memorizan los datos correspondientes a las posiciones de '1' de la segunda matriz de desplazamiento que forma la matriz suma de (6, 1) a (10, 5) de la matriz de control.
Más concretamente, para la sub-matriz cuyo peso de ponderación es 2 o más, los datos (mensajes correspondientes a los bordes que pertenecen a la matriz unitaria, la matriz cuasi-unitaria o la matriz de desplazamiento) correspondientes a la posición de '1' de la matriz unitaria cuyo peso de ponderación es 1, la matriz cuasi-unitaria o la matriz de desplazamiento cuando la sub-matriz está representada en la forma de la suma de dos o más de la matriz unitaria (P x P) cuyo peso de ponderación es 1, la matriz cuasi-unitaria en la que los '1' que son elementos de la matriz unitaria, se sustituyen con '0' y la matriz de desplazamiento en la que se desplaza, de forma cíclica, la matriz unitaria o la matriz cuasi-unitaria, se memoriza en la misma dirección (la misma FIFO de entre las FIFOs 3161 a 31618).
En adelante, para los cuarto y quinto elementos, además, los datos se memorizan de tal manera que correspondan a la matriz de control. El número de elementos (el número de etapas) de la FIFO 3161 es 5, que es el número máximo de '1' (peso de ponderación de Hamming) en la dirección de las filas desde la primera columna hasta la quinta columna de la matriz de control.
Además, para las FIFOs 3162 y 3163, de forma similar, los datos se memorizan de tal manera que corresponden a la matriz de control y cada una de sus longitudes (el número de etapas) es 5. Además, para las FIFOs 3164 a 31612, de forma similar, se memorizan datos de tal manera que correspondan a la matriz de control y cada una de sus longitudes es 3. Además, para las FIFOs 31613 a 31618, de forma similar, los datos se memorizan de tal manera que correspondan a la matriz de control y cada una de sus longitudes es 2. Sin embargo, puesto que el primer elemento de la FIFO 31618 corresponde a (1, 86) a (5, 90) de la matriz de control y no existe ningún '1' en la quinta columna ((1, 90) a (5, 90) de la matriz de control), no se memorizan datos.
A continuación se proporcionará una descripción, en detalle, de la operación de cada sección del aparato de decodificación 300 de las Figuras 16A a 16C. Cinco mensajes (datos) D319 se suministran a un conmutador 310 desde un circuito de desplazamiento cíclico 320. Además, una señal de control D320 que indica información (datos de matrices) en cuanto a qué fila de la matriz de control pertenece, se suministra al conmutador 310 desde la sección de control 321. En función de la señal de control D320, una FIFO para memorizar cinco mensajes (datos) D319 se selecciona de entre
las FIFOs 3111 a 3116 y los cinco elementos de datos de mensajes D319 se memorizan, de forma colectiva, en la FIFO seleccionada en secuencia.
La memoria de almacenamiento de datos de bordes 311 incluye seis FIFOs 3111 a 3116. En las FIFOs 3111 a 3116 de la memoria de almacenamiento de datos de borde 311, cinco mensajes D319 se suministran, de forma colectiva, desde el conmutador 310 en secuencia y las FIFOs 3111 a 3116 memorizan, de forma colectiva, los cinco mensajes D319 en secuencia (simultáneamente). Además, cuando han de leerse datos, la memoria de almacenamiento de datos de borde 311 lee secuencialmente los cinco mensajes (datos) D3111 desde la FIFO 3111 y los suministra al selector 312 en la etapa posterior. Después de que se concluya la lectura de los mensajes D3111 desde la FIFO 3111, la memoria de almacenamiento de datos de borde 311 lee también secuencialmente los mensajes D3111 a D3116 desde las FIFOs 3112 a 3116, respectivamente, y los suministra al selector 312.
Una señal de selección D321, que indica la selección de la FIFO desde la que se leen los datos de mensajes (la FIFO desde la que se han leído datos actualmente) desde entre las FIFOs 3111 a 3116, se suministra al selector 312 desde la sección de control 321 y además, cinco mensajes (datos) D3111 a D3116 se suministran al selector 312 desde la memoria de almacenamiento de datos de borde 311. El selector 312 selecciona la FIFO desde la que se ha leído actualmente datos de entre las FIFOs 3111 a 3116 en conformidad con una señal de selección D321 y suministra los cinco elementos de datos de mensajes, suministrados desde la FIFO seleccionada, como mensajes D312 a la sección de cálculo de nodos de control 313.
La sección de cálculo de nodos de control 313 incluye cinco calculadores de nodos de control 3131 a 3135. Cinco mensajes D312 se suministran a la sección de cálculo de nodos de control 313 a través del selector 312 y los mensajes D312 se suministran individualmente a cada uno de los calculadores de nodos de control 3131 a 3135. Además, una señal de control D322 se suministra al calculador de nodos de control 313 desde la sección de control 321 y la señal de control D322 se suministra a los calculadores de nodos de control 3131 a 3135. Los calculadores de nodos de control 3131 a 3135 realizan simultáneamente cálculos en conformidad con la ecuación (7) utilizando los mensajes D312 y para determinar los mensajes D313 correspondientes a cinco bordes como resultado de los cálculos. La sección de cálculo de nodos de control 313 suministra los cinco mensajes D313 obtenidos como resultado de los cálculos por los calculadores de nodos de control 3131 a 3135 al circuito de desplazamiento cíclico 314.
Una señal de control D322 suministrada desde la sección de control 321 al calculador de nodos de control 313 corresponde a la señal de control D106 de la Figura 10. Las secciones de cálculo de nodos de control 3131 a 3135 están configuradas, cada una, en la misma manera que el calculador de nodos de control 101 representado en la Figura 10.
Los cinco mensajes D313 calculados en la sección de cálculo de nodos de control 313 se suministran al circuito de desplazamiento cíclico 314. Además, una señal de control D323 que indica información (datos de matrices) en cuanto al hecho de que el borde correspondiente a los mensajes D313 esté conectado como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control se desplaza de forma cíclica, se suministra al circuito de desplazamiento cíclico 314 desde la sección de control 321. El circuito de desplazamiento cíclico 314 desplaza, de forma cíclica, los cinco mensajes D313 sobre la base de la señal de control D323 y suministra el resultado como un mensaje D314 al conmutador 315.
Una señal de control D324 que indica información en cuanto a qué columna de la matriz de control pertenecen los cinco mensajes (datos) D314 suministrados desde el circuito de desplazamiento cíclico 314 se suministra al conmutador 315 y también el mensaje D314 se suministra el circuito de desplazamiento cíclico 314. Sobre la base de la señal de control D324, el conmutador 315 selecciona la FIFO para memorizar el mensaje D314 desde entre las FIFOs 3161 a 31618 y suministra, de forma colectiva, los cinco mensajes D314 en secuencia.
Una memoria de almacenamiento de datos de borde 316 incluye 18 FIFOs 3161 a 31618. Los cinco mensajes D314 se suministran, de forma colectiva, en secuencia (simultáneamente) desde el conmutador 315 a las FIFOs 3161 a 31618 de la memoria de almacenamiento de datos de borde 316 y las FIFOs 3161 a 31618 memorizan, de forma colectiva, los cinco mensajes D314 en secuencia. Además, cuando han de leerse los datos, la memoria 316, para memorizar secuencialmente datos de bordes, lee cinco mensajes D3151 desde la FIFO 3161 y los suministra al selector 317 en la etapa posterior. Después de que se concluya la lectura de los datos desde la FIFO 3161, la memoria 316 para memorizar datos de bordes secuencialmente efectúa la lectura de los mensajes D3152 a D31318 también desde las FIFOs 3161 a 31618 y los suministra al selector 317.
Una señal de selección D325 que indica la selección de la FIFO para la lectura de datos de mensajes (la FIFO desde la que se han leído actualmente datos) desde entre las FIFOs 3161 a 31618 se suministra desde la sección de control 321 al selector 317 y también, los datos de mensajes D3151 a D31318 se suministran desde la memoria de almacenamiento de datos de bordes 316. Sobre la base de la señal de selección D325, el selector 317 selecciona la FIFO desde la que se ha leído actualmente datos de entre las FIFOs 3161 a 31618 y suministra los cinco elementos de datos de mensajes suministrados desde la FIFO seleccionada, como mensajes D316 a la sección de cálculo de nodos de variables 319 y el bloque anteriormente descrito (no ilustrado) para realizar el cálculo de la ecuación (5).
Por otro lado, la memoria 318 para datos recibidos ha calculado la LLR (ratio de probabilidad logarítmica) de recepción a partir de la información recibida a través del canal de comunicación. Cinco elementos de las LLR de recepción calculados se suministran de forma colectiva (simultáneamente) como datos recibidos D317 (códigos LDPC) a la sección de cálculo de nodos de variables 319 y el bloque (no ilustrado) para recibir el cálculo de la ecuación (5). La memoria 318 para los
5 datos recibidos efectúa la lectura de los datos recibidos D317 en la secuencia necesaria para el cálculo de nodos de variables de la sección de cálculo de nodos de variables 319.
La sección de cálculo de nodos de variables 319 incluye cinco calculadores de nodos de variables 3191 a 3195. Cinco mensajes D316 se suministran a la sección de cálculo de nodos de variables 319 a través del selector 317 y los mensajes D316 se suministran individualmente a cada uno de los calculadores de nodos de variables 3191 a 3195. Además, los cinco elementos de los datos recibidos D317 se suministran a la sección de cálculo de nodos de variables 319 desde la memoria 318 para los datos recibidos y los elementos de los datos recibidos D317 se suministran individualmente a cada uno de los calculadores de nodos de variables 3191 a 3195. Además, una señal de control D326 se suministra desde la sección de control 321 a la sección de cálculo de nodos de variables 319 y la señal de control
15 D326 se suministra a los calculadores de nodos de variables 3191 a 3195.
Los calculadores de nodos de variables 3191 a 3195 realizan cálculos en conformidad con la ecuación (1) utilizando los mensajes D316 y los datos recibidos D317 y determinan los mensajes D318 correspondientes a cinco bordes como resultado de los cálculos. La sección de cálculo de nodos de variables 319 suministra los cinco mensajes D318 obtenidos como resultado de los calculadores de nodos de variables 3191 a 3195 al circuito de desplazamiento cíclico 320.
En este caso, la señal de control D326 suministrada desde una sección de control 521 a la sección de cálculos de nodos de variables 319 corresponde a la señal de control D107 de la Figura 11 y los calculadores de nodos de variables 3191 a 3195 están configurados, cada uno, de la misma manera que el calculador de nodos de variables 103 de la Figura 11.
25 Cinco mensajes D318 se suministran al circuito de desplazamiento cíclico 320 desde la sección de cálculos de nodos de variables 319. Además, una señal de control D327 que indica información (datos de matrices) en cuanto al hecho de que el borde correspondiente al mensaje D318 esté conectado como resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control se desplaza de forma cíclica, se suministra al circuito de desplazamiento cíclico 320 desde la sección de control 321. Sobre la base de la señal de control D327, el circuito de desplazamiento cíclico 320 realiza un desplazamiento cíclico de redisposición de los mensajes D327 y suministra los mensajes como mensajes D319 al conmutador 310.
La sección de control 321 suministra una señal de selección D320 al conmutador 310 y suministra una señal de
35 selección D321 al selector 312 con el fin de controlarlos, respectivamente. La sección de control 321 suministra una señal de control D322 a la sección de cálculo de nodos de control 313, suministra una señal de control D323 al circuito de desplazamiento cíclico 314 y suministra una señal de control D324 al conmutador 315 con el fin de controlarlos, respectivamente. Además, la sección de control 321 suministra una señal de selección D325 al selector 317, suministra una señal de control D326 a la sección de cálculo de nodos de variables 319 y suministra una señal de control D327 al circuito de desplazamiento cíclico 320 con el fin de controlarlos, respectivamente.
Como resultado de la operación anterior que está en circulación una vez, puede realizarse una decodificación de los códigos LDPC. Después de que el aparato de decodificación 300 representado en las Figuras 16A a 16C, decodifique los códigos LDPC un número de veces predeterminado, el aparato de decodificación 300 determina un resultado
45 decodificado final (no ilustrado) en conformidad con la ecuación (5) y lo proporciona a la salida.
Para las partes en las que se carece de datos de bordes (mensajes correspondientes a los bordes) durante el almacenamiento en la memoria (cuando los datos se guardan en la memoria de almacenamiento de datos de bordes 311 y 316), no se memoriza ningún mensaje. Durante el cálculo de nodos (durante el cálculo de nodos de control en la sección de cálculo de nodos de control 313 y durante el cálculo de nodos de variables en la sección de cálculo de nodos de variables 319), no se realiza ningún cálculo.
La Figura 17 es un diagrama de flujo que ilustra el proceso de decodificación del aparato de decodificación 300 de las Figuras 16A a 16C. Este proceso se inicia cuando los datos recibidos, que se van a decodificar, se almacenan en la
55 memoria 318 para datos recibidos.
En la etapa S31, la sección de cálculo de nodos de variables 319 realiza un cálculo de nodos de variables.
Más concretamente, cinco mensajes D316 (mensajes uj) se suministran a la sección de cálculo de nodos de variables 319 por intermedio del selector 317. Es decir, la memoria de almacenamiento de datos de borde 316 efectúa la lectura secuencial de los cinco mensajes D3161 memorizados en la etapa S39 (a describirse más adelante) desde la FIFO 3161 y en adelante, lee secuencialmente los mensajes D3162 a D31618 también desde las FIFOs 3162 a 31618 y los suministra al selector 317.
65 Una señal de selección D307 que indica la selección de la FIFO (la FIFO desde la que se han leído actualmente datos) desde qué mensaje (datos) han de leerse desde entre las FIFOs 3161 a 31618 se suministra al selector 317 desde la
sección de control 321 y también, los datos de mensajes D3161 a D31618 se suministran al selector 317 desde la memoria de almacenamiento de datos de bordes 316. Sobre la base de la señal de selección D307, el selector 317 selecciona la FIFO desde la que se ha leído actualmente datos, de entre las FIFOs 3161 a 31618 y suministra los cinco elementos de los datos de mensajes suministrados desde la FIFO seleccionada, como los mensajes D316, a la sección de cálculo de nodos de variables 319.
Cuando todavía no se ha realizado un cálculo de nodos de control sobre los datos recibidos D309 suministrados desde la memoria 306 y no se memoriza un mensaje D304 en la memoria de almacenamiento de datos de borde 316, la sección de cálculo de nodos de variables 319 establece el mensaje uj para un valor inicial utilizado para un cálculo de nodos de variables.
Los cinco elementos de los datos recibidos D309 (valor recibido u0i) se suministran a la sección de cálculo de nodos de variables 319 desde la memoria 318 para los datos recibidos y los elementos de los datos recibidos D309 se suministran individualmente a cada uno de los calculadores de nodos de variables 3191 a 3195. Además, una señal de control D315 se suministra a la sección de cálculo de nodos de variables 319 desde la sección de control 321 y la señal de control D315 se suministra a los calculadores de nodos de variables 3191 a 3195.
Sobre la base de la señal de control D315, los calculadores de nodos de variables 3191 a 3195 realizan simultáneamente cálculos en conformidad con la ecuación (1) utilizando los mensajes D316 y los datos recibidos D309 y determinan cinco mensajes D319 como resultado de los cálculos.
Es decir, la señal de control D315 suministrada a la sección de cálculo de nodos de variables 319 por la sección de control 321 corresponde a la señal de control D107 descrita con referencia a la Figura 11 anteriormente descrita. Cada uno de los calculadores de nodos de variables 3191 a 3195 lee un mensaje necesario D314 (D316) desde la memoria de almacenamiento de datos de bordes 316 por intermedio del selector 317 en conformidad con la señal de control D309 y además, lee los cinco elementos de datos recibidos D309 suministrados desde la memoria 318 para datos recibidos, respectivamente, para realizar un cálculo de nodos de variables y determinar simultáneamente cinco mensajes D319 como resultado de los cálculos.
Después del procesamiento de la etapa S31, el proceso prosigue con la etapa S32, en donde la sección de cálculo de nodos de variables 319 suministra los cinco mensajes D319 (mensajes vi) obtenidos como resultado de los cálculos de nodos de variables de los calculadores de nodos de variables 3191 a 3195 al circuito de desplazamiento cíclico 320. El proceso prosigue, entonces, con la etapa S33.
En la etapa S33, el circuito de desplazamiento cíclico 320 desplaza cíclicamente (redispone) los cinco mensajes D318 suministrados desde la sección de cálculo de nodos de variables 319.
Más concretamente, se suministra un mensaje D318 al circuito de desplazamiento cíclico 320 desde la sección de cálculo de nodos de variables 319. Además, una señal de control D327 que indica información (datos de matrices) en cuanto al hecho de que el borde correspondiente a los mensajes D318 está conectado como resultado de cuántas veces, a modo de ejemplo, la matriz unitaria, que forma la base en la matriz de control, se desplaza de forma cíclica, se suministra al circuito de desplazamiento cíclico 320 desde la sección de control 321. Sobre la base de la señal de control D327, el circuito de desplazamiento cíclico 320 desplaza, de forma cíclica, cinco mensajes D327 y suministra los resultados como el mensaje D319 al conmutador 310.
Después del procesamiento de la etapa S33, el proceso prosigue con la etapa S34, en donde el conmutador 310 suministra los cinco mensajes D319 suministrados desde el circuito de desplazamiento cíclico 320 a la memoria de almacenamiento de datos de bordes 311.
Más concretamente, un mensaje (datos) D304 se suministra al conmutador 310 desde el circuito de desplazamiento cíclico 320 y además, una señal de control D312 que indica información en cuanto a qué fila de la matriz de control pertenece el mensaje D304 se suministra al conmutador 310. Sobre la base de la señal de control D312, el conmutador 310 selecciona la FIFO para memorizar los mensajes D304 desde entre las FIFOs 3001 a 3006 y suministra, de forma secuencial, los cinco elementos de los datos de mensajes D304 colectivamente en la FIFO seleccionada.
A continuación, las FIFOs 3001 a 30018 de la memoria de almacenamiento de datos de bordes 311 memoriza, de forma colectiva, los cinco elementos de los datos de mensajes D304 suministrados desde el conmutador 310 en secuencia.
Después del procesamiento de la etapa S34, el proceso prosigue con la etapa S35, en donde la sección de control 321 determina si los mensajes del número total de bordes se han calculado, o no, por la sección de cálculo de nodos de variables 319. Cuando se determina que los mensajes del número total de bordes no han sido calculados, el proceso retorna a la etapa S31 y se realiza de nuevo el procesamiento anteriormente descrito.
Por otro lado, cuando se determina, en la etapa S35 que la sección de cálculo de nodos de variables 319 ha calculado los mensajes del número total de bordes, el proceso prosigue con la etapa S36, en donde la sección de cálculo de nodos de control 313 realiza un cálculo de nodos de control.
Más concretamente, cinco mensajes D302 se suministran a la sección de cálculo de nodos de control 313 a través del selector 312. Es decir, la memoria de almacenamiento de datos de bordes 311 lee, de forma secuencial, desde la FIFO 3111, cinco mensajes D3111 (mensaje vi) memorizados en la etapa S34 y en adelante, lee secuencialmente los datos de mensajes D3112 a D3116 también desde las FIFOs 3112 a 3116 y los suministra al selector 312.
Una señal de selección D321 que indica la selección de la FIFO para la lectura de datos de mensajes (la FIFO desde la que se han leído actualmente los datos) desde entre las FIFOs 3111 a 3116 se suministra al selector 312 desde la sección de control 321 y además, los datos de mensajes D3111 a D3116 se suministran al selector 312 desde la memoria de almacenamiento de datos de bordes 311. Sobre la base de la señal de selección D321, el selector 301 selecciona la FIFO desde la que se han leído actualmente datos y suministra cinco elementos de los datos de mensajes suministrados desde la FIFO seleccionada, como mensajes D311, a la sección de cálculo de nodos de control 313.
Además, una señal de control D322 se suministra a la sección de cálculo de nodos de control 313 desde la sección de control 321. Sobre la base de la señal de control D322, los calculadores de nodos de control 3131 a 3135 de la sección de cálculo de nodos de control 313 realiza simultáneamente los cálculos de nodos de control en conformidad con la ecuación (7) utilizando los mensajes D302 y la determinación de cinco mensajes D303 (mensajes uj) como resultado de los cálculos.
Más concretamente, la señal de control D322 suministrada a la sección de cálculo de nodos de control 313 por la sección de control 321, corresponde a la señal de control D106 en la Figura 10 anteriormente descrita. Sobre la base de la señal de control D322, los calculadores de nodos de control 3131 a 3135 realizan, cada uno, un cálculo de nodos de control mientras efectúan la lectura de un mensaje necesario D311 (D312) desde la memoria de almacenamiento de datos de bordes 311 por intermedio del selector 312 y determinan simultáneamente cinco mensajes D313 como resultado de los cálculos.
Después del procesamiento de la etapa S37 el proceso prosigue con la etapa S38, en donde la sección de cálculo de nodos de control 313 proporciona cinco mensajes D313 obtenidos como resultado del cálculo de nodos de control para el circuito de desplazamiento cíclico 314. A continuación, el proceso prosigue con la etapa S38.
En la etapa S38, el circuito de desplazamiento cíclico 314 desplaza, de forma cíclica, los cinco mensajes D313 suministrados desde la sección de cálculo de nodos de control 313.
Más concretamente, los mensajes D313 se suministran al circuito de desplazamiento cíclico 314 desde la sección de cálculo de nodos de control 313. Además, una señal de control D314 que indica información (datos de matrices) en cuanto al hecho de que el borde correspondiente a los mensajes D313 está conectado como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control se desplaza de forma cíclica, se suministra al circuito de desplazamiento cíclico 314 desde la sección de cálculo 321. Sobre la base de la señal de control D314, el circuito de desplazamiento de cíclico 314 desplaza, de forma cíclica, los cinco mensajes D313 y suministra los resultados, como los mensajes D304, al conmutador 315.
Después del procesamiento de la etapa S38, el proceso prosigue con la etapa S39, en donde el conmutador 315 memoriza los cinco mensajes D304 suministrados desde el circuito de desplazamiento cíclico 314 en la memoria de almacenamiento de datos de bordes 316.
Más concretamente, los cinco mensajes (datos) D304 se suministran desde el circuito de desplazamiento cíclico 314 al conmutador 316 y además, una señal de control D324 que indica información en cuanto a qué fila de la matriz de control pertenecen los mensajes (datos) D304 se suministra al conmutador 316 desde el circuito de desplazamiento cíclico 314. Sobre la base de la señal de control D324, el conmutador 316 selecciona la FIFO para memorizar el mensaje D304 desde entre las FIFOs 3161 a 31618 de la memoria de almacenamiento de datos de bordes 316 y suministra colectivamente los cinco elementos de los datos de mensajes D304 a la FIFO seleccionada en secuencia.
A continuación, las FIFOs 3161 a 31618 de la memoria de almacenamiento de datos de bordes 316 memoriza colectivamente los cinco elementos de los datos de mensajes D304 suministrados desde el conmutador 316 en secuencia.
Después del procesamiento de la etapa S39, el proceso prosigue con la etapa S40, en donde la sección de cálculo 321 determina si los mensajes del número total de los bordes se han calculado, o no, por la sección de cálculo de nodos de control 313. Cuando se determina que los mensajes del número total de los bordes no se han calculado, el proceso retorna a la etapa S36 y se realiza de nuevo el procesamiento anteriormente descrito.
Por otro lado, cuando la sección de cálculo 321 determina, en la etapa S40, que los mensajes del número total de los bordes han sido calculados por la sección de cálculo de nodos de control 313, se concluye el procesamiento.
Cuando el aparato de decodificación 300 realiza, de forma repetida, el proceso de decodificación de la Figura 17 para el número de decodificaciones y la sección de cálculo de nodos de control 313 realiza el cálculo final de nodos de control, el
mensaje D304 obtenido como un resultado del cálculo de nodos de control se suministra desde la memoria de almacenamiento de datos de bordes 316 a través del selector 317 a un bloque (no ilustrado) para realizar el cálculo de la ecuación (5) anteriormente descrita. Los datos recibidos D309 se suministran, además, al bloque (no ilustrado) desde la memoria 306 para los datos recibidos. El bloque (no ilustrado) realiza el cálculo de la ecuación (5) utilizando los mensajes D304 y los datos recibidos D309 y proporciona el resultado del cálculo como un resultado decodificado final.
En la descripción anterior, aunque se utiliza una FIFO para memorizar datos de bordes (aunque las memorias de almacenamiento de datos de bordes 311 y 316 están formadas por FIFOs, se puede utilizar una memoria RAM en lugar de la FIFO. En ese caso para la memoria RAM, un anchura de bit en la que se pueden leer simultáneamente P elementos de información de borde (mensajes correspondientes a bordes) y se requiere el número total de bordes/P palabras. Para la escritura en la memoria RAM, en qué posición se leen los datos a escribirse se lee a continuación se determina sobre la base de la información de la matriz de control y los datos se escriben en esa posición. Para la lectura desde la memoria RAM, los datos se leen secuencialmente desde el principio de la dirección. Es decir, en la memoria RAM, los datos de mensajes se memorizan en la secuencia en la que se leen de tal manera que se empaqueten más próximos y los datos de mensajes se leen en la secuencia de posiciones de memoria. Si la memoria RAM se utiliza en lugar de la FIFO, los selectores 312 y 317 no son necesarios.
Cuando la anchura de bit física de la FIFO y de la memoria RAM no es suficiente, proporcionando la misma señal de control utilizando una pluralidad de memorias RAMs, éstas se pueden asumir lógicamente como una sola memoria RAM.
En el aparato de decodificación 300 de las Figuras 16A a 16C, se realiza un cálculo de nodos de variables utilizando el mensaje uj obtenido como resultado del cálculo de nodos de control y se realiza un cálculo de nodos de control utilizando el mensaje vi obtenido como resultado de ese cálculo. Por lo tanto, la memoria de almacenamiento de datos de bordes 311 y la memoria de almacenamiento de datos de bordes 316 para memorizar todos los mensajes uj correspondientes a los bordes obtenidos como un resultado del cálculo de nodos de control y todos los mensajes vi correspondientes a los bordes obtenidos como resultado del cálculo de nodos de variables se requieren a este respecto. Es decir, en el aparato de decodificación, se requiere una memoria de la capacidad requerida para memorizar mensajes dos veces tan grande como el número de '1' de la matriz de control H.
En consecuencia, para poder reducir todavía más la escala circuital del aparato de decodificación, un aparato de decodificación, en el que se reduce todavía más la capacidad de memoria cuando se compara con el aparato de decodificación 300 de las Figuras 16A a 16C se describe a continuación.
La Figura 18 es un diagrama de bloques que representa, a modo de ejemplo, la configuración de otra forma de realización del aparato de decodificación para decodificar códigos LDPC representados por la matriz de control de la Figura 15 a la que se aplica la presente invención.
En un aparato de decodificación 400 de la Figura 18, la memoria de almacenamiento de datos de bordes 311 de las Figuras 16A y 16B se forma como una memoria 410 para memorizar los resultados de decodificación en curso que presenta una capacidad más pequeña que la que tiene la memoria de almacenamiento de datos de bordes 311.
El aparato de decodificación 400 incluye una memoria 410 para memorizar resultados de decodificación en curso, un circuito de desplazamiento cíclico 411, una sección de cálculo 412 constituida por cinco calculadores 4121 a 4125, una memoria 413 para memorizar resultados de decodificación en curso, un circuito de desplazamiento cíclico 414, una sección de cálculo 415 constituida por cinco calculadores 4151 a 4155, una memoria 416 para recepción y una sección de cálculo 417.
A continuación se proporcionará una descripción, haciendo referencia a la Figura 19 a Figura 22 de la relación entre los calculadores 4121 a 4125 de la sección de cálculo 412 y los calculadores 4151 a 4155 de la sección de cálculo 415 de la Figura 18, el calculador de nodos de control 101 de la Figura 10 y el calculador de nodos de variables 103 de la Figura
11.
Las Figuras 19 y 20 son las mismas que la Figura 10 que ilustra el calculador de nodos de control 101 y la Figura 11 que ilustra el calculador de nodos de variables 103, respectivamente. La Figura 21 representa, a modo de ejemplo, la configuración de una sección de cálculo 412k (k = 1, 2, …, 5). La Figura 22 representa, a modo de ejemplo, la configuración de una sección de cálculo 415k (k = 1, 2, …, 5).
En el aparato de decodificación 400 de la Figura 18, en lugar del calculador 412k, se realiza un cálculo de nodos de control y la sección de cálculo 415k realiza un cálculo de nodos de variables, el calculador 412k realiza parte del cálculo de nodos de control y el cálculo de nodos de variables y el calculador 415k realiza algunos de los demás cálculos de nodos de variables.
Más concretamente, el calculador 412k de la Figura 21 se forma por un bloque A’ y un bloque B’. El bloque A’ está configurado de la misma manera que el bloque para realizar el cálculo de nodos de control del calculador de nodos de control 101 de la Figura 19. El bloque B’ está configurado de la misma manera que el bloque B, que es parte del calculador de nodos de variables 103 de la Figura 20, para la sustracción del mensaje uj correspondiente al borde que se
va a determinar, desde el valor integrado de los mensajes uj correspondientes a todos los bordes de cada columna de la matriz de control. Por otro lado, el calculador 415k de la Figura 22 está formado a partir de un bloque C’. El bloque C’ está configurado de la misma manera que el bloque C, que es otra parte del calculador de nodos de variables 103 de la Figura 20, para integrar los mensajes uj correspondientes a los bordes de cada columna de la matriz de control y añadir el valor recibido u0i al valor integrado.
El calculador 412k de la Figura 21 suministra los resultados de los cálculos por el bloque A y el bloque B, es decir, los resultados de decodificación en curso uj de modo que se realice parte del cálculo del nodo de control y del cálculo del nodo de variables a la memoria 413 para memorizar resultados de decodificación en curso. El calculador 415k de la Figura 22 suministra los resultados de decodificación en curso v, de modo que parte de los otros cálculos de nodos de variables se realicen para la memoria 410 para memorizar los resultados de decodificación en curso.
Por lo tanto, es posible para el aparato de decodificación 400 de la Figura 18 realizar el cálculo de nodos de control y el cálculo de nodos de variables realizando, de forma alternada, el cálculo del calculador 412k y el cálculo del calculador 415k, con el fin de realizar la decodificación.
En el calculador 412k de la Figura 22, puesto que los resultados de la decodificación en curso uj correspondientes a los bordes que se van a determinar se sustraen de los resultados de decodificación en curso v, obtenidos como un resultado del cálculo del calculador 415k en el bloque B utilizando los resultados de decodificación en curso uj correspondientes a los bordes que se van a determinar, que se almacenan en la memoria 413 para memorizar los resultados de decodificación en curso, no se requiere la memoria FIFO 155 de la Figura 20.
A continuación, se proporciona una descripción del cálculo realizado por el calculador 412k y el cálculo realizado por el calculador 415k utilizando las ecuaciones.
Más concretamente la sección de cálculo 412 realiza un primer cálculo en conformidad con la ecuación (7) anteriormente descrita y la ecuación (8) descrita a continuación y suministra los resultados de decodificación en curso uj, que son los resultados del primer cálculo, a la memoria 410 para memorizar los resultados de decodificación en curso, en donde se memorizan. La sección de cálculo 415 realiza un segundo cálculo en conformidad con la ecuación (5) anteriormente descrita y suministra los resultados de decodificación en curso v, que son los resultados del segundo cálculo, a la memoria 410 para memorizar los resultados de decodificación en curso, en donde se memorizan.
udv de la ecuación (8) representa los resultados en curso (en este caso, los propios resultados del cálculo de nodos de control) del cálculo de nodos de control desde el borde para el que ha de determinarse el mensaje de i-ésima columna de la matriz de control H. es decir, udv es los resultados de la decodificación en curso correspondientes al borde que se va a determinar.
Más concretamente, los resultados de la decodificación en curso v, obtenidos como resultado del segundo cálculo en conformidad con la ecuación (5) anteriormente descrita, son tales que el valor recibido u0i y los resultados de la decodificación en curso uj del cálculo de nodos de control, procedentes de todos los bordes correspondientes a los valores '1' de cada fila de la i-ésima columna de la matriz de control H, se multiplican juntos. El valor vi utilizado para la ecuación (7), anteriormente descrita, se hace de modo que los resultados de la decodificación en curso udv del cálculo de nodos de control desde los bordes para los que han de determinarse mensajes, desde entre los resultados de decodificación en curso uj del cálculo de nodos de control desde los bordes correspondientes a '1' de cada fila, de la iésima columna de la matriz de control H, se sustraen de los resultados de decodificación en curso v obtenidos como resultado del segundo cálculo en conformidad con la ecuación (5). Es decir, el cálculo de la ecuación (1), para determinar el valor vi utilizado para el cálculo de la ecuación (7), es un cálculo en el que la ecuación anteriormente descrita (5) y la ecuación (8) están combinadas.
Por lo tanto, en el aparato de decodificación 400, el primer cálculo en conformidad con la ecuación (7) y la ecuación (8) por la sección de cálculo 412 y el segundo cálculo en conformidad con la ecuación (5) por la sección de cálculo 415 se realizan de forma alternada y la sección de cálculo 415 proporciona el resultado del segundo cálculo final como los resultados decodificados, lo que posibilita realizar una decodificación repetida de los códigos LDPC.
En este caso, los primeros resultados del cálculo, en conformidad con la ecuación (7) y la ecuación (8), se describen como los resultados de la decodificación en curso uj y estos resultados de la decodificación en curso uj son iguales a los resultados del cálculo de nodos de control uj de la ecuación (7).
Puesto que el valor v de la ecuación (5), que se determina a partir del segundo cálculo, es tal que los resultados del cálculo de nodos de control uj desde los bordes, desde los que han de determinarse mensajes, se añaden a los resultados del cálculo de nodos de variables vi de la ecuación (1), solamente uno de los valores v se determina con respecto a una sola columna (un solo nodo de variables) de la matriz de control H.
En el aparato de decodificación 400, la sección de cálculo 412 realiza el primer cálculo utilizando los resultados de la decodificación en curso v (los segundos resultados de decodificación en curso) correspondientes a la columna de la matriz de control H, que son los resultados del segundo cálculo mediante la sección de cálculo 415 y memoriza, en la memoria 413 para almacenar resultados de decodificación en curso, los resultados de la decodificación en curso uj (los primeros resultados de decodificación en curso) del cálculo de nodos de control desde los bordes de los mensajes (los mensajes a la salida para cada borde por cada nodo de control) de los bordes correspondientes a '1' de cada fila, de la iésima columna de la matriz de control H obtenida como resultado del cálculo. Por lo tanto, la capacidad de la memoria 413 para memorizar resultados de la decodificación en curso se hace igual a un valor de modo que, de forma similar al número de '1' (el número total de bordes) de la matriz de control y el número de bits de cuantización se multipliquen juntos. Por otro lado, la sección de cálculo 415 realiza un segundo cálculo utilizando los resultados de la decodificación en curso uj correspondientes a los '1' de cada fila, de la i-ésima columna de la matriz de control H, que son los resultados del primer cálculo por la sección de cálculo 412 y el valor recibido u0i y memoriza los resultados de la decodificación en curso v correspondientes a la i-ésima columna obtenida como resultado del cálculo en la memoria 410 para memorizar los resultados de la decodificación. Por lo tanto, la capacidad necesaria para la memoria 410 para memorizar los resultados de la decodificación en curso se hace un valor tal que el número de columnas de la matriz de control, que es más pequeño que el número de elementos '1' de la matriz de control, es decir, la longitud de código de los códigos LDPC y el número de bits de cuantización se multipliquen juntos.
Por lo tanto, en el aparato de decodificación 400 para decodificar códigos LDPC, en donde los elementos '1' en la matriz de control H son escasos, la capacidad de memoria de la memoria 410 para memorizar resultados de la decodificación en curso se puede reducir cuando se compara con la memoria de almacenamiento de datos de bordes 311 de las Figuras 16A y 16B. En consecuencia, se puede reducir la escala circuital del aparato de decodificación 400.
Además, en el aparato de decodificación 400, puesto que la sección de cálculo 415 realiza un segundo cálculo en conformidad con la ecuación (5), el aparato de decodificación 400 no necesita tener el bloque (no ilustrado) para realizar el cálculo de la ecuación (5) para calcular los resultados decodificados finales en el aparato de decodificación 300 de las Figuras 16A a 16C. De este modo, cuando se compara con el aparato de decodificación 300 de las Figuras 16A a 16C, se puede reducir la escala circuital del aparato de decodificación de la Figura 18.
A continuación se proporcionará una descripción, en detalle, de la operación de cada sección del aparato de decodificación 400 de la Figura 18.
Cinco resultados de la decodificación en curso D415 correspondientes a cinco columnas de la matriz de control, que son los resultados del segundo cálculo por la sección de cálculo 415, se suministran a la memoria 410 para memorizar los resultados de la decodificación en curso desde la sección de cálculo 415. La memoria 410 para memorizar los resultados de la decodificación en curso memoriza los cinco resultados de la decodificación en curso D415 suministrados desde la sección de cálculo 415 en secuencia, comenzando desde la primera dirección.
Más concretamente, en la primera dirección de la memoria 410 para memorizar resultados de la decodificación en curso, se memorizan los resultados de la decodificación en curso v desde la primera columna hasta la quinta columna, desde entre los resultados de la decodificación en curso correspondientes a la columna de la matriz de control. De modo similar, en la segunda dirección, se memorizan los resultados de la decodificación en curso v desde la sexta columna hasta la décima columna y en la tercera dirección, se memorizan los resultados de la decodificación en curso desde la 11ª columna hasta la 15ª columna. En adelante, de modo similar, los resultados de la decodificación en curso v, desde la 16ª columna hasta la 90ª columna, se memorizan en la cuarta dirección hasta la 18ª dirección en unidades de cinco resultados y un total de 90 resultados de la decodificación en curso v se memorizan en la memoria 410 para almacenar los resultados de la decodificación en curso. Por lo tanto, el número de palabras de la memoria 410 para memorizar los resultados de la decodificación en curso se hace 18 de modo que 90, el número de columnas de la matriz de control H (la longitud de código de los códigos LDPC) de la Figura 15, se divide por 5, el número de los resultados de la decodificación en curso que son objeto de lectura y escritura simultáneamente.
La memoria 410 para memorizar los resultados de la decodificación en curso efectúa una lectura simultánea, desde los resultados de la decodificación en curso D415 que han sido ya memorizados, de cinco resultados de la decodificación en curso v que son '1' en la fila correspondiente de la matriz de control H, de los resultados de la decodificación en curso uj a determinarse por la sección de cálculo 412 en la etapa posterior y los suministra, como resultados de la decodificación en curso D410, al circuito de desplazamiento cíclico 411.
La memoria 410 para memorizar los resultados de la decodificación en curso está formada por, a modo de ejemplo, una memoria RAM de puerto único capaz de la lectura y escritura simultáneas de cinco resultados de la decodificación en curso. Puesto que, en la memoria 410 para memorizar los resultados de la decodificación en curso, los resultados de la decodificación en curso v correspondientes a la columna en la que se realiza el cálculo por el segundo cálculo de la sección de cálculo 415 son memorizados, la cantidad de datos memorizados en la memoria 410 para almacenar los resultados de la decodificación en curso, es decir, la capacidad de almacenamiento necesaria para la memoria 410 para memorizar los resultados de la decodificación en curso, es un valor de la multiplicación del número de bits de cuantización de los resultados de la decodificación en curso y el número de columnas de la matriz de control H (la longitud de código de los códigos LDPC).
Cinco resultados de la decodificación en curso D410 se suministran al circuito de desplazamiento cíclico 411 desde la
5 memoria 410 para memorizar los resultados de la decodificación en curso. Además, una señal de control D619 que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponde a los resultados de la decodificación en curso D410, están dispuestos como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control se desplaza de forma cíclica, se suministra al circuito de desplazamiento cíclico 411 desde la sección de cálculo 417. El circuito de desplazamiento cíclico 611 realiza un desplazamiento cíclico de redisponer los cinco resultados decodificados D410 sobre la base de la señal de control D619 y suministra los resultados como resultados de la decodificación en curso D411 a la sección de cálculo 412.
La sección de cálculo 412 incluye cinco calculadores 4121 a 4125. Los cinco resultados de la decodificación en curso D411 (los segundos resultados de la decodificación en curso) v, que se obtienen como resultado del segundo cálculo por
15 la sección de cálculo 415, se suministran a la sección de cálculo 412 desde el circuito de desplazamiento cíclico 411. Además, los cinco resultados de la decodificación en curso D413 (los primeros resultados de la decodificación en curso) uj obtenidos anteriormente como un resultado del primer cálculo por los calculadores 4121 a 4125 se suministran a la sección de cálculo 412 desde la memoria 413 para memorizar los resultados de la decodificación en curso. Los cinco resultados de la decodificación en curso D411 y los cinco resultados de la decodificación en curso D413 se suministran a cada uno de los calculadores 4121 a 4125. Además, una señal de control D419 se suministra a la sección de cálculo 412 desde la señal de control 417 y la señal de control D419 se suministra a los calculadores 4121 a 4125. La señal de control de control D419 es una señal común a los cinco calculadores 4121 a 4125.
Los calculadores 4121 a 4125 realizan el primer cálculo en conformidad con la ecuación (7) y la ecuación (8) utilizando los
25 resultados de la decodificación en curso D411 y los resultados de la decodificación en curso D413 y determinan los resultados de la decodificación en curso D412 (vi). La sección de cálculo 412 suministra los cinco resultados de la decodificación en curso D412 correspondientes a cinco '1' de la matriz de control, que se obtienen como resultado de los cálculos por los calculadores 4121 a 4125, a la memoria 413 para almacenar los resultados de la decodificación en curso.
La memoria 413 para memorizar los resultados de la decodificación en curso está formada por, a modo de ejemplo, dos memorias RAMs de puerto único capaces de la lectura y escritura simultáneas de cinco resultados de la decodificación en curso. Los cinco resultados de la decodificación en curso D412 se suministran a la memoria 413 para memorizar los resultados de la decodificación en curso desde la sección de cálculo 412 y además, una señal de control D420, para controlar las operaciones de lectura y escritura de los resultados de la decodificación en curso 413, se suministran a la
35 memoria 413 desde la sección de cálculo 417.
Sobre la base de la señal de control D420, la memoria 413 para memorizar los resultados de la decodificación en curso almacena, de forma colectiva, los cinco resultados de la decodificación en curso D412 suministrados desde la sección de cálculo 412 y al mismo tiempo, efectúa la lectura de los cinco resultados de la decodificación en curso D412, que se han memorizado con anterioridad y los suministra como resultados de la decodificación en curso D413 a la sección de cálculo 412 y al circuito de desplazamiento cíclico 414. Es decir, la memoria 413 para memorizar los resultados de la decodificación en curso realiza simultáneamente la lectura de los resultados de la decodificación en curso D413 a suministrar a la sección de cálculo 412 y al circuito de desplazamiento cíclico 414 y la escritura de los resultados de la decodificación en curso D412 suministrados desde la sección de cálculo 412.
45 En la memoria 413 para memorizar los resultados de la decodificación en curso, se memorizan los resultados de la decodificación en curso uj del cálculo de nodos de control desde los bordes correspondientes '1' de cada fila, de la iésima columna de la matriz de control H, que se calculan por el primer cálculo de la sección de cálculo 412. Por lo tanto, la cantidad de datos memorizados en la memoria 413 para memorizar los resultados de la decodificación en curso, es decir, la capacidad de almacenamiento necesaria para la memoria 413 para memorizar los resultados de la decodificación en curso, se hace el valor de multiplicación del número de los bits de cuantización de los resultados de la decodificación en curso y el número de '1' de la matriz de control.
Cinco resultados de la decodificación en curso D413 (los resultados de la decodificación en curso uj) se suministran al
55 circuito de desplazamiento cíclico 414 desde la memoria 413 para memorizar los resultados de la decodificación en curso. Además, una señal de control D421 que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponde a los resultados de la decodificación en curso D413, están dispuestos como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria, que constituye la base en la matriz de control, es objeto de desplazamiento cíclico, se suministran al circuito de desplazamiento cíclico 414 desde la sección de cálculo
417. El circuito de desplazamiento cíclico 414 realiza un desplazamiento cíclico de redisposición de los cinco resultados de la decodificación en curso D413 sobre la base de la señal de control D421 y suministra los resultados como resultados de la decodificación en curso D414 a la sección de cálculo 415.
La sección de cálculo 415 incluye cinco calculadores 4151 a 4155. Cinco resultados de la decodificación en curso D414
65 se suministran a la sección de cálculo 415 desde el circuito de desplazamiento cíclico 414 y los resultados de la decodificación en curso D414 se suministran a los respectivos calculadores 4151 a 4155. Además, cinco elementos de
datos recibidos D417 (códigos LDPC) se suministran a la sección de cálculo 415 desde la memoria 417 para recepción y los elementos de datos recibidos D417 se suministran a los respectivos calculadores 4151 a 4155. Además, una señal de control D422 se suministra a la sección de cálculo 417 desde la señal de control 417 y la señal de control D422 se suministra a los calculadores 4151 a 4155. La señal de control D422 es una señal común a los cinco calculadores 4171 a 4175.
Los calculadores 4151 a 4155 realizan, cada uno, el segundo cálculo en conformidad con la ecuación (5) utilizando los resultados de la decodificación en curso D414 y los datos recibidos D417 y determinan los resultados de la decodificación en curso D415. La sección de cálculo 415 suministra los cinco resultados de la decodificación en curso D415 (v) obtenidos como un resultado del segundo cálculo por los calculadores 4151 a 4155 a la memoria 410 para memorizar los resultados de la decodificación en curso. Además, cuando el cálculo, que se está realizando actualmente, es el segundo cálculo final, la sección de cálculo 415 proporciona, a la salida, los cinco resultados de la decodificación en curso D415, que se obtienen como resultado del cálculo, como los resultados decodificados finales.
La memoria 416 para recepción memoriza, como datos recibidos D417, el LLR (ratio de probabilidad logarítmica) de recepción, que es el valor de 0-semejanza del bit de signo, que se calcula a partir del valor recibido (el bit de signo) que se recibe a través del canal de comunicación.
Es decir, en la primera dirección de la memoria 416 para recepción, los datos recibidos D417 correspondientes a la primera columna hasta la quinta columna de la matriz de control, desde entre los datos recibidos D417 correspondientes a la columna de la matriz de control son objeto de memorización. A continuación, en la segunda dirección, los datos recibidos D417 correspondientes a la sexta columna hasta la décima columna de la matriz de control se memorizan y en la tercera dirección, se memorizan los datos recibidos D417 correspondientes a la 11ª columna hasta la 16ª columna de la matriz de control. En adelante, de modo similar, en la cuarta dirección hasta la 18ª dirección, los datos recibidos D417 correspondientes a la 17ª columna hasta la 90ª columna se memorizan en unidades de cinco elementos de datos.
A continuación, una memoria 616 para recepción efectúa la lectura de los datos recibidos D417 que se han memorizado, con anterioridad, en unidades de cinco elementos de datos en la secuencia necesaria para el cálculo de nodos de variables y los suministra a la sección de cálculo 415.
La memoria 416 para recepción está formada por, a modo de ejemplo, una memoria de puerto único RAM capaz de la lectura y escritura simultáneas de cinco elementos de datos recibidos. La cantidad de datos memorizados en la memoria 416 para recepción, es decir, la capacidad de almacenamiento necesaria para la memoria 315 para recepción, es el valor de multiplicación de la longitud de código de los códigos LDPC y el número de bits de cuantización de los datos recibidos. El número de palabras de la memoria 416 para recepción es 18, que es el valor de modo que la longitud de código de los códigos LDPC, es decir 90, el número de columnas del a matriz de control, se divide por 5, el número de elementos de los datos recibidos D417 objeto de lectura simultánea.
La sección de control 417 suministra una señal de control D418 al circuito de desplazamiento cíclico 411 y suministra una señal de control D419 a la sección de cálculo 412 para poder controlarlos, respectivamente. La sección de control 417 suministra una señal de control D420 a la memoria 413 para memorizar los resultados de la decodificación en curso, suministra una señal de control D421 al circuito de desplazamiento cíclico 414 y suministra una señal de control D421 a la sección de cálculo 415 con el fin de controlarlos, respectivamente.
Como resultado de los datos que están en circulación en el orden de la memoria 410 para memorizar resultados de la decodificación en curso, el circuito de desplazamiento cíclico 411, la sección de cálculo 412, la memoria 413 para memorizar los resultados de la decodificación, el circuito de desplazamiento cíclico 414 y la sección de cálculo 415, el aparato de decodificación 400 puede realizar una decodificación. En el aparato de decodificación 400, después de que se realicen decodificaciones, de forma repetida, un número predeterminado de veces, los resultados de la decodificación en curso D415, que son los resultados del segundo cálculo por la sección de cálculo 415, se proporcionan como los resultados decodificados finales.
La Figura 21 es un diagrama de bloques que representa, a modo de ejemplo, la configuración de un calculador 4121 de la sección de cálculo 412 de la Figura 18.
En la Figura 21, se proporciona una descripción del calculador 4121 y el calculador 4122 al calculador 4125, se configuran también de la misma manera.
En la Figura 21, el calculador 4121 se representa suponiendo que cada uno de los resultados de la decodificación en curso (udv), obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, junto con el bit de signo, son objeto de cuantización para un total de seis bits y cada uno de los resultados de la decodificación en curso (v), obtenidos como un resultado del segundo cálculo por el calculador 415, es objeto de cuantización para nueve bits. Además, una señal de control de reloj ck se suministra al calculador 4121 de la Figura 21 y está señal de control de reloj ck se suministra a los bloques necesarios. A continuación, cada bloque realiza el procesamiento en sincronización con la señal de control de reloj ck.
Sobre la base de la señal de control D419, suministrada desde la sección de control 417, el calculador 4121 de la Figura 21 realiza un primer cálculo en conformidad con la ecuación (7) y la ecuación (8) utilizando los resultados de la decodificación en curso D413 (udv) obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, que son objeto de lectura, uno a uno, desde la memoria 413 para memorizar los resultados de la decodificación en curso y los resultados de la decodificación en curso D411 (v), que son objeto de lectura, uno a uno, desde el circuito de desplazamiento cíclico 411.
Más concretamente, un resultado de decodificación en curso D411, desde entre los cinco resultados de la decodificación en curso de 9 bits D411 (v) suministrados desde el circuito de desplazamiento cíclico 411, se suministran al calculador 4121. Además, un resultado de la decodificación en curso D413, que es el resultado del cálculo por la sección de cálculo 412 en el tiempo anterior, desde entre los cinco resultados de la decodificación en curso de 6 bits D413 (uj), que son los resultados del cálculo por la sección de cálculo 412 en el tiempo anterior, que se suministran desde la memoria 413 para memorizar los resultados de la decodificación en curso, se suministran al calculador 4121. Los resultados de la decodificación en curso de 9 bits D411 (v) y los resultados de la decodificación en curso de 6 bits D413 (udv) se suministran al dispositivo restador 431. Además, la señal de control D419 se suministra al calculador 4121 desde la sección de control 417 y la señal de control D419 se suministra al selector 435 y al selector 442.
El dispositivo restador 431 sustrae el resultado de la decodificación en curso de seis bits D413 (uj) a partir del resultado de la decodificación en curso de 9 bits D411 (v) y proporciona, a la salida, el valor sustraído de 6 bits D431. Es decir, el dispositivo restador 431 realiza un cálculo en conformidad con la ecuación (8) y proporciona, a la salida, el valor sustraído D431 (vi) que es el resultado del cálculo.
Un bit de signo D432 (sign (vi)), que indica el signo positivo o negativo del bit de más alto orden desde entre el valor sustraído de 6 bits D431 objeto de salida desde el dispositivo restador 431, se suministra al circuito lógico EXOR 440 y el valor absoluto de D433 (| vi |) de los cinco bits de más bajo orden se suministra a LUT 432.
El LUT 432 efectúa la lectura de los resultados del cálculo de 5 bits D434 (φ (| vi |)) de modo que el cálculo φ (| vi |), en la ecuación (7) se realice sobre el valor absoluto D433 (| vi |) y los suministra a un sumador 433 y una memoria FIFO 438.
El sumador 433 integra los resultados del cálculo D434 sumando juntos los resultados del cálculo D434 (φ (| vi |)) y el valor de 9 bits D435 memorizado en el registro 434 y memoriza el valor integrado de 9 bits obtenido como resultado en el registro 434 de nuevo. Cuando los resultados del cálculo para el valor absoluto D433 (| vi |), determinado a partir de los resultados de la decodificación en curso D411, correspondientes a todos los '1' a través de una fila de la matriz de control están integrados, el registro 434 es objeto de reposición.
Cuando los resultados de la decodificación en curso D411 a través de una fila de la matriz de control se leen, uno a uno, y el valor integrado, de modo que los resultados del cálculo D434 para una fila estén integrados, se memoriza en el registro 434, la señal de control D419 suministrada desde la sección de control 417 cambia desde 0 a 1. A modo de ejemplo, cuando el peso de ponderación de la fila es “9”, la señal de control D419 es “0” en la primera a octava señales de reloj y es “1” en la novena señal de reloj.
Cuando la señal de reloj D419 es “1”, el selector 435 selecciona el valor memorizado en el registro 434, es decir, el valor de 9 bits D435 (∑φ (| vi |) desde i = 1 a i = dc), de modo que φ (| vi |) determinado a partir de los resultados de la decodificación en curso D411 (los resultados de la decodificación en curso v) correspondientes a todos los '1' a través de una fila de la matriz de control están integrados y proporciona el valor como un valor D436 al registro 436, en donde se memoriza. El registro 436 suministra el valor memorizado D436 como un valor de 9 bits D437 al selector 435 y al sumador 437. Cuando la señal de control D419 es “0”, el selector 435 selecciona el valor D437, suministrado desde el registro 436 y proporciona el valor al registro 436, en donde se memoriza de nuevo. Es decir, hasta φ (| vi |) determinado a partir de los resultados de la decodificación en curso D411 (los resultados de la decodificación en curso v) correspondientes a todos los '1' a través de una fila de la matriz de control están integrados, el registro 436 suministra φ (| vi |) integrado en un tiempo anterior al selector 435 y al dispositivo sumador 437.
Por otro lado, la memoria FIFO 438 retarda el resultado del cálculo D434 (φ (| vi |)) objeto de salida por la LUT 432 hasta que un nuevo valor D437 (∑φ (| vi |)) desde i = 1 a i = dc) se proporciona desde el registro 436 y lo suministra como un valor de 5 bits D438 al dispositivo restador 437. El dispositivo restador 437 sustrae el valor D438, suministrado desde la memoria FIFO 438, desde el valor D437 suministrado desde el registro 436 y suministra el resultado de la sustracción como un valor sustraído de 5 bits D439 al LUT 439. Es decir, el dispositivo restador 437, sustrae desde el valor integrado de φ (| vi |) determinado a partir de los resultados de la decodificación en curso D411 (los resultados de la decodificación en curso v) correspondientes a todos los '1' a través de una fila de la matriz de control, los resultados de la decodificación en curso correspondientes a los bordes a determinarse, es decir, φ (| vi |) determinado a partir de los resultados de la decodificación en curso D411 (los resultados de la decodificación en curso v) correspondientes a los '1' predeterminados de matriz de control y suministra el valor sustraído (∑φ (| vi |)) desde (i = 1 a i = dc -1) como un valor sustraído D439 al LUT 439.
El LUT 439 soportar el resultado del cálculo de 5 bits D440 (φ-1 (∑φ (| vi |))) de modo que el cálculo de φ-1 (∑φ (| vi |)) en la ecuación (7) se realice sobre el valor sustraído D439 (∑φ (| vi |) desde i = 1 a i = dc -1).
En paralelo con el procesamiento anterior, el circuito EXOR 440 realiza una multiplicación de bits de signo calculando la función lógica OR exclusiva de un valor de 1 bit D442 memorizado en el registro 441 y el bit de signo D432 y memoriza un resultado de multiplicación de 1 bit D441 en el registro 441 de nuevo. Cuando el bit de signo D432 determinado a partir de los resultados de la decodificación en curso D411, correspondiente a todos los '1' a través de una fila de matriz de control se multiplica, el registro 441 es objeto de reposición.
Cuando los resultados de la multiplicación D441 (!sign (vi)) desde i = 1 a dc), de modo que el bit de signo D432 determinado a partir de los resultados de la decodificación en curso D411 correspondientes a todos los '1', a través de una fila de la matriz de control se memorizan en el registro 441 se multiplica y la señal de control D419 suministrada desde la sección de control 417 cambia desde “0” a “1”.
Cuando la señal de control D419 es “1”, el selector 442 selecciona el valor memorizado en el registro 441, es decir, el valor D442 (!sign (vi) desde i = 1 a i = dc) de modo que el bit de signo D432 determinado a partir de los resultados de la decodificación en curso D411, correspondientes a todos los '1' a través de una fila de la matriz de control se multipliquen y proporciona el valor como un valor de 1 bits D443 al registro 443. El registro 443 suministra el valor memorizado D443 como un valor de 1 bit D444 a un selector 442 y a un circuito lógico EXOR 445. Cuando la señal de control D419 es “0”, el selector 442 selecciona un valor D444 suministrado desde el registro 443 y proporciona, a la salida, el valor al registro 443, en donde se memoriza de nuevo. Es decir, hasta que el bit de signo D432 determinado a partir de los resultados de la decodificación en curso D411 (los resultados de la decodificación en curso v) correspondientes a todos los '1', a través de una fila de la matriz de control, se multiplique, el registro 443 suministra el valor memorizado en el tiempo anterior al selector 442 y al circuito lógico EXOR 445.
Por otro lado, la memoria FIFO 444 retarda el bit de signo D432 hasta que un nuevo valor D444 (!sign (vi) desde i = 1 a i = dc) se suministre desde el registro 443 al circuito lógico EXOR 445 y lo suministre como un valor de 1 bit D445 al circuito lógico EXOR 445. El circuito lógico EXOR 445 divide el valor D444 por el valor D445 calculando la función lógica OR exclusiva del valor D444 suministrado desde el registro 443 y el valor D445 suministrado desde la memoria FIFO 444 y proporciona, a la salida, el resultado dividido de 1 bit como un valor dividido D446. Es decir, el circuito lógico EXOR 445 divide el valor multiplicado del bit de signo D432 (sign (vi)) determinado a partir de los resultados de la decodificación en curso D411 correspondientes a todos los '1', a través de una fila de la matriz de control por el bit de signo D432 (sign (vi)) determinado a partir de los resultados de la decodificación en curso D411 correspondientes a los '1' predeterminados de la matriz de control, y proporciona el valor dividido (!sign (vi)) desde i = 1 a i = dc -1) como el valor dividido D446.
En el calculador 4121 un total de seis bits, en los que los resultados del cálculo de 5 bits D440 procedente de la LUT 439 son los cinco bits de más bajo orden y el valor dividido de 1 bit D446, procedente del circuito lógico EXOR 445, es el bit de más alto orden, se proporciona como los resultados de la decodificación en curso D412 (los resultados de la decodificación en curso uj).
Según se describió anteriormente, en el calculador 4121 se realizan los cálculos de la ecuación (7) y de la ecuación (8) y se determina el resultado de la decodificación en curso uj.
Puesto que el máximo del peso de ponderación de fila de la matriz de control de la Figura 15 es 9, es decir, puesto que el número máximo de los resultados de la decodificación en curso D411 (v) y los resultados de la decodificación en curso D413 (udv) suministrados al calculador 4121 es 9, el calculador 4121 tiene una memoria FIFO 438 para retardar nueve resultados del cálculo D434 (φ (| vi |)) determinado a partir de los nueve resultados de la decodificación en curso D411 y una memoria FIFO 444 para retardar nueve bits de signo D432. Cuando el mensaje de la fila, cuyo peso es menor que 9, ha de calcularse, la magnitud del retardo en la memoria FIFO 438 y la memoria FIFO 444 se reduce al valor del peso de ponderación de la fila.
La Figura 22 es un diagrama de bloques que representa, a modo de ejemplo, la configuración de un calculador 4151 de la sección de cálculo 415.
En la Figura 22, se proporciona una descripción del calculador 4151 y el calculador 4152 al calculador 4155 se configuran también de la misma manera.
En la Figura 22, el calculador 4151 se ilustra suponiendo que cada resultado de la decodificación en curso (uj), obtenido como un resultado del primer cálculo por el calculador 412, junto con el bit de signo, es objeto de cuantización para un total de seis bits. Además, una señal de reloj ck se suministra al calculador 4151 de la Figura 22 y esta señal de reloj ck se suministra a los bloques necesarios. Cada bloque realiza el procesamiento en sincronización con la señal de reloj ck.
Sobre la base de la señal de control D422, suministrada desde la sección de control 417, el calculador 4151 de la Figura 22 realiza un segundo cálculo en conformidad con la ecuación (5) utilizando los datos recibidos D417 (el valor recibido u0i), leídos uno a uno desde la memoria 416 para recepción y los resultados de la decodificación en curso D414 (uj) leídos, uno a uno, desde el circuito de desplazamiento cíclico 414.
Más concretamente, en el calculador 4151 los resultados de la decodificación en curso de 6 bits D414 (los resultados de la decodificación en curso uj) correspondientes a los '1' de cada fila de la matriz de control se leen, uno a uno, desde el circuito de desplazamiento cíclico 414 y los resultados de la decodificación en curso D414 se suministran al dispositivo sumador 471. Además, en el calculador 4151, los datos recibidos de 6 bits D417 se leen, uno a uno, desde la memoria
5 416 para recepción y se suministran al dispositivo sumador 475. Además, una señal de control D422 se suministra al calculador 4151 desde la sección de control 417 y la señal de control D422 se suministra al selector 473.
El dispositivo sumador 471 integra los resultados de la decodificación en curso D414 sumando juntos los resultados de la decodificación en curso D414 (los resultados de la decodificación en curso uj) y el valor integrado de 9 bits D471 memorizado en el registro 472 y memoriza el valor integrado de 9 bits en el registro 472 de nuevo. Cuando se integran los resultados de la decodificación en curso D414 correspondientes a todos los '1' a través de una fila de la matriz de control, el registro 472 es objeto de reposición.
Cuando los resultados de la decodificación en curso D414, a través de una fila de la matriz de control se leen, uno a uno,
15 y el valor tal como los resultados de la decodificación en curso D414 para una sola fila se integran, se memorizan en el registro 472, la señal de control D422 suministrada desde la sección de control 417 cambia desde "0" a "1". A modo de ejemplo, cuando el peso de ponderación de la columna es “5”, la señal de control D422 es "0" en la primera señal de reloj hasta la cuarta señal de reloj y es "1" en la quinta señal de reloj.
Cuando la sección de cálculo D422 es "1", el selector 473 selecciona el valor memorizado en el registro 472, es decir, un valor de 9 bits 471 (∑uj desde j = 1 a dv) de modo que los resultados de la decodificación en curso D414 (los resultados de la decodificación en curso uj) desde todos los bordes a través de una fila de la matriz de control estén integrados y proporciona, a la salida, el valor al registro 474, en donde se memoriza. El registro 474 suministra el valor memorizado D471 como un valor de 9 bits D472 al selector 471 y al dispositivo sumador 475. Cuando la señal de control D422 es "0",
25 el selector 473 selecciona el valor D472, suministrado desde el registro 474 y proporciona, a la salida, el valor al registro 474, en donde se memoriza de nuevo. Es decir, hasta que se integren los resultados de la decodificación en curso D414 (los resultados de la decodificación en curso uj) desde todos los bordes a través de una fila de la matriz de control, el registro 474 suministra el valor anteriormente integrado al selector 473 y al dispositivo sumador 475.
El dispositivo sumador 475 añade juntos el valor de 9 bits D472 y los datos recibidos de 6 bits D417 suministrados desde la memoria 416 para recepción y proporciona, a la salida, el valor de 6 bits obtenido como el resultado de la decodificación en curso D415 (los resultados de la decodificación en curso v).
Según se describió anteriormente, en el calculador 4151, se realiza el cálculo de la ecuación (5) y se determina el 35 resultado de la decodificación en curso v.
Puesto que el máximo de los pesos de ponderación de las columnas de la matriz de control de la Figura 8 es 5, es decir, puesto que el número máximo de los resultados de la decodificación en curso uj suministrados al calculador 4151 es 5, el calculador 4151 añade juntos un máximo de cinco resultados de la decodificación en curso de 6 bits uj. Por lo tanto, la salida del calculador 4151 es un valor de 9 bits.
La Figura 23 es un diagrama de bloques que representa, a modo de ejemplo, la configuración de la memoria 413 para memorizar los resultados de la decodificación en curso de la Figura 18.
45 La memoria 413 para memorizar los resultados de la decodificación en curso incluye conmutadores 501 y 504 y dos memorias RAMs 502 y 503 para memorizar los resultados de la decodificación en curso, que son memorias RAM de puerto único.
Antes de describir, en detalle, cada sección de la memoria 413 para memorizar los resultados de la decodificación en curso, el método de memorización de datos en la memoria RAM 502 y 503 para memorizar los resultados de la decodificación en curso se describirán primero a continuación.
Las memorias RAMs 502 y 503 para memorizar los resultados de la decodificación en curso memorizan los resultados de la decodificación en curso D412 que se obtienen como resultado del primer cálculo y que se suministran a través de
55 un conmutador 501.
Más concretamente, en la primera dirección hasta la novena dirección de la memoria RAM 502 para memorizar resultados de la decodificación en curso, los resultados de la decodificación en curso D412 (D501), correspondientes a los '1' desde la primera fila hasta la quinta fila de la matriz de control H de la Figura 15 se memorizan de tal manera que estén empaquetados más próximos (en una manera en que los "0" sean ignorados) en la dirección horizontal (en la dirección de las columnas) para cada fila.
Más concretamente, cuando la j-ésima fila y la i-ésima columna se indican como (j, i), en la primera dirección de la memoria RAM 502 para memorizar los resultados de la decodificación en curso, se memorizan los datos 65 correspondientes a los '1' de la matriz unitaria 5 x 5 desde (1, 1) a (5, 5), que es un sub-matriz de la matriz de control de la Figura 15. En la segunda dirección, se memorizan los datos correspondientes a los '1' de la matriz de desplazamiento
desde (1, 21) a (5, 25) (una matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza, de forma cíclica, en tres a la derecha), que es una sub-matriz de la matriz de control de la Figura 15. De modo similar, en la tercera dirección hasta la octava dirección, además, se memorizan datos de tal manera que correspondan a la sub-matriz de la matriz de control de la Figura 15. A continuación, en la novena dirección, se memorizan los datos correspondientes a los '1' de la
5 matriz de desplazamiento desde (1, 86) a (5, 90) de la matriz de control (la matriz de desplazamiento en la que los '1' de la primera fila de la matriz unitaria 5 x 5 se sustituyen con "0", y la matriz unitaria se desplaza, de forma cíclica, en uno a la izquierda). En este caso, en la matriz de desplazamiento desde (1, 86) a (5, 90) de la matriz de control de la Figura 15, puesto que los '1' no existen en la primera fila, los datos no se memorizan en la novena dirección.
En la 10ª dirección hasta la 18ª dirección de la memoria RAM 502 para memorizar los resultados de la decodificación en curso, se memorizan los datos correspondientes a los '1' desde la 11ª fila hasta la 15ª fila de la matriz de control de la Figura 15. Es decir, en la 10ª dirección, se memorizan los datos correspondientes a los '1' de la matriz, en donde la matriz unitaria 5 x 5 desde (11, 6) a (15, 10) de la matriz de control se desplaza, de forma cíclica, en tres a la derecha. En la 11ª dirección, los datos correspondientes a los '1' de la matriz de desplazamiento constituyen la matriz suma (la matriz
15 suma, que es la suma de la matriz unitaria 5 x 5 y la matriz de desplazamiento en donde la matriz unitaria 5 x 5 se desplaza, de forma cíclica, en tres a la derecha) desde (11, 11) a (15, 15) de la matriz de control. En la 12ª dirección, se memorizan los datos correspondientes a los '1' de la matriz unitaria que constituye la matriz suma desde (11, 6) a (15, 10) de la matriz de control. En adelante, además, en la 13ª dirección hasta la 18ª dirección, se memorizan datos de tal manera que correspondan a la matriz de control.
Más concretamente, para la sub-matriz cuyo peso de ponderación es 2 o más, se memorizan datos (los resultados de la decodificación en curso de los mensajes correspondientes a los bordes pertenecientes a la matriz unitaria, la matriz cuasi-unitaria o la matriz de desplazamiento), correspondientes a las posiciones de '1' de la matriz unitaria cuyo peso de ponderación es 1, la matriz cuasi-unitaria o la matriz de desplazamiento cuando la sub-matriz se representa en la forma
25 de la suma de dos o más de la matriz unitaria (P x P) cuyo peso de ponderación es 1, la matriz cuasi-unitaria en la que uno o más '1', que son los elementos de la matriz unitaria, se sustituyen con 0 y una matriz de desplazamiento en la que la matriz unitaria o la matriz cuasi-unitaria se desplaza, de forma cíclica, se memorizan en la misma dirección.
De modo similar, en la 19ª dirección hasta la 27ª de la memoria RAM 502 para memorizar la decodificación en curso, se memorizan los datos correspondientes a los '1' desde la 21ª fila hasta la 25ª fila, de tal manera que se correspondan con la matriz de control de la Figura 15. Es decir, el número de palabras de la memoria RAM 502 para memorizar los resultados de la decodificación en curso es 27.
En la primera dirección hasta la novena dirección de una memoria RAM 503 para memorizar los resultados de la
35 decodificación en curso, los resultados de la decodificación en curso D412 (D502) correspondiente a los '1' desde la sexta fila hasta la décima fila de la matriz de control H de la Figura 15 se memorizan de tal manera que estén empaquetados más próximos en la dirección horizontal (en la dirección de las columnas) para cada fila (en una manera en la que se ignoran los '0').
Más concretamente, en la primera dirección de la memoria RAM 503 para memorizar los resultados de la decodificación en curso, se memorizan los datos correspondientes a los '1' de la primera matriz de desplazamiento que constituye la matriz suma desde (6, 1) a (10, 5) (la matriz suma, que es la suma de una primera matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza, de forma cíclica, en uno a la derecha y una segunda matriz de desplazamiento en la que la matriz unitaria se desplaza cíclicamente en dos a la derecha), que es una sub-matriz de la matriz de control. En la
45 segunda dirección, se memorizan los datos correspondientes a los '1' de la segunda matriz de desplazamiento que constituye la matriz suma desde (6, 1) a (10, 5), que es una sub-matriz de la matriz de control. En adelante, además, en la tercera dirección hasta la novena dirección, se memorizan datos de tal manera que correspondan a la sub-matriz de la matriz de control.
De modo similar, en la 10ª dirección hasta la 18ª dirección de la memoria RAM 503 para memorizar la decodificación en curso, se memorizan datos correspondientes a los '1' desde la 16ª fila hasta la 20ª fila de la matriz de control de la Figura 15 de tal manera que se correspondan con la matriz de control de la Figura 15. En la 19ª dirección hasta la 27ª dirección, se memorizan datos correspondientes a los '1' desde la 26ª fila hasta la 30ª fila de la matriz de control de la Figura 15 de tal manera que se correspondan con la matriz de control de la Figura 15. Es decir, el número de palabras de la memoria
55 RAM 503 para memorizar los resultados de la decodificación en curso es 27.
En la manera anteriormente descrita, el número de palabras de las memorias RAMs 502 y 503, para memorizar los resultados de la decodificación en curso, es 27. Es decir, el número de palabras se hace un valor tal como 9, que es el peso de ponderación de la fila de la matriz de control, se multiplica por 30, el número de filas y el resultado multiplicado (el número de '1' de la matriz de control) se divide por 5, el número de resultados de la decodificación en curso D501, que se leen simultáneamente y además, el resultado de divide por 2, el número de memorias RAMs 502 para memorizar los resultados de la decodificación en curso poseídos por la memoria 413 para memorizar los resultados de la decodificación en curso.
65 A continuación se proporcionará una descripción, en detalle, de la operación de cada sección de la memoria 413 para memorizar los resultados de la decodificación en curso de la Figura 23.
Cuando se realiza el primer cálculo por la sección de cálculo 412, los resultados de la decodificación en curso D412 (uj), obtenidos como un resultado del primer cálculo, se suministran desde la sección de cálculo 412 a la memoria 413 para memorizar los resultados de la decodificación en curso y los resultados de la decodificación en curso D412 son objeto de escritura en una dirección predeterminada de una de las memorias RAM 502 para memorizar los resultados de la decodificación en curso y la memoria RAM 503 para memorizar los resultados de la decodificación en curso. Al mismo tiempo, los resultados de la decodificación en curso D412 (uj), obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, es objeto de lectura desde la otra memoria RAM y se proporcionan a la sección de cálculo 412. Por otro lado, cuando se realiza el segundo cálculo por la sección de cálculo 415, la memoria 413 para memorizar los resultados de la decodificación en curso no realiza la escritura en la memoria RAM 502 para memorizar los resultados de la decodificación en curso ni en la memoria RAM 503 para memorizar los redes, efectúa la lectura de los resultados de la decodificación en curso desde una dirección predeterminada de una de las memorias RAMs y los suministra al circuito de desplazamiento cíclico 414.
Los cinco resultados de la decodificación en curso D412 se suministran desde la sección de control 412 al conmutador 501 y además, una señal de control D4201 que indica la selección de una de las memorias RAM 502 para memorizar los resultados de la decodificación en curso y la memoria RAM 503 para memorizar los resultados de la decodificación en curso puesto que una memoria para la escritura de los resultados de la decodificación en curso D412 se suministra al conmutador 501 desde la sección de control 417. Sobre la base de la señal de control D4201, el conmutador 501 selecciona una de las memorias RAM 502 para memorizar los resultados de la decodificación en curso y la memoria RAM 503 para memorizar los resultados de la decodificación en curso y suministra los cinco resultados de la decodificación en curso D412 a la memoria RAM seleccionada.
Los cinco resultados de la decodificación en curso D412 se suministran como resultados de la decodificación en curso D501 a la memoria RAM 502 para memorizar los resultados de la decodificación en curso 501 y además, una señal de control D4202, que indica la dirección, se le suministra desde la sección de control 417. La memoria RAM 502 para memorizar los resultados de la decodificación en curso efectúa la lectura de los cinco resultados de la decodificación en curso D501 obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, que están ya memorizados en la dirección indicada por la señal de control D4022 y los suministra como resultados de la decodificación en curso D503 al conmutador 504.
Además, la memoria RAM 502 para memorizar los resultados de la decodificación en curso memoriza (escribe) los cinco resultados de la decodificación en curso D501, suministrados desde el conmutador 501, en la dirección indicada por la señal de control D4022.
Los cinco resultados de la decodificación en curso D412 se suministran como resultados de la decodificación en curso D502 a la memoria RAM 503 para memorizar los resultados de la decodificación en curso desde el conmutador 501 y además, una señal de control D4203, que indica la dirección, se suministra a la memoria RAM 503 desde la sección de control 417. La memoria RAM 503 para memorizar los resultados de la decodificación en curso efectúa la lectura de los cinco resultados de la decodificación en curso D502 obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, que han sido ya memorizados en la dirección indicada por la señal de control D4203 y los suministra como resultados de la decodificación en curso D504 al conmutador 504. Además, la memoria RAM 502 para memorizar los resultados de la decodificación en curso memoriza (escribe) los cinco resultados de la decodificación en curso D502 suministrados desde el conmutador 501 en la dirección indicada por la señal de control D4203.
Los resultados de la decodificación en curso D503 se suministran al conmutador 504 desde la memoria RAM 502 para memorizar los resultados de la decodificación en curso o los resultados de la decodificación en curso D504 se suministran al conmutador 504 desde la memoria RAM 503 para memorizar los resultados de la decodificación en curso. Además, una señal de control D4204, que indica la selección de una de las memorias RAM 502 para memorizar los resultados de la decodificación en curso y la memoria RAM 503 para memorizar los resultados de la decodificación en curso, se suministran al conmutador 504 desde la sección de control 417. Sobre la base de la señal de control D4201, el conmutador 504 selecciona una de las memorias RAM 502 para memorizar los resultados de la decodificación en curso y la memoria RAM 503 para memorizar los resultados de la decodificación en curso y suministra los cinco resultados de la decodificación en curso suministrados desde la memoria RAM seleccionada, como los cinco resultados de la decodificación en curso D413, a la sección de cálculo 412 y al circuito de desplazamiento cíclico 414.
La Figura 24 es un diagrama de temporización que ilustra las operaciones de lectura y escritura de la memoria RAM 502 para memorizar los resultados de la decodificación en curso y la RAM 503 para memorizar los resultados de la decodificación en curso de la memoria 413 para memorizar los resultados de la decodificación en curso.
En la Figura 24, el eje horizontal indica el tiempo (t).
En la memoria 413 para memorizar los resultados de la decodificación en curso, cuando ha de realizarse el primer cálculo por la sección de cálculo 412, sobre la base de la señal de control D4202, la memoria RAM 502 para memorizar los resultados de la decodificación en curso efectúa la lectura, nueve veces, de los resultados de la decodificación en curso D501, correspondientes a los '1' desde la primera fila hasta la quinta fila de la matriz de control, que se memorizan
en la misma dirección, de entre los resultados de la decodificación en curso D501 obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, que están ya memorizados, en unidades de cinco resultados, y los suministra a la sección de cálculo 412 a través del conmutador 504. Es decir, puesto que el peso de ponderación de la fila de la matriz de control H de la Figura 15 es 9, existen nueve resultados de la decodificación en curso correspondientes a los '1' de cada fila de la matriz de control H y la memoria RAM 502 para memorizar los resultados de la decodificación en curso efectúa la lectura, nueve veces, de los cinco resultados de la decodificación en curso D501 correspondientes a los '1' desde la primera fila a la quinta fila en unidades de cinco resultados.
A continuación, sobre la base de la señal de control D4203, la memoria RAM 503 para memorizar los resultados de la decodificación en curso lee continuamente nueve veces, los resultados de la decodificación en curso D502 correspondientes a los '1' desde la sexta fila a la 10ª fila, que se memorizan en la misma dirección, desde entre los resultados de la decodificación en curso D502 obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, que están ya memorizados, en unidades de cinco resultados y los suministra a la sección de cálculo 412 a través del conmutador 504. Al mismo tiempo, los cinco resultados de la decodificación en curso D412, correspondientes a los '1' desde la primera fila a la quinta fila de la matriz de control, que se obtienen como un resultado del primer cálculo que se está realizando actualmente por la sección de cálculo 412, se suministran como los resultados de la decodificación en curso D501 a la memoria RAM 502 para memorizar los resultados de la decodificación en curso a través del conmutador 501. Sobre la base de la señal de control D4202, la memoria RAM 502 para memorizar los resultados de la decodificación en curso memoriza continuamente, nueve veces, los resultados de la decodificación en curso D501 en la dirección en la que están memorizados, con anterioridad, los resultados de la decodificación en curso leídos D503.
En adelante, sobre la base de la señal de control D4202, la memoria RAM 502 para memorizar los resultados de la decodificación en curso, efectúa una lectura continua, nueve veces, de los resultados de la decodificación en curso D501 correspondientes a los '1' desde la 11ª fila hasta la 15ª fila de la matriz de control, que se memorizan en la misma dirección, desde entre los resultados de la decodificación en curso ya memorizados D501, obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, en unidades de cinco resultados y los suministra a la sección de cálculo 412 a través del conmutador 504. Al mismo tiempo, cinco resultados de la decodificación en curso D412, correspondientes a los '1' desde la sexta fila hasta la 10ª fila de la matriz de control, que se obtienen un resultado del primer cálculo que se está realizando actualmente por la sección de cálculo 412, se suministran como los resultados de la decodificación en curso D502 a la memoria RAM 503 para memorizar los resultados de la decodificación en curso, a través del conmutador 501. Sobre la base de la señal de control D4203, la memoria RAM 503 para memorizar los resultados de la decodificación en curso, memoriza continuamente, nueve veces, los resultados de la decodificación en curso D502 en la dirección en la que están ya memorizados los resultados de la decodificación en curso ya leídos D504.
En adelante, de modo similar, hasta que los resultados de la decodificación en curso, correspondientes a todos los '1' de la matriz de control, que se obtienen como un resultado del primer cálculo por la sección de cálculo 412 se memoricen en la memoria RAM 502 para memorizar los resultados de la decodificación en curso o en la memoria RAM 503 para memorizar los resultados de la decodificación en curso, la memoria RAM 502 para memorizar los resultados de la decodificación en curso y la memoria RAM 503 para memorizar los resultados de la decodificación en curso realizan, de forma alternada, la lectura o escritura en unidades de nueve veces.
En la memoria 413 para memorizar los resultados de la decodificación en curso, cuando se realiza el segundo cálculo por la sección de cálculo 415, sobre la base de la señal de control D4202, los resultados de la decodificación en curso ya memorizados D503, que se obtienen como un resultado del primer cálculo, desde la memoria RAM 502 para memorizar los resultados de la decodificación en curso, o sobre la base de la señal de control D4203, los resultados de la decodificación en curso ya memorizados D504, obtenidos como un resultado del primer cálculo, son objeto de lectura desde la memoria RAM 503 para memorizar los resultados de la decodificación en curso y los resultados de la decodificación en curso ya leídos se suministran al circuito de desplazamiento cíclico 414 a través del conmutador 504.
La Figura 25 es un diagrama de flujo que ilustra el proceso de decodificación del aparato de decodificación 400 de la Figura 18. Este proceso se inicia, a modo de ejemplo, cuando los datos recibidos, que se van a decodificar, se memorizan en la memoria 416 para recepción.
En la etapa S50, el circuito de desplazamiento cíclico 414 desplaza, de forma cíclica, los cinco resultados de la decodificación en curso D413 a memorizarse en la etapa S56 (a describirse más adelante), que se suministran desde la memoria 413 para memorizar los resultados de la decodificación en curso y los suministra a la sección de cálculo 415.
Más concretamente, cinco resultados de la decodificación en curso D413 se suministran al circuito de desplazamiento cíclico 414 desde la memoria 413 para memorizar los resultados de la decodificación en curso y además, una señal de control D421, que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponden a los resultados de la decodificación en curso D413, se disponen como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control es objeto de desplazamiento cíclico, se suministra al circuito de desplazamiento cíclico 414 desde la sección de control 417. Sobre la base de la señal de control D421, el circuito de desplazamiento cíclico 414 desplaza cíclicamente (redispone) los cinco resultados de la
decodificación en curso D413 y suministra los resultados de la decodificación en curso como los resultados de la decodificación en curso D414 a la sección de cálculo 415.
Cuando el primer cálculo no se ha realizado todavía sobre los datos recibidos D417, suministrados a la memoria 416 para recepción y los resultados de la decodificación en curso D413 no están memorizados en la memoria 413 para memorizar los resultados de la decodificación en curso, la sección de cálculo 415 establece los resultados de la decodificación en curso uj a un valor inicial.
En la etapa S51, la sección de cálculo 415 realiza el segundo cálculo y suministra los resultados de la decodificación en curso D415, que son los resultados del cálculo, a la memoria 410 para memorizar los resultados de la decodificación en curso.
Más concretamente, en la etapa S50, los cinco resultados de la decodificación en curso D414 se suministran a la sección de cálculo 415 desde el circuito de desplazamiento cíclico 414 y además, cinco datos recibidos D417 se suministran a la sección de cálculo 415 desde la memoria 416 para los datos recibidos. Los resultados de la decodificación en curso D415 y los datos recibidos D417 se suministran individualmente a cada uno de los calculadores 4151 a 4155 de la sección de cálculo 415. Además, una señal de control D422 se suministra a la sección de cálculo 415 desde la sección de control 417 y la señal de control D422 se suministra al calculador 4151 a 4155.
Sobre la base de la señal de control D422, los calculadores 4151 a 4155 realizan, cada uno, un cálculo en conformidad con la ecuación (5) utilizando los resultados de la decodificación en curso D414 y los datos recibidos D417 y suministran los resultados de la decodificación en curso D415 (v) correspondientes a la columna de la matriz de control, que se obtienen como un resultado del cálculo, a la memoria 410 para memorizar los resultados de la decodificación en curso.
Después del procesamiento de la etapa S51, el proceso prosigue con la etapa S52, en donde la memoria 410 para memorizar los resultados de la decodificación en curso memoriza los resultados de la decodificación en curso D415 suministrados desde la sección de cálculo 415 en la etapa S51 en la misma dirección y a continuación, el proceso prosigue con la etapa S53.
En la etapa S53, la sección de control 417 determina si se han calculado, o no, todos los resultados de la decodificación en curso D415 correspondientes a la columna de la matriz de control por la sección de cálculo 415. Cuando se determina que no se han calculado todos los resultados de la decodificación en curso D415, el proceso retorna a la etapa S50 y se realiza de nuevo el procesamiento anteriormente descrito.
Por otro lado, cuando la sección de control 417 determina, en la etapa S53, que la totalidad de los resultados de la decodificación en curso D415, correspondientes a la columna de la matriz de control, han sido calculados por la sección de cálculo 415, el proceso prosigue con la etapa S54, en donde el circuito de desplazamiento cíclico 411 efectúa el desplazamiento cíclico de los resultados de la decodificación en curso D410 (v) suministrados desde la memoria 410 para memorizar los resultados de la decodificación en curso.
Más concretamente, cinco resultados de la decodificación en curso D410 se suministran al circuito de desplazamiento cíclico 411 desde la memoria 410 para memorizar los resultados de la decodificación en curso. Además, una señal de control D418 que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponden a los resultados de la decodificación en curso D410, están dispuestos como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control, es objeto de desplazamiento cíclico, se suministra al circuito de desplazamiento cíclico 411 desde la sección de control 417. Sobre la base de la señal de control D418, el circuito de desplazamiento cíclico 411 efectúa el desplazamiento cíclico (redispone) los cinco resultados de la decodificación en curso D410 y los suministra, como los resultados de la decodificación en curso D411 a la sección de cálculo 412.
Después del procesamiento de la etapa S54, el proceso prosigue con la etapa S55, en donde la sección de cálculo 412 realiza el primer cálculo y suministra los resultados de la decodificación en curso D412, que son los resultados del cálculo, al circuito de desplazamiento cíclico 414.
Más concretamente, los cinco resultados de la decodificación en curso D411 (v) se suministran a la sección de cálculo 412 desde el circuito de desplazamiento cíclico 411 en la etapa S54. Además, los cinco resultados de la decodificación en curso D412 (D413) (uj) obtenidos como un resultado del primer cálculo por la sección de cálculo 412 en el tiempo anterior, que están ya memorizados en la etapa S56 (a describirse más adelante), se suministran a la sección de cálculo
412. Los resultados de la decodificación en curso D411 y los resultados de la decodificación en curso D413 se suministran individualmente a cada uno de los calculadores 4121 a 4125 de la sección de cálculo 412. Además, una señal de control D419 se suministra a la sección de cálculo 412 desde la sección de control 417 y la señal de control D419 se suministra al calculador 4121 a 4125.
Sobre la base de la señal de control D419, los calculadores 4121 a 4125, realizan, cada uno, cálculos en conformidad con la ecuación (7) y la ecuación (8) utilizando los resultados de la decodificación en curso D411 y los resultados de la
decodificación en curso D413 y suministran los resultados de la decodificación en curso D412 (uj), obtenido como un resultado del cálculo a la memoria 413 para memorizar los resultados de la decodificación en curso.
Después del procesamiento de la etapa S55, el proceso prosigue con la etapa S56, en donde la memoria 413 para memorizar los resultados de la decodificación en curso memoriza, en la misma dirección, los cinco resultados de la decodificación en curso D412 suministrados desde la sección de cálculo 412 en la etapa S55 y el proceso prosigue, a continuación, con la etapa S57.
En la etapa S57, la sección de control 417 determina si se han calculado, o no, por la sección de cálculo 412, los resultados de la decodificación en curso D412 correspondientes a todos los '1' de la matriz de control. Cuando se determina que todos los '1' de la matriz de control no han sido calculados, el proceso retorna a la etapa S54 y se realiza, de nuevo, el procesamiento anteriormente descrito.
Por el contrario, cuando la sección de control 417 determina, en la etapa S57, que los resultados de la decodificación en curso D412 correspondientes a todos los '1', han sido calculados por la sección de cálculo 412, se concluye el procesamiento.
El aparato de decodificación 400 realiza, de forma repetida, el proceso de decodificación de la Figura 25 para el número de decodificaciones y el mensaje D415, obtenido como un resultado del segundo cálculo final, se proporciona como los resultados decodificados finales.
En la descripción anterior, aunque la memoria 413 para memorizar los resultados de la decodificación en curso, está constituida por dos memorias RAMs de puerto único, puede formarse a partir de tres o más memorias RAMs si las operaciones de lectura y escritura no ocurren simultáneamente desde y a una sola memoria RAM. Cuando la anchura de bit física de la memoria RAM no es suficiente, al proporcionar la misma señal de control utilizando una pluralidad de memorias RAM, éstas pueden suponerse, desde el punto de vista lógico, como una sola memoria RAM.
Para las partes en las que faltan los datos de bordes (mensajes correspondientes a los bordes), durante el almacenamiento en la memoria (cuando los datos se memorizan en la memoria 410 y 413 para memorizar los resultados de la decodificación en curso), no se memoriza ningún mensaje y durante el cálculo (durante el primer cálculo en la sección de cálculo 412 y durante el segundo cálculo en la sección de cálculo 415), no se realiza ningún cálculo.
La Figura 26 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del aparato de decodificación para decodificar códigos LDPC representados por la matriz de control de la Figura 15, que no es una forma de realización de la presente invención.
En el aparato de decodificación 600 de la Figura 26, la memoria de almacenamiento de datos de borde 316 de las Figuras 16A y 16C se forma como una memoria 613 para memorizar los resultados de la decodificación en curso, que tienen una capacidad menor que la que posee la memoria de almacenamiento de datos de bordes 316.
El aparato de decodificación 600 incluye una memoria 610 para memorizar los resultados de la decodificación en curso, un circuito de desplazamiento cíclico 611, una sección de cálculo 612 constituida por cinco calculadores 6121 a 6125, una memoria 613 para memorizar los resultados de la decodificación en curso, un circuito de desplazamiento cíclico 614, una sección de cálculo 615 constituida por cinco calculadores 6151 a 6155, una memoria 616 para recepción y una sección de control 617.
Haciendo referencia a la Figura 27 a la Figura 30, se proporciona una descripción de la relación entre el calculador 6121 al calculador 6125 de la sección de cálculo 612 de la Figura 26, el calculador 6151 al calculador 6155 de la sección de cálculo 615 de la Figura 30, el calculador de nodos de control 101 de la Figura 10 y el calculador de nodos de variables 103 de la Figura 11.
La Figura 27 y la Figura 28 son las mismas que la Figura 10 anteriormente descrita que ilustra el calculador de nodos de control 101 y la Figura 11, anteriormente descrita, que ilustra el calculador de nodos de variables 103, respectivamente. La Figura 29 ilustra, a modo de ejemplo, la configuración de un calculador 612k (k = 1, 2, …, 5). La Figura 30 ilustra, a modo de ejemplo, la configuración de un calculador 615k (k = 1, 2, …, 5).
En el aparato de decodificación 600 de la Figura 26, en cambio, el calculador 612k realiza el cálculo de nodos de control y la sección de cálculo 615k realiza el cálculo de nodos de variables, el calculador 612k realiza parte del cálculo de los nodos de control y el calculador 615k realiza parte de los otros del cálculo de nodos de control y parte del cálculo de los nodos de variables.
Más concretamente, el calculador 612k de la Figura 29 está formado por los bloques D’ y E’. el bloque D’ está configurado de la misma manera que el bloque D para integrar valores de modo que los cálculos de φ se realicen sobre los valores absolutos de los mensajes vi correspondientes a todos los bordes de cada columna de la matriz de control, siendo el bloque D una parte del calculador de nodos de control 101 de la Figura 27. El bloque E’ está configurado de la misma manera que el bloque E para multiplicar los bits de signo de los mensajes vi correspondientes a todos los bordes de cada columna de la matriz de control.
Por otro lado, el calculador 615k de la Figura 30 está formado por los bloques F’, G’ y H’. El bloque F’ está configurado de
5 la misma manera que el bloque F para dividir el valor multiplicados de los bits de signo de los mensajes vi correspondientes a todos los bordes de cada columna de la matriz de control por el bit de signo del mensaje vi correspondiente al borde a determinarse y para realizar el cálculo de φ-1 sobre el valor obtenido efectuando la sustracción del valor de modo que se realice el cálculo de φ sobre el valor absoluto del mensaje vi correspondiente al que se va a determinar a partir del valor integrado de los valores, de modo que el cálculo φ se realice sobre los valores absolutos del
10 mensaje vi correspondientes a todos los bordes de cada columna de la matriz de control, siendo el bloque F’ otra parte del calculador de nodos de control 101 de la Figura 19. El bloque G’ está configurado de la misma manera que el bloque G para realizar el cálculo de φ sobre el valor absoluto del mensaje vi. El bloque H’ está configurado de la misma manera que el bloque H para realizar el cálculo de nodos de variables del calculador de nodos de variables 103 de la Figura 20.
15 El calculador 612k de la Figura 29 suministra los resultados del cálculo por el bloque A y el bloque B, es decir, los resultados de la decodificación en curso w, de modo que se realicen algunos de los cálculos de los nodos de control, a la memoria 613 para memorizar lo resultados de la decodificación en curso. El calculador 615k de la Figura 30 suministra los resultados de la decodificación en curso vi’, de modo que algunos de los otros del cálculo de nodos de control y del cálculo de nodos de variables se realicen para la memoria 610 para memorizar los resultados de la decodificación en
20 curso.
Por lo tanto, es posible para el aparato de decodificación 600 de la Figura 26 realizar el cálculo de nodos de control y el cálculo de nodos de variables realizando, de forma alternada, el cálculo del calculador 612k y el cálculo del calculador 615k con el fin de realizar la decodificación.
25 En el calculador 615k de la Figura 30, utilizando los resultados de la decodificación en curso vi’, correspondientes al borde que se va a determinar, que se memorizan en la memoria 610 para almacenar los resultados de la decodificación en curso, el bloque C efectúa la sustracción de los resultados de la decodificación en curso vi’ correspondientes al borde que se va a determinar, a partir del valor absoluto de los resultados de la decodificación en curso w obtenido como un
30 resultado del cálculo del calculador 612k y multiplica el bit de signo de los resultados de la decodificación en curso w por el bit de signo de los resultados de la decodificación en curso vi’ correspondientes al borde que se va a determinar. Por lo tanto, la memoria 127 y la memoria FIFO 133 de la Figura 27 no son requeridas.
A continuación, utilizando ecuaciones, se proporciona una descripción de los cálculos realizados por el calculador 6121 al
35 calculador 6125 de la sección de cálculo 612 y los cálculos realizados por el calculador 6151 al calculador 6155 de la sección de cálculo 615.
La sección de cálculo 612 realiza un primer cálculo en conformidad con la ecuación (9) y suministra los resultados de la decodificación en curso w, que son los resultados del primer cálculo, a la memoria 613 para memorizar los resultados de
40 la decodificación en curso, en donde se memorizan. La sección de cálculo 615 realiza la ecuación (1) antes descrita y el segundo cálculo en conformidad con las ecuaciones (10) y (11) y suministra los resultados de la decodificación en curso vi’, que son los resultados del segundo cálculo, a la memoria 610 para memorizar los resultados de la decodificación en curso, en donde se memorizan.
Más concretamente, los resultados de la decodificación en curso w obtenidos como un resultado del primer cálculo, en conformidad con la ecuación (9), son tales que la suma total de los valores absolutos | vi’ | de los resultados de la decodificación en curso vi’ del cálculo de nodos de control, correspondientes a todos los '1' de la j-ésima fila del a matriz 50 de control H, que se obtienen como un resultado del segundo cálculo en conformidad con la ecuación (1), la ecuación
(10) y la ecuación (11) y el bit de signo sign | vi’ | se multiplican juntos. Por lo tanto, según se ilustra en la ecuación (10), uj, obtenido por el cálculo de nodos de control en conformidad con la ecuación (7) se puede expresar utilizando un valor tal como el valor absoluto | vi’ | de los resultados de la decodificación en curso vi’, correspondientes al borde que se va a determinar, desde entre (una pluralidad de) resultados de la decodificación en curso vi’ correspondientes a los '1' (bordes)
de cada columna, de la j-ésima fila de la matriz de control H, es objeto de sustracción desde los valores absolutos | w | de los resultados de la decodificación en curso w, que se obtienen como un resultado del primer cálculo en conformidad con la ecuación (9).
En el aparato de decodificación 600, el primer cálculo en conformidad con la ecuación (9) por la sección de cálculo 612 y el segundo cálculo en conformidad con la ecuación (1), la ecuación (10) y la ecuación (11) se realizan de forma alternada y la sección de cálculo 615 realiza un cálculo en conformidad con la ecuación (5) utilizando los resultados del primer cálculo final y proporciona los resultados del cálculo como los resultados decodificados, con lo que se realizan decodificaciones iterativas de códigos LDPC.
Más concretamente, en el apéndice de decodificación 600, la sección de cálculo 612 realiza el primer cálculo utilizando los resultados de la decodificación en curso vi’ correspondientes a todos los '1' de la j-ésima fila del a matriz de control H, que son los resultados del segundo cálculo por la sección de cálculo 615 y memoriza los resultados de la decodificación en curso w correspondientes a cada fila de la matriz de control, que se obtienen como un resultado del cálculo, en la memoria 613 para memorizar los resultados de la decodificación en curso. Por lo tanto, la capacidad de la memoria 613 para memorizar los resultados de la decodificación en curso se hace un valor tal que el número de filas de la matriz de control, que es más pequeño que el número de "1" de la matriz de control y el número de bit de cuantización de los resultados de la decodificación en curso w se multiplican juntos. La sección de cálculo 615 realiza el segundo cálculo utilizando los resultados de la decodificación en curso w correspondientes a cada fila de la i-ésima columna de la matriz de control H, que son los resultados del primer cálculo por la sección de cálculo 612 y el valor recibido u0i y memoriza los resultados de la decodificación en curso vi’ del cálculo de nodos de control correspondientes a '1' (bordes) de la i-ésima columna de la matriz de control, que se obtienen como un resultado del cálculo, en la memoria 610 para memorizar los resultados de la decodificación en curso. Por lo tanto, la capacidad necesaria para la memoria 610 para memorizar los resultados de la decodificación en curso se hace un valor tal como el número de '1' de la matriz de control y el número de bits de cuantización de los resultados de la decodificación en curso vi’ se multiplican juntos, de forma similar a la memoria de almacenamiento de datos de bordes 311 de las Figuras 16A y 16B para memorizar los resultados de la decodificación en curso del cálculo de nodos de variables.
Por lo tanto, en el método de decodificación 600, cuando se compara con la memoria de almacenamiento de datos de bordes 311 de las Figuras 16A y 16B, la capacidad de memoria de la memoria 610 para memorizar los resultados de la decodificación en curso se puede reducir. Esto hace posible la reducción de la escala circuital del aparato de decodificación 600.
La operación de cada sección del aparato de decodificación 600 de la Figura 26 se describe a continuación, en detalle.
Sobre la base de una señal de control D618, la memoria 610 para memorizar los resultados de la decodificación en curso memoriza colectivamente los cinco resultados de la decodificación en curso D615 suministrados desde la sección de cálculo 615 y, al mismo tiempo, efectúa la lectura de los cinco resultados de la decodificación en curso ya memorizados D615 y los suministra como los resultados de la decodificación en curso D610 al circuito de desplazamiento cíclico 611 y a la sección de cálculo 615. Es decir, la memoria 610 para memorizar los resultados de la decodificación en curso realiza simultáneamente la lectura de los resultados de la decodificación en curso D610 a suministrarse al circuito de desplazamiento cíclico 611 y la escritura de los resultados de la decodificación en curso D615 suministrados desde la sección de cálculo 615.
En la memoria 610 para memorizar los resultados de la decodificación en curso, los resultados de la decodificación en curso vi’ (los segundos resultados de la decodificación en curso) correspondientes a los '1' (bordes) de la matriz de control, que se calculan por el segundo cálculo por la sección de cálculo 615, son memorizados. Por lo tanto, la cantidad de datos memorizados en la memoria 610 para memorizar los resultados de la decodificación en curso, es decir, la capacidad de almacenamiento requerido para la memoria 610 para memorizar los resultados de la decodificación en curso, se hace el valor multiplicado del número de bits de cuantización de los resultados de la decodificación en curso y el número de '1' (el número total de los bordes).
La memoria 610 para memorizar los resultados de la decodificación en curso incluye, a modo de ejemplo, dos memorias RAMs de puerto uno capaces de efectuar, simultáneamente, las operaciones de lectura y escritura de cinco resultados de la decodificación en curso. Los cinco resultados de la decodificación en curso D615 se suministran a la memoria 610 para memorizar los resultados de la decodificación en curso desde la sección de cálculo 615 y además, una señal de control D618, para controlar las operaciones de lectura y escritura de los resultados de la decodificación en curso D615, se suministra a la memoria 610 desde la sección de control 617.
Cinco resultados de la decodificación en curso D610 se suministran al circuito de desplazamiento cíclico 611 desde la memoria 610 para memorizar los resultados de la decodificación en curso. Además, una señal de control D619 que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponde a los resultados de la decodificación en curso D610, están dispuestos como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control se desplaza de forma cíclica, se suministra al circuito de desplazamiento cíclico 611 desde la sección de control 617. Sobre la base de la señal de control D619, el circuito de
desplazamiento cíclico 611 realiza un desplazamiento cíclico de redisposición de los cinco resultados decodificados D610 y suministra los resultados como resultados de la decodificación en curso D611 a la sección de cálculo 612.
La sección de cálculo 612 incluye cinco calculadores 6121 a 6125. Los cinco resultados de la decodificación en curso D611 (segundos resultados de la decodificación en curso) (vi’) se suministran a la sección de cálculo 612 desde el circuito de desplazamiento cíclico 611 y los cinco resultados de la decodificación en curso D611 (los primeros resultados de la decodificación en curso) (w) se suministran a los calculadores 6121 a 6125, respectivamente. Una señal de control D620 se suministra a la sección de cálculo 612 desde la sección de control 617 y la señal de control D620 se suministra a los calculadores 6121 a 6125. La señal de control D620 es una señal común a los cinco calculadores 6121 a 6125.
Los calculadores 6121 a 6125 realizan, cada uno, el primer cálculo utilizando los resultados de la decodificación en curso D611 en conformidad con la ecuación (9) con el fin de determinar los resultados de la decodificación en curso D612 (w). La sección de cálculo 612 suministra los cinco resultados de la decodificación en curso D612, que se obtienen como un resultado de los cálculos por los calculadores 6121 a 6125, a la memoria 613 para memorizar los resultados de la decodificación en curso.
Los cinco resultados de la decodificación en curso D612, correspondientes a la fila de la matriz de control, que son los resultados del primer cálculo por la sección de cálculo 612, se suministran a la memoria 613 para memorizar los resultados de la decodificación en curso desde la sección de cálculo 612. La memoria 613 para memorizar los resultados de la decodificación en curso memoriza los cinco resultados de la decodificación en curso D612 suministrados desde la sección de cálculo 612 en secuencia, comenzando desde la primera dirección.
Más concretamente, en la primera dirección de la memoria 613 para memorizar los resultados de la decodificación en curso, los resultados de la decodificación en curso w desde la primera fila hasta la quinta fila, desde entre los resultados de la decodificación en curso correspondientes a la fila de la matriz de control son objeto de memorización. De modo similar, en la segunda dirección, los resultados de la decodificación en curso w desde la sexta fila hasta la 10ª fila se memorizan y en la tercera dirección, se memorizan los resultados de la decodificación en curso w desde la 11ª hasta la 15ª. En adelante, de modo similar, los resultados de la decodificación en curso w desde la 16ª fila hasta la 30ª fila se memorizan en la cuarta dirección hasta la sexta dirección en unidades de cinco resultados y un total de 60 resultados de la decodificación en curso w se memorizan en la memoria 613 para memorizar los resultados de la decodificación en curso. Por lo tanto, el número de palabras de la memoria 610 para memorizar los resultados de la decodificación en curso se hace 6 de modo que 30, el número de filas de la matriz de control H de la Figura 15 se divide por 5, el número de resultados de la decodificación en curso, que son objeto de lectura y escritura simultáneas.
La memoria 613 para memorizar los resultados de la decodificación en curso efectúa una lectura simultánea de cinco resultados de la decodificación en curso w, que son los "1" en la columna de la matriz de control H, a los que correspondes los resultados de la decodificación en curso vi’ a determinarse por la sección de cálculo 615 a partir de los cinco resultados de la decodificación en curso ya memorizados D613 y los suministra como resultados de la decodificación en curso D613 al circuito de desplazamiento cíclico 614.
La memoria 613 para memorizar los resultados de la decodificación en curso incluye, a modo de ejemplo, una memoria RAM de puerto único capaz de la lectura y escritura simultáneas de cinco resultados de la decodificación en curso. Puesto que los resultados de la decodificación en curso w correspondientes a la fila, que se calculan por el primer cálculo de la sección de cálculo 612, se memorizan en la memoria 613 para memorizar los resultados de la decodificación en curso, la cantidad de datos memorizados en la memoria 613 para memorizar los resultados de la decodificación en curso, es decir, la capacidad de almacenamiento requerida para la memoria 613 para memorizar los resultados de la decodificación en curso, se hace el valor multiplicado del número de bits de cuantización de los resultados de la decodificación en curso y el número de filas de la matriz de control H.
Los cinco resultados de la decodificación en curso D613 (los resultados de la decodificación en curso w) se suministran al circuito de desplazamiento cíclico 614 desde la memoria 613 para memorizar los resultados de la decodificación en curso. Además, una señal de control D621, que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponde a los resultados de la decodificación en curso D613, están dispuestos como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base de la matriz de control se desplaza de forma cíclica, se suministran al circuito de desplazamiento cíclico 614 desde la sección de control 617. Sobre la base de la señal de control D621, el circuito de desplazamiento cíclico 614 realiza un desplazamiento cíclico de redisposición de los cinco resultados de la decodificación en curso D613 y suministra los resultados como los resultados de la decodificación en curso D614 a la sección de cálculo 615.
La sección de cálculo 615 incluye cinco calculadores 6151 a 6155. Los cinco resultados de la decodificación en curso D614 (w) se suministran a la sección de cálculo de nodos de variables 615 desde el circuito de desplazamiento cíclico 614 y además, cinco resultados de la decodificación en curso D610 (vi’) se suministran a la sección de cálculo de nodos de variables 615 desde la memoria 610 para memorizar los resultados de la decodificación en curso. Los resultados de la decodificación en curso D614 y los resultados de la decodificación en curso D610 se suministran a cada uno de los calculadores 6151 a 6155. Cinco elementos de datos recibidos D617 se suministran a la sección de cálculo 615 desde la memoria 617 para recepción y los elementos de datos recibidos D617 se suministran individualmente a cada uno de los calculadores 6151 a 6155. Además, una señal de control D622 se suministra a la sección de control 617 desde la sección de control 617 y la señal de control D622 se suministra a los calculadores 6151 a 6155. La señal de control D622 es una señal común a los cinco calculadores 6171 a 6175.
5 Los calculadores 6151 a 6155 realizan, cada uno, el segundo cálculo en conformidad con la ecuación (1), la ecuación (10) y la ecuación (11) utilizando los resultados de la decodificación en curso D614 y D611 y los datos recibidos D617 (CÓDIGOS LDPC) con el fin de determinar los cinco resultados de la decodificación en curso D615 (vi’) correspondientes a los '1' de cada columna de la matriz de control. La sección de cálculo 615 suministra los cinco resultados de la decodificación en curso D615, que se obtienen como un resultado del segundo cálculo por los calculadores 6151 a 6155, a la memoria 610 para memorizar los resultados de la decodificación en curso.
La memoria 616 para recepción memoriza, como los datos recibidos D617, el LLR (ratio de probabilidad logarítmica) de recepción que es el valor de 0-semejanza del bit de signo, que se calcula a partir del valor recibido (bit de signo) que se recibe a través del canal de comunicación.
15 Más concretamente, en la primera dirección de la memoria 616 para recepción, los datos recibidos D617 correspondientes a la primera columna hasta la quinta columna de la matriz de control desde entre los datos recibidos D617 correspondientes a la columna de la matriz de control se memorizan. En la segunda dirección, los datos recibidos D617 desde la sexta columna a la 10ª columna de la matriz de control se memorizan y en la tercera dirección, se memorizan los datos recibidos D617 desde la 11ª columna hasta la 16ª columna de la matriz de control. En adelante, de modo similar, en la cuarta dirección hasta la 18ª dirección, se memorizan los datos recibidos D617 correspondientes a la 17ª columna hasta la 90ª columna en unidades de cinco elementos de los datos.
A continuación, la memoria 616 para recepción lee simultáneamente los datos recibidos ya memorizados D617, en la
25 secuencia necesaria para el segundo cálculo por la sección de cálculo 615 en unidades de cinco elementos de los datos y los suministra a la sección de cálculo 615.
La memoria 616 para recepción incluye, a modo de ejemplo, una memoria RAM de puerto único. La cantidad de datos memorizados en la memoria 616 para recepción, es decir, la capacidad de almacenamiento necesaria para la memoria 616 para recepción, es el valor multiplicado de la longitud de código de los códigos LDPC y el número de bit de cuantización de los datos recibidos. Además, el número de palabras de la memoria 616 para recepción es 18, de modo que la longitud de código de los códigos LDPC, es decir 90, el número de columnas de la matriz de control, se divide por 5, el número de elementos de los datos recibidos D617, que son objeto de lectura simultánea.
35 La sección de control 617 suministra la señal de control D618 a la memoria 610 para memorizar los resultados de la decodificación en curso y suministra la señal de control D619 al circuito de desplazamiento cíclico 611 para poder controlarlos, respectivamente. Además, la sección de control 617 suministra la señal de control D620 a la sección de cálculo 612 y suministra la señal de control D621 al circuito de desplazamiento cíclico 614 para poder controlarlos, respectivamente.
Como resultado de los datos que están en circulación en el orden de la memoria 610 para memorizar los resultados de la decodificación en curso, el circuito de desplazamiento cíclico 611, la sección de cálculo 612, la memoria 613 para memorizar los resultados de la decodificación en curso, el circuito de desplazamiento cíclico 614 y la sección de cálculo 615, el aparato de decodificación 600 puede realizar una decodificación. En el aparato de decodificación 600, después
45 de las decodificaciones se realicen repetidamente en un número predeterminado de veces, la sección de cálculo 615 realiza un cálculo en conformidad con la ecuación (5) y los resultados del cálculo se proporcionan como los resultados decodificados finales.
La Figura 29 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de un calculador 6121 de la sección de cálculo 612 de la Figura 26.
En la Figura 29, el calculador 6121 se describe y el calculador 6122 a calculador 6125 se configuran también de la misma manera.
55 Además, en la Figura 29, el calculador 6121 se ilustra suponiendo que cada resultados de la decodificación en curso (vi’), obtenido como un resultado del segundo cálculo por el calculador 615, es objeto de cuantización en seis bits. Una señal de reloj ck se suministra al calculador 6121 de la Figura 29 y la señal de reloj ck se suministra a los bloques necesarios. Cada bloque realiza el procesamiento en sincronización con la señal de reloj ck.
Sobre la base de la señal de control D620 suministrada desde la sección de control 617, el calculador 6121 de la Figura 29 realiza un primer cálculo en conformidad con la ecuación (9) utilizando los resultados de la decodificación en curso D611 (vi’) que se leen, uno a uno, desde el circuito de desplazamiento cíclico 611.
Más concretamente, un resultado de la decodificación en curso D611 desde entre los cinco resultados de la
65 decodificación en curso de 6 bits D611 (vi’), suministrados desde el circuito de desplazamiento cíclico 611 se suministra al calculador 6121, el bit de signo D631, que es el bit de más alto orden, se suministra al circuito lógico EXOR 635 y el
valor absoluto D632 (| vi’ |) que es los cinco bits de más bajo orden de los resultados de la decodificación en curso de 6 bits D611 (vi’) se suministran al dispositivo sumador 631. Además, la señal de control D620 se suministra al calculador 6121 desde la sección de control 617 y la señal de control D620 se suministra al selector 633 y el selector 637.
El dispositivo sumador 631 integra los valores absolutos D632 (| vi’ |) sumando juntos el valor absoluto D632 (| vi’ |) y el valor de 9 bits D633 memorizado en el registro 632 y memoriza el valor integrado de 9 bits obtenido como un resultado en el registro 632, de nuevo. Cuando se integran los valores absolutos D632 (| vi’ |), determinados a partir de los resultados de la decodificación en curso D611 correspondientes a todos los '1' a través de una fila de la matriz de control, el registro 632 es objeto de reposición.
Cuando los resultados de la decodificación en curso D611 a través de una fila de la matriz de control se leen, uno a uno, y el valor integrado, de modo que los valores absolutos D632 para una fila sean integrados y se memoriza en el registro 632, la señal de control D620 suministrada desde la sección de control 617 cambia desde 0 a 1. A modo de ejemplo, cuando el peso de ponderación de la fila es “9”, la señal de control D620 es "0" en las primera a octava señales de reloj y es "1" en la novena señal de reloj.
Cuando la señal de control D620 es "1", el registro 632 selecciona el valor memorizado en el selector 633, es decir, un valor de 9 bits D633 (∑ | vi’ | desde i = 1 a i = dc) de modo que los valores absolutos D632 (| vi’ |) de los resultados de la decodificación en curso D611 (los resultados de la decodificación en curso vi’) correspondientes a todos los '1' a través de una fila de la matriz de control son integrados y proporciona, a la salida, el valor como un valor D634 al registro 634, en donde se memoriza. El registro 634 suministra el valor memorizado D634 como un valor de 9 bits D635 al selector 633 y además, lo proporciona a la salida. Cuando la señal de control D620 es "0" el selector 633 selecciona el valor D635 suministrado desde el registro 634 y proporciona el valor al registro 634, en donde se memoriza de nuevo. Es decir, hasta que se integren los valores absolutos D632 (| vi’ |) de los resultados de la decodificación en curso D611 (los resultados de la decodificación en curso vi’) correspondientes a todos los '1' a través de una fila de la matriz de control, el registro 634 suministra los | vi’ | anteriormente integrados al selector 633 y además, los proporciona a la salida.
En paralelo con el procesamiento anterior, el circuito lógico EXOR 635 realiza una multiplicación de los bits de signo calculando la función OR exclusiva de un valor de 1 bit D637 memorizado en el registro 636 y el bit de signo D631 y memoriza el resultado de la multiplicación de 1 bit D636 en el registro 636, de nuevo. Cuando los bits de signo D631 de los resultados de la decodificación en curso D611 correspondientes a todos los '1' a través de una fila de la matriz de control se multiplican, el registro 636 es objeto de reposición.
Cuando los resultados de la multiplicación D636 (!sign (vi’) desde i = 1 a dc) de modo que los bits de signo D631, determinados a partir de los resultados de la decodificación en curso D611 correspondientes a todos los '1' a través de una fila de la matriz de control, se multiplican, se memorizarán en el registro 636, mientras que la señal de control D620 suministrada desde la sección de control 617 cambia desde "0" a "1".
Cuando la señal de control D620 es "1", el selector 637 selecciona el valor memorizado en el registro 636, es decir el valor D637 (!sign (vi’) desde i = 1 a i = dc) de modo que los bits de signos D631 de los resultados de la decodificación en curso D611 correspondientes a todos los '1' a través de una fila de la matriz de control, sean multiplicados y proporciona, a la salida, el valor como un valor de 1 bit D638 al registro 638, en donde se memoriza. El registro 638 suministra el valor memorizado D638 como un valor de 1 bit D639 al selector 637 y lo proporciona a la salida. Cuando la señal de control D620 es "0", el selector 637 selecciona el valor D639 suministrado desde el registro 638 y proporciona el valor al registro 638, en donde se memoriza de nuevo. Es decir, hasta que se multipliquen los bits de signo D631 de los resultados de la decodificación en curso D611 (los resultados de la decodificación en curso vi’) correspondientes a todos los '1' a través de una fila de la matriz de control, el registro 638 suministra el valor anteriormente memorizado al selector 637 y lo proporciona a la salida.
En el calculador 6121, un total de 10 bits, en los que el valor de 9 bits D635 (∑| vi’ | desde i = 1 a i = dc) objeto de salida desde el registro 634, se hacen los nueve bits de más bajo orden y el valor de 1 bit D639 (sign (vi’) procedente del registro 638 se hace el bit del más alto orden, proporcionándose como los resultados de la decodificación en curso D612 (los resultados de la decodificación en curso w).
Según se describió anteriormente, en el calculador 6121, se realiza el cálculo de la ecuación (9) y se determina el resultados de la decodificación en curso w.
La Figura 30 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración del calculador 6151 de la sección de cálculo 615 de la Figura 26.
En la Figura 30, se describe el calculador 6151 y el calculador 6152 al calculador 6155 se configuran también de la misma manera.
Además, en la Figura 30, el calculador 6151 se ilustra suponiendo que cada resultado de la decodificación en curso (w), obtenido como un resultado del primer cálculo por el calculador 612, junto con el bit de signo, es objeto de cuantización a un total de 10 bits y cada resultado de la decodificación en curso (uj) obtenido anteriormente como un resultado del
segundo cálculo, que se suministran desde la memoria 610 para memorizar los resultados de la decodificación en curso, junto con el bit de signo, es objeto de cuantización para un total de seis bits. Además, una señal de reloj ck se suministra al calculador 6151 de la Figura 30 y la señal de reloj ck se suministra a bloques necesarios. Cada bloque realiza el procesamiento en sincronización con la señal de reloj ck.
Sobre la base de la señal de control D622 suministrada desde la sección de control 617, el calculador 6151 de la Figura 30 realiza un segundo cálculo en conformidad con la ecuación (1), la ecuación (10) y la ecuación (11) utilizando los elementos de datos recibidos D617 (los valores recibidos u0i), que son objeto de lectura, uno a uno, desde la memoria 616 para recepción, los resultados de la decodificación en curso D614 (w), que se leen, uno a uno, desde el circuito de desplazamiento cíclico 614 y los resultados de la decodificación en curso D610 (vi’) obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615, que leen, uno a uno, desde la memoria 610 para memorizar los resultados de la decodificación en curso.
Más concretamente, en el calculador 6151, los resultados de la decodificación en curso de 10 bits D614 (los resultados de la decodificación en curso w) correspondientes a la fila de la matriz de control se leen, uno a uno, desde el circuito de desplazamiento cíclico 614. Los resultados de la decodificación en curso de 6 bits D610 (los resultados de la decodificación en curso vi’) obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615 se leen, uno a uno, desde la memoria 610 para memorizar los resultados de la decodificación en curso. El bit de signo D651 (sign (w)) del bit de más alto orden de los resultados de la decodificación en curso D614 y el bit de signo D653 (sign (uj)) del bit del más alto orden de los resultados de la decodificación en curso D610 se suministran al circuito lógico EXOR 653. Un valor absoluto D652 (| w |) de los nueve bits de más bajo orden de los resultados de la decodificación en curso D614 y el bit de signo D653 (| vi’ |) de los nueve bits de más bajo orden de los resultados de la decodificación en curso D610 se suministran a un dispositivo restador 651. Además, en el calculador 6151, los elementos de los datos recibidos de 6 bits D617 se leen, uno a uno, desde la memoria 616 para recepción y se suministran a un dispositivo sumador 658. Además, en el calculador 6151, la señal de control D622 se suministra desde la sección de control 617 y la señal de control D622 se suministra al selector 656.
El dispositivo restador 651 sustrae el valor absoluto D654 desde el valor absoluto D652 y suministra un valor sustraído de 5 bits D655 a una LUT 652. El LUT 652 proporciona el resultado del cálculo de 5 bits D656 (φ-1 (| w | -| vi’ |)) de modo que el cálculo de φ-1 se realiza sobre el valor sustraído D655.
Por otro lado, el circuito lógico EXOR 653 multiplica juntos el bit de signo D651 y el bit de signo D653 calculando la función lógica OR exclusiva del bit de signo D651 (sign (w)) y el bit de signo D653 (sign (vi’)) y proporciona un resultado de multiplicación de 1 bit como un valor multiplicado D657. A continuación, un valor de 6 bits D658, en donde los resultados de cálculos de 5 bits D656 suministrados desde la LUT 652, se hacen los cinco bits de más bajo orden (φ-1 (| w | - | vi’ |)) y el valor 1 bit D657 (sign (w) x sign (vi’)) suministrado desde el circuito lógico EXOR 653 se hace el bit de más alto orden, se suministra a un dispositivo sumador 654 y se suministra también a una memoria FIFO 659.
En la manera anteriormente descrita, se realiza el cálculo en conformidad con la ecuación (10) y el valor de 6 bits D658 (uj), que es el resultado del cálculo, se suministra al dispositivo sumador 654 y también se suministra a la memoria FIFO
659.
El dispositivo sumador 654 integra los valores D658 sumando, juntos, el valor de 6 bits D658 (uj) y el valor de 9 bits D659 memorizados en el registro 655 y memoriza el valor integrado de 9 bits obtenido como resultado en el registro 655, de nuevo. Cuando se integran el valor D658 correspondiente a todos los '1' a través de una columna de la matriz de control, el registro 655 es objeto de reposición.
Cuando los valores D658 a través una columna de la matriz de control se leen, uno a uno, y el valor tal como los valores D658 para una columna se integran, entonces se memoriza en el registro 655 y la señal de control D622 suministrada desde la sección de control 617 cambia desde "0" a "1". A modo de ejemplo, cuando el peso de ponderación de la columna es “5”, la señal de control D622 es "0" en la primera a cuarta señales de reloj y es "1" en la quinta señal de reloj.
Cuando la señal de control D622 es "1", el selector 656 selecciona el valor memorizado en el registro 655, es decir, un valor de 9 bits D659 (∑uj desde j = 1 a dv) de modo que el valor D658 (uj) correspondiente a los '1' a través de una columna de la matriz de control son integrados y proporciona, a la salida, el valor al registro 657, en donde se memoriza. El registro 657 suministra el valor memorizado D659 como un valor de 9 bits D660 a un selector 471 a un dispositivo sumador 658. Cuando la señal de control D622 es "0", el selector 656 selecciona el valor D660 suministrado desde el registro 657 y proporciona el valor al registro 657, en donde se memoriza de nuevo. Es decir, hasta que se integren los valores D658 (uj) correspondientes a los '1' a través de una columna de la matriz de control, el registro 657 suministra el valor anteriormente integrado al selector 656 y al dispositivo sumador 658.
El dispositivo sumador 658 añade, juntos, el valor de 9 bits D660 y los datos recibidos de 6 bits D617 suministrados desde la memoria 616 para recepción y suministra el valor de 9 bits D661 obtenido como un resultado.
En el calculador 615, cuando ha de realizarse el cálculo final, el dispositivo sumador 658 proporciona el valor de 9 bits D661 como los resultados decodificados finales. Es decir, la sección de cálculo 615 realiza un cálculo en conformidad con la ecuación (5).
5 Por otro lado, hasta que un nuevo valor D660 (∑uj desde j = 1 a j = dv) se proporcione desde el registro 665, la memoria FIFO 659 retarda el valor de 6 bits D658 (uj) y suministra el valor como un valor de 6 bits D662 al dispositivo restador
660. El dispositivo restador 660 sustrae el valor de 6 bits D662 desde el valor de 9 bits D660 y proporciona el valor sustraído D663. Es decir, el dispositivo restador 660 sustrae el valor correspondiente al borde que se va a determinar, es decir, el valor D658 (uj) correspondiente a los '1' predeterminados de la matriz de control, a partir del valor integrado de los valores D658 correspondientes a los '1' a través de una columna de la matriz de control y proporciona, a la salida, el valor sustraído (∑uj desde i = 1 a i = dv - 1) como un valor sustraído de 6 bits D663.
En la manera anteriormente descrita, el cálculo en conformidad con la ecuación (1) se realiza y el valor sustraído de 6 bits D663 (vi), que es el resultado del cálculo, es objeto de salida. A continuación, el valor absoluto (| vi |) de los cinco bits
15 de más bajo orden del valor sustraído de 6 bits D663, proporcionado desde el dispositivo restador 660 se suministra al LUT 661 y el bit de signo (sign (vi)) del bit del más alto orden se proporciona como un valor D665.
El LUT 661 proporciona los resultados del cálculo de 5 bits D666 (φ (| vi |)) de modo que se realice el cálculo de φ sobre el valor absoluto (| vi |). A continuación, la LUT 661 suministra, como resultados de la decodificación en curso (vi’) un total de seis bits, en los que el resultado del cálculo de 5 bits D666 (φ (| vi |)) procedente de la LUT 661, se hace los cinco bits de más bajo orden y el valor D665 (sign (vi)) el bit del más alto orden, a la memoria 610 para memorizar los resultados de la decodificación en curso.
Según se describió anteriormente, en el calculador 6151, se realizan los cálculos de la ecuación (1), la ecuación (10) y la 25 ecuación (11) y se determinan los resultados de la decodificación en curso vi’.
El máximo del peso de ponderación de columna de la matriz de control de la Figura 15 es 5, es decir, el número máximo de los resultados de la decodificación en curso D614 (w) y los resultados de la decodificación en curso D610 (vi’) suministrados al calculador 6151 es 5. Por lo tanto, el calculador 6151 tiene una memoria FIFO 659 para retardar los cinco resultados de la decodificación en curso D614 y los cinco resultados del cálculo D658 (uj) determinados a partir de los resultados de la decodificación en curso D610. Cuando un mensaje cuyo peso de ponderación de columna es menor que 5 ha de calcularse, la magnitud del retardo, en la memoria FIFO 659, se reduce al valor del peso de ponderación de la columna.
35 La Figura 31 es un diagrama de bloques que ilustra, a modo de ejemplo, la configuración de la memoria 610 para memorizar los resultados de la decodificación en curso de la Figura 26.
La memoria 610 para memorizar los resultados de la decodificación en curso incluye los conmutadores 701 y 704 y las memorias RAM 702 y 703 para memorizar los resultados de la decodificación en curso, que son dos memorias RAMs de puerto único.
Antes de que cada sección de la memoria 610 para memorizar los resultados de la decodificación en curso se describa en detalle, se describirá primero el método para memorizar datos en las memorias RAMs 702 y 703 para memorizar los resultados de la decodificación en curso.
45 Las memorias RAMs 702 y 703 para memorizar los resultados de la decodificación en curso memorizan los resultados de la decodificación en curso D615 que se obtienen como resultado del quinto cálculo por la sección de cálculo 612 y que se suministran a través del conmutador 701.
Más concretamente, en la primera dirección hasta la quinta dirección de la memoria RAM 702 para memorizar los resultados de la decodificación en curso, los resultados de la decodificación en curso D615 (D701) correspondientes a los '1' desde la primera columna hasta la quinta columna de la matriz de control H de la Figura 15 se memorizan de tal manera que sean empaquetados más próximos en la dirección horizontal (en la dirección de la columna) para cada fila (en una manera en la que se ignoren los '0').
55 Más concretamente, cuando la j-ésima fila y la i-ésima columna se indiquen como (j, i), en la primera dirección de la memoria RAM 702 para memorizar los resultados de la decodificación en curso, se memorizan los datos correspondientes a los '1' de la matriz unitaria 5 x 5 desde (1, 1) a (5, 5) de la matriz de control de la Figura 15. En la segunda dirección, los correspondientes a las posiciones de '1' de una primera matriz de desplazamiento que forma una matriz suma desde (6, 1) a (10, 5) de la matriz de control de la Figura 15 (una matriz suma, que es la suma de la primera matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza cíclicamente en uno a la derecha y una segunda matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza cíclicamente en dos a la derecha) son objeto de memorización. Además, en la tercera dirección, se memorizan los datos correspondientes a las posiciones '1' de la segunda matriz de desplazamiento que forma la matriz suma desde (6, 1) a (10, 5) de la matriz de control. En adelante,
65 además, en la cuarta dirección y la quinta dirección, se memorizan datos de tal manera que correspondan a la matriz de control de la Figura 15.
En la sexta dirección hasta la 10ª dirección de la memoria RAM 702 para memorizar la decodificación en curso, se memorizan los datos correspondientes a los '1' desde la 11ª columna hasta la 15ª columna de la matriz de control de la Figura 15. Es decir, en la sexta dirección, se memorizan los datos correspondientes a las posiciones de '1' de la primera matriz de desplazamiento que forma la matriz suma desde (11, 11) a (15, 15) de la matriz de control (la matriz suma, que es la suma de la matriz unitaria 5 x 5 y la primera matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza cíclicamente en tres a la derecha) y en la séptima dirección, se memorizan los datos correspondientes a los '1' de la matriz unitaria que forma la matriz suma (11, 11) a (15, 15) de la matriz de control. En adelante, además, en la octava dirección hasta la 10ª dirección, se memorizan los datos de tal manera que correspondan a la matriz de control.
De modo similar, en la 10ª dirección hasta la 28ª dirección de la memoria RAM 702 para memorizar la decodificación en curso, de tal manera que correspondan a la matriz de control de la Figura 15, se memorizan datos correspondientes a los '1' desde la 21ª columna hasta la 25ª columna, desde la 31ª columna hasta la 35ª columna, desde la 41ª columna hasta la 45ª columna, desde la 51ª columna hasta la 55ª columna, desde la 61ª columna hasta la 65ª columna, desde la 71ª columna hasta la 75ª columna, desde la 81ª columna hasta la 85ª columna. Es decir, el número de palabras de la memoria RAM 702 para memorizar los resultados de la decodificación en curso es 28.
En la primera dirección hasta la quinta dirección de la memoria RAM 703, los resultados de la decodificación en curso D615 (D702) correspondientes a los '1' desde la sexta columna a la 10ª columna de la matriz de control H de la Figura 15 se memorizan de tal manera que estén empaquetados más próximos en la dirección horizontal (en la dirección de las columnas) para cada fila (en una manera en la que se ignoren los '0').
Más concretamente, en la primera dirección de la memoria RAM 703 para memorizar los resultados de la decodificación en curso se memorizan los datos correspondientes a los '1' de la primera matriz de desplazamiento que forma la matriz suma desde (6, 1) a (10, 5) (la matriz suma, que es la suma de la primera matriz de desplazamiento en la que la matriz unitaria 5 x 5 se desplaza cíclicamente en uno a la derecha y la segunda matriz de desplazamiento en la que la matriz unitaria se desplaza cíclicamente en dos a la derecha) que es la sub-matriz de la matriz de control. En la segunda dirección, se memorizan los datos correspondientes a los '1' de la segunda matriz de desplazamiento que forma la matriz suma desde (6, 1) a (10, 5) que es la sub-matriz de la matriz de control. En adelante, de modo similar, en la tercera dirección a la quinta dirección, además, se memorizan los datos de tal manera que correspondan a la sub-matriz de la matriz de control.
De forma similar, en la sexta dirección hasta la segunda dirección de la memoria RAM 703 para memorizar la decodificación en curso, se memorizan los datos correspondientes a los '1' desde la 16ª columna hasta la 20ª columna de la matriz de control de la Figura 15, desde la 26ª columna hasta la 30ª columna, desde la 36ª columna hasta la 40ª columna, desde la 46ª columna hasta la 50ª columna, desde la 56ª columna hasta la 60ª columna, desde la 66ª columna hasta la 70ª columna, desde la 76ª columna hasta la 80ª columna y desde la 86ª columna hasta la 90ª columna. Es decir, el número de palabras de la memoria RAM 703 para memorizar los resultados de la decodificación en curso es 26.
Según se describió anteriormente, el número de palabras de la memoria RAM 702 para memorizar los resultados de la decodificación en curso es 28 y el número de palabras de la memoria RAM 703 para memorizar los resultados de la decodificación en curso es 26.
La Figura 32 es un diagrama de temporización que ilustra la operación de lectura y escritura de la memoria RAM 702 para memorizar los resultados de la decodificación en curso y la memoria RAM 703 para memorizar los resultados de la decodificación en curso de la memoria 610 para memorizar los resultados de la decodificación en curso.
En la Figura 32, el eje horizontal indica el tiempo (t).
En la memoria 610 para memorizar los resultados de la decodificación en curso, cuando ha de realizarse el primer cálculo por la sección de cálculo 612, sobre la base de una señal de control D7202 suministrada desde la sección de control 617, los resultados de la decodificación en curso ya memorizados D703, obtenidos como un resultado del segundo cálculo, se leen desde la memoria RAM 702 para memorizar los resultados de la decodificación en curso o sobre la base de la señal de control D7203 suministrada desde la sección de control 617, los resultados de la decodificación en curso ya memorizados D704 obtenidos como un resultado del segundo cálculo se leen desde la memoria RAM 703 para memorizar los resultados de la decodificación en curso. Los resultados de la decodificación en curso leídos se suministran al circuito de desplazamiento cíclico 614 a través del conmutador 704.
Cuando ha de realizarse el segundo cálculo por la sección de cálculo 615, los resultados de la decodificación en curso D615 vi’ obtenidos como un resultado del segundo cálculo se suministran a la memoria 610 para memorizar los resultados de la decodificación en curso desde la sección de cálculo 615. Al mismo tiempo, cuando los resultados de la decodificación en curso D615 se escriben en una dirección predeterminada de una de entre la memoria RAM 702 para memorizar los resultados de la decodificación en curso y de la memoria RAM 703 para memorizar los resultados de la decodificación en curso, los resultados de la decodificación en curso D610 (vi’), obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615, son objeto de lectura desde la otra memoria RAM y se proporcionan a la sección de cálculo 615 a través del circuito de desplazamiento cíclico 614.
Los cinco resultados de la decodificación en curso D615 se suministran al conmutador 701 desde la sección de cálculo 615 y además, una señal de control D7201 que indica la selección de una de las memorias RAM 702 para memorizar los resultados de la decodificación en curso y la memoria RAM 703 para memorizar los resultados de la decodificación en curso, como una memoria para la escritura de los resultados de la decodificación en curso D615 se suministra al conmutador 701. Sobre la base de la señal de control D7201, el conmutador 701 selecciona una de entre la memoria RAM 702 para memorizar los resultados de la decodificación en curso y la memoria RAM 703 para memorizar los resultados de la decodificación en curso y suministra los cinco resultados de la decodificación en curso D612 a la memoria así seleccionada.
Los cinco resultados de la decodificación en curso D612 se suministran como resultados de la decodificación en curso D701 a la memoria RAM 702 para memorizar los resultados de la decodificación en curso desde el conmutador 701 y además, una señal de control D7022, que indica la dirección se suministra desde la sección de control 617. La memoria RAM 702 para memorizar los resultados de la decodificación en curso efectúa la lectura de los cinco resultados de la decodificación en curso D701 obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615, que están ya memorizados en la dirección indicada por la señal de control D7202 y los suministra como los resultados de la decodificación en curso D703 al conmutador 704. Además, la memoria RAM 702 para memorizar los resultados de la decodificación en curso, memoriza (escribe) los cincos resultados de la decodificación en curso D702 suministrados desde el conmutador 701 en la dirección indicada por la señal de control D7202.
Los cinco resultados de la decodificación en curso D615 se suministran como los resultados de la decodificación en curso D702 a la memoria RAM 703 para memorizar los resultados de la decodificación en curso desde el conmutador 701, y además, una señal de control D7203, que indica la dirección se suministra desde la sección de control 617. La memoria RAM 703 para memorizar los resultados de la decodificación en curso efectúa la lectura de los resultados de la decodificación en curso D702 obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615, que están ya memorizados en la dirección indicada por la señal de control D7203 y los suministra como los resultados de la decodificación en curso D704 al conmutador 704. Además, la memoria RAM 702 para memorizar los resultados de la decodificación en curso, memoriza (escribe) los cinco resultados de la decodificación en curso D702 suministrados desde el 701 en la dirección indicada por la señal de control D7203.
Los resultados de la decodificación en curso D703 se suministran al conmutador 704 desde la memoria RAM 702 para memorizar los resultados de la decodificación en curso o los resultados de la decodificación en curso D704 se suministran desde la memoria RAM 703 para memorizar los resultados de la decodificación en curso. Además, una señal de control D7204 que indica la selección de una de entre la memoria RAM 702 para memorizar los resultados de la decodificación en curso y la memoria RAM 703 para memorizar los resultados de la decodificación en curso se suministra desde la sección de control 617. Sobre la base de la señal de control D7204, el conmutador 704 selecciona una de entre la memoria RAM 702 para memorizar los resultados de la decodificación en curso y la memoria RAM 703 para memorizar los resultados de la decodificación en curso y suministra los cinco resultados de la decodificación en curso suministrados desde la memoria RAM seleccionada que se suministran como los cinco resultados de la decodificación en curso D610 a la sección de cálculo 615.
En la memoria 610 para memorizar los resultados de la decodificación en curso, cuando ha de realizarse el segundo cálculo por la sección de cálculo 615, sobre la base de la señal de control D7202, la memoria RAM 702 para memorizar los resultados de la decodificación en curso efectúa la lectura, cinco veces, de los resultados de la decodificación en curso D701 correspondientes a los '1' desde la primera columna a la quinta columna de la matriz de control, que se memorizan en la misma dirección, desde entre los resultados de la decodificación en curso ya memorizados D701 obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615 en unidades de cinco resultados y los suministra a la sección de cálculo 615 a través del conmutador 704. Es decir, puesto que el peso de ponderación de la columna de la matriz de control H de la Figura 15 es 5, existen cinco resultados de la decodificación en curso correspondientes a los '1' de cada columna de la matriz de control H y la memoria RAM 702 para memorizar los resultados de la decodificación en curso efectúa la lectura, cinco veces, de los resultados de la decodificación en curso D701 correspondiente a los '1' desde la primera columna a la quinta columna en unidades de cinco resultados.
A continuación, sobre la base de la señal de control D7203, la memoria RAM 703 para memorizar los resultados de la decodificación en curso efectúa la lectura continua, cinco veces, de los cinco resultados de la decodificación en curso D702 correspondientes a los '1' desde la sexta columna a la 10ª columna de la matriz de control, que se memorizan en la misma dirección, desde entre los resultados de la decodificación en curso D702 obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615, que están ya memorizados y los suministra a la sección de cálculo 615 a través del conmutador 704 y del circuito de desplazamiento cíclico 614. Al mismo tiempo, los cinco resultados de la decodificación en curso D615 correspondientes a los '1' de la primera columna a la quinta columna de la matriz de control, obtenidos como un resultado del segundo cálculo que se está actualmente realizando por la sección de cálculo 615, se suministran como los resultados de la decodificación en curso D701 a la memoria RAM 702 para memorizar los resultados de la decodificación en curso a través del conmutador 701. Sobre la base de la señal de control D7202, la memoria RAM 702 para memorizar los resultados de la decodificación en curso memoriza continuamente, cinco veces, los resultados de la decodificación en curso D701 en la dirección en la que se memorizan los resultados de la decodificación en curso D703 ya leídos.
En adelante, sobre la base de la señal de control D7202, la memoria RAM 702 para memorizar los resultados de la decodificación en curso efectúa la lectura continua, cinco veces, de los resultados de la decodificación en curso D701 correspondientes a los '1' desde la 11ª columna a la 15ª columna de la matriz de control, que se memorizan en la misma dirección, desde entre los resultados de la decodificación en curso ya memorizados D701 obtenidos anteriormente como un resultado del segundo cálculo por la sección de cálculo 615 en unidades de cinco resultados y los suministra a la sección de cálculo 615 a través del conmutador 704. Al mismo tiempo, los cinco resultados de la decodificación en curso D612 correspondientes a los '1' desde la sexta columna hasta la 10ª columna de la matriz de control, que se obtienen como un resultado del segundo cálculo que se está actualmente realizando por la sección de cálculo 615, se suministran como los resultados de la decodificación en curso D702 a la memoria RAM 703 para memorizar los resultados de la decodificación en curso a través del conmutador 701. Sobre la base de la señal de control D7203, la memoria RAM 703 para memorizar los resultados de la decodificación en curso memoriza continuamente, cinco veces, los resultados de la decodificación en curso ya leídos D702 en la dirección en la que se memorizan los resultados de la decodificación en curso D704.
En adelante, de modo similar, hasta que los resultados de la decodificación en curso, correspondientes a todos los '1', que se obtienen como un resultado del segundo cálculo por la sección de cálculo 615, se memoricen en la memoria RAM 702 para memorizar los resultados de la decodificación en curso o la memoria RAM 703 para memorizar los resultados de la decodificación en curso, la memoria RAM 702 para memorizar los resultados de la decodificación en curso y la memoria RAM 703 para memorizar los resultados de la decodificación en curso realizan, de forma alternada, las operaciones de lectura y escritura de los resultados cinco veces.
La Figura 33 es un diagrama de flujo que ilustra el proceso de decodificación del aparato de decodificación 600 de la Figura 26. Este proceso se inicia cuando, a modo de ejemplo, se memorizan los datos recibidos a decodificarse en la memoria 616 para recepción.
En la etapa S70, el circuito de desplazamiento cíclico 614 realiza un desplazamiento cíclico de redisposición de los cinco resultados de la decodificación en curso D613 memorizados en la etapa S76 (a describirse más adelante), que se suministran desde la memoria 613 para memorizar los resultados de la decodificación en curso y los suministra a la sección de cálculo 615.
Más concretamente, los cinco resultados de la decodificación en curso D613 se suministran al circuito de desplazamiento cíclico 614 desde la memoria 613 para memorizar los resultados de la decodificación en curso. Además, una señal de control D621, que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponden a los resultados de la decodificación en curso D613, estén dispuestos como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base de la matriz de control es objeto de desplazamiento cíclico, se suministran al circuito de desplazamiento cíclico 614 desde la sección de control 617. Sobre la base de la señal de control D621, el circuito de desplazamiento cíclico 614 realiza un desplazamiento cíclico (redispone) los cinco resultados de la decodificación en curso D613 y los suministra como los resultados de la decodificación en curso D614 a la sección de cálculo 615.
Cuando el primer cálculo no se ha realizado sobre los datos recibidos D617 suministrados desde la memoria 616 para recepción y los resultados de la decodificación en curso D612 no se han memorizado en la memoria 613 para memorizar los resultados de la decodificación en curso, la sección de cálculo 615 establece el resultado a un valor inicial.
En la etapa S71, la sección de cálculo 615 realiza el segundo cálculo y suministra los resultados de la decodificación en curso D615, que son los resultados del cálculo, a la memoria 610 para memorizar los resultados de la decodificación en curso.
Más concretamente, los cinco resultados de la decodificación en curso D614 se suministran a la sección de cálculo 615 desde el circuito de desplazamiento cíclico 614 en la etapa S70 y los resultados de la decodificación en curso anteriores D610 se suministran desde la memoria 610 para memorizar los resultados de la decodificación en curso en la etapa S72 (a describirse más adelante). Cinco elementos de los datos recibidos D617 se suministran desde la memoria 616 para datos recibidos y los cinco resultados de la decodificación en curso D615 y D610, y los datos recibidos D617 se suministran individualmente a cada uno de los calculadores 6151 a 6155 de la sección de cálculo 615. Además, la señal de control D622 se suministra a la sección de cálculo 615 desde la sección de control 617 y la señal de control D622 se suministra a los calculadores 6151 a 6155.
Sobre la base de la señal de control D622, los calculadores 6151 a 6155 realizan, cada uno, un cálculo en conformidad con la ecuación (1), la ecuación (10) y la ecuación (11) utilizando los resultados de la decodificación en curso D614 y D610 y los datos recibidos D617 y suministra los resultados de la decodificación en curso D615 (vi’) correspondientes a los '1' de cada columna de la matriz de control, que se obtienen como un resultado del cálculo, a la memoria 610 para memorizar los resultados de la decodificación en curso.
Después del procesamiento de la etapa S71, el proceso prosigue con la etapa S72, en donde la memoria 610 para memorizar los resultados de la decodificación en curso D615 suministrados desde la sección de cálculo 615 en la etapa
S71 en la misma dirección, efectúa la lectura de los resultados de la decodificación en curso ya memorizados D615 (D610) y los suministra al circuito de desplazamiento cíclico 611 y a la sección de cálculo 615.
Después del procesamiento de la etapa S72, el proceso prosigue con la etapa S73, en donde la sección de control 617 determina si, o no, todos los resultados de la decodificación en curso D615 correspondientes a los '1' de cada columna de la matriz de control han sido calculados por la sección de cálculo 615. Cuando la sección de control 617 determina que todos los resultados de la decodificación en curso D615 no han sido calculados, el proceso retorna a la etapa S70 y se realiza de nuevo el procesamiento anteriormente descrito.
Por el contrario, cuando la sección de control 617 determina, en la etapa S73, que todos los resultados de la decodificación en curso D615 han sido calculados por la sección de cálculo 615, el proceso prosigue con la etapa S74, en donde el circuito de desplazamiento cíclico 611 realiza el desplazamiento cíclico de los resultados de la decodificación en curso D610 (vi’) suministrados desde la memoria 610 para memorizar los resultados de la decodificación en curso.
Más concretamente, los cinco resultados de la decodificación en curso D610 se suministran al circuito de desplazamiento cíclico 611 desde la memoria 610 para memorizar los resultados de la decodificación en curso. Además, una señal de control D619, que indica información (datos de matrices) en cuanto al hecho de que los '1' de la matriz de control, que corresponden a los resultados de la decodificación en curso D610, están dispuestos como un resultado de cuántas veces, a modo de ejemplo, la matriz unitaria que forma la base en la matriz de control se desplaza de forma cíclica, se suministran al circuito de desplazamiento cíclico 611 desde la sección de control 617. Sobre la base de la señal de control D619, el circuito de desplazamiento cíclico 611 efectúa el desplazamiento cíclico (redispone) los cinco resultados de la decodificación en curso D610 y los suministra como los resultados de la decodificación en curso D611 a la sección de cálculo 612.
Después del procesamiento de la etapa S74, el proceso prosigue con la etapa S75, en donde la sección de cálculo 612 realiza el primer cálculo y suministra los resultados de la decodificación en curso D612, que son los resultados del cálculo, al circuito de desplazamiento cíclico 614.
Más concretamente, los cinco resultados de la decodificación en curso D611 (vi’) se suministran a la sección de cálculo 612 desde el circuito de desplazamiento cíclico 611 en la etapa S74 y los resultados de la decodificación en curso D611 se suministran individualmente a cada uno de los calculadores 6121 a 6125 de la sección de cálculo 612. Además, la señal de control D621 se suministra a la sección de cálculo 612 desde sección de control 617 y la señal de control D621 se suministra a los calculadores 6121 a 6125.
Sobre la base de la señal de control D619, los calculadores 6121 a 6125 realizan, cada uno, un cálculo en conformidad con la ecuación (9) utilizando los resultados de la decodificación en curso D611 y suministran los resultados de la decodificación en curso D612 (w) correspondientes a la fila de la matriz de control, que se obtienen como resultado del cálculo, a la memoria 613 para memorizar los resultados de la decodificación en curso.
Después del procesamiento de la etapa S75, el proceso prosigue con la etapa S76, en donde la memoria 613 para memorizar los resultados de la decodificación en curso memoriza los resultados de la decodificación en curso D612 suministrados desde la sección de cálculo 612 en la etapa S75 en la misma dirección y el proceso prosigue entonces con la etapa S77.
En la etapa S77, la sección de control 617 determina si, o no, los resultados de la decodificación en curso D612 correspondientes a todas las filas de la matriz de control han sido calculados por la sección de cálculo 612. Cuando la sección de control 617 determina que todos los resultados de la decodificación en curso no han sido calculados, el proceso retorna a la etapa S74 y se realiza de nuevo el procesamiento anteriormente descrito.
Por el contrario, cuando la sección de control 617 determina, en la etapa S77, que los resultados de la decodificación en curso D612 correspondientes a todas las filas han sido calculados por la sección de cálculo 612, el procesamiento está concluido.
El aparato de decodificación 600 realiza, de forma repetida, el proceso de decodificación de la Figura 33 para el número decodificaciones y el valor D661, obtenido por la sección de cálculo 621 como un resultado del cálculo en conformidad con la ecuación (5) anteriormente descrita se proporcionan como los resultados decodificados finales.
En la descripción anterior, aunque la memoria 610 para memorizar los resultados de la decodificación en curso está formada a partir de dos memorias RAMs de puerto único, puede formarse a partir de tres o más memorias RAMs si las operaciones de lectura y escritura no ocurren simultáneamente desde y a una sola memoria RAM. Cuando la anchura de bits física de la memoria RAM es insuficiente, al proporcionar la misma señal de control utilizando una pluralidad de memorias RAMs, estas memorias se pueden suponer, desde el punto de vista lógico, como una sola memoria RAM.
Para las partes en las que los datos de bordes no existen (mensajes correspondientes a bordes), durante el almacenamiento en la memoria (cuando los datos se memorizan en las memorias 610 y 613 para memorizar los
resultados de la decodificación en curso), no se memoriza ningún mensaje y durante el cálculo (el primer cálculo en la sección de cálculo 612 y durante el segundo cálculo en la sección de cálculo 615) no se realizan ningún cálculo.
Si se utiliza un dispositivo de desplazamiento de rotación para los circuitos de desplazamiento cíclico 314 y 320 de las Figuras 16A y 16B, los circuitos de desplazamiento cíclico 411 y 414 de la Figura 18 y los circuitos de desplazamiento cíclico 611 y 614 de la Figura 26, se pueden realizar las operaciones deseadas al mismo tiempo que se reduce la escala circuital.
En el caso anteriormente descrito, con fines de simplificación de la descripción, se utiliza, a modo de ejemplo, un caso, en el que p es 5, es decir, el número de filas y el número de cálculo de la sub-matriz que forma la matriz de control es 5. El número de filas y el número de columnas de la sub-matriz no necesita siempre ser 5 y puede adoptar un valor diferente dependiendo de la matriz de control. A modo de ejemplo, p puede ser 360 o 392.
Además, en esta forma de realización, los códigos LDPC de una longitud de código de 90 y una tasa de codificación de 2/3 se utilizan a este respecto. Sin embargo, la longitud de código y la tasa de codificación pueden ser cualquier valor. A modo de ejemplo, cuando el número de filas y el número de columnas, p, de la sub-matriz es 5, si el número total de los bordes es más pequeño que o igual a 5, los códigos LDPC de incluso cualquier longitud de código y tasa de codificación pueden decodificarse utilizando el aparato de decodificación 300 de las Figuras 16A a 16C el aparato de decodificación 400 de la Figura 18 y el aparato de decodificación 600 de la Figura 26 cambiando solamente la señal de control.
Además, el aparato de decodificación para algunos códigos LDPC, que satisfacen las condiciones en las que el nuero de filas y el número de columnas, p, de la sub-matriz es un valor predeterminado, y el número total de los bordes es más pequeño que, o igual a un valor particular, es capaz de decodificar códigos LDPC de cualquier tasa de codificación deseada en cualquier longitud de código deseada, que satisfacen las condiciones.
Cuando la matriz de control no es un múltiplo del número p de las filas y columnas de la sub-matriz, la presente invención puede aplicarse suponiendo que la matriz de control es un múltiplo de p asignando elementos de todos '0' a la parte exterior de las fracciones de la matriz de control.
A continuación, las series anteriormente descritas de procesos pueden realizarse mediante hardware y se pueden realizar también por software. Cuando las series de procesos se realiza por software, el programa que forma el software se instala en un ordenador de uso general, etc.
En consecuencia, la Figura 34 ilustra, a modo de ejemplo, la configuración de una forma de realización de un ordenador al que se instala un programa para ejecutar la serie anteriormente descrita de procesos.
El programa puede registrarse, por anticipado, en un disco duro 905 y una memoria ROM 903 que sirven como un soporte de registro incorporado en el ordenador.
Como alternativa, el programa se puede memorizar (registrar), de forma temporal o permanente, en un soporte de registro extraíble 911, tal como un disco flexible, una memoria CD-ROM (Memoria de Lectura Solamente de Disco Compacto), un disco MO (Magneto-óptico), un disco DVD (Disco Versátil Digital), un disco magnético o una memoria de semiconductores. Dicho soporte de registro extraíble 911 puede proporcionarse como un así denominado software empaquetado.
Además de instalarse en un ordenador desde el soporte de registro extraíble 911, tal como se describió anteriormente, los programas se pueden transferir al ordenador en una manera inalámbrica, desde un sitio de descarga, por intermedio de un satélite artificial para la difusión vía satélite digital o puede transferirse, en forma cableada, al ordenador a través de una red, tal como una red LAN (Red de Área Local) o a través de Internet. En el ordenador, los programas que se transfieren, de tal manera, pueden recibirse en una sección de comunicación 908 y pueden instalarse en el disco duro 905 allí contenido.
El ordenador incorpora una unidad CPU (Unidad Central de Procesos) 902. Una interfaz de entrada/salida 910 está conectada a la unidad CPU 902 a través de un bus 901. Cuando se introduce una instrucción por un usuario mediante la utilización de una sección de entrada 907 incluyendo un teclado, un ratón, un micrófono, etc., a través de la interfaz de entrada/salida 910, la unidad CPU 902 ejecuta el programa memorizado en la memoria ROM (memoria de lectura solamente) 903 en conformidad con esa instrucción. Como alternativa, la unidad CPU 902 carga, en la memoria RAM (memoria de acceso aleatorio) 904, el programa memorizado en el disco duro 905, el programa que se transfiere desde un satélite o una red, que se recibe por la sección de comunicación 908 y que se instala en el disco duro 905 o el programa que se lee desde el medio de registro extraíble 911 cargado en una unidad 909 y está instalado en el disco duro 905 y la unidad CPU 902 ejecuta el programa. Como resultado, la unidad CPU 902 realiza el procesamiento en conformidad con los diagramas de flujo anteriormente descritos o el procesamiento conforme a los diagramas de bloques anteriormente descritos. A continuación, a modo de ejemplo, la unidad CPU 902 proporciona el resultado del procesamiento a través de la interfaz de entrada/salida 910 desde una sección de salida 906 incluyendo una pantalla LCD (Pantalla de Cristal Líquido), un altavoz, etc., transmite el resultado del procesamiento desde la sección de comunicación 908 y lo registra, además, en el disco duro 905 cuando se requiere.
En esta especificación, las etapas de procesamiento para la escritura del programa para permitir al ordenador realizar varios procesamientos no hay necesidad de su ejecución cronológica, en función de las órdenes escritas como diagramas de flujo. Además, se pueden ejecutar de forma simultánea o individual (a modo de ejemplo, procesamiento en paralelo o procesamientos basados en el objeto).
El programa puede procesarse por un solo ordenador o puede procesarse por una pluralidad de ordenadores en una manera distribuida. Además, el programa puede transferirse a un ordenador distante y puede procesar a este respecto.
Para la decodificación de códigos LDPC que tienen una matriz de control que puede representarse por una combinación de una matriz unitaria (P x P), una matriz cuasi-unitaria en la que uno o más '1', que son elementos de la matriz unitaria, se sustituyen con 0, una matriz de desplazamiento en la que la matriz unitaria o la matriz cuasi-unitaria se desplaza de forma cíclica, una matriz suma, que es la suma de dos o más de la matriz unitaria, la matriz cuasi-unitaria y la matriz de desplazamiento y una matriz nula (P x P), una arquitectura para realizar simultáneamente p cálculos de nodos de control y p cálculos de nodos de variables se adoptan a este respecto. En consecuencia, realizando simultáneamente p cálculos de nodos, se puede suprimir la frecuencia operativa dentro de un margen factible. De este modo, aunque se puede realizar un gran número de decodificaciones iterativas, es posible impedir el acceso simultáneo a diferentes direcciones durante la escritura y la lectura desde la memoria (FIFO y RAM).
Cuando los códigos LDPC, representados por la matriz de control de la Figura 15, se decodifican utilizando repetidamente el aparato de decodificación 300 de las Figuras 16A a 16C, puesto que es posible realizar los cálculos sobre 269 bordes cada cinco bordes para cada nodos de control y cada nodo de variable. Por lo tanto, para una decodificación, el aparato de decodificación necesita realizar 269/5 x 2 aprox. 108 operaciones de reloj. Por lo tanto, con el fin de realizar 50 decodificaciones, mientras se reciben 90 elementos de información de códigos, el aparato de decodificación necesita realizar 108 x 50 = 5400 operaciones de reloj y por lo tanto, una frecuencia operativa aproximadamente 60 veces tan alta como la frecuencia de recepción se puede utilizar a este respecto. Por lo tanto, en conformidad con el aparato de decodificación de las Figuras 16A a 16C, cuando se comparan con el aparato de decodificación de la Figura 9 para realizar los cálculos de nodos uno a uno, solamente se necesita una frecuencia operativa de 1/5. Cuando se ve desde el aspecto de la escala circuital, puesto que el tamaño de la memoria es el mismo, aún cuando el circuito lógico se haga ligeramente grande, la influencia del conjunto es pequeña.
El aparato de decodificación 400 de la Figura 18 y el aparato de decodificación 600 de la Figura 26 tienen una capacidad de memoria más pequeña que la que tiene el aparato de decodificación 300 de las Figuras 16A a 16C.
A modo de ejemplo, cuando la matriz de control de los códigos LDPC es la matriz de control de la Figura 15 y el número de bits de cuantización de los códigos LDPC es 6, en el aparato de decodificación 300 de las Figuras 16A a 16C, la memoria de almacenamiento de datos de bordes requiere dos memorias RAMs que tengan la capacidad de 269 (el número total de los bordes) x 6 = 1614 bits, es decir, la capacidad de 1614 x 2 = 3228 bits para las dos memorias RAMs. En comparación, a modo de ejemplo, cuando el número de bits de cuantización de los resultados de la decodificación en curso v es 9, en el aparato de decodificación 400 de la Figura 18, la memoria 413 para memorizar los resultados de la decodificación en curso necesita estar provista de una memoria RAM que tenga una capacidad de 1614 bits del número total de los bordes y la memoria 410 para memorizar los resultados de la decodificación en curso necesita estar provista de una memoria RAM que tenga una capacidad del valor multiplicado de la longitud de código (el número de las columnas de la matriz de control) de los códigos LDPC y el número de bits de cuantización de los resultados de la decodificación en curso v, es decir, la capacidad de 90 x 9 = 810 bits. De este modo, la escala circuital del aparato de decodificación se puede reducir. Además, en el aparato de decodificación 400 de la Figura 18, puesto que no es necesario para la sección de cálculo 415 realizar el segundo cálculo para tener una memoria FIFO, la escala circuital de la lógica se puede reducir.
Además, a modo de ejemplo, cuando la matriz de control de los códigos LDPC es la matriz de control de la Figura 15 y el número de bits de cuantización de los resultados de la decodificación en curso v es 10, en el aparato de decodificación 600 de la Figura 26, la memoria 610 para memorizar los resultados de la decodificación en curso necesita estar provista de una memoria RAM que tenga una capacidad de 1614 bits del número total de los bordes y la memoria 613 para memorizar los resultados de la decodificación en curso necesita estar provista de una memoria RAM que tenga una capacidad del valor multiplicado del número de filas de la matriz de control y los resultados de la decodificación en curso v, es decir, una capacidad de 30 x 10 = 300 bits. De este modo, se puede reducir la escala circuital del aparato de decodificación. Además, en el aparato de decodificación 600 de la Figura 26, puesto que no es necesario para la sección de cálculo 612 realizar el primer cálculo para tener una memoria FIFO, la escala circuital de la lógica se puede también reducir.
En general, puesto que la longitud de código de los códigos LDPC es tan grande como varios miles a varios centenares de miles, los códigos LDPC cuyo valor de p tenga un tamaño de varios centenares se utilizan a este respecto. En ese caso, aumentan las ventajas de utilizar el aparato de decodificación según la presente invención.
Además, puesto que el aparato de decodificación, según la presente invención, pone en práctica verdaderamente el algoritmo de suma-producto, no ocurre una pérdida de decodificación distinta a la cuantización de mensajes.
Aplicabilidad industrial
Desde los anteriores puntos de vista, utilizando el aparato de decodificación según la presente invención, se hace posible 5 la decodificación de alto rendimiento.
Además, las configuraciones relacionadas con la invención, que no son formas de realización de la presente invención, se dan a conocer en las clausulas numeradas siguientes:
1. Un aparato de decodificación para decodificar códigos LDPC (Control de Paridad de Baja Densidad), cuando se utilizan como una sub-matriz, una matriz unitaria (P x P), una matriz cuasi-unitaria en la que uno o más '1', que son elementos de la matriz unitaria, se sustituyen con 0, una matriz de desplazamiento en la que dicha matriz unitaria o dicha matriz cuasi-unitaria se desplaza de forma cíclica, una matriz suma, que es la suma de dos o más de dicha matriz unitaria, dicha matriz cuasi-unitaria y dicha matriz de desplazamiento o una matriz nula (P x P), una matriz de control de
15 dichos códigos LDPC se representa por una combinación de una pluralidad de dichas sub-matrices, comprendiendo dicho aparato de decodificación:
un primer medio de cálculo para realizar simultáneamente P cálculos de nodos de control para decodificar dichos códigos LDPC y
un segundo medio de cálculo para realizar simultáneamente P cálculos de nodos de variables para decodificar dichos códigos LDPC.
2. El aparato de decodificación según la Cláusula 1, en donde dicho primer medio de cálculo tiene P calculadores de 25 nodos de control para realizar cálculos de nodos de control y
dicho segundo medio de cálculo tiene P calculadores de nodos de variables para realizar cálculos de nodos de variables.
3. El aparato de decodificación según la Cláusula 1, que comprende, además:
un medio de memorización de mensajes para las operaciones de lectura y escritura simultáneas de datos de mensajes correspondientes a P bordes, que se obtienen como un resultado de dichos P cálculos de nodos de control o dichos P cálculos de nodos de variables.
35 4. El aparato de decodificación según la Cláusula 3, en donde dicho medio de memorización de mensajes memoriza datos de mensajes correspondientes a los bordes, que son objeto de lectura durante el cálculo del nodo de control, de tal manera que los '1' de la matriz de control se empaquetan más próximos en la dirección de las filas.
5.
El aparato de decodificación según la Cláusula 3, en donde dicho medio de memorización de mensajes memoriza datos de mensajes correspondientes a los bordes, que son objeto de lectura durante el cálculo de nodo de variable, de tal manera que los '1' de la matriz de control se empaqueten más próximos en la dirección de las columnas.
6.
El aparato de decodificación según la Cláusula 3, en donde dicho medio de memorización de mensajes memoriza, en la misma dirección, los mensajes correspondientes a P bordes que pertenecen a una matriz unitaria cuyo peso de
45 ponderación es 1, una matriz cuasi-unitaria o una matriz de desplazamiento cuando las sub-matrices, cuyo peso de ponderación es 2 o más desde entre las sub-matrices que representan dicha matriz de control, se representan en la forma de la suma de la matriz unitaria cuyo peso de ponderación es 1, la matriz cuasi-unitaria o la matriz de desplazamiento.
7. El aparato de decodificación según la Cláusula 3, en donde dicho medio de memorización de mensajes comprende un número de filas/p FIFOs y un número de columnas/p FIFOs y
dicho número de filas/p FIFOs y dicho número de columnas/p FIFOs tienen, cada uno, un número de palabras que corresponden al peso de ponderación de la fila y al peso de ponderación de la columna de dicha matriz de control, 55 respectivamente.
8.
El aparato de decodificación según la Cláusula 3, en donde dicho medio de memorización de mensajes comprende una memoria RAM (memoria de acceso aleatorio) y
dicha memoria RAM memoriza dichos datos de mensajes en la secuencia de lectura, de tal manera que se empaqueten más próximos y efectúa la lectura de dichos datos de mensajes en la secuencia de posiciones de memoria.
9.
El aparato de decodificación según la Cláusula 1, que comprende, además:
10.
El aparato de decodificación según la Cláusula 9, en donde dicho medio de memorización de información recibida memoriza dicha información recibida de tal manera que la información recibida pueda ser objeto de lectura en la secuencia necesaria para dicho cálculo de nodos de variables.
65 un medio de memorización de información recibida para memorizar la información recibida de códigos LDPC y para la lectura simultánea de P elementos de dicha información recibida.
5 11. El aparato de decodificación según la Cláusula 1 que comprende, además:
un medio para redisponer de los mensajes obtenidos como un resultado de dichos P cálculos de nodos de control o dichos P cálculos de nodos de variables.
12.
El aparato de decodificación según la Cláusula 11, en donde dicho medio de redisposición comprende un dispositivo de desplazamiento de rotación.
13.
El aparato de decodificación según la Cláusula 1, en donde dicho primer medio de cálculo y dicho segundo medio de
cálculo determinan los mensajes correspondientes a P bordes. 15
14.
El aparato de decodificación según la Cláusula 1, en donde dicho primer medio de cálculo realiza algunos de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables y
dicho segundo medio de cálculo realiza algunos de los otros de dichos P cálculos de nodos de variables.
15.
El aparato de decodificación según la Cláusula 14, en donde dicho primer medio de cálculo comprende P calculadores para realizar algunos de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables y
dicho segundo medio de cálculo comprende P calculadores para realizar algunos de los otros de dichos P cálculos de 25 nodos de variables.
16.
El aparato de decodificación según la Cláusula 14 que comprende, además:
un primer medio de memorización de resultados de la decodificación en curso para las operaciones de lectura y escritura simultáneas de los primeros resultados de la decodificación en curso correspondientes a P bordes, que se obtienen por dicho primer medio de cálculo realizando algunos de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables.
17.
El aparato de decodificación según la Cláusula 16, en donde dicho primer medio de memorización de resultados de
35 la decodificación en curso memoriza dichos resultados de la decodificación en curso correspondientes al borde, que son objeto de lectura cuando algunos de los otros de dichos P cálculos de nodos de variables se realiza, de tal manera que los '1' de la matriz de control se empaqueten más próximos en la dirección de la fila.
18.
El aparato de decodificación según la Cláusula 16, en donde dicho primer medio de memorización de resultados de la decodificación en curso son dos memorias RAMs (memorias de acceso aleatorio) de puerto único.
19.
El aparato de decodificación según la Cláusula 18, en donde dichas dos memorias RAMs de puerto único memorizan, de forma alternada, dichos primeros resultados de la decodificación en curso en unidades de dichos primeros resultados de la decodificación en curso para bordes de P de dicha matriz de control.
20.
El aparato de decodificación según la Cláusula 18, en donde dichas dos memorias RAMs (memorias de acceso aleatorio) de puerto único leen, cada una, dichos primeros resultados de la decodificación en curso memorizados en la misma dirección.
21.
El aparato de decodificación según la Cláusula 16, en donde dicho primer medio de memorización de los resultados de la decodificación en curso memoriza, en la misma dirección, dichos primeros resultados de la decodificación en curso correspondientes a P bordes pertenecientes a una matriz unitaria cuyo peso de ponderación es 1, una matriz cuasiunitaria o una matriz de desplazamiento cuando las sub-matrices cuyo peso de ponderación es 2 o más desde entre las sub-matrices que representan dicha matriz de control se representan en la forma de la suma de la matriz unitaria cuyo
55 peso de ponderación es 1, la matriz cuasi-unitaria o la matriz de desplazamiento.
22.
El aparato de decodificación según la Cláusula 14 que comprende, además:
un medio de memorización de resultados de la decodificación en curso para la lectura y escritura simultáneas de dichos segundos resultados de la decodificación en curso correspondientes a P bordes, que se obtienen por dicho segundo medio de cálculo realizando algunos de los otros de dichos P cálculos de nodos de variables.
23.
El aparato de decodificación según la Cláusula 14 que comprende, además:
24.
El aparato de decodificación según la Cláusula 23, en donde dicho medio de memorización de información recibida memoriza dicha información recibida de tal manera que se pueda leer en la secuencia necesaria para algunos de los otros dichos P cálculos de nodos de variables.
65 un medio de memorización de información recibida para memorizar la información recibida de códigos LDPC y efectuar la lectura simultánea de dichos P elementos de información recibida.
5 25. El aparato de decodificación según la Cláusula 14 que comprende, además:
medios de redisposición para redisponer los primeros resultados de la decodificación en curso obtenidos por dicho primer medio de cálculo realizando algunos de dichos P cálculos de nodos de control y dichos P de cálculos de nodos de variables o segundos resultados de la decodificación en curso obtenidos por dicho segundo medio de cálculo realizando
10 algunos de los otros de dichos P cálculos de nodos de variables.
26. El aparato de decodificación según la Cláusula 25, en donde dicho medio de redisposición comprende un dispositivo de desplazamiento barrel.
15 27. El aparato de decodificación según la Cláusula 1, en donde dicho primer medio de cálculo realiza algunos de dichos P cálculos de nodos de control y
dicho segundo medio de cálculo realiza algunos de los otros de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables.
28. El aparato de decodificación según la Cláusula 27, en donde dicho primer medio de cálculo comprende P calculadores para realizar algunos de dichos P cálculos de nodos de control y
dicho segundo medio de cálculo comprende P calculadores para realizar algunos de los otros de dichos P cálculos de 25 nodos de control y dichos P cálculos de nodos de variables.
29. El aparato de decodificación según la Cláusula 27 que comprende, además:
un primer medio de memorización de resultados de la decodificación en curso para la lectura y escritura simultáneas de
30 los primeros resultados de la decodificación en curso correspondientes a P bordes, que se obtienen por dicho primer medio de cálculo realizando algunos de dichos P cálculos de nodos de control.
30. El aparato de decodificación según la Cláusula 27 que comprende, además:
35 un segundo medio de memorización de resultados de la decodificación en curso para la lectura y escritura simultáneas de los segundos resultados de la decodificación en curso correspondientes a P bordes, que se obtienen por dicho segundo medio de cálculo realizando algunos de los otros de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables.
40 31. El aparato de decodificación según la Cláusula 30, en donde dicho segundo medio de memorización de resultados de la decodificación en curso memoriza dichos segundos resultados de la decodificación en curso correspondientes a bordes, que son objeto de lectura cuando se realizan algunos de los otros de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables, de tal manera que los '1' de la matriz de control se empaquetan más próximos en la dirección de las columnas.
32.
El aparato de decodificación según la Cláusula 30, en donde dicho segundo medio de memorización de resultados de la decodificación en curso son dos memorias RAMs (memorias de acceso aleatorio) de puerto único.
33.
El aparato de decodificación según la Cláusula 32, en donde dichas memorias RAM de puerto único memorizan, de
50 forma alternada, dichos segundos resultados de la decodificación en curso en unidades de dichos segundos resultados de la decodificación en curso correspondientes a P bordes de dicha matriz de control.
34. El aparato de decodificación según la Cláusula 32, en donde dichas dos memorias RAMs (memorias de acceso
aleatorio) de puerto único efectúan la lectura, cada una, de dichos segundos resultados de la decodificación en curso en 55 la misma dirección.
35. El aparato de decodificación según la Cláusula 30, en donde dicho segundo medio de memorización de resultados de la decodificación en curso memoriza, en la misma dirección, dichos segundos resultados de la decodificación en curso correspondientes a P bordes que pertenecen a una matriz unitaria cuyo peso de ponderación es 1, una matriz cuasi
60 unitaria o una matriz de desplazamiento cuando las sub-matrices cuyo peso de ponderación es 2 o más de entre las submatrices que representan dicha matriz de control se representan en la forma de la suma de la matriz unitaria cuyo peso de ponderación es 1, la matriz cuasi-unitaria o la matriz de desplazamiento.
36. El aparato de decodificación según la Cláusula 27 que comprende, además: 65
un medio de memorización de información recibida para memorizar la información recibida de códigos LDPC y para la lectura simultánea de dichos P elementos de información recibida.
37. El aparato de decodificación según la Cláusula 36, en donde dicho medio de memorización de información recibida
5 memoriza dicha información recibida de tal manera que dicha información recibida pueda leerse en la secuencia necesaria para algunos de los otros de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables.
38. El aparato de decodificación según la Cláusula 27 que comprende, además:
10 medios de redisposición para redisponer los primeros resultados de la decodificación en curso obtenidos por dicho primer medio de cálculo realizando algunos de dichos P cálculos de nodos de control o segundos resultados de la decodificación en curso obtenidos por dicho segundo medio de cálculo realizando algunos de los otros de dichos P cálculos de nodos de control y dichos P cálculos de nodos de variables.
15 39. El aparato de decodificación según la Cláusula 38, en donde dichos medios de redisposición comprenden, un dispositivo de desplazamiento de rotación.
40. Un método de decodificación para su uso con un aparato de decodificación para decodificar códigos LDPC (control de paridad de baja densidad), cuando se utilizan como una sub-matriz, una matriz unitaria (P x P), una matriz cuasi
20 unitaria en la que uno o más '1', que son elementos de la matriz unitaria, se sustituyen con 0, una matriz de desplazamiento en la que dicha matriz unitaria o dicha matriz cuasi-unitaria se desplaza de forma cíclica, una matriz suma, que es la suma de dos o más de dicha matriz unitaria, dicha matriz cuasi-unitaria y dicha matriz de desplazamiento o una matriz nula (P x P), una matriz de control de códigos LDPC se representa por una combinación de una pluralidad de dichas sub-matrices, comprendiendo dicho método de decodificación:
25 una primera etapa de cálculo de realización simultánea de P cálculos de nodos de control para decodificar dichos códigos LDPC y
una segunda etapa de cálculo de realizar simultáneamente P cálculos de nodos de variables para decodificar dichos 30 códigos LDPC.
41. Un programa para permitir a un ordenador decodificar códigos LDPC (control de paridad de baja densidad) comprendiendo dicho programa:
35 una primera etapa de cálculo de realización simultánea de P cálculos de nodos de control para decodificar dichos códigos LDPC y
una segunda etapa de cálculo de realización simultánea de P cálculos de nodos de variables para decodificar dichos códigos LDPC.

Claims (8)

  1. REIVINDICACIONES
    1. Un aparato de decodificación (400) para decodificar un Código de Control de Paridad de Baja Densidad LDPC adaptado para poner en práctica una propagación de creencia sobre una representación de gráfico de Tanner del código
    5 LDPC, en donde la matriz de control de paridad, correspondiente al gráfico de Tanner de dicho código LDPC, está constituida por una combinación de una pluralidad de sub-matrices P x P
    en donde cada sub-matriz es una matriz unitaria P x P; una matriz cuasi-unitaria en donde uno o varios ‘1’, que son elementos de la matriz unitaria P x P se sustituyen por 0; una matriz de desplazamiento en donde dicha matriz unitaria o
    10 dicha matriz cuasi-unitaria está desplazada de forma cíclica; una matriz suma P x P, que es la suma de dos o más de dicha matriz unitaria P x P, de dicha matriz cuasi-unitaria y de dicha matriz de desplazamiento, en donde dicha matriz suma P x P tiene un peso de ponderación de línea o de columna de dos o más; o una matriz nula P x P y dicha combinación comprende matrices suma P x P,
    15 comprendiendo dicho aparato de decodificación:
    un segundo medio de cálculo (415) adaptado para realizar simultáneamente una primea parte de P cálculos de nodos de
    variables para obtener P segundos resultados de decodificación en curso v (D415) según la ecuación
    en donde u0 representa un valor inicial para un mensaje recibido a decodificarse y
    representa un valor integrado 20 en donde un primer resultado de decodificación en curso uj previamente obtenido por un primer medio de cálculo (412) y memorizado en una primera memoria (413) se suma en todos los dv bordes conectados a un nodo de variable;
    una segunda memoria (410) adaptada para memorizar los P segundos resultados de decodificación en curso v a partir del segundo medio de cálculo en una misma dirección;
    25 un primer medio de cálculo (412), adaptado para realizar simultáneamente una segunda parte de los P cálculos de nodos de variables según la ecuación vi = v – udv, en donde udv es un primer resultado de decodificación en curso obtenido anteriormente correspondiente al borde para el que debe determinarse el mensaje de borde vi y para realizar simultáneamente P cálculos de nodos de control utilizando los valores de mensaje de borde para vi para obtener los P
    30 primeros resultados de decodificación en curso ui (D412) y
    la primera memoria (413) adaptada para memorizar los P primeros resultados de decodificación en curso ui procedentes del primer medio de cálculo en una misma dirección;
    35 en donde la primera memoria está, además, adaptada para memorizar, en una misma dirección, para una matriz suma cuyo peso de ponderación de línea o de columna es dos o más, los primeros resultados de decodificación en curso correspondientes a los P bordes que pertenecen a la matriz unitaria, a la matriz cuasi-unitaria o a la matriz de desplazamiento incluida en la suma para formar dicha matriz suma, cuyo peso de ponderación de línea o de columna es dos o más.
  2. 2. El aparato de decodificación según la reivindicación 1, en donde dicho segundo medio de cálculo comprende P calculadores, cada uno para realizar la primera parte de un cálculo de nodo de variable y
    dicho primer medio de cálculo comprende P calculadores para realizar la segunda parte de un cálculo de nodo de 45 variable y de un cálculo de nodo de control.
  3. 3. El aparato de decodificación según la reivindicación 1, en donde dicha primera memoria comprende dos memorias de acceso aleatorio (RAMs) de puerto único.
    50 4. El aparato de decodificación según la reivindicación 3, en donde dichas dos memorias RAMs de puerto único memorizan, de forma alternada, dichos segundos resultados de decodificación en curso en unidades de dichos segundos resultados de decodificación en curso correspondientes a bordes de P filas de dicha matriz de control.
  4. 5. El aparato de decodificación según la reivindicación 3, en donde dichas dos memorias RAMs de puerto único
    55 efectúan la lectura, cada una, de dichos segundos resultados de decodificación en curso, memorizados en la misma dirección.
  5. 6.
    El aparato de decodificación según la reivindicación 1 que comprende, además:
  6. 7.
    El aparato de decodificación según la reivindicación 6, en donde dicho medio de memorización de información recibida memoriza dicha información recibida, de tal manera que dicha información recibida pueda ser objeto de lectura en la secuencia necesaria para dicha primera parte de los P cálculos de nodos de variables.
    60 un medio de memorización de informaciones recibidas (416) para memorizar la información recibida de códigos LDPC y para efectuar la lectura simultanea de P elementos de información recibida.
    5 8. El aparato de decodificación según la reivindicación 1 que comprende, además:
    un medio de redisposición (411, 414) para redisponer los primeros resultados de decodificación en curso obtenidos por dicho primer medio de cálculo realizando dichos P cálculos de nodos de control y dicha segunda parte de los P cálculos de nodos de variables o los segundos resultados de decodificación en curso obtenidos por dicho segundo medio de
    10 cálculo realizando dicha primera parte de los P cálculos de nodos de variables.
  7. 9. El aparato de decodificación según la reivindicación 8, en donde dicho medio de redisposición comprende un dispositivo desplazador de rotación.
    15 10. Un método de decodificación para decodificar un código de control de paridad de baja densidad LDPC, adaptado para poner en práctica una propagación de creencia en una representación de gráficos de Tanner del código LDPC, en donde la matriz de control de paridad correspondiente al gráfico de Tanner de dicho código LDPC está constituida por una combinación de una pluralidad de sub-matrices de P x P;
    20 en donde cada sub-matriz es una matriz unitaria P x P; una matriz cuasi-unitaria en donde uno o varios ‘1’, que son elementos de la matriz unitaria P x P, se sustituyen por 0; una matriz de desplazamiento en donde dicha matriz unitaria o dicha matriz cuasi-unitaria se desplaza de forma cíclica; una matriz suma P x P, que es la suma de dos o más de dicha matriz unitaria P x P, de dicha matriz cuasi-unitaria y de dicha matriz de desplazamiento, en donde dicha matriz suma P x P tiene un peso de ponderación de línea o de columna de dos o más o una matriz nula P x P y dicha combinación
    25 comprende matrices suma P x P,
    comprendiendo dicho método de decodificación las etapas del método siguientes:
    realizar simultáneamente una primera parte de P cálculos de nodos de variables para obtener P segundos resultados de
    30 decodificación en curso v (D415) según la ecuación en donde u0 representa un valor inicial para un
    mensaje recibido a decodificar y
    representa un valor integrado en donde un primer resultado de decodificación en curso uj previamente obtenido por un primer medio de cálculo (412) y memorizado en una primera memoria (413) se suma en todos los dv bordes conectados a un nodo de variable utilizando un segundo medio de cálculo (415);
    35 memorizar los P segundos resultados de decodificación en curso v a partir del segundo medio de cálculo en una misma dirección de una segunda memoria (410);
    realizar simultáneamente una segunda parte de los P cálculos de nodos de variables según la ecuación vi = v – udv, usando un primer medio de cálculo (412) en donde udv es un primer resultado de decodificación en curso obtenido
    40 anteriormente que corresponde al borde para el que debe determinarse el mensaje de borde vi y realizar simultáneamente P cálculos de nodos de control utilizando los valores de mensaje de borde para vi para obtener los P primeros resultados de decodificación en curso ui (D412) y
    memorizar los P primeros resultados de decodificación en curso ui procedentes del primer medio de cálculo en una
    45 misma dirección de la primera memoria (413), incluyendo memorizar, en una misma dirección, para una matriz suma cuyo peso de ponderación de línea o de columna es dos o más, los primeros resultados de decodificación en curso correspondientes a los P bordes que pertenecen a la matriz unitaria, a la matriz cuasi-unitaria o a la matriz de desplazamiento incluidas en la suma para formar dicha matriz suma, cuyo peso de ponderación de línea o de columna es dos o más.
  8. 11. Un programa para permitir a un ordenador decodificar códigos LDPC (Control de Paridad de Baja Densidad) poniendo en práctica el método de la reivindicación 10.
    NODO DE CONTROL
    NODO DE VARIABLES
    NODO DE VARIABLES
    NODO DE CONTROL
    MEMORIA PARA BORDES
    NÚMERO DE TODOS LOS BORDES x NÚMERO DE BITS DE CUANTIZACIÓN
    CALCULADOR NODOS CONTROL
    MEMORIA PARA RECEPCIÓN
    LONGITUD CÓDIGO x NÚMERO DE BITS DE CUANTIZACIÓN
    MEMORIA PARA BORDES
    NÚMERO TOTAL DE BORDES x NÚMERO DE BITS DE CUANTIZACIÓN
    CALCULADOR NODO VARIABLES
    RETARDO 9 RELOJ
    RETARDO 9 RELOJ
    RETARDO 5 RELOJ
    CALCULADOR NODOS DE VARIABLES
    DISPOSITIVO INTERCAMBIO BORDES
    CALCULADOR NODOS CONTROL
    DISPOSITIVO INTERCAMBIO BORDES
    MEMORIA PARA RECEPCIÓN
    MEMORIA PARA
    BORDES
    MEMORIA PARA
    BORDES
    NÚMERO TOTAL
    DE BORDES
    NÚMERO TOTAL
    DE BORDES
    NÚMERO DE
    BITS DE
    CUANTIZACIÓN
    NÚMERO DE
    BITS DE
    CUANTIZACIÓN
    MEMORIA
    LONGITUD
    PARA
    CÓDIGO RECEPCIÓN
    x NÚMERO DE BITS CUANTIZACIÓN
    UN NODO DE 8 ENTRADAS Y SALIDAS
    CALCULADOR NODOS CONTROLCALCULADOR NODOS CALCULADOR NODOS CONTROLDE VARIABLES
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS CONTROL
    UN TOTAL DE 15 NODOS DE5 ENTRADAS Y SALIDAS
    CALCULADOR NODOS CONTROLCALCULADOR NODOS
    DE VARIABLESCALCULADOR NODOS CONTROL
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS DE VARIABLES
    NÚMERO DE BITS NÚMERO TOTAL MEMORIA PARA CUANTIZACIÓN DE BORDES BORDES
    DISPOSITIVO INTERCAMBIO BORDES
    NÚMERO DE BITS NÚMERO TOTAL MEMORIA PARA CUANTIZACIÓN DE BORDES BORDES
    DISPOSITIVO INTERCAMBIO BORDES
    UN TOTAL DE 29 NODOS DE 9
    ENTRADAS Y
    SALIDAS UN TOTAL DE 45 NODOS DE
    3 ENTRADAS Y SALIDAS
    UN TOTAL DE 29 NODOS DE 9ENTRADAS Y
    SALIDAS CALCULADOR NODOS
    DE VARIABLES
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS CONTROL
    CALCULADOR NODOS CONTROL
    UN TOTAL DE 29 NODOS DE21 ENTRADAS Y SALIDAS
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS CONTROL
    CALCULADOR NODOS CONTROL
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS DE VARIABLES
    CALCULADOR NODOS CONTROL
    NÚMERO DE BITS NÚMERO TOTAL MEMORIA PARA CUANTIZACIÓN DE BORDES BORDES
    DISPOSITIVO INTERCAMBIO BORDES
    NÚMERO DE BITS
    NÚMERO TOTAL MEMORIA PARA
    CUANTIZACIÓN
    DE BORDES BORDES
    DISPOSITIVO INTERCAMBIO BORDES
    1 NODO DE 1 ENTRADA Y SALIDA
    CIRCUITO DESPLAZ. CÍCLICO
    MEMORIA PARA DATOS RECIBIDOS
    LLR DERECEPCIÓN
    CIRCUITO DESPLAZ. CÍCLICO
    INICIO PROCESO DECODIFICACIÓN
    REALIZAR CÁLCULO NODOS DE VARIABLES
    SUMINISTRAR CINCO MENSAJES OBTENIDOS COMO RESULTADO DEL CÁLCULO DE NODOS DE VARIABLES AL CIRCUITO DE DESPLAZAMIENTO CÍCLICO
    DESPLAZAR CÍCLICAMENTE CINCO MENSAJES
    MEMORIZAR CINCO MENSAJES EN MEMORIA DE ALMACENAMIENTOS DATOS BORDES 300
    ¿SE HAN CALCULADO MENSAJES DENÚMERO TOTAL DE BORDES?
    REALIZAR CÁLCULO NODO DE CONTROL
    SUMINISTRAR CINCO MENSAJES OBTENIDOS COMO RESULTADO DEL CÁLCULO DE NODOS DE CONTROL AL CIRCUITO DE DESPLAZAMIENTO CÍCLICO
    DESPLAZAR CÍCLICAMENTE CINCO MENSAJES
    MEMORIZAR CINCO MENSAJES EN MEMORIA DE ALMACENAMIENTOS DATOS BORDES 304
    ¿SE HAN CALCULADO MENSAJES DE NÚMERO TOTAL DE BORDES?
    FIN
    SECCIÓNDE CONTROL
    MEMORIA PARAMEMORIZARRESULTADOSDECODIFICACIÓNEN CURSO
    LONGITUD CÓDIGO x NÚMERO DE BITS CUANTIZACIÓN
    CIRCUITO DESPLAZ. CÍCLICO
    MEMORIA PARARECEPCIÓN
    LONGITUD CÓDIGOx NÚMERO DE BITSCUANTIZACIÓN
    MEMORIA PARAMEMORIZARRESULTADOSDECODIFICACIÓNEN CURSO
    CIRCUITO
    NÚMERO DE ‘1’ DE
    DESPLAZ.
    MATRIZ DE
    CÍCLICO
    CONTROL x NÚMERO DE BITS DE CUANTIZACIÓN
    RETARDO 9 SEÑALES RELOJ
    RETARDO 9 SEÑALES RELOJ
    RETARDO 5 SEÑALES
    RETARDO 9 SEÑALES RELOJ
    RETARDO 9 SEÑALES RELOJ
    MEMORIA RAM PARA MEMORIZAR RESUTLADOS DECODIFICACIÓN EN CURSO
    MEMORIA RAM PARA MEMORIZAR RESUTLADOS DECODIFICACIÓN EN CURSO
    ESCRITURA DELECTURA DE
    MEMORIA RAM 502 PARA MEMORIZARLECTURA DE
    1ª A 5ª FILAS 11ª A 15ª FILAS
    RESULTADOS DECODIFICACIÓN EN CURSO 1ª A 5ª FILAS
    LECTURA DE ESCRITURA DE
    MEMORIA RAM 503 PARA MEMORIZAR
    6ª A 10ª FILAS 6ª A 10ª FILAS
    RESULTADOS DECODIFICACIÓN EN CURSO
    INICIO PROCESO DECODIFICACIÓN
    DESPLAZAR CÍCLICAMENTE CINCO RESULTADOS DE CODIFICACIÓN EN CURSO ui
    REALIZAR SEGUNDO CÁLCULO
    MEMORIZAR CINCO RESULTADOS DECODIFICACIÓN EN CURSO v OBTENIDOS COMO UN RESULTADO DE SEGUNDO CÁLCULO
    ¿SE HAN CALCULADO TODOS LOSRESULTADOS DE DECOFICACIÓN EN CURSO?
    DESPLAZAR CÍCLICAMENTE CINCO RESULTADOS DECODIFICACIÓN EN CURSO v
    REALIZAR PRIMER CÁLCULO
    MEMORIZAR CINCO RESULTADOS DECODIFICACIÓN EN CURSO uj OBTENIDOS COMO UN RESULTADO DEL PRIMER CÁLCULO
    ¿SE HAN CALCULADO RESULTADOSDECODIFICACIÓN EN CURSO DE NÚMERO TOTAL DE BORDES?
    FIN
    SECCIÓNDE CONTROL MEMORIA PARAMEMORIZARRESULTADOSDECODIFICACIÓNEN CURSO
    NÚMERO DE ‘1’ DE MATRIZ DE CONTROL x NÚMERO DE BITS CUANTIZACIÓN
    CIRCUITO DESPLAZ. CÍCLICO
    MEMORIA PARA RECEPCIÓN
    LONGITUD CÓDIGO x NÚMERO DE BITS CUANTIZACIÓN
    MEMORIA PARAMEMORIZARRESULTADOSDECODIFICACIÓNEN CURSO
    CIRCUITO
    NÚMERO DE
    DESPLAZ.
    FILAS DE MATRIZ
    CÍCLICO
    DE CONTROL x NÚMERO DE BITS DE CUANTIZACIÓN
    RETARDO 9 SEÑALES RELOJ
    RETARDO 9 SEÑALES RELOJ
    RETARDO 5 SEÑALES RELOJ
    RETARDO 5 SEÑALES RELOJ
    MEMORIA RAM PARA MEMORIZAR RESULTADOS DECODIFICACIÓN EN CURSO
    MEMORIA RAM PARA MEMORIZAR RESULTADOS DECODIFICACIÓN EN CURSO
    ESCRITURA DELECTURA DE
    MEMORIA RAM 702 PARA MEMORIZARLECTURA DE
    1ª A 5ª COLUMNAS 11ª A 15ª COLUMNAS
    RESUTLADOS DE CODIFICACIÓN EN CURSO 1ª A 5ª COLUMNAS
    LECTURA DE ESCRITURA DE
    MEMORIA RAM 703 PARA MEMORIZAR
    6ª A 10ª COLUMNAS 6ª A 10ª COLUMNAS
    RESUTLADOS DE CODIFICACIÓN EN CURSO
    INICIO PROCESO DECODIFICACIÓN
    DESPLAZAR CÍCLICAMENTE CINCO RESULTADOS DE CODIFICACIÓN EN CURSO w
    REALIZAR SEGUNDO CÁLCULO
    MEMORIZAR CINCO RESULTADOS DECODIFICACIÓN EN CURSO vi’ OBTENIDOS COMO UN RESULTADO DE SEGUNDO CÁLCULO
    ¿SE HAN CALCULADO TODOS LOS RESULTADOS DE DECOFICACIÓN EN CURSO?
    DESPLAZAR CÍCLICAMENTE CINCO RESULTADOS DECODIFICACIÓN EN CURSO vi’
    REALIZAR PRIMER CÁLCULO
    MEMORIZAR CINCO RESULTADOS DECODIFICACIÓN EN CURSO uj OBTENIDOS COMO UN RESULTADO DEL PRIMER CÁLCULO
    ¿SE HAN CALCULADO RESULTADOSDECODIFICACIÓN EN CURSO DE NÚMERO TOTAL DE BORDES?
    FIN
ES10178005T 2003-05-13 2004-04-19 Aparato de decodificación, método de decodificación y programa Expired - Lifetime ES2424463T3 (es)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2003133941 2003-05-13
JP2003133941 2003-05-13
JP2003294383A JP4225163B2 (ja) 2003-05-13 2003-08-18 復号装置および復号方法、並びにプログラム
JP2003294383 2003-08-18

Publications (1)

Publication Number Publication Date
ES2424463T3 true ES2424463T3 (es) 2013-10-02

Family

ID=33455446

Family Applications (3)

Application Number Title Priority Date Filing Date
ES04728265T Expired - Lifetime ES2401577T3 (es) 2003-05-13 2004-04-19 Dispositivo de decodificación, método de decodificación y programa
ES10178005T Expired - Lifetime ES2424463T3 (es) 2003-05-13 2004-04-19 Aparato de decodificación, método de decodificación y programa
ES10178046T Expired - Lifetime ES2426756T3 (es) 2003-05-13 2004-04-19 Aparato de decodificación, método de decodificación y programa

Family Applications Before (1)

Application Number Title Priority Date Filing Date
ES04728265T Expired - Lifetime ES2401577T3 (es) 2003-05-13 2004-04-19 Dispositivo de decodificación, método de decodificación y programa

Family Applications After (1)

Application Number Title Priority Date Filing Date
ES10178046T Expired - Lifetime ES2426756T3 (es) 2003-05-13 2004-04-19 Aparato de decodificación, método de decodificación y programa

Country Status (6)

Country Link
US (2) US7299397B2 (es)
EP (3) EP2270990B1 (es)
JP (1) JP4225163B2 (es)
KR (1) KR101090001B1 (es)
ES (3) ES2401577T3 (es)
WO (1) WO2004102811A1 (es)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409628B2 (en) * 2002-08-15 2008-08-05 Broadcom Corporation Efficient design to implement LDPC (Low Density Parity Check) decoder
US8140931B2 (en) * 2003-07-03 2012-03-20 Dtvg Licensing, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
US7296208B2 (en) * 2003-07-03 2007-11-13 The Directv Group, Inc. Method and system for generating parallel decodable low density parity check (LDPC) codes
KR20050118056A (ko) * 2004-05-12 2005-12-15 삼성전자주식회사 다양한 부호율을 갖는 Block LDPC 부호를 이용한이동 통신 시스템에서의 채널부호화 복호화 방법 및 장치
FR2871975B1 (fr) * 2004-06-22 2006-08-11 St Microelectronics Sa Decodeur ldpc
WO2006055086A1 (en) * 2004-10-01 2006-05-26 Thomson Licensing A low density parity check (ldpc) decoder
US7634710B2 (en) * 2005-03-25 2009-12-15 Teranetics, Inc. Efficient decoding
JP4729964B2 (ja) * 2005-04-25 2011-07-20 ソニー株式会社 復号装置および復号方法
JP4595650B2 (ja) * 2005-04-25 2010-12-08 ソニー株式会社 復号装置および復号方法
JP4622654B2 (ja) * 2005-04-25 2011-02-02 ソニー株式会社 復号装置および復号方法
JP4617985B2 (ja) * 2005-04-25 2011-01-26 ソニー株式会社 符号装置および符号化方法
JP2006339799A (ja) 2005-05-31 2006-12-14 Toshiba Corp イレギュラー低密度パリティチェック符号復号器及び方法
KR100727316B1 (ko) * 2005-06-01 2007-06-12 삼성전자주식회사 저밀도채리티체크 채널 디코딩 방법 및 장치
JP4730592B2 (ja) * 2005-07-11 2011-07-20 ソニー株式会社 復号装置および復号方法
CN101248583B (zh) * 2005-07-13 2012-04-18 三菱电机株式会社 通信装置以及解码方法
JP4293172B2 (ja) 2005-09-13 2009-07-08 ソニー株式会社 復号装置および復号方法
KR101196917B1 (ko) 2005-12-01 2012-11-05 톰슨 라이센싱 저밀도 패리티 체크 코딩된 신호를 디코딩하기 위한 장치및 방법
US7661055B2 (en) * 2005-12-05 2010-02-09 Broadcom Corporation Partial-parallel implementation of LDPC (Low Density Parity Check) decoders
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US7530002B2 (en) * 2006-01-03 2009-05-05 Broadcom Corporation Sub-matrix-based implementation of LDPC (Low Density Parity Check) decoder
US7617433B2 (en) * 2006-01-03 2009-11-10 Broadcom Corporation Implementation of LDPC (low density parity check) decoder by sweeping through sub-matrices
JP4739086B2 (ja) * 2006-04-05 2011-08-03 三菱電機株式会社 誤り訂正復号装置および誤り訂正復号方法
US7647548B2 (en) * 2006-07-31 2010-01-12 Agere Systems Inc. Methods and apparatus for low-density parity check decoding using hardware-sharing and serial sum-product architecture
JP4743156B2 (ja) 2007-04-27 2011-08-10 ソニー株式会社 復号装置
JP4780027B2 (ja) * 2007-04-27 2011-09-28 ソニー株式会社 復号装置、制御方法、及びプログラム
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
JP4487212B2 (ja) * 2007-10-19 2010-06-23 ソニー株式会社 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
JP4487213B2 (ja) * 2007-10-19 2010-06-23 ソニー株式会社 復号装置および方法、並びにプログラム
CN101431337A (zh) * 2007-11-09 2009-05-13 松下电器产业株式会社 提高编码并行度实现降低编码时延的方法
JP2009271956A (ja) * 2008-04-30 2009-11-19 Toshiba Corp データ復号装置,データ再生装置,およびデータ復号方法
US8443033B2 (en) * 2008-08-04 2013-05-14 Lsi Corporation Variable node processing unit
US8145986B2 (en) * 2008-09-22 2012-03-27 Broadcom Corporation Multi-CSI (Cyclic Shifted Identity) sub-matrix based LDPC (Low Density Parity Check) codes
JP5320964B2 (ja) * 2008-10-08 2013-10-23 ソニー株式会社 サイクリックシフト装置、サイクリックシフト方法、ldpc復号装置、テレビジョン受像機、及び、受信システム
JP5536155B2 (ja) * 2012-08-03 2014-07-02 トムソン ライセンシング 誤り訂正を実行する装置及び方法
KR102068030B1 (ko) 2012-12-11 2020-01-20 삼성전자 주식회사 메모리 컨트롤러 및 그 동작방법
RU2546070C1 (ru) * 2013-11-12 2015-04-10 Открытое акционерное общество "Калужский научно-исследовательский институт телемеханических устройств" Способ мягкого декодирования помехоустойчивого кода
US9553608B2 (en) * 2013-12-20 2017-01-24 Sandisk Technologies Llc Data storage device decoder and method of operation
KR102433645B1 (ko) * 2015-11-09 2022-08-18 삼성전자주식회사 무선 통신 시스템에서 복호화 방법 및 장치
JP7051024B2 (ja) * 2020-02-27 2022-04-08 三菱電機株式会社 復号方法、復号装置、制御回路およびプログラム記憶媒体

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6539367B1 (en) 2000-05-26 2003-03-25 Agere Systems Inc. Methods and apparatus for decoding of general codes on probability dependency graphs
JP4389373B2 (ja) 2000-10-11 2009-12-24 ソニー株式会社 2元巡回符号を反復型復号するための復号器
US6567465B2 (en) 2001-05-21 2003-05-20 Pc Tel Inc. DSL modem utilizing low density parity check codes
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6801919B2 (en) 2001-07-27 2004-10-05 Hewlett-Packard Development Company, L.P. Object oriented database interface encapsulation that allows for chronologically overlapping transactions in a multi-threaded environment
US7246304B2 (en) 2001-09-01 2007-07-17 Dsp Group Inc Decoding architecture for low density parity check codes
JP2003269302A (ja) * 2002-03-18 2003-09-25 Hitachi Ltd スタータ
US20040019845A1 (en) 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
US7178080B2 (en) 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
US6785863B2 (en) 2002-09-18 2004-08-31 Motorola, Inc. Method and apparatus for generating parity-check bits from a symbol set
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation

Also Published As

Publication number Publication date
US7299397B2 (en) 2007-11-20
EP1624581A1 (en) 2006-02-08
EP1624581B1 (en) 2013-01-02
EP1624581A4 (en) 2008-07-09
EP2270989A3 (en) 2011-06-22
ES2426756T3 (es) 2013-10-25
US20050240853A1 (en) 2005-10-27
KR20060007362A (ko) 2006-01-24
EP2270990B1 (en) 2013-07-10
EP2270989B1 (en) 2013-07-03
EP2270989A2 (en) 2011-01-05
KR101090001B1 (ko) 2011-12-05
EP2270990A2 (en) 2011-01-05
JP4225163B2 (ja) 2009-02-18
JP2004364233A (ja) 2004-12-24
EP2270990A3 (en) 2011-06-22
WO2004102811A1 (ja) 2004-11-25
USRE44420E1 (en) 2013-08-06
ES2401577T3 (es) 2013-04-22

Similar Documents

Publication Publication Date Title
ES2424463T3 (es) Aparato de decodificación, método de decodificación y programa
US7318186B2 (en) Decoding method, decoding apparatus, and program to decode low density parity check codes
JP4487213B2 (ja) 復号装置および方法、並びにプログラム
JP4487212B2 (ja) 復号装置および方法、送受信システム、受信装置および方法、並びにプログラム
US8086934B2 (en) Decoding apparatus and decoding method
KR20070065834A (ko) 복호장치, 제어 방법, 및 프로그램
US8205130B2 (en) Decoding apparatus
CN101567699B (zh) 解码装置
JP4285148B2 (ja) 復号装置および復号方法、並びにプログラム
JP4730592B2 (ja) 復号装置および復号方法
Hosseini et al. A reconfigurable FPGA implementation of an LDPC decoder for unstructured codes
JP4284600B2 (ja) 復号装置
JP4821724B2 (ja) 復号装置および復号方法