You are on page 1of 24

INSTITUTO TECNOLÓGICO DE DURANGO

Práctica #1 - Tutorial Software



TUTORIAL - ALTERA QUARTUS II & MODELSIM-ALTERA

OBJETIVO

El objetivo de esta práctica es dar una guía y demostrar todos los puntos necesarios
para realizar un diseño y una simulación de un sistema digital en lenguaje VHDL, desde la
descarga del software hasta terminar la simulación.

MATERIAL UTILIZADO

• Ordenador corriendo sistema Windows (& conexión a internet)


• Tarjeta de Desarrollo con Dispositivo FPGA de Altera (o dispositivo con
los componentes necesarios para su utilización)

MARCO TEÓRICO / INTRODUCCIÓN

Los dispositivos lógicos programables avanzados


(CPLDs - complex programable logic devices) datan su origen
Diseño Digital con VHDL
de alrededor de los años 80', tomando en cuenta su origen
Ing. Miguel Ángel Esparza Ávila
como idea, y su implementación hasta llegar a ser comerciales.
Los primeros fueron los CPLDs como tal, tenían un parecido a
sus anteriores PAL, con la diferencia que la implementación ya 01 de Septiembre del 2016
no era con redes AND OR y tenían prestaciones como más De la Rosa Flores
tamaño, y más numero de reescrituras, ademas de memorias.
14040953

Los FPGA (Field Programable Gate Array), son el nivel siguiente


en CPLDs, constan de muchísima más densidad lógica, e
implementan fundamentalmente con multiplexores, también se
programa para realizar las conexiones necesarias y crear
hardware lógico.

DE LA ROSA

VHDL

"VHSIC (Very High Speed Integrated Circuit)


Hardware Description Language". Lenguaje
desarrollado para el departamento de defensa
de EUA, pero liberado comercialmente y bajo
n o m b re d e l a I E E E , e s u n l e n g u a j e
Concurrente, con esto queremos decir que no
se ejecuta línea por línea, es un lenguaje que
el compilador tomará todo al mismo tiempo y
traducirá a conexiones reales dentro del
FPGA.

DESARROLLO

1.-Entramos a la pagina de altera por un buscador, y nos dirigimos a la sección descargas

2.-Para facilitar el proceso, entramos a la pestaña 'seleccionar por dispositivo'

2a-Es importante tener a la mano el dispositivo y la serie que utilizaremos

3.-Y en la parte mas baja, seleccionamos la version mas nueva de la 'web version' que es
la version gratis de Quartus.

4.-Una vez descargado nuestro


quartus, en la pestaña 'seleccionar
por software', elegimos nuestro
simulador modelsim version de altera,
que sea compatible con la version de
quartus que desacrgamos, esto es
importante pues la compatibilidad
mutua entre programas y el
dispositivo fisico es critica.

5.-Una vez instalado, y de ser posible sin instalar 'devices' extras no necesarios (para
motivos de ahorrar espacio en disco y aumentar la velocidad de apertura y compilación);
podemos utilizar nuestros dos software para desarrollo de lógica por vhdl.

6.-Procedemos a instalar nuestro


programador usb-blaster de altera (sea
integrado en la tarjeta del fpga o no, es
el mismo dispositivo), para eso
realizamos la conexion, dejamos que el
asistente de hardware nuevo corra, y
procedemos al panel de control...

7.-una vez ahi, elegiremos la categoria 'hardware y sonido' para dirijirnos despues a
'administrador de dispositivos' (es importante entrar en modo administrador); y una vez ahi,
buscamos nuestro usb-blaster, que lo mas probable, tendra un triangulo amarillo indicando
falta de driver, daremos click derecho y 'actualizar software de controlador'; una vez en esa
ventana, daremos 'buscar controladores en el equipo', pues el controlador oficial esta
ubicado localmente, dentro de la instalacion de quartus, navegamos hasta la ruta indicada,
y una vez ahi, daremos siguiente, si nos llega a dar advertencias sobre firmado, las
aceptamos.

7e-si no nos deja proceder por falta de firmas, hay que reiniciar el equipo en modo avanzado, para desactivar la funcion que fuerza
controladores firmados (W8.1 & W10)....

-Damos click en reiniciar con Shift presionado, lo liberamos cuando se reinicie.

-Una vez en la pantalla azul, daremos en opciones avanzadas, luego opciones avanzadas de inicio, y damos en reiniciar si nos
indica que accederemos a opciones como modo seguro, sin red, etc..

-Accedemos una vez reiniciado, a la opción para deshabilitar la utilizacion de controles firmados, con las teclas F#

-Una vez iniciada la sesion en este modo, realizamos el mismo proceso como administrador y seguimos hasta terminar la
instalacion exitosa del controlador del blaster (nos dara una advertencia de que no esta firmado, pero esta vez podremos pasarla por alto
y el driver estara instalado y funcional).

8.-Al entrar a nuestro quartus, seleccionaremos la opcion 'new project wizard' (asistente de nuevo
proyecto)

8a-seleccionamos un directorio de trabajo, recomiendo crear una nueva carpeta para cada
proyecto, asi todos los archivos y compilaciones estaran ordenados en un solo lugar.
IMPORTANTE: el archivo principal del proyecto y su nombre de entidad Top-Level deben tener el
mismo nombre. Si nuestra nueva carpeta no existe damos que Si a crearla.

8b-En nuestra configuracion de


dispositivo a utilizar, seleccionamos
la categoria donde se encuentra
nuestro Device, y en la lista de abajo
seleccionamos cual dispositivo de la
familia estamos utilizando (por eso
es importante notarlo de antemano).

8c-En la siguiente pantalla


c o n fi g u r a m o s c u a l e s
herramientas de apoyo al
diseño utilizaremos, nos
interesa especialmente una,
configurar en el apartado de
'Simulation', el software
ModelSim-Altera (que
previamente instalamos, y
seleccionar la version de
altera pues es distinta a la
normal); luego a la derecha,
elegimos que simularemos
con archivos de VHDL.

8d-Finalizamos la configuracion de nuevo proyecto y podemos


ajustar unos ultimos detalles...

8e-(Podemos utilizar el boton 'usar configuracion d eproyecto


existente' para ahorrarnos seleccionar simulador y dispositivo,
solo cargando un proyecto creado anteriormente, pero hay que
tener cuidado utilizando esta opcion).

8f-Una ves dentro del proyecto nuevo creado, en el menu 'Tools', seleccionamos abajo 'Options'.

8g-Una vez en esa ventana, en la categoria de


'EDA Tools Options' (opciones de herramientas
de diseño EDA del Quartus II [no del proyecto
particularmente...]) nos vamos al simulador
ModelSim-Altera, y procedemos a señalar donde
se encuentra el ejecutable, ponemos la ruta
indicada (o donde se encuentre particularmente
el ejecutable de su modelsim-altera) y
procedemos a dar OK.

8h/8i-Una vez configurado y apuntado la instalacion del ejecutable del simulador al Quartus, damos
click derecho en la entidad de nuestro proyecto a la izquierda y damos click en
'Settings' (configuraciones). Una vez aqui, dentro de la categoria 'EDA Tools...' entramos a
'Simulation'; y aqui configuramos y verificamos que el simulador modelsim-altera va a utilizarse
para el proyecto, y se compilara en VHDL, es importante que las opciones que restan esten
configuradas similares a estas, a menos que se sepa a detalle que se esta modificando, pues son
opciones bastante delicadas y pueden interrumpir facilmente nuestro flujo de trabajo pues son
poco faciles de identificar.

8i1/8i2/8m-Una vez listo nuestro codigo y estructura
deseada a trabajar, comprobamos el codigo con el boton
de Play arriba y ya que no presente ningun error; luego,
procederemos a configurar nuestros pines de entrada y
salida en el dispositivo fpga que estemos utilizando,
entramos arriba al menu 'Assignments' (Asignaciones), y
luego en 'Pin Planner' (planeador de pines); esto nos abrira
una nueva seccion, y aqui podemos observar la
arquitectura de E/S que usa nuestro dispositivo fisico en
particular; abajo en la lista configuraremos, de todas
nuestras señales/nodos, en que pin del dispositivo se
encuentra cada una, nos muestra si son entrada o salida,
en que seccion y lado del dispositivo estan, y los voltajes y
corrientes que manejan. IMPORTANTE: Necesitamos
considerar previamente, y haber analizado bien la ubicacion de cada pin a utilizar, con un datasheet
o disntintos metodos, pues las tarjetas de desarrollo tienen componentes utiles como leds o
interruptores, y si pensamos usarlos debemos poner atencion a este paso.

Luego de haber configurado cada pin necesario, procedemos a compilar con el boton señalado al
lado del play, y esto comenzara la compilacion completa creando configuraciones y diversos
archivos necesarios. Mientras avanza el proceso, checamos en la parte de las tareas que tengamos
nuestras flechitas verdes indicando exito en cada seccion respectiva de la compilacion.

8j/8k-Despues estamos listos para programar, hasta abajo de la lista de tareas tenemos el 'Program
Device' (Programar Dispositivo/Abrir Programador), aqui damos doble click (previamente conectado
nuestro USB-Blaster), y abriremos nuestra ventana del programador, una vez abierta, observe el
boton de 'Hardware Setup' (configuracion de hardware), aqui daremos click para seleccionar
nuestra herramienta programadora a utilizar (nuestro USB Blaster), y en 'Currently Selected
Hardware' (hardware seleccionado actualmente) para poder elegir el blaster, cerramos en Close.

8l-IMPORTANTE: Elegir el modo de JTAG del blaster para programar, y verificar que este utilizando
este puerto en su tarjeta, esto para grabar en la SRAM o memoria del dispositivo, y no en las
EEPROM integradas, pues usualmente tienen un limite de escrituras y son de caracter no volátil, así
que lo grabado en EEPROM se queda como programa permanente en cada inicio/encendido de
nuestro dispositivo fpga.

Verificamos que el archivo a programar sea el *.sof (en modo JTAG) de nuestra entidad principal del
proyecto, y al menos la casilla 'Program/Configure' (Programar/Configurar) este seleccionada
(utilice las casillas que crea que requiere). Si no aparece el nombre de nuestro dispositivo
automaticamente o el archivo, utilice los botones 'auto-detect' (auto-detectar) y/o 'add-file' (añadir
archivo) para preparar la programacion. Cuando este todo listo, presione 'Start' para inciar el
proceso de programacion en su tarjeta del dispositivo y cheque la barra de progreso y demás
dialogos de informacion o errores; una vez terminado exitosamente, puede comenzar a utilizar su
programa.

Decos- observe la posicion de los dip switches representando los habilitadores del
dispositivo y la decodificacion binaria.

SIMULACIÓN
1-Dentro de nuestro software quartus, entremos 'Tools' y de ahi deslizemos sobre 'Run
EDA Simulation Tool' para seleccionar -> 'EDA RTL Simulation'; (puede seleccionar el
'Gate-Level', que es una simulacion aun nivel
mucho mas especifico, pero requiere de un
procedimiento un poco distinto).

2-Esto abrira nuestro software enlazado de


modelsim-altera automaticamente. Aqui, en
nuestra lista de librerias buscamos la
llamada 'work' o 'rtl_work' y la expandimos,
es una libreria temporal creada
automaticamente por el compilador, y se
utiliza para trabajar en simulaciones; una vez
expandida, encontraremos el nombre de
nuestro diseño, y al abrir la entidad, las

aqruitecturas, demos
doble click en la que
queramos simular.

IMPORTANTE: Cheque
el 'Transcript' (log) en la
parte inferior de la
ventana, pues aqui nos
dice linea a linea las
acciones que realiza el
software y es clave para
entender errores de
carga, libreria, o demas.

3-Ya que abrimos la arquitectura deseada, cambiara el Layout (distribucion) de las


secciones para permitir la simulacion; una vez que veamos todas las secciones, prestemos
atención a la ventana 'Object' & a la de 'Wave', object tiene nuestras variables/entradas/
salidas/buffers, wave tiene nuestras ondas y es la ventana que utilizaremos para observar
el comportamiento de la simulacion. Haremos click derecho en 'y' (nuestra salida en la
ventana de object y daremos 'Add->To Wave->Selected Signals' para añadirla al visor
Wave y verla despues.

4/4a-Ahora debemos activar nuestros habilitadores, tenemos dos, uno debe ser '0' y el otro
'1' (g0) para funcionar; en 'g0' damos click derecho y 'Force...' para poder forzarlo a un
valor y que este habilitado nuestro dispositivo para permitir que trabaje en simulacion.
Luego en la pequeña ventanita que aparece cambiaremos el valor de g0, de '0' a '1',
forzandolo a activar el dispositivo (g0=1 & g1=0); damos OK.

5/5a/5b-La siguiente preconfiguracion es la más importante, es aplicar un estimulo a
nuestra señal de entrada, 'a', nuestros 3 bits de entrada del decoder. Damos click derecho
a 'a' y damos 'Create Wave' (crear onda), (observe el g0 ahora en valor 1 en su lista de
objetos). Una vez en la ventanita que apareció de 'Force Wave?, elegiremos en 'Pattern' el
'Counter' pues queremos que sea un contador binario de seleccion, luego ponemos
atención y vemos que en tiempo de finalizado tiene 100ps, puesto que el tiempo de
simulacion por defecto esta establecido en 100ps, dejamos esto así, y damos siguiente.
Ahora vemos arriba (fuera de la ventanita), que nuestro tiempo de simulacion
predeterminado es efectivamente 100ps (estos dispositivos son muy rapidos), ahora
entonces, dentro de la ventanita, configuraremos el 'Time Period' (tiempo que toma cada
periodo del contador), y lo establecemos en 10ps, así, dentro de nuestros 100ps de
simulacion, cada 10ps se hará un conteo más, completando 10 conteos y efectivamente
completando nuestro ciclo de 8 combinaciones de 000 a 111 y con dos conteos de sobra
para observar el ciclado. Hay que poner atención en las configuraciones de 'Counter
Type' (tipo de contador), y 'Count Direction', puesto que queremos un contador binario
( e x i t e n g r a y,
johnson, etc...),
y que avance
hacia arriba
(aumentando
posiciones).
Damos Finalizar
(si requiere
manipular el
resto de las
o p c i o n e s
c o n s u l t e
detalles de su
diseño y
tomelos en
cuenta).

6-Ahora vermos que se agrego la señal del contador de 'a' a la ventana 'Wave', y vemos
que en sus 100ps toma sus 10 valores, cubriendo todas las combinaciones; ahora, vea en
la parte de arriba, al lado de nuestro tiempo de simulacion (100ps), los botones de correr, y
accione el 'Run All' (correr todo) para comenzar la simulacion y que aparezcan los
resultados.

7-Listo!, podemos observar que en nuestra ventana 'Wave' nuestra salida efectivamente
activa cada correspondiente segun la activacion que estimulo nuestra entrada de seleccion
'a' (nuestro contador). Note los valores que han tomado los elementos de su lista 'Object'.

CONCLUSION

Sinceramente pienso que aunque sean las versiones actualizadas, ambos


software podrían fácilmente tener una interfaz más amigable y utilización más
optimizada. Este software nos acompañará por mucho tiempo y esta es una manera
conveniente de aprender a utilizar las funciones básicas.

You might also like