Vous êtes sur la page 1sur 23

UNIVERSIDAD RICARDO PALMA

ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

DEL QUARTUS AL MODELSIM


Objetivo:

Manejar y diseñar circuitos digitales esquemáticos y textuales en QUARTUS y usar


ModelSim solo como visor de los cronogramas
Logro:

Al finalizar este laboratorio el estudiante estará en capacidad de usar QUARTUS como


herramienta CAD para crear proyectos y editar circuitos lógicos simples en
esquemáticos y códigos VHDL, luego compilarlos y simularlos para comprobar su
correcto funcionamiento.

Introducción:

El QUARTUS de Intel agrupa un conjunto de herramientas para realizar el diseño de


sistemas digitales sobre dispositivos FPGA y CPLD de Intel.
El QUARTUS permite el ingreso de diversas formas de diseño, síntesis y simulación
lógica, conexionado, análisis temporal y gestión de la potencia de los diseños y la
programación de sus dispositivos integrados FPGA y CPLD.
Puede consultar en el URL www.intel.com/content/www/us/en/fpga/solutions.html
para conocer más sobre esta herramienta, dispositivos y recursos. En esa web pueden
bajar la última versión de este CAD, entre otros recursos más, de forma gratuita, con
algunas pequeñas limitaciones pero que para nuestro caso no serán críticas, pero
deberán inscribirse previamente, ¡atención! las diferentes versiones trabajan con
diferentes familias de integrados, por eso se le recomienda la que le indique el docente

1
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

CREANDO UN PROYECTO EN QUARTUS


Una vez que inicie la edición web del QUARTUS. Primero debe crear un nuevo
proyecto seleccionando al asistente de proyecto de la pantalla de bienvenida:

En la página de introducción, haga clic en siguiente.

1. Empiece creando un nuevo nombre de directorio y proyecto, tal como se


muestra en la figura 1. Guárdelo en un lugar que se pueda acceder
fácilmente (por ejemplo, D:/Curso/lab_logica). En nombre de proyecto
ponga lab_logica.

Figura 1

2. Haga clic en siguiente. Le saldrá una ventana, ver fig 2, que le dice que el
directorio no existe y si lo quiere crear, acepte.

Figura 2

3. En la siguiente página, normalmente añadiría archivos de diseño para su


proyecto, si este es su primer laboratorio, no tiene nada para importar, tan
sólo haga clic en siguiente.

4. En el paso de configuración de la familia y del dispositivo, seleccione el


dispositivo que va a usar en esta asignatura, Family: Cyclone II, en la sub
ventana Target device marcar Specific device selected in ‘Available
devices’ list en Available devices: seleccionar el dispositivo
EP2C35F672C6, usando la barra de desplazamiento vertical, que está a
la derecha, según se muestra en la figura 3, luego haga clic en siguiente.

2
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Figura 3. Selección de la familia y del dispositivo a usar en el proyecto

5. Otra forma de acceder es que luego de seleccionar la familia, en


Package seleccione FBGA, en
Pin_count seleccione 672, en
Speed_grade seleccione 6
y le quedaran 3 dispositivos en Available devices seleccione el primero
que es el EP2C35F672C6.

6. En la ventana 4 de 5, EDA Tool Settings (opciones de la herramienta de


EDA), seleccione en la columna Tool Name a la altura de Simulation por
medio del menú desplegable ModelSim-Altera, tal como aparece en la
figura 4:

Figura 4 seleccionando la herramienta EDA de simulación a usar en el proyecto

Le debe quedar como se muestra en la figura 5 donde se aprecia la página [4 de


5] de configuración de la herramienta EDA y haga clic en siguiente

3
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Figura 5 configurando el lenguaje HDL a usar en ModelSim-Atera

7. En la página [5 de 5] de resumen (Summary), de configuración de la


herramienta EDA, que se muestra en la figura 6, haga clic en el botón
Finish.

Figura 6 resumen de la configuración

A continuación en la figura 7, se le muestra el circuito “labocomb” que se trabajará a


continuación, solo en el código VHDL, usando la descripción funcional mediante
operadores lógicos:

4
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

--*************************************
-- diseñador: Elen Tito
-- Entidad: Universidad Ricardo Palma
-- Facultad: Ingeniería, Escuela de Electrónica
--Descripcion: Implementación de un circuito simple en VHDL,
-- Nombre del archivo: labocomb.vhd
--************************************************
Library ieee;
Use ieee.std_logic_1164.all;
Use ieee.numeric_std.all;

Entity labocomb is
Port (E1, E2, E3: in std_logic;
G: out std_logic );
End labocomb;

Architecture func of labocomb is


Begin

G<= ((not E2) and E3) or (E1 and E2);

End func;
--*************************************************
Figura7 código VHDL del circuito labocomb

Copie el archivo VHDL en QUARTUS, guardelo y compilelo.debe quedarle


coloreado como en la figura 8:

Figura 8

Las líneas verdes, son comentarios, las palabras azules son palabras reservadas
para el compilador, y las palabras rojas son las funciones que usamos.

5
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Guarde el archivo con FileSave as.. y escriba el nombre de la entity (ver flecha
en la figura 8) que es labocomb en la ventana guardar como y de guardar
En la ventana Project navigator (a la izquierda de su pantalla)seleccione la
pestaña Files con ello debe ver al archivo labocomb.vhd selecciónelo y con el
botón del mouse le aparecerá una ventana seleccione Set as a Top-level Entity
ver figura a continuación. Lo cual le hará líder del proyecto, y la podrá compilar.

COMPILACIÓN DEL DISEÑO EN QUARTUS II


Una vez que se tienen todos los archivos de diseño, usted está listo para
compilarlos:

1. En el menú principal, seleccione: Processing  Start Compilation


(procesamiento  inicie la compilación). Tal como se muestra en la figura
9

Figura 9

2. La ventana de mensaje que se presenta en la figura 10 mostrará el estado


de la compilación, y también se mostrará una ventana de informe de
compilación. Si el diseño se compila con éxito, puede cerrar el informe.

Figura 10

6
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

CONFIGURACIÓN DEL CAMINO PARA LA


EJECUCIÓN DEL SIMULADOR EDA
Para ejecutar un simulador EDA, que en el caso de este tutorial es el ModelSim,
de forma automática desde el software QUARTUS, es mediante la función
NativeLink, se debe especificar la ruta a la herramienta de simulación realizando
los siguientes pasos:

1. En el menú Tools (Herramientas), haga clic en Options (opciones). Le


aparecerá la ventana de diálogo Options (Opciones) que se muestra en
la figura 11.

Figura 11

2. En la lista, Category (categoría), bajo la categoría General, seleccione


EDA Tool Options (Opciones de herramientas EDA) tras lo cual
aparecerá la siguiente figura 12.

Figura 12

7
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

3. En la ventana de opciones En la entrada del ModelSim, la ubicación del


ejecutable debe ser algo como la siguiente expresión:
“c:\altera\12.1\modelsim_ase\win32aloem", si no aparece entonces con
hacer clic en el botón […] de buscar carpeta, le aparecerá la ventana que
se muestra en la figura 13, ubique el ejecutable de ModelSim.
4.

Figura 13

5. Paso a paso vaya al directorio que contiene el ejecutable del simulador


ModelSim. recuerde "c:\altera\12.1\modelsim_ase\win32aloem". Lo
vera como se muestra en la figura 14.

figura 14

6. Haga clic en Aceptar.

8
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

QUE ES UN BANCO DE PRUEBA O


TEST BENCH

Figura 15

Los fabricantes de FPGA han modificado su EDA para dejar de producir las
formas de onda directamente como modo de prueba del diseño esquemático,
pasando a realizar la simulación a partir de la versión HDL desde lo que se llama
tesbench.

Para generar un testbench es necesario:


 conocer el Seteo de escala de tiempo
 darle un nombre de la entidad del testbench
 declarar los cables y registros
 instanciar el testbench a lo más alto de la jerarquía
 crear patrones de señal de entrada
 crear un código de verificación

El VHDL permite mayor nivel de abstracción en la simulación, que con la síntesis.


Es posible por lo tanto modelar el comportamiento de dispositivos sin que ellos
sean luego sintetizados. Por ejemplo se puede simular un procesador
especializado, donde se puede describir el comportamiento de un dispositivo
especial, aunque ésta no sea luego físicamente sintetizado.

9
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Con el VHDL, no sólo es posible modelar el hardware o el diseño del sistema


digital de interés, sino también un banco de pruebas para aplicar el estímulo para
el diseño y para analizar los resultados o comparar los resultados de dos
simulaciones del modelo. En efecto, VHDL puede utilizarse como un lenguaje de
definición de estímulo, y no solo como un lenguaje de Descripción de hardware,
como se le ha visto antes.

Al ser VHDL un lenguaje portable es posible trabajar con simuladores de distintas


empresas. Así al usar el VHDL, para modelar un banco de prueba se tiene la
ventaja que ese banco de prueba es portable entre las diferentes herramientas
VHDL de los diferentes compañías que los venden.

Un banco de pruebas tiene una entidad sin puertos, una caja sin señales de
conexión exterior, es decir está vacía, esto es porque el banco de prueba mismo
no tiene entradas ni salidas. Su estructura contiene un componente que
corresponde al circuito que se desea simular. Así mismo contiene la alteración
de todas las señales de entrada, que llamaremos estímulos o vectores de
prueba, del componente, para poder abarcar un mayor número de casos de
prueba. Los vectores de prueba se generan y se aplican al dispositivo bajo
prueba en el Banco de pruebas. Tenga en cuenta que es ilegal tener un cuerpo
de arquitectura sin una declaración de la entidad.
El test-bench es un tipo de descripción entre la estructural y la comportamental.
Se utiliza para comprobar el correcto funcionamiento de los modelos mediante
un programa independiente de la plataforma de compilación-simulación.
La arquitectura cuenta con una instancia del modelo bajo test y un proceso que
le inyecta señales. Las señales de entrada adoptarán los valores que se requiera
en el instante de tiempo preciso para comprobar el correcto funcionamiento del
modelo.

Componentes

Se necesita realizar una declaración de componente, para enlazar a la entidad


XXX en el Banco de pruebas. Lo cual permite realizar una descripción estructural
en VHDL, así el compilador VHDL puede comprobar la consistencia de la unidad
de diseño que utiliza el componente antes de que la entidad correspondiente de
diseño se haya escrito. Para que el simulador VHDL pueda enlazar a la entidad
de diseño XXX con el componente XXX, los nombres y tipos de los puertos
deben coincidir entre la entidad y el componente.

Cuando se simula un test-bench se obtiene un cronograma de respuesta a las


señales de entrada que previamente programamos en el proceso.

Proceso Entidad bajo


test

Figura 16. Esquema de test-bench.

10
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

GENERANDO EL BANCO DE PRUEBAS


Pero para simular el archivo aun es necesario crear otro archivo, se le llama test bench
o banco de prueba, afortunadamente el QUARTUS lo genera automáticamente, para
ello del menú desplegable seleccione:

PROCESSING START  START TESTBENCH TEMPLATE WRITER.

Tal como se muestra en la figura 17

Figura 17

Luego de crear el archivo, este se guardara en el directorio modelsim que está dentro
del directorio simulation tendrá el mismo nombre pero con otra extensión de archivo,
labocomb.vht, ábralo con open file y cambie el tipo de archivo por el de test bench
output files (*.vht*.vt), para que se visualice el archivo deseado tal como se muestra
en la figura 18.

11
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Figura 18

El archivo debe ser como el que se muestra en la figura 19,

Seleccione el archivo y observe que la entidad es labocomb_vhd_tst , contiene las


declaraciones de señales, el componente y el mapeo después crea dos procesos init y
always, enmarcados en un rectángulo grande, en el primero se editan estímulos que
proporcionan los valores iniciales del circuito y en el otro los que siempre se ejecutan.
No es necesario mantener esos procesos y puede si quiere solo tener un solo proceso.

12
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Figura 19

Guarde el archivo con el mismo nombre borrando vhd_tst reemplazandolo con _tb y
cambiar la extensión vht por la extensión .vhd. Tal como se muestra en la ventana de
la figura 20. No se olvide que es importante que reemplace las expresiones
enmarcadas en un rectangulo delgado en la figura 19, cambiar el termino vhd_tst con
_tb, sino no va funcionar su simulación.

Figura 20

13
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

En la siguiente figura se observa en la ventana project navigator que se agrego el


archivo de prueba testbench

FORMANDO LOS ESTIMULOS O VECTORES DE PRUEBA

Agregarle según el ejemplo dado en la sección GENERANDO los ESTÍMULOS PARA


EL BANCO DE PRUEBA (pag.21) y adaptando las expresiones a las señales
cambiando las variables por las que nos interesan. Escriba cada señal en un process,
debe tener 3 process en este caso. Luego de terminar podrá usarlo como patrón de
estímulos del circuito y así poder ver luego las formas de ondas directamente.

Como se eliminó los process que se generaron con el test bench (líneas 56 a 61 de la
fig. 19). Luego copie la primera expresión del apartado A, al final de esta guía (PARA
GENERAR CLK) desde process hasta end process; y agréguele en donde estaban los
process que elimino, tal como se muestra en la siguiente figura 21

Figura 21

luego reemplace dentro de ella clk por E1, tal como se muestra en la siguiente figura

14
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Para luego poder usarlo como patrón de estímulos de las señales restantes y así ver
luego las formas de ondas directamente. Repita el proceso para E2 y luego para E3

Para el caso que nos interesa, declararemos las señales E1; E2 y E3 como el estímulo
de reloj, pero cada una con la mitad de periodo que el anterior en otras palabras 100ns,
50ns y 25ns para el wait for, con objeto de mantenerse dentro del tiempo de 1000ns.

Ahora se deben especificar los archivos involucrados y su relacion para que se puedan
simular previa compilacion del testbench.

15
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Para ello debe hacer start start analysis & elaboration para verificar que esta todo
bien.
En la siguiente figura se muestra como

Luego desde assigmentsettings tal como se muestra en la figura 22.


tendrá:

Fig.22

Aparecera la ventana seleccione simulation y vaya a compile test bench… tal como
se muestra en la figura 23.

Fig.23

Luego presione el icono de Test Benches… de la derecha y verá la ventana tal como
se muestra en la figura 24.

16
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Fig.24

Presione NEW… y vera la ventana tal como se muestra en la figura 25.

Fig.25

Presione en el icono “…” y busque el archivo testbench creado y luego llene las
ventanillas hasta que quede como la muestra de la figura 26

Fig.26

17
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Presione ok y tendrá la ventana Test Benches modificada tal como se muestra en la


figura 27.

Fig.27

Debe quedarle asi.


Presione ok y la ventana simulation debe quedarle asi tal como se muestra en la figura
28:

Fig.28

Presione apply, luego ok. Una vez hecho esto, del menú desplegable PROCESS,
seleccione en secuencia PROCESS START START ANALISYS AND
ELABORATE, tal como se muestra en la figura 21.
Luego llame al ModelSim seleccionando en el menu desplegable TOOLRUN
SIMULATION TOOL RTL SIMULATION tal como se muestra en la figura 29.

Figura 29

Le debe llamar automaticamente al modelsim y aparecer las señales de simulacion en


forma de ondas de tiempo como se desea.

Aquí se ha cambiado los colores de la ventana wave

18
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

DESDE UN CIRCUITO ESQUEMÁTICO A


MODELSIM
Para esto cree un nuevo archivo pero BDF en el mismo proyecto con el nombre
de su elección y realice el circuito esquemático mostrado en la figura 30

Figura 30
Guarde el archivo y seteelo como líder del proyecto para luego compilarlo

Una vez compilado, pasamos al siguiente paso, que es obligatorio.

GENERANDO EL ARCHIVO VHDL


Empezado el diseño con el esquemático de la figura anterior. Para simularlo en
MODELSIM requerimos tener un archivo en VHDL y no esquemático por ello se
le debe convertir en VHDL, una vez compilado el diseño. Seleccione en el menú
desplegable FILE CRÉATE /UPDATE CRÉATE HDL DESIGN FILE FROM
CURRENT FILE, tal como se muestra en la figura 31

19
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

Figura 31

Le aparecerá la siguiente ventana donde debe marcar el lenguaje HDL de diseño a usar
según se muestra en la figura 32

Figura 32

Luego de crearlo el archivo, este tendrá el mismo nombre, (a la hora de compilarlo solo
uno de ellos debe estar en el file de proyector), ábralo con open file tal como se muestra
en la figura 33

20
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES
Figura 33

Debe salirle el texto como el que se muestra en la figura 34

Figura 34

Observe que es un archivo tipo estructural, donde los cables de conexión son
declarados como SIGNAL SYNTHESIZED_WIRE_0: STD_LOGIC; etc. Y así completa
las conexiones.
Del menú desplegable PROJECT incluya al archivo easy.vhd en el presente proyecto
luego hágalo top level entity, con ello lo convierte en el archivo principal y compílelo
pero antes con el botón derecho del ratón presione en easy.bdf y remueva el archivo.

Luego cree un test bench a partir de él, para ello retome los pasos desde la página 11
fig. 17 hasta la página 15 fig. 2y realice la simulación en el ModelSim y muéstreselo al
docente. Puede usar los estímulos del archivolabocom_tb.

21
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

APARTADO A
GENERANDO LOS ESTÍMULOS PARA EL BANCO
DE PRUEBA
1. PARA GENERAR CLK: Se muestran dos formas para generar la señal de reloj, la
primera es por un tiempo de 1 us y la segunda es por duración indefinida, ambas a
una frecuencia de 5MHz o un periodo de 200ns, con un duty cycle = 50 %:

1. a. usando for loop para especificar duración.

--genero la señal de reloj por 1 us


Process
Begin
clk <= '0' ; wait for 100 ns; -- hace ‘0’ al inicio por 100 ns

For Z in 1 to 4 loop --se repite (100+100) 4 = 800ns


clk <= '1' ; wait for 100 ns ; -- vale 1 por 100 ns
clk <= '0' ; wait for 100 ns ; -- vale 0 por 100 ns
end loop; --repite patron dentro del loop.
-- hasta aquí pasaron 900 ns,

clk <= '1' ; wait for 100 ns ; -- valor 1 al final y se completa los 1000 ns = 1us
wait; -- se pone si no se pudo completar con lo de arriba
End Process;

1. b forma simple y de duración indefinida.

-- para este process, debe agregar lo que esta en azul como valor inicial en signal clk: std_logic:= ‘0’;
Process
Begin
clk <= not clk; wait for 100 ns ; -- cambia de valor cada 100 ns
End Process;

A la hora de simularlo le producirá:

2. Para declarar una señal de un bitio “RST” activa en uno, durante 4 ns, luego se
inactiva durante el resto de tiempo que dure la simulación.

Process
Begin
rst <= '0' ; wait for 4 ns ;
rst <= '1' ; wait for 4 ns ;
rst <= '0' ; wait ;

End Process;

A la hora de simularlo le producirá:

22
UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES

3. Para declarar un vector de N bits como un patrón constante durante ciertos


instantes de tiempo totalizando un tiempo de simulación de 1 us:

-- un vector con 9 valores constantes de 32 bitios


Process
Begin
pc_in <= "00000000000000000000000000000000”; --X”00000000”=0
wait for 100 ns ;
pc_in <= "00000000000000000000000000000100”;--X”00000004”=4
wait for 100 ns ;
pc_in <= "00000000000000000000000000001000”;--X”00000008”=8
wait for 100 ns ;
pc_in <= "00000000000000000000000000001100”;--X”0000000C”=12
wait for 100 ns ;
pc_in <= "00000000000000000000000000010000”;--X”00000010”=16
wait for 100 ns ;
pc_in <= "00000000000000000000000000010100”;--X”00000014”=20
wait for 100 ns ;
pc_in <= "00000000000000000000000000010100”;--X”00000018”=24
wait for 100 ns ;
pc_in <= "00000000000000000000000000011100”;--X”0000001C”=28
wait for 100 ns ;
pc_in <= "00000000000000000000000000100000”;--X”00000020”=32
wait for 100 ns ;
wait; -- dumped values till 1 us
End Process;

A la hora de simularlo le producirá:

23

Vous aimerez peut-être aussi