380 likes | 582 Views
Introducción al diseño de sistemas digitales reconfigurables en FPGA con VHDL y la tarjeta Spartan-3AN de Xilinx. Autor: Sergio García López Director: Francesc Josep Sánchez i Robert. Spartan-3AN. Arquitectura interna.
E N D
Introducción al diseño de sistemas digitales reconfigurables en FPGA con VHDL y la tarjeta Spartan-3AN de Xilinx Autor: Sergio García López Director: Francesc Josep Sánchez i Robert
Arquitectura interna • Lógica de bloques configurable o Configurable Logic Blocks (CLBs) . • Entradas y salidas de los bloques o Input/Output Blocks (IOBs). • RAM. • Multiplicador de bloques. • Control de Reloj o Digital Clock Manager (DCM).
Flujo de diseño. Especificaciones. Decidir como se han de cumplir las especificaciones y diseñar el modelo a seguir. Realización. Tras crear el código de la aplicación es necesario asegurar su correcto funcionamiento mediante simulaciones antes de sintetizarlo. Síntesis del código. Antes de grabar un programa en la placa de destino, será necesario simular su comportamiento, esta vez ya con la configuración de pines decidida, a fin de comprobar sus retardos de propagación y su funcionamiento final.
Sistemas combinacionales. • Son aquellos sistemas en que las salidas dependen exclusivamente de las entradas y su respuesta es constante y deducible matemáticamente.
Uso de los Leeds y los pulsadores. Se establece una asignación entre los 4 selectores de entrada y 4 leeds de salida. entity Prub1 is Port ( SW : in STD_LOGIC_VECTOR (3 downto 0); LDR :out STD_LOGIC_VECTOR (3 downto 0)); end Prub1; architecture Behavioral of Prub1 is begin LDR <= NOT(SW); endBehavioral;
Archivo DO para simulaciones. restart add wave SW add wave LDR force SW 1011 run 100 force SW 0011 run 100 force SW 1100 run 100 force SW 1001 run 100 force SW 0101 run 100 run 200 • Se reinician los registros. • Se definen las variables a utilizar. • Addwave” nombre señal”. • Se fuerza un valor de entrada y se espera un tiempo prudencial de ejecución para observar los resultados. • Forcé “nombre entrada” “valor deseado” • Run“Tiempo deseado”
Escritura ySíntesis. • Añadir un nuevo archivo. • Introducir el código en este nuevo archivo. • Sintetizar el documento para comprobar si se producen errores durante el proceso.
Asignación de pines. • El programa nos permite introducir los datos de forma manual en el archivo .UCF de configuración, o de forma automática mediante una aplicación propia, PlanAhead. • Archivo .UCF • PlanAhead
Archivo .UCF • El formato del documento es el siguiente: ############################################################################# # Discrete Indicators (LED) # ############################################################################# NET "LED<0>" LOC = "R20" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ; NET "LED<1>" LOC = "T19" | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = SLOW ; • Para este proyecto se edita manualmente puesto que la nomenclatura de salidas no es la misma que en el Archivo .UCF original. NET "LDR[0]" LOC = R20; NET "LDR[1]" LOC = T19; NET "LDR[2]" LOC = U20; NET "LDR[3]" LOC = U19; NET "SW[0]" LOC = V8; NET "SW[1]" LOC = U10; NET "SW[2]" LOC = U8; NET "SW[3]" LOC = T9;
PlanAhead • Esta herramienta permite introducir la asignación de pines manualmente uno a uno.
Comprobación de la asignación de pines y sintetizado. • Un método para comprobar la asignación es mediante el DesignSummary. • Para completar toda la cadena de sintetizado y generar todos los archivos necesarios para la simulación temporal es necesario Generar el programa a grabar en la Spartan-3AN.
Simulación temporal mediante TestBench (I) • Este archivo permite integrar la simulación dentro del ISE Project Navigator y definir las pautas a seguir. stim_proc: process begin SW<="1111"; wait for 100 ns; SW<="1011"; wait for 100 ns; SW<="0011"; wait for 100 ns; SW<="1100"; wait for 100 ns; SW<="1001"; wait for 100 ns; SW<="0101"; wait for 100 ns; wait for 200 ns; wait; endprocess;
Simulación temporal mediante TestBench (II) • En la simulación temporal se pueden observa los retardos que se producen durante la ejecución del código. • Los retardos serán una constante durante todo el proyecto que oscilan entre 5 y 8 ns.
Grabado en la Spartan-3AN • Conectar la placa y alimentarla. • Detectar la placa por el programa de grabado (ISE iMPACT). • Introducción y grabado del código.
Sistemas secuenciales. • A diferencia de los Sistemas combinacionales, en los sistemas secuenciales, los valores de las salidas, en un momento dado no dependen exclusivamente de las entradas. • La mayoría de los sistemas secuenciales están gobernados por señales de reloj.
Gestión de Reloj • Para gestionar el reloj de 50 Mhz que nos proporciona la Espartan-3AN, se utilizará un divisor de frecuencia realizado manualmente y la herramienta de reloj Digital Clock Manager. • Divisor de frecuencia (Manual) • Digital Clock Manager (DCM)
Divisor de frecuencia (Manual) Entradas CLK: Es la entrada de 50MHz disponible en la placa. CD: Reiniciara el contador cuando se active. CE: Habilitara el contador para que pueda incrementar en cada iteración. Salida TC10: Esta salida proporcionara la nueva frecuencia resultante del divisor. IF CE = '1' THEN IF (present_state = "110001") THEN future_state <= "000000“; ELSE future_state <= present_state + 1; END IF; ELSE future_state <= present_state; END IF; TC10 <= '1' WHEN (present_state = "110001" AND CE = '1') ELSE '0';
Divisor de frecuencia (Manual)--Simulación-- Si definimos un periodo de CLK de 1ns el resultado de la simulación es el siguiente.
Digital Clock Manager (DCM) • Es la herramienta de reloj que nos proporciona el fabricante, propiedad intelectual (IP). • Su uso es mediante formularios. • El programa genera automáticamente todo el código necesario para instanciarlo.
Comparación de los sistemas(I) • Para comprobar el funcionamiento se implementa un doble contador. • Cada una de las salidas estará controlada por un sistema diferente a fin de evaluar su comportamiento.
Comparación de los sistemas(II) • Assert o afirmaciones lógicas. Se introducen ciertas afirmaciones en la simulación para poder seguir el correcto funcionamiento de cada proceso. assert “Condición” report "<Texto que queremos mostrar>" severity note/warning/error; Note: Texto simple que notifica del evento. Warning: Muestra un warning dentro de la ventana de compilación. Error: Muestra un error dentro de la ventana de compilación e interrumpe el flujo del programa.
Comparación de los sistemas (III) • En las graficas se pueden observar los retardos que se producen entre un método y otro. • Las salidas de los dos componentes se harán funcionar a la misma frecuencia.
Aplicación: Reloj en tiempo real programable. • El reloj será capaz de mostrar horas, minutos y segundos. • Efectuara las operaciones de parado (CE) o puesta a cero (CD) en un instante determinado y cuenta adelante o atrás (UD_L). • Permitirá aumentar o reducir el valor de horas, minutos o segundos al antojo del usuario (MODE<=>SETE). • Los datos serán visualizados mediante una pantalla LCD integrada en la Spartan-3AN, y cuando el usuario decida modificar un dato este parpadeara para facilitar su uso.
Esquema de control del sistema. • El sistema es regido por un controlador que gestiona el funcionamiento de cada uno de los componentes de la aplicación contenidos en el DATAPATH.
Controlador: Maquina Estados (I) • Consta de 4 estados controlados por un vector de 2 bits. • El estado de reposo hace funcionar al reloj normalmente (Estado: “00”). • Los estados “01”, ”10” y “11” permiten al usuario cambiar la hora modificando segundos, minutos y horas independientemente. • Para pasar de un estado a otro se actúa sobre la entrada SETE y para modificar segundos, minutos y horas dentro de cada estado es mediante la entrada MODE.
Controlador: Maquina Estados(II) • La maquina de estados hace variar el funcionamiento del sistema mediante 4 selectores. • Los selectores actúa sobre los “Countenable” (CE) de los componentes de control temporal. • En los estados de control, la entrada CE de los módulos se gestionan mediante la entrada MODE.
Gestión de Reloj. (I) • Para conseguir las frecuencias deseadas se conectan en cascada los divisores realizados anteriormente.
Gestión de Reloj. (II) • En el diseño se incorpora el componente DCM para hacer el primer salto en frecuencia (50 MHz 10 MHz) • El componente DCM hace un mejor trato de la señal de reloj al implementar en su diseño la corrección de ciclo.
Gestión del tiempo. • Estos tres componentes son los encargados de controlar horas, minutos y segundos.
LCD • El LCD es el encargado de mostrar minutos, segundos y horas por pantalla. • No todos los datos cargados en la pantalla son visibles, por esta razón será necesario tabular los datos para situarlos en la región visible. • Dentro del código original se ha incorporado un proceso de adquisición de datos provenientes de la maquina de estados. begin process begin LCD_CMDS(44) <= entrada5; LCD_CMDS(45) <= entrada6; LCD_CMDS(47) <= entrada3; LCD_CMDS(48) <= entrada4; LCD_CMDS(50) <= entrada1; LCD_CMDS(51) <= entrada2; end process;
Convertidor de 4 bits a ASCII • El periférico LCD necesita los datos a representar en ASCII, pero todas las salidas de información de la maquina de estados son vectores de 4 bits. • Este componente convierte los vectores de 4 bits al formato en ASCCI necesario para el LCD. • El estado 10 (“1010”) codifica un espacio en blanco a fin de ser utilizado por el componente parpadeo.
Parpadeo del número seleccionado. • El parpadeo se produce haciendo oscilar el dato a modificar de su valor real a 10, que corresponde a un espacio dentro del componente convertidor de datos.
Esquema final completo • Este esquema interconecta todos los componentes internos y las salidas y entradas físicas de la aplicación.
RTL del sistema completo • El RTL muestra como el programa a la hora de crear el modelo del circuito sigue el esquema teórico.