Sunteți pe pagina 1din 14

Curso VHDL Práctica 1.

Introducción al VHDL

PRÁCTICA 1. 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.

Material y equipo utilizado:

1 PC
1 Tarjeta BASYS 2
1 Cable USB para tarjeta BASYS

Introducción

Un lenguaje de descripción de hardware (HDL) es similar a un lenguaje de programación


típico, sin embargo, HDL se utiliza para describir el comportamiento y la estructura de
un sistema digital a diferencia de un programa que se ejecuta en una computadora.
Existen dos estándares IEEE para el HDL: VHDL (Very High Speed Integrated Circuit
Hardware Description Language) y Verilog HDL. Ambos se utilizan ampliamente en la
industria.

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.

La estructura general de un programa de VHDL está formada por módulos o unidades de


diseño, cada uno de ellos compuesto por un conjunto de declaraciones e instrucciones
que definen, describen, estructuran, analizan y evalúan el comportamiento de un sistema
digital.

Existen cinco tipos de unidades de diseño en VHDL, declaración de la entidad (entity),


arquitectura (architecture), configuración, declaración del paquete (package) y cuerpo del
paquete, aunque no siempre se utilizan todas.

Las dos secciones principales son la declaración de la entidad y el cuerpo de la


arquitectura.

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

Maribel Gómez Franco 1


Curso VHDL Práctica 1. Introducción al VHDL

retroalimentación), e inout (permite declarar a un puerto en forma bidireccional como


entrada/salida).

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).

Una arquitectura se define como la estructura que describe el comportamiento de una


entidad. Cada cuerpo de arquitectura está asociado con una declaración de entidad.
VHDL permite escribir los diseños usando varios estilos de programación clasificados
como: funcional, por flujo de datos y estructural. Estos estilos permiten describir un
diseño a diferentes niveles de abstracción, desde el uso de algoritmos hasta el nivel de
compuertas. El nombre asignado a los estilos de programación no es importante, debido
a que el diseñador debe elegir el más apropiado.

En esta práctica el estudiante conocerá el proceso completo para el diseño de una


calculadora utilizando la arquitectura funcional.

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.

2. Caja negra. La caja negra representa el diseño de la calculadora y determina cuáles


son las señales de entrada y salida que se requiere, ver Figura 1.

A
Calculadora Resultado

Operación

Figura 1 Caja negra de una calculadora.

Maribel Gómez Franco 2


Curso VHDL Práctica 1. Introducción al VHDL

3. Creación de un nuevo proyecto

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:

Name: Nombre del proyecto: escriba el nombre de su nuevo proyecto.


Location: Ubicación del proyecto: el directorio donde quiere almacenar el nuevo proyecto,
de preferencia en disco duro o memoria externa (Nota: NO especifique como ubicación del
proyecto una carpeta en el escritorio o en el directorio de Xilinx\bin). La ubicación del
proyecto no debe tener espacios.
Top-level source type: Tipo de fuente de alto nivel: HDL.

Ícono de
ISE

Figura 2 Ventana del navegador de proyectos de Xilinx.

4. Configuración del dispositivo

Seleccione Next para seleccionar el tipo de dispositivo. En la ventana de configuración,


Figura 3a, seleccione las características según se indica:
➢ Device Family: Familia utilizada FPGA/CPLD. Las tarjetas BASYS 2 incluyen
FPGAs de la familia Spartan3E.
➢ Device: El número real del dispositivo. Para la tarjeta BASYS seleccione
XC3S100E.
➢ Package: El tipo de encapsulado con el número de terminales. El encapsulado del
FPGA Spartan de la BASYS 2 es CP132.
➢ Speed Grade: El grado de velocidad es “-4”.
➢ Synthesis Tool: Herramienta de síntesis: XST [VHDL/Verilog]
➢ Simulator: Herramienta utilizada para simular y verificar la funcionalidad del
diseño. Escoja “ISim (VHDL/Verilog)”

Seleccione Next para guardar la configuración. En la Figura 3b se muestra el resumen


de la configuración de la tarjeta BASYS 2.

Maribel Gómez Franco 3


Curso VHDL Práctica 1. Introducción al VHDL

Figura 3 a) Configuración de dispositivo BASYS 2. b) Resumen de la configuración.

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.

5. Creación del módulo VHDL

Seleccione Project>New Source>VHDL Module, y asigne un nombre al archivo.


Asegúrese de que la opción Add to Project está seleccionada, de lo contrario tendrá que
agregar el archivo manualmente.

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 1 Ventana para crear un archivo fuente.

Maribel Gómez Franco 4


Curso VHDL Práctica 1. Introducción al VHDL

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

Listado 1. Esqueleto de la fuente.

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.

Maribel Gómez Franco 5


Curso VHDL Práctica 1. Introducción al VHDL

Tabla 1 Funcionamiento de la calculadora


Código en Ejemplo
Operación Salida
operación A B Operación
0001 A+B 0110 0100 0001 0000 1010
0010 A-B 1001 0101 0010 0000 0100
0100 AxB 0111 0011 0100 0001 0101
1000 Complemento a 1 1100 0011 1000 0011 1100
0011 Complemento a 2 1011 1110 0011 0101 0010

En el listado 2 se muestra el código completo de la entidad y la arquitectura. Las


operaciones aritméticas suma, resta y multiplicación son soportadas por el paquete
ieee.std_logic_unsigned.all, por lo tanto, es necesario agregar este paquete para que se
puedan resolver estas operaciones, que en esta práctica se realizan con números sin
signo.

La calculadora realiza varias operaciones según el código que se reciba en la entrada, en


este diseño se utiliza la estructura case-when la cual evalúa el código de la operación y
realiza el cálculo aritmético correspondiente a dicha operación. La última operación que
evalúa es “when others”, esto significa que cuando se presente cualquier otra
combinación que sea diferente a las que están especificadas para el código de operación,
genera ceros en la salida.
Escriba el código faltante en el módulo VHDL de su proyecto.

AGREGAR

Listado 2. Programa para el diseño de la calculadora.

7. Síntesis e implementación del diseño

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

Maribel Gómez Franco 6


Curso VHDL Práctica 1. Introducción al VHDL

Design, para implementar el diseño. Cuando selecciona la opción Implement Top


Module realiza la síntesis y la implementación automáticamente.

Figura 3. Síntesis e implementación del diseño.

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.

Figura 4. Circuito de entradas/salidas. a) FPGA b) Tarjeta BASYS 2.

Maribel Gómez Franco 7


Curso VHDL Práctica 1. Introducción al VHDL

Figura 5 (Cont.). Circuito de entradas/salidas. a) FPGA b) Tarjeta BASYS 2.

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”.

En el menú principal seleccione Project> NewSource> Implementation Constraints


File, ver figura 7, asigne un nombre al archivo y asegúrese de que la opción Add to
Project está habilitada. Elija la opción Next. El archivo *.ucf que se genera está en
blanco.

Figura 6. Agregar el archivo de asignación de terminales.

Maribel Gómez Franco 8


Curso VHDL Práctica 1. Introducción al VHDL

Figura 7. Ventana para habilitar la edición del archivo de asignación de terminales


(hacer doble clic sobre Calculadora.ucf).

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.

Listado 3. Archivo de configuración de terminales para la tarjeta BASYS 2.

Maribel Gómez Franco 9


Curso VHDL Práctica 1. Introducción al VHDL

En el panel Design seleccione el archivo *.ucf y en el panel Processes elija User


constraints>Edit Constraints, ver figura 8, e introduzca la información mostrada en el
listado 3. Primero se escribe la palabra NET reservada para las terminales, enseguida se
escribe entre comillas el nombre de la entrada definido el programa VHDL, a la cual se le
asigna el número de la terminal del FPGA, por ejemplo A(3), posteriormente se escribe la
palabra LOC = seguida del nombre de la terminal del FPGA. Guarde el archivo de
asignación de terminales.

9. Generación del archivo de programación del FPGA

En el panel de diseño, seleccione el archivo fuente (*.vhd). En el panel de procesos


presione el botón derecho del ratón sobre “Generate Programming File” elija
propiedades y en la ventana que aparece, figura 9, seleccione “Startup Options”.
Asegúrese de seleccionar en FPGA Start-Up Clock la opción JTAG Clock (por omisión
es CCLK).

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.

Figura 8. Configuración de inicialización del FPGA.

Maribel Gómez Franco 10


Curso VHDL Práctica 1. Introducción al VHDL

Figura 9. Generación de archivo *.bit.

10. Configuración y programación de la tarjeta BASYS de Digilent

Conecte el puerto USB de la tarjeta BASYS 2 a cualquier puerto USB disponible de su


computadora. Energice la tarjeta, deslizando el interruptor de encendido SW8, ver figura
11.

Puerto
USB

Interruptor
de encendido

Interruptores

Figura 10. Tarjeta BASYS 2 de Digilent.

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.

Maribel Gómez Franco 11


Curso VHDL Práctica 1. Introducción al VHDL

Figura 11. Ventana de inicio de Digilent Adept.

Figura 12. Selección del dispositivo y archivo.

Maribel Gómez Franco 12


Curso VHDL Práctica 1. Introducción al VHDL

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

En la tabla 1, de la sección de resultados y conclusiones, registre los valores de las


entradas A, B, operación y de la salida resultado, en decimal y binario según se indique,
para comprobar el funcionamiento del circuito.

12. Revisión de práctica.

Para revisar la práctica el equipo deberá configurar todas las combinaciones listadas en
la tabla 1.

Referencias

1. Lab 3 “Programming Combinational Logic on Basys FPGA Board” Manual EE120A


Logic Design University of California – Riverside.
2. Digital Circuit Design Using Xilinx ISE Tools.
3. Digilent Basys Board Reference Manual.

Maribel Gómez Franco 13


Curso VHDL Práctica 1. Introducción al VHDL

Resultados y conclusiones

1. Verificación. Realice las conversiones de A y B a binario según se indica en la tabla,


calcule el resultado en decimal y verifique que el resultado obtenido en binario sea el
correcto.
Tabla 2 Verificación

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

Maribel Gómez Franco 14

S-ar putea să vă placă și