La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Autor: Sergio García López Director: Francesc Josep Sánchez i Robert

Presentaciones similares


Presentación del tema: "Autor: Sergio García López Director: Francesc Josep Sánchez i Robert"— Transcripción de la presentación:

1 Autor: Sergio García López Director: Francesc Josep Sánchez i Robert
Introducción al diseño de sistemas digitales reconfigurables en FPGA con VHDL y la tarjeta Spartan-3AN de Xilinx Hola. Soy Sergio García López alumno de Sistema de Telecomunicaciones y les quería presentar mi trabajo de final de carrera. Introducción al diseño de sistemas digitales reconfigurables en FPGA con VHDL y la tarjeta Spartan-3AN de Xilinx. Este trabajo pretende ser una guía practica para que cualquier usuario con unos mínimos conocimientos en el sistema de programación VHDL se capaz de hacer servir el hardware que se le presenta. Autor: Sergio García López Director: Francesc Josep Sánchez i Robert

2 Spartan-3AN Como se puede ver la Spartan-3AN presenta prácticamente la misma conectividad que la placa base de un ordenado, a diferencia claro que es totalmente programable al antojo del uruario.

3 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). La arquitectura se compone de cinco elementos fundamentales, funcionales y programables. Lógica de bloques configurable o Configurable Logic Blocks (CLBs) .  Contienen las tablas de la verdad para configurar la estructura interrna de los flipflops.. Entradas y salidas de los bloques o Input/Output Blocks (IOBs).  Controla el flujo de datos entre los pines, la lógica interna del dispositivo y gestionan la prioridad de señales y estados de los registros RAM.  Este bloque es el encargado del almacenamiento de datos del circuito, en forma de bloques de dos puertos de 18K-bits cada uno de ellos. Multiplicador de bloques.  Multiplica dos números binarios de 18 bits como sumas de ellos para calcular el producto. Control de Reloj o Digital Clock Manager (DCM).  Ofrece una auto calibración del reloj de entrada y diferentes operaciones sobre el mismo, como pueden ser multiplicaciones y divisiones de frecuencia o cambios de fase. Estos elementos están organizados en una doble disposición de salidas que rodea el conjunto.

4 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. Para realizar cualquier diseño se ha de seguir la metodología de trabajo que describe este flujo de trabajo. Primero se ha de decidir que se va ha hacer, que prestaciones tiene que tener. Después ha de crear el código para cada componente y esbozar el sistema de circuito que unirá el conjunto. El siguiente paso lógico es simular el conjunto a nivel teórico para ver si cumple las expectativas, en casa contrario se ha de volver al punto de diseño. Lo ultimo es grabar nuestro diseño en una placa en concreto, planificar la asignación de los pines y comprobar que el diseño sigue funcionando mediante simulaciones temporales, esta vez asumiendo retardos de funcionamiento. Si todo es correcto solo queda hacer el grabado físico de la placa.

5 Sistemas combinacionales.
Son aquellos sistemas en que las salidas dependen exclusivamente de las entradas y su respuesta es constante y deducible matemáticamente. El primer código que se realizara en este tutorial es un sistema combinacional. Estos sistema se caracterizan por que la salidas son fruto de las señales de entrada en cada instante.

6 Uso de los Leeds y los pulsadores.
Se establece una asignación entre los 4 selectores de entrada y 4 leeds de salida. Para explicar todo el proceso desde la creación de una aplicación hasta su grabado definitivo hemos creado una simple asignación de los selectores de entrada con los leeds de salida. En este primer código solo consta la declaración de entradas y salidas y la asignación para la salida de cada leed, esta salida es comparable a unir con un cable pulsadores y leeeds. 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;

7 Archivo DO para simulaciones.
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” restart add wave SW add wave LDR force SW 1011 run 100 force SW 0011 force SW 1100 force SW 1001 force SW 0101 run 200 Para comprobar el correcto funcionamiento del sistema haremos una simple simulación en modelsim creando un archivo .do para simulaciones. En el archivo .do se definen las variables a utilizar a los pasos a simular separados por un tiempo prudencial. Como se puede ver en la simulación los leeds son activos a nivel bajo y por eso salidas van negadas respecto salidas.

8 ISE Project Navigator El programa que no proporciona Xilinx para operar con la Spartan-3AN. Este programa es similar a cualquier programa de windows. Actualmente en la captura esta cargado este primer diseño listo para simular y el desing sumari que nos muestra un resumen detallado de todos los eventos del diseño.

9 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. Ahora es el momento de comprobar que el código que hemos creado y simulado en modelsim también es valido para el programa del fabricante. Por esa razón tras crear un nuevo proyecto e introducir el código se comprobara que no se produzcan errores.

10 Asignación de pines. Archivo .UCF PlanAhead
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 Para asignar los pines que queremos utilizar para definir las salidas y las entradas del diseño. Disponemos de dos opciones, redactar manualmente el archivo UCF de configuración o utilizar la aplicación PlanAhead para introducirlos uno a uno.

11 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 ; El modelo de archivo que nos proporciona la pagina web tiene la forma siguiente. En este archivo consta la localización y la nomenclatura de todas las entradas y salidas de la placa. Para el proyecto, tras editar el documento queda da la forma siguiente. Nombre de la variable y asignación a un ping determinado. 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;

12 PlanAhead La aplicación una vez que la ejecutamos nos muestra todas las entradas y salidas declaradas en el proyecto. Clicando sobre cada una de ellas podremos asignar la localización del ping que queramos, siguiendo también el documento .UCF. Al terminar se tendrá que grabar el proceso y volver a sintetizar el código para que este ahora cree el archivo .ucf descrito. Esta herramienta permite introducir la asignación de pines manualmente uno a uno.

13 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. El desigsumari es una buena forma de comprobar que la asignacion de pines es correcta. Ahora para poder hacer la simulación temporal es necesario ejecutar toda la cadena de creación del programa a grabar para tener todos los achivo necesarios para las simulaciones temporales.

14 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"; SW<="1100"; SW<="1001"; SW<="0101"; wait for 200 ns; wait; end process; Ise proyect navigator ofrece la posibilidad de incorporar al diseño el archivo testbench. Una vez creado el archivo aparecen declarados todos los elementos del diseño e incluso un reloj por si es necesario su uso. Dentro del proceso de simulación definiremos las mismas condiciones de simulación que en el archivo .DO y ejecutaremos la simulación funciona.

15 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. En la simulación funcional haciendo el suficiente zoom podremos ver los retardos que se producen. De lo que cabe destacar que los retardos encontrados en todo el proyecto oscilan de los 5 a los. 8 ns. Los retardos serán una constante durante todo el proyecto que oscilan entre 5 y 8 ns.

16 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. Una vez comprobado que la simulación temporal es correcta se tendrá que conectar y alimentar la placa y grabar el código para ver su funcionamiento real.

17 Sistemas secuenciales.
Para implementar la segunda aplicación realizaremos un sistema secuencia, que se caracteriza por que las entrada no depende exclusivamente de las entradas si no de señales de reloj 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.

18 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) Para gestionar el reloj utilizaremos dos opciones, un divisor de frecuencia hecho a mano y la herramienta de reloj que nos ofrece el fabricante.

19 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; future_state <= present_state; El divisor de frecuencia esta formado por tres entradas y una salida. Las entradas sirven para introducir el reloj a 50 MHz de la placa, reiniciar el contador o parar el contador. La salida nos dará un pulso a la frecuencia deseada. Para controlar la salida de reloj se fuerza la puesta a 1 periodicamente según un numero estipulado de pulsos del reloj de entrada. En nuestro caso inicialmente serán 50 pulsos. TC10 <= '1' WHEN (present_state = "110001" AND CE = '1') ELSE '0';

20 Divisor de frecuencia (Manual) --Simulación--
Si definimos un periodo de CLK de 1ns el resultado de la simulación es el siguiente. Si simulamos el componente también utilizando el archivo testbench y definimos el reloj que no crea automáticamente con un periodo podemos ver que la división es perfecta.

21 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. La implementación del componente es mucho mas sencilla, es toda mediante formularios. Y una vez terminado el proceso de descripción del componente decidiendo que frecuencias necesitas a su salida, el programa ofrece todo el código para instanciarlo de forma automática.

22 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. Para comprobar el comportamiento de los dos métodos los haremos aumentar el valor de un contador a cada uno a fin de evaluar retardos El esquema que utilizaremos para evaluarlos es el siguiente.

23 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; Como estos sistemas son prácticamente autonomos utilizaremos los assert’s o afirmaciones lógicas para obtener información de si los componentes funcionan correctamente. El assert se muestra como se puede ver en el trozo de grafica de simulación que se muestra. Si no se cumple la condicion descrita muestra el tipo de aviso seleccionado. 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.

24 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. La comparación de los sistemas haciéndolos funcionar a la misma frecuencia muestra que como era previsible la herramienta de reloj del fabricante ofrece menos retardos como se aprecia en las graficas.

25 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. Una vez que se conoce la manera de crear y grabar un código y gestionar el reloj de entrada se pondrá en practica estos conocimiento para crear un reloj en tiempo real. Este será capaz de contar adelante, atrás, pararse en un momento determinado y reiniciarse. Además estará gobernado por una maquina de control que ofrecerá la posibilidad de ponerlo en hora.

26 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. Como en el diagrama de flujo de diseño, para crear una aplicación compleja se ha de siguir la estructura que se muestra. Se tendrá que decidir que parte del código hace las funciones de controlados y cual de datapath. El controlador da las ordenes y los componente del datapath las obedecen.

27 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. La maquina de estados hará la función de controlador en el proyecto. La maquina de estados controla todos los procesos mediante un vector de 2 bits y un case de 4 estados. Para pasar de un estado a otro se utiliza la entrada SETE, y para modificar el dato del estado en que nos encontramos utilizamos la entrada mode. El estado 00 es el estado de reposo y los estados corresponden a segundos, minutos y horas respectivamente. El funcionamiento de los estados 123 vendra condicionada por la posicion del selecctor UD_L que hara que cuando pulsemos MODE el valor incremente o decremente su valor.

28 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. La maquina de estados hace modificar el comportamiento del sistema del estado de reposo al de control interactuando con 4 selectores.

29 Gestión de Reloj. (I) Para conseguir las frecuencias deseadas se conectan en cascada los divisores realizados anteriormente. Para conseguir las frecuencias necesarias para el proyecto, interconectamos en cascada los divisores de frecuencia descritos anteriormente para conseguir una frecuencia útil en cada iteración.

30 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. El componente DCM recompone mejor la señal de salida y es por esa razón que se utiliza este componente para realizar el primer salto en frecuencia. En la figura se puede ver el pulso que genera el divisor de frecuencia y como reconstruye la señal del componente DCM gracias a la correccion de ciclo.

31 Gestión del tiempo. Estos tres componentes son los encargados de controlar horas, minutos y segundos. Los componoentes que controlan la gestion de horas, minutos y segundos ofrecen el comportamiento mostrado en la graficas. Cuando el componente de segundos llega a 59 activa la salida TC60 que hace incrementar el valor de minutos y este a su vez de igual modo hace incrementar el valor de horas.

32 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. La visualización de los datos se realiza mediante la pantalla LCD. El programa reciclado para mostrar los datos permitía cargar mas datos de los que el monitor TFC era capaz de mostrar, por esa razón se ha recolocado la información útil en el margen visible mediante espacios. Además se ha añadido un proceso que permite renovar la parrilla de datos mostrar a fin de mostrar el dato correcto en cada momentos 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;

33 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. La gestión de todos los datos del proyecto se hace mediante vectores de 4 bits, y el LCD necesita a su entrada el valor necesario en ASCII. Se ha diseñado un convertidor que funciona con un case de 11 estados, los 10 primeros codifican todos los valores numéricos útiles y el 11 codifica un espacio en blanco a fin de proporcional la función de parpadeo. El estado 10 (“1010”) codifica un espacio en blanco a fin de ser utilizado por el componente parpadeo.

34 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. Esta función hace parpadear el valor seleccionado dentro de los estados de control a fin de facilitar el uso del usuario. Esto se consigue haciendo variar el valor del numero de su valor real a 10 que codifica un espacio en blanco dentro del case del convertidor.

35 Esquema final completo
Este esquema interconecta todos los componentes internos y las salidas y entradas físicas de la aplicación.

36 RTL del sistema completo
El RTL muestra como el programa a la hora de crear el modelo del circuito sigue el esquema teórico.

37 Comprobación de la aplicación

38 Preguntas.


Descargar ppt "Autor: Sergio García López Director: Francesc Josep Sánchez i Robert"

Presentaciones similares


Anuncios Google