MXPA04007076A - Mensajeria en bloque de componente intra-decodificador. - Google Patents

Mensajeria en bloque de componente intra-decodificador.

Info

Publication number
MXPA04007076A
MXPA04007076A MXPA04007076A MXPA04007076A MXPA04007076A MX PA04007076 A MXPA04007076 A MX PA04007076A MX PA04007076 A MXPA04007076 A MX PA04007076A MX PA04007076 A MXPA04007076 A MX PA04007076A MX PA04007076 A MXPA04007076 A MX PA04007076A
Authority
MX
Mexico
Prior art keywords
error
block
decoder
polynomial
code word
Prior art date
Application number
MXPA04007076A
Other languages
English (en)
Inventor
Velez Didier
Original Assignee
Thomson Licensing Sa
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 Thomson Licensing Sa filed Critical Thomson Licensing Sa
Publication of MXPA04007076A publication Critical patent/MXPA04007076A/es

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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/18Error detection or correction; Testing, e.g. of drop-outs
    • G11B20/1803Error detection or correction; Testing, e.g. of drop-outs by redundancy in data representation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11BINFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER
    • G11B20/00Signal processing not specific to the method of recording or reproducing; Circuits therefor
    • G11B20/10Digital recording or reproducing
    • G11B20/10009Improvement or modification of read or write signals
    • G11B20/10268Improvement or modification of read or write signals bit detection or demodulation methods
    • G11B20/10287Improvement or modification of read or write signals bit detection or demodulation methods using probabilistic methods, e.g. maximum likelihood detectors
    • G11B20/10296Improvement or modification of read or write signals bit detection or demodulation methods using probabilistic methods, e.g. maximum likelihood detectors using the Viterbi algorithm
    • 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/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/1555Pipelined decoder implementations

Landscapes

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

Abstract

Se describe un decodificador y un metodo de decodificacion en donde se calcula un sindrome de una palabra codigo en un generador (410) generador de sindrome, un polinomio de error se basa en el sindrome en un generador (420) de polinomio de error, una ubicacion de error se determina a partir del polinomio de error en el generador (430) de ubicacion de error, se calcula la magnitud de error a partir del p In de error en el generador (440) de magnitud de error y la palabra codigo se corrige por un generador (450) de palabra codigo corregida de error, el cual responde a la ubicacion y magnitud de error. Se describe un esquema de mensajeria en bloque entre decodificadores en donde uno o mas componentes (410, 420, 430, 440, 450) generan mensaje de inactividad (640, 650) para indicar la capacidad para procesar datos correspondientes a la siguiente palabra codigo. Se describe una implementacion de bloque doble (930, 940) de busqueda Chien, en donde un bloque (930) Chien se utiliza para determinar el numero de errores en una palabra codigo especifica, en forma separada de los calculos de magnitud y ubicacion de error llevados a cabo por el bloque (940) Chien-Forney Se describe una arquitectura de celda de busqueda Chien mejorada, la cual utiliza un sumador (1140) de campo Galois adicional para sincronizar la palabra codigo y el vector de error, lo cual disminuye el retraso y los gastos correspondientes al bloque (950) de correccion de error implementado con un registro (952) LIFO.

Description

For two-letter codes and other abbreviations, refer to the "Guid-ance Notes on Codes and Abbreviations " appearing at the besin-ntng oj each regular issue oj the PCT Gazette.
MENSAJERÍA EN BLOQUE DE COMPONENTE INTRA DECODIFICADOR REFERENCIA CRUZADA CON SOLICITUDES RELACIONADAS Esta solicitud de patente se relaciona con la solicitud de patente de Estados Unidos No. 10/055,076, presentada el 23 de enero de 2002 (Referencia del abogado No. PU020003) titulada "DUAL CHIEN SEARCH BLOCKS IN AN E RRO R-CO RRECTI NG DECODER" (BLOQUES DOBLES DE BÚSQUEDA CHIEN EN UN DECODIFICADOR DE CORRECCIÓN DE ERROR) y la Solicitud de Patente de Estados Unidos, No. 10/055,470, presentada el 23 de enero de 2002 (Referencia del abogado No. PU020001 ), titulada "CHIEN SEARCH CELL FOR AN ERROR-CORRECTI NG DECODER" (CELDA DE BÚSQUEDA CHIEN PARA UN DECODIFICADOR DE CORRECCIÓN DE ERROR), ambas incorporadas aquí como referencia.
CAMPO DE LA INVENCIÓN La presente invención se relaciona con la detección y corrección de error en un sistema de comunicación digital.
ANTECEDENTES DE LA INVENCIÓN Una función importante de cualquier sistema de comunicaciones digitales — m-o e-r-n-o — e-s — la— GO^-t-f-k> -ci -n — de — control — d-e — e-r-r or- L-a codificación de control de error es el campo de las comunicaciones 2 que trata con técnicas para detectar y corregir errores en un sistema digital. Por lo general, los esquemas de detección y corrección de error se utiliza cada vez que se desea asegurar que durante la transmisión o en el almacenamiento de datos digitales, no se introduzcan errores dentro de los datos, o de modo alternativo, cuando se introduce un error en los datos, el error introducido sea corregido. La capacidad para detectar y/o corregir errores en los datos se logra al agregar redundancia en los datos. La inclusión de bits redundantes en los datos almacenados o transmitidos da como resultado una señal o campo codificados compuestos de más bits que la señal o campo sin codificar original. Un esquema utilizado con mucha frecuencia para la detección/corrección de error es mediante el uso de códigos de Reed-Solomon. Los códigos Reed-Solomon son códigos en bloque, lineales, cíclicos, sistemáticos, no binarios. Los códigos no binarios funcionan con símbolos compuestos de varios bits. El código no binario, como el código Reed-Solomon, funcionan bien para corregir errores en ráfaga debido a que la corrección de estos códigos se lleva a cabo a nivel símbolo. Un código sistemático, tal como el código Reed-Solomon, genera palabras de código que contienen símbolos de mensaje en una forma no alterada. El codificador aplica una función matemática reversible a los símbolos del mensaje con el fin de generar los símbolos de redundancia o de paridad. La palabra código se forma al adjuntar los símbolos de paridad a los símbolos del mensaje. El código Reed-Solomon se considera un código cíclico 3 ya que un cambio circular de cualquier palabra código válida también produce una palabra código válida. Los códigos cíclicos son populares debido a que existen técnicas de decodificación económicas y muy efectivas para ¡mplementarlas. Por último, el código Reed-Solomon se considera lineal ya que la adición de dos palabras código válidas da como resultado otra palabra código válida. Un decodificador Reed-Solomon típico está compuesto de los siguientes bloques de componente principales: (i) un bloque generador de síndrome, (ii) un bloque de polinomio de error, (iii) un bloque de ubicación de error, y (iv) un bloque de magnitud de error, (v) un bloque de corrección de error y (vi) un bloque de retraso. El bloque generador de síndrome se utiliza para recibir una palabra código y generar un síndrome a partir de la palabra código. El síndrome se utiliza para crear un polinomio de error en el bloque de polinomio de error. El polinomio de error se pasa sobre los bloques de ubicación de error y de magnitud de error, en donde se determinan las ubicaciones y magnitudes para una palabra código, respectivamente. Un vector de error se genera de la ubicación y magnitud de error. Una versión retrasada de la palabra código recibida se corrige con el bloque de corrección de error con el uso délo vector de error correspondiente a una palabra código específica. El bloque de retraso está compuesto de una memoria para almacenar la palabra código recibida mientras se lleva a cabo el proceso de decodificación para producir un vector de error. 4 Los decodif ¡cadores de la técnica previa utilizan estos bloques para formar una "corriente de entrega". Esto es, la entrada a un bloque solamente depende de la salida de un bloque previo y no hay retroalimentación de un bloque de componente al anterior o a un bloque posterior. Por lo tanto, solamente se puede procesar una palabra código por vez, y la siguiente palabra código a ser procesada no se empieza hasta que se completa el proceso de la palabra código anterior.
BREVE DESCRIPCIÓN DE LA INVENCIÓN Las desventajas de la técnica previa se resuelven con la presente invención, un método y aparato para llevar a cabo la detección de error de datos dentro de una palabra código. Un decodificador que lleva a cabo la detección de error de datos está compuesto de un generador de síndrome para calcular el síndrome de la palabra código; un generador de polinomio de error para generar un polinomio de error a partir del síndrome; un generador de ubicación de error para determinar la ubicación de error a partir del polinomio de error y un generador de magnitud de error para calcular la magnitud de error a partir del polinomio de error. El decodificador se caracteriza porque se adapta para enviar un mensaje de inactividad entre decodif icadores de por lo menos un componente seleccionado de un grupo que consiste del generador de síndrome, el generador de polinomio de error, el generador de ubicación de error, y el generador de magnitud de error. 5 BREVE DESCRIPCIÓN DE LOS DIBUJOS Se recomienda hacer referencia a la siguiente descripción de la presente invención, junto con los dibujos acompañantes. La Figura 1 es una representación de diagrama en bloque de un sistema de entrega de datos digitales que incorpora un esquema de corrección de error. La Figura 2 es un diagrama de flujo que ilustra una metodología del esquema de corrección de error típica. La Figura 3 es una representación jerárquica de varios esquemas de corrección de error. La Figura 4 es una representación de diagrama de un decodificador REED-SOLOMON (RS). La Figura 5 es una representación de diagrama de una modalidad ejemplificativa de un decodificador REED-SOLOMON (RS), utilizado de conformidad con los principios de la presente invención.
La Figura 6 es un diagrama en bloque que ilustra un protocolo de acuerdo inicial, intra-decod ificador ejemplificativo de conformidad con los principios de la presente invención. La Figura 7 es un diagrama en bloque que ilustra un protocolo de acuerdo inicial entre los bloques funcionales de una modalidad ejemplificativa de un decodificador REED-SOLOMON (RS), de conformidad con los principios de la presente invención. La Figura 8 es un diagrama de tiempo para los decodif icadores REED-SOLOMON (RS) que demuestra las eficiencias asociadas con 6 el decodificador con el uso del acuerdo inicial entre bloques, de conformidad con los principios de la presente invención. La Figura 9 es una representación de diagrama en bloque de una modalidad ejemplif ¡cativa de un decodificador REED-SOLOMON (RS) que utiliza un bloque Chien además de un bloque Chien/Forney de conformidad con los principios de la presente invención. La Figura 10 es una representación de diagrama en bloque para una celda de búsqueda Chien de la técnica previa implementada en un decodificador REED-SOLOMON (RS). La Figura 11 es una representación de diagrama en bloque de una celda de búsqueda Chien mejorada implementada en un decodificador REED-SOLOMON (RS) en donde se reducen los requerimientos de retraso y de memoria, de conformidad con los principios de la presente invención.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN Con referencia a la Figura 1, se ilustra una representación de diagrama en bloque de un sistema 100 de entrega de datos digitales que incorpora un esquema de detección/corrección de error de conformidad con los principios incorporados en la presente invención. Por lo general, los esquemas de detección/corrección de error se utilizan cada vez que se desea asegurar que, durante la transmisión o en el almacenamiento de datos digitales no se introduzcan errores dentro de los datos, o de modo alternativo, cuando se introducen errores en los datos, se pueda corregir el error 7 introducido. La capacidad para detectar y/o corregir errores en los datos se logra al agregar redundancia en los datos. La inclusión de bits redundantes en los datos transmitidos o almacenados da como resultado una señal o campo codificados compuesto de más bits que la señal o campo no codificado original. El quid pro quo para tolerar este encabezado adicional es la capacidad para detectar o para detectar y corregir errores. Esta mejora en el desempeño obtenida con el uso de la codificación de control de error con frecuencia se mide en términos de ganancia de código. Supongamos un sistema de comunicaciones no codificado que alcanza una proporción de error de bits (BER) a una proporción de señal a ruido (SNR) de 30 dB. En caso de agregar un esquema de codificación de control de error con una ganancia de codificación de 3 dB al sistema, el sistema codificado contará con la capacidad de alcanzar la BER a una SNR más baja de 27 dB. De manera alternativa, cuando el sistema opera a una SNR de 30 dB, la BER alcanzada por el sistema codificado será la misma BER que el sistema no codificado alcanzado a una SNR de 33 dB. La energía de la ganancia de codificación es que permite al sistema de comunicaciones (i) mantener una BER deseada a una SNR más baja de lo que fue posible sin codificación o (ii) alcanzar una BER más alta de lo que el sistema no codificado alcanzaría a una SNR determinada. A manera de ejemplo, una función del codificador 110 es aceptar los datos digitales desde la fuente de datos y transmitir los datos a través de un canal o almacenar los datos en un medio de 8 almacenamiento (mostrado colectivamente como un canal o dispositivo 115 de almacenamiento) o de otra forma manipular o procesar los datos. Con frecuencia se presenta el caso que durante el proceso de transmisión o almacenamiento, los datos se pueden introducir con ruido o errores 125, lo cual distorsiona o altera en forma de los datos digitales originales. El decodif icador 120 funciona para detectar y corregir o solamente detectar que una porción predeterminada de los datos digitales ha sido distorsionada. Con referencia a la Figura 2, se ilustra un diagrama de flujo que muestra los diferentes procesos de detección/corrección de error disponibles dentro del contexto de un ambiente transmisor/canal/receptor. Aunque se describe dentro de tal contexto, las personas experimentadas en la técnica podrán reconocer que los procesos de detección/corrección de error se pueden aplicar en una transmisión de difusión, almacenamiento de datos digitales y cualquier otro proceso en donde se procesan o manipulan datos digitales (ya sea en forma de un campo, paquete, corriente de datos, etc). A manera de ejemplo, las siguientes tecnologías/dispositivos que son ilustrativas y no limitantes, pueden utilizar los esquemas de detección/corrección de error para mejorar el desempeño, integridad y confiabilidad: (i) varios dispositivos de almacenamiento, incluyendo pero no limitados a cintas, discos compactos (CD), discos versátiles digitales (DVD), códigos de barra, etc., (ii) comunicaciones móviles o inalámbricas (incluyendo teléfonos celulares, transceptores de dos vías, enlaces de 9 microondas, etc., (iii) comunicaciones satelitales (iv) radios digitales, televisión digital (DTV) transmisión de video digital (DVB), etc., (v) módems, incluyendo pero no limitados a cable, V.pcm, ADSL, xDSL, etc. De conformidad con el paso 210, después de inicialmente establecer un enlace y negociar los parámetros del canal de transmisión, una fuente de transmisión procesa los datos digitales en una forma apropiada para su transmisión. De conformidad con el paso 215, y antes de su transmisión, la fuente genera un código de error, el código de error está con base, por lo menos en parte, al valor de los datos digitales a ser transmitidos, lo cual proporciona un grado de redundancia de datos. De acuerdo con el paso 220, el código de error generado se adjunta, anexa, multiplexa o se incluye de otra forma junto con los datos digitales, y se transmiten desde el transmisor al receptor. De acuerdo con el paso 225, los datos digitales y el código de error son recibidos en el receptor. El procesamiento inicial de señal, cuando se requiere, se implementa en el receptor, de acuerdo con el paso 230. De acuerdo con el paso 235, el receptor tiene acceso a los bits redundantes del código de error y procesa la información contenida en los mismos de conformidad con un esquema de código de control de error a ser utilizado. De acuerdo con el paso 240, los bits redundantes deben verificarse afirmativamente contra los datos digitales recibidos, entonces los datos se presumen no distorsionados. Otro 10 procesamiento de señal (si existe) de los datos digitales se reanudan en el receptor, de conformidad con el paso 245. Sin embargo, los bits redundantes procesados deben indicar que los datos digitales recibidos están distorsionados (contienen por lo menos un error de bit), entonces los errores de datos se evalúan para determinar si los errores se pueden corregir dentro del mismo esquema de control de error utilizado, de conformidad con el paso 250. Esto es, algunos esquemas de control de error solamente tienen la capacidad para la detección de error, pero no incluyen la calidad y el tipo de datos redundantes para permitir la corrección de esos errores. Otros esquemas de control de error pueden utilizar solamente sus capacidades de detección de error a pesar del hecho de que pueden tener ambas capacidades, de detección y de corrección de error. Con frecuencia, este esquema se utiliza cuando la exactitud de la señal de datos, mensaje o paquete no tiene particular importancia, sino más bien lo importante es la consistencia y la entrega de datos oportuna. Un ejemplo de tal aplicación son los datos en corriente sincronizada para las aplicaciones de voz, audio y video. Además, aun cuando se utilice un esquema de corrección de error para detectar y corregir errores, cuando el número o la ráfaga de errores detectada sea mayor que la capacidad de corrección de error (esto es, excede la información redundante provista por los bits de código de error), entonces los datos simplemente no se pueden recuperar. De acuerdo con el paso 255, cuando los datos se pueden corregir, entonces los datos se corrigen y se reanuda otro 11 procesamiento de señal (si existe) en el receptor. Cuando los datos son incorregibles, entonces se lleva a cabo una evaluación para determinar si la exactitud de los datos es esencial, de conformidad con el paso 260. Cuando la exactitud es esencial, como es en los sistemas de datos puros, la probabilidad de un único error de bit es mucha y se envía una solicitud de retransmisión a la fuente de transmisión de conformidad con el paso 265. Sin embargo, cuando la exactitud de un error incorregible no es esencial, como el caso con mensajes de datos de una naturaleza sincronizada (como voz, audio y video), entonces los datos distorsionados e incorregibles simplemente se descartan y se procesa el siguiente mensaje de datos de acuerdo con el paso 270. Con referencia a la Figura 3, se ilustra una representación jerárquica para varias clasificaciones y esquemas de código de error. Los códigos 310 de error se pueden dividir en dos clasificaciones básicas: (i) solicitud automática de retransmisión (ARQ) o códigos 315 de detección, y (ii) códigos 320 de corrección de error delantero (FEC). ARQ es un tipo de codificación de solamente detección, en donde los errores en una transmisión se pueden detectar por el receptor, pero no se pueden corregir. El receptor debe preguntar por cualquier dato recibido y solicitar la retransmisión de los datos recibidos con errores detectados. Debido a que las retransmisiones ocuparán un ancho de banda considerable, los códigos ARQ generalmente se utilizan para "limpiar" los medios de transmisión (aquellos con una menor probabilidad de error). Uno de los ejemplos 12 más comunes es la verificación 325 de paridad, que se utiliza con frecuencia para detectar errores de datos en la RAM. Otro ejemplo es una verificación de redundancia cíclica (CRC) 330, la cual se utiliza para detectar errores en una transmisión sobre Ethernet. Cuando se detectan errores, el mensaje será retransmitido. Debido a que Ethernet se transmite principalmente sobre cable, la probabilidad de errores es menor que para otros medios. CRC y ARQ son dos ejemplos ilustrativos de los esquemas de código de detección de error, y las personas experimentadas en la técnica podrán reconocer otros esquemas de código de detección de error. Los códigos de error que solamente detectan errores y no los corrigen, agregan mucho menos redundancia que los códigos de corrección de error. Además, un decodif icador de detección de error es menos complejo que el decodificador de corrección de error. Los sistemas que utilizan los esquemas de código de detección de error por lo general son tolerantes al ancho de banda con respecto al encabezado incurrido para la retransmisión de datos. Esto es, la retransmisión de datos no afecta mucho el desempeño general del sistema. Ya que los medios ruidosos proporcionan una gran probabilidad de introducir errores dentro de una transmisión determinada, el uso de los métodos ARQ significa una retransmisión constante de los datos, lo cual reduce el desempeño del sistema a niveles poco aceptables. En estos casos, el código de corrección de error, como su nombre lo implica, permite no solamente la detección de errores 13 en el extremo receptor, sino que también la corrección de error. Esto reduce la necesidad de retransmisión de datos, que solamente se requiere cuando el número de errores es mayor que el número que se puede corregir por el método de corrección de error utilizado. La corrección de error también se utiliza para las comunicaciones de una vía, en donde la oportunidad del receptor para solicitar que la retransmisión no está disponible. Los ejemplos ilustrativos de estos trayectos de una vía incluyen transmisiones de satélite y medios de almacenamiento de cinta magnética. Los códigos de corrección de error se pueden dividir en dos sub-categorías principales. La primera son los códigos 335 en bloque y la segunda son los códigos 340 convolutivos. Los códigos 335 en bloque son códigos de corrección de error muy utilizados que funcionan con bloques de mensaje de una longitud finita definida. Los códigos 335 de bloque se llaman así debido a que la sub-categoría utiliza un codificador que procesa un bloque se símbolos de mensaje y después emite un bloque de símbolos de palabra código. Los códigos en bloque por lo general, se pueden clasificar en dos tipos: códigos binarios 345 y códigos no binarios 355. Un ejemplo de un código 345 binario es el código 350 Hamming, caracterizado por tener cuatro bits de información y tres bits de revisión por carácter. Un ejemplo de un código no binario es el código 360 REED-SOLOMON. Por el contrario, los codificadores del código 340 convolutivo funcionan en una corriente continua de símbolos de mensaje y 14 generan en forma simultánea una corriente de salida codificada continua. Estos códigos adquieren su nombre debido a que el proceso de codificación se puede ver como la convolución de los símbolos de mensaje y la respuesta del impulso del codificador. Dos ejemplos de los códigos 340 convolutivos son modulación codificada Trellis 365 (TCM) y la codificación 370 convolutiva binaria. La Figura 4 es una representación de diagrama en bloque de un decodif icador REED-SOLOMON (RS). Como se explicó antes, los códigos REED-SOLOMON son códigos en bloque lineales cíclicos sistemáticos no binarios. Los códigos no binarios funcionan con símbolos que están compuestos de varios bits. Un tamaño común de símbolo para códigos no binarios es de 8 bits, o un byte. El código no binario, como el código REED-SOLOMON, son buenos para corregir errores de ráfaga debido a la corrección de estos códigos se lleva a cabo a nivel de símbolo. Al funcionar con símbolos en el proceso de decodificación, estos códigos pueden corregir un símbolo con una ráfaga de 8 tan fácilmente como pueden corregir un símbolo con un único error de bit. Un código sistemático, como el código REED-SOLOMON, genera palabras código que contienen los símbolos de mensaje en una forma no alterada. El codificador aplica una función matemática invertida para los símbolos de mensaje con el fin de generar símbolos de redundancia o de paridad. La palabra código entonces se forma al adjuntar los símbolos de paridad a los símbolos de mensaje. El código REED-SOLOMON se considera un código cíclico debido a un desplazamiento circular de cualquier 15 palabra código válida también produce otra palabra código válida. Los códigos cíclicos son populares debido a que existen técnicas de decodificación económicas y eficientes para ser implementadas. Por último, el código REED-SOLOMON se considera lineal debido a la adición de cualquiera de dos palabras código válidas, que da resultado en otra palabra código válida. La teoría de los códigos de control de error utiliza una construcción matemática conocida como campos finitos o campos Galois. Un campo Galois es un grupo que contiene un número finito de elementos. Las operaciones de adición y multiplicación en este grupo se definen y las operaciones se comporta como se espera a partir de una aritmética normal. Por ejemplo, el elemento de identidad aditivo es 0 y el elemento de identidad multiplicador es 1. El código REED-SOLOMON se implementa con el uso de las matemáticas de campo Galois, que es responsable de la naturaleza lineal y cíclica del código y opera en los campos Galois del orden de q=pm, en donde p es un entero positivo primo y m es un entero positivo. Un campo Galois del orden qt se señala por GF(q) y contiene elementos q diferentes. Un código REED-SOLOMON determinado se indica al referenciarlo como un código (n,k). El parámetro n indica que la longitud de palabra de código en términos del número de símbolos en la palabra código. El parámetro k indica el número de símbolos de mensaje en la palabra código. El número de símbolos de paridad agregado es por lo tanto n - k. La capacidad de corrección de error 16 del código es t = (n - k)/2. El código puede detectar y corregir errores T en donde 0 = T = t. La palabra código se basa en los símbolos de mensaje y se genera con un codificador REED-SOLOMON. Debido a que REED-SOLOMON es un código sistemático, los símbolos n de mensaje se transmiten como son y los símbolos de paridad n - k se adjuntan a los símbolos de mensaje para formar una palabra código. Los valores de los símbolos de paridad que agregan redundancia a la palabra código transmitida, dependen de los símbolos de mensaje. Esta redundancia se explota por el decodificador del receptor para detectar y corregir errores. En el decodificador del receptor, las palabras código se reciben como entradas para el bloque 410 generador de síndrome. El primer paso llevado a cabo por el decodificador es el cálculo del síndrome, llevado a cabo por el bloque 410 generador de síndrome (llamado con frecuencia como el módulo generador de síndrome, o simplemente generador de síndrome). El síndrome está compuesto de n-k símbolos y los valores se calculan de la palabra código recibida. El síndrome depende del vector de error, y es independiente de la polinomio código transmitida. Es decir, cada vector de error tiene un único vector de síndrome, pero muchas palabras código diferentes tendrán el mismo síndrome cuando el patrón de error sea el mismo. La razón del síndrome es primero calcular, porque al hacerlo se estrecha el campo de búsqueda para el vector de error. Primero, al conocer el síndrome se estrechará el 17 número de vectores de error apropiados para los vectores de error 2n k fuera de dos posibles vectores de error 2n. Un método mediante el cual el bloque 410 generador de síndrome calcula el síndrome al dividir el código de polinomio recibido por el polinomio del generador con el uso de un álgebra del campo Galois. El resto de esta división se llama el polinomio s(x) del síndrome. El vector S(x) del síndrome real se calcula al evaluar s(x) a a a través de an"k. Sin embargo, este método puede ser eficiente desde una perspectiva del hardware, y un método alternativo que se utiliza con frecuencia en el hardware es evaluar directamente la palabra código recibida R(x) a a a través de an"k. El bloque 410 generador de síndrome computa el síndrome S al evaluar la palabra código R recibida a a a través de an k, esto es, R(a) a través de R(an k). En el código REED-SOLOMON, n-k = 2t, y de este modo existen 2t valores de síndrome para computar: (S1, S2 S3 ...S(2T)). Típicamente, estos valores típicamente se computan en paralelo, el primer generador de síndrome evalúa la palabra código recibida en a para formar S1, el siguiente generador de síndrome evalúa la palabra código recibida en a2 para formar S2, y demás. Una vez que se calcula el síndrome por el bloque 410 generador de síndrome, su valor se pasa sobre el bloque 420 de polinomio de error. Ahí, el síndrome se utiliza para crear un polinomio de ubicación de error. Este proceso involucra resolver xa c i o ae s- sim u Uá n-e-as — de — t — de-s-cojoo c i d o s A-I^-U-R -S— algoritmos rápidos se encuentran disponibles para estos cálculos, incluyendo el 18 algoritmo Berlekamp-Massey o el algoritmo Euclid. Estos algoritmos toman ventaja de una estructura especial de matriz de los códigos REED-SOLOMON y reduce mucho el esfuerzo de computación requerido. El bloque 420 de polinomio de error pasa al polinomio de ubicación de error (una vez determinado) al bloque 430 de ubicación de error y al bloque 440 de magnitud de error. El bloque 430 de ubicación de error resuelve las raíces del polinomio de ubicación de error para determinar la ubicación del error. Típicamente, esto se logra con el uso de un algoritmo de búsqueda Chien o una celda Chien. Las ubicaciones de error determinadas por el bloque 430 de ubicación de error se pasan al bloque 440 de magnitud de error junto con el polinomio de ubicación de error previamente determinado. El bloque 440 de magnitud de error determina la magnitud de error al resolver las ecuaciones simultáneas con t desconocidos. Un algoritmo rápido y ampliamente utilizado para implementar el bloque 440 de magnitud de error es el algoritmo Forney. La ubicación de error calculado y la magnitud de error se envían al bloque 450 de corrección de error para recuperar la palabra código corregida cuando esté distorsionada. Con frecuencia, la combinación de la ubicación de error y la magnitud de error es referida como el vector de error. El vector de error es del mismo tamaño que la palabra código y contiene valores no cero en ubicaciones que corresponden a los errores. Las otras ubicaciones contienen ceros. Otra entrada para el bloque 450 de corrección de 19 error es la salida de un bloque 460 de retraso. El bloque 460 de retraso toma la palabra código recibida y emite la misma palabra código recibida, con retraso. El bloque 450 de corrección de error, en una modalidad, se implementa con el uso de un sumador 452 del campo Galois junto con un bloque 454 LIFO (Último adentro, primero afuera). Los errores en la palabra código recibida se corrigen al agregar la palabra código recibida al vector de error con el uso del sumador 452 del campo Galois. Un bloque 454 LIFO se utiliza debido a que el vector de error se genera en el orden invertido de la palabra código recibida, y por lo tanto, la operación del LIFO se debe aplicar a cualquiera de la palabra código recibida o al vector de error con el fin de que coincida el orden de los bytes en ambos vectores. La salida del bloque 450 de corrección de error, es el cálculo del decodificador de la palabra código original. La Figura 5 es una representación de diagrama en bloque de una modalidad ejemplificativa de un decodificador REED-SOLO ON (RS). La entrada es una palabra código recibida que se envía al bloque 510 generador de síndrome. Una vez que se calcula el síndrome S(x) por el bloque 510 generador de síndrome, su valor se pasa al bloque 520 de algoritmo Euclid. El algoritmo Euclid procesa el síndrome S(x) con el fin de generar el polinomio de ubicación de error ?(?) y el polinomio de magnitud de error O(?). Esto es, resuelve la siguiente ecuación que es referida como la Ecuación clave: ?(?) )1 +S(x)) = Q(x)modx Ecuación 1 20 El algoritmo utilizado en la decodificación REED-S"0"LOM 1~ está con base en el algoritmo Euclid para encontrar el divisor común más alto (GCD) de los dos polinomios. El algoritmo Euclid es un algoritmo de división de polinomio iterativo bien conocido. Una vez que se ha calculado el polinomio ?(?) de ubicación de erroOr, necesita evaluarse para encontrar sus raices. El algoritmo de búsqueda Chien se utiliza para encontrar estas raíces. La búsqueda Chien es un algoritmo de fuerza bruta que evalúa el polinomio para todos los posibles valores de entrada, y después determina cuáles salidas son iguales a cero. Cuando un error ocurre en la posición i, entonces la siguiente ecuación se iguala a cero: En donde i = 0..(n-1) Ecuación 2 La búsqueda Chien evalúa la ecuación 2 para todos los valores de i y j y cuenta el número de veces que la ecuación es igual a cero. La ubicación de ceros son las ubicaciones de error, y el número de ceros es el número de símbolos en el error. En una modalidad ejemplificativa, existen (t + 1) etapas de la búsqueda Chien que se implementan en el hardware. Cada una de estas etapas (en donde una etapa está compuesta de un multiplicador, un multiplexor y un registro) representa un valor diferente para j en la ecuación de búsqueda Chien anterior. La búsqueda se corre para n ciclos de reloj (cada ciclo de reloj 21 representa un valor diferente de i en la ecuación anterior) y la salida del sumador se examina para ver si es igual a cero. Cuando es igual a cero, un bloque de detección de cero será emitido en 1 , de otra forma, será emitido como cero. La salida del bloque de búsqueda Chien es así una cadena de n bits que tiene valores de "0" o de "1". Cada "1" representa la ubicación de un símbolo en error. Para el primer ciclo de reloj, el multiplexor enrutará el coeficiente del polinomio de ubicación de error dentro del registro. Para los restantes ciclos de reloj (n-1), la salida del multiplicador será enrutada a través del multiplexor dentro del registro. Los exponentes de los multiplicadores tienen valores negativos. Sin embargo, estos valores se pueden pre-calcular con el uso de un operador de módulo. El exponente de a ' es igual a (-i módulo n) = n(-¡ módulo 255). Por ejemplo, a'1 iguala a a254, a"2 iguala a a253 y asi consecutivamente. El algoritmo Forney se utiliza para calcular los valores Y¡ de error. Con el fin de calcular estos valores, el algoritmo Forney utiliza el polinomio de ubicación de error ?(?) y el polinomio de magnitud de error O(?). La ecuación para los valores de error es: Y = O(£) ' ?*(?) Para x = a-i, en donde a-i es la raíz de ?(?). Ecuación 3 22 El cálculo de la derivada formal de ?'(?) es realmente sencillo.
Por ejemplo, supongamos que ?(?) = a ?3 + a3?2 + a? + a2. ?'(?) entonces ¡guala a: ?'(?) = 3a4?2 + 2a3? + a (a4 + a4+ a4)?2 + (a3 + a3)? + a = a4?2 + a Ecuación 4 La derivada se forma al tomar los coeficientes de las potencias impares de X, y asignarlas a la siguiente potencia más baja de X (que será par). El polinomio O(?) entonces se evalúa junto con el polinomio ?'(?) con el uso del mismo tipo de hardware como se utiliza para la búsqueda Chien. Pa a evaluar O(?), el coeficiente Q¡¡ será añadido con el coeficiente O(, las veces a"1, el coeficiente O2, las veces de a" 2 y demás, hasta el coeficiente O{, las veces a '. La salida de estos multiplicadores entonces se suma. El numerador entonces se multiplica por el denominador con el uso de una multiplicación invertida. La multiplicación invertida contiene una tabla de consulta que encuentra el inverso del denominador. Por ejemplo, cuando el denominador fue a3, la inversa es a'3. Esto se puede expresar como: a-i = a(i-mod n) = a(-3 mod 255) = a252 Ecuación 5 Debido a que es necesario el mismo tipo de hardware para la búsqueda Chien y el algoritmo Forney, las dos funciones se pueden combinar en el mismo bloque, mostrado en el bloque 530 Chien/Forney. En esta implementación, se utilizan dos sumadores en 23 la salida de la búsqueda Chien, El primer sumador suma los valores para las etapas pares, y el otro sumador suma los valores para las etapas impares. Para formar la salida de la búsqueda Chien final, las emisiones de estos dos sumadores se suman y el bloque de detección cero detecta las ubicaciones de las raíces. La salida del sumador para las etapas impares también se utiliza en el algoritmo Forney. La suma de las etapas impares representa el denominador de la ecuación Forney. Este valor sumado se invierte y entonces se multiplica por el valor del numerador que se forma al evaluar el polinomio de magnitud de error. La salida es AND con la salida de detección cerro ya que los valores de error son solamente válidos para las ubicaciones de error reales (y deben ajustarse a cero). De este modo, el bloque 530 Chien/Forney utiliza el polinomio de ubicación de error y el polinomio de magnitud de error para generar un vector de error, el cual se envía al bloque 540 de corrección de error. El vector de error es del mismo tamaño que la palabra código y contiene valores no cero en ubicaciones que corresponden a errores. Las otras ubicaciones contienen ceros. Otra entrada para el bloque 540 de corrección de error es la salida de un bloque 550 de retraso. El bloque 550 de retraso toma la palabra código recibida y emite la misma palabra código recibida, con retraso. En la modalidad presente, el bloque 540 de corrección de error se implementa con el uso de un sumador 544 de campo Galois junto con un bloque 542 LIFO. Los errores en la palabra código recibida se corrigen al sumar la palabra código recibida con 24 el vector de error con el uso de un sumador 544 de campo Galois. Un bloque 542 LIFO se utiliza debido a que el vector de error se genera en el orden invertido de la palabra código recibida y por lo tanto una operación LIFO se debe aplicar a cualquier palabra código recibida o el vector de error con el fin de sincronizar el orden de bytes para ambos vectores. La salida del bloque 540 de corrección de error se encuentra el cálculo del decodif icador de la palabra código original.
Mensajería en bloque del componente entre decodificador Como se describió antes, el decodificador REED-SOLOMON tiene por lo menos cuatro componentes principales o bloques funcionales. Son el generador de síndrome, el bloque de polinomio de error, el bloque de ubicación de error y el bloque de magnitud de error. Cuando el decodificador corrige errores además de detectarlos, entonces el decodificador también incluye un bloque de corrección de error. En los decodif icadores de la técnica previa, estos bloques forman una "corriente de entrega" en que la entrada a un bloque solamente depende de la salida del bloque previo. Esto es, no existe retroal ¡mentación de un bloque al bloque previo. Un decodificador REED-SOLOMON también requiere la implementación de una memoria o bloque de memoria intermedia para almacenar la palabra código recibida mientras se lleva a cabo el proceso de decodificación para una palabra código específica (indicada por el bloque de retraso de las Figuras 4 y 5). Los bloques de 25 magnitud/ubicación de error producen un vector de error luego de completar el proceso de decodificación y este vector de error es XORed con la palabra código recibida que se almacena en la memoria con el fin de formar la salida del decodificador. Típicamente, el tamaño de la memoria que se utiliza es igual a una palabra código y de este modo, el decodificador solamente puede procesar una palabra código por vez. La Figura 6 es un diagrama en bloque de una modalidad ejemplificativa de un protocolo de acuerdo inicial de un decodificador interno, de conformidad con los principios de la presente invención. El bloque A 610 entre decodificador y el bloque B 620 entre decodificador representan cualquiera de los bloques dentro de un decodificador REED-SOLOMON (seleccionado de los bloques funcionales antes descritos), los cuales utilizan la retroalimentación o la comunicación entre bloques. La "corriente de entrega" de decodificación es el canal 630 de datos, el cual es representativo de cualquier canal unidireccional de la técnica entre tos bloques funcionales de un decodificador REED-SOLOMON. Además y de conformidad con la presente invención, también se muestran los canales de retroalimentación. Los canales de retroalimentación se pueden considerar como un medio para un bloque funcional para transportar su presente o futura inactividad a un bloque funcional descendente o ascendente. Por ejemplo, supongamos que el bloque A 610 entre decodificador ha completado su función de procesamiento para una palabra código específica. El bloque A 610 26 entre decodif icador arranca un mensaje de inactividad para el bloque B 620 entre decodificador, el cual indica que está listo para enviar el resultado de su función de cálculo para una palabra código específica para el bloque B 620 entre decodificador. De este modo, este tipo de mensaje de inactividad se llama mensaje 650 "listo para enviar ( R T S ) " . En forma contraria, supongamos que el bloque B 620 ha completado su función de procesamiento para una palabra código específica. El bloque B 620 entre decodificador lanza un mensaje de inactividad al bloque A 610 entre decodificador que indica que está listo para recibir. De este modo, este tipo de mensaje de inactividad se llama mensaje 640 "listo para recibir (RTR)". Esta modalidad de la presente invención, una implementación de decodificador con retroalimentación o acuerdo inicial entre los bloques funcionales es ventajosa debido a que permite una arquitectura configurada por el usuario, adecuada para un núcleo de propiedad intelectual (IP) que permite al usuario personalizar el desempeño del decodificador con base en el tamaño de la memoria que desea utilizar para implementarlo. La Figura 7 es un diagrama en bloque que ilustra un protocolo de acuerdo inicial entre los bloques funcionales de la modalidad ejemplificativa de un decodificador REED-SOLOMON (RS). La función, propósito u operación del bloque 410 generador de síndrome, el bloque 420 de polinomio de error, el bloque 430 de ubicación de error, el bloque 440 de magnitud de error, el bloque 450 de corrección de error (incluyendo el sumador 452 de campo Galois y 27 el bloque 454 LIFO) y el bloque 460 de retraso se describen con suficiente detalle con respecto a la Figura 4 y por lo tanto no se necesitan repetir. Ahora incluidos en la Figura 7, se muestran los mensajes de inactividad antes mencionados (o señales de acuerdo inicial). Las señales de acuerdo inicial (por ejemplo, mensajes RTR y RTS) se utilizan por los bloques de procesamiento para indicar cuando tienen datos para enviar y/o cuando están listos para recibir datos. Por lo tanto, el bloque 410 generador de síndrome y el bloque 420 de polinomio de error tienen la capacidad para intercambiar un mensaje RTS a través de un canal 710 RTS o un mensaje RTR a través de un canal 712 RTR: El bloque 420 de polinomio de error y el bloque 430 de ubicación de error tienen la capacidad de intercambiar un mensaje a través de un canal 718 RTS o un mensaje RTR a través de un canal 720 RTR. El bloque 420 de polinomio de error y el bloque 440 de magnitud de error tienen la capacidad de intercambiar un mensaje RTS a través de un canal 724 RTS o un mensaje RTR a través de un canal 726 RTR. El bloque 420 de magnitud de error y el bloque 450 de corrección de error tienen la capacidad de intercambiar un mensaje RTS a través de un canal 724 RTS o un mensaje RTR a través de un canal 726 RTR. El bloque 410 generador de síndrome también está adaptado para solicitar la siguiente palabra código recibida al enviar un mensaje RTR a través de un canal 740 RTR. El bloque 450 de corrección de error también está adaptado para enviar un mensaje RTS para las etapas de procesamiento de salida a través de un canal 760 RTS. Además, 28 dependiendo de la implementación de la presente invención seleccionada, puede ser necesario enviar cualquier mensaje RTR o RTS para el bloque 460 de retraso (a través de los canales 750 de mensaje), con el propósito de ajustar el retraso apropiadamente para que la palabra código recibida revisada y corregida sea sincronizada con el vector de error en el bloque 450 de corrección de error. La utilidad ventajosa derivada de la presente invención es que al permitir el acuerdo inicial entre los bloques funcionales entre decodificador, un bloque funcional tiene la capacidad para solicitar la recepción de más datos para procesar cuando se vuelve inactivo (esto es, completa su último procedimiento). De manera similar, un bloque funcional tiene la capacidad de señalar un bloque funcional descendente que ha completado su procedimiento y puede enviar el resultado cada vez que el bloque funcional descendente tenga la capacidad para recibir el resultado. Por ejemplo, aunque típicamente el bloque 410 generador de síndrome utilizará un número de ciclos de reloj fijos (y conocido) para generar un síndrome para una palabra de código recibida de una longitud particular, el bloque 420 de polinomio de error es un proceso iterativo, cuyo tiempo de ejecución puede variar. Además, típicamente el bloque 430 de ubicación de error y el bloque 440 de magnitud de error tomará un número fijo (y conocido) de ciclos de reloj, pero cuando se determina que existen demasiados errores dentro de una palabra código de modo que sean incorregibles, otro procesamiento se puede abortar con respecto a esa palabra código, y el bloque 430 de ubicación de 29 error y el bloque 440 de magnitud de error pueden solicitar iniciar a funcionar en la siguiente palabra código al enviar un mensaje RTR al bloque 420 de polinomio de error a través de los canales 720, 726 RTR apropiados. Por lo tanto, el bloque 430 de ubicación de error y el bloque 440 de magnitud de error también pueden tomar un número variable de ciclos de reloj para completar. Se debe notar que la modalidad de la presente invención mostrada en la Figura 7, es solamente una de varias modalidades que se pueden implementar sin desviarse del espíritu y alcance de la invención. Por ejemplo, no se requiere que cada uno de los bloques funcionales del decodif icador esté equipado para enviar mensajes RTR y RTS. Más bien, como función de opción de diseño, puede ser deseable permitir el acuerdo inicial entre el bloque 410 generador de síndrome y el bloque 420 de polinomio de error únicamente. También son posibles otras variaciones. Además, aunque los mensajes RTR y RTS se ilustran y describen como comunicados sobre canales RTS y RTR, tal descripción es solamente una descripción lógica, y los canales de mensajería se pueden incorporar sobre un núcleo de mensajería de estrato físico separado del canal de datos, o de manera alternativa, los canales de mensajería se pueden incorporar sobre el mismo estrato físico como el canal de datos en sí. De conformidad con los principios de la presente invención, un usuario puede personalizar el desempeño del decodif icador al cambiar ef- tamáTTó de alojamiento de memoria. Por lo tanto, una 30 modalidad con el tamaño de memoria alojado igual a la longitud de una palabra código tendrá un diseñó economizador de energía y de hardware, pero solamente tendrá la capacidad de procesar una palabra código por vez. Una modalidad con el tamaño de memoria alojado que es más larga que la longitud de la palabra código puede procesar una palabra código mientras se inicia la carga de una segunda palabra código. Una modalidad con la memoria alojada, el tamaño de dos palabras código permitirá a dos palabras código que sean procesadas en forma simultánea, y demás. Por supuesto, al aumentar el tamaño de la memoria incorporada correspondientemente, conduce a más gastos en términos de hardware y energía, pero el beneficio es un aumento correspondiente en la velocidad del proceso de decodificación y una disminución en la latencia, debido al gran número de palabras código que se pueden procesar en una cantidad predeterminada de tiempo. Las señales de acuerdo inicial automatizan por completo el proceso para que el usuario solamente necesite introducir el tamaño de la memoria utilizado por el decodif icador. Al controlar este único parámetro, el usuario puede personalizar el desempeño del decodif icador en términos de velocidad, energía y tamaño (cuenta de pasarela). La Figura 8 es un diagrama de tiempos para los decodificadores ejem plificativos REED-SOLOMON (RS) que demuestra la efectividad asociada con un decodif icador con el uso de un acuerdo inicial entre bloques, de conformidad con los principios de la presente invención. La porción superior del diagrama 810 de 31 tiempo ¡lustra el tiempo requerido para el procesamiento en un decodificador típico sin el acuerdo inicial entre bloques. Bajo este esquema, el procesamiento de la palabra código 1 (CW1) empieza en el tiempo t0. El síndrome CW1 se genera al tiempo t-, y el resultado se pasa al bloque de polinomio de error. El bloque de polinomio de error completa el procesamiento CW1 en el tiempo t2 y demás hasta que CW1 queda completamente procesada en el tiempo t4. El procesamiento de la palabra código 2 (CW2) por lo tanto inicia en el tiempo t4. Esta única función de procesamiento secuencial continúa para CW2 hasta el tiempo t8, y se completan los cálculos para la ubicación de error y la magnitud de error para CW2. Se debe notar que se toma un total de (t8-t0) unidades de tiempo para procesar dos palabras código sin un acuerdo inicial entre bloques. La porción inferior del diagrama 820 de tiempos ilustra los tiempos de procesamiento en un decodificador con acuerdo inicial entre bloques. Se debe notar que al implementar una memoria grande para tres palabras código, el decodificador puede procesar en forma simultánea tres palabras código por vez. Esta eficiencia se logra ya que cada bloque tiene la capacidad de recibir más datos en el momento en que termina el procesamiento, ya que informa al bloque previo que está listo. En este ejemplo ilustrativo, el procesamiento de la palabra código 3 (CW3) se completa en algún momento entre t6 y t7. 32 Bloques dobles de búsqueda Chien en un decodif icador de corrección de error Una modalidad ejemplificativa de la presente invención utiliza bloques dobles de búsqueda Chien para implementar un proceso de corrección de error. Un decodificador que utiliza los principios de esta modalidad de la presente invención reduce tanto la latencia del decodificador como los requerimientos de almacenamiento/memoria del decodificador. La Figura 9 es una representación de diagrama en bloque para una modalidad ejemplificativa de un decodificador REED-SOLOMON (RS) que utiliza bloques dobles de búsqueda Chien, de conformidad con los principios de la presente invención. La entrada es una palabra código recibida, que se envía al bloque 910 generador de síndrome. Una vez que el síndrome S(x) se calcula por el bloque 910 generador de síndrome, el síndrome se envía al bloque 920 de algoritmo Euclid. El algoritmo Euclid se utiliza para procesar el síndrome S(x) con el fin de generar el polinomio de corrección de error ?(?) y el polinomio O(?) de magnitud de error. En la modalidad presente de la presente invención, un nuevo bloque 930 Chien se incorpora para determinar el número de errores en una palabra código. Una vez que se ha calculado el polinomio ?(?) de ubicación de error, el bloque 930 Chien aplica el algoritmo de búsqueda Chien para evaluar sus raíces. La búsqueda Chien es un algoritmo de fuerza bruta que evalúa el polinomio para todos los posibles valores de entrada, y entonces determina las salidas que J J son iguales a cero . Cuando ocurre u~ñ error en la posición i, entonces la siguiente ecuación se iguala a cero: En donde i = 0.. (N-1) Ecuación 6 El bloque 930 Chien evalúa la ecuación anterior para todos los valores de i y j y cuenta el número de veces que la ecuación es igual a cero. El número resultante es el número de errores detectados. Como se describió antes, el polinomio de error deben evaluarse tanto para la ubicación de error como para la magnitud de error. Debido a que es necesario el mismo tipo de hardware para implementar la búsqueda Chien y el algoritmo Forney, las dos funciones se pueden combinar en el mismo bloque, mostrado en el bloque 940 Chien/Forne . En esta implementación, se utilizan dos sumadores en la salida de la búsqueda Chien. El primer sumador suma los valores para las etapas pares, y el otro sumador suma los valores para las etapas impares. Para formar la salida de la búsqueda Chien final, las emisiones de estos dos sumadores se suman y el bloque de detección cero detecta las ubicaciones de las raíces. La salida del sumador para las etapas impares también se utiliza en el algoritmo Forney. La suma de las etapas impares representa el denominador de la ecuación Forney. Este valor sumado se invierte y entonces se multiplica por el valor del numerador que se forma al evaluar el polinomio de magnitud de 34 error. La salida es AND con la salida de detección cerro ya que los valores de error son solamente válidos para las ubicaciones de error reales (y deben ajustarse a cero). De este modo, el bloque 940 Chien/Forney utiliza el polinomio de ubicación de error y el polinomio de magnitud de error para generar un vector de error, el cual se envía al bloque 950 de corrección de error. El vector de error es del mismo tamaño que la palabra código y contiene valores no cero en ubicaciones que corresponden a errores. Las otras ubicaciones contienen ceros. Otra entrada para el bloque 950 de corrección de error es la salida de un bloque 960 de retraso. El bloque 960 de retraso toma la palabra código recibida y emite la misma palabra código recibida, con retraso. En la modalidad presente, el bloque 950 de corrección de error se implementa con el uso de un sumador 954 de campo Galois junto con un bloque 952 LIFO. Los errores en la palabra código recibida se corrigen al sumar la palabra código recibida con el vector de error con el uso de un sumador 954 de campo Galois. Un bloque 952 LIFO se utiliza debido a que el vector de error se genera en el orden invertido de la palabra código recibida y por lo tanto una operación LIFO se debe aplicar a cualquier palabra código recibida o el vector de error con el fin de hacer coincidir el orden de bytes para ambos vectores. La salida del bloque 950 de corrección de error se encuentra en el cálculo del decodificador de la palabra código original. 35 Un decodificador REED-SOLOMON puede solamente corregir hasta t errores, en donde el número de bytes de paridad incluido es 2t. Cuando se detectan más errores que t, generalmente es deseable enviar la palabra código recibida a la salida del decodificador, sin alterar y sin corregir, ya que la palabra código incorregible es mayor que los t errores detectados. En las implementaciones Chien/Forney de la técnica previa, una palabra código completa se debía procesar antes de determinar el número de errores. De este modo, la operación toma N ciclos de reloj, en donde N es la longitud de la palabra código. Una vez que se completa el cálculo Chien/Forney, se determina el número de errores y se compara con el valor de t. Cuando el número de errores es menor o igual que t, los valores de error desde el bloque Chien/Forney se someten a una operación "exclusiva OR" (XOR) con la palabra código recibida para llevar a cabo la corrección de error, lo cual genera la salida final del decodificador. Sin embargo, cuando el número de errores es mayor que t, la palabra código recibida se envía sin alterar como la salida del decodificador. De este modo, el método de la técnica previa requiere que la palabra código completa recibida sea almacenada hasta que se complete el procesamiento por el bloque Chien/Forney. Tal esquema también introduce un retraso en la latencia debido a que la salida del decodificador no se puede enviar hasta que se completan los N ciclos de reloj completos. Por el contrario, en la modalidad presente de la presente invención, somete a las palabras código del algoritmo Chien dos 36 veces, el primer tiempo para determinar el número de errores y el segundo tiempo para determinar la ubicación de error. De este modo, cuando el bloque 930 Chien detecta que el número de errores es mayor que el valor t de umbral, la palabra código recibida se pasa como la salida del decodificador y se libera la memoria. En forma contraria, cuando el número de errores es menor o igual que el valor t de umbral, los datos se pasan al bloque Chien/Forney con el fin de determinar las ubicaciones y magnitudes reales del error. Tal implementación se verá optimizada cuando se utilice junto con la modalidad de acuerdo inicial de la presente invención mostrada en las Figuras 6 a la 8 Tal combinación permite al bloque 940 Chien/Forney calcular los errores en forma concurrente mientras el bloque 930 Chien está determinando el número de errores para la siguiente palabra código. De este modo, la salida del bloque 940 Chien/Forney puede enviarse inmediatamente y se libera la memoria correspondiente.
Celda de búsqueda Chien mejorada para un decodificador de corrección de error Como se describió antes, el bloque Chien/Forney recibe dos polinomios como sus entradas, el polinomio de ubicación de error y el polinomio de magnitud de error, y genera un vector de error como una salida. El vector de error es un vector de N bytes que representa el cálculo del decodificador de los errores en una palabra código recibida. El vector de error se somete a una operación 37 exclusiva (XOR) con la palabra código recibida con el fin de corregir errores para formar el cálculo del decodif icador de la palabra código original. Los decodif icadores de la técnica previa que utilizan un bloque Chien/Forney para determinar el vector de error, producen el vector de error en un orden invertido con respecto al vector de la palabra código. Esto es, la palabra código y el vector de error no pueden superar la operación XOR sin el vector de error (o en forma contraria, la palabra código) a ser sometida a otro procesamiento. Típicamente, este procesamiento toma le forma de una operación LIFO (último adentro, primero fuera) en cualquier vector de error o en la palabra código recibida, el propósito es invertir el orden de la entrada para que la palabra código y el vector de error puedan superar la operación XOR. Desafortunadamente, esto introduce un retraso de N ciclos de reloj, en donde N es el número de bytes en una palabra código. Además, algunas implementaciones de la técnica previa utilizan un tamaño de memoria mayor que la longitud de una única palabra código, lo cual requiere que la memoria sea partida en dos o más relojes LIFO separados. Al hacer esto puede provocar complicaciones y también limita el tamaño de memoria a un múltiplo entero de la longitud de la palabra código. Una modalidad ejemplificativa de la presente invención es una nueva celda de búsqueda Chien que produce una salida en sincronización correcta con respecto a la palabra código. Esto es, ni el vector de error ni el vector de la palabra código requieren ser invertidos antes de ser sometidos a la operación XOR, lo cual 38 Por lo tanto, se logra un periodo de latencia más corto, ya que no se requiere el retraso de N ciclos de reloj. Además, la presente modalidad de la presente invención simplifica el esquema de direccionamiento (con respecto a la técnica previa) y da soporte a diferentes tamaños de memoria diferentes a múltiplos enteros de la longitud de una palabra código. Por ejemplo, se puede utilizar una memoria dos y media veces la longitud de una palabra código, la cual permite al decodif icador procesar dos palabras código, mientras que se carga una porción de la siguiente palabra código. La Figura 10 es una representación de diagrama en bloque para una celda 1000 de búsqueda Chien de la técnica previa, el bloque de construcción básica para la búsqueda Chien y los bloques Chien/Forney, El bloque de búsqueda Chien se utiliza para evaluar el polinomio ? con el propósito de encontrar sus raices. Las ubicaciones de las raices corresponden a las ubicaciones en la palabra código recibida que tienen error. La celda de búsqueda Chien de la Figura 10 se utiliza para implementar la ecuación: En donde i = 0.. (N-1) Ecuación 7 El cálculo de la ecuación 9 da como resultado un valor nulo (cero) para las posiciones de byte en la palabra código que corres p onden^a errores" La- celda 1000 de búsqueda Chien es la 39 arquitectura del hardware utilizada para implementar una única etapa de la ecuación anterior. Cada etapa procesa un único coeficiente del polinomio ? de ubicación de error, de este modo existen un total de (t + 1) etapas (ya que el polinomio de ubicación de error puede tener un grado máximo de t y un por lo menos de grado t tiene (t + 1) coeficientes). La celda 1000 de búsqueda Chien procesa el coeficiente del polinomio de ubicación de error en una manera iterativa. En la primera iteración, el multiplexor 1020 recibe el coeficiente 1010 de polinomio apropiado correspondiente a la palabra código a ser procesada y enruta el coeficiente del polinomio al registro 1030. En los ciclos de reloj posteriores, la salida del registro primero se envía ai multiplicador 1040 en donde se multiplica por a_i y después se enruta por el multiplexor 1020 de regreso al registro para su almacenamiento. Este proceso se lleva a cabo para un total de N ciclos de reloj. Con referencia otra vez a la ecuación 9, el índice i indica el número de iteración y el índice j indica la etapa de la celda de búsqueda Chien. Esto es, el valor de j incrementa de 0 a t y de este modo existen un total de (t+1) etapas de celda de búsqueda Chien implementadas en el hardware. Como ejemplo ilustrativo, supongamos que la celda representa la segunda etapa (j = 1). De esta manera, en cada ciclo de reloj, la salida del registro será multiplicada por a"1 y el resultado se almacena otra vez en el registro. Esto produce la siguiente secuencia: 40 ? + ?a"1? + (?a"1) ?G1?2 + ((?a"1) ?G1) ?G1?3 + ... en donde X" representa un retraso de n ciclos de reloj. Al combinar términos, la secuencia final producida es: ? + ?a'1? + ?a 2X2 + ?a 3?3 + ... ?a (?-1)??-1 El problema asociado con esta implementación es que las ubicaciones de error se producen en el orden invertido de los bytes de palabra código correspondiente, y de este modo necesitan ser invertidas por el bloque LIFO antes de sumarse a la palabra código para su corrección. Un bloque LIFO es un elemento de almacenamiento del hardware que contiene una pluralidad de registros. Una vez que se llenan todos los registros, el bloque LIFO envía sus salidas. El último elemento en la entrada se vuelve el primer elemento en la salida y así consecutivamente. Existen dos problemas con el uso del bloque LIFO. Uno es que el gran elemento de memoria/almacenamiento y de esta manera, aumentar la cuenta de pasarela y el consumo de energía del IC. Otro problema es que el bloque LIFO introduce una latencia de N ciclos de reloj. Esta latencia ocurre debido a que toma N ciclos de reloj para el bloque LIFO se llene inicialmente, y no se puedan generar salidas hasta que el último elemento sea leído dentro del LIFO. La Figura 11 es una representación de diagrama en bloque para una celda 1100 de búsqueda Chien mejorada, en donde se reducen los requerimientos de memoria y el retraso, de conformidad con los principios de la presente invención. El principio de sustento de la modalidad de la presente invención es permitir al bloque de 41 búsqueda Chien producir una secuencia que es matemáticamente equivalente a la producida por la búsqueda Chien normal, albeit con coeficientes generados en el orden opuesto (de aquí en adelante referido como "orden normalizado"). La presente invención implementa las siguientes dos ecuaciones (ecuaciones 10 y 11) utilizadas para generar las ubicaciones de error en un orden normalizado para la corrección de error: En donde i = 0 Ecuación 8 x¡ = V A, 1 j=0 En donde i = 1 Ecuación 9 Se debe recordar que la celda 1000 de búsqueda Chien de la técnica previa, ilustrada en la Figura 10 procesa el coeficiente de polinomio de ubicación de error en una manera iterativa, empezando con un exponente alfa de "0" que se disminuye con cada ciclo de reloj hasta que el exponente disminuye a un valor de — j ( - 1 ) . Para la modalidad presente de la celda 1000 de búsqueda Chien de la Figura 11, el valor del exponente alfa empieza a un valor de - j ( N - 1 ) y se incrementa con cada ciclo de reloj hasta que el exponente alcanza 0. 42 Por lo tanto, durante el primer ciclo de reloj, el coeficiente 1110 de polinomio se multiplica por a"i(N 1) (en donde j es el número de etapa) por el premultiplicador 1150, enviado al multiplexor 1120, y se enruta al registro 1130 para su almacenamiento. En los ciclos de reloj posteriores, la salida del registro 1130 se envía al multiplicador 1140 en donde se multiplica por a' y después se enruta al multiplexor 1120 de regreso al registro. Como ejemplo ilustrativo, supongamos que la celda representa la segunda etapa (j = 1). Esto produce la siguiente secuencia: ?a"(?-1)? + (?a (?-1))a?2 + ((?a (?-1)a)a?3 + ... Al combinar términos se produce la siguiente secuencia: ?a (N"1)X + ?a-(?"2>? + ?a-(?-3>?2 + ... +?a 1XN'2 + ???"1 Se debe notar que los coeficientes generados en esta secuencia son idénticos a los producidos por una celda 1000 de búsqueda Chien normal de la Figura 10, excepto que ahora están en un orden invertido (como se señala por el orden invertido de los coeficientes de retraso). La celda 1100 de búsqueda Chien de la Figura 11 utiliza un multiplicador de campo Galois adicional (dos en lugar de uno), pero son muy pequeños y económicos para implementarse en el hardware. La ventaja y utilidad que resulta de ya no requerir un bloque LIFO para inversión y de evitar el retraso requerido para llevar el LIFO pondera la desventaja de suministrar un multiplicador de campo Galois adicional para cada celda de búsqueda Chien. 43 Una práctica común es combinar la búsqueda Chien con el algoritmo Forney dentro de un único bloque, ya que ambos algoritmos requieren del desempeño de funciones similares. Los principios de la modalidad de la presente invención se ilustran y describen con relación a la Figura 11, y aplica de igual forma para las celdas de bloque Forney, ya que el algoritmo Forney procesa el polinomio de magnitud de error con el uso de un hardware muy similar. Las personas experimentadas en la técnica entenderán que los principios de la presente invención se pueden utilizar en otro diseño de celdas de bloque Forney y celdas de bloque Chien/Forney.
Muchos de los sistemas existentes utilizan circuito integrados "independientes" que codifican y decodifican códigos REED-SOLOMON. Estos IC tienden a dar soporte a cierta cantidad de programación (por ejemplo, RS(255,k) en donde t = 1 a 16 símbolos). Una tendencia reciente es hacia VHDL o diseños Verilog (núcleos lógicos o núcleos de propiedad intelectual). Estos cuentan con varias ventajas sobre los IC convencionales. Un núcleo lógico puede estar integrado con otro VHDL o componentes Verilog y se sintetizan de un FPGA (Arreglo de pasarela de campo programable) o ASIC (Circuito integrado de aplicación específica), esto permite los llamados diseños "Sistema en chip" en donde se pueden combinar múltiples módulos en un único IC. Dependiendo de los volúmenes de producción, los núcleos lógicos pueden tener costos del sistema más económicos que los IC convencionales. 44 Aunque la presente invención se describe dentro del contexto de una implementación del hardware, los principios de la presente invención no se deben considerar como limitados. Hasta ahora, las implementaciones del software en "tiempo real" requerían demasiada energía de computación para todos pero el más sencillo de los códigos REED-SOLOMON (es decir, códigos con valores pequeños de t). La mayor dificultad en implementar los códigos REED-SOLOMON en software es que los procesadores de propósitos generales no dan soporte a las operaciones aritméticas de campo Galois. Por ejemplo, para implementar una multiplicación de campo Galois en el software se requiere una prueba para 0, dos tablas de consulta de registro, módulos sumadores y una tabla de consulta anti-registro. Sin embargo, el diseño cuidadoso junto con esto aumenta el desempeño del procesador que significa que las implementaciones del software se pueden operar a velocidades de datos relativamente altas. Mientras que esta invención ha sido descrita en términos de las modalidades y/o configuraciones ejemplificativas, la presente invención se puede modificar dentro del espíritu y alcance de esta exposición. Por lo tanto esta solicitud tiene la intención de abarcar cualquier variación, uso o adaptación de la invención con el uso de sus principios generales. Además, esta solicitud tiene la intención de abarcar cualquier apartado de la presente invención que caiga dentro de la práctica conocida o acostumbrada dentro de la técnica a la cual pertenece la invención, y que caigan dentro de los límites de las reivindicaciones anexas.

Claims (20)

45 REIVINDICACIONES
1. En un decodif ¡cador de corrección de error de código en bloque lineal, cíclico, el cual tiene por lo menos cuatro bloques, los bloques incluyen un bloque (410) generador de síndrome, un bloque (420) generador de polinomio, un bloque (430) de ubicación de error y un bloque (440) de magnitud de error, un método para llevar a cabo la corrección de error de datos de una palabra código, el método comprende los pasos de: calcular un síndrome a partir de una palabra código en el bloque (410) generador de síndrome; generar un polinomio de error a partir del síndrome en el bloque (420) de polinomio de error; determinar una ubicación de error a partir del polinomio de error en el bloque de ubicación de error (430); y calcular la magnitud de error a partir del polinomio de error en el bloque (440) de magnitud de error; el método está caracterizado porque por lo menos uno de los por lo menos cuatro bloques se adapta para transmitir un mensaje de inactividad (640, 650) a otros de los por lo menos cuatro bloques.
2. El método de conformidad con la reivindicación 1, caracterizado porque comprende el paso de: corregir la palabra código que responde a la ubicación de error y a la magnitud de error. 46
3. El método de conformidad con la reivindicación 1, caracterizado porque el mensaje de inactividad es un mensaje listo para recibir (640 = .
4. El método de conformidad con la reivindicación 1, caracterizado porque el mensaje de inactividad es un mensaje listo para enviar (650).
5. El método de conformidad con la reivindicación 1, caracterizado porque el bloque de polinomio de error es un bloque de algoritmo Euclid.
6. El método de conformidad con la reivindicación 1, caracterizado porque el bloque de polinomio de error es un bloque de algoritmo Berlekamp-Massey.
7. El método de conformidad con la reivindicación 1, caracterizado porque el bloque de ubicación de error es un bloque de búsqueda Chien.
8. El método de conformidad con la reivindicación 1, caracterizado porque el bloque de magnitud de error es un bloque de algoritmo Forney.
9. El método de conformidad con la reivindicación 1, caracterizado porque los pasos asociados con el bloque de ubicación de error y el bloque de magnitud de error se llevan a cabo dentro de un bloque Chien/Forney combinado.
10. El método de conformidad con la reivindicación 1, caracterizado porque el decodif icador de corrección de error en bloque lineal, cíclico es un decodificador Reed-Solomon. 47
11. Un decodificador para llevar una detección de error de datos dentro de una palabra código, el decodificador comprende: un medio para calcular un síndrome (410) a partir de una palabra código; un medio para generar un polinomio (420) de error a partir del síndrome; un medio para determinar una ubicación (430) de error a partir del polinomio de error; un medio para calcular la magnitud (440) de error a partir del polinomio de error; el decodificador está caracterizado porque la adaptación para enviar un mensaje de inactividad entre decodificadores (640, 650) se incorpora dentro de por lo menos un componente seleccionado del grupo que comprende el medio para calcular el síndrome (410), el medio para generar el polinomio de error (420), el medio para determinar la ubicación de error (430) y el medio para calcular la magnitud (440) de error.
12. El decodificador de conformidad con la reivindicación 11, caracterizado porque el medio para corregir la palabra código (450) responde a la recepción de la palabra código, la ubicación de error y la magnitud de error como entradas.
13. El decodificador de conformidad con la reivindicación 11, caracterizado porque el decodificador es un decodificador Reed-Solomon. 48
14. El decodificador de conformidad con la reivindicación 11, caracterizado porque el mensaje de inactividad entre decodificadores es un mensaje listo para recibir (640).
15. El decodificador de conformidad con la reivindicación 11, caracterizado porque el mensaje de inactividad entre decodificadores es un mensaje listo para enviar (650).
16. El decodificador de conformidad con la reivindicación 11, caracterizado porque el medio para generar un polinomio (420) de error es un bloque de algoritmo Euclid.
17. El decodificador de conformidad con la reivindicación 11, caracterizado porque el medio para generar un bloque de ubicación de error (430) es un bloque de búsqueda Chien.
18. El decodificador de conformidad con la reivindicación 11, caracterizado porque el medio para calcular una magnitud de error es un bloque (440) de algoritmo Forney.
19. Un decodificador para llevar a cabo una detección de error de datos dentro de una palabra código, el decodificador comprende: un generador (410) de síndrome para calcular un síndrome de la palabra código; un generador (420) de polinomio de error para generar un polinomio de error a partir del síndrome; un generador (430) de ubicación de error para determinar una ubicación de error a partir del polinomio de error; y 49 un generador (440) de magnitud de error para calcular la magnitud de error a partir del polinomio de error; el decodificador está caracterizado porque la adaptación para enviar un mensaje de inactividad (640, 650) entre decodificadores se incorpora dentro de por lo menos un componente seleccionado de un grupo que consiste del generador (410) de síndrome, el generador (420) de polinomio de error, el generador (430) de ubicación de error, y el generador (420) de magnitud de error.
20. El decodificador de conformidad con la reivindicación 19, caracterizado porque además comprende un generador (450) de palabra código corregida de error, para corregir la palabra código que responde a la recepción de la palabra código, a la ubicación de error y a la magnitud de error como entradas.
MXPA04007076A 2002-01-23 2003-01-22 Mensajeria en bloque de componente intra-decodificador. MXPA04007076A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/055,114 US7020826B2 (en) 2002-01-23 2002-01-23 Intra-decoder component block messaging
PCT/US2003/001913 WO2003063363A1 (en) 2002-01-23 2003-01-22 Intra-decoder component block messaging

Publications (1)

Publication Number Publication Date
MXPA04007076A true MXPA04007076A (es) 2004-10-29

Family

ID=21995704

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA04007076A MXPA04007076A (es) 2002-01-23 2003-01-22 Mensajeria en bloque de componente intra-decodificador.

Country Status (9)

Country Link
US (1) US7020826B2 (es)
EP (1) EP1468499A4 (es)
JP (1) JP2005516458A (es)
KR (1) KR20040075952A (es)
CN (1) CN1757165A (es)
BR (1) BR0302820A (es)
MX (1) MXPA04007076A (es)
MY (1) MY132105A (es)
WO (1) WO2003063363A1 (es)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7225391B1 (en) * 2002-12-17 2007-05-29 Altera Corporation Method and apparatus for parallel computation of linear block codes
KR100906474B1 (ko) * 2003-01-29 2009-07-08 삼성전자주식회사 저밀도 부가정보 발생용 매트릭스를 이용한 에러 정정방법 및그 장치
US7206993B2 (en) * 2003-03-12 2007-04-17 Matsushita Electric Industrial Co., Ltd. Method and device for decoding Reed-Solomon code or extended Reed-Solomon code
US7693928B2 (en) * 2003-04-08 2010-04-06 Analog Devices, Inc. Galois field linear transformer trellis system
FR2861474B1 (fr) * 2003-10-24 2007-04-27 Atmel Corp Procede et appareil pour une periode de traitement variable dans un circuit integre
US7581155B2 (en) * 2003-12-18 2009-08-25 Electronics And Telecommunications Research Institute Apparatus for FEC supporting transmission of variable-length frames in TDMA system and method of using the same
US8161207B1 (en) * 2006-06-22 2012-04-17 Marvell International Ltd. Common block interface for data and control with handshake protocol
US8312345B1 (en) * 2006-09-29 2012-11-13 Marvell International Ltd. Forward error correcting code encoder apparatus
US20080140740A1 (en) * 2006-12-08 2008-06-12 Agere Systems Inc. Systems and methods for processing data sets in parallel
JP4313391B2 (ja) * 2006-12-13 2009-08-12 株式会社日立コミュニケーションテクノロジー 光集線装置および光加入者装置
US8223628B2 (en) * 2007-01-10 2012-07-17 Lantiq Deutschland Gmbh Data transmission method, transmitter, receiver, transceiver and transmission system
US9686045B2 (en) * 2007-04-04 2017-06-20 Lantiq Beteiligungs-GmbH & Co. KG Data transmission and retransmission
JP4672743B2 (ja) * 2008-03-01 2011-04-20 株式会社東芝 誤り訂正装置および誤り訂正方法
KR101489827B1 (ko) * 2008-03-25 2015-02-04 삼성전자주식회사 낸드 플래시 메모리와 컨트롤러 간의 효율적인 프로토콜을사용하는 반도체 메모리 장치
JP4780158B2 (ja) * 2008-08-26 2011-09-28 ソニー株式会社 符号化装置および方法
JP4823349B2 (ja) * 2009-11-11 2011-11-24 パナソニック株式会社 三次元映像復号装置及び三次元映像復号方法
KR101154923B1 (ko) * 2010-12-09 2012-06-14 한국과학기술원 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법
WO2012106635A1 (en) * 2011-02-04 2012-08-09 Marvell World Trade Ltd. Control mode phy for wlan
US8924828B2 (en) * 2012-08-30 2014-12-30 Kabushiki Kaisha Toshiba Memory controller, semiconductor storage device, and memory control method for error correction using Chien search
TWI500038B (zh) * 2012-09-28 2015-09-11 Univ Nat Chiao Tung 記憶體系統之全套平行編碼方法與全套平行解碼方法
CN105024707B (zh) * 2015-07-31 2018-05-11 福建联迪商用设备有限公司 一种rs纠错解码方法
US10181864B2 (en) * 2016-02-26 2019-01-15 Altera Corporation Methods and apparatus for performing reed-solomon encoding
US11750222B1 (en) * 2022-06-29 2023-09-05 Synopsys, Inc. Throughput efficient Reed-Solomon forward error correction decoding

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4875211A (en) 1986-12-10 1989-10-17 Matsushita Electric Industrial Co., Ltd. Galois field arithmetic logic unit
US5099482A (en) * 1989-08-30 1992-03-24 Idaho Research Foundation, Inc. Apparatus for detecting uncorrectable error patterns when using Euclid's algorithm to decode Reed-Solomon (BCH) codes
JPH04315332A (ja) 1991-04-15 1992-11-06 Hitachi Ltd 誤り訂正装置
US5373511A (en) 1992-05-04 1994-12-13 Motorola, Inc. Method for decoding a reed solomon encoded signal with inner code and apparatus for doing same
JP3255386B2 (ja) 1993-12-27 2002-02-12 キヤノン株式会社 誤り訂正符号の復号器
JP3328093B2 (ja) 1994-07-12 2002-09-24 三菱電機株式会社 エラー訂正装置
JP3310185B2 (ja) 1996-11-21 2002-07-29 松下電器産業株式会社 誤り訂正装置
US5905740A (en) * 1997-04-08 1999-05-18 Seagate Technology, Inc. Apparatus and method for error correction
JP3850511B2 (ja) 1997-05-07 2006-11-29 日本テキサス・インスツルメンツ株式会社 リードソロモン復号装置
JPH1131977A (ja) 1997-07-10 1999-02-02 Sony Corp 誤り訂正符号演算器
US6154868A (en) * 1997-07-18 2000-11-28 International Business Machines Corporation Method and means for computationally efficient on-the-fly error correction in linear cyclic codes using ultra-fast error location
US6061826A (en) 1997-07-29 2000-05-09 Philips Electronics North America Corp. Hardware-optimized reed-solomon decoder for large data blocks
US6058500A (en) 1998-01-20 2000-05-02 3Com Corporation High-speed syndrome calculation
US6415413B1 (en) * 1998-06-18 2002-07-02 Globespanvirata, Inc. Configurable Reed-Solomon controller and method
US6347389B1 (en) * 1999-03-23 2002-02-12 Storage Technology Corporation Pipelined high speed reed-solomon error/erasure decoder
US6374383B1 (en) 1999-06-07 2002-04-16 Maxtor Corporation Determining error locations using error correction codes
US6487692B1 (en) * 1999-12-21 2002-11-26 Lsi Logic Corporation Reed-Solomon decoder
US6735737B2 (en) * 2000-02-18 2004-05-11 Texas Instruments Incorporated Error correction structures and methods

Also Published As

Publication number Publication date
US7020826B2 (en) 2006-03-28
WO2003063363A1 (en) 2003-07-31
EP1468499A1 (en) 2004-10-20
CN1757165A (zh) 2006-04-05
US20030140301A1 (en) 2003-07-24
JP2005516458A (ja) 2005-06-02
KR20040075952A (ko) 2004-08-30
BR0302820A (pt) 2004-03-09
EP1468499A4 (en) 2005-12-14
MY132105A (en) 2007-09-28

Similar Documents

Publication Publication Date Title
MXPA04007076A (es) Mensajeria en bloque de componente intra-decodificador.
US6920600B2 (en) Dual chien search blocks in an error-correcting decoder
Song et al. 10-and 40-Gb/s forward error correction devices for optical communications
US10243589B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
US7246294B2 (en) Method for iterative hard-decision forward error correction decoding
CA3193950C (en) Forward error correction with compression coding
MXPA04007075A (es) Celda de busqueda chien para un decodificador de correccion de error.
Shrivastava et al. Error detection and correction using Reed Solomon codes
US5936978A (en) Shortened fire code error-trapping decoding method and apparatus
US7231575B2 (en) Apparatus for iterative hard-decision forward error correction decoding
US4293951A (en) Method and apparatus for encoding/decoding a convolutional code to a periodic convolutional code block
EP1102406A2 (en) Apparatus and method for decoding digital data
KR100747487B1 (ko) 리드-솔로몬 복호 장치 및 수정된 유클리드 알고리즘연산회로
Barbosa et al. FPGA implementation of a Reed-Solomon CODEC for OTN G. 709 standard with reduced decoder area
JP2001251196A (ja) リードソロモン復号方法及びリードソロモン復号装置
Salah et al. Low-energy configurable syndrome/chien search multi-channel Reed Solomon decoder
Tingilkar et al. Improvement Of Memory Data Corrections By Using CRC Technique For Fault Torrent Applications

Legal Events

Date Code Title Description
FG Grant or registration