MXPA04007075A - Celda de busqueda chien para un decodificador de correccion de error. - Google Patents

Celda de busqueda chien para un decodificador de correccion de error.

Info

Publication number
MXPA04007075A
MXPA04007075A MXPA04007075A MXPA04007075A MXPA04007075A MX PA04007075 A MXPA04007075 A MX PA04007075A MX PA04007075 A MXPA04007075 A MX PA04007075A MX PA04007075 A MXPA04007075 A MX PA04007075A MX PA04007075 A MXPA04007075 A MX PA04007075A
Authority
MX
Mexico
Prior art keywords
error
block
code word
cell
decoder
Prior art date
Application number
MXPA04007075A
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 MXPA04007075A publication Critical patent/MXPA04007075A/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
    • 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
    • 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
    • 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
    • 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/1545Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
    • 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/158Finite field arithmetic processing

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (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 Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

Un decodificador y un metodo de decodificacion que incorpora una celda de busqueda Chien mejorada (1100), en donde se reducen los requerimientos de memoria y de retraso. La celda de busqueda Chien de la tecnica previa procesa el coeficiente del polinomio de ubicacion 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(N-1). En la celda (1100) de busqueda Chien mejorada, 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 a cero. Por lo tanto, durante el primer ciclo de reloj, el coeficiente (1100) de polinomio se multiplica por un pre-multiplicador (1150) enviado a un multiplexor (1120), y se enruta a un registro (1130) para su almacenamiento. UN ciclo de reloj posterior, la salida de registro (1130) se envia a otro multiplexor (1140) y despues se enruta al multiplexor (1120) de regreso al registro (1130).

Description

For two-letter codes and other abbreviations, refer to the "Guid-ance Notes on Codes and Abbreviations " appearing at the begin-ning^ofeach'regularissue vf-the-PGr-Gazette: CELDA DE BÚSQUEDA CHIEN PARA UN DECODIFICADOR DE CORRECCIÓN DE ERROR REFERENCIA CRUZADA CON SOLICITUDES RELACIONADAS Esta solicitud de patente se relaciona con la Solicitud de Patente de Estados Unidos, presentada en forma simultánea, No. 10/055,076, presentada el 23 de enero de 2002 (Referencia del abogado No. PU020003), titulada "DUAL CHIEN SEARCH BLOCKS IN AN ERROR-CORRECTING DECODER" (BLOQUES DE BÚSQUEDA CHIEN DOBLE EN UN DECODIFICADOR DE CORRECCIÓN DE ERROR); y la solicitud de patente de Estados Unidos No. 10/055,114, presentada el 23 de enero de 2002 (Referencia del abogado No. PU020002) titulada "INTRA-DECODER COMPONENT BLOCK MESSAGING (MENSAJERÍA EN BLOQUE DEL COMPONENTE INTRA-DECODIFICADOR), ambas incorporadas aquí como referencia.
CAMPO DE LA INVENCION 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 moderno es la codificación de control de error. La cocHTi c ación cle co nTroT~cTe error es el campo ele las comunicaciones que trata con técnicas para detectar y corregir errores en un sistema 2 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 ya que un cambio circular de cualquier palabra código válida también 3 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 implementarlos. 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 decodif icador 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. Un medio común para implementar el bloque de ubicación de error en un decodificador REED-SOLOMON es con el uso de un bloque Chien (o Búsqueda Chien), que utiliza un algoritmo Chien de 4 fuerza bruta para evaluar el polinomio para todos sus valores posibles. El bloque Chien está compuesto de celdas Chien individuales. La celda de búsqueda Chien (consultar Figura 11) es una arquitectura del hardware utilizada para implementar una etapa única o coeficiente del polinomio de ubicación de error, de esta manera existe 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 polinomio de grado t tiene (t + 1) coeficientes). La celda de búsqueda Chien típica procesa el coeficiente del polinomio de ubicación de error en una manera iterativa. En la primera iteración, un multiplexor recibe el coeficiente apropiado del polinomio correspondiente a la palabra código a ser procesada y enruta en coeficiente del polinomio a un registro. En los ciclos posteriores de reloj, la salida del registro primero se envía a un multiplicador de campo Galois y se enruta al multiplexor de regreso al registro para su almacenamiento. Este proceso se lleva a cabo para un total de N ciclos de reloj, en donde N representa la longitud de la palabra código. El problema asociado con esta implementación es que las ubicaciones de error se producen en un orden invertido de los bytes correspondientes de las palabras código, y así es necesario invertirlo por un bloque LIFO antes de agregarse 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 han llenado todos los registros, el bloque LIFO envía sus emisiones. EL último elemento en la entrada se 5 vuelve el primer elemento en la salida, y así consecutivamente. Existen dos problemas con el uso de un bloque LIFO. Uno es que hay un elemento muy grande de almacenamiento/memoria y así aumenta la cuenta de puerta 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 para que inicialmente se llene, y no se pueden generar salidas hasta que el último elemento es leído en el LIFO.
BREVE DESCRIPCIÓN DE LA INVENCIÓN Con ventaja, los problemas asociados con la técnica previa se eliminan con el uso de la presente invención, la cual produce ubicaciones de error de coeficiente en el bloque de ubicación de error en el mismo orden que su palabra código respectiva, lo cual elimina la necesidad del uso de un bloque LIFO. La presente invención es un método y aparato para evaluar un único coeficiente de por lo menos de ubicación de error generado de una palabra código en una celda correspondiente al coeficiente, en donde se recibe el coeficiente de polinomio de ubicación de error correspondiente a la palabra código. El coeficiente de polinomio de ubicación de error se multiplica en el primer ciclo de reloj por el multiplicador de campo Galois que tiene un exponente negativo. El valor del exponente negativo es una función del número de etapa correspondiente a la celda y la longitud de la palabra código (N). El acto de multiplicar da como resultado una salida de celda. La salida 6 de celda se multiplica en forma iterativa para un N posterior menos un ciclo de reloj, por un multiplicador de campo Galois que tiene un exponente positivo. El valor del exponente positivo de este segundo multiplicador de campo Galois es una función del número de etapa.
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 en bloque de un decodificador REED-SOLOMON (RS). La Figura 5 es una representación de diagrama en bloque de una modalidad ejemplif icativa 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-decodif icador ejemplificativo de conformidad con los principios de la presente invención. 7 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 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 ejemplificativa 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 y el retraso 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 8 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 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 9 a una SNR más baja de lo que fue posible sin codificación o (li) 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 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 alterna 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 10 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 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 11 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 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 se 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 12 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 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 ¡lustra 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 13 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 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 decodificador 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. 14 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 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 15 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 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 BER 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 decodificador 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 16 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 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 q se señala por GF(q) y contiene elementos q diferentes. 17 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 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 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 18 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 número de vectores de error apropiados para los vectores de error 2n k fuera de dos posibles vectores de error 2". 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 n 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 ). 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 para formar S1, el siguiente generador de síndrome evalúa la palabra código recibida en a2 para formar S2, y demás. 19 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 ecuaciones simultáneas de t desconocidos. Algunos algoritmos rápidos se encuentran disponibles para estos cálculos, incluyendo el 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 20 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 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 decodif icador 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-SOLOMON (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 21 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 A(x) 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)) = Ü(x)modxzt + 1 Ecuación 1 El algoritmo utilizado en la decodificación REED-SOLOMON 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. I a 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. 22 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 representa un valor diferente de i en la ecuación anterior) y la salida del sumador se examina para BER 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(-i módulo 255). Por ejemplo, a"1 iguala a a254, a"2 iguala a a253 y así 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 23 O(?) Para ? = a-i, en donde a-i es la raíz de ?(?). Ecuación 3 El cálculo de la derivada formal de ?'(?) es realmente sencillo.
Por ejemplo, supongamos que ?(?) = a4?3 + 3?2 + a? + a2. ?'(?) entonces iguala a: ?'(?) = 3a4?2 + 2a3? + a (a4 + a4+ a )?2 + ( 3 + 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. Para evaluar O(?), el coeficiente O0 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"¡ = a°-mod n) = a("3 mod 255 ) = a252 Ecuación 5 24 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 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, 25 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 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 decodificador 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 retroalimentación de un bloque al bloque previo. Un decodificador REED-SOLOMON también requiere la implementación 26 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 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 ejemplif icativa 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 los 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 27 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 entre decodificador 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 (RTS)". 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 28 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 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 29 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, 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 decodif icador, 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 30 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 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 decodificador 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 31 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 el tamaño de alojamiento de memoria. Por lo tanto, una 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 decodificador en términos de velocidad, energía y tamaño (cuenta de pasarela). 32 La Figura 8 es un diagrama de tiempos para los decodificadores ejemplificativos REED-SOLOMON (RS) que demuestra la efectividad asociada con un decodificador 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 tiempo ilustra 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 ti 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 33 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.
Bloques dobles de búsqueda Chien en un decod if 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 decodif icador que utiliza los principios de esta modalidad de la presente invención reduce tanto la latencia del decodif icador como los requerimientos de almacenamiento/memoria del decodif icador. 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 34 ?(?) de ubicación de error, el bloque 930 Chien aplica el algoritmo de búsqueda Chien para evaluar sus raices. 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 son iguales a cero. Cuando ocurre un error en la posición i, entonces la siguiente ecuación se ¡guala 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 35 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 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 36 bytes para ambos vectores. La salida del bloque 950 de corrección de error se encuentra en el cálculo del decodif icador de la palabra código original. 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 37 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 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 38 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 exclusiva (XOR) con la palabra código recibida con el fin de corregir errores para formar el cálculo del decodificador de la palabra código original. Los decodificadores 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 la 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. 39 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 elimina la necesidad de un bloque LIFO u otro medio de inversión. Por lo tanto, se logra un período 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 raíces. Las ubicaciones de las raíces 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: 40 x¡=¿ ^a? =0 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 corresponden a errores. La celda 1000 de búsqueda Chien es la 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 al multiplicador 1040 en donde se multiplica por a"' 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 41 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 ¡mplementadas 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: ? + ?a" ? + (?°-1) a"1?2 + ((?a 1) ?G1) ?G ?3 + ... en donde ?? representa un retraso de n ciclos de reloj. Al combinar términos, la secuencia final producida es: ? + ?a"1? + ?a"2?2 + ?a"3?3 + ... ?a"(?'1)??"1 El problema asociado con esta i mplementació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 42 latericia 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 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 Ecuación 8 x¡=¿ Ac¿ 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 43 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 ( N - 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. 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 prem ultiplicador 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 aj 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 ^'? + (?a-(?"1))a?2 + ((?a"<?-1)a)a?3 + ... Al combinar términos se produce la siguiente secuencia: ?a"(?-1)? + ?a-(?-2)? + ?a <N-3)X2 + ... +?a ??-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 1 00 de búsqueda Chien de la Figura 11 utiliza un multiplicador de campo Galois adicional (dos en 44 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. 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 45 (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. 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 46 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 (2)

47 REIVINDICACIONES
1. En un decodificador utilizado para la detección de error en una palabra código, un método para evaluar un único coeficiente de polinomio de ubicación de error generado de la palabra código en una celda correspondiente al único coeficiente de polinomio de ubicación de error, el método está caracterizado porque comprende los pasos de: recibir un coeficiente (1100) de polinomio de ubicación de error correspondiente a la palabra código; multiplicar el coeficiente (1100) de polinomio de ubicación de error, en un primer ciclo de reloj correspondiente al procesamiento de la palabra código, por un multiplicador de campo Galois que tiene un exponente (1150) negativo, en donde el exponente negativo es una función de un número (j) de etapa, correspondiente a la celda y a la longitud de la palabra código (N), el paso de multiplicar resulta en una salida de celda; y multiplicar en forma iterativa la salida de celda, para un N ciclo de reloj posterior menos N, por un multiplicador de campo Galois que tiene un exponente (1140) positivo, y en donde el exponente positivo es una función del número (j) de etapa.
2. El método de conformidad con la reivindicación 1, caracterizado porque la celda es una celda de búsqueda Chien de un bloque de búsqueda Chien. 48 3 El rrrétodo de contorm idad con ¡a reivindicación ?7 caracterizado porque la celda es una celda de algoritmo Forney de un bloque de algoritmo Forney. 4. El método de conformidad con la reivindicación 1, caracterizado porque la celda es una celda de algoritmo Forney de un bloque Chien/Forney . 5. El método de conformidad con la reivindicación 1, caracterizado porque el decodificador es un decodif icador REED- SOLOMON. 10 6. En un decodificador utilizado para la detección de error de una palabra código, un método para evaluar un único coeficiente de polinomio de ubicación de error generado de la palabra código en una celda correspondiente de un único coeficiente de polinomio de ubicación de error, las operaciones del método controlados por los 15 parámetros de las ecuaciones: Para i = 0 Para i = 1, 2, ..., (N-1) en donde: ¦25 Xi-e-sH¾H^3-v¾ ^-fz~dT-ri3ÍJi rairi ó n dé error; 49 T es uno menos que el número total de coeficientes correspondiente a un polinomio de ubicación de error; Aj es el j-avo coeficiente de polinomio de error; N es la longitud de la palabra código; a es el elemento de campo Galois; y j es el número de etapa correspondiente al único coeficiente de polinomio de ubicación de error. 7. Un aparato para evaluar un único coeficiente de polinomio de ubicación de error generado de una palabra código en una celda correspondiente al único coeficiente de polinomio de ubicación de error, el aparato incorporado dentro del decodificador utilizado para la detección de error de la palabra código, el aparato está caracterizado porque comprende: un medio para recibir un coeficiente (1100) de polinomio de ubicación de error correspondiente a la palabra código; medios para multiplicar el coeficiente (1100) de polinomio de ubicación de error en un primer ciclo de reloj correspondiente al procesamiento de la palabra código, por un multiplicador de campo Galois que tiene un exponente (1150) negativo, en donde el exponente negativo es una función del número (j) de etapa correspondiente a la celda y la longitud de la palabra código (N), el paso de multiplicar el resultado en una salida de celda; y medios para multiplicar en forma iterativa la salida de celda por un ciclo de reloj posterior menos N, por un multiplicador de campo 50 Galois que tiene un exponente (1140) positivo, en donde el exponente positivo es una función del número (j) de etapa. 8. El aparato de conformidad con la reivindicación 7, caracterizado porque la celda es una celda de búsqueda Chien de un bloque de búsqueda Chien. 9. El aparato de conformidad con la reivindicación 7, caracterizado porque la celda es una celda algoritmo Forney de un bloque de algoritmo Forney. 10. El aparato de conformidad con la reivindicación 7, caracterizado porque la celda es una celda de algoritmo Forney de un bloque Chien/Forney. 11. El aparato de conformidad con la reivindicación 7, caracterizado porque el decodificador es un decodif icador REED-SOLOMON.
MXPA04007075A 2002-01-23 2003-01-22 Celda de busqueda chien para un decodificador de correccion de error. MXPA04007075A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/055,470 US20030140302A1 (en) 2002-01-23 2002-01-23 Chien search cell for an error-correcting decoder
PCT/US2003/001904 WO2003063362A1 (en) 2002-01-23 2003-01-22 Chien search cell for an error-correcting decoder

Publications (1)

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

Family

ID=21998028

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA04007075A MXPA04007075A (es) 2002-01-23 2003-01-22 Celda de busqueda chien para un decodificador de correccion de error.

Country Status (8)

Country Link
US (1) US20030140302A1 (es)
EP (1) EP1468498A4 (es)
JP (1) JP2005516457A (es)
KR (1) KR20040075953A (es)
CN (1) CN1636324A (es)
BR (1) BR0302821A (es)
MX (1) MXPA04007075A (es)
WO (1) WO2003063362A1 (es)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100594241B1 (ko) * 2004-01-29 2006-06-30 삼성전자주식회사 순방향 치엔 서치 방식의 리드 솔로몬 디코더 회로
US8312345B1 (en) * 2006-09-29 2012-11-13 Marvell International Ltd. Forward error correcting code encoder apparatus
CN101345533B (zh) * 2007-07-11 2011-06-01 光宝科技股份有限公司 里得-索罗门解码中有效率的陈氏寻根方法及系统
JP2009100369A (ja) * 2007-10-18 2009-05-07 Toshiba Corp 誤り検出訂正回路、半導体メモリコントローラ、および誤り検出訂正方法
CN104391675B (zh) * 2008-05-12 2020-03-24 高通股份有限公司 用于提高处理效率的设备和处理器
CN101854180B (zh) * 2010-06-01 2013-04-24 福建新大陆电脑股份有限公司 一种条码纠错译码装置
WO2012106635A1 (en) * 2011-02-04 2012-08-09 Marvell World Trade Ltd. Control mode phy for wlan
US8918694B2 (en) 2011-02-28 2014-12-23 Clariphy Communications, Inc. Non-concatenated FEC codes for ultra-high speed optical transport networks
US10103751B2 (en) * 2011-02-28 2018-10-16 Inphi Corporation Non-concatenated FEC codes for ultra-high speed optical transport networks
US10063262B2 (en) * 2011-02-28 2018-08-28 Inphi Corporation Non-concatenated FEC codes for ultra-high speed optical transport networks
WO2012127262A1 (en) * 2011-03-24 2012-09-27 Sandisk Il Ltd. Parallelization of error analysis circuitry for reduced power consumption
CN102594370B (zh) * 2012-02-27 2013-11-27 成都国微电子有限公司 一种高效低延时并行钱搜索方法和装置
US9467174B2 (en) * 2014-03-14 2016-10-11 Samsung Electronics Co., Ltd. Low complexity high-order syndrome calculator for block codes and method of calculating high-order syndrome
US11424766B1 (en) 2020-01-31 2022-08-23 Marvell Asia Pte Ltd. Method and device for energy-efficient decoders
KR20210150149A (ko) * 2020-06-03 2021-12-10 삼성전자주식회사 신드롬과 부분 계수 정보를 병렬적으로 생성하는 에러 정정 장치 및 방법
CN114095039B (zh) * 2021-10-18 2023-11-28 深圳市紫光同创电子有限公司 一种支持码字同步的伴随式计算方法及计算电路

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5027357A (en) * 1988-10-14 1991-06-25 Advanced Micro Devices, Inc. ECC/CRC error detection and correction system
WO1992013344A1 (en) * 1991-01-22 1992-08-06 Fujitsu Limited Error correction processing device and error correction method
DE4140018A1 (de) * 1991-12-04 1993-06-09 Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen
US5396502A (en) * 1992-07-09 1995-03-07 Advanced Hardware Architectures, Inc. Single-stack implementation of a Reed-Solomon encoder/decoder
JP3328093B2 (ja) * 1994-07-12 2002-09-24 三菱電機株式会社 エラー訂正装置
US5971607A (en) * 1996-05-10 1999-10-26 Daewoo Electronics Co., Ltd. Polynomial evaluator for use in a Reed-Solomon decoder
GB2318954B (en) * 1996-10-29 2001-05-23 Daewoo Electronics Co Ltd Reed-solomon decoder for use in advanced television
JP3710586B2 (ja) * 1997-02-21 2005-10-26 株式会社ルネサステクノロジ 誤り訂正装置
US6415413B1 (en) * 1998-06-18 2002-07-02 Globespanvirata, Inc. Configurable Reed-Solomon controller and method
US6374383B1 (en) * 1999-06-07 2002-04-16 Maxtor Corporation Determining error locations using error correction codes
US6651214B1 (en) * 2000-01-06 2003-11-18 Maxtor Corporation Bi-directional decodable Reed-Solomon codes
US20030192007A1 (en) * 2001-04-19 2003-10-09 Miller David H. Code-programmable field-programmable architecturally-systolic Reed-Solomon BCH error correction decoder integrated circuit and error correction decoding method
US6920600B2 (en) * 2002-01-23 2005-07-19 Thomson Licensing S.A. Dual chien search blocks in an error-correcting decoder

Also Published As

Publication number Publication date
EP1468498A1 (en) 2004-10-20
CN1636324A (zh) 2005-07-06
KR20040075953A (ko) 2004-08-30
JP2005516457A (ja) 2005-06-02
EP1468498A4 (en) 2006-05-31
WO2003063362A1 (en) 2003-07-31
US20030140302A1 (en) 2003-07-24
BR0302821A (pt) 2004-04-27

Similar Documents

Publication Publication Date Title
US6920600B2 (en) Dual chien search blocks in an error-correcting decoder
US7020826B2 (en) Intra-decoder component block messaging
US10243589B2 (en) Multi-bit error correction method and apparatus based on a BCH code and memory system
JP3996205B2 (ja) 連接符号データの送受信方法および送受信装置
US7246294B2 (en) Method for iterative hard-decision forward error correction decoding
MXPA04007075A (es) Celda de busqueda chien para un decodificador de correccion de error.
Shrivastava et al. Error detection and correction using Reed Solomon codes
US7231575B2 (en) Apparatus for iterative hard-decision forward error correction decoding
EP1102406A2 (en) Apparatus and method for decoding digital data
Panem et al. Polynomials in error detection and correction in data communication system
KR100747487B1 (ko) 리드-솔로몬 복호 장치 및 수정된 유클리드 알고리즘연산회로
EP0329775A1 (en) High bandwidth reed-solomon encoding, decoding and error correcting circuit
Khan et al. Hardware implementation of shortened (48, 38) Reed Solomon forward error correcting code
Sonawane et al. Implementation of RS-CC Encoder and Decoder using MATLAB
US7155656B1 (en) Method and system for decoding of binary shortened cyclic code
JP2726902B2 (ja) 広帯域巾のリード‐ソロモンエンコード、デコード及びエラー修正回路
Dubey et al. FPGA Implementation of Orthogonal Code Convolution for Efficient Digital Communication
Mohan VHDL IMPLEMENTATION OF REED SOLOMON CODING
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