42
Proyecto de Sistemas Informáticos Curso 2009-2010 Carlos Sánchez-Vellisco Sánchez Antonio José García Martínez David Fernández Máiquez

Proyecto de Sistemas Informáticos Curso 2009-2010 Carlos Sánchez-Vellisco Sánchez Antonio José García Martínez David Fernández Máiquez

Embed Size (px)

Citation preview

Proyecto de Sistemas InformáticosCurso 2009-2010

Carlos Sánchez-Vellisco SánchezAntonio José García MartínezDavid Fernández Máiquez

Desarrollo de entorno para inyectar errores en una FPGA

Emular el comportamiento que una partícula cósmica pueda tener sobre una celda RAM de la memoria de configuración

Proceso fundamental: configurar FPGA, ejecutar, modificar configuración (1 bit), ejecutar y comparar.

Placa XUPVirtex-II Pro Development System

Las FPGAs son dispositivos que contienen bloques de lógica programable

Ventajas: Reconfigurables Bajo costo FPGAs Vs. Microcontroladores: ejecución

en paralelo vs. Ejecución en serie

Debido a las ventajas comentadas, se estudia la posibilidad del uso de FPGAs en tecnología aeroespacial.

Problema real: no hay protección atmosférica en el espacio exterior.

Consecuencias: Una partícula solar podría modificar el contenido de la memoria de configuración de la FPGA

Utiliza el protocolo RS232 Interfaz para la E/S de datos para

probar cualquier circuito Distintas velocidades de transmisión

(bps) Diseño con un receptor y un

transmisor serie

Cronograma de transmisión de 1 byte 1 bit paridad 1 bit parada

Entradas: DatoTxIn (8 bits) Transmite Clk RstN

Salidas: Transmitiendo DatoSerieOut

Cuatro bloques Divisor de frecuencia Circuito de control Carga_desplazamiento Selección

Entradas: RxDatoSerie Clk RstN

Salidas: DatoRxOut (8

bits) AvisoRx Recibiendo

Tres bloques: Divisor frecuencia Circuito control Desplazador SIPO (Serial In Parallel Out)

Se evalúa el valor del bit recibido en el punto medio para evitar tomar valores contiguos

Circuito con 7 bits de entrada (no contamos clk por tratarse de una entrada especial) y 4 bits de salida.

¿Si tenemos otro circuito con mayor número de entradas y/o salidas?

Dos máquinas de 4 estados para recepción y transmisión.

En cada estado se transmite/recibe un byte de datos.

Mecanismo de funcionamiento: Recibir 4 bytes (entradas del circuito) Generar un pulso de reloj Transmitir 4 bytes (salidas del circuito)

Motivación: Poder cargar cualquier circuito que

queremos probar “conectándolo” automáticamente a nuestro módulo de E/S.

Necesitamos saber: Número de bits de entrada Número de bits de salida Entrada de reloj Otros ficheros de los que dependa (módulos

que usa)

Para conectarlo al módulo de E/S crearemos automáticamente otro fichero VHDL que realice las asignaciones necesarias.

Necesitamos analizar la entidad definida en un fichero VDHL para saber número de entradas y salidas.

(1) Fichero vhd de transmisión serie

(2) Fichero vhd de recepción serie

(3) Circuito introducido por el usuario. Este es el fichero cuya entidad se procesará.

La salida es el:

(4) Circuito vhd del módulo top generado automáticamente.

(1)Tx_Serie.vhd

(2)Rx_Serie.vhd

(3)Circuito.vhd

(4)Circuito_FPGA.vhd

Parte a analizar

Utilizaremos técnicas de procesamiento de lenguajes para reconocer la entidad definida en el fichero

Necesitaremos un analizador léxico para reconocer los pequeños elementos (tokens) de los que se compone el fichero vhdl: palabras reservadas, punto y coma, etc.

También un analizador sintáctico que lea cada uno de los tokens guiado por una gramática.

Autómata finito determinista (AFD)

Gramática de una entidadEntidad ::= Cabecera entity identificador is Generic Puertos end identificadorGeneric ::= generic (Variables);Variables ::= Variable RVariables;Variable ::= identificador : InOut integer := enteroRVariables ::= ; Variable RvariablesRVariables ::= λPuertos ::= port(Señales);Señales = Señal RSeñalesSeñal = identificador : InOut TipoRSeñales = ; Señal RSeñalesRSeñales = λInOut = inInOut = outTipo = std_logicTipo = std_logic_vector(Exp downto Exp)Exp = Term RExpRExp = + Exp | - Exp | λTerm = Fac RTemRTerm = * Term | / Term | λFac = ( E ) | nat | identificadorCabecera = *

Aplicación – Nessy 2.0

La ventana principal de la aplicación, estaría dividida en tres partes, el menú, la botonera y las vistas (donde se puede visualizar las salidas)

Aplicación – Nessy 2.0 (Menú)

Tenemos tres desplegables, desde los que podemos interactuar con la aplicación.

En el desplegable Opciones, tenemos las mismas posibilidades que existen en la botonera.

Aplicación – Nessy 2.0 (Menú)

En el desplegable Vistas elegimos la salida que queremos visualizar.

Aplicación – Nessy 2.0 (Menú) El menú configuración. Tiene dos opciones

desde las que podemos seleccionar la ruta del Xilinx.

Aplicación – Nessy 2.0 (Botonera)

Controla los procesos más importante de la aplicación.

Se encontrarán habilitados dependiendo en la situación en la que estemos.

Aplicación – Nessy 2.0 (Botonera)

Cargar VHDL: Desde aquí cargamos los ficheros de tipo VHDL del

proyecto con el que queramos trabajar. Podemos cargar un VHDL o varios eligiendo la entidad TOP

Aplicación – Nessy 2.0 (Botonera) Cargar varios archivos VHDL.

Aplicación – Nessy 2.0 (Botonera) Crear el archivo .Bit Se generará un archivo .bit a partir de los ficheros

VHDL cargados anteriormente. Indicaremos donde queremos guardar el archivo y se creará automáticamente, añadiéndole VHDL necesarios para la comunicación con la FPGA.

Aplicación – Nessy 2.0 (Botonera) Cargar . Bit Desde aquí seleccionando el archivo .bit que

deseemos, cargamos el archivo en la FPGA

Aplicación – Nessy 2.0 (Botonera) Cargar Test Bench: Aquí podemos elegir el repertorio de datos que se

enviarán a la FPGA. Tenemos dos opciones: Cargar TB en la vista Test Bench. Cargar desde Fichero y comenzar Ejecución.

Aplicación – Nessy 2.0 (Botonera)

Ejecutar: Comienza a mandar los datos que tenga del Test

Bench que hemos definido antes.

Aplicación – Nessy 2.0 (Botonera) Parar Ejecución: Permite parar una ejecución, dejando de enviar

datos a la FPGA.

Aplicación – Nessy 2.0 (Botonera)

Reanudar Ejecución: Permite continuar con la ejecución previamente parada.

Aplicación – Nessy 2.0 (Botonera)

Generar Golden: Generar el archivo Golden, que es con el que se

compara la ejecución de un Test Bench.

Cargar Golden: Permite seleccionar como archivo Golden que

tengamos guardado.

Aplicación – Nessy 2.0 (Botonera)

Inyección de Errores: Con este botón podemos ir modificando el mapa

de bits de la FPGA y observar como afecta esa modificación a la salida que se genera.

Aplicación – Nessy 2.0 (Botonera)

Toda la salida generada por este proceso en un fichero, para poder estudiar el impacto de la modificación del mapa de bits.

Aplicación – Nessy 2.0 (Otros Detalles) Teclas Rápidas.

Para cada opción de menú existe una combinación de teclas para accionarla.

Trazas. A parte de la traza de la Inyección de errores, se guarda una traza con todo

lo que hemos haciendo en la aplicación.

Ronda de Preguntas