P4 - Introducción A Programación VHDL
P4 - Introducción A Programación VHDL
P4 - Introducción A Programación VHDL
INGENIERIA EN INFORMATICA
Prácticas IV
EN PLATAFORMA XILINX
Participantes:
______________________________________________________
______________________________________________________
______________________________________________________
Fecha de realización:
Introducción:
VHDL ESTRUCTURA Y ORGANIZACIÓN
Página 2
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Al emplear dispositivos programables de muy bajo costo, conocidos por sus siglas en inglés como GAL
(Arreglos Lógicos Genéricos), los cuales se utilizan con mucha frecuencia en proyectos donde lo que se
requiere de manera primordial es la interconexión de algunos dispositivos convencionales como
multiplexores, comparadores, sumadores, etcétera; estos chips pueden adquirirse de manera individual
y ser programados en grabadores convencionales.
En el caso de que la solución requiera de un mayor número de componentes lógicos o "pins" de salida,
pueden utilizarse circuitos CPLD (por sus siglas en inglés; Dispositivos Lógicos Programables
Complejos), los cuales también se consiguen de forma individual o como parte de un sistema de
desarrollo.
Por otro lado, si el proyecto lo amerita, es posible utilizar los FPGA (por sus siglas en inglés, Arreglo de
Compuertas Programables en Campo). recomendados para ser empleados y programados dentro de un
sistema de desarrollo y en aplicaciones con tendencia hacia el desarrollo de sistemas completos dentro
de un solo circuito integrado SOC (System On Chip).
VHDL SU ESTRUCTURA
• Library - Bibliotecas
• Entity - Entidad
• Architecture - Arquitectura
• Package - Paquete
• Component-Componente
Página 3
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
ENTIDAD (entity)
Una entidad básicamente representa la caracterización del dispositivo físico: es decir, exhibe las
entradas y las salidas del circuito (llamados pines) que el diseñador ha considerado pertinentes para
integrar su idea o aplicación, en la siguiente Figura se puede observar con detalle la secuencia de
desarrollo. Con base en esta idea, una entity -por la palabra reservada del programa- constituye un
bloque de diseño que puede ser analizado y programado como un elemento individual, ya sea como una
compuerta, un sumador o us decodificador, entre otros, incluso ser considerado como un sistema a
través de su relación entre entradas y salida punto de observación de conexión a elementos periféricos
propios de la aplicación.
En los siguientes ejemplos, en a) la entidad proporciona los pines de salida “d3, d2, d1, d0” para el
control de un motor paso a paso mientras que en b) la entidad se conecta a un visualizador de 7
segmentos
Página 4
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
PUERTOS DE ENTRADA-SALIDA
Cada una de las señales de entrada y salida en una entidad es referida como un puerto, el cual es
equivalente a una terminal (pin) de un símbolo esquemático. Todos los puertos que son declarados
deben tener:
• un nombre,
• un modo y
• un tipo de dato
El nombre es utilizado como una forma de llamar al puerto, el modo permite definir la dirección que
tomara la información, mientras que el tipo precisa qué clase de información se transmitirá a través del
puerto. Por ejemplo, en el caso de los puertos de la entidad representada en la figura 15, aquellos que
son de entrada están indicados por las variables a y b. mientras que el puerto de salida se representa
por la variable c.
Página 5
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Modos
Como se mencionó antes, un modo permite definir la dirección hacia donde el dato es transferido. Un
modo puede tener uno de cuatro valores:
• in (entrada),
• out (salida),
• inout (entrada/salida) y
• buffer
Modo in. Se refiere a las señales de entrada a la entidad. El modo in es solo unidireccional y
únicamente permite el flujo de datos hacia dentro de la entidad.
Modo inout. Permite declarar a un puerto de forma bidireccional, es decir como de entrada/salida,
además hace posible la retroalimentación de señales dentro o fuera de la entidad. .
TIPOS DE DATOS
Los tipos son los valores (datos) que el diseñador establece para los puertos de entrada y salida dentro
de una entidad, y que son asignados de acuerdo con las características de un diseño en particular.
Algunos de los tipos más utilizados son:
Página 6
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Los anteriores son solo algunos de los tipos que maneja VHDL, aunque no son los únicos. Los tipos de
datos y su uso los introduciremos conforme se vayan requiriendo.
DECLARACIÓN DE ENTIDADES
La declaración de una entidad consiste en describir las entradas y las salidas de un circuito identificado
como Entity (entidad), en otras palabras, la declaración señala las terminales o los pines de entrada y
de salida con los que cuenta el circuito. Por ejemplo, considérese la tabla de verdad que se muestra a
continuación, como se puede observar. ésta tiene tres entradas, A. B y C, y dos salidas, F0 y F1. En
este caso, a la entidad se le ha identificado con el nombre de TABLA, tal y como se muestra.
La descripción de este programa se muestra a continuación, donde los números de las lineas (1. 2. 3. 4.
5) no son parte del código y serán utilizadas como referencia para explicar alguna sección en particular.
En tanto, las palabras en negritas están reservadas para el lenguaje de programación, es decir tienen
un significado especial para el programa:
Ahora comencemos con el análisis del código línea por línea por línea.
Página 7
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
La línea 1 inicia con dos guiones(--), los cuales indican que el texto que está a la derecha es un
comentario, estos se usan únicamente con el fin de documentar el programa, ya que todos los
comentarios son ignorados por el compilador
En la linea 2 se empieza la declaración de la entidad utilizando la palabra reservada entity, seguida del
identificador o nombre de la entidad Tabla (para este ejemplo) y la palabra reservada is
Los puertos de entrada y salida (port) son declarados en las lineas 3 y 4, respectivamente, en este caso,
los pines de entrada son A B y C mientras que los puertos de salida están representados por F0 y F1.
Si se observa con atención la tabla de verdad, es posible apreciar que en su descripción solo se utilizan
valores lógicos (0 y 1) por tanto, es de suponer que el tipo de dato empleado en la declaración es bit.
Por último, en la línea 5 termina la declaración de entidad con la palabra reservada end, seguida del
nombre de la entidad Tabla.
Como en cualquier lenguaje de programación, es importante hacer notar que VHDL también sigue una
sintaxis y una semántica en el código de programación, las cuales es necesario respetar lo siguiente
• Dos puntos (:): en este caso se usan como separador entre el nombre de los puertos y los modos de
entrada.
• El paréntesis: después del modo de salida out bit cierra la declaración de los puertos (port).
Página 8
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
SOLUCIÓN: En este caso se puede apreciar que existen varios modulos individuales los cuales en
conjunto forman una entidad general. Además las salidas C3, C2, C1, C0, deben considerarse como
inuot, es decir señales de entrada y salida, dado que en la estructura interna se observa que la salida
de cada una de estas se retroalimenta a la entrada del siguiente modulo.
IDENTIFICADORES
Los identificadores son simplemente los nombres o las etiquetas que se usan para hacer referencia a
variables: constantes, señales, procesos, etc. Estos identificadores pueden ser números, letras del
Página 9
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
alfabeto y/o guiones bajos que separan caracteres. Es importante resaltar que no existe una restricción
en cuanto a su longitud. Todos los identificadores deben seguir ciertas especificaciones o reglas para
que puedan ser compilados sin errores.
La entidad Proyecto se muestra en la siguientet tabla, mediante: a) sus bits individuales A3, A2, A1, etc.
y en b). La entidad puede esquematizarse mediante un bus, un grupo de cables de conexión, tanto los
cables de entrada como de salida de cada una de las variables involucradas.
Página 10
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
En VHOL el conjunto bits ordenados pueden considerarse como vectores de bits los cuales deben
tomarse en cuenta en grupo y no como bits individuales. Asimismo en VHDL ta manera de describir una
configuración que use vectores radica en la utilización de la sentencia bit_vector, así la forma en la que
se ordenan se indica como ascendente “to” como descendente “downto”. Por su parte, el rango o el
número de bits que utiliza el vector se representa en la notación siguiente:
0 to 3 (de 0 hasta 3)
Arreglo ascendente A (A0, A1, A2, A3)
B (B0, B1, B2, B3)
Así por ejemplo, la sentencia 3 downto 0 involucra un vector de 4 bits (3:0). Consideremos
la entidad Proyecto y el código de programación siguiente:
Un aspecto importante en la programación con VHDL radica en el uso de librerías y paquetes que
permiten declarar y almacenar estructuras lógicas, seccionadas o completas y que facilitan el diseño
Página 11
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Una librería (biblioteca) es un lugar al cual se accede para emplear las unidades de diseño
predeterminadas por el fabricante de la herramienta (paquete) y que se aplican para agilizar el diseño,
además de que también permiten almacenar el resultado obtenido de la compilación de un diseño con
el fin de que este pueda ser utilizado dentro de uno o varios programas.
En VHDL se encuentran definidas diversas libretas, su cantidad depende de las herramientas que el
fabricante de software ha instalado. Por lo general siempre hay dos librerías ieee y work en "Cypress
Semiconductor.
Al interior de la librería ieee se ubica el paquete std_logic_1164, mientras que en la librería work se localizan los
paquetes numeric_std, std_arith y gates.
Un paquete es una unidad de diseño que permite desarrollar un programa en VHDL de manera ágil
debido a que en este encuentran algoritmos preestablecidos (sumadores, restadores, contadores, etc.)
que ya tienen optimizado un determinado comportamiento Por esta razón, el diseñador no necesita
caracterizar paso a paso una nueva unidad de diseño si esta ya se ubica almacenada en paquete, en
este caso solo bastaría llamarlo y especificarlo dentro del programa.
Por tanto, un paquete no es más que una unidad de diseño formada por declaraciones, programas
componentes y subprogramas que incluyen los diversos tipos de datos (bit, booleano, std_logic)
empleados en la programacion en VHDL y que por lo general forman parte de las herramientas en
software, Cuando en diseño se utiliza algún paquete es necesario llamar a la librería que lo contiene, lo
cual se lleva a cabo a través de la siguiente declaración:
library ieee
Esta declaración permite el empleo de todos los componentes incluidos en la librería ieee. En el caso
de la librería de trabajo (work) su uso no requiere de la declaración library, dado que la carpeta work
siempre está presente al desarrollar un diseño
ARQUITECTURA (architecture)
Página 12
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Una arquitectura define ei algoritmo o la estructura de solución de una entidad en esta se describen las
instrucciones o los procedimientos programa que deben llevarse a cabo para obtener la solución
deseada por el diseñador. La gran ventaja que presenta VHDL con respecto a los compiladores
tradicionales de diseño PALASM, OPAL, PLP ABEL y CUPL, entre otros disponibles para la
programación de Dispositivos Lógicos Programables, es la extensa variedad de formatos con los que
cuenta y que utiliza en la descripción de una entidad. Es decir, en VHDL es posible describir en diferentes
niveles de abstracción que van desde el uso de ecuaciones y estructuras lógicas, la descripción
mediante la simbología de la transferencia de registros RTL hasta la simplicidad que puede representar
una caja negra-sistema, cuya interpretación es una Función de transferencia, la relación entre entradas
y salidas describe el funcionamiento de la entidad. No obstante, en VHDL no existe de manera formal
un procedimiento de diseño. Como ya se menciono, la versatilidad en la abstracción y la descripción de
una entidad permiten al usuario la tarea de planear la estratega por utilizar para una solución en
particular. Sin duda, la experiencia en programación puede ser un factor importante de diseño, sin
embargo, VHDL posee una estructura de programación tan amigable que es muy fácil de entender aun
por personas que no han tenido relación alguna con lenguajes de programación. De manera general y
con base en cómo se presenta la entidad (entity), a primera vista, en VHDL se pueden distinguir los
siguientes estilos de programación.
• Estilo funcional
• Estilo estructural
La descripción por flujo de datos muestra con detalle la transferencia de información entre las entradas
y las salidas de una entidad. Este estilo, totalmente comprensible para el usuario, se recomienda para
quienes recién se inician en la programación en VHDL. en materias como diseño lógico, donde las tablas
de verdad y las ecuaciones lógicas son parte fundamental en la descripción de un circuito lógico.
EJEMPLO 1.
Considérese la tabla de verdad de la siguiente figura, como se puede observar la tabla tiene dos entradas. A y
B. y dos salidas. F0 y F1.
Página 13
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
F0 = /A*/B + /A*B
F1 = /A*/B + /A*B + A*/B
A continuación se realiza la descripción del código línea por línea. En las líneas 2 y 3 se escriben la
librería y el paquete respectivamente. En tanto de las líneas 4 a la 7 se escribe la entidad. Como se
puede ver las entradas y las salidas se utilizaron de manera individual, nótese que en estas se mezcló
el uso de letras mayúsculas y minúsculas. lo cual resulta "irrelevante para el compilador”.
Página 14
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
OPERADORES LÓGICOS
Los operadores lógicos que se utilizan en la descripción con ecuaciones booleanas y que están definidos
dentro de los diferentes tipos de datos-bit, boolean o std logic son los operadores: and, or nand, nor,
xor, xnor y not.
Las operaciones que se efectuen entre estos (excepto not) deben realizarse con datos que tengan la
misma longitud o palabra de bits Los operadores lógicos presentan el siguiente orden y prioridad al
momento de ser compilados:
Las operaciones xor y xnor son transparentes al compilador que las interpreta mediante la suma de productos
correspondiente a su función.
Página 15
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Instalación de licencias
De la pantalla debemos seleccionar el producto del que queremos la licencia, en nuestro caso será Licencia ISE
WebPACK. Una vez que se seleccionó el producto darle próximo.
Página 16
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Página 17
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Al abrir el link tendrán la siguiente pantalla, deben seleccionar la version 14.7, no se confundan con la que dice
Windows 10, esa suele tener problemas, dirijanse a la que dice 14.7 solamente.
Página 18
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Se les desplegaran varios apartados, pero deben ir al que dice Full Product installation, y seleccionar el Full
Instaler for Widnows 7/XP/ Server, al darle click les pedirá iniciar sesión, de no contar con la sesión deberan
crear una y llenar otros datos.
Página 19
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Es importante que den el nombre del IPN, el domicilio, código postal, teléfono y escriban que son estudiantes,
etc
Nos pedirá la activación de la cuenta desde nuestro correo donde fue enviada la clave de activación, que es
copiar y pegar el Access token en el campo de verificación
Página 20
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Una vez descargado el instalador, es necesario descargar una licencia, tenemos que volver al primer link que
ocupamos, ir a la misma versión, y en el primer apartado seleccionar License solution center
Click en Xilinx Product Licensing Site, pedirá de nuevo datos, llenar y dar click en next
Página 21
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Seleccionar la opción que diga Vivado Design Suite – Certificade No charge. O Ise Web Pack. Suele variar. En
mi caso no me sale por que yo ya la descargue, si ustedes también ya la han descargado en alguna ocasión,
vayan al apartado Manage Licenses, ahí podrán descargarlo de nuevo. Al haber seleccionado la casilla
correspondiente dar click en Generate Node Locked License. Con eso la licencia debería llegar a su correo en
un archivo .lic. Descarguenla y tenganla en una carpeta bien ubicada pues se utilizará para la instalación.
Página 22
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Ejecutar xsetup.exe
Página 23
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Página 24
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Designar directorio y dar en next, de preferencia dejar el que viene por default.
Página 25
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Dar click en install, esperar el proceso, y si aparece cualquier ventana, solo darle en aceptar
Click en finalizar.
Página 26
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Ingresar a la ruta donde este la licencia que descargamos del correo y seleccionarla.
Página 27
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
DESARROLLO PRACTICO.
2. Seleccione el icono correspondiente y aplique doble clic para accesar al software de desarrollo,
Página 28
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
La ventana Did you know… son tips de aprendizaje sobre el programa que aparecerá cada vez que iniciemos
el software. Damos clic en OK para cerrarla.
4. En la parte superior izquierda localizamos cuatro botones y damos clic sobre la opción NEW PROYECT
y nos abrirá una nueva ventana solicitando los datos del proyecto:
Es importante que en la selección de tipo de fuente –Top level source file – elegir la opción HDL,
como se muestra en la siguiente figura.
Página 29
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
5. De acuerdo a nuestra tarjeta de desarrollo MOJO V3, seleccionar los parámetros indicados en la siguiente
figura.
Página 30
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Para continuar es necesario posicionarse en el icono de la ruta del proyecto, ver siguiente figura y seleccionar
con el botón derecho del mouse NEW SOURCE, como se muestra.
Para la edición del programa seleccione la opción VHDL MODULE y escriba el nombre del archivo en
el campo correspondiente, este puede ser diferente al nombre asignado al proyecto.
Posteriormente active la casilla - Add to Project – para agregar este archivo al proyecto general.
Página 31
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
La siguiente ventana se utiliza para escribir el nombre las variables y modo de los puertos de
entrada y salida que se van a utilizar.
Página 32
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Página 33
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Guardamos nuestro programa fuente y procedemos a revisar la sintaxis del programa VHDL
considere el icono de la trayectoria del modulo VHDL, lo selecciona y con botón derecho
seleccione – synthesize XST / Check Syntax…
Tardara un momento en la ejecución de este proceso y nos indicara con una palomita en verde, para
indicar que todo es correcto o una cruz en rojo para indicar algún fallo.
Página 34
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Procedemos a la compilación del proyecto dando doble clic en Sinthesize XST y debemos obtener
también la palomita verde indicando que todo es correcto.
Procedemos a la simulación del proyecto mediante diagrama de tiempos. Para ello nos
posicionamos en el icono de la trayectoria del modulo VHDL y seleccionamos el botón de
simulación en la pestaña superior. Ver siguiente imagen.
Página 35
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Obteniendo el resultado con la palomita verde, procedemos a dar doble clic sobre Simulate Behavioral.
Página 36
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Para asignar los valores de cada una de las variables de entrada seleccione cada una de ellas con
el botón derecho del mas y en el menú que se despliega seleccione Force Constan.
Hacemos este procedimiento para cada variable en cada uno de los posibles estados de nuestra
tabla de verdad.
Página 37
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
ENTRADAS SALIDAS
Página 38
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Página 39
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Página 40
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Para ver una corrida completa de todas los casos de simulación realizadas hacemos clic en el icono
Zoom to full View.
Y también podemos revisar cada simulación posicionándonos en el inicio del diagrama de tiempos
con el icono go to time0 y revisar paso a paso con el icono Next Transition las simulaciones
realizadas.
Página 41
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Con la simulación comprobamos que nuestro proyecto esta trabajando de acuerdo con nuestras
expectativas.
Página 42
PRACTICA IV
INTRODUCCIÓN A LA PROGRAMACIÓN VHDL
Damos clic en Finish y se desplegara la ventana donde escribiremos el programa con la asignación de puertos
de entrada y salida de nuestro proyecto.
Página 43