Documente Academic
Documente Profesional
Documente Cultură
PRÁCTICA No. 7
OBJETIVOS:
Familiarizar al alumno con la interfaz del software Warp 6.3 para el diseño digital
con lógica programable.
INTRODUCCIÓN
Warp R6.3 de Cypress Semiconductor es una de las tantas herramientas existentes para
el diseño con lógica programable la cual permite procesar varios tipos de entrada de datos
(esquemática y compilador estándar de VHDL y la combinación de ambas) lo cual la hace
muy funcional.
Pre-reporte:
DESARROLLO
1.1.- Una vez dentro de Windows hacer click en el botón de Inicio, seleccionar Programas
> Cypress > Warp R6.3 > Galaxy. Después de abrir este programa se procederá a
realizar un proyecto nuevo.
1.2.- Después de abrir el programa Galaxy, seleccionar File > New (figura 1.2).
1.3. Luego aparecerá otra ventana como la que se muestra en la figura 1.3. Esta ventana
permitirá crear un proyecto con el que se podrá programar un dispositivo y se deberá
seleccionar la segunda opción Project [Target – Device].
1.4.- Después de seleccionar la opción (Project [Target – Device] ) aparecerá otra ventana
(figura 1.4), aquí se deberá de seleccionar en Project Type la opción de VHDL; a
continuación se tiene que asignar un nombre al proyecto, por ejemplo el nombre de
practica1. En el segundo cuadro de texto se selecciona el directorio donde se guardará el
proyecto, se puede hacer un directorio nuevo desde esa misma ventana con solo escribir
el nombre, por ejemplo a:\practica1, o también se tiene la opción de buscar una carpeta
ya existente en la opción Browse. Cuando se termina de especificar los nombres y el lugar
donde se guardará, hacer click en el botón de Siguiente.
1.5.- Al hacer esto, aparecerá una ventana nueva con el título Add Files to Project
(figura1.5), ésta se usa cuando ya se tienen archivos que se quieran agregar al proyecto
nuevo. Como esta es la primer practica no es necesario especificar nada en esta ventana,
solo se debe hacer click en el botón Siguiente.
1.6.- La siguiente ventana (figura 1.6) tiene el título de Select Target Device, esta ventana
es muy importante ya que en esta se selecciona el PLD en el que se va a trabajar. Los
PLD’s mas usuales son los mas pequeños (16V8, 22V8 ó 22V10), los cuales aparecen en
la ventana como SPLD; seleccionar C22V10. Para observar la siguiente opción se hace
doble click sobre este texto, a continuación aparece una lista de los SPLD´s más
comunes, se selecciona el SPLD que se desee e inmediatamente aparecerá una lista
donde hay varios tipos del mismo SPLD. Aquí es muy importante que se seleccione un
SPLD que tenga un encapsulado tipo PDIP para que luego de programarlo se pueda
montar sobre un protoboard; seleccionar PALCE22V10-10PC/PI. En la parte de abajo de
esta misma ventana aparece información del SPLD que se selecciona; después de
seleccionar el SPLD adecuado hacer click en Finalizar.
1.7.- Al realizar lo anterior, aparecerá una ventana donde se pregunta si se quiere guardar
el nuevo proyecto, aquí solo se deberá hacer click en Sí.
también se puede agregar al hacer click sobre el icono de New Text File.
library ieee;
A continuación seleccionar File > Save As, elige el nombre del directorio que se usó en el
paso 4 (a:\practica1), ya que se elige el mismo directorio, escribir el nombre del archivo,
se sugiere que sea el nombre de practica1 con la extensión .vhd (es necesario
asegurarse de poner la extensión .vhd), de esta manera se está especificando que es un
archivo que contiene código en VHDL, después de hacer esto se procede a guardar el
archivo.
1.10.- De la barra de menús seleccionar Project > Add Files, aparecerá una ventana
nueva con el título Add Files to Project (figura 1.7) y deberá aparecer el archivo creado
anteriormente practica1.vhd, luego hacer click en Add y después en OK.
1.12.- A continuación todas las palabras reservadas aparecerán en color azul y los
comentarios en color rojo, solamente que para empezar los comentarios se ponen dos
guiones seguidos (--). Después de esto ya se puede comenzar a hacer el código en
VHDL.
1.13.- Por último, se procede a escribir este código en VHDL como ejemplo para observar
las palabras reservadas y los comentarios. La línea de código library ieee; solo se escribe
una vez.
Código en VHDL:
Nota: Este ejemplo será usado posteriormente en las fases de compilación y simulación.
Entity.- Sentencia que define la especificación de un componente, para ello contiene los
siguientes elementos:
Nombre de la entity.
Puertos de entrada y salida.
Modos de los puertos
in: entrada al componente, sólo puede ser leído.
out: salida del componente, sólo se le puede asignar valor.
inout: señal bidireccional, se puede leer o asignar valor.
buffer: registro asociado a una salida.
Boolean Integer
Bit Real
Bit_vector Time
Character Std_logic
String Std_logic_vector
Del código en VHDL expuesto en el punto 1.13 se pueden hacer los siguientes
comentarios:
La entidad (entity) tiene el nombre de practica1, la cual contiene los siguientes puertos
con el nombre de A, B y X, a su vez estos puertos tienen su modo de in y out y el tipo de
dato es std_logic, por último se agrega la palabra reservada end junto con el nombre de
la entity.
2.2. Una vez escrito el código en el programa Galaxy, los pasos para la compilación son
sencillos y se describen a continuación.
2.2.1. Ver en la barra de menús la opción de Project > Compiler Options, al hacer esto se
abrirá una ventana nueva (figura 1.9), en la parte de Synthesis se tiene que asegurar que
la opción de Simulation > Timing Model este seleccionada Active-HDLSim / Active-VHDL y
luego hacer click en Aceptar, esto es necesario para el momento de la simulación.
2.2.2. Lo siguiente es ir a la barra de menús y hacer click en Compile > Project. Después
de hacer esto, en la ventana Output Window aparece el resultado de la compilación (sí la
ventana antes mencionada no esta a la vista, se debe ir a la barra de menús y hacer click
en View > Output Window), en caso de que la compilación tenga errores, estos pueden
ser observados dentro de la pestaña de Errors & Warnings de esta misma ventana, en
esta parte aparecen los Errors & Warnings y el posible número de la línea de código
donde puede estar el error (figura 1.10).
2.2.3.- Al terminar la compilación correcta del proyecto se generan una serie de archivos,
estos se pueden observar en la ventana Project Window (si no esta a la vista, hacer click
en la barra de menús y luego en View > Project Window) este archivo es: practica1.rpt, el
cual contiene las ecuaciones, los pines de entrada y salida, así como también la
utilización del SPLD (Small PLD) seleccionado; este archivo se puede ver al hacer click en
la pestaña de Output Files View dentro de la misma ventana de Project Window (figura
1.11).
2.3.- Salir del programa Galaxy haciendo click en la barra de menús sobre File > Exit o
simplemente cerrando la ventana de programa.
III. Simulación
Abrir el archivo deseado para la simulación, para hacer esto se tiene que ir a la barra de
menús del Active-HDL Sim y en la opción de File > Open VHDL hacer clic (figura 1.13).
El archivo que se tiene que cargar deberá tener el formato apropiado para la simulación
(Active-HDLSim / Active-VHDL), este se crea en el subdirectorio vhd dentro del directorio
de trabajo anteriormente seleccionado. Se debe seleccionar el archivo correcto, de otra
forma la simulación no podrá llevarse a cabo.
Para comenzar la simulación se debe ir a la barra de menús y dar click en Simulation >
Initialize Simulation. Después se procede a abrir una ventana para analizar las señales
requeridas dentro del diseño, a esta ventana (figura 1.15) se le llama Waveform Window
(si esta ventana no se encuentra abierta, se puede abrir una al hacer click sobre File >
New Waveform).
Para continuar con el proceso de Simulación se deberán agregar las señales a la ventana
Waveform, para realizar esto ir a la barra de menús y dar click en Waveform > Add
Signals (figura 1.16).
Después de realizar esto, se abrirá una ventana con la lista de todas las señales de
entrada, salida, entrada/salida y nodos internos de conexión que se hayan hecho en el
diseño (figura 1.17). Para agregar las señales deseadas se debe hacer doble click sobre
la señal deseada; se pueden agregar tantas señales como sean requeridas al mismo
tiempo, para ello se deberá presionar la tecla Control y hacer click sobre cada una de las
señales que se requieran e inmediatamente después hacer click sobre el botón Add.
Estas señales de estimulación son utilizadas para definir el tipo de entrada que tendrá
cada una de las señales que fueron agregadas a la ventana Waveform, para seleccionar
el tipo que tendrá la señal primero se debe de hacer click sobre la señal deseada y luego
en Waveform > Stimulators (figura 1.18).
A continuación se hace una breve descripción de los tipos de señales de estimulación que
existen en Active-HDL Sim.
Clock
Una estimulación de reloj produce una señal rectangular definida por los siguientes
parámetros: Frecuencia, tiempo de inicio, ciclo de trabajo y valor inicial
Custom
Un estimulador personalizado es una señal definida gráficamente y se realiza definiendo
los valores deseados en la ventana de simulación.
Formula
Este tipo de estimulador produce una señal definida por medio de una formula de una
manera sencilla. La señal es definida con una secuencia pares de valor – tiempo. La
componente de tiempo indica el momento en el que la señal asume el valor especificado.
La unidad del tiempo es en picosegundos. Para repetir con un periodo especifico se debe
de agregar el modificador (–r).
0 ps 100000 ps 200000 ps
Hotkey
Este tipo de estimulador es similar al de Valor, pero tiene un mecanismo más fácil para
cambiar el valor. Para realizar esto solamente se tendrá que presionar una tecla
específica. Se puede realizar una lista de valores para cambiar; cada que se presione la
tecla se estará cambiando entre los valores que se tienen en la lista.
Predefinidos
Estos tipos de estimuladores son una serie de señales de tipo reloj con distintas
frecuencias o señales del tipo formula que pueden ser asignados a las señales. Para
agregar un nuevo estimulador a la lista, se puede hacer en la misma ventana en la opción
Predefined.
Valor
Este estimulador se le asigna un valor constante a la señal deseada. Si se realiza una
simulación paso a paso, se podrá cambiar el valor entre cada uno de los pasos, para
hacer esto se tiene que volver a definir el valor en la ventana Stimulators.
Sí la estimulación requerida es de tipo Valor, existen varios valores a los que se podrá
forzar la señal deseada (figura 1.19); estos valores pueden ser:
Al seleccionar el tipo de estimulador para una señal, aparecerá una lista de valores que se
pueden asignar a esa señal. En el caso del estimulador de tipo Valor, aparecen varios
tipos, después de seleccionar uno de los valores al cual será forzada la señal deseada, se
deberá de dar click en la palabra Apply, y asi sucesivamente con todas las señales, al
terminar con todas se debe de dar click en Close.
Para el ejemplo que se tiene en esta practica, las señales tendrán el tipo de estimulación
de Valor y el valor al que se forzará primeramente las señales A y B serán: A= ‘0’ y B= ‘0’.
A B Tiempo
0 0 100 ns
0 1 200 ns
1 0 300 ns
1 1 400 ns
Para poder guardar la grafica de las señales deseadas, hacer click sobre la barra de
menús y posteriormente en File > Save As, al realizar esto aparecerá una ventana para
dar nombre a la grafica que será guardada, esta simulación será guardada en la carpeta
de trabajo SRC.
Después de guardar una simulación, ya se puede salir del programa Active-HDL Sim, se
puede salir haciendo click en File > Exit o simplemente cerrando la ventana de programa.
IV: EJERCICIO.
4.1. Tomando como ejemplo el ejercicio anterior, realice la descripción en VHDL del
circuito sumador completo mostrado en figura X.
4.2. Una vez que el proyecto en Warp con la descripción del circuito esté compilado y sin
errores, proceda a invocar el entorno de simulación Active-HDL Sim. Para comprobar el
funcionamiento del circuito para todas las combinaciones, usar el estimulador de señal de
tipo CLK.
ACTIVIDADES COMPLEMENTARIAS
1. Dentro del archivo *.rpt identificar las ecuaciones que se generan, el número de pines
utilizados (in y out) y la utilización de las macroceldas (dedicated inputs, clock/inputs y
I/O Macrocells).
2. Buscar dentro de la ayuda de Galaxy los distintos tipos de SPLD’s que se pueden
programar con esta herramienta. Observar las características principales de cada uno de
ellos.
3. Dentro del Language Reference Manual, buscar las características de cada tipo de dato
existente en VHDL. (integer, bolean, bit, character, string, bit_vector, std_logic,
std_logic_vector).
4.- Establecer las diferencias entre usar un tipo bit_vector y uno std_logic.