DESCRIPCIÓN Método para la detección y corrección de errores en memorias volátiles OBJETO DE LA INVENCIÓN 5 El objeto de la invención se engloba dentro de las técnicas para la detección y corrección de múltiples errores que puedan producirse en los datos de configuración a proteger almacenados en la memoria volátil de un sistema electrónico, y más específicamente de aquellos errores causados por el impacto de la radiación cósmica 10 basada en iones pesados, neutrones y protones, en sistemas electrónicos aeroespaciales. ANTECEDENTES DE LA INVENCIÓN 15 Históricamente, la industria aeroespacial continúa la mejora de su competitividad basada en dos puntos básicos, la reducción de costes y la introducción de tecnologías seguras y fiables. El rápido crecimiento en el uso de sistemas electrónicos complejos para realizar actividades o funcionalidades para la mayoría de aplicaciones críticas de vuelo ha creado nuevas necesidades para la certificación aeronáutica de estos nuevos 20 sistemas críticos embarcables, mediante las regulaciones de EASA (del inglés "European Aviation Safety Agency") y FAA (del inglés "Federal Aviation Administration of United States"), como RTCA-DO254 / EUROCAE-ED80 para hardware complejo como FPGAs (del inglés "Field Programmable Gate Array") y RTCA-DO178 / EUROCAE-ED12 para sistemas basados en módulos Software embebidos en microprocesadores. 25 Actualmente diferentes técnicas son usadas para mitigar errores del tipo modificación por fenómeno único o SEU en memorias (del inglés "Single Event Upset"). Estas técnicas están basadas en procesos específicos de la tecnología de memorias, células de memoria protegidas contra radiación, códigos de detección y corrección de 30 errores, redundancias Software, redundancia modular triple (TMR) o incluso soluciones a nivel de sistema. Las siguientes referencias como estado del arte son aquí citadas como de interés en el campo al que pertenece la invención: 35
• Carl Carmichael en Xilinx, Inc según "SEU Mitigation Techniques for Virtex FPGAs in Space Applications" donde se presentan diferentes soluciones basadas en el particionado de la lógica implementada en FPGAs y la redundancia de estos particionados para la mitigación de los fallos producidos por radiación. Aunque proporciona una gran capacidad de detección y corrección de errores, la mayor 5 desventaja de este sistema de replicación de datos es el tamaño de la memoria necesaria ya que se duplica o triplica el tamaño requerido. • Sandi Habinc en Gaisler Research según "Functional Triple Modular Redundancy (FTMR)" donde se presentan soluciones como la técnica de Triple Redundancia 10 Modular (TMR) que implica tener tres circuitos lógicos funcionales para determinar el fallo de uno de ellos mediante una comparación de los resultados de los tres circuitos. La mayor desventaja de estos sistemas es que sólo protege la parte lógica programada por el usuario de una FPGA pero no la parte interna de enrutado de los circuitos de la FPGA. 15 • Ghazanfar-Hossein Asadi and Mehdi Baradaran Tahoori en Computer Engineering Northeastern University según "Soft Error Mitigation for SRAM-based FPGAs" donde se presenta una técnica redundante donde la corrección de integridad del estado de la memoria se realiza mediante una FPGA auxiliar para el chequeo 20 continuo de la palabra de corrección de redundancia cíclica CRC o "checkword" de la FPGA principal. • Michael Nicolaidis de IROC Technologies según "Radiation Induced Single-word Multiple-bit Upsets Correction in SRAM" donde se presenta la técnica basada en 25 la detección de errores mediante la monitorización del consumo de corriente de cada una de los bloques o "frames" de la memoria. Una vez se detecta el fallo, se utiliza la codificación Hamming para la corrección de errores. • Fernanda de Lima en Universidade Federal do Rio Grande do Sul según "A 30 Multiple Bit Upset Tolerant SRAM memory" donde se presenta la técnica de corrección y detección de errores en memorias basadas en codificaciones Reed-Solomon y Hamming. Estos sistemas implican introducir una latencia alta en la lectura y escritura de los datos de la memoria, ya que es necesaria la elección de un sistema Reed-Solomon basado en la corrección de hasta 7 errores 35 consecutivos.
Dado el estado del arte descrito, se plantean unos objetivos necesarios para evaluar las mejoras del sistema con respecto a sistemas ya existentes, como son: 1. Capacidad de corrección de múltiples errores simultáneos o MBU (del inglés 5 "Multi-Bit Upset") como mejora al sistema TMR. 2. Ocupación del sistema o Latencia en el proceso como mejora a los sistemas actuales de detección y corrección de errores, debido a la necesidad de codificar y decodificar en cada proceso. 10 3. Eficiencia en cuanto a la necesidad de memoria extra requerida, como mejora de los sistemas de partición y replicación de datos. DESCRIPCIÓN DE LA INVENCIÓN 15 Muchos estudios y campañas de ensayos se han desarrollado para caracterizar el tipo de fallos SEU y MBU en las memorias volátiles sometidas a radiación solar basada en iones pesados, neutrones y protones. Además, las nuevas técnicas de fabricación de los transistores utilizados en los bits de las memorias han sido capaces de reducir su 20 tamaño incrementando su densidad. Este incremento de la densidad conlleva que la capacidad o carga crítica de los bits de memoria sea inferior, haciendo que los bits de memoria sean más susceptibles a las pequeñas descargas de corriente producidas por iones pesados, neutrones y protones cuando pasan a través del substrato de silicio. 25 Estos estudios han desvelado el incremento de la capacidad de estas partículas para producir MBU dentro de una memoria. Ensayos se han realizado tanto para incidencia normal a la superficie como para incidencia con 60º donde se aprecia aún más el fallo por MBU, hasta un máximo de 6 o 7 bits afectados por partícula (figura 1). La figura 2 muestra la arquitectura utilizada basada en la disposición característica 30 geográfica de errores debido a MBU. La innovación de la solución propuesta es un método basado en una codificación/decodificación piramidal multi-nivel gracias a los llamados bits semilla que, soldados o fijados físicamente en la placa del circuito impreso o HSB (del inglés 35 "Hardwired Seed bits"), son calculados en la fase de codificación y contienen suficiente
información como para restaurar una porción del código de programación original en la fase de decodificación en cada ciclo de refresco de las memorias volátiles. Acorde a las figuras 3 y 4, existen dos procesos definidos en diferentes fases: 5 • Fase de codificación (figura 3) para la obtención de los bits semilla HSB, realizada durante el diseño del equipo electrónico una vez que el código de configuración a proteger está definido, constituida por: o Capa inferior de la codificación, basada en la agrupación en bloques de los 10 bits de la memoria escogidos por ejemplo de manera equidistante geográfica (figura 3). Esta separación geográfica entre los bits pertenecientes a cada bloque es adecuada para minimizar el efecto de los errores esperados según la caracterización de los patrones de errores múltiples en ráfaga (figura 1), que provocan tanto SEU como MBU sobre varios bits contiguos almacenados 15 originalmente en la memoria volátil del receptor. Se crea la unidad mínima analizada llamada bloque o "frame" donde no aparecerán errores múltiples. Esto es debido a que la separación geográfica descrita está caracterizada por tener una distancia mínima superior a la máxima longitud registrada y esperada de bits afectados por ráfaga en MBU. (figura 1), por lo que los bits 20 afectados son distribuidos en bloques o "frames" diferentes de tal forma que no más de un bit erróneo por bloque o "frame" es esperado o De cada bloque o "frame" se obtienen dos palabras de chequeo CRC o "checkwords" con los siguientes objetivos: 25 Detección de error o cambio de bit en cada bloque o "frame" mediante una palabra de detección de errores o chequeo de tipo bit de paridad que es un proceso con baja latencia de procesado. Se determina de forma que el número total de bits en cada bloque o “frame” sea par. 30 Esta detección es posible gracias a la disposición equidistante de los bits de los bloques o "frames" adecuada según la caracterización de la fuente de fallos debidos a SEU o MBU, y que permite que siempre exista un solo fallo máximo por bloque o "frame" incluso en el peor caso esperado de fallos debidos a MBU. 35
Corrección de un solo bit erróneo en los "frames" detectados anteriormente como irregulares mediante el CRC de paridad descrito en el apartado anterior. La codificación utilizada para la corrección del bit afectado en cada bloque o "frame" irregular se basa en una codificación de los datos para obtener una palabra de chequeo CRC de corrección, 5 por ejemplo basada en la suma en complemento a dos basada en funciones XOR de todos los bits del bloque o "frame" (figura 2). o Todos los bits del CRC de paridad junto con los bits de CRC de corrección de todos los bloques o "frames" se codifican de nuevo para obtener los bits 10 semilla HSB mediante una codificación que permita detectar posibles errores, por ejemplo mediante la suma en complemento a dos basada en funciones XOR, que se fijan físicamente a una referencia de alimentación en la placa del circuito impreso del sistema mediante resistencias pull-up, resistencias pull-down, puentes tipo "jumper", directamente soldados, o cualquier otro método 15 equivalente que garantice su disponibilidad sin errores. • Fase de decodificación (figura 4) durante la operación normal de funcionamiento del equipo electrónico: 20 o La función de decodificación se realiza periódicamente en busca de errores en cada uno de los bloques o "frames". o La funcionalidad lógica desarrollada para el proceso de decodificación es duplicada e implementada físicamente en lugares distintos del receptor (figura 25 3). Esta lógica duplicada recibe el nombre de “Func1” (15) para la función primaria y “Func2” (16) para la función redundada. Además es imprescindible que cada una de las áreas de implementación de estas dos funciones estén separadas del área donde se implementen los bits de los CRCs de paridad y corrección. 30 o Lectura mediante puertos dedicados de los HSB externos fijados físicamente (22). o Con los HSB se comprueba el posible error en los CRC (13) de paridad y de 35 corrección guardados en memoria mediante las funciones “Func1” (15) y “Func2” (16). Ambas funciones contienen la misma funcionalidad lógica y
están implementadas en lugares segregados del receptor. En ambas funciones se utiliza de nuevo la codificación empleada para el proceso de detección/corrección. De esta manera se hace la comparación bit a bit con los HSB leídos (proceso inverso al anteriormente descrito más la comparación de resultados). 5 o Si el resultado de ambas funciones “Func1” y “Func2” es igual y sin error una vez comprobadas con respecto a la referencia HSB, esto significa que no hay error en los CRC de paridad y corrección. De la misma manera, se procede a comprobar secuencialmente los siguientes bloques o "frames". 10 o Si el resultado de ambas funciones “Func1” y “Func2” es igual con el mismo valor una vez comprobadas respecto a la referencia HSB, esto significa que hay error en los CRC de paridad y corrección indicando el resultado de ambas funciones el bit erróneo a corregir. 15 Con los CRC (13) de paridad y de corrección ya verificados, corregidos y sin error mediante el proceso anteriormente descrito, se comprueba ya el estado de los datos de cada uno de los bloques o "frames" que componen la memoria. Primero se comprueba la paridad de los datos de 20 cada bloque o "frame" y se compara con el CRC de paridad. Si no existe error entre el cálculo de paridad del bloque o "frame" y el CRC de paridad correspondiente, se procede al cálculo de la paridad del siguiente bloque o "frame". 25 Si se detecta error entre el cálculo de la paridad del bloque o "frame" y el CRC de paridad correspondiente, se utiliza de nuevo la codificación empleada en el proceso de detección y corrección del bloque o "frame" para hacer la comparación bit a bit con el CRC de 30 corrección. De esta manera se obtiene el bit afectado modificado y se corrige a su estado anterior. o Si el resultado de ambas funciones “Func1” y “Func2” es distinto, se interpreta que se ha producido un error en la lógica de una de las funciones y no en los 35 datos de los CRC de paridad y corrección. Al ser un proceso periódico, no se contemplan los errores acumulados, por lo que no pueden existir errores
simultáneos en la lógica de algunas de las funciones “Func1” y “Func2” y en los CRC de paridad y corrección. Esto es debido a que tanto las funciones como los CRC de paridad y corrección están separados físicamente en áreas distintas del receptor y por tanto un MBU no puede llegar a afectar simultáneamente. Al existir el fallo en una de las funciones, el resultado de la 5 comprobación de la otra función será que no existe error entre la comparación de los CRC de paridad y corrección con respecto a los HSB. De esta manera se puede concluir que la función cuyo resultado es un error indeterminado es la función que ha fallado, pudiéndose discriminar qué función “Func1” o “Func2” es la que está realmente afectada por un error, sin necesidad de 10 triplicar la lógica de decodificación e implementación de un votador (sistema comparador de las tres salidas de los sistemas triplicados capaz de detectar cuál de ellas es diferente a las otras dos). Se utiliza la función sin fallo para la corrección del error existente en la lógica de la función que falla comprobando que el error se encuentra en el área destinada a la lógica de la función que 15 falla. Con ambas funciones “Func1” y “Func2” ya corregidas y con los CRC de paridad y de corrección ya verificados, se comprueba ya el estado de los datos de cada uno de los bloques o "frames" que componen la memoria. 20 Primero se comprueba la paridad de los datos de cada bloque o "frame" calculando su CRC de paridad y se compara con el CRC de paridad almacenado ya verificado y corregido. Si no existe error entre el cálculo de paridad del bloque o "frame" y 25 el CRC de paridad almacenado correspondiente, se procede al cálculo de la paridad del siguiente bloque o "frame". Si se detecta error entre el cálculo de la paridad del bloque o "frame" y el CRC de paridad almacenado correspondiente, se utiliza 30 de nuevo la codificación empleada en el proceso de detección y corrección del bloque o "frame" para hacer la comparación bit a bit con el CRC de corrección. De esta manera se obtiene el bit afectado modificado y se corrige a su estado anterior. 35 Las ventajas de este sistema son la reducción del tamaño de memoria necesaria
tanto volátil como no volátil del sistema redundante, ya que en el sistema habitualmente utilizado TMR (Redundancia Modular Triple), la memoria debe triplicarse, siendo necesaria además la implementación de un sistema votador para discriminar qué sistema ha fallado para aislar y/o corregir el fallo. Gracias a la reducción del sistema de la arquitectura piramidal, no es necesario triplicar las funcionalidades críticas por lo que la 5 energía consumida y disipada es también menor. Comparado con otros sistemas redundantes basados en sistemas de detección/corrección de errores, las características de este sistema son: 10 • Capacidad de corrección de múltiples errores producidos simultáneamente gracias a la disposición geográfica de los bits que impide el fallo múltiple en cada bloque o "frame"(figura 1). • Baja latencia de procesado gracias a la separación de detección y corrección. Se 15 utiliza el sistema de paridad para comprobar la existencia de errores, y el uso de la función de detección/corrección de errores sólo es aplicado una vez que se ha detectado un error. Además, la disposición geográfica permite el uso de los sistemas más sencillos y rápidos, ya que sólo es necesaria la corrección de un solo error por bloque o "frame". 20 • Eficiencia en el porcentaje entre el número de bits extra necesarios (HSB y CRCs por utilizar sistemas de corrección de un solo bit) y los bits de datos totales almacenados. 25 • La referencia externa fija (HSB) es reducida y no afectada por radiación, ya que está basada en la implementación física en la placa del circuito impreso. BREVE DESCRIPCIÓN DE LAS FIGURAS 30 Para complementar la descripción de esta invención, se acompaña como parte integrante de la misma un juego de esquemas con carácter ilustrativo y no limitativo, que se resume a continuación. La figura 1 muestra diferentes ejemplos de errores producidos por los efectos de la 35 radiación que causan el cambio de estado en varios bits de la memoria volátil: error simple (1), errores múltiples (2 a 11). La representación de los errores son marcados en
negro. La figura 2 muestra un ejemplo de la matriz utilizada en la estructura basada en la disposición característica geográfica de cada uno de los 64 bloques o "frames" (para una capacidad de corrección de hasta 8x8 bits) de bits cuando se produce un fallo debido a 5 SEU o MBU. De esta manera se consigue que sólo exista como máximo un fallo en un bit en todo el bloque o "frame" ya que la distancia mínima entre los bits que componen un bloque o "frame" es mayor que la distancia detectada en el peor caso esperado de errores debidos a MBU. Se define cada una de las celdas o bit de la matriz según el número de bloque o "frame" al que pertenecen y el orden del bit dentro del bloque o 10 "frame". Por ejemplo, f45.8 corresponde al bit 8 del bloque o "frame" 45. Los CRC de paridad y corrección son codificados secuencialmente basados en máscaras espaciales para obtener los bits implicados en cada bloque o "frame", similares a los bits marcados en la figura 2, equidistantes una cantidad determinada de bits (en el 15 ejemplo: 8x8). La primera detección de paridad de baja latencia de procesado de datos desvela posibles bloque o "frames" con algún bit alterado, para posteriormente sólo corregir secuencialmente los bloques o "frames" erróneos. La figura 3 muestra el resultado del proceso de codificación en los tres niveles de la 20 arquitectura de bits, mapa de bits a proteger (12), palabras de chequeo CRC de paridad y corrección (13), HSB (14), lógica implementada de la “Func1” (15) y lógica implementada de la “Func2” redundada (16), de la arquitectura piramidal obtenidos secuencialmente durante la fase de codificación. 25 En la decodificación, mostrada la figura 4, la referencia del proceso de protección son los bits semilla HSB (19), de la arquitectura. Se utilizan las palabras de chequeo CRC (18) ya calculadas y corregidas, para la detección de errores con baja latencia de procesado y corrección de bits sólo en bloques o "frames" irregulares (17) del mapa de bits. En esta arquitectura también se encuentran separados espacialmente las funciones 30 lógicas para la decodificación (15) y (16). La figura 5 muestra un ejemplo de implementación que utiliza circuitos tipo FPGA (23). El mapa de bits de datos (20) y los CRC de paridad y corrección (21) son almacenados en la memoria volátil del sistema, mientras que los bits semilla HSB (22), 35 son fijados físicamente y externamente a la FPGA. La lógica desarrollada para el proceso
de decodificación es duplicada e implementada físicamente en lugares distintos del receptor. Esta lógica duplicada recibe el nombre de “Func1” (24) para la función primaria y “Func2” (25) para la función redundada REALIZACION PREFERENTE DE LA INVENCION 5 A continuación se expone un caso de uso de esta invención. La técnica propuesta se centra en equipos electrónicos que utilizan FPGAs con tecnología interna basada en memoria volátil tipo RAM, donde la secuencia de bits de configuración es la encargada de definir la funcionalidad del sistema, según el contenido interno de las tablas de consulta o 10 LUTs (del inglés "lookup tables"), matrices de conexión interna, entradas, salidas, etc. Más concretamente, se trata de un sistema aeroespacial basado en una FPGA de tecnología RAM donde se ha programado una serie de funcionalidades críticas de vuelo. Para ello, después de la fase de diseño del equipo basado en el lenguaje VHDL, éste se 15 compila para ser descargado en la memoria ROM del sistema. La codificación se realiza durante la fase de diseño del equipo, una vez que todo el código de configuración de la FPGA está definido. Mediante el estudio de los patrones de errores creados por el SEU cuando se manifiesta afectando a varios bits 20 simultáneamente, MBU, se define entonces la unidad mínima de análisis, llamada bloque o "frame". Esto es, la distancia mínima de separación necesaria entre los bits que componen cada uno de los bloques o "frames" debe ser superior a la distancia detectada en el peor caso de errores propagados que afectan a varios bits simultáneamente. Estos bloques o "frames" se codifican mediante el diseño de la máscara para conseguir una 25 capacidad de corrección de múltiples errores provocados por MBU. Utilizando el sistema de codificación, para una FPGA que utiliza una memoria de 64 Kbits para definir sus funcionalidades, este código de 64 Kbits se define la máscara del bloque o "frame" para la detección de baja latencia de procesado (64 bits totales, uno por 30 cada bloque o "frame") y corrección de errores (640 bits totales, 10 bits por bloque o "frame"). En la figura 2, se muestra cómo para un mismo código y gracias a la disposición geográfica de los bits de los 64 bloques o "frames", todos los errores esperados causados por MBU pueden ser detectados/corregidos en un pocos ciclos de refresco (primeras simulaciones estiman un tiempo de respuesta de análisis de toda la memoria 35 inferior a décimas de milisegundos).
El diseño de este sistema está también basado en un chequeo de paridad para la detección de aquellos bloques o "frames" que estén afectados por bits erróneos debido a la propagación múltiple del SEU. Este proceso de detección se ha escogido por la baja latencia de procesado utilizada en este sistema para cada bloque o "frame" en caso de 5 múltiples errores. De esta manera sólo se utiliza el CRC de corrección en aquellos bloques o "frames" afectados por errores. En el caso práctico expuesto para una memoria de 64 Kbits, se utilizan 64 bloques o "frames" de 1 Kbit, equiespaciados geográficamente en la memoria cada 8 bits en las 10 dos dimensiones. La primera codificación (13) contiene 1 bit para el CRC de paridad y 10 bits para el CRC de corrección para protección de cada bloque o "frame" mediante la codificación para detección/protección, por ejemplo mediante la suma en complemento a dos basada en funciones XOR. Para proteger la memoria total (12) son necesarios 704 bits (11 bits en cada uno de los 64 "frames") que corresponden sólo con el 1,08% de la 15 memoria total. El CRC de corrección se basa en la suma complemento a dos de los bits de datos. Por ejemplo, el cálculo del CRC de corrección de la palabra de datos "1010011" es "110". La palabra de suma de control tiene la propiedad de que los bits de datos de información 20 originales también aparecen en la palabra de datos de corrección y sin cambios junto con los bits de CRC de corrección añadidos. Este procedimiento se utiliza porque los bits de datos de información deben mantenerse en su forma original debido a que es el código desarrollado que define la funcionalidad del sistema. Por lo tanto, se dice que el código es sistemático. 25 Para un conjunto de datos de 7 bits, los 3 bits del CRC de corrección se obtienen de la siguiente manera: C1 = D1 xor D3 xor D5 xor D7, C2 = D2 xor D3 xor D6 xor D7 y 30 C3 = D4 xor D5 xor D6 xor D7 En el ejemplo de datos "1010011", la palabra completa con los bits del CRC de corrección es "1010011110”. Los bits del CRC de corrección C1 a C3, se obtienen mediante la suma complemento a dos de los bits de datos, D1 a D7, incluidos en un 35 conjunto único y determinadas por el formato binario de su posición de bit. Todas los
CRC de corrección se obtienen con los bits de datos. La matriz generadora requerida para esta codificación es G = (IK | A). Si existen k bits de datos, la matriz debe contener al menos k palabras de código linealmente independientes para producir combinaciones lineales de dos o más códigos en el conjunto. La manera más fácil de obtener k códigos linealmente independientes es elegir la matriz identidad como IK en la matriz generadora, 5 mientras que A es la representación del módulo lineal en complemento a 2 de los bits de datos. El proceso de codificación se representa en forma de matriz como v = u G, donde u es el bloque de bits de datos de información, v la palabra de suma de corrección completa y G de la matriz generadora. 10 Es importante destacar que la matriz generadora es de dimensión kxn donde k es la dimensión de los bits de datos y n es la longitud total de la palabra suma que incluye los bits de datos y el CRC de corrección. Esta forma especial corresponde a un código sistemático que contiene la matriz de identidad kxk y kx(n-k) de matriz de bits de suma de corrección. Por lo tanto, el mismo ejemplo se obtiene mediante V = [1 0 1 0 0 1 1] G = 15 [1 0 1 0 0 1 1 1 1 0]. La detección de errores consiste en la decisión de qué bit está en fallo mediante el análisis de la información del síndrome. El síndrome se obtiene de la matriz de corrección compuesta por el (n-k)x n de la matriz generadora, G: 20 H = (AT | IN-K) Síndrome: s = v H Los bits del CRC de corrección general se cubren la siguiente manera: • C1 cubre todas las posiciones de bits que tienen el bit menos significativo 25 establecido en 1: bit 1, 3, 5, 7, etc. siendo siempre el bit menos significativo para el cálculo del síndrome se valora como 20, al detectar un error. • C2 cubre todas las posiciones de bit que tienen el segundo bit menos significativo puesto a 1: bit 2, 3, 6, 7, 10, 11, etc. se valora como 21 para el cálculo del síndrome. 30 • C3 cubre todas las posiciones de bits que tienen el tercer bit menos significativo establecido en 1: Bits 4-7, 12-15, 20-23, etc., en este ejemplo es el bit más significativo y para el cálculo del síndrome se valora como 22, cuando se detecta un error.
• C4 cubre todas las posiciones de bits que tienen el cuarto bit menos significativo establecido en 1: Bits 8-15, 24-31, 40-47, etc., se valora como 23 para el cálculo del síndrome. Al tener m bits en el CRC de corrección, este cálculo puede cubrir un numero de 5 bits de datos hasta 2m - 1. La longitud total (suma de CRC de corrección más los bits de datos) se obtiene mediante la suma de los bits de datos, además del CRC de corrección, 2m + m - 1. Como m varía, todos los posibles CRC de corrección con la máxima capacidad se pueden conseguir. En los ejemplos anteriores, 3 bits de CRC de corrección cubren hasta 7 bits de datos, mientras que 5 bits de CRC cubrirían hasta 31 bits de datos. 10 Cualquier combinación no optimizada intermedia, podría ser también construida. Una trama de 22 bits de datos se podría construir aunque no optimizada y también ser cubiertos por 5 bits CRC de corrección. Sólo si se detecta un error en un bloque o "frame" mediante el CRC de paridad, se 15 utilizarán los bits redundantes del CRC de corrección (13) para detectar la posición del fallo y corregir el bit erróneo de ese bloque o "frame". La totalidad de la memoria es chequeada secuencialmente mediante los 64 bloques o "frames" creados en esta aplicación. Si se encuentra un bloque o "frame" con fallo en el CRC de paridad, se procede al proceso de corrección del bit afectado mediante el CRC de corrección. 20 Una vez el bit erróneo es detectado y corregido, se procede al análisis del CRC de paridad del siguiente bloque o "frame". En caso de que no se encuentre un error en el bloque o "frame", secuencialmente y manteniendo la disposición geográfica de la máscara que define el bloque o "frame", se procederá al chequeo de cada uno de los 25 bloques o "frames" de la memoria. En el caso mostrado en la figura 2, implicaría 64 pasos (uno por bloque o "frame") para completar el estudio de fallos en toda la memoria. Una vez obtenida la secuencia de bits (13) de la capa inferior (704 bits) de CRC de paridad y corrección, ésta se utiliza como datos de entrada a proteger para la capa 30 superior de la codificación (14). Se ha utilizado la misma codificación de detección/protección de la etapa anterior basada en la suma en complemento a dos que permite detectar/corregir un error en cada ciclo de operación para obtener la semilla HSB (14). 35 Una vez que ambas capas se han codificado (13 y 14), los bits semilla HSB se fijan
físicamente a una referencia de alimentación (22) según la figura 5 en la placa electrónica del equipo electrónico mediante 10 resistencias pull-up, resistencias pull-down, puentes tipo "jumpers", directamente soldados, o cualquier otro método equivalente que garantice su disponibilidad sin errores. De esta manera, se asegura que no existe la posibilidad de que estos datos semilla sean alterados por la radiación existente o cualquier otro agente 5 externo. La lógica desarrollada para el proceso de decodificación es duplicada e implementada físicamente en lugares distintos del receptor (figura 3). Esta lógica duplicada recibe el nombre de “Func1” (15 y 24) para la función primaria y “Func2” (16 y 25) para la función 10 redundada. Además es imprescindible que cada una de las áreas de implementación de estas dos funciones esté separada del área donde se implementen los bits de los CRCs (18 y 21) de paridad y corrección. Si existe fallo en una de las funciones, el resultado de la comprobación de la otra función será que no existe error entre la comparación de los CRC (18) de paridad y corrección con respecto a los HSB (19). De esta manera se puede 15 concluir que la función cuyo resultado es un error indeterminado es la función que ha fallado, pudiéndose discriminar que función “Func1” (24) o “Func2” (25) es la que está realmente afectada por un error, sin necesidad de triplicar la lógica de decodificación e implementación de un votador. Se utiliza la función sin fallo para la corrección del error existente en la lógica de la función fallada comprobando que el error se encuentra en el 20 área destinada a la lógica de la función que falla.