ES2248631T3 - Decodificador para codigos de bloque lineales con correccion de supresiones y errores individuales. - Google Patents

Decodificador para codigos de bloque lineales con correccion de supresiones y errores individuales.

Info

Publication number
ES2248631T3
ES2248631T3 ES02794135T ES02794135T ES2248631T3 ES 2248631 T3 ES2248631 T3 ES 2248631T3 ES 02794135 T ES02794135 T ES 02794135T ES 02794135 T ES02794135 T ES 02794135T ES 2248631 T3 ES2248631 T3 ES 2248631T3
Authority
ES
Spain
Prior art keywords
block
row
rows
deleted
received
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
ES02794135T
Other languages
English (en)
Inventor
Brian K. Butler
Jack K. Wolf
Ryan Milne
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Application granted granted Critical
Publication of ES2248631T3 publication Critical patent/ES2248631T3/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/65Purpose and implementation aspects
    • H03M13/6502Reduction of hardware complexity or efficient processing
    • 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/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon 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/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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product 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/29Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, 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 combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2927Decoding strategies
    • H03M13/293Decoding strategies with erasure setting
    • 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

Procedimiento para realizar la decodificación de bloque en un bloque recibido de símbolos codificados previamente de columna en columna con un código de bloque lineal (N, K), y de fila en fila con un código de detección de errores, que comprende: la identificación de una palabra de código correspondiente a una columna del bloque recibido que contiene un error de símbolo no detectado mediante dicho código de detección de errores; la determinación del emplazamiento del error de símbolo no detectado en la palabra de código; el marcado de la fila del bloque recibido que contiene el error de símbolo no detectado, como fila suprimida; y la realización de la decodificación de bloque para el bloque recibido que contiene la fila marcada como suprimida.

Description

Decodificador para códigos de bloque lineales con corrección de supresiones y errores individuales.
Campo
La presente invención se refiere en general a la transmisión de datos y, más particularmente, a las técnicas para realizar con eficacia la decodificación con corrección de supresiones y errores individuales para códigos de bloques lineales.
Antecedentes
Con la aparición de la comunicación digital y la necesidad de transmitir grandes cantidades de datos a través de un canal deteriorado y de banda limitada, la codificación de los datos para permitir su correcta recepción adquiere una gran importancia. La transmisión de datos suele degradarse debido al deterioro del canal de comunicación, provocado, por ejemplo, por el ruido térmico, las interferencias, las señales parásitas en el ancho de banda de transmisión, etc. Los datos recibidos suelen ser, pues, una versión distorsionada de los datos transmitidos.
Para que el receptor pueda detectar y/o corregir los errores en los datos recibidos, puede recurrirse a la codificación. Se dispone de diferentes códigos de corrección de errores que pueden dividirse de varias formas, por ejemplo, en códigos de bloque y códigos convolucionales. Los códigos convolucionales aportan una buena capacidad de corrección de errores, pero suelen proporcionar ráfagas de errores correlacionadas. Los códigos de bloque presentan una capacidad de manejo de ráfagas de errores incorporada cuando se combinan con un nivel adecuado de intercalado. Por ejemplo, un código Reed-Solomon puede ocuparse de cualquier ráfaga de errores de un símbolo, que comprende un número de bits particular.
En el documento "One-Shot Reed-Solomon Decoding for High-Performance Dependable Systems" de Yasunao Katayama y Sumio Morioka, se describe un procedimiento para decodificar un código de producto que comprende un código Reed-Solomon en una dirección y un código de barras de verificación de paridad en la otra dirección. En el documento EP 0 407 101 A2 de Weng, se describe un sistema de detección y corrección de errores en el que se utiliza la verificación por redundancia cíclica (CRC) para la detección de errores y un código de corrección de errores Reed-Solomon para la corrección de errores.
En teoría, un código de bloque puede corregir un número particular de supresiones o un número particular de errores, siendo determinado el número exacto mediante la distancia del código. Una supresión es un símbolo que se considera a priori potencialmente incorrecto, y un error es un símbolo erróneo recibido que no se considera a priori como tal. Las supresiones suelen ser conocidas o pueden ser determinadas por el receptor, y puede darse cuenta de ellas en el procedimiento de decodificación. Los errores son errores de símbolos no detectados, que pueden ser símbolos cuya recepción se considera correcta, aunque de hecho no lo es.
Los decodificadores de bloque con corrección de supresiones y errores convencionales (tales como el decodificador Berlekamp-Massey o el decodificador euclídeo) son complejos y habitualmente necesitan ser implementados en hardware dedicado. Estos decodificadores de bloque suelen emplear demasiado tiempo en los cálculos en las implementaciones basadas en software ejecutadas en un microprocesador. Los decodificadores basados en hardware pueden explotar el paralelismo de los algoritmos de decodificación y utilizar una trayectoria de datos segmentada, lo cual no es posible en un microprocesador tradicional. Existen otros algoritmos de decodificación de bloque más eficaces que pueden resultar más adecuados para una implementación basada en software. No obstante, estos algoritmos de decodificación suelen tener capacidades limitadas y tal vez puedan corregir supresiones, pero no erro-
res.
Por consiguiente, se plantea la necesidad, dentro del ámbito de la técnica, de disponer de un decodificador con corrección de supresiones y errores para códigos de bloque lineales que sea eficaz y resulte adecuado para las implementaciones basadas en software.
Sumario
Los aspectos de la presente invención proporcionan técnicas para realizar con eficacia la decodificación de bloque con corrección de supresiones y errores individuales de un bloque de símbolos recibidos codificados previamente de columna en columna con un código de bloque lineal (N, K), y de fila en fila con un código de detección de errores. Si el código de detección de errores (por ejemplo, un código de CRC) de las filas presenta propiedades de detección de errores relativamente buenas, entonces la probabilidad de que exista más de un error no detectado en el bloque de datos recibido será muy baja. Por lo tanto, la corrección de errores individuales suele ser suficiente en la mayoría de aplicaciones.
Inicialmente, cada fila del bloque recibido se marca como una fila suprimida o una fila no suprimida hasta que se hallan por lo menos (K+1) filas no suprimidas. Habitualmente, se marcan todas las N filas del bloque recibido, aunque esto no es absolutamente necesario. Para marcar las filas, puede recurrirse a los bits de verificación por redundancia cíclica (CRC) incluidos en cada fila o a otros medios. A continuación, puede realizarse la decodificación de bloque con corrección de supresiones y errores del bloque recibido dependiendo del número de filas suprimidas, es decir, de la distancia del código de bloque (N, K).
Para realizar la decodificación de bloque con corrección de supresiones y errores individuales del bloque recibido, inicialmente se identifica una palabra de código correspondiente a una columna del bloque recibido, que contiene un error de símbolo no detectado. El error de símbolo no detectado puede ser un error que no ha sido detectado por la verificación CRC llevada a cabo anteriormente en cada fila del bloque recibido. Esta palabra de código puede identificarse (1) obteniendo una estimación de una fila sistemática no suprimida del bloque recibido, (2) comparando la fila sistemática no suprimida con su estimación, y (3) identificando un símbolo desemparejado tras la comparación de la fila sistemática no suprimida con la estimación. La palabra de código corresponderá, pues, a la columna que contiene el símbolo desemparejado.
A continuación, se determina la posición del error de símbolo (no detectado previamente) en la palabra de código, basándose en un sistema de decodificación de bloque particular (por ejemplo, uno conocido dentro del ámbito de la técnica y correspondiente al código de bloque lineal seleccionado). La fila del bloque recibido que contiene el error de símbolo localizado se marca luego como una fila suprimida. Entonces, podrá realizarse de la forma normal la decodificación del bloque recibido con la fila marcada como suprimida que contiene el error de símbolo. De esta manera, es posible utilizar una técnica de decodificación de bloque con corrección de supresiones sólo para realizar la decodificación de bloque con corrección de supresiones y errores individuales del bloque recibido. La técnica de decodificación de bloque con corrección de supresiones y errores individuales descrita en la presente memoria resulta eficaz desde el punto de vista informático (comparada con las técnicas convencionales) y puede ser implementada en hardware, software o una combinación de ambos.
A continuación, se describirán en mayor detalle diversos aspectos y formas de realización de la presente invención. La presente invención proporciona, además, procedimientos, productos de programas informáticos, decodificadores, unidades receptoras y otros aparatos y elementos que implementan diversos aspectos, formas de realización y características de la presente invención que serán descritos en mayor detalle más adelante.
Breve descripción de los dibujos
Las características, la naturaleza y las ventajas de la presente invención se pondrán más claramente de manifiesto a partir de la siguiente descripción, considerada conjuntamente con los dibujos, en los que se emplean signos de referencia equivalentes para referirse a elementos similares, y en los que:
la Figura 1 es un diagrama de bloques de una unidad transmisora y una unidad receptora capaces de implementar diversos aspectos y formas de realización de la presente invención;
la Figura 2 es un diagrama que ilustra gráficamente las diversas etapas para realizar la decodificación de bloque con corrección de supresiones sólo para un código de bloque lineal;
las Figuras 3A y B ilustran gráficamente las diversas etapas para realizar la decodificación de bloque con corrección de supresiones y errores individuales para un código de bloque lineal;
la Figura 4 es un diagrama de flujo simplificado de una forma de realización de un procedimiento para realizar la decodificación de bloque con corrección de supresiones y errores individuales para un código de bloque lineal; y
las Figuras 5A y B representan un diagrama de flujo detallado de una forma de realización de un procedimiento para llevar a cabo la decodificación de bloque con corrección de supresiones y errores individuales para un código de bloque lineal (N, K).
Descripción detallada
Las técnicas de decodificación de bloque de la presente invención descritas en la presente memoria pueden utilizarse para diversos sistemas de codificación. Para mayor claridad, las técnicas descritas son técnicas para un sistema de codificación de productos bidimensional particular que consiste en un código de verificación por redundancia cíclica (CRC) para las filas y un código de bloque lineal para las columnas. Más adelante, se describirá un ejemplo de sistema de comunicación en el que es posible utilizar las técnicas de decodificación de bloque de la presente invención.
La Figura 1 es un diagrama de bloques de una unidad transmisora 110 y una unidad receptora 150 capaces de implementar diversos aspectos y formas de realización de la presente invención. En la unidad transmisora 110, una fuente de datos 112 proporciona datos (por ejemplo, en tramas de una longitud particular) a un codificador externo 120 que incluye un codificador de bloques 122 y un codificador de CRC 124. El codificador de bloques 122 recibe y codifica cada bloque de un número particular de tramas de datos para proporcionar un correspondiente bloque de datos sometido a codificación de bloque. En una forma de realización, los bits de un bloque de datos se agrupan, en primer lugar, para formar símbolos (comprendiendo cada símbolo N_{B} bits), y cada columna de K símbolos del bloque de datos se codifica con un código de bloque lineal particular (N, K) para proporcionar una correspondiente palabra de código de N símbolos. Un bloque de datos sometido a codificación de bloque comprende, pues, N filas de símbolos. Para un código
de bloque sistemático, las primeras K filas son las filas de datos y el resto de filas (N-K) son las filas de paridad.
Para cada una de las N tramas del bloque de datos sometido a codificación de bloque, el codificador de CRC 124 genera un grupo de bits de CRC, basándose en los bits de datos de la trama, y anexiona los bits de CRC al extremo de la trama. Los bits de CRC incluidos en cada trama se utilizan para la detección de errores en la trama en la unidad receptora. El codificador de CRC 124 proporciona bloques codificados, cada uno de los cuales es sometido a codificación de CRC en una dirección (la horizontal) y a codificación de bloque en la otra dirección (la vertical).
El codificador de bloques 122 puede implementar cualquier código de bloque lineal, tal como un código Reed-Solomon (utilizado comúnmente para la transmisión de datos), un código Hamming, un código BCH (Bose, Chaudhuri y Hocquenghem) u otro código. Las técnicas de decodificación de bloque de la presente invención descritas en la presente memoria pueden utilizarse para cualquier código de bloque lineal y pueden utilizarse ventajosamente para los códigos de bloque sistemáticos.
En la forma de realización representada en la Figura 1, los bloques codificados se proporcionan a un codificador interno 130 que incluye un intercalador 132 y un codificador convolucional 134. El intercalador 132 mezcla y altera el orden de los bits de cada bloque codificado (es decir, redistribuye los bits) y proporciona bits intercalados al codificador convolucional 134 que, a continuación, codifica los bits de acuerdo con un código convolucional particular. Esta intercalación proporciona diversidad en el tiempo y disgrega los errores que pueden venir en ráfagas desde un decodificador convolucional.
Aunque el codificador interno 130 puede utilizarse para proporcionar una capacidad de corrección de errores adicional, las técnicas de decodificación de bloque de la presente invención descritas en la presente memoria pueden utilizarse en un sistema de codificación que no incluye la codificación interna proporcionada por el codificador 130. El codificador interno 130 es opcional y, por ello, se representa dentro de un recuadro de líneas discontinuas. Asimismo, los datos proporcionados al codificador externo 120 pueden representar datos que han sido codificados previamente con un código particular (en lugar de datos "no procesados" o bits de información).
Los datos codificados del codificador interno 130 se proporcionan, a continuación, a un modulador/transmisor (Mod/TMTR) 140, que modula (es decir, protege y dispersa) los datos codificados para proporcionar datos modulados, y además acondiciona los datos modulados (es decir, los convierte en una o más señales analógicas, los filtra, los amplifica y los somete a elevación de frecuencia y modulación en cuadratura) para proporcionar una señal modulada adecuada para su transmisión a través de un canal de comunicación (por ejemplo, inalámbrico).
En la unidad receptora 150, la señal modulada transmitida es recibida por una antena 152 y proporcionada a un receptor/demodulador (RCVR/Demod) 154. El receptor/modulador 152 lleva a cabo el acondicionamiento (es decir, el filtrado, la amplificación y la reducción de frecuencia) de la señal recibida y digitaliza la señal acondicionada para proporcionar muestras de datos. El receptor/demodulador 154 puede procesar todavía más (es decir, reagrupar y desproteger) las muestras de datos para proporcionar datos demodulados.
En la forma de realización representada en la Figura 1, los datos demodulados se transmiten a un decodificador interno 160 que incluye un decodificador de Viterbi 162 y un desintercalador 164. El decodificador de Viterbi 162 realiza la decodificación para el código convolucional utilizado en la unidad transmisora 110, y el desintercalador 164 reordena los bits decodificados de una forma complementaria a la del intercalador 132. A continuación, los datos desintercalados se proporcionan a un decodificador externo 170.
El decodificador externo 170 incluye un verificador de CRC 172 y un decodificador de bloques 174. Para cada bloque recibido correspondiente a un bloque codificado transmitido desde la unidad transmisora, el verificador de CRC 172 verifica cada fila del bloque recibido e indica si la fila recibida es correcta o no (suprimida). El bloque sometido a verificación CRC se pasa, a continuación, al decodificador de bloques 174, que somete el bloque a decodificación de bloque con corrección de supresiones y errores individuales o con corrección de supresiones sólo, de la forma descrita en mayor detalle más adelante. Los datos decodificados del decodificador de bloques 174 se proporcionan, después, a un colector de datos 176.
Puede utilizarse un controlador 180 para dirigir diversas etapas de decodificación en la unidad receptora 150. El controlador 180 puede utilizarse también para implementar parte o todo el decodificador externo 170. En este caso, los códigos de programa y los datos necesarios pueden almacenarse en una memoria 182, que está acoplada funcionalmente con el controlador 180.
La Figura 1 representa una forma de realización específica de las unidades transmisora y receptora capaces de implementar diversos aspectos y formas de realización de la presente invención. Es posible utilizar, asimismo, otros diseños de transmisor y receptor que se hallan dentro del alcance de la presente invención. Por ejemplo, puede diseñarse una unidad receptora que incluya un verificador de CRC 172 y un decodificador de bloques 174, pero que no incluya ningún decodificador interno 160.
La Figura 2 es un diagrama que ilustra gráficamente las diversas etapas para realizar la decodificación de bloque con corrección de supresiones sólo para un código de bloque lineal. Un codificador de bloques lineal (N, K) codifica cada "bloque" de K símbolos de datos (según un conjunto particular de polinomios si es un código cíclico) para proporcionar una correspondiente palabra de código de N símbolos de código. La distancia mínima, D, del código determina la capacidad de corrección de supresiones y errores del código de bloque y los parámetros del código (N, K) determinan el requisito de memoria. Se sabe que un código de bloque (N, K) puede corregir simultáneamente T errores de símbolos y F supresiones de una palabra de código dada, y T y F cumplen la condición siguiente:
Ec. (I)(2T + F) \leq (D - 1).
Las técnicas de decodificación de bloque de la presente invención descritas en la presente memoria pueden utilizarse con cualquier relación de código. Para simplificar, se utiliza un código pequeño con una relación (8, 4) y una distancia mínima D = 5 para el ejemplo concreto representado en la Figura 2.
En la unidad transmisora, cada grupo de un número particular de tramas de datos se representa mediante un bloque de información KxL, i_{KxL}. En una forma de realización, cada fila del bloque de información corresponde a una respectiva trama de datos e incluye L símbolos para todos los bits de la trama. Cada símbolo (que se representa como un pequeño recuadro cuadrado en el bloque de información, i_{KxL}) comprende N_{B} bits, siendo el valor específico para N_{B} dependiente del código de bloque particular seleccionado para utilizar.
La codificación de bloque se realiza multiplicando previamente el bloque de información, i_{KxL}, por una matriz generadora NxK, G_{NxK} (etapa 1). La matriz generadora puede obtenerse basándose en el conjunto de polinomios determinado para el código de bloque lineal seleccionado. Las técnicas para determinar los polinomios y obtener la matriz generadora son conocidas dentro de la técnica y no se describirán en la presente memoria. Puesto que cada símbolo del bloque de información y la matriz generadora puede ser un valor de varios bits, las multiplicaciones de elemento en elemento y las sumas para la multiplicación de la matriz se realizan en el campo de Galois GF(2^{N_{B}}), siendo N_{B} el número de bits para cada símbolo. La multiplicación de la matriz generadora por el bloque de información proporciona un bloque codificado NxL, c_{NxL}.
Para un código de bloque sistemático (N, K), cada palabra de código incluye K símbolos de datos y (N-K) símbolos de paridad que están constituidos por combinaciones lineales de los K símbolos de datos. De este modo, para el ejemplo representado en la Figura 2, el bloque codificado, c_{NxL}, incluye K filas sistemáticas para las K filas de datos del bloque de información, i_{KxL}, y (N-K) filas de paridad generadas basándose en las K filas de datos y la matriz generadora. Cada una de las L columnas del bloque codificado, c_{NxL}, corresponde a una respectiva palabra de código.
Como se representa en la Figura 1, el bloque codificado, c_{NxL}, se procesa además en la unidad transmisora y se transmite a la unidad receptora, que a continuación realiza el procesamiento complementario para proporcionar un bloque recibido, r_{NxL}. Cada símbolo del bloque recibido, r_{NxL}, corresponde a un símbolo del bloque codificado, c_{NxL}, pero puede recibirse con errores debido a la degradación provocada por el canal de comunicación.
En la unidad receptora, cada fila (es decir, cada trama de datos) del bloque recibido puede ser verificado por un verificador de CRC 172 para determinar si la fila recibida es correcta o contiene algún error (etapa 2). Si una fila particular no supera la verificación CRC, se considera que toda la fila recibida es incorrecta, ya sea para errores de un solo símbolo de la fila, de varios símbolos o de todos los símbolos. Para el ejemplo representado en la Figura 2, las filas 2 y 4 del bloque recibido, r_{NxL}, se marcan como suprimidas puesto que estas filas no superaron la verificación CRC. Estas filas suprimidas se indican como filas que contienen recuadros cuadrados sombreados en negro.
En ciertos casos, una fila puede superar la verificación CRC aun cuando incluya varios errores. Esto puede suceder si el número de errores de la fila excede la capacidad de detección de errores del código CRC seleccionado y los valores concretos de los errores son (casualmente) los que superan la verificación CRC. En tal caso, se indicará (erróneamente) que la fila ha sido recibida correctamente cuando, en realidad, incluye varios errores de símbolos no detectados. Un ejemplo de dicha fila errónea es la fila 6 representada del bloque recibido, r_{NxL}, en la que los tres errores de símbolo no detectados se indican mediante tres recuadros cuadrados en negro.
A continuación, se describirá cómo puede llevarse a cabo una técnica de decodificación de bloque que no corrige los errores, sino sólo las supresiones. En primer lugar, las filas de la matriz generadora, G_{NxK}, correspondientes a las filas suprimidas del bloque recibido, r_{NxL}, se marcan también como filas suprimidas (etapa 2). En el ejemplo representado en la Figura 2, las filas 2 y 4 de la matriz generadora, G_{NxK}, se marcan como filas suprimidas, hecho que se indica mediante recuadros cuadrados sombreados en negro en G_{NxK}.
En la siguiente etapa de la decodificación de bloque con corrección de supresiones sólo, se selecciona un número K de filas no suprimidas cualesquiera del bloque recibido, r_{NxL}, para formar un bloque recibido reducido r'_{KxL}, y se seleccionan también las correspondientes K filas de la matriz generadora, G_{NxK}, para formar una matriz generadora reducida, G'_{KxK} (etapa 3). Para el ejemplo representado en la Figura 2, se seleccionan las primeras cuatro filas no suprimidas (las filas 1, 3, 5 y 6) del bloque recibido, r_{NxL}, para formar el bloque recibido reducido, r'_{KxL}, y se seleccionan las correspondientes filas 1, 3, 5 y 6 de la matriz generadora, G_{NxK}, para formar la matriz generadora reducida, G'_{KxK}. En este ejemplo, una de las filas seleccionadas (la fila 6) casualmente incluye errores de símbolos no detectados.
A continuación, la matriz generadora reducida, G'_{KxK}, se invierte para obtener una matriz generadora invertida (o inversa), G'^{-1}_{KxK} (etapa 4). La inversión de la matriz puede realizarse de una de las maneras conocidas dentro del ámbito de la técnica. La matriz generadora invertida G'^{-1}_{KxK}, se multiplica, a continuación, por el bloque recibido reducido, r'_{KxL}, para obtener una estimación inicial del bloque de información, i'_{KxL} (etapa 4). Entonces, se puede obtener una estimación del bloque de información î_{KxL},sustituyendo las filas sistemáticas suprimidas (las filas 2 y 4) del bloque recibido, r_{NxL}, por las filas correspondientes del bloque de información estimado inicial, i'_{KxL} (etapa 5).
Si los símbolos de todas las filas del bloque recibido reducido, r'_{KxL}, tienen valores correctos, el bloque de información estimado, î_{KxL}, será igual al bloque de información transmitido, i_{KxL} (es decir, î_{KxL} = i_{KxL}). De esta forma, la decodificación de bloque permite corregir las supresiones del bloque recibido, r_{NxL}, mediante las filas de paridad redundantes (es decir, las filas 5 y 6) para recuperar las filas sistemáticas suprimidas (es decir, las filas 2 y 4).
No obstante, para el ejemplo representado en la Figura 2, los errores de símbolo no detectados de la última fila del bloque reducido recibido, r'_{KxL}, dan por resultado errores en las correspondientes columnas del bloque de información estimado inicial, i'_{KxL}. Estos errores se representan mediante recuadros cuadrados en negro en las columnas 4, 7 y 12 del bloque de información estimado inicial i'_{KxL}. Puesto que las filas 2 y 4 del bloque recibido, r_{NxL}, se suprimen, estas filas son sustituidas por las correspondientes filas 2 y 4 del bloque de información estimado inicial i'_{KxL}. Como se representa en la Figura 2, cada una de las filas suprimidas reemplazadas incluirá el mismo número de errores que el de la fila errónea. Estos errores se presentarán en la siguiente etapa de procesamiento.
Las Figuras 3A y B ilustran gráficamente las diversas etapas para realizar la decodificación de bloque con corrección de supresiones y errores individuales para un código de bloque lineal. Para simplificar, en la forma de realización de las Figuras 3A y B, se utiliza el mismo ejemplo que el utilizado en la Figura 2, en el cual, el bloque recibido, r_{NxL}, incluye dos filas suprimidas 2 y 4 y una fila con errores 6 (que contiene varios errores de símbolo no detectados).
Las técnicas de decodificación de bloque que corrigen supresiones y errores individuales pueden realizarse de la forma descrita a continuación. Inicialmente, cada fila del bloque recibido, r_{NxL}, puede ser verificada por el verificador de CRC 172 para determinar si ha sido recibida correctamente o con errores, y la fila se marca como suprimida si no supera la verificación CRC (etapa 2 de la Figura 2). A continuación, se marca una fila sistemática no suprimida (por ejemplo, la primera de dichas filas) del bloque recibido, r_{NxL}, como fila pseudosuprimida (etapa 3 de la Figura 3A), siendo ésta tratada como una fila suprimida en algunas de las etapas de decodificación siguientes (etapas 4 y 5). A continuación, las filas de la matriz generadora, G_{NxK}, correspondiente a las filas suprimidas del bloque recibido, r_{NxL}, se marcan también como filas suprimidas (etapa 3). En el ejemplo representado en las Figuras 3A y 3B, las filas 1, 2 y 4 de la matriz generadora, G_{NxK}, se marcan como filas suprimidas, hecho que se indica mediante recuadros cuadrados en negro.
Para la etapa siguiente de la decodificación de bloque con corrección de supresiones y errores individuales, se seleccionan K filas no suprimidas cualesquiera del bloque recibido, r_{NxL}, para formar el bloque recibido reducido, r'_{KxL}, y se seleccionan también las K filas correspondientes de la matriz generadora, G_{NxK}, para formar la matriz generadora reducida, G'_{KxK} (etapa 4). En el ejemplo de forma de realización representado en las Figuras 3A y 3B, se seleccionan las primeras cuatro filas no suprimidas (las filas 3, 5, 6 y 7) del bloque recibido, r_{NxL}, para formar el bloque recibido reducido, r'_{KxL}, y se seleccionan las correspondientes filas 3, 5, 6 y 7 de la matriz generadora, G_{NxK}, para formar la matriz generadora reducida, G'_{KxK}. También en este ejemplo, una de las filas seleccionadas (la fila 6) incluye casualmente errores de símbolo no detectados.
A continuación, la matriz generadora reducida, G'_{KxK}, se invierte para obtener una matriz generadora invertida, G'^{-1}_{KxK} (etapa 5), y dicha matriz generadora invertida, G'^{-1}_{KxK}, se multiplica por el bloque recibido reducido, r'_{KxL}, para obtener el bloque de información estimado inicial, i'_{KxL} (etapa 5).
En la siguiente etapa de la decodificación de bloque, la fila pseudosuprimida (es decir, la fila 1) se compara con la correspondiente fila del bloque de información estimado inicial, i'_{KxL} (etapa 6). Debido a la multiplicación de la matriz, cualquier error de símbolo en el bloque recibido reducido, r'_{KxL}, da por resultado una columna entera de errores de símbolo en el bloque de información estimado inicial, i'_{KxL}. Por lo tanto, cuando la fila pseudosuprimida se compara de símbolo en símbolo con la correspondiente fila del bloque de información estimado inicial, i'_{KxL}, se detectan errores (es decir, símbolos desemparejados) en las columnas 4, 7 y 12, puesto que los símbolos de estos emplazamientos no coinciden.
A continuación, se selecciona (etapa 6) una palabra de código correspondiente a una columna que contiene un símbolo desemparejado. En el ejemplo de forma de realización representado en las Figuras 3A y 3B, se selecciona la palabra de código correspondiente a la columna que contiene el primer símbolo desemparejado (la columna 4). Entonces, se realizan cálculos para localizar el error de símbolo en la palabra de código seleccionada. El emplazamiento del error puede hallarse utilizando diversas técnicas de decodificación de bloque conocidas dentro del ámbito de la técnica. Por ejemplo, para un código Reed-Solomon, inicialmente se calculan los síndromes a partir de los N símbolos de la palabra de código, luego se calculan los coeficientes de un polinomio de localización de errores, \sigma(x), a partir de los síndromes y, por último, pueden calcularse los localizadores de errores a partir de estos coeficientes. En el ejemplo de forma de realización representado en las Figuras 3A y 3B, el error de símbolo está situado en la 6ª posición de símbolo de la palabra de código.
En la etapa siguiente, se marca como fila suprimida toda la fila que contiene el error de símbolo (la fila 6), y se marca como fila no suprimida (etapa 7) la fila pseudosuprimida (fila 1). El resto de la decodificación de bloque puede continuar de la forma descrita anteriormente para la Figura 2. En particular, pueden seleccionarse K filas no suprimidas cualesquiera del bloque recibido, r_{NxL}, (filas 1, 3, 5 y 7) para formar un nuevo bloque recibido reducido, r''_{KxL}, y pueden seleccionarse también las K filas correspondientes de la matriz generadora, G_{NxK}, para formar una nueva matriz generadora reducida, G''_{KxK}. Como se representa en la Figura 3, la fila (6) con los errores de símbolo (previamente no detectados) se marca como fila suprimida y no se selecciona para el uso.
La nueva matriz generadora reducida, G''_{KxK}, se invierte para obtener una matriz generadora invertida, G''^{-1}_{KxK} (etapa 8). La matriz generadora invertida, G''^{-1}_{KxK}, se multiplica por el bloque recibido reducido, r''_{KxL}, para obtener una nueva estimación inicial del bloque de información, i''_{KxL}. A continuación, puede obtenerse la estimación del bloque de información, î_{KxL}, sustituyendo las filas sistemáticas suprimidas (es decir, las filas 2 y 4) del bloque recibido, r_{NxL}, por las correspondientes filas del nuevo bloque de información estimado inicial, i''_{KxL} (etapa 9).
Puesto que los símbolos de todas las filas del nuevo bloque recibido reducido, r''_{KxL}, son valores correctos, el bloque de información estimado, î_{KxL}, es igual al bloque de información transmitido, i_{KxL} (es decir, î_{KxL} = i_{KxL}). En este ejemplo, la decodificación de bloque con codificación de supresiones y errores individuales permite corregir dos filas suprimidas y una fila con errores del bloque recibido, r_{NxL}, mediante las filas de paridad redundantes (es decir, las filas 5 y 7) para recuperar las filas sistemáticas suprimidas (es decir, las filas 2 y 4).
En general, la decodificación de bloque con corrección de supresiones y errores individuales se realiza (1) utilizando las filas de paridad redundantes para obtener una estimación para una fila sistemática no suprimida, (2) comparando la fila sistemática no suprimida con su estimación para determinar el emplazamiento de cualquier símbolo desemparejado (o error), (3) localizando un error de símbolo en una palabra de código (o columna) que contiene un símbolo desemparejado, (4) marcando toda la fila que contiene el error de símbolo como una fila suprimida y (5) efectuando la decodificación de bloque para las filas sistemáticas, basándose en las filas no suprimidas del bloque recibido.
La técnica de decodificación de bloque con corrección de supresiones y errores individuales de la presente invención requiere menos cálculos que las técnicas de decodificación convencionales (en parte, debido a que la localización de errores se lleva a cabo en una palabra de código sólo si se detecta, posteriormente, un error de símbolo no detectado con la fila pseudosuprimida). Por lo tanto, la fila pseudosuprimida puede utilizarse para señalar la palabra de código exacta (o la columna exacta de un bloque de 2 dimensiones) que contiene el error de símbolo no detectado, pudiéndose determinar el emplazamiento exacto del error de símbolo en la palabra de código (o la fila exacta del bloque de 2 dimensiones), efectuando una búsqueda de errores de símbolo en la palabra de código. La fila que contiene el error de símbolo (no detectado previamente) se marca después como fila suprimida, pudiéndose aplicar, entonces, la decodificación de bloque con corrección de supresiones sólo al bloque recibido.
Las etapas 3 a 6 de la Figura 3A determinan con eficacia la columna particular donde puede hallarse un error de símbolo no detectado. Pueden utilizarse también otros sistemas para determinar la columna que presenta el error, sin apartarse del alcance de la presente invención.
Por otra parte, en la etapa 6, no es necesario hallar de inmediato la pseudosupresión (para toda la fila). En su lugar, la pseudosupresión puede obtenerse de símbolo en símbolo y compararse con el símbolo correspondiente de la fila pseudosuprimida recibida. De esta forma, si se halla un error en una de las primeras columnas, no es necesario obtener el resto de pseudosupresiones de la fila.
El cálculo de una estimación inicial del bloque de información, i'_{KxL}, y la formación de un bloque de información estimado, î_{KxL}, son etapas conceptuales. Estas etapas se proporcionan para el ejemplo de las Figuras 3A y 3B para permitir una mejor comprensión de la técnica de decodificación de bloque. No obstante, en la práctica, las únicas filas de i'_{KxL} que se hallan son las que se han suprimido en el bloque recibido original.
Debido a que sólo se necesitan (K+1) filas correctas (o tramas sometidas a verificación CRC) en un bloque recibido para llevar a cabo la decodificación con corrección de supresiones y errores individuales, es posible desconectar el frontal de la unidad receptora (por ejemplo, el receptor/demodulador 154, el decodificador de Viterbi 162, el desintercalador 164 y el verificador de CRC 172 de la Figura 1) en cuanto se reciban (K+1) filas correctas. Esto permitirá ahorrar potencia en la unidad receptora.
La Figura 4 es un diagrama de flujo simplificado de un procedimiento 400 para realizar la decodificación de bloque con corrección de supresiones y errores individuales para un código de bloque lineal, según una forma de realización de la presente invención. Inicialmente, se recibe un bloque codificado que comprende un número de palabras de código y se determinan las filas suprimidas del bloque recibido en la etapa 412. Las filas suprimidas pueden determinarse realizando una verificación CRC en cada fila del bloque recibido o por medio de otros mecanismos.
A continuación, en la etapa 414, se identifica una palabra de código correspondiente a una columna del bloque recibido, que contiene un error de símbolo no detectado. El error de símbolo no detectado es un error que no está incluido en ninguna fila suprimida del bloque recibido. La columna puede identificarse por medio de una fila pseudosuprimida, de la forma descrita anteriormente o de otras formas. La determinación del emplazamiento del error de símbolo en la palabra de código tiene lugar a continuación (por ejemplo, utilizando cualquier técnica conocida dentro de la técnica) en la etapa 416. La fila del bloque recibido que contiene el error de símbolo se marca como fila suprimida, en la etapa 418. En la etapa 420, puede realizarse la decodificación de bloque para el bloque recibido, con la fila que se acaba de marcar como suprimida que contiene el error de símbolo.
Las Figuras 5A y 5B representan un diagrama de flujo detallado de un procedimiento 500 para llevar a cabo la decodificación de bloque con corrección de supresiones y errores individuales para un código de bloque lineal (N, K), según una forma de realización de la presente invención. Inicialmente, se recibe un bloque codificado que comprende un número de (L) palabras de código y, en la etapa 512, se determinan las filas suprimidas del bloque recibido.
A continuación, se determina si el número de filas suprimidas del bloque recibido es superior a (D-1) en la etapa 514. Como se ha indicado anteriormente en la ecuación (1), un código de bloque diseñado correctamente podrá corregir hasta (D-1) símbolos suprimidos en una palabra de código. Por lo tanto, si el número de filas suprimidas es superior a (D-1), la corrección de todas las filas suprimidas no será posible, puesto que se ha rebasado la distancia del código, como se indica en la etapa 516. El procedimiento habrá finalizado.
En caso contrario, si el número de filas suprimidas es menor o igual a (D-1), se determina si el número de filas suprimidas en el bloque recibido es superior a (D-3) en la etapa 518. Como se ha indicado asimismo en la ecuación (1), un código de bloque diseñado correctamente podrá corregir hasta (D-3) símbolos suprimidos y un símbolo erróneo en una palabra de código. Por lo tanto, si el número de filas suprimidas es igual a (D-2) o (D-1), entonces la corrección de supresiones sólo de todas las filas suprimidas será factible y podrá iniciarse en la etapa 522.
En cambio, si el número de filas suprimidas es menor o igual a (D-3), se determina si el número de filas sistemáticas suprimidas en el bloque recibido es superior a (K-1), en la etapa 520. Si se desea utilizar una de las filas sistemáticas como fila pseudosuprimida para localizar la columna de un error de símbolo no detectado y no se dispone de ninguna fila sistemática no suprimida para utilizar como fila pseudosuprimida, la corrección de supresiones sólo para todas las filas suprimidas seguirá siendo factible y podrá iniciarse también en la etapa 522.
Si el número de filas suprimidas es menor o igual a (D-3) y se dispone de una fila sistemática no suprimida por lo menos, la decodificación de bloque con corrección de supresiones y errores individuales será factible para el bloque recibido y podrá iniciarse en la etapa 532. En general, la decodificación de bloque con corrección de supresiones y errores individuales puede realizarse siempre que sea factible, mientras que la decodificación de bloque con corrección de supresiones sólo puede realizarse siempre que sea factible y que no pueda realizarse la decodificación de bloque con corrección de supresiones y errores individuales.
Para realizar la decodificación de bloque con corrección de errores sólo, se forma en primer lugar una matriz generadora reducida, G'_{KxK}, seleccionando K filas de la matriz generadora, G_{NxK}, correspondientes a K filas no suprimidas cualesquiera del bloque recibido, r_{NxL}, en la etapa 522. En la etapa 524, se invierte la matriz generadora reducida. Las filas sistemáticas suprimidas del bloque recibido se obtienen a partir de las correspondientes filas de una estimación inicial del bloque de información, i'_{KxL}, que se obtiene multiplicando la matriz generadora inversa, G'^{-1}_{KxK}, por un bloque recibido reducido, r'_{KxL}, constituido por las correspondientes K filas no suprimidas del bloque recibido, r_{NxL}, en la etapa 526. Si no existe ningún error de símbolo no detectado en las filas del bloque recibido reducido, r'_{KxL}, el bloque de información estimado inicial, i'_{KxL}, incluirá correcciones para todas las filas sistemáticas suprimidas del bloque recibido. La decodificación de bloque con corrección de supresiones habrá finalizado.
Para realizar la decodificación de bloque con corrección de supresiones y errores individuales, se determina en primer lugar el emplazamiento en la fila de un error de símbolo no detectado en el bloque recibido. Esto puede efectuarse de la forma descrita a continuación. Primeramente, se selecciona una fila sistemática no suprimida (por ejemplo, la primera de dichas filas del bloque recibido) como fila pseudosuprimida en la etapa 532. Esta fila se trata como fila suprimida en las etapas siguientes para localizar el error de símbolo no detectado. En la etapa 534, se forma una matriz generadora reducida, G'_{KxK}, seleccionando K filas de la matriz generadora, G_{NxK}, correspondientes a K de filas no suprimidas cualesquiera del bloque recibido, r_{NxL}. En la etapa 536, se invierte la matriz generadora. A continuación, se obtiene una estimación de la fila pseudosuprimida multiplicando la matriz generadora inversa, G'^{-1}_{KxK}, por un bloque recibido reducido, r'_{KxL}, constituido por las correspondientes K filas no suprimidas del bloque recibido, r_{NxL}, en la etapa 538. Puesto que sólo se necesita la estimación de la fila pseudosuprimida, la multiplicación de la matriz G'^{-1}_{KxK} por r'_{KxL} puede realizarse multiplicando sólo una fila de G'^{-1}_{KxK} (en lugar de toda la matriz) por todas las columnas de r'_{KxL}.
En la etapa 540, la fila pseudosuprimida se compara con su estimación. La comparación puede realizarse de símbolo en símbolo, hasta que se detecta el primer símbolo desemparejado. A continuación, se determina si existe o no algún símbolo desemparejado en la fila pseudosuprimida, en la etapa 542. Si no existe ningún símbolo desemparejado, entonces no existe ningún error de símbolo no detectado en el bloque recibido (o existe más de un error de símbolo en una sola columna) y el procedimiento continúa por la etapa 526 para obtener las filas sistemáticas suprimidas.
En caso contrario, cuando existe por lo menos un símbolo desemparejado en la fila pseudosuprimida, como se determina en la etapa 542, es que hay algún error de símbolo no detectado en el bloque recibido, siendo determinado el emplazamiento en la fila de estos errores en la etapa 544. Esta tarea puede realizarse identificando el emplazamiento de un símbolo desemparejado (por ejemplo, el primer símbolo desemparejado) en la fila pseudosuprimida, recuperando la palabra de código (o columna del bloque recibido) que contiene el símbolo desemparejado y localizando el error en la palabra de código mediante cualquier técnica conocida dentro de la técnica. De esta manera, el error de símbolo de la palabra de código se localiza y toda la fila del bloque recibido que contiene este error de símbolo se marca como fila suprimida en la etapa 546.
A continuación, en la etapa 548, se determina si la fila pseudosuprimida es o no la que contiene el error de símbolo. Si la respuesta es afirmativa, la fila errónea ya habrá sido excluida como fila pseudosuprimida cuando se forma el bloque recibido reducido y la matriz generadora reducida. Por consiguiente, G'^{-1}_{KxK} es correcta y r'_{KxL} no contiene ningún error no detectado. El procedimiento continúa por la etapa 526, en la cual se obtienen las filas sistemáticas suprimidas. Si la respuesta es negativa, se forma una nueva matriz generadora reducida, G''_{KxK}, seleccionando, en la etapa 550, K filas de la matriz generadora, G_{NxK}, correspondientes a K filas cualesquiera del bloque recibido, r_{NxL}, que se mantienen sin suprimir. En la etapa 552, se invierte la nueva matriz generadora reducida.
El procedimiento continúa por la etapa 526, en la cual se obtienen las filas sistemáticas suprimidas del bloque recibido a partir de las filas correspondientes de la nueva estimación inicial del bloque de información, i''_{KxL}, obtenida multiplicando la nueva matriz generadora inversa, G'^{-1}_{KxK}, por un nuevo bloque recibido reducido, r''_{KxL}, constituido por las correspondientes K filas no suprimidas del bloque recibido, r_{NxL}.
El procedimiento representado en la Figura 5 admite diversas modificaciones. Por ejemplo, es posible repetir las etapas 532 a 546 diversas veces para detectar filas con varios errores.
Las técnicas de decodificación de bloque de la presente invención pueden utilizarse de forma ventajosa con un código concatenado que comprende un código de detección de errores y un código de bloque. Es posible realizar la codificación con detección de errores en una dimensión (por ejemplo, la horizontal) del bloque de información, y la codificación de bloque en la otra dimensión (por ejemplo, la vertical) del bloque de información. Las técnicas de decodificación de bloque de la presente invención pueden utilizarse para identificar y localizar errores que la decodificación con detección de errores no ha podido detectar, y eliminar estos errores de símbolo del procedimiento de decodificación de bloque. De esta forma, las técnicas de decodificación de bloque de la presente invención pueden mitigar los problemas ocasionados por la incapacidad de detectar errores, a diferencia de las técnicas de decodificación de bloque convencionales que no pueden corregir errores, sino sólo supresiones.
La decodificación de bloque de la presente invención descrita en la presente memoria resulta eficaz desde el punto de vista del cálculo y muy adecuada para una implementación basada en software y ejecutada en un microprocesador. Para cuantificar la eficacia en el cálculo, se indica a continuación el número de operaciones de multiplicación y acumulación efectuadas en algunas de las etapas del diagrama de flujo de las Figuras 5A y 5B:
Etapas Número de operaciones de multiplicación y acumulación
524, 536 y 552 KP_{sys}^{2} (para cada etapa)
538 KL
544 (P+2)(N-1)+P(P+1)+1 (para un código Reed-Solomon)
526 KLP_{sys}
siendo:
N la longitud de la palabra de código;
K el número de símbolos de información de la palabra de código;
R el número de símbolos de paridad (R = N-K);
L el número de palabras de código por bloque codificado;
P el número de filas suprimidas en el bloque recibido y
P_{sys} el número de filas sistemáticas suprimidas en el bloque recibido.
Las técnicas de decodificación de bloque de la presente invención descritas en la presente memoria pueden utilizarse en diversos sistemas de comunicación y de transmisión de datos. Por ejemplo, estas técnicas pueden utilizarse ventajosamente en los sistemas de comunicación inalámbrica, tales como los sistemas CDMA, FDMA y TDMA. Por otra parte, las técnicas de decodificación descritas aquí pueden implementarse en un terminal (por ejemplo, un dispositivo inalámbrico, tal como un teléfono celular) para el enlace descendente (el enlace directo), o en una estación base o punto de acceso para el enlace ascendente (el enlace inverso) de un sistema de comunicación inalámbri-
ca.
Como se ha indicado anteriormente, las técnicas de decodificación de bloque de la presente invención descritas en la presente memoria pueden implementarse mediante diversos medios. Por ejemplo, estas técnicas pueden implementarse en hardware, software o una combinación de ambos. En una implementación de hardware, los elementos utilizados para implementar parte o toda la decodificación de bloque pueden implementarse en uno o más circuitos integrados de aplicación específica (ASIC), procesadores de señales digitales (DSP), dispositivos de procesamiento de señales digitales (DSPD), dispositivos lógicos programables (PLD), matrices de puertas programables in situ (FPGA), procesadores, controladores, microcontroladores, microprocesadores, otras unidades electrónicas diseñadas para realizar las funciones descritas aquí o una combinación de éstos. El hardware (por ejemplo, un ASIC o un DSP) puede incluir una o más unidades funcionales que realizan colectivamente el procesamiento descrito para implementar la decodificación de bloque de la presente invención. Por ejemplo, puede proporcionarse una unidad para llevar a cabo la detección de errores por filas (por ejemplo, un verificador de CRC 172), otra unidad para llevar a cabo la decodificación de bloque por columnas (por ejemplo, el decodificador de bloques 174), y así sucesivamente.
Para una implementación de software, las técnicas de decodificación de bloque de la presente invención pueden implementarse con módulos (por ejemplo, procedimientos, funciones, etc.) que realizan las funciones descritas aquí. Los códigos de software pueden almacenarse en una unidad de memoria (por ejemplo, la memoria 182 de la Figura 1) y ejecutarse por medio de un procesador (por ejemplo, el controlador 180). La unidad de memoria puede implementarse dentro o fuera del procesador, en cuyo caso podrá acoplarse con el procesador para las comunicaciones. a través de diversos medios conocidos dentro del ámbito de la técnica.
La descripción anterior de las formas de realización dadas a conocer se proporciona para permitir, a cualquier experto en la materia, fabricar o utilizar la presente invención. Los expertos en la materia deducirán con facilidad las diversas modificaciones posibles a estas formas de realización, pudiendo ser aplicados los principios genéricos definidos aquí a otras formas de realización, sin apartarse del alcance de la presente invención. Por lo tanto, la presente invención no pretende limitarse a las formas de realización representadas aquí, sino abarcar el alcance delimitado por las reivindicaciones adjuntas.

Claims (24)

1. Procedimiento para realizar la decodificación de bloque en un bloque recibido de símbolos codificados previamente de columna en columna con un código de bloque lineal (N, K), y de fila en fila con un código de detección de errores, que comprende:
la identificación de una palabra de código correspondiente a una columna del bloque recibido que contiene un error de símbolo no detectado mediante dicho código de detección de errores;
la determinación del emplazamiento del error de símbolo no detectado en la palabra de código;
el marcado de la fila del bloque recibido que contiene el error de símbolo no detectado, como fila suprimida; y
la realización de la decodificación de bloque para el bloque recibido que contiene la fila marcada como suprimida.
2. Procedimiento según la reivindicación 1, que comprende además:
el cálculo de una estimación de una fila sistemática no suprimida del bloque recibido;
la comparación de la fila sistemática no suprimida con su estimación; y
la identificación del emplazamiento de un símbolo desemparejado tras la comparación entre la fila sistemática no suprimida y su estimación, y de la correspondencia de la palabra de código con la columna que contiene el símbolo desemparejado.
3. Procedimiento según la reivindicación 2, en el que la estimación de la fila sistemática no suprimida se obtiene
marcando la fila sistemática no suprimida como fila suprimida;
formando un bloque recibido reducido que comprende K filas no suprimidas del bloque recibido; y
multiplicando la matriz generadora inversa para las K filas no suprimidas por el bloque reducido recibido.
4. Procedimiento según la reivindicación 1, en el que el emplazamiento del error de símbolo no detectado de la palabra de código se determina localizando los errores en la palabra de código, basándose en un sistema de decodificación de bloque particular.
5. Procedimiento según la reivindicación 1, en el que la decodificación de bloque incluye:
la formación de un bloque recibido reducido que comprende K filas no suprimidas del bloque recibido;
la formación de una matriz generadora reducida que comprende K filas de la matriz generadora correspondiente a las K filas no suprimidas;
la inversión de la matriz generadora reducida; y
la multiplicación de la matriz generadora invertida por el bloque recibido reducido.
6. Procedimiento según la reivindicación 1 ó 2, que comprende además:
el marcado de cada fila del bloque recibido como fila suprimida o fila no suprimida hasta que se hallan (K+1) filas no suprimidas por lo menos.
7. Procedimiento según la reivindicación 6, en el que cada fila se marca como fila suprimida o fila no suprimida, basándose en el resultado de una prueba de verificación por redundancia cíclica (CRC).
8. Procedimiento según la reivindicación 1, que comprende además:
la determinación del número de filas suprimidas en el bloque recibido.
9. Procedimiento según la reivindicación 8, que comprende además:
la realización de la decodificación de bloque con corrección de supresiones sólo si el número de filas suprimidas es igual a (D-2) o (D-1).
10. Procedimiento según la reivindicación 8, que comprende además:
la realización de la decodificación de bloque con corrección de supresiones y errores si el número de filas suprimidas es menor o igual a (D-3).
11. Procedimiento según la reivindicación 10, que comprende además:
la determinación del número de filas sistemáticas suprimidas en el bloque recibido y
la realización de la decodificación de bloque con corrección de supresiones y errores si el número de filas sistemáticas suprimidas es menor o igual a (K-1).
12. Procedimiento según la reivindicación 8, que comprende además:
la declaración de error si el número de filas suprimidas es superior a (D-1).
13. Procedimiento según la reivindicación 1, en el que el código de bloque lineal (N, K) es un código Reed-Solomon.
14. Producto de programa informático materializado en unos medios legibles por ordenador para almacenar los códigos del programa, para realizar la decodificación de bloque en un bloque recibido de símbolos codificados previamente de columna en columna con un código de bloque lineal (N, K), y de fila en fila con un código de detección de errores, que comprende códigos para llevar a cabo las etapas del procedimiento según cualquiera de las reivindicaciones 1, 2, 3 ó 5 cuando dicho programa se ejecuta en un ordenador.
15. Aparato de decodificación que comprende:
medios para marcar cada fila del bloque recibido, codificado previamente de columna en columna con un código de bloque lineal (N, K), y de fila en fila con un código de detección de errores, como fila suprimida o fila no suprimida hasta que se hallan (K+1) filas no suprimidas por lo menos;
medios para identificar una palabra de código correspondiente a una columna del bloque recibido, en la que se halla un error de símbolo no detectado mediante dicho código de detección de errores;
medios para determinar el emplazamiento del error de símbolo no detectado en la palabra de código;
medios para marcar como fila suprimida la fila del bloque recibido que contiene el error de símbolo no detectado; y
medios para realizar la decodificación de bloque para el bloque recibido que contiene la fila marcada como suprimida.
16. Aparato de decodificación según la reivindicación 15, que comprende además:
medios para obtener una estimación de una fila sistemática no suprimida del bloque recibido;
medios para comparar la fila sistemática no suprimida con su estimación; y
medios para identificar el emplazamiento de un símbolo desemparejado tras la comparación de la fila sistemática no suprimida y su estimación, e identificar la correspondencia de la palabra de código que contiene el error de símbolo no detectado con la columna que contiene el símbolo desemparejado.
17. Aparato de decodificación según la reivindicación 16, en el que los medios para realizar la decodificación de bloque incluyen:
medios para marcar la fila sistemática no suprimida como fila suprimida;
medios para formar un bloque recibido reducido que comprende K filas no suprimidas del bloque recibido; y
medios para multiplicar la matriz generadora inversa para las K filas no suprimidas por el bloque recibido reducido.
18. Aparato de decodificación según la reivindicación 15, en el que los medios para realizar la decodificación de bloque incluyen:
medios para formar un bloque recibido reducido que comprende K filas no suprimidas del bloque recibido;
medios para formar una matriz generadora reducida que comprende K filas de la matriz generadora correspondientes a las K filas no suprimidas;
medios para invertir la matriz generadora reducida; y
medios para multiplicar la matriz generadora invertida por el bloque recibido reducido.
19. Aparato de decodificación según la reivindicación 15, en el que los medios para marcar cada fila son operativos para marcar cada fila como fila suprimida o fila no suprimida, basándose en el resultado de una prueba de verificación por redundancia cíclica (CRC).
20. Aparato de decodificación según la reivindicación 15, en el que el código de bloque lineal (N, K) es un código Reed-Solomon.
21. Aparato de decodificación según la reivindicación 15, que comprende un dispositivo procesador de señales digitales (DSPD), en el que los medios para marcar cada fila están dispuestos en una primera unidad y los medios para identificar, los medios para determinar, los medios para marcar una fila y los medios para decodificar están dispuestos en una segunda unidad.
22. Aparato de decodificación según la reivindicación 15, que comprende un dispositivo procesador de señales digitales (DSPD) y una memoria acoplada para las comunicaciones con el dispositivo procesador de señales digitales.
23. Unidad receptora de un sistema de comunicación inalámbrica, que comprende:
un receptor operativo para procesar una señal recibida y proporcionar muestras de datos;
un demodulador operativo para procesar las muestras de datos y proporcionar un bloque de símbolos recibido; y
un aparato de decodificación según la reivindicación 15.
24. Unidad receptora según la reivindicación 23, que comprende además:
un decodificador operativo para recibir y decodificar los datos demodulados por el demodulador, según un sistema de decodificación convolucional particular, para proporcionar el bloque de símbolos recibido.
ES02794135T 2001-12-04 2002-12-03 Decodificador para codigos de bloque lineales con correccion de supresiones y errores individuales. Expired - Lifetime ES2248631T3 (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10199 2001-12-04
US10/010,199 US6986092B2 (en) 2001-12-04 2001-12-04 Erasure-and-single-error correction decoder for linear block codes

Publications (1)

Publication Number Publication Date
ES2248631T3 true ES2248631T3 (es) 2006-03-16

Family

ID=21744452

Family Applications (1)

Application Number Title Priority Date Filing Date
ES02794135T Expired - Lifetime ES2248631T3 (es) 2001-12-04 2002-12-03 Decodificador para codigos de bloque lineales con correccion de supresiones y errores individuales.

Country Status (9)

Country Link
US (1) US6986092B2 (es)
EP (1) EP1464121B1 (es)
JP (1) JP4152887B2 (es)
CN (1) CN100438346C (es)
AT (1) ATE305668T1 (es)
AU (1) AU2002359587A1 (es)
DE (1) DE60206419T2 (es)
ES (1) ES2248631T3 (es)
WO (1) WO2003049294A2 (es)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7177658B2 (en) * 2002-05-06 2007-02-13 Qualcomm, Incorporated Multi-media broadcast and multicast service (MBMS) in a wireless communications system
US7260764B2 (en) 2002-11-26 2007-08-21 Qualcomm Incorporated Multi-channel transmission and reception with block coding in a communication system
US20050009523A1 (en) * 2003-07-07 2005-01-13 Nokia Corporation Protocol using forward error correction to improve handover
US7318187B2 (en) * 2003-08-21 2008-01-08 Qualcomm Incorporated Outer coding methods for broadcast/multicast content and related apparatus
US8804761B2 (en) * 2003-08-21 2014-08-12 Qualcomm Incorporated Methods for seamless delivery of broadcast and multicast content across cell borders and/or between different transmission schemes and related apparatus
US8694869B2 (en) 2003-08-21 2014-04-08 QUALCIMM Incorporated Methods for forward error correction coding above a radio link control layer and related apparatus
US7472334B1 (en) * 2003-10-15 2008-12-30 Scott Thomas P Efficient method for the reconstruction of digital information
GB2407946A (en) * 2003-11-05 2005-05-11 Nokia Corp Forward Error Correction decoder suitable for use with data comprising variable padding
US20050204258A1 (en) * 2004-02-13 2005-09-15 Broadcom Corporation Encoding system and method for a transmitter in wireless communications
US7424040B2 (en) * 2004-05-07 2008-09-09 Ltas Holdings, Llc Communication systems and methods for transmitting data in parallel over multiple channels
KR20050114162A (ko) * 2004-05-31 2005-12-05 삼성전자주식회사 리드-솔로몬 부호를 사용하는 이동통신 시스템에서 내부및 외부 부호 복호 방법 및 그 장치
GB2415873A (en) * 2004-06-30 2006-01-04 Nokia Corp Erasure information generation in Forward Error Correction decoding
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US8457584B2 (en) 2005-05-31 2013-06-04 Broadcom Corporation Systems and methods to attenuate intermodulation interference
US20070198901A1 (en) * 2005-07-12 2007-08-23 Amit Ramchandran Configurable interface for connecting various chipsets for wireless communication to a programmable (multi-)processor
KR100740209B1 (ko) * 2005-10-21 2007-07-18 삼성전자주식회사 디지털 방송 수신 시스템 및 그 신호 처리 방법
WO2007073033A1 (en) * 2005-12-22 2007-06-28 Samsung Electronics Co., Ltd. Digital broadcasting transmitter, turbo stream processing method thereof, and digital broadcasting system having the same
US7958426B2 (en) * 2006-08-25 2011-06-07 Innovation Specialists, Llc Distributed block coding (DBC)
US7681110B2 (en) * 2006-08-30 2010-03-16 Microsoft Corporation Decoding technique for linear block codes
JP4930512B2 (ja) * 2006-09-29 2012-05-16 富士通株式会社 無線通信システム、送信装置および受信装置
WO2008076214A2 (en) * 2006-12-14 2008-06-26 Regents Of The University Of Minnesota Error detection and correction using error pattern correcting codes
US7933372B2 (en) * 2007-03-08 2011-04-26 Freescale Semiconductor, Inc. Successive interference cancellation based on the number of retransmissions
KR101480383B1 (ko) * 2007-07-25 2015-01-09 삼성전자주식회사 코드 인코딩 장치
US8095856B2 (en) * 2007-09-14 2012-01-10 Industrial Technology Research Institute Method and apparatus for mitigating memory requirements of erasure decoding processing
WO2010076835A1 (en) * 2008-12-31 2010-07-08 Christophe Laurent Error correction code for unidirectional memory
US8276042B2 (en) * 2009-02-03 2012-09-25 Micron Technology, Inc. Determining sector status in a memory device
US8572460B2 (en) * 2009-03-17 2013-10-29 Broadcom Corporation Communication device employing binary product coding with selective additional cyclic redundancy check (CRC) therein
US8472505B2 (en) * 2009-06-17 2013-06-25 Electronics And Telecommunications Research Institute Constant amplitude encoding apparatus and method for code division multiplexing communication system
KR101407944B1 (ko) * 2009-06-17 2014-06-17 한국전자통신연구원 코드 분할 다중화 통신 시스템에서 전송 신호의 정진폭 부호화 장치 및 방법
US8443255B2 (en) * 2010-08-26 2013-05-14 Qualcomm Incorporated Parity check matrix optimization and selection for iterative decoding
US9294133B1 (en) * 2013-01-29 2016-03-22 Marvell International Ltd. Method and apparatus for error correction
KR101550762B1 (ko) * 2013-11-29 2015-09-08 한국과학기술원 연접 오류 정정 장치
CN106411476B (zh) * 2016-11-02 2019-08-06 上海华为技术有限公司 重传请求的处理方法、发送端、接收端和系统
US11375578B2 (en) * 2018-09-17 2022-06-28 Qualcomm Incorporated Bluetooth connectionless slave broadcast burst mode

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5136592A (en) 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
US5446759A (en) * 1992-03-12 1995-08-29 Ntp Incorporated Information transmission system and method of operation
EP0677937B1 (en) * 1994-04-14 2001-02-28 Alcatel Method for detecting erasures in a multicarrier data transmission system
US6292918B1 (en) * 1998-11-05 2001-09-18 Qualcomm Incorporated Efficient iterative decoding
EP1085661B1 (en) * 1999-09-14 2005-03-02 Lucent Technologies Inc. Channel decoder and method of channel decoding
US7016296B2 (en) * 2000-10-16 2006-03-21 Broadcom Corporation Adaptive modulation for fixed wireless link in cable transmission system
US7027708B2 (en) * 2000-12-29 2006-04-11 Etalk Corporation System and method for reproducing a video session using accelerated frame playback

Also Published As

Publication number Publication date
JP2006501696A (ja) 2006-01-12
ATE305668T1 (de) 2005-10-15
DE60206419D1 (de) 2006-02-09
EP1464121B1 (en) 2005-09-28
US20030106008A1 (en) 2003-06-05
AU2002359587A8 (en) 2003-06-17
WO2003049294A2 (en) 2003-06-12
JP4152887B2 (ja) 2008-09-17
US6986092B2 (en) 2006-01-10
DE60206419T2 (de) 2006-07-06
EP1464121A2 (en) 2004-10-06
CN100438346C (zh) 2008-11-26
WO2003049294A3 (en) 2004-01-29
AU2002359587A1 (en) 2003-06-17
CN1618174A (zh) 2005-05-18

Similar Documents

Publication Publication Date Title
EP1464121B1 (en) Erasure-and-single-error correction decoder for linear block codes
KR100574218B1 (ko) 파일 공중 전송을 위한 에러 보호를 제공하는 방법 및 장치
US9490849B1 (en) Systems and methods for configuring product codes for error correction in a hard disk drive
US9053047B2 (en) Parameter estimation using partial ECC decoding
EP0935211B1 (en) Electronic indentification system with forward error correction system
US11239944B1 (en) Methods and devices for rate adaptive forward error correction using a flexible irregular error correcting code
US8069393B2 (en) Method and system for providing long and short block length low density parity check (LDPC) codes
US20070226578A1 (en) Method and apparatus for providing reduced memory low density parity check (LDPC) codes
US20150347230A1 (en) High-performance ecc decoder
US20100241923A1 (en) Communication device employing LDPC (Low Density Parity Check) coding with Reed-Solomon (RS) and/or binary product coding
US7296212B1 (en) Multi-dimensional irregular array codes and methods for forward error correction, and apparatuses and systems employing such codes and methods
US8694850B1 (en) Fast erasure decoding for product code columns
US10236913B2 (en) Error checking and correcting decoder
US9312884B2 (en) Double QC-LDPC code
US7290197B2 (en) Correcting data using redundancy blocks
WO1998012819A1 (en) Improved multiple-burst-correction system
US5809042A (en) Interleave type error correction method and apparatus
Rohith et al. FPGA Implementation of (15, 7) BCH encoder and decoder for text message
Tiwari et al. Design and implementation of Reed Solomon Decoder for 802.16 network using FPGA
US7962839B1 (en) Single burst error correction
US7254771B1 (en) Error-erasure decoding of interleaved reed-solomon code
US20210175904A1 (en) Very Low Complexity SECDED Codes
US8209589B2 (en) Reed-solomon decoder with a variable number of correctable errors
RU2844765C1 (ru) Способ комплексной защиты информации в каналах связи
HK1074919A (en) Erasure-and-single-error correction decoder for linear block codes