Professional Documents
Culture Documents
SISTEMAS DIGITALES I
1
QII responde con la siguiente ventana
SISTEMAS DIGITALES I
2
Escriba el nombre del directorio de trabajo: F:\DIGITAL\QII13\CAP3\EJEMPLO1CV
Escriba el nombre del proyecto: EJEMPLO1CV puede ser el mismo que el del directorio.
Quartus II sugiere automáticamente que el nombre EJEMPLO1CV sea también el
nombre de la entidad de diseño de mayor nivel del proyecto
Haga clic en Next.
SISTEMAS DIGITALES I
3
QII responde con la ventana que archivos existentes (si los hay) deben incluirse en el
proyecto.
No tenemos archivos existentes, haga clic en Next.
QII responde con ventana para especificar el tipo de dispositivo en el que se implementara
el circuito diseñado.
Elija la familia Cyclone II
Seleccionar de la lista disponible resaltando EP2C35F672C6.
Presione Next
QII responde con ventana: con un resumen de los ajustes realizados. Presione Finish
F=BCD+ABCD+ A+B CD ( )
El circuito requerido es descrito por el código
ENTITY EJEMPLO1CV IS
PORT (A, B, C, D : IN BIT;
F : OUT BIT);
END EJEMPLO1CV;
SISTEMAS DIGITALES I
6
Uso del Editor de Texto de Quartus II
Quartus II ofrece un editor de texto que puede utilizarse para escribir código VHDL.
Seleccione File>New
SISTEMAS DIGITALES I
7
QII responde abriendo la ventana del editor de texto (Text Editor).
SISTEMAS DIGITALES I
8
Luego se debe guardar el programa escrito en VHDL, para esto en
Elija File>Save As
Ventana de ajuste.
QII responde con ventana hacer click en el ítem Files y luego en File Name seleccionar o
escribir el nombre del proyecto.
Resaltar el archivo EJEMPLO1CV
Elegir la casilla Add File al presente proyecto
Click en OK
Seleccionando el archivo.
SISTEMAS DIGITALES I
10
Compilando el Circuito Diseñado
SISTEMAS DIGITALES I
11
La compilación satisfactoria (o insatisfactoria) se indica en un cuadro de aparición instantánea.
Responda haciendo clic en OK y revise el informe de compilación mostrado
Si el informe aún no está abierto, puede abrirlo mediante un clic en el icono Report en la ventana
Compiler Tool, o usando el icono o eligiendo Processing>Compilation Report). El resumen del
informe muestra que nuestro diseño solo empleara 5 pines y un elemento lógico en un FPGA de
Cyclone, el informe de compilación indica que no hay errores ni advertencias, Por ejemplo, es
posible ver las expresiones lógicas sintetizadas haciendo clic en el pequeño símbolo al lado de
Analysis & Síntesis clic
SISTEMAS DIGITALES I
12
Si la ecuación no es visible se debe seleccionar Tools>Options>Genera>Processing
QII responde:
luego eligiendo Analysis & Síntesis Equations.
QII responde:
La ecuación que Quartus II utiliza para implementar nuestro circuito es:
A1L6 = (D & ((A & (B)) # (!A & ((!C))))) # (!D & (B & ((!C))));
Reescribimos la ecuación resulta:
F=ABD+AC+BCD
SISTEMAS DIGITALES I
13
Errores
Quartus II muestra mensajes producidos durante la compilación en la ventana Messages.
Si el diseño de VHDL es correcto, uno de los mensajes informara que la compilación fue
satisfactoria y que no hay errores o advertencias.
Para ver qué sucede si se comete un error, elimine en el código de VHDL la entrada A y
compile el código VHDL modificado. La compilación no será satisfactoria y se mostraran
dos mensajes de error. Clik en OK
SISTEMAS DIGITALES I
14
El primero indica al diseñador que la entrada afectada no encuentra una fuente
Quartus II brinda ayuda, si el usuario hace doble clic en el mensaje de error, la ubicación
correspondiente se resaltará. Vuelva a escribir el código de VHDL la entrada A eliminado y
recompile el código corregido.
SISTEMAS DIGITALES I
15
Asignando los Pines
La implementación física del diseño en un dispositivo FPGA específico, requiere:
Detallar cómo elegir manualmente que pines de un FPGA se utilizan para las señales de
entrada y de salida.
Describimos cómo utilizar el módulo Programamer de Quartus II para transferir el proyecto
compilado al FPGA elegido.
La asignación de señales para los pines del dispositivo, la realiza el compilador (Compiler):
En forma automática o manualmente con el auxilio del compilador (Compiler). Por ejemplo,
la tarjeta DE2, para asignar pines de entrada o salida tiene la siguiente estructura:
La tarjeta DE2
SISTEMAS DIGITALES I
16
Uso de los Switches y LEDs para entrada y salida del FPGA
SISTEMAS DIGITALES I
17
Durante la recopilación anterior, el compilador de Quartus II puede elegir cualquier
pin de la FPGA para servir como entradas y salidas.
La tarjeta DE2 ha cableado las conexiones entre los pines FPGA y otros
componentes en la tarjeta.
Vamos a utilizar Cuatro switches SW3, SW2, SW1 y SW0, para proveer las entradas,
A, B, C y D. Estos switches están conectados a los pines del FPGA AE14, P24, N26 y
N25, respectivamente. Conectaremos la salida F al LED verde LEDG0, conectado al
pin del FPGA AE22. De acuerdo a las siguientes tablas de la tarjeta DE2
SISTEMAS DIGITALES I
18
Para la asignación de pines se realiza mediante el menú principal
Seleccionar Assignments>Pin Planner
SISTEMAS DIGITALES I
19
Para asignar un pin específico a cada señal hacer doble click en la columna “Location” para
cada señal, se abrirá un menú desplegable donde están listados todos los pines disponibles
de la FPGA.
SISTEMAS DIGITALES I
20
Simulación del Circuito Diseñado (dos formas)
1. Con ModelSim. Antes que el circuito sea implementado en el FPGA, simularemos el circuito.
Usaremos una herramienta de simulación de circuitos y sistemas digitales llamada ModelSim.
Debe crear las formas de onda deseadas, llamadas vectores de prueba (test vectors), a fin de
representar las señales de entrada con ModelSim por un archivo en VHDL, archivo que se genera
en Quartus II.
En el menú, Assignaments/Settings.
SISTEMAS DIGITALES I
21
Una vez que el ejemplo se encuentra compilado se elige en el menú
Processing/Start/Start Test Bench Template Writer
Estar atentos a los mensajes de compilación por si existe algún error, caso contario
Presionar OK.
SISTEMAS DIGITALES I
22
Se debería generar un archivo con extensión *.vht dentro de la ruta de carpetas:
SIMULATION/MODELSIM, se encuentran dentro de la carpeta del proyecto que se está
realizando. Abrir dicho archivo con el programa QUARTUS con File/Open.
Responde con ventana Open File, buscamos en tipo los archivos con terminación .vht
(Test Bench Output Files (*.vht.vt))
SISTEMAS DIGITALES I
23
Responde con ventana Open File (ModelSim, EJEMPLO1.vht) abrir
SISTEMAS DIGITALES I
24
El archivo ya está generado y no hace falta cambiar ninguna variable, observar en la parte
con círculo rojo:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY ejemplo1cv_vhd_tst IS
END ejemplo1cv_vhd_tst;
ARCHITECTURE ejemplo1cv_arch OF ejemplo1cv_vhd_tst IS
-- constants
-- signals
SIGNAL A : STD_LOGIC;
SIGNAL B : STD_LOGIC;
SIGNAL C : STD_LOGIC;
SIGNAL D : STD_LOGIC;
SIGNAL F : STD_LOGIC;
COMPONENT ejemplo2tv
PORT (
A : IN STD_LOGIC;
B : IN STD_LOGIC;
C : IN STD_LOGIC;
D : IN STD_LOGIC;
F : OUT STD_LOGIC
);
END COMPONENT;
BEGIN
i1 : ejemplo1cv
PORT MAP (
-- list connections between master ports and signals
A => A,
B => B,
C => C,
D => D,
F => F
);
init : PROCESS
-- variable declarations
BEGIN
-- code that executes only once
WAIT;
END PROCESS init;
always : PROCESS
-- optional sensitivity list
-- ( )
-- variable declarations
BEGIN
-- code executes for every event on sensitivity list
WAIT;
END PROCESS always;
END ejemplo1cv_arch;
SISTEMAS DIGITALES I
25
En la zona señalada con circulo rojo es donde se debe ingresar el comportamiento de las
señales, luego quedará de la siguiente manera:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY EJEMPLO1CV_vhd_tst IS
ENDCEJEMPLO1CV_vhd_tst;
ARCHITECTURE EJEMPLO1CV_arch OF EJEMPLO1CV_vhd_tst IS
-- constants
-- signals
SIGNAL A : STD_LOGIC;
SIGNAL B : STD_LOGIC;
SIGNAL C : STD_LOGIC;
SIGNAL D : STD_LOGIC;
SIGNAL F : STD_LOGIC;
COMPONENT EJEMPLO1CV
PORT (
A : IN STD_LOGIC;
B : IN STD_LOGIC;
C : IN STD_LOGIC;
D : IN STD_LOGIC;
F : OUT STD_LOGIC
);
END COMPONENT;
BEGIN
i1 : EJEMPLO1CV
PORT MAP (
-- list connections between master ports and signals
A => A,
B => B,
C => C,
D => D,
F => F
);
init : PROCESS
-- variable declarations
BEGIN
-- code that executes only once
WAIT;
END PROCESS init;
always : PROCESS
-- optional sensitivity list
-- ( )
-- variable declarations
BEGIN
-- code executes for every event on sensitivity list
A<='0';B<='0';C<='0';D<='0';
wait for 100 ns;
D <= '1';
wait for 100 ns;
D <= '0'; C <= '1';
wait for 100 ns;
D <= '1';
wait for 100 ns;
D <= '0'; C <= '0'; B <= '1';
wait for 100 ns;
D <= '1';
wait for 100 ns;
D <= '0'; C <= '1';
wait for 100 ns;
D <= '1';
wait for 100 ns;
D <= '0'; C <= '0'; B <= '0';
wait for 100 ns;
D <= '1';
wait for 100 ns;
D <= '0'; C <= '1';
wait for 100 ns;
D <= '1';
wait for 100 ns;
D <= '0'; C <= '0'; B <= '0'; A <= '1';
wait for 100 ns;
D <= '1';
wait for 100 ns;
WAIT;
END PROCESS always;
END EJEMPLO1CV_arch;
SISTEMAS DIGITALES I
26
El código fue agregado, observar que lo más simple es declarar el comportamiento de cada
señal en un periodo constante en este caso cada 100ns.
Guardar el archivo sin cambiar el nombre.
Volvemos a Assignaments/Settings/Eda Tools Settings/Simulation, elegimos en la parte
inferior “Compile testbench” y pulsamos el botón “testbenches”,
Se abrirá otra ventana Test Bench: Elegimos New y QII responde con otra ventana New
Test Bench setings
SISTEMAS DIGITALES I
27
New Test Bench settings:
Lo importante de esta ventana es que en la parte de Test bench name: hay que escribir el
nombre del TOP LEVEL MODULE que tenemos en la cabecera de nuestro archivo vht
generado en este caso es ejemplo1cv_vhd_tst, además debemos elegir la opción “Use test
bench to perform…” y en Design instance … anotar i1 quedando la ventana de esta forma:
En File Name seleccionar el archivo EJEMPLO1CV.vht en
SISTEMAS DIGITALES I
28
QII rcv Select File, seleccionamos el archivo EJEMPLO1CV.vht y clik en Open
QII rcv New Test Bench settings rellenando en File Name con el archivo EJEMPLO1CV.vht,
clik en Add
SISTEMAS DIGITALES I
29
QII rcv New Test Bench settings con el archivo EJEMPLO1CV.vht, click en OK
QII rcv Test Bench Luego OK/Aceptar hasta llegar a la ventana principal del programa.
SISTEMAS DIGITALES I
30
QII rcv principal del programa y luego OK
SISTEMAS DIGITALES I
31
Elegimos la opción Processing/Start/Start EDA Netlist Writer
SISTEMAS DIGITALES I
32
Finalmente elegimos la opción: Tools/Run Simulation Tools/Gate Level Simulation
Aparecerá otra pequeña ventana: EDA Gate … elegimos slow model o fast model, luego
RUN
SISTEMAS DIGITALES I
33
Se abrirá el programa MODELSIM y empezara a compilar,
Hay que ajustar con la rueda del mouse apretando la tecla crtl para ver a escala adecuada
en la ventana negra las señales.
SISTEMAS DIGITALES I
34
Otro método para la simulación.
2. Ingresamos con el icono de hoja en blanco hacemos click (también se puede ingresar en el
menú principal en File/New y en Verification Debuging Files, seleccionamos University Program
vwf)
QII rcv New, en Verification Debuging Files, seleccionamos University Program vwf y luego
OK
SISTEMAS DIGITALES I
35
QII rcv mostrando la base de tiempos sin limite, para poner limite en el menu en Edit
SISTEMAS DIGITALES I
36
QII rcv mostrando la base End Time para ser ajustada, anotar por ejemplo 160 ns y luego
OK
SISTEMAS DIGITALES I
37
Para seleccionar las variables de entrada y salida en el menú en Edit seleccionamos Insert y luego
click en Insert Node or Bus
SISTEMAS DIGITALES I
38
QII rcv con Node Finder seleccionamos List, y nos muestra la lista de variables, se debe pasar
toda la lista a la segunda ventana, para esto se hace click en
SISTEMAS DIGITALES I
39
QII rcv Insert Node or Buss luego OK
QII rcv se debe ajustar el diagrama de tiempos de las variables de entrada, para esto se
activa la variable haciendo click, luego click en el icono de reloj, responde con Clock, en
ella se ajusta los tiempos y la unidad, luego OK
SISTEMAS DIGITALES I
40
QII rcv informando que la forma de onda se modifico si se quiere guardar click en Yes
QII rcv Save Vector Waveform File se selecciona el nombre y luego Guardar
SISTEMAS DIGITALES I
41
QII rcv Procesamos la simulacion con el icono, responde procesando la simulacion con un
flujo y nos informa que hay error
SISTEMAS DIGITALES I
42
QII rcv informando que la simulacion solo es para efectos academicos, luego en OK
SISTEMAS DIGITALES I
43
Ampliamos el diagrama de tiempos para apreciar los detalles
1. Programación JTAG: El nombre proviene del estándar IEEE Joint Test Action Group,
el flujo de bits de la configuración se descarga directamente en la FPGA Cyclone II. El
FPGA mantendrá esta configuración, siempre y cuando se aplica energía a la Tarjeta; la
configuración se pierde cuando la tarjeta está apagada.
SISTEMAS DIGITALES I
44
La siguiente sección describe los pasos utilizados para realizar programación JTAG y AS.
Para ambos métodos, la Tarjeta DE2 debe ser conectada a un computador a través de un
cable USB.
Mediante esta conexión, la Tarjeta será identificada por la PC como un dispositivo USB
Altera Blaster.
El software con que se comunica con el USB Blaster debe estar instalado en la PC.
Para descargar un flujo de bits de la configuración en el FPGA Cyclone II, realice los
siguientes pasos:
SISTEMAS DIGITALES I
45
Configuración de la EPCS16 en Modo AS
Para descargar un flujo de bits serial en la EPCS16, realice los siguientes pasos:
Además del uso para programación JTAG y AS, el puerto USB Blaster en la tarjeta DE2
puede también utilizarse para el control de algunas de las funciones de la Tarjeta de forma
remota desde una PC.
SISTEMAS DIGITALES I
46
Programación con JTAG
Coloque el switch RUN/PROG en la posición RUN. Seleccione Tools>Programmer para ver
la ventana que nos permite seleccionar el hardware de programación en el modo JTAG.
SISTEMAS DIGITALES I
47
QII rcv Hardware Setups. Seleccione Hardware Setups y en Currenty selected hardware seleccione
USB Blaster .., aparece en la ventana Hardware USB Blaster y clik en Close
QII rcv Programer y presione Start. Un LED en la tarjeta DE2 se encenderá una vez que el archivo
de configuración haya sido descargado satisfactoriamente cuyo progreso se va mostrando
SISTEMAS DIGITALES I
48
QII rcv Si ve algún reporte de error indicando que la programación ha fallado, verifique que
la tarjeta está debidamente conectada y si no hay error en la ventana de progreso se indica 100%
Luego se debe probar la tarea lógica del circuito diseñado en la tarjeta DE2.
En este modo (ajustar el interruptor RUN/PROG a la posición PROG), la información de configuración será
cargada en el dispositivo de configuración de la tarjeta DE2, en una memoria identificado
como EPCS16.
Para seleccionar el dispositivo requerido seleccione Assignements>Device,
SISTEMAS DIGITALES I
49
QII abre ventana Device
Haga click en la pestaña Device and Pin Options para obtener la ventana Device and….
SISTEMAS DIGITALES I
50
Seleccionamos el componente EP2C35F672C6 y click en OK
SISTEMAS DIGITALES I
51
En la opción Mode seleccione Active Serial Programming
QII rcv preguntando si se quiere borrar algunos componentes ya grabados se presiona Yes
SISTEMAS DIGITALES I
52
QII rcv que en la opción Mode seleccionado en Active Serial Programming y las ventanas vacías
click en Add File
QII rcv Select Programing File, seleccionamos en ouput_files con doble click.
SISTEMAS DIGITALES I
53
QII rcv Select Programing File en la que se visualiza en la ventana principal el archivo
EJEMPLO1CV.pof, se resalta dicho archivo y se despliega en la ventana File Name y click en Open
QII rcv Programer, active Programer Configure y presione Start. Un LED en la tarjeta DE2 se
encenderá una vez que el archivo de configuración haya sido descargado satisfactoriamente cuyo
progreso se va mostrando
SISTEMAS DIGITALES I
54
QII rcv Si ve algún reporte de error indicando que la programación ha fallado, verifique que la tarjeta está
debidamente conectada y si no hay error en la ventana de progreso se indica 100%
Comentarios Finales
Expusimos muchas de las funciones más importantes de Quartus II. Sin embargo, hay muchas más. El lector
puede aprender más del sistema CAD explorando los diversos comandos y la ayuda en línea proporcionada en
cada aplicación.
SISTEMAS DIGITALES I
55