Introduccion A Diseño Con FPGA 2022
Introduccion A Diseño Con FPGA 2022
Introduccion A Diseño Con FPGA 2022
FPGA
JONY CARMONA
ECCI 2022
Que es una FPGA.
Una matriz de puertas programables o FPGA (del inglés field-programmable gate array), es un
dispositivo programable que contiene bloques de lógica cuya interconexión y funcionalidad puede
ser configurada, mediante un lenguaje de descripción especializado(VHDL(basado en ADA),
Verilog (Basado en C), esquemático). La lógica programable puede reproducir desde funciones
tan sencillas como las llevadas a cabo por una compuerta lógica o un sistema
combinacional, hasta complejos sistemas en un chip.
Las interconexiones pueden ser tan simples como una línea de interconexión directa entre dos
bloques o tan compleja como un multiprocesador.
Procesador vs FPGA.
Un procesador es un dispositivo complejo con un conjunto fijo de instrucciones. Cada una de
ellas está asociada a un hardware conectado de forma fija, y el programador no puede usar
más instrucciones que las definidas y configuradas por el fabricante. Por otra parte, la FPGA
no tiene nada conectado de forma fija, sino que está compuesta por una red con
conexiones que el usuario puede unir o romper, y que determinan el comportamiento lógico
del dispositivo a diseñar.
Los lenguajes HDL deben permitir la simulación, cuyos objetivos son: verificar que el diseño es
funcionalmente correcto, es decir, que se cumplan las especificaciones lógicas; y además que
se cumplan las especificaciones temporales; es decir que los tiempos de propagación a través
de las componentes y de los caminos que permiten la interconexión cumplan las
especificaciones de setup(ajuste) y hold(mantener) de los registros, en caso de sistemas
secuenciales sincrónicos.
Que es VHDL.
Con el incremento en el éxito de VHDL, Cadence decidió hacer el lenguaje abierto y disponible para
estandarización. Cadence transfirió Verilog al dominio público a través de Open Verilog International,
Verilog fue después enviado a la IEEE que lo convirtió en el estándar IEEE 1364-1995, habitualmente
referido como Verilog 95.
Extensiones a Verilog 95 fueron enviadas a la IEEE para cubrir las deficiencias que los usuarios habían
encontrado en el estándar original de Verilog. Estas extensiones se volvieron el estándar IEEE 1364-2001
conocido como Verilog 2001.
Verilog existe desde el año 1984, luego de varios años de uso se ha estandarizado y su última versión
es del año 2001. Es un lenguaje similar a pascal y C, y dentro de los HDL, además de las descripciones
abstractas permite representaciones en bajo nivel; es decir puede describir sistemas digitales en base
a compuertas, e incluso en base a transistores.
• Simular tanto en un compilador con simulador como programar un dispositivo que soporte este
tipo de modelos y verificar que su comportamiento real sea igual a que genera la simulación.
• Sintetizar con lo cual se genera un ruteo de como se deberían interconectar los elementos
internos que compondrán el circuito integrado que diseñamos, para posteriormente fabricarlo
físicamente.
Estilos de diseño.
A nivel de diseño se encuentran dos grandes familias:
Diseño semi Custom existen ciertas restricciones al momento de ubicar los componentes y las rutas
de los módulos diseñados, teniendo en cuenta las restricciones mencionadas el diseño semi
custom se puede subdividir en:
• Existen ciertas restricciones al momento de ubicar los componentes y las rutas de los módulos
diseñados
• Se puede asegurar el desempeño de los elementos pues ya los fabricantes en sus diseños y
posteriores fabricaciones aseguraron que el componente presenta el comportamiento
esperado.
Teniendo en cuenta las restricciones mencionadas el diseño semi custom se puede subdividir en:
La placa de desarrollo ALTERA MAX 10 es componente de hardware que permite a los principiantes
adquirir experiencia en la construcción de circuitos digitales reales pues esta diseñada para
comprobar sobre componentes reales el desempeño de el hardware descrito en código usando los
lenguajes de programación propios de este tipo de sistemas.
PERIFERICOS ALTERA MAX 10.
Dispositivo FPGA:
MAX 10 10M50DAF484C7G la programmazione e La Configurazione: On-Board USB Blaster (Normale
Connetor USB tipo B
64 MB SDRAM,
16 bit bus datos
Sensor -> acelerometro
2x20 GPIO Conector (tension de operacion: 3.3 V)
Arduino Uno R3 Connetor,
interruptores/Pulsadores/Led´s/Display 7 segmentos
10 LEDs
10 Interruptores
2 Pulsadores
6 display 7-Segments
Volaje de alimentacion: 5V
Dimensiones:97.5mm * 80mm
ALTERA MAX 10 FAMILIAS.
INSTALANDO EL AMBIENTE DE DESARROLLO.
La compañia fabricante de la FPGA ALTERA MAX10 brinda a los propietarios de este tipo de
tecnologia las herramientas de software necesarias para su programacion, cabe reslatar que el uso
de componentes de este tipo para uso comercial implica el pago de un canon para INTEL, pero
para uso academico se brinda una herramienta ligera gratuita que pérmite a los estudiantes
conocer el entorno.
Quartus prime lite.
Para iniciar descargue e instale la version lite de quartus, esta puede encontrarse en el siguiente
enlace:
https://www.intel.com/content/www/us/en/software-kit/684216/intel-quartus-prime-lite-edition-
design-software-version-21-1-for-windows.html?
Quartus prime lite.
Ahora descargue los archivos adicionales, que permite tener el soporte del IDE descargado
anteriormente para la FPGA a usar:
https://www.intel.com/content/www/us/en/software-kit/684216/intel-quartus-prime-lite-edition-
design-software-version-21-1-for-windows.html?
Quartus prime lite.
https://www.terasic.com.tw/wiki/File:Usb_blaster_q16.1.zip
Quartus prime lite.
Quartus prime lite.
Seleccione la ubicación
deseada para la
instalación, se recomienda
una dirección cercana a la
raíz del disco duro; tenga
presente que en este
mismo folder deberá
instalar todos los aplicativos
que se requieren para
interactuar con la FPGA.
Quartus prime lite.
Quartus prime lite.
NOTAS:
1. NO seleccione la ipcion ModelSim
Intel FPGA Edition, esta no es una
opción gratuita.
2. Si las opciones descritas ya están
seleccionadas de click en
cancelar y luego en la opción yes.
Quartus prime lite.
Quartus prime lite.
NOTA: se recomienda crear un nuevo folder por cada proyecto que se cree.
Quartus prime lite.
Seleccione la ubicación donde almacenara su proyecto y asigne un nombre a
su proyecto, se recomienda que las ubicación del proyecto sea próxima a la raíz
del disco duro para evitar problemas al sintetizar.
NOTA: se recomienda crear un nuevo folder por cada proyecto que se cree.
Quartus prime lite.
Se puede crear un proyecto vacío o tomar archivos ya construidos y que hacen
parte de las herramientas que brinda Intel para el desarrollo de proyectos, pero
si va a trabajar con estos es recomendable que conozca su contenido pues de
no ser así podría tener problemas en el momento de trabajar su proyecto.
Quartus prime lite.
En esta ventana se pueden agregar diseños previamente creados por usted y
que puedan ser útiles para el desarrollo actual, si en el desarrollo de su proyecto
requiere agregar archivos puede hacerlo no es solo en este punto donde se
pueden adicionar.
Quartus prime lite.
Este es un paso clave en el proyecto pues aquí se selecciona la FPGA con la que se
trabajara, para nuestro caso la universidad cuenta con FPGA´s de la familia DE10-Lite
MAX 10 y Cyclone IV, este tutorial esta basado en el uso de la MAX10.
Quartus prime lite.
Si desea agregar otros entornos de diseño EDA que pueda usar quartus para síntesis y
simulación en este punto se puede llevar a cabo de no ser necesario de click en
siguiente.
Quartus prime lite.
Se muestra un resumen de la configuración seleccionada para el proyecto creado,
verifique que los parámetros configurados correspondan a las características requeridas
para su desarrollo y de click en finish.
Quartus prime lite.
Una vez creado su proyecto se mostrara una interface como la de la imagen donde se
vera en el navegador del proyecto el nombre que asigno en la configuración
anteriormente ejecutada.
Quartus prime lite.
Se recomienda hacer un ajuste en el numero de nucleos que usara su computador
para sintetizar el diseño a enviar a la FPGA, pues por defecto solo se usa un nucleo y
cuando los diseños son muy robustos el tiempo de sintonización podría ser muy extenso.
Quartus prime lite.
Una vez creado el proyecto es momento de empezar a desarrollar el contenido del
mismo para ello se tiene 2 opciones .
Quartus prime lite.
En este punto se debe seleccionar el tipo de lenguaje a usar para esta primera fase
usaremos diseños esquemáticos, mas adelante se usara VHDL y/o verilog.
Quartus prime lite.
En esta interface se agregara el diseño esquemático que se va a implementar sobre la
FPGA, ahora antes de iniciar se debe guardar este nuevo documento que hara parte
del proyecto creado.
Quartus prime lite.
Quartus prime lite.
Una vez guardado el nombre del documento creado se mostrara en la interface.
Quartus prime lite.
Para agregar un símbolo a nuestro esquemático se tiene tres opciones
Herramienta de selección
Conduit conexion bus
Asigne los nombres de las conexiones de los leds que se relacionan con las salidas del
contador
Quartus prime lite.
Nota: verifique todos los mensajes generados, si encuentra warnings trate de corregirlos para evitar
problemas con la construcción de su proyecto.
Quartus prime lite.
Si el proyecto no presenta errores es momento de asignar los pines reales de su FPGA al diseño,
para ello puede hacerlo de dos maneras.
Quartus prime lite.
Se abrirá una ventana de este tipo donde aparecerán las entradas y salidas del sistema.
Quartus prime lite.
Si desea agregar el pin planner a la ventana de trabajo puede dar click en el botón attach
window.
Quartus prime lite.
Si desea agregar el pin planner a la ventana de trabajo puede dar click en el botón attach
window.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Pinout DE10-Lite.
Ahora busque la opción análisis & Synthesis que verificara la relación entre su diseño y los pines
asignados en el paso anterior; si todo resulta bien el prtoceso se cargara al 100%.
Implementado sobre la FPGA.
Ahora busque la opción filter (place & router) este verificara todas las rutas de conexión; para un
diseño de un sistema que requiere el uso de un reloj tener rutas de conexión con diferentes
longitudes resulta critico, pues se presentas desfases entre las señales que hacen que el sistema
no sea 100% confiable, esto se ve reflejado en el warning (Critical Warning (332012): Synopsys
Design Constraints File file not found: 'proyectobasico.sdc'. A Synopsys Design Constraints File is
required by the Timing Analyzer to get proper timing constraints. Without it, the Compiler will not
properly optimize the design.)
Implementado sobre la FPGA.
Implementado sobre la FPGA.
Implementado sobre la FPGA.
Para solucionar este problema al usar relojes se debe agregar un nuevo componente al diseño.
Implementado sobre la FPGA.
Una vez creado guarde el archivo con el mismo nombre del proyecto, si usted decide asignar
otro nombre entonces tendrá que ir a ajustes y agregar el archivo SDC (Synopsys Design
Constraints) en el proyecto.
Implementado sobre la FPGA.
Todas las relaciones de tiempo involucran un reloj, por lo cual se agregara un reloj
para hacer análisis comportamental.
Implementado sobre la FPGA.
El nombre del reloj corresponde al mismo nombre del pin de reloj de entrada del
sistema creado al igual que el target.
Implementado sobre la FPGA.
Implementado sobre la FPGA.
Implementado sobre la FPGA.
Doble click en la opción Compile Design para sintetizar el proyecto completo
Presione
autodetect para
verificar el
hardware
conectado
Implementado sobre la FPGA.
Click para
habilitar el botón
change file
Implementado sobre la FPGA.
Click para
habilitar el botón
change file
Implementado sobre la FPGA.
Seleccione el
archivo con
extensión sof y de
click en open
Implementado sobre la FPGA.
Habilite la opción
Program/Configure,
esto habilitara el
botón Start.
Implementado sobre la FPGA.
En este momento el
código esta
corriendo sobre la
FPGA.
Implementado sobre la FPGA.
Al cerrar la ventana
se pregunta si se
desean guardar los
cambios realizados
al proyecto,
presione yes.