Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial VHDLyFPGAs (2011) PDF
Tutorial VHDLyFPGAs (2011) PDF
MECATRÓNICA
REPORTE TÉCNICO
Elaborado por:
Noviembre de 2011
Tutorial FPGAs y VHDL UTM/2012-A
1. Introducción
En este documento se presentan de manera detallada los pasos a seguir para implementar un
sistema digital en la tarjeta de desarrollo Nexys 2 de Digilent, desde el planteamiento del
problema hasta su puesta en marcha y verificación en la tarjeta, la cual contiene un FPGA Spartan-
3E XC3S500E de Xilinx. El ejemplo que se desarrolla es bastante simple, porque el objetivo del
tutorial no es resolver un problema complejo, sino ilustrar el proceso de desarrollo.
Active-HDL versión 6.2: Herramienta desarrollada por Aldec, es empleada para la captura y
simulación de las descripciones en VHDL.
ISE 12.1i de Xilinx: Es un ambiente integrado de desarrollo desde el que se invocan diferentes
herramientas, conforme se van requiriendo. Se utiliza para la síntesis, implementación y
creación del archivo de descarga. También puede utilizarse para programar al FPGA si se
emplea una interfaz conocida como JTAG.
Adept de Digilent: Es una utilería que permite programar a los FPGAs en algunas tarjetas
desarrolladas por Digilent, a través del puerto USB.
Para el Active-HDL y el ISE actualmente existen versiones más recientes, se ocuparán las que se
han citado porque emplean menos recursos en su instalación y son suficientes para las
aplicaciones a desarrollar.
Se desea diseñar e implementar un comparador de 4 bits: Un circuito que como entradas reciba
dos números A y B de 4 bits y como salidas indique si A > B, A < B o A = B, esto se muestra en la
figura 1.
4 bits A A> B
A= B
4 bits B A< B
Para el diseño y simulación se utilizará la herramienta Active-HDL versión 6.2, desarrollada por
Aldec, cuyo Icono de acceso directo se muestra en la figura 2.
1
Tutorial FPGAs y VHDL UTM/2012-A
Este programa organiza los diseños en espacios de trabajo (workspace) si es la primera vez que se
ejecuta, deberá crearse un nuevo espacio de trabajo, en caso contrario podrá usarse un espacio de
trabajo existente.
En la figura 3 se observa cómo, aunque existan algunos espacios de trabajo, siempre es posible
iniciar con uno nuevo.
Un espacio de trabajo puede contener diversos diseños independientes. Si es la primera vez que
trabaja con esta herramienta, es conveniente iniciar con un nuevo espacio de trabajo propio. Al
cual deberá asignársele un nombre, en este caso se le puso “tutorial” (figura 4).
2
Tutorial FPGAs y VHDL UTM/2012-A
La primera opción se usa cuando ya se cuenta con módulos que se agregarán al diseño. La segunda
es para importar un diseño completo.
La última opción es necesaria para nuevos diseños, ésta es la opción que debe seleccionarse y
después continuar con el paso siguiente.
Posteriormente se deben definir algunas características del diseño relacionadas con las
herramientas que se cuenten para síntesis e implementación, y al tipo de FPGA sobre el cual se
realizará la descarga. Pero como esta versión de Active-HDL es muy previa a las nuevas
herramientas de Xilinx, no es posible relacionarlas, por ello, el Active-HDL sólo será utilizado para
describir y simular al circuito, no se seleccionan herramientas como se muestra en la figura 6.
3
Tutorial FPGAs y VHDL UTM/2012-A
Finalmente deberá escribirse el nombre del diseño, en este caso es “comparador” (figura 7).
En (1) se tiene un navegador en el que se puede seleccionar una de las 3 opciones siguientes (con
sus cejas inferiores):
Archivos (Files) – Se muestran los archivos del diseño, organizados bajo un esquema: Espacio
de Trabajo (Workspace)-> Diseños -> Archivo. Un espacio de trabajo puede contener varios
diseños y un diseño a la vez puede contener varios archivos (módulos descritos en VHDL).
4
Tutorial FPGAs y VHDL UTM/2012-A
Estructura (Structure) – Tiene sentido una vez que los módulos han sido compilados, muestra
la organización del diseño, así como las señales internas, externas y variables de cada uno de
sus módulos, esta opción es útil para simulación.
Recursos (Recursos) – Muestra la organización en directorios de todos los elementos que se
agreguen al diseño activo.
En (2) se tiene una consola en la que aparecerán mensajes de acuerdo con las actividades
realizadas por el usuario. Es solo con carácter informativo, no es posible introducir información a
través de esta consola.
El espacio en (3) es el área de trabajo, aquí se va a mostrar el contenido de cada uno de los
módulos que integren a un diseño. Archivos con código VHDL, ventanas de simulación, diagramas
de bloques, etc. Basta dar doble clic dentro del navegador para observar el contenido de un
archivo y poder modificarlo.
Para agregar un nuevo archivo al diseño activo, en el navegador se debe dar doble clic en la
opción Add New File ( ), se abre la ventana de la figura 9, para permitir insertar
archivos vacíos, archivos existentes o usar uno de los asistentes (Wizards) para crear uno nuevo.
Lo más simple es emplear uno de los asistentes, específicamente se debe seleccionar al que apoya
para crear un nuevo archivo empleando código VHDL, como se muestra en la figura 10. Los otros
asistentes son para crear diagramas a Bloques (para módulos con mayor jerarquía), diagramas de
estado o archivos en Verilog.
Figura 10. Agregando un nuevo archivo VHDL con ayuda del asistente.
5
Tutorial FPGAs y VHDL UTM/2012-A
Después de aceptar, se va a iniciar con el nuevo módulo, se deja activa la opción de que el código
generado se integre al proyecto y se avanza (figura 11).
Figura 11. Creación de un nuevo archivo VHDL con ayuda del asistente.
A continuación se debe escribir el nombre del archivo a crear y de manera opcional el nombre de
la entidad y de la arquitectura, si estos se omiten, todos los campos tomarán el mismo nombre,
que se decidió fuera “comp4b” (figura 12).
Luego se deben insertar una a una las señales que formarán parte de la entidad (interfaz), la
inserción de una señal comienza con un clic en el botón new, luego se le pone un nombre, si es un
vector su tamaño se determina con los índices y debe definirse su modo (entrada o salida).
El proceso debe repetirse con cada una de las señales, de acuerdo a las especificaciones del
diseño. En la figura 13 se muestra el entorno mediante el cual se definen los puertos que forman
parte de la entidad, desde que se inserta la primera, hasta que todas han sido incluidas.
6
Tutorial FPGAs y VHDL UTM/2012-A
Figura 13. Ventana para definir los puertos que forman parte de la entidad.
Al concluir con la inserción de señales se presiona el botón finalizar, con lo que se creará la
plantilla del módulo en el archivo comp4b, el cual es automáticamente abierto en el área de
trabajo, como se puede ver en la figura 14.
Los comentarios de la plantilla pueden completarse para una adecuada documentación. En este
momento ya se tiene descrita la entidad (la interfaz del módulo) y falta por describir su
arquitectura para determinar su comportamiento.
El tipo de dato generado por default es STD_LOGIC, el cual es una ampliación del tipo Bit con la
característica de que maneja otros niveles lógicos, además de falso y verdadero, como
desconocido, alta impedancia, no importa, etc.
Nota: Si se quiere modificar la entidad, para agregar una nueva señal, eliminar una existente o
modificar algún parámetro, debe hacerse manualmente, respetando la sintaxis de VHDL, no es
posible regresar al asistente anterior.
7
Tutorial FPGAs y VHDL UTM/2012-A
process( A, B )
begin
mayor <= ‘0’;
menor <= ‘0’;
igual <= ‘0’;
if A > B then
mayor <= ‘1’;
elsif A < B then
menor <= ‘1’;
else
igual <= ‘1’;
end if;
end process;
Existen otras alternativas, sin embargo la descripción funcional es más entendible porque refleja
directamente la solución del problema.
Nota: Después de la palabra process se coloca la lista de sensitividad, son señales que activarán la
ejecución del proceso, cuando ocurra un cambio en cualquiera de ellas. En el caso del comparador,
será activado con cualquier cambio en las señales A y B.
Una vez insertado el código, se verifica su sintaxis realizando su compilación. Para ello se
8
Tutorial FPGAs y VHDL UTM/2012-A
En caso de que hubiera errores, el archivo en el navegador quedará marcado de manera diferente
y los errores se mostrarán en la consola:
4. Simulación
En este caso se trata de un sólo módulo, por lo que no existen jerarquías, cuando se trata de un
diseño con más módulos, a través de un cuadro de diálogo debe determinarse cuál es el de mayor
jerarquía.
9
Tutorial FPGAs y VHDL UTM/2012-A
Para simular se requiere agregar una nueva forma de onda (new Waveform) dando clic al botón
, aparecerá una ventana de señales vacía, como la mostrada en la figura 18.
Las señales se agregan activando el menú Waveform y seleccionando la opción Add Signals, con lo
que se obtiene el cuadro de dialogo mostrado en la figura 19. En el que habrá que seleccionar las
señales y dar clic en Add. Una alternativa más simple consiste en seleccionar las señales del
navegador y arrastrarlas a la ventana de señales, en ambos casos, se obtiene el resultado de la
figura 20.
Figura 19. Se agregan las señales para visualizar el comportamiento del comparador.
10
Tutorial FPGAs y VHDL UTM/2012-A
Además del nombre de las señales, se tienen una columna con su valor y otra indicando el tipo de
estímulo. A la derecha hay una zona donde se mostrará el comportamiento temporal de cada
señal. Dado que se está simulando hardware, es necesario ingresar algunas señales a las entradas
y observar las salidas, con ello se evalúa si la funcionalidad del módulo es o no correcta.
Las señales de entrada son proporcionadas a través de estímulos, existen estímulos de diferentes
tipos, adecuados para cada tipo de señal. Los estímulos se obtienen al dar un clic derecho a una
señal de entrada, con ello aparece el menú contextual mostrado en la figura 21, en el cual debe
seleccionarse la opción estímulos (Stimulators).
Con esto se obtiene el cuadro de dialogo mostrado en la figura 22, el cual de izquierda a derecha
muestra: La señal bajo consideración, la lista de estímulos y las características propias en cada
estímulo (estás se obtienen al seleccionar un estímulo particular y en algunos casos es necesario
introducir diferentes parámetros).
Figura 22. Cuadro de diálogo para definir los estímulos de las señales.
Para el comparador de 4 bits, puesto que A y B son vectores, para ambas señales se elegirán
estímulos tipo contador, sólo que para observar la activación de las diferentes salidas A será
ascendente (Up) y B descendente (Down).
Una vez que se selecciona el tipo de estímulo y se determinan sus parámetros, debe presionarse el
botón Aplicar (Apply) de lo contrario los estímulos no serán considerados.
No es necesario cerrar la ventana de estímulos y abrirla para una nueva señal, es suficiente dar un
clic a la señal y ésta se incorporará a la ventana de estímulos, en la figura 23 se muestra la
inserción de la señal B en la ventana de estímulos.
11
Tutorial FPGAs y VHDL UTM/2012-A
Una vez definidos todos los estímulos debe cerrarse la ventana (Close). Con esto se han
establecido todas las condiciones de simulación, la cual se controla con los botones
El segundo botón (Run for) realiza la simulación por el tiempo indicado en el cuadro de edición
contiguo, este tiempo puede modificarse para proporcionar diferentes intervalos de simulación. El
último botón (Restart) ignora los eventos transcurridos para iniciar nuevamente con la simulación.
Las señales se generan conforme se avanza en la simulación, las entradas están dadas por los
generadores de estímulos y las salidas son una función de las entradas, como se puede ver en la
figura 25.
Para una mejor visualización de las señales, pueden usarse los botones: cuya
respectiva función es: acercar (zoom in), alejar (zoom out), acercar para llenar la pantalla (zoom to
fit) y acercar un rango de tiempo (zoom range).
12
Tutorial FPGAs y VHDL UTM/2012-A
Figura 26. Ajuste para visualizar más resultados de la simulación del comparador de 4 bits.
Una vez realizada la simulación, puede garantizarse que el módulo funciona y puede procederse
con la Síntesis e Implementación. La simulación se detiene seleccionando la opción End Simulation
en el menú Simulation, resaltado en la figura 28.
El archivo con la simulación puede guardarse para documentación (archivo con extensión awf). En
este momento es posible cerrar al Active-HDL dado que para los pasos siguientes se utilizarán
otras herramientas.
5. Síntesis
La síntesis se va a realizar con las herramientas de Xilinx desde un Ambiente Integrado de
Software (Integrated Software Environment – ISE) el cual se inicia con un doble clic en el ícono
mostrado en la figura 29.
13
Tutorial FPGAs y VHDL UTM/2012-A
Figura 29. Acceso directo para el Ambiente Integrado de Software (ISE) de Xilinx.
Al iniciar este programa se mostrará el Tip del Día y luego se abrirá el último proyecto en el que se
ha trabajado (excepto cuando es la primera vez que se ejecuta al software).
Para este tutorial se iniciará con un nuevo proyecto, dando un clic al botón New Project, en los
comandos para proyectos ubicados a la izquierda de la ventana, mostrados en la figura 30. Con
ello se obtendrá el cuadro de diálogo mostrado en la figura 31.
Primero se debe seleccionar la ubicación y el directorio de trabajo del nuevo proyecto y luego se le
debe asignar un nombre. El proyecto queda ubicado en una carpeta con el mismo nombre.
En este caso, los proyectos se ubican en la carpeta C:\Practicas y el nuevo proyecto llevará por
nombre comparador. Para el tipo de módulo superior (Top-level source type) se mantiene HDL
porque el comparador ya fue descrito en VHDL. En la figura 32 se ha personalizado el cuadro de
diálogo de la figura 31.
14
Tutorial FPGAs y VHDL UTM/2012-A
Una vez que se introduzcan estos datos se debe proceder con el paso siguiente. En el cual se
definen las propiedades del proyecto relacionadas con el FPGA en el que se va a realizar la
descarga, por lo que es necesario seleccionar los valores correctos, incluyendo el lenguaje
preferido. En la figura 33 se muestran los valores que corresponden con el FPGA que está
integrado en las tarjetas de desarrollo Nexys 2.
Con un clic en Next se obtiene el resumen del proyecto mostrado en la figura 34, si los datos con
correctos, con el botón Finish se finaliza con la creación del proyecto.
15
Tutorial FPGAs y VHDL UTM/2012-A
Una vez que se cierra el cuadro de diálogo inicial se podrá ver el entorno de desarrollo de Xilinx, el
cual se muestra en la figura 35.
16
Tutorial FPGAs y VHDL UTM/2012-A
1. Área de archivos. Se muestran los diferentes archivos fuente que integran al proyecto, a
manera de un árbol. Si un proyecto está formado por varios módulos, en este árbol los
módulos se ubicarán de acuerdo con sus niveles jerárquicos.
2. Espacio de trabajo. Acá serán abiertos los diferentes archivos fuente, reportes o información
de internet, inicialmente se muestra un resumen de la versión 12 del ISE con ligas para
mostrar sus diferentes características. Para abrir un archivo en el espacio de trabajo, basta con
dar doble clic a su nombre en el área de archivos.
3. Área de procesos. Los procesos que se pueden aplicar a un archivo dependen de su tipo. Una
vez que se selecciona un archivo en el área 1, en esta área se mostrará una lista con los
procesos aplicables, por ello, la lista puede cambiar en función del tipo de archivo.
4. Área de mensajes. Muestra una consola con mensajes indicando las diferentes actividades que
se están realizando. Además, existen otras cejas para mostrar errores o precauciones.
Hasta el momento se tiene un diseño vacío, para agregar un archivo nuevo o copiar uno existente
se debe dar un clic derecho en el área de archivos para obtener el menú contextual que permitirá
hacerlo, en la figura 36 se muestra el citado menú.
Puesto que el archivo en VHDL del comparador ya fue realizado, se debe seleccionar la opción Add
Copy of Source, para copiar el archivo en la carpeta del proyecto. Con un clic en esta opción se
abre una ventana de navegación en la que se debe buscar al archivo comp4b.vhd, el cual se
encuentra en la ruta: my_designs -> tutorial -> comparador -> src, esto porque el Active-HDL
trabaja en la carpeta denominada my_designs, el espacio de trabajo se denominó tutorial, en el
cual se inició con un diseño denominado comparador, y todos los diseños dejan los archivos del
código fuente en una carpeta denominada src.
17
Tutorial FPGAs y VHDL UTM/2012-A
Con el archivo comp4b.vhd seleccionado se realiza su síntesis. Para ello, en el área de procesos se
da un doble clic al proceso de síntesis, si no hay errores de sintaxis, en el proceso de síntesis
aparecerá la indicación de que se realizó con éxito y la consola reflejará el mismo hecho. Ambas
indicaciones se pueden ver en la figura 39.
18
Tutorial FPGAs y VHDL UTM/2012-A
En caso de que hubiera errores, el proceso de síntesis no sería superado y el error se mostraría en
el espacio de la consola, en la ceja de errores también se mostraría la posición del error.
Se esperaría que no ocurrieran errores, dado que el módulo cont4b.vhd ya fue evaluado con el
Active-HDL, sin embargo, si se realiza algún ajuste en el código VHDL que genere algún error, éste
debe resolverse considerando la sintaxis del lenguaje, en la figura 40 se muestra un error al quitar
un ; en el archivo cont4b.vhd.
El entorno de Xilinx también permite realizar simulaciones, este paso puede omitirse porque ya se
realizó una simulación previa en el Active-HDL, sin embargo, el paso se describe para que se
observen las diferencias que existen entre ambas herramientas.
Para la simulación en el ISE de Xilinx debe agregarse un nuevo archivo, conocido como un banco
de pruebas, con un clic derecho en cualquier parte del área de archivos se obtiene un menú
contextual en el que se debe seleccionar New Source, como se muestra en la figura 41.
19
Tutorial FPGAs y VHDL UTM/2012-A
Con ello se muestran los diferentes tipos de archivo que pueden agregarse (figura 42), se
selecciona Test Bench WaveForm (banco de pruebas) y se le agrega un nombre.
BANCO DE PRUEBAS
4 bits A A> B
Estímulos
Visualización
para las
A= B de las
entradas
salidas
4 bits B A< B
Por lo tanto, al presionar el botón de siguiente, se asocia al banco de pruebas con el comparador.
20
Tutorial FPGAs y VHDL UTM/2012-A
Al presionar siguiente se muestra un resumen en el cual se debe presionar finalizar, con lo que se
crea un archivo en VHDL en el que aparece el módulo a simular como un componente. La Entidad
en este archivo es nula, dado que sólo sirve para simulación, con código VHDL deben definirse los
estímulos para las señales de entrada.
Los estímulos son señales que cambian a lo largo del tiempo, por lo que se debe definir su estado
a lo largo del tiempo de prueba. Para este ejemplo, básicamente se utilizan contadores, la señal A
va aumentando y la señal B disminuyendo. Si el circuito fuera secuencial, también se debe definir
el comportamiento de la señal de reloj.
Por lo tanto, es necesario modificar al archivo test_comp4b.vhd para que quede de la siguiente
manera:
--------------------------------------------------------------------------------
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL; -- Se agrega para operaciones aritméticas
ENTITY test_comp4b IS
END test_comp4b;
-- Entradas
signal A : std_logic_vector(3 downto 0) := (others => '0');
signal B : std_logic_vector(3 downto 0) := (others => '0');
21
Tutorial FPGAs y VHDL UTM/2012-A
-- Salidas
signal mayor : std_logic;
signal menor : std_logic;
signal igual : std_logic;
BEGIN
for i in 0 to 15 loop
A <= A + 1; -- Estímulos para los datos de entrada
B <= B - 1;
wait for 100ns;
end loop;
end process;
END;
El banco de pruebas debe seleccionarse en el área de archivos para verificar su sintaxis y proceder
con la simulación. Si no aparece debe cambiarse a la vista de simulación en la parte superior de la
misma área: . Con el archivo seleccionado, se verifica su sintaxis
en el área de procesos y si no hay errores, se puede iniciar con la simulación. En la figura 45 se
muestran ambos procesos.
Si la sintaxis correcta, se procede con la simulación del comportamiento del módulo VHDL, al dar
un clic en la opción Simulate Behavioral Model se abrirá la aplicación ISim, el simulador incluido en
el ISE. En la figura 46 se muestra la simulación del Comparador, sin embargo, para ese resultado se
han avanzado otros ciclos de simulación y se han realizado los ajustes necesarios en el diagrama
de tiempos para visualizar diferentes combinaciones.
22
Tutorial FPGAs y VHDL UTM/2012-A
Para concluir con la simulación y cerrar la aplicación ISim, se teclea el comando exit en la consola
del programa (parte inferior de la ventana), con lo cual se regresa al entorno del ISE.
7. Modelos de Hardware
Con la herramienta de trabajo, después de haber realizado la síntesis, se pueden observar los
componentes de hardware a los cuales se ha sintetizado el módulo en una lógica de transferencia
de registros (RTL), para ello, primeramente se debe regresar a visualizar para una implementación,
en la parte superior del área de archivos se debe seleccionar: .
23
Tutorial FPGAs y VHDL UTM/2012-A
La primera vez que se ejecute este proceso se presentará una ventana con 2 opciones, la primera
es un asistente, por lo que debe seleccionarse la segunda (Start with a schematic of the top-level
block) para obtener el bloque de mayor jerarquía del comparador, el cual se muestra en la figura
48.
El diagrama de la figura 48 es el bloque de mayor jerarquía, con un doble clic en el bloque o con el
botón es posible explorar hacia los niveles inferiores en los que se pueden observar más
detalles, lo cual es bastante útil en diseños complejos. En la figura 49 se puede ver el siguiente
nivel del comparador.
Estos diagramas permiten evaluar la relación que se da entre el software y hardware, y son útiles
para documentación, con el botón se puede regresar al nivel jerárquico anterior.
24
Tutorial FPGAs y VHDL UTM/2012-A
En este ejemplo ya no se tienen niveles inferiores, por su simpleza, los componentes del segundo
nivel pueden implementarse directamente en los bloques lógicos del dispositivo seleccionado.
Al cerrar la ventana del área de trabajo se concluye el proceso de visualización del hardware.
Como pudo observarse en las figuras 48 y 49, el código VHDL ha sido sintetizado
satisfactoriamente en hardware, ahora se deben tomar en cuenta algunas consideraciones para
poder llevar a cabo su implementación en el dispositivo.
El comparador será descargado en un FPGA XC3S500 de Xilinx, el cual está en una tarjeta Nexys 2
de Digilent, cuya imagen se muestra en la figura 50. Digilent es la empresa que manufactura estas
tarjetas de desarrollo y su manual de referencia puede obtenerse de su sitio web:
www.digilentinc.com. Se observa que la tarjeta tiene diferentes elementos para entrada/salida o
almacenamiento de datos.
Para la implementación del comparador, es de esperarse que las entradas A y B se obtengan de los
interruptores, y las salidas: Mayor, Menor e Igual, se muestren en los LEDs. Por lo tanto, se
requiere conocer a que terminales del FPGA están conectados estos elementos.
25
Tutorial FPGAs y VHDL UTM/2012-A
Figura 51. Terminales del FPGA Spartan-3E de Xilinx incluido en la tarjeta Nexys 2.
En la figura 52 se muestra a que terminales del FPGA están conectados los dispositivos básicos de
entrada/salida. Sería necesario revisar el manual de la tarjeta si se va a emplear alguna interfaz
especializada, como RS-232, PS/2 o VGA; o bien, si se va a manejar alguna de las memorias
incluidas en la misma Nexys 2.
Figura 52. Conexión del FPGA con los dispositivos básicos de entrada/salida, en la tarjeta Nexys 2.
26
Tutorial FPGAs y VHDL UTM/2012-A
Dentro de los diferentes tipos de archivo que se pueden insertar, se debe seleccionar la opción
Implementation Constraints File, como se muestra en la figura 54, y se le asigna un nombre al
archivo, en este caso se le denominó terminales.
El archivo con las restricciones automáticamente se asocia con el archivo del diseño, si hubiera
más módulos se debería seleccionar al de mayor jerarquía. Luego, se muestra la información sobre
este nuevo archivo (figura 55) y se finaliza.
27
Tutorial FPGAs y VHDL UTM/2012-A
Con esto, el archivo de restricciones es ubicado en el área de archivos, en la figura 56 se puede ver
que el archivo está asociado con el comparador. Para modificarlo, el archivo debe seleccionarse
para que en el área de proceso se muestre la opción Edit Constrains (Text), que es un proceso
asociado a los archivos de restricciones. Al ejecutarlo, se abre el archivo vacío en el espacio de
trabajo (también se muestra en la figura 56).
La sintaxis para definir la asociación de las señales con las terminales del FPGA es la siguiente:
Donde con NET se hace referencia a la señal y con LOC se refiere a su ubicación. Por lo tanto, en el
archivo de restricciones debe insertarse:
# Entradas para el dato A
# Salidas
El signo # indica que el resto del renglón es un comentario. En la figura 57 se muestra al archivo de
restricciones modificado.
28
Tutorial FPGAs y VHDL UTM/2012-A
Es necesario realizar una asociación correcta de los pines del módulo VHDL con las terminales del
FPGA, dado que si se comete un error, por ejemplo, conectando una salida del FPGA con una
terminal que genera voltaje, se podría dañar a la tarjeta.
Con la aplicación PlanAhead es posible revisar la correcta ubicación de los pines en un entorno
gráfico. En la figura 58 se muestra la ejecución de esta aplicación, con la salida igual seleccionada
en la ventana I/O Ports, poniendo en color blanco a la terminal, tanto en el empaque (Package)
como en el dispositivo (Device).
Figura 58. Muestra gráfica de la ubicación de las terminales con la aplicación PlanAhead.
29
Tutorial FPGAs y VHDL UTM/2012-A
Existen otros tipos de restricciones, de área o temporización, pero éstas requieren definiciones
que son mucho más complejas.
9. Implementación.
30
Tutorial FPGAs y VHDL UTM/2012-A
En el resumen del proyecto (que se muestra en el área de trabajo) se pueden ver los recursos que
está usando el diseño dentro del FPGA, estos se observan en la figura 61.
Es posible explorar el interior del FPGA, para observar los recursos que está ocupando un diseño,
esto se consigue al dar un doble clic al proceso View/Edit Routed Design (FPGA Editor), dentro de
los procesos de Colocación y Ruteo (Place & Route) con esto se ejecutará al programa Xilinx FPGA
Editor, el cual mostrará el interior del FPGA con un aspecto como el de la figura 62.
La parte en Azul muestra el ruteo requerido por el diseño, no se distinguen los SLICEs y CLBs
utilizados, puesto que son muy pocos en comparación con el total de recursos disponibles.
31
Tutorial FPGAs y VHDL UTM/2012-A
Se pueden hacer acercamientos o bien dar un clic a los diferentes bloques para observar su
contenido. En la figura 63 se muestra un acercamiento de un CLB y un IOB que están siendo
utilizados por el diseño.
En la figura 64 se muestra un slice, en la parte inferior puede verse la ecuación lógica para uno de
sus LUTs.
Dentro de los procesos asociados al diseño (los cuales se obtienen al seleccionarlo), se encuentra
el proceso Generate Programming File, ubicado después de los procesos de implementación. Con
este proceso se crea el archivo para descargar en el FPGA, sin embargo, antes de ejecutarlo es
necesario definir uno de sus parámetros, para ello habrá que dar un clic derecho al proceso y
seleccionar la opción propiedades en el menú contextual, como se muestra en la figura 65.
32
Tutorial FPGAs y VHDL UTM/2012-A
Figura 65. Opción para el ajuste de las propiedades del proceso para generar el archivo de programación.
Con ello se abrirá la ventana mostrada en la figura 66, en donde se debe seleccionar la categoría
Startup Options y cambiar el valor de la propiedad FPGA Start-Up Clock para que tenga JTAG Clock,
este ajuste también se muestra en la figura 66.
Figura 66. Ajuste de las propiedades del proceso para generar el archivo de programación.
Después del cambio debe presionarse el botón Aplicar (Apply) y cerrar la ventana presionando OK.
Este cambio es necesario porque la programación del FPGA se hará a través de su interfaz JTAG y
por lo tanto, se requiere que en la misma interfaz se tenga la señal de reloj.
Una vez hecho esto es posible ejecutar al proceso Generate Programming File aplicándole un
doble clic. Si el proceso se realiza con éxito, se obtendrá un estado de éxito, como se muestra en
la figura 67.
33
Tutorial FPGAs y VHDL UTM/2012-A
En este momento ha sido creado al archivo con extensión BIT que será descargado en el FPGA, por
lo tanto, para descargas en la tarjeta Nexys 2 empleando la interfaz USB ya es posible cerrar al ISE
de Xilinx.
La tarjeta puede programarse desde dos diferentes puertos, el puerto JTAG o un puerto mini-USB,
el programa puede enviarse directamente al FPGA o a una FLASH, para que el FPGA cargue el
programa automáticamente, después de que es alimentada la tarjeta.
En la figura 68 se observa cómo en realidad es sólo por el puerto JTAG por el que se tiene acceso al
FPGA y a la Flash. La salida del controlador USB va dirigida hacia el puerto JTAG.
El cable JTAG es similar al de la figura 69, si se utiliza este medio, debe ejecutarse el proceso
Manage Configuratio Project (iMPACT), visible al expandir la opción Configure Target Device,
ubicado por debajo del proceso Generate Programming File.
En este caso se utilizará un cable USB, para ello se utilizará un programa denominado Adept,
proporcionado gratuitamente por Digilent, el acceso directo del programa Adept se muestra en la
figura 70.
34
Tutorial FPGAs y VHDL UTM/2012-A
Antes de ejecutar al programa Adept debe conectarse la tarjeta Nexys a la PC y energizarse, sino
se manejan elementos de hardware adicionales en los conectores de la tarjeta, como ocurre en
este ejemplo, la alimentación de la tarjeta puede tomarse del puerto USB de la PC.
La ventana del programa Adept se muestra en la figura 72. Si la tarjeta no está conectada o está
apagada, sólo se mostrará un mensaje pidiendo que se verifiquen las conexiones. Arregladas las
conexiones será suficiente con presionar al botón Initialize Chain para que el programa reconozca
a la tarjeta y se obtenga la ventana de la figura 72.
Figura 72. Interfaz del programa Adept, una vez que la tarjeta Nexys 2 ha sido reconocida.
35
Tutorial FPGAs y VHDL UTM/2012-A
Con el botón Browse relacionado con el FPGA, se busca al archivo con extensión BIT en la carpeta
del proyecto y se programa al FPGA presionando al botón Program. No se utilizan los botones
relacionados con la PROM, para no alterar su contenido. En la parte inferior de la ventana se
observará el progreso de la programación, como se muestra en la figura 73.
El diseño puede evaluarse modificando las entradas desde los interruptores para observar las
salidas en los LEDs.
Cabe aclarar que los recursos programables en el FPGA están basados en tecnología RAM, por lo
que si se retira la alimentación, el programa se perderá. Para evitar esto, el programa podría
almacenarse en la memoria FLASH, lo cual se evitará para mantener el programa de demostración.
Sin embargo, es conveniente aclarar que en la PROM no se puede programar un archivo con
extensión BIT, primero debería generarse el archivo para la PROM desde el ISE de Xilinx.
10. Conclusión
36
Tutorial FPGAs y VHDL UTM/2012-A
Para repasar el tutorial e iniciarse con la programación en VHDL, diseñar e implementar el circuito
decodificador de 3 a 8 mostrado en la figura 74.
Decodificador 3 a 8
s0
E0 s1
s2
E1 s3
s4
E2 s5
s6
s7
Figura 74. Circuito para repetir el tutorial.
Las entradas deberán tomarse de los interruptores y las salidas enviarse a los LEDs.
37