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
Links
- 238000012937 correction Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 claims abstract description 67
- 238000001514 detection method Methods 0.000 claims abstract description 17
- 239000011159 matrix material Substances 0.000 claims description 56
- 238000012217 deletion Methods 0.000 claims description 37
- 230000037430 deletion Effects 0.000 claims description 37
- 230000009897 systematic effect Effects 0.000 claims description 37
- 238000012795 verification Methods 0.000 claims description 14
- 238000004891 communication Methods 0.000 claims description 11
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 230000015572 biosynthetic process Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 claims description 3
- KLDZYURQCUYZBL-UHFFFAOYSA-N 2-[3-[(2-hydroxyphenyl)methylideneamino]propyliminomethyl]phenol Chemical compound OC1=CC=CC=C1C=NCCCN=CC1=CC=CC=C1O KLDZYURQCUYZBL-UHFFFAOYSA-N 0.000 claims 2
- 201000001098 delayed sleep phase syndrome Diseases 0.000 claims 2
- 208000033921 delayed sleep phase type circadian rhythm sleep disease Diseases 0.000 claims 2
- 238000012360 testing method Methods 0.000 claims 2
- 230000000875 corresponding effect Effects 0.000 description 31
- 230000001629 suppression Effects 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 208000011580 syndromic disease Diseases 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 235000015278 beef Nutrition 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000003750 conditioning effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000003071 parasitic effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/65—Purpose and implementation aspects
- H03M13/6502—Reduction of hardware complexity or efficient processing
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic 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/1515—Reed-Solomon codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/13—Linear codes
- H03M13/19—Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2906—Coding, 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/2909—Product codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/29—Coding, 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/2906—Coding, 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/2927—Decoding strategies
- H03M13/293—Decoding strategies with erasure setting
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding 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.
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.
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.
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.
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.
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).
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.
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.
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.
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)
| 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)
| 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 |
-
2001
- 2001-12-04 US US10/010,199 patent/US6986092B2/en not_active Expired - Lifetime
-
2002
- 2002-12-03 CN CNB028275209A patent/CN100438346C/zh not_active Expired - Fee Related
- 2002-12-03 EP EP02794135A patent/EP1464121B1/en not_active Expired - Lifetime
- 2002-12-03 DE DE60206419T patent/DE60206419T2/de not_active Expired - Lifetime
- 2002-12-03 WO PCT/US2002/038667 patent/WO2003049294A2/en not_active Ceased
- 2002-12-03 ES ES02794135T patent/ES2248631T3/es not_active Expired - Lifetime
- 2002-12-03 AT AT02794135T patent/ATE305668T1/de not_active IP Right Cessation
- 2002-12-03 JP JP2003550367A patent/JP4152887B2/ja not_active Expired - Fee Related
- 2002-12-03 AU AU2002359587A patent/AU2002359587A1/en not_active Abandoned
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 |