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).
2
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. 3
Sistemas combinacionales.
Son aquellos sistemas en que las salidas dependen exclusivamente de las entradas y su respuesta es constante y deducible matemáticamente. 4
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); end Behavioral; 5
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. Add wave” 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”
6
ISE Project Navigator 7
Escritura y Sí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. 8
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 9
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; 10
PlanAhead Esta herramienta permite introducir la asignación de pines manualmente uno a uno. 11
Comprobación de la asignación de pines y sintetizado. Un método para comprobar la asignación es mediante el Design Summary. 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.
12
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; end process; 13
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. 14
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.
15
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. 16
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) 17
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'; 18
Divisor de frecuencia (Manual)–Simulación– Si definimos un periodo de CLK de 1ns el resultado de la simulación es el siguiente.
19
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. 20
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. 21
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. 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. assert “Condición” report "" severity note/warning/error; 22
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. 23
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.
24
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. 25
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.
26
Controlador: Maquina Estados(II) La maquina de estados hace variar el funcionamiento del sistema mediante 4 selectores. Los selectores actúa sobre los “Count enable” (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. 27
Gestión de Reloj. (I) Para conseguir las frecuencias deseadas se conectan en cascada los divisores realizados anteriormente. 28
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. 29
Gestión del tiempo. Estos tres componentes son los encargados de controlar horas, minutos y segundos. 30
Página siguiente |