Vous êtes sur la page 1sur 15

UNIVERSIDAD RICARDO PALMA

ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES
Lab 01

USANDO MODELSIM-ALTERA
Logro:

Al término del laboratorio el alumno estará en capacidad de crear y compilar y


realizar las simulaciones del proyecto en ModelSim.

Procedimiento:

Desarrollar el código en VHDL del circuito digital de un NAND, y simularlo en


ModelSim. Existen varios procedimientos para invocar a Modelsim-Altera:

 Desde el icono de Modelsim-Altera del escritorio,


 Desde el QuartusII mismo.

A continuación deberá usar el procedimiento, de llamarlo por el icono que está


en el escritorio.

INVOCANDO MODELSIM ALTERA DESDE EL ICONO

Haciendo clic sobre el icono mencionado, que debe estar en su escritorio, le


aparecerá la siguiente ventana de bienvenida tal como se muestra en la
siguiente figura 1

Figura 1

Dipl., Ing. Gustavo Roselló


UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES
Estará presente por unos segundos y luego se presentara la ventana que se
muestra en la siguiente figura 2

Figura 2

Haga clic en la opción Jumpstart y aparecerá la siguiente ventana de inicio


luego la ventana Welcome to Modelsim (de bienvenida a Modelsim), que se
muestra en la siguiente figura 3. Seleccione la opción en la que se encuentre.

Figura 3

CREANDO UN NUEVO PROYECTO

Si elige la opción Create a Project (crear un proyecto) le aparecerá la siguiente


ventana Create a Project donde puede darle el nombre ANDOS a su nuevo
proyecto y ubicarlo según se muestra en la figura 4.

Dipl., Ing. Gustavo Roselló


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

Figura 4

Otra forma para iniciar un nuevo proyecto, es hacer clic sucesivamente en los
menú desplegable FileNewProject. Tal como lo indica la figura 5

Figura 5

Luego de eso le aparecerá la ventana de Create Project (crear proyecto), que


se muestra en la figura 4. En esa ventana en el casillero Project Name dé el
nombre de su proyecto, cambie el directorio que aparece allí, al directorio que
estaba utilizando en Quartus II, en Project Location (la ubicación del
proyecto), como se muestra en la figura 4. Luego haga clic en OK (Aceptar).
Tras lo cual le aparecerá la ventana Add Items to the project (agregar ítems
al proyecto) que se muestra en la figura 6.

Figura 6 crear nuevo archivo

Haga clic en Create a new File (Crear archivo nuevo), tras lo cual le aparecerá
la ventana que se muestra en la figura 7.

Dipl., Ing. Gustavo Roselló


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

Figura 7

Le genera la ventana que se aprecia en la figura 8 si se mantiene la ventana


pequeña de agregar ítems presione close

Figura 8

Presionar en el icono de andos para editarlo. Escriba el código y cierre.


Presione el icono open file y abra el archivo andos como se muestra en la
ventana de la figura 9.

Dipl., Ing. Gustavo Roselló


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

Figura 9

Escribir en vez de “nandos” el texto “andos” y eliminar el not de la línea 10

Figura 10

Seleccione COMPILE en el menú desplegable y seleccione COMPILE ALL y


debe salirle un visto bueno verde en la ventana de la izquierda según se
muestra en la figura 11

Figura 11

seleccione simulation del menú desplegable y luego seleccione start simulation

Figura 12

Dipl., Ing. Gustavo Roselló


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

Expanda la librería work y seleccione el archivo de interés como se muestra en


la figura 13

Figura 13

Vaya a resolution, expandalo y seleccione ns

Figura 14

Presione OK

Le saldrán las siguientes ventanas que se muestran en la figura

Dipl., Ing. Gustavo Roselló


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

Figura 15

Si no le sale la ventana wave pueda ser que haya salido aparte revise su barra
de escritorio y en la esquina superior derecha de wave presione el icono de
Dock/Undock (acoplar/desacoplar) o si quiere verla aparte desacóplela de la
ventana principal

Al hacerlo se tendrá una mejor visión de ella, tal como se muestra en la figura
16.

Figura 16

Si la Ventana de onda no aparece después de que trató de desacoplarla,


Seleccione View  Wave (Vista  Onda) en la ventana principal de
ModelSim.

Como en este tutorial la simulación se ejecutará para 400 ns; por lo tanto,
seleccione View  Zoom  Zoom Range (Vista  Zoom  rango del Zoom)
tal como se muestra en la figura 17.

Dipl., Ing. Gustavo Roselló


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

Figura 17

En la ventana emergente que aparece Wave Zoom, especifique el rango de 0


a 400 ns. Esto debe producir la imagen en la figura 18.

Figura 18

Para el circuito bajo prueba, se puede hacer una simulación completa


aplicando todas las valoraciones posibles de las señales de entrada A y B y la
salida F. Solo que antes debemos decidir cuál tipo de simulación se realizará y
porqué.

TIPOS DE SIMULACIÓN GRÁFICA

La verificación de un diseño de forma gráfica no es de una sola forma, cuando


los diseños son pequeños, se pueden usar la simulación con formas de ondas,
pero si es grande, existe otra forma que en el tiempo revisaremos. Ahora
ocupémonos de las formas de onda en el tiempo. Se tienen dos formas de
verificación, la funcional y la temporal, pero que son cada una y cuando
conviene realizar cada una de ellas.

En el primer tipo de verificación estudiamos la operación del circuito lógico de


forma independiente a las condiciones que se presentan en función del tiempo;
tal que aspectos como retardo ocasionados por las puertas y otros parámetros
temporales se les considera igual a cero.

La verificación en el tiempo se tienen en consideración la operación lógica del


circuito bajo prueba (CBP) o circuit under test (cut), sean estos solo
combinacionales o secuenciales, así se incluye una estimación de los tiempos
de retardos de las puertas, pues con estos se pueden detectar los hazards, así
como para los circuitos secuenciales setup, hold entre otros para los flip flops.

Dipl., Ing. Gustavo Roselló


UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES
Se recomienda realizar principalmente la funcional primero pues es más rápida,
y al final realizar la temporal, y esta es la ventaja de usar una herramienta que
considere los aspectos temporales del dispositivo sobre el cual vamos a
sintetizar el diseño.

Simulación funcional

La simulación funcional como ya se dijo anteriormente, esta es una simulación


donde los retrasos en la lógica combinacional son nulos, y en la lógica
secuencial mayor que cero, en otras palabras, los tiempos de propagación de
las señales a través de la lógica y retardo en los cables se consideran cero.
Esta forma de simulación es rápida y útil para comprobar el correcto
funcionamiento del circuito diseñado y por tanto solamente se tiene en cuenta
su respuesta funcional. Tal como se puede apreciar en la imagen de señales
en el tiempo de la figura 19, los flancos de la salida son al mismo tiempo que
las de la entrada.

Figura 19 forma de Onda de una simulación funcional donde no se consideran retrasos entre
entradas y salidas

Como nos permitirá solo verificar el comportamiento lógico del diseño y no se


considera retardo de propagación, para poder hacer funcionar la lógica
secuencial es imprescindible dotar a los elementos de memoria con un retardo
no nulo. Es fácil ver que pasaría por ejemplo al simular un registro de
corrimiento, en caso de no proceder así, todos los elementos de memoria
tendrían el mismo valor, afortunadamente la herramienta nos proporciona un
generador que se encarga de este detalle.

Usando la simulación funcional, se puede demostrar que el archivo xxx.vhd


contiene una descripción exacta de VHDL del circuito diseñado. Sin embargo,
esta simulación no comprueba si el circuito implementado en una FPGA es
correcto. Esto es, porque no se usa un circuito sintetizado, colocado y enrutado
como entrada para el simulador. La correcta ejecución, incluyendo las
limitaciones de tiempo puede comprobarse mediante simulación temporal.

SIMULACIÓN TEMPORAL

La simulación temporal es una segunda forma de simulación mejorada, donde


se prueba la funcionalidad de la lógica de un diseño en presencia de retrasos.

Dipl., Ing. Gustavo Roselló


UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES
Son características de sistemas ya sintetizados donde se trabaja con circuitos
descritos con primitivas y asociados a una tecnología de un fabricante. Es
decir, no solo nos permitirá verificar el comportamiento lógico del diseño. Sino
el comportamiento de este en el FPGA, dado que el retardo de propagación
del dispositivo real es incluido. Las primitivas disponen de datos temporales,
dados por el fabricante.
Se puede decir que esta forma de simulación es una más compleja, donde los
cables y componentes de lógica toman algún tiempo para responder a los
estímulos de entrada. Cualquier cambio en el estado de una conexión de la
lógica tomará tanto tiempo como lo haría en un dispositivo real. Esto fuerza a
las entradas de la simulación a ser realista, no sólo en términos de valores de
entrada y la secuencia de entradas, sino también al tiempo cuando se aplican
las entradas al circuito.
Además de probar la operación lógica del circuito, demuestra la sincronización
de señales en el circuito. Siendo más realista que la simulación funcional; sin
embargo, toma más tiempo para llevarla a cabo.

Solo con una simulación de este tipo se manifiestan diversos comportamientos


típicos, como salidas transitorias no deseadas como los hazards (spikes,
glitches), etc. Esto se puede apreciar claramente en la imagen de señales en el
tiempo de la figura 20, donde el pulso delgado que va hacia abajo y se ve en la
señal de salida f que la mayor parte del tiempo es un 1 lógico y así debiera
permanecer, el pulso ocurre justo cuando x2 y x3 cambian simultáneamente y
x1 se mantienen constante en 1 lógico, así como que los flancos de la salida no
se producen al mismo tiempo que las de la entrada que lo generan,

Figura 20 forma de onda resultante después de realizar la verificación temporal

Hay dos tipos de retardos: inerciales y de transporte. Los retardos inerciales


consisten en que el retardo tiene inercia, y esa ha de ser superada para que el
circuito descrito manifieste su valor a la salida. Por ejemplo, si una puerta tiene
un retardo inercial de 20ns y le llega un pulso en una entrada menor que 20ns,
por ejemplo 10ns, este pulso no tendría suficiente tiempo para vencer la
inercia. Este es el retardo por defecto en VHDL.

Dipl., Ing. Gustavo Roselló


UNIVERSIDAD RICARDO PALMA
ESCUELA DE ELECTRÓNICA
LABORATORIO DE SISTEMAS DIGITALES
SIMULACIÓN FUNCIONAL
En una simulación funcional, se simulará su diseño basado en un punto de
vista funcional. En otras palabras, los retrasos a través del sistema no se
tendrán en cuenta.

1. Para realizar una simulación funcional: haga clic en Simulate  Start


Simulation. (Simular  iniciar la simulación), tras lo cual le aparecerá la
ventana que se muestra en la figura 21.
2. En el botón Design seleccione workpc, que es el archivo de diseño.
Seleccione la resolución en ns. Haga clic en OK Aceptar.

Figura 21

3. Deben cargarse dos ventanas de simulación: Object y Wave (ventana


objeto y ventana onda), como se muestra en la figura 22. Si no es así,
siempre puede cargarlos usted mismo haciendo clic en el menú View (Ver)
y optar por ver solo las ventanas correspondientes.

Figura 22

Dipl., Ing. Gustavo Roselló


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

4. Por lo general se desea que aparezcan todas las señales de prueba en la


ventana Wave (de Onda). Para hacerlo:
a. Haga clic en Add  To Wave (Agregar A Onda) Como alternativa,
puede mostrar sólo las señales en la ventana de onda figura 23:

Figura 23

b. en la ventana de objetos, seleccione una de las señales con el ratón,


que se desea controlar y arrástrelos (flecha chica) a la ventana de
onda (otra forma es copiar la señal en Objects e ir a Wave y pegarla),
en este caso presione el botón derecho del ratón y selección add
wave . Repita este procedimiento hasta terminar con todas las
señales, tal como se muestra en la figura 24

Figura 24

ESTIPULANDO LOS ESTIMULOS

Primero se debe dibujar la forma de onda para las entradas. En la ventana


Objects (de objetos), haga clic derecho del ratón en A. A continuación, elegir
Create Wave (crear la onda) del menú desplegable que aparecerá, como se
muestra en la figura 25.

Dipl., Ing. Gustavo Roselló


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

Figura 25

Pueda que le salga el menú que se muestra en la figura entonces seleccionar


Modify apply wave como se muestra en la figura 26

Figura 26

Esto conduce a la ventana Create Pattern Wizard que se muestra en la figura


27, que le permite especificar el valor de la señal seleccionada en un período
de tiempo que debe definirse. Haga clic en Next siguiente.

Figura 27

Elija Clock como el patrón deseado, establece el tiempo Start Time con 0ns y
el End Time con 1000ns como el de finalización. Le saldrá la ventana
sim:/nandos/A<pattern:clock> y seleccione 100ns de periodo Quedando
como se muestra en la figura 28. Haga clic en Finish.

Dipl., Ing. Gustavo Roselló


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

Figura 28

Tras hacer eso la forma de onda para el rango de tiempo de 0 a 100ns para la
señal se ve tal como se muestra en la figura 31.

Figura 31

Repita el procedimiento anterior, Le debe quedar como se muestra en la figura


32.

Figura 32

seleccione run y el periodo de 1000ns y tal como se muestra en la figura 33

Dipl., Ing. Gustavo Roselló


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

Figura 33

Obtendrá el resultado deseado

Tarea:
Realice ahora otro circuito de 4 entradas y dos salidas, simúlelo muéstrelo al docente

Dipl., Ing. Gustavo Roselló

Vous aimerez peut-être aussi