Manual de Vhdl Utilizando Xilinx-Ise(2)

23
 Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003  Práctica 0 Manual de VHDL utilizando Xilinx-ISE Autores: Pablo Haya, Gustavo Sutter. Escuela Politécnica Superior - UAM OB J JETI V VO  El objetivo de este manual es presentar los fundamentos básicos del lenguaje de especificación hardware VHDL. El manual consta de tres partes: en la primera se mostrará paso a paso como especificar y simular un diseño lógico con VHDL utilizando la herramientas herramientas comerciales, ISE, perteneciente a la empresa  Xilinx y  ModelSim, comercializada por la empresa  ModelWork . La segunda parte del manual  presenta una breve introducción a VHDL. En la última se planteará un ejercicio a resolver por el alumno. Flujo de diseño FIN FALLO OK Problema SI  Verificación Síntesis Diseño NO Figura 1 Flujo de diseño que se va a seguir en la asignatura El flujo de diseño se divide en tres etapas claramente diferenciadas: 1. Diseño: en esta fase el diseñador plasma los requerimientos del sistema utilizando un lenguaje formal de representación. Este puede ser gráfico o textual. Actualmente en el diseño de circuitos digitales se utilizan: Herramientas gráficas de captura de esquemáticos. Lenguajes de diseño de hardware (hdl ): describen los componentes del sistema utilizando una descripción textual. Los dos lenguajes más extendidos en la industria son VHDL y Verilog. 2. Síntesis: esta fase sólo es necesaria en el caso de utilizar un lenguaje hdl . Estos lenguajes son independientes de la tecnología que se utilice para implementar el sistema. Por otro lado permiten mucha flexibilidad para describir el diseño, más Escuela Politécnica Superior – UAM 1/22

description

Practicas de laboratorio

Transcript of Manual de Vhdl Utilizando Xilinx-Ise(2)

Page 1: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 1/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Práctica 0

Manual de VHDL utilizando Xilinx-ISE

Autores:Pablo Haya, Gustavo Sutter.

Escuela Politécnica Superior - UAM

OOBBJJEETTIIVVOO El objetivo de este manual es presentar los fundamentos básicos del lenguaje de

especificación hardware VHDL. El manual consta de tres partes: en la primera se

mostrará paso a paso como especificar y simular un diseño lógico con VHDL utilizando

la herramientas herramientas comerciales, ISE, perteneciente a la empresa  Xilinx  y ModelSim, comercializada por la empresa  ModelWork . La segunda parte del manual

 presenta una breve introducción a VHDL. En la última se planteará un ejercicio a

resolver por el alumno.

Flujo de diseño

FIN 

FALLO

OK Problema

SI  Verificación Síntesis Diseño 

NO

Figura 1 Flujo de diseño que se va a seguir en la asignatura

El flujo de diseño se divide en tres etapas claramente diferenciadas:

1. Diseño: en esta fase el diseñador plasma los requerimientos del sistema

utilizando un lenguaje formal de representación. Este puede ser gráfico o

textual. Actualmente en el diseño de circuitos digitales se utilizan:

• Herramientas gráficas de captura de esquemáticos.

• Lenguajes de diseño de hardware (hdl ): describen los

componentes del sistema utilizando una descripción textual.

Los dos lenguajes más extendidos en la industria son VHDL y

Verilog.

2. Síntesis: esta fase sólo es necesaria en el caso de utilizar un lenguaje hdl . Estoslenguajes son independientes de la tecnología que se utilice para implementar el

sistema. Por otro lado permiten mucha flexibilidad para describir el diseño, más

Escuela Politécnica Superior – UAM 1/22

Page 2: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 2/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

allá de una representación estructural. Esta fase será la encargada de convertir la

representación hdl  del diseño a un formato estándar de representación.

3. Verificación: Una vez sintetizado el diseño es necesario verificar si cumple con

las especificaciones del problema. Para ello realizaremos un banco de prueba

(testbench) que prueba lo más exhaustivamente posible el diseño

Requisitos del problemaComo ejemplo se va a implementar en VHDL una función lógica de cuatro entradas

y dos salidas que responde a la siguinte tabla de verdad:

D C B A X Y

0 0 0 0 0 0

0 0 0 1 0 0

0 0 1 0 1 00 0 1 1 0 0

0 1 0 0 1 0

0 1 0 1 0 0

0 1 1 0 1 0

0 1 1 1 0 0

1 0 0 0 0 0

1 0 0 1 0 0

1 0 1 0 1 11 0 1 1 0 1

1 1 0 0 1 1

1 1 0 1 0 1

1 1 1 0 1 1

1 1 1 1 0 1

Tabla 1. Función lógica problema

Esto se puede expresar de la siguiente manera:

X = AB + ACY= DB + DC  (1)

Sacando factor común, las dos ecuaciones quedan en función de (B+C):

X = A(B + C)Y= D(B + C) 

(2)

Escuela Politécnica Superior – UAM 2/22

Page 3: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 3/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

En un diseño basados en esquemáticos se necesitan cinco puertas lógicas para

implementar la formula (1) necesitan 6 puertas lógicas(4 AND, 2 OR y 1 inversor),

mientras que en la formula(2) al compartir ambas ecuaciones el termino (B+C) sólo son

necesarias cuatro puertas (ver Figura 2.) 

Figura 2. Esquemático de la función lógica propuesta

Project Navigator/Design Manager (Gestor de diseños)El Project Navigator es una herramienta distribuida por Xilinx que se encarga gestionar

todos las etapas del flujo de diseño. Esta herramienta es una interfaz que se monta sobre

todo el conjunto de programas que participan en el diseño. Cada uno de estos programas

actúa sobre un etapa concreta del diseño. El Project Navigator  ayuda:

• A conectarlos entre sí de manera coherente siguiendo el flujo de diseño

• Homogeneiza las llamadas a los programas utilizando una misma interfaz

independiente de si el proveedor del programa es Xilinx o una empresa externa

• Mantiene un control de versiones del proyecto.

El Project Navigator  se divide en cuatro ventanas. En la esquina superior izquierda se

muestran las distintas fuentes de diseño  que pertenecen al proyecto organizadas

 jerárquicamente. Debajo de las fuentes se encuentran la ventana de Procesos. En esta

ventana se mostrará la lista de procesos disponibles para la fuente seleccionada en laventana superior. Para cada proceso se muestra el estado del mismo, si ha sido

ejecutado, y en caso afirmativo si el resultado ha sido correcto. Dependiendo de la

fuente de diseño los procesos disponibles son distintos. La tercera ventana está situada

en la parte inferior de la pantalla. Esta es la consola de Mensajes que se actualiza con

mensajes informativos y de advertencia a medida que se activan los distintos procesos.

La última ventana se sitúa a la derecha y es un editor de HDL.

Escuela Politécnica Superior – UAM 3/22

Page 4: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 4/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Figura 3. Interfaz gráfica del Gestor de Proyector

El proceso de diseño del Project Navigator  parte de la creación de un proyecto:

1. Arrancar la aplicación Project Navigator . Para ello se puede pulsar a

través del icono que se encuentra en el escritorio o acceder mediante

el menú de Inicio → Programas → Xilinx ISE 4 → Project Manager. 

2. ( New Project ) Crear un nuevo proyecto:  File → New Project  

Se despliega una nueva ventana ( New Project) donde hay que configurar los parámetros

del proyecto.

Figura 4. Pantalla de creación de un nuevo proyecto

Introduciremos un nombre de proyecto con el formato “<grupo><pareja>P0”, siendo

 grupo 1a, 1b, 1c ...y pareja el número de pareja (utilizar dos dígitos, 01,02 .., 20, ..) que

está realizando la práctica. También elegiremos un directorio que haga referencia al

grupo (siempre en el disco D: ). El resto de las opciones del proyecto las elegiremos tal

como muestra la Figura 4. 

Escuela Politécnica Superior – UAM 4/22

Page 5: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 5/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

•  Device Family: permite elegir la familia de FPGA que se va a utilizar (XC4000,

Spartan, Spartan2, Virtex). Utilice una Spartan modelo xc2s200e-6pq208. 

•  Device: dentro de la familia seleccionada indica la FPGA en concreto donde se

va implementar el diseño. 

•  Design Flow:  indica el tipo de entrada de diseño que se va utilizar. En esta

 pestaña aparecerá una lista de los sintetizadores de VHDL o Verilog que se esténinstalados. Siempre dará la opción de utilizar como entrada un fichero de tipo

EDIF. Elegia el sintetizador XST para VHDL.

Si todo está correcto, aparecerán dos nuevas entradas dentro de la ventana de Fuentes de

 Diseño  del proyecto. Una con el nombre del proyecto, y la otra con el nombre del

dispositivo FPGA y el tipo de entrada seleccionada(xc2s200e-6pq208-XST VHDL).

Ahora estamos listo para realizar y añadir nuestros diseño al proyecto.

Diseño

En esta fase vamos a plasmar los requisitos del proyecto. Para ello necesitamos elegirun lenguaje de representación que nos permite expresar formalmente nuestro diseño

 para luego poder implementarlo. Se ha elegido VHDL. Para poder crear un archivo

VHDL únicamente necesitamos un editor de texto. Se va a utilizar el que viene

integrado con el Project Manager .

1. Seleccionamos añadir nueva fuente ( New Source) tal como indica en la Figura 5

Figura 5. ¿ Cómo añadir un nuevo fichero HDL ?

2. ( New) Seleccionamos la plantilla VHDL Module, y le asignamos un nombre a la

entidad VHDL que vamos a generar, en nuestro caso la llamaremos funcion4a2.

 Nos aseguramos que la casilla Add to Project  se encuentra activada.

Escuela Politécnica Superior – UAM 5/22

Page 6: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 6/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Figura 6. Pantalla para crear un nuevo proyecto

3. ( Define VHDL Source) Definimos la entradas y salidas de nuestros problema,

 para cada una indicamos si el nombre de la señal, la dirección (in, out, inout ) y

en el caso de que queramos un  std_logic_vector , el número de bits y la

disposición de estos. Rellenamos la plantilla siguiendo la Figura 7: 

Figura 7. Pantalla para definir los puertos de una entidad

Escuela Politécnica Superior – UAM 6/22

Page 7: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 7/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

4. ( New Source Information) En la siguiente pantalla comprobamos que los

 parámetros introducidos son correctos, y los aceptamos si son correctos.

5. Rellenamos el código VHDL que falta para completar nuestro diseño según la

Figura 8. 

--------------------------------------------------------------------------- Nombre: funcion4a2-- Fichero: funcion4a2.vhd-- Descripción: Funcion lógica de 4 entradas y dos salida que-- definida por las siguientes ecuaciones:-- X =A' · ( B + C )

-- Y =D · ( B + C ) -- Autor: Pablo Haya-- Escuela Politecnica Superior. UAM-- [email protected] Version: 1.0 18/02/2002 -------------------------------------------------------------------------

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity funcion4a2 is Port ( A : in std_logic;

B : in std_logic;C : in std_logic;D : in std_logic;X : out std_logic;

Y : out std_logic);end funcion4a2;

architecture DataFlow of  funcion4a2 is 

beginX <= not A and (B or C);Y <= D and (B or C);;

end DataFlow; 

Figura 8. Código VHDL que implementa la función lógica problema

Si todos los pasos son correctos deberemos tener una nueva entrada de diseño asociadaal proyecto. El siguiente paso que tenemos quedar es comprobar si es posible sintetizar

nuestro nuevo diseño.

SíntesisEn esta fase se traduce el código HDL en un representación a nivel de puerta lógicas en

un formato estándar. En este proceso el sintetizador seleccionado deberá inferir del

código HDL los componentes clásicos del diseño tales como máquinas de estados,

contadores, decodificadores... Debido a la flexibilidad que proveen los lenguajes HDL,

el diseñador tiene que tener especial cuidado en desarrollar código fácilmente

sintetizable.

Escuela Politécnica Superior – UAM 7/22

Page 8: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 8/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Los procesos disponibles en la fase de síntesis se muestran en la Figura 9. Para realizar

la fase de síntesis, pulsar con el botón derecho en Synthesize  y elegir la opción  Run.

Estos se realizan de manera secuencial. Al final los resultados de todos los procesos se

resumen en la carpeta de informes (View Reports). Si todo ha ido correctamente se

 podrá pasar a la siguiente fase.

Figura 9. Procesos disponibles en la fase de síntesis

Verificación funcionalLa etapa de verificación se va a realizar utilizando un herramienta de simulación que no

 pertenece a  Xilinx. Esta se llama  ModelSim  y pertenece a la empresa  ModelWorks. Primeramente hay que realizar un banco de pruebas (testbench) para la entidad creada.

Este consiste en un fichero vhdl en el cual se instancia la entidad que se quiere probar

(uut:unit under test ). A esta unidad se le aplican un conjunto de vectores de prueba, de

los cuales se conoce la salida esperada. Se compara la salida que ofrece la uut  con la

salida esperada, y si no son iguales es que ha habido algún error. En nuestro caso

realizar el testbench es sencillo y exhaustivo, ya que la entidad implementa una función

lógica de la cual conocemos para cada entrada cual es su salida. Lo cual no suele ocurrir

en casos reales, en los cuales o bien el número de entradas es excesivo para probrarlo

todos los vectores en un tiempo razonable, o bien se desconocen parcialmente las

salidas del problema.

El primer paso de la fase de verificación es crear el fichero de testbench. Para ello

vamos a emplear una herramienta gráfica de ISE que nos va a evitar tener que escribir el

código.

1. Seleccionamos añadir nueva fuente ( New Source) (ver paso 1 del apartado

diseño)

2. ( New) Seleccionamos la plantilla Test Bench WaveForm, y le asignamos un

nombre a al testbench  que vamos a generar. Es recomendable emplear alguna

regla nemotécnica que relaciona el nombre del testbench  con el nombre de la

entidad. En nuestro caso añadiremos a todos los testbench que creemos el prefijo

‘tb_ ’. Así nos queda el nombre tb_funcion4a2. Por último, nos aseguramos quela casilla Add to Project  se encuentra activada.

3. (Select ) En la siguiente pantalla asociamos el testbench  con la entidad que

queremos probar ( Associate with Source). Para ello tenemos que elegir una de

las  fuentes de diseño  de entre todas las que consta el proyecto. Como sólo

tenemos una basta con apretar el botón Siguiente.

4. ( New Source Information) Comprobamos que los parámetros introducidos son

correctos antes de pulsar el botón Finalizar.

5. ( Initialize Timing ) Si no hay ningún error nos aparecerá la pantalla de la Figura

10:

Escuela Politécnica Superior – UAM 8/22

Page 9: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 9/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Figura 10. Ventana de configuración de la temporización del testbench

Esta ventana permite establecer los parametros temporales de la simulación.

Dependiendo de si nuestro circuito es secuencial (gobernado por un reloj) o

combinacional seleccionaremos la opción Master clock  o Combinatorial Design.

Seleccionamos esta última ya que nuestro diseño es puramente combinacional. A

continuación configuramos la temporización del testbench. Para ello debemos

decidir dos parámetros: (a) cuánto margen vamos a dejar desde que introducidimos

una entrada hasta que comprobamos si la salida es correcta (Wait to check ), y (b)

cuánto esperamos para introducir una nueva entrada. Estos tiempos dependerán del

retrado combinacional de la entidad, ya que siempre habrá que asegurar que

esperamos lo suficiente para que el resultado esté estable en la salida. En nuestro

caso el retardo es cero, así que dejamos los parámetros por defecto, y pulsamos OK .

6. Aparecen dos ventanas, una correspondiente a la aplicación HDL Bencher   (ver

Figura 11) y otra con el código VHDL de la entidad que estamos probando. Esta

última sólo no permite realizar ninguna modificación, y sirve únicamente para

consultar el código de la entidad.

Escuela Politécnica Superior – UAM 9/22

Page 10: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 10/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Figura 11. Herramienta HDL Bencher

La herramienta HDL Bencher  permite configurar visualemente la forma de onda de

los vectores de entrada y de la sálida esperada. A continuación habrá que reproducir

la tabla de verdad de la función lógica (ver ...). Para ello hay que tener en cuenta quecada fila de la función lógica se relaciona con un intervalo de tiempo. Ej, la fila

tercera (D=0, C=0, B=0, A=0, X=1, Y=0) corresponde con la columna que

representa el intervalo de 200 ns. Para rellenar los valores de cada señal, el método

más sencillo es pulsar doble click  sobre la primera casilla (intervalo cero), introducir

el valor, y pulsar el tabulador  para pasar a la siguiente. Debermos rellenar hasta el

intervalo 1500 ns. Podemos utilizar los botones de Zoom In y Zoom out  para ajustar

las señales a la pantalla.

Una vez rellenadas todas los vectores de entrada y las salidas esperadas debemos

obtener la ventana de la Figura 12. 

Figura 12. Resultado final del testbench

7. Una vez completadas todas las señales pulsamos el botón de Save Waveform. 

En este punto tendrá que aperecer en el testbench generado ( tb_funcion4a2.tbw)

asociado a la entidad  funcion4a2. Como curiosidad podemos ver el código VHDL del

testbench  abriendo el fichero tb_funcion4a2.vhw que se encuentra en el directorio del

 proyecto.

Si seleccionamos la fuente del testbench (tb_funcion4a2.tbw), en la ventana inferioraparecerán los procesos asociados al testbench  (ver Figura 13). Este conjunto de

Escuela Politécnica Superior – UAM 10/22

Page 11: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 11/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

 procesos se corresponden con los diferentes hitos en los cuales se recomienda realizar la

verificación del diseño. Se va a ejecutar el proceso de verificación funcional (Simulate

 Behavioral VHDL Model ), es decir, comprobar que el diseño realizado funciona

correctamente sin tener en cuenta ningún tipo de restricción temporal.

Figura 13. Conjunto de procesos asociados al testbench

ModelSimPulsamos dos veces seguidas sobre el proceso Simulate Behavioral VHDL Model . De

esta forma se lanzará la aplicación de simulación asociada al  Project Navigator . En el

caso del laboratorio es  Model Sim 5.5f . La simulación se ejecutará automáticamente

dando como resultado en la consola de ModelSim: 

# Loading work.funcion4a2(dataflow)

….

# ** Failure: Simulation successful (not a failure). No problems detected.

# Time: 1600 ns Iteration: 0 Instance: /testbench

Es posible que el tiempo de simulación por defecto (Options→Simulation→Default Run)

sea menor que el tiempo necesario para completarla. En este caso habrá que ejecutar la

 parte que falta para obtener el mensaje anterior. Para ello introducir del la consola la

instrucción run –all .

VSIM 2> run -all 

Si ha habido algún error en la simulación, leer el mensaje de error, cerrar el ModelSim y

revisar tanto el código VHDL y com el testbench hasta encontrar el fallo.

Si la simulación se ejecuta correctamente aparecerán las siguientes ventanas:

Escuela Politécnica Superior – UAM 11/22

Page 12: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 12/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Señales (signals):

Figura 14. Ventana de señales de ModelSim

Esta ventana contiene la señales, tanto de entrada como de salida, que intervienen en la

simulación.

Lista (List):Lista de señales y el estado actual de cada una. Si no se despliega esta ventana

seleccionar View → List   → Signals in Region dentro de la ventana de señales. Muestra la

evolución de la señales en el tiempo. Muestra una línea por cada cambio que ocurre en

el vector de salida.

Figura 15. Ventana de lista de señales

Escuela Politécnica Superior – UAM 12/22

Page 13: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 13/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Formas de Ondas (Wave):

Figura 16. Ventana de visualización de formas de ondas

En esta ventana se visualiza una representación gráfica de la evolución de la simulación

a lo largo del tiempo. Utilizando el botón de  zoom etiquetado como  Zoom de toda la

 zona de simulación(ver apartado de Zoom) podemos ajustar el resultado final a la

ventana.

A continuación se detallan las distintas opciones de la ventana Formas de Onda.

Control de la simulación

Se puede controlar la ejecución de la simulación mediante los siguientes botones:

• Stop Wave Drawing : para la simulación.

•  Restart : inicializa la simulación para poder realizar una nueva ejecución.

•  Run: simula durante un tiempo igual al tiempo de simulación.

• Continue Run: realiza una simulación de forma indefinida.

Escuela Politécnica Superior – UAM 13/22

Page 14: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 14/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Zoom

Probar a obtener una visualización completa de la simulación utilizando los botones de

Zoom:

Cursores

La herramienta permite grabar la situación del cursor en diferentes puntos, mostrando

diferencia de tiempos entre cada marca. Para ello se utilizan los botones del cursor:

Formato y base de representación

Se puede cambiar tanto el formato como la base de representación de las señales. Para

ello seleccionar una o más señales. Si queremos cambiar el formato de representación:

 Format   → Format . Se pueden elegir tres opciones: (a) literal, se utiliza una

representación numérica en la base elegida. (b) lógica, que muestra la forma de onda y

(c) sucesos, que muestra únicamente las transiciones de la señales. En el caso de que el

formato elegido sea literal se puede elegir la base de representación mediante

 Format → Radix. 

Combinar señales

Se puede optar por mostrar varias señales combinadas como si se tratara de una sola.Esta opción es muy útil en el caso de visualizar señales asociadas a un bus. Se

selecciona todas las señales que se quieren combinar y se elige la opción  Edit

→ Combine. Para que la combinación sea efectiva que definir los siguientes parámetros:

•  Nombre: nombre que se va a asociar al nuevo conjunto de señales

• Orden de las señales: este puede ser ascendente o descendente. Indica a partir de

que dirección se empieza a computar el bit menos significativo.

• Si se quiere eliminar de la ventana de Ondas las señales después de combinarlas.

Escuela Politécnica Superior – UAM 14/22

Page 15: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 15/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Administración de proyectos

Snapshot

Herramienta que sirve para generar versiones del proyecto. Realiza una copia del

directorio donde se encuentra ubicada toda la información del proyecto. Las acciones

que se pueden realizar son:

•  Project →  Take a snapshot : genera una nueva versión del proyecto, y queda

reflejeda en la pestaña de Snapshot View. 

•  Project →  Replace with snapshot : para que es habilitada esta opción tiene que

estar seleccionada una snapshot . De esta forma se restablece a la versión que se

guardó cuando se realizó la snapshot. 

Comprimir

Permite comprimir utilizando un algoritmo  zip estándar todos los archivos que

 pertenecen al proyecto. Esta herramienta es muy útil tanto para guardar en disco

 proyecto que no se utilice frecuentemente, como para distribuir nuestros proyectos aotros diseñadores.

Si el diseño comprimido todavía ocupa un tamaño considerable se pueden realizar dos

simplificaciones más:

• Eligir la opción Project → Delete Implementation Data.

• Borrar cualquier subdirectorio dentro del directorio del proyecto que haya

creado la herramienta (work, xst, __express_prj, _ngo ...)

Ambas son complementarias y obligan a volver a realizar todos los procesos de

sintetización e implementación de nuevo cuando se restaure el proyecto.

Escuela Politécnica Superior – UAM 15/22

Page 16: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 16/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

IINNTTR R OODDUUCCCCIIÓÓNN AA VVHHDDLL VHDL son las siglas de VHSIC (Very High Speed Integrated Circuit) Hardware

Description Language. Como su nombre indica, pertenece a un conjunto de lenguajes

especializados en la descripción de componentes hardware (HDL)1. Estos lenguajes son

la alternativa que se ha impuesto al diseño mediante esquemáticos. Al tratarse deestándares abiertos y aceptados por la industria, facilitan la portabilidad de los diseños

entre distintas aplicaciones. Además cuentan con las mismas funcionalidades que los

lenguajes convencionales de programación, lo cual permite describir las pruebas del

diseño utilizando el propio lenguaje. Solucionando así, la dos principales carencias de

los lenguajes basados en esquemáticos.

Hay que tener en cuenta que los lenguajes HDL permite modelar, especificar y simular

sistemas digitales y analógicos, aunque no todos los diseños realizados mediante un

HDL pueden ser traducidos a una implementación real. La transformación que permite

inferir a partir de una descripción HDL los componentes lógicos necesarios para realizar

un sistema real se denomina sintetizar. Aquellos diseños que admiten esta

transformación se denominan sintetizables2.

HistoriaEl lenguaje VHDL nació a principios de los anos 80 como parte de un proyecto del

Departamento de Defensa de los Estados Unidos. El objetivo era conseguir un medio de

descripción de circuitos integrados para facilitar el intercambio de información entre

aplicaciones. Posteriormente, en 1987 el lenguaje fue adoptado como estándar por el

IEEE (Std. 1076-1987) denominándose la primera versión VHDL-87. Cinco años

después se publica la primera revisión dando lugar a VHDL-93.

FundamentosUn diseño VHDL se compone de un conjunto de bloques, denominados entidades(entities) conectados entre sí por señales ( signals). Una entidad presenta una interfaz

definida por un conjunto de puertos  ( ports), mientras que la implementación queda

oculta, es como una “caja negra” para el resto de circuito.

Señales y tipos de datos

Una señal permite conectar dos o más entidades como si se tratara de un cable físico.

Una señal en VHDL, al igual que en la realidad, hay que entenderla como una variación

temporal de un valor. Cada señal tiene un tipo (type) que establece el rango de valoresque puede tomar. El lenguaje proporciona un conjunto de tipo s básicos predefinidos

como puede sen bit que admite 0 ó 1 o enteros (integer ) desde +(231-1) a –(231-1). Los

tipos básicos se pueden extender mediante nuevas definiciones. En esta asignatura se va

emplear la librería IEEE 1164, que proporciona tipos de datos que permiten simular el

comportamiento de hardware real. Este el caso del tipo std_logic, que simula de forma

más cercana a la realidad los posibles valores que puede tener una señal. Estos se

resumen en la Tabla 2. 

1 Verilog, junto VHDL, son los dos lenguajes de descripción hardware más importantes. Otros lenguajesde menor impacto son ...2

 Siguiendo una analogía con el proceso de desarrollo software, un diseño HDL sería similar a programadescrito en un lenguaje de programación tradicional (C, Java, Pascal...), y la sintetización de un diseñosería el paso análogo a la compilación del código fuente para transformarlo en código máquina.

Escuela Politécnica Superior – UAM 16/22

Page 17: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 17/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Valor Significado

‘U’ Sin inicializar

‘X’ Desconocida (corriente fuerte)

‘0’ Cero lógico obtenido con una corriente fuerte

‘1’ Uno lógico obtenido con una corriente fuerte

‘Z’ Alta impedancia‘W’ Desconocida (corriente fuerte)

‘L’ Cero lógico obtenido con corriente débil

‘H’ Uno lógico obtenido con corriente débil

- No importa el valor

Tabla 2. Valores posibles del una señal del tipo std_logic

Análogamente se define el tipo  std_logic_vector   que permite agrupar lógicamente un

conjunto de señales de tipo std_logic.

OperacionesLas operaciones lógicas definidas para el tipo  std_logic son AND, NAND, OR, NOR,

XOR y XNOR.

EntidadesLas entidades son el elemento básico del lenguaje VHDL. La definición de una entidad

se compone de dos partes: puertos y arquitectura.

Puertos

Los puertos son la puerta de comunicación de la entidad con el exterior (ver Figura 17).

Permiten conectar las señales a la entidad. Un puerto se define por su tipo y por su

modo  (mode). El tipo establece el tipo de señales que se puede conectar al puerto. El

modo define la dirección del puerto. Este puede ser de entrada  (in), salida (out ), o

bidireccional (inout ).

nombre de la

entidad  

tipo del

 puerto dirección del

 puerto nombre del

 puerto 

entity funcion isport (

A, B, C, D: in std_logic;X, Y: out std_logic

);

funcion

C

D

B

Figura 17. Definición de los puertos de una entidad

Arquitectura

La parte de arquitectura define la implementación de la entidad. Una misma entidad

 puede tener asociado una o más arquitecturas. La definición de la arquitectura tiene dos

 partes: declarativa y el cuerpo(ver Figura 18). En la parte declarativa se incluyen las

señales, variables y componentes que se van a emplear dentro del cuerpo de la

Escuela Politécnica Superior – UAM 17/22

Page 18: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 18/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

arquitectura. El cuerpo es donde se incluye la implementación propiamente dicha de la

entidad.

Figura 18. Definición de la arquitectura de una entidad

El cuerpo estará formado por una o más sentencias. Cada una de las sentencias se

ejecuta en paralelo, de forma que el no  importa el orden en el cual se escriben. (ver

Figura 19) 

entity mux2 is port(A,B,C, D: in std_logic; X, Y: out std_logic);

end entity mux2;

architecture ejemplo of  mux2 is 

begin

end architecture ejemplo;

nombre de la arquitectura

 parte del código que

describe

nombre de la

entidad

declaración de señales,

variables, y componentes declaración de la

arquitectura

declaración de la entidad

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

entity funcion4a2 is Port ( A,B,C,D : in std_logic;

X, Y : out std_logic);end funcion4a2;

architecture DataFlow of  funcion4a2 is 

beginX <= not A and (B or C);Y <= D and (B or C);;

end DataFlow; 

Figura 19. Implementación de la arquitectura utilizando dos sentencias concurrentes

Procesos

Un proceso engloba a un conjunto de operaciones que se realizan de forma secuencial.

Los procesos se definen con la etiqueta process, la cual incluye el nombre del proceso y

la lista de sensibilidad ( sensitivity list ) de señales que disparan el proceso. De tal forma

que cada vez que cambia el valor de alguna de las señales incluida en la lista, se ejecuta

las instrucciones del proceso. Los procesos se componen de una parte declarativa y de

otra procedimental. En la primera se incluyen las señales y variables de ámbito local. En

la segunda las operaciones secuenciales (ver Figura 20).

Escuela Politécnica Superior – UAM 18/22

Page 19: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 19/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Escuela Politécnica Superior – UAM 19/22

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

entity funcion is Port ( A, B, C, D : in std_logic; X, Y : out std_logic;

end entity funcion;

architecture funcional of  funcion is begin

p: process (A,B,C,D) begin if  (B='1' or C='1') then 

if  (A='0') then X <='1';

elseX <='0';

end if ; if  (D='1') then 

Y <='1';else

Y <='0';end if ;else

X <='0';Y <='0';

end if ;end process p;

end architecture funcional; 

Figura 20. Implementación de la arquitectura utilizando procesos

Incluir otras entidades en la arquitectura

La implementación de un entidad se puede definir también a partir de otras entidades.Para ello, es necesario incluir una descripción de la entidad en la parte declarativa de la

arquitectura mediante la la palabra clave component. Esta vendrá descrita por el

nombre de la entidad y la definición de sus puertos. Para cada instancia de la entidad

que se quiera emplear, habrá que definir un nombre y la correspondencia de las señales

con los puertos de la entidad, mediante la etiqueta port map. En el ejemplo que se

muestra en la Figura 21 se ha implementado la entidad  funcion utilizando las entidades

and2, or2, e inv, las cuales se suponen que forman parte de la librería

 funciones_logicas. De nuevo el orden en que se colocan los port map es irrelevante.

Page 20: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 20/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Escuela Politécnica Superior – UAM 20/22

library IEEE;use IEEE.std_logic_1164.all;use work.funciones_logicas.all;

entity funcion is port(A,B,C,D: in std_logic; X,Y: out std_logic);

end entity funcion;

architecture estructural of  funcion is 

component AND2 port (I1:in std_logic;I2:in std_logic;O:out std_logic );

end component;

component OR2 port (I1:in std_logic;

I2:in std_logic;O:out std_logic );

end component;

component INV port (I:in std_logic;O:out std_logic );

end component;

signal Aneg, b_or_c: std_logic;

begin

u1inv: inv port map (I => A, O => Aneg) ;u2or: or2 port map (I1 => B, I2=> C, O => b_or_c) ;u3and: and2 port map (I1 => Aneg, I2=> b_or_c, O =>X) ;u4and: and2 port map (I1 =>D, I2=> b_or_c, O => Y) ;

end architecture estructural; 

Figura 21. Implementación de la arquitectura utilizando puertas lógicas

Estilos de implementación

Tal como se ha podido comprobar VHDL permite una gran flexibilidad para definir la

implementación de una entidad. En función de los ejemplos expuesto se puede entreveertres enfoques distintos para describir una entidad: descripción estructural ( structural ),

descripción funcional (behavioral ) o descripción de flujo de datos (dataflow). La

descripción estructural refleja las entidades que componen la entidad y las conexiones

entre ellas, de forma similar a cómo se representaría el circuito utilizando esquemáticos.

En la descripción funcional se utiliza un algoritmo que especifica el comportamiento del

circuito. Y en la última se definen cómo varía el flujo de datos desde la entrada a la

salida. Nada impide que en un mismo diseño se utilizen los tres enfoques a la vez (ver

Figura 22).

Page 21: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 21/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

Recomendaciones para realizar código sintetizable• Tener siempre presente que el objetivo es realizar un diseño hardware no un

 programa software. Esto implica que para poder sintetizar de nuestro código se

tienen que poder inferir fácilmente los bloques digitales básicos (flip-flops,

registros, multiplexores, puertas lógicas)

• Intentar seguir la filosofía de diseño RTL (flujo de datos)

•  NO utilizar estructuras de control iterativas (for, while, loop) dentro de las

entidades.

• Incluir en la lista de sensibilidad del proceso TODAS las señales de entrada al

 proceso.

• Contemplar TODOS los casos posibles en estructuras de selección como if ..then3.

Para ello será necesario incluir SIEMPRE terminar con la sentencia else.

library IEEE;

use IEEE.std_logic_1164.all;use work.funciones_logicas.all;

entity funcion is port(A,B,C,D: in std_logic; X, Y: out std_logic);

end entity funcion;

architecture mezcla of  funcion is 

component inv port (I: in std_logic ;

O: out std_logic;) ;

end component;

signal Aneg, b_or_c: std_logic; 

begin

p: process (B, C) begin

if (B= '1') OR (C='1') then b_or_c <= '1';

elseb_or_c <='0';

end if;

u1:inv port map (I =>A, O=>Aneg);

X <= Aneg and b_or_c;

Y <= D and b_or_c;

end process p;

end architecture mezcla; 

Figura 22. Implementación de la arquitectura utilizando una mezcla de enfoques

3 If ..then..elsif , case, when 

Escuela Politécnica Superior – UAM 21/22

Page 22: Manual de Vhdl Utilizando Xilinx-Ise(2)

7/18/2019 Manual de Vhdl Utilizando Xilinx-Ise(2)

http://slidepdf.com/reader/full/manual-de-vhdl-utilizando-xilinx-ise2 22/22

Lab. Estructura y Tecnología de Computadores I  Curso 2002/2003 

PPR R ÁÁCCTTIICCAA OOPPCCIIOONNAALL En esta sección se plantea una práctica opcional que permitirá al alumno adquirir soltura

en el manejo de la herramienta ISE-Xilinx. Para ello se pide implementar la función

lógica propuesta (ver Tabla 1)  mediante una arquitectura estrictamente estructural,

 basándose en el esquemático de la Figura 2. Los pasos a seguir son:

• Crear un nuevo proyecto con el nombre <grupo><pareja>P0opc

• Crear y añadir al proyecto un nueva entidad INV con dos puertos (I: instd_logic, O: out std_logic) que implemente un inversor ( O <= not I).

• Crear y añadir al proyecto un nueva entidad AND2 con tres puertos (I1, I2: instd_logic, O: out std_logic) que implemente una puerta lógica and  dos entradas

( O <= I1 and I2).

• Crear y añadir al proyecto un nueva entidad OR2 con dos puertos (I1,I2: instd_logic, O: out std_logic) que implemente una puerta lógica and  dos entradas

( O <= I1 or I2).• Crear y añadir al proyecto la entidad  funcion4a2 e implementarla a partir de las

 puertas lógicas definidas anteriormente basándose en el código de Figura 21. 

• Crear un testbench con la herramienta  HDL Bencher . También se puede copiar

el archivo tb_funcion4a2.tbw  creado en la práctica de introducción en el

directorio de este proyecto y añadirlo al proyecto ( Add Source).

• Si todo marcha correctamente tendrá la ventana de procesos tendrá que ser

similar a la Figura 23. 

• Realizar la simulación funcional utilizando ModelSim.

Figura 23 Aspecto de la ventana de Fuentes de Diseño tras añadir todas las entidades y el testbench