SISTEMA DE EMULACIÓN AUTÓNOMA CON COMUNICACIÓN USB 2.0 INTEGRADO EN UN ENTORNO CON MICROBLAZE

Introducción

Este proyecto ha sido realizado en el Departamento de Tecnología Electrónica, dentro del Grupo de Diseño Microelectrónico y Aplicaciones.

La Real Academia Española en su diccionario define Microelectrónica como “Técnica de diseñar y producir circuitos electrónicos en miniatura, aplicando especialmente elementos semiconductores.”. La Microelectrónica, también se puede definir como el conjunto de ciencias y técnicas con las que se realizan y fabrican circuitos electrónicos, sobre una pastilla de un semiconductor, lo que formará un circuito integrado (IC)

El enfoque de este proyecto está centrado en la tolerancia a fallos frente a radiación. El motivo del estudio de la tolerancia a fallos frente a radiación, ya que existe un efecto de la radiación sobre los circuitos electrónicos denominado “SEU”, del inglés Single Event Upset, y produce un mal funcionamiento de los mismos. El efecto del SEU hace que, a un circuito en funcionamiento normal, cuando impacta radiación sobre sus componentes de memoria, éstos en lugar de tener almacenado en la posición de memoria un “cero lógico”, pasan a presentar un “uno lógico”, con lo que el contenido del elemento de memoria se ve alterado.

Para estudiar lo tolerantes que son los circuitos diseñados frente a la radiación se plantea la inyección de fallos a circuitos electrónicos. Hay tres mecanismos clásicos para realizar la inyección de fallos: inyección física, mediante simulación y, por último, la emulación de fallos en circuitos electrónicos. Este Proyecto Fin de Carrera se enmarca en el último método para evaluar la tolerancia frente a fallos, mediante un Sistema de Emulación Autónoma.

Estos circuitos electrónicos a los que se les inyectan fallos, en su vida útil, son susceptibles de sufrir fallos debido a causas tales como radiación, cuando son empleados en ambientes tales como el espacio exterior. Una de las preocupaciones de los diseñadores de estos circuitos es la tolerancia frente a fallos de los circuitos que diseñan, lo que mitigan con diversas técnicas de diseño tales como el endurecimiento de hardware. Pero, con estos métodos no se asegura al cien por cien el buen funcionamiento de los circuitos diseñados que vayan a ser utilizados en aplicaciones como son las aeroespaciales. Por eso, un objetivo muy importante en la fase de diseño es conocer cuantitativamente la vulnerabilidad que presentan frente a fallos.

La evaluación de la tolerancia a fallos se realiza con dos copias del circuito a analizar. Por un lado, un circuito al que no se le inyectará fallos, denominado Golden, y otra copia exactamente igual, a la que se inyectarán fallos, denominado Faulty. A ambos circuitos se les excitará con las mismas entradas y se realizará una comparativa de las salidas que generan cada uno de ellos. De esta manera se podrá clasificar el tipo de fallo que se le ha inyectado observando cómo afecta a sus salidas y el nivel de propagación que puede tener un fallo inyectado en un elemento de memoria del circuito. La inyección de fallos en un circuito se denomina campaña y presenta dos variables principales a la hora de realizarla: el número de ciclos del banco de pruebas empleados y en nuestro caso el número de biestables (como elemento de memoria) en los que se inyectan fallos. El número de ciclos del banco de pruebas es el número de excitaciones, en forma de entradas que se le aplican al circuito. La campaña transcurre, primero inyectando un fallo al primer biestable, y manteniendo ese fallo se le van excitando las entradas y analizando las salidas, comparando las salidas de la copia buena, Golden con las salidas de la copia mala, Faulty. Pasando posteriormente a la inyección de un fallo al siguiente biestable y analizando de nuevo el comportamiento de ambas copias completando el ciclo para esta nueva inyección. Así sucesivamente hasta que se hayan realizado todos los ciclos de la campaña de inyección de fallos. Mediante un diccionario de fallos se clasificarán los fallos inyectados en función de la repercusión que hayan tenido en el circuito. En el ámbito de este proyecto se tienen en cuenta tres tipos de fallos: Fallos, Latentes y Silencios. Los fallos clasificados como Fallos desembocan en un mal funcionamiento del circuito. Los fallos Latentes son aquellos que no afectan al funcionamiento del circuito, pero se propagan a lo largo de los elementos de memoria del circuito. Y por último, los fallos Silenciosos son los que ni son detectados en el funcionamiento del circuito, ni permanecen por los elementos de memoria.

En el ámbito de la inyección de fallos, la emulación con FPGAs es la más rápida junto a la inyección de fallos física. Pero el sistema de Emulación Autónoma es el método más rápido y que presenta un coste menor en la realización de campañas de fallos.

Por ejemplo: un circuito con 1000 biestables, que se somete a 5000 ciclos de banco de pruebas, puede suponer 5 millones de fallos inyectados, lo que podría presentar, teniendo en cuenta un circuito con un reloj de entrada de 50 MHz, y una velocidad de transmisión de datos de 115200 baudios, y teniendo que transmitir 10 registros de 32 bits cada uno al ordenador, se obtiene un tiempo de emulación de 3 horas y 52 minutos aproximadamente. La misma campaña con un sistema de simulación de fallos podría requerir al menos una semana.

Dentro de los diferentes sistemas de inyección de fallos a circuitos nombrados anteriormente, el que presenta una mejor relación velocidad/coste, es la inyección de fallos basada en la emulación de los circuitos mediante la descripción de hardware de los mismos, utilizando como soporte físico FPGAs.

El Sistema de Emulación Autónoma del que se parte al inicio de este proyecto está formado por una arquitectura que contiene cuatro grandes bloques: circuito bajo test, control y UART.

El CUT, Circuit Under Test, está formado por una copia del circuito a probar, a la que no se le inyectan fallos, denominada Golden y otra copia a la que sí se le inyectan fallos, denominada Faulty. Introduciendo el mismo juego de entradas a ambas copias, se analizan las salidas de ambos circuitos, de manera que se identificará la inmunidad del circuito frente a los fallos que se le inyectan a sus componentes de memoria.

La UART es elemento que se emplea para las comunicaciones del Sistema de Emulación Autónoma con el exterior, utilizando el protocolo RS-232, conectando la tarjeta al puerto serie de un ordenador. Dentro de la unidad de recepción y transmisión asíncrona, se encuentran unos registros de configuración que contienen la información referente a la campaña que se realizará si el sistema comienza a realizar una emulación.

Por último, el bloque de control, es el encargado de gestionar los datos que se envían y reciben a través de la UART, y de realizar las campañas de inyecciones de fallos, clasificar los fallos detectados con un diccionario de fallos y almacenar una copia temporal de los resultados que serán enviados a un ordenador conectado a la tarjeta en la que se implemente el Sistema de Emulación Autónoma.

Objetivos

El punto de partida es un sistema de Emulación Autónoma, que emplea una UART con comunicación serie, con el protocolo RS-232. Como se aprecia en el ejemplo anterior este tipo de comunicaciones presenta un inconveniente, las comunicaciones son un cuello de botella en la emulación de circuitos electrónicos, ya que los resultados son generados a más velocidad de lo que son transmitidos y posteriormente almacenados. Por ello se plantea como objetivo principal realizar un sistema de Emulación Autónoma, que sea capaz de enviar los resultados a mayor velocidad de lo que son generados los resultados de emulación.

Para poder acometer este objetivo se ha optado por una solución, implementar las comunicaciones USB incluyendo al sistema un entorno con un microcontrolador empotrado de la empresa Xilinx, el MicroBlaze. Un inconveniente a esta solución es el impedimento de no poder usar un programa tipo HyperTerminal, como el usado para las comunicaciones empleadas en el sistema de Emulación Autónoma del que se parte, el Tera Term Web 3.1. Para poder cumplir con el objetivo principal se plantea desarrollar una aplicación de interfaz de usuario para gestionar las comunicaciones USB y almacenar los resultados de la emulación recibidos, además de tratar los resultados generando un archivo donde se muestren los mismos.

De manera que los objetivos de este Proyecto Fin de Carrera se resumen a continuación:

  • Construir un emulador.
  • Integrar ese emulador en un entorno en el que haya un microcontrolador empotrado MicroBlaze.
  • Añadir la funcionalidad de comunicaciones USB.
  • Desarrollar una interfaz gráfica que se encargue de:
    • Las comunicaciones USB entre ordenador y tarjeta.
    • Almacenar los resultados recibidos por USB.
    • Mostrar estadísticas en tiempo real de la emulación en curso.
    • Generar archivos de resultados, uno para ser analizado por el usuario y otro para poder tratar los resultados en hojas Excel.

Breve descripción de la memoria

La memoria está dividida en tres grandes bloques: el sistema de Emulación Autónoma, el microcontrolador empotrado MicroBlaze y la Interfaz Gráfica de Usuario.

A lo largo del segundo capítulo se describen, tanto el Hardware empleado en este proyecto, como las aplicaciones que han sido empleadas a lo largo del desarrollo del proyecto.

En el siguiente capítulo se realiza una introducción al sistema de Emulación Autónoma que se desea implementar, dando una pequeña introducción al sistema de Emulación Autónoma del que se parte y del circuito bajo pruebas que se ha empleado.

En el cuarto capítulo se explica el entorno relacionado con el microcontrolador MicroBlaze (MB), comentando las funciones implementadas en el código que ejecutará. Y el sistema formado por el MB y todos los dispositivos que este manejará para realizar las comunicaciones USB con el ordenador, recibir los parámetros de emulación y transmitir los resultados de la emulación, y las comunicaciones con el emulador, es decir, pasarle los parámetros de emulación y recibir los resultados de emulación.

El siguiente capítulo, describe todas las funciones que se han desarrollado para realizar la aplicación que hará de intérprete entre el usuario y el sistema de Emulación Autónoma utilizando comunicación USB entre el PC y la tarjeta empleada. Además de todas las funcionalidades desarrolladas en torno al tratamiento de los resultados y la configuración de la aplicación.

El sexto capítulo define el sistema completo, desde las conexiones entre el ordenador y la tarjeta, pasando por la carga del archivo.bit, bitstream, en la FPGA y concluyendo con una breve guía con los pasos necesarios para poder realizar una emulación de un circuito electrónico.

Puedes descargar la memoría aquí.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *