Documente Academic
Documente Profesional
Documente Cultură
Introducción al VHDL
Objetivo: el alumno diseñará una calculadora digital con VHDL utilizando el programa
ISE Design Suite de Xilinx e implementará su diseño en un dispositivo lógico programable
–FPGA- incluido en la tarjeta BASYS2 de Digilent.
1 PC
1 Tarjeta BASYS 2
1 Cable USB para tarjeta BASYS
Introducción
El uso de VHDL ofrece ciertas ventajas con respecto a la captura del diagrama, como es
la portabilidad, es decir, que un diseño en VHDL se puede realizar con diferentes tipos
de circuitos integrados y con herramientas CAD que proveen diferentes compañías, sin
cambiar las especificaciones de VHDL.
Una entidad es una abstracción del diseño que puede representar un sistema completo,
una tarjeta, circuito integrado, una pequeña función o una compuerta lógica. Una
declaración de entidad describe las entradas y salidas del diseño. Una entidad se puede
relacionar con la caja negra de algún diseño, en la que sólo se identifican las entradas y
las salidas del sistema digital, es decir, no se define su funcionamiento.
Las señales de entrada y salida en una entidad se conocen como puertos, similares a una
terminal de un diagrama de circuito integrado. Todos los puertos que se declaran en la
entidad deben tener un nombre que lo identifique, una dirección (modo) y un tipo de dato.
Un modo puede tener uno de cuatro valores: in (el flujo de datos es hacia la entidad), out
(el dato fluye de la fuente al puerto de salida de la entidad, este modo no permite
Los tipos de datos son los valores que el diseñador establece para los puertos de entrada
y salida de la entidad. Algunos de los tipos más utilizados son, bit (tiene valores de 0 y 1
lógico), boolean (define valores de verdadero o falso en una expresión), bit_vector
(representa un conjunto de bits para cada variable de entrada o salida) e integer
(representa un número entero).
Procedimiento
1. Descripción del problema. Diseñe una calculadora básica que acepte como entradas
dos números de cuatro bits, A y B, y que realice las operaciones complemento a 1,
complemento a 2, suma (A+B), resta (A-B), y multiplicación (A*B). La operación se
selecciona por medio de cuatro bits y el resultado se muestra con ocho bits.
A
Calculadora Resultado
Operación
Ejecute la aplicación ISE Design Suite de Xilinx para abrir la ventana de navegador de
proyectos; esta ventana muestra el último proyecto con el que se trabajó. Seleccione New
Project para abrir la ventana de nuevo proyecto, ver Figura 2. Es necesario introducir la
siguiente información:
Ícono de
ISE
Todos los archivos generados para el proyecto como son archivos HDL, esquemático,
listas de nodos, simulación, etc., se almacenarán la carpeta del proyecto.
Seleccione Next. En la caja negra que se dibujó para la calculadora se definieron como
entradas las señales A, B y el código de la operación de 4 bits, como salida se definió el
resultado de 8 bits. En este diseño todas las señales se definen como vectores, esto es,
como un conjunto de bits. En Port Name se escribe el nombre que se asigna a cada señal.
En Direction se indica el modo, esto es si la señal es de entrada, in, o salida, out. Como
todas las señales se declaran como vectores, se activa la opción Bus, para las señales de
4 bits MSB es 3 y LSB es 0, para las señales de 8 bits MSB es 7 y LSB es 0, ver figura 4a.
Cuando se define un vector, el número que está a la izquierda de downto es el bit más
significativo y el número de la derecha es el más significativo, por ejemplo, en 3 downto
0, 3 es el MSB y 0 es el LSB.
Figura 2. a) Ventana para definir los puertos del módulo VHDL. b) Resumen de las
especificaciones de la nueva fuente
Después de declarar todas las señales, seleccione Next, enseguida aparece la ventana de
resumen de las especificaciones de la nueva fuente, figura 4b.
Al seleccionar Finish se crea el esqueleto del programa en VHDL, ver listado 1, en el cual
se carga la librería IEEE, el paquete básico de STD_LOGIC y la entidad con sus puertos
ya definidos. Lo que resta por determinar es la arquitectura.
Declaración de librerías
Declaración
de la entidad
Declaración de
la arquitectura
6. Diseño de la arquitectura
Las operaciones que va a realizar la calculadora quedan definidas por un código binario,
como se indica en la tabla 1.
AGREGAR
El diseño se tiene que sintetizar para verificar si hay errores y corregirlos. En el panel de
procesos seleccione Synthesize-XST, en caso de no aparecer la opción de Run haga click
derecho sobre Synthesize-XST luego seleccione Run o ReRun . Si se generan errores es
necesario corregirlos, y volver a sintetizar hasta que dejen de aparecer errores. En la
mayoría de los casos, los errores son de sintaxis. Posteriormente, seleccione Implement
8. Asignación de terminales
En este paso se asignan las variables de entrada y salida del diseño en VHDL a las
terminales del FPGA, las cuales están conectadas a los interruptores y LEDs de la tarjeta
BASYS.
La asignación de terminales es necesaria dado que el programa Xilinx ISE Design Suite
al sintetizar la configuración interna no sabe qué terminales del FPGA se van a asignar a
las entradas y salidas. En la figura 6 se muestra la distribución de terminales de entradas
y salidas del FPGA Spartan 3E de la tarjeta BASYS 2. El nombre de la terminal también
se puede obtener directamente de la tarjeta BASYS 2, por ejemplo, el LED0 está en la
terminal M5, LOC=“M5”.
Las terminales del FPGA se asignan de una por una. En este diseño las entradas y salidas
A, B, operación y resultado, se definieron como vectores, esto es un conjunto de bits.
Estos vectores se pueden descomponer en bits individuales, por ejemplo, la entrada A se
definió como un vector de 4 bits, [A : in STD_LOGIC_VECTOR (3 downto 0)], estos bits van
del bit 3 al bit 0, de manera individual se identifican como A(3), A(2), A(1) y A(0), entre
paréntesis se pone el número de cada bit. La definición (3 downto 0) indica que el bit más
significativo es el 3 y el menos significativo el 0.
En el panel de procesos seleccione “Generate Programming File”, ver figura 10, para
generar el archivo *.bit, el cual se almacena en la carpeta del proyecto, siempre verifique
que se haya creado. El archivo *.bit contiene el diseño que se programará al FPGA.
Puerto
USB
Interruptor
de encendido
Interruptores
Ejecute el programa Digilent Adept, la ventana que se despliega aparece en la figura 12.
El programa detecta automáticamente el tipo de tarjeta que se está utilizando, en caso de
que no aparezca el modelo de tarjeta revise que esté encendida y bien conectada. Si aún
no la detecta, presione el botón Initialize Chain.
Agregue el archivo tipo bit creado por Xilinx ISE Design Suite, seleccione Browse para
buscar el archivo en la carpeta del proyecto. Una vez seleccionado el archivo presione la
opción Program, para descargar el código tipo bit hacia el FPGA, ver figura 13. Asegúrese
de que aparezca en la pantalla el mensaje “Programming Successful”.
11. Verificación
Para revisar la práctica el equipo deberá configurar todas las combinaciones listadas en
la tabla 1.
Referencias
Resultados y conclusiones
Decimal Binario
Operación
A B Resultado A B Operación Resultado
A+B 6 4
A-B 9 5
Complemento
11 14
a2
A+B 14 13
Complemento
1 12
a1
A*B 12 10
A+B 10 5
Complemento
8 3
a1
A-B 15 4
Complemento
4 7
a2
A*B 2 15
Complemento
9 2
a1
A*B 7 3
A-B 13 8
Complemento
2 12
a2