APLICACIONES DE LA TARJETA XILINX 2S200E

64
“APLICACIONES DE LA TARJETA XILINX 2S200E EN LOS CURSOS DE ENSEÑANZA DE INGENIERIA ELECTRÓNICA, UTILIZANDO EL LENGUAJE DE DESCRIPCION DE HARDWARE” PROYECTO DE INVESTIGACION ING. MANUEL RAMIREZ CASTRO ING. RAFAEL GARCIA CHINGUEL

description

“APLICACIONES DE LA TARJETA XILINX 2S200E EN LOS CURSOS DE ENSEÑANZA DE INGENIERÍA ELECTRÓNICA, UTILIZANDO EL LENGUAJE DE DESCRIPCIÓN DE HARDWARE” - 2009

Transcript of APLICACIONES DE LA TARJETA XILINX 2S200E

Page 1: APLICACIONES DE LA TARJETA XILINX 2S200E

“APLICACIONES DE LA TARJETA XILINX 2S200E EN LOS CURSOS DE ENSEÑANZA DE INGENIERIA ELECTRÓNICA,

UTILIZANDO EL LENGUAJE DE DESCRIPCION DE HARDWARE”

PROYECTO DE INVESTIGACION

ING. MANUEL RAMIREZ CASTRO ING. RAFAEL GARCIA CHINGUEL

Page 2: APLICACIONES DE LA TARJETA XILINX 2S200E

2

Palabras clave: xilinx

PROGRAMA DE INVESTIGACION: Redacción de texto

1. DATOS PRELIMINARES

1.1. TITULO

“APLICACIONES DE LA TARJETA XILINX 2S200E EN LOS CURSOS DE

ENSEÑANZA DE INGENIERIA ELECTRÓNICA, UTILIZANDO EL

LENGUAJE DE DESCRIPCION DE HARDWARE”.

1.2. AUTORES

- Ing. Manuel Javier Ramírez Castro.

- Ing. Rafael García Chinguel.

1.3. TIPO DE INVESTIGACION

INVESTIGACION EXPERIMIENTAL, APLICADA Y PROSPECTIVA

1.4. AREA DE INVESTIGACION

ELECTRONICA APLICADA

1.5. LINEA DE INVESTIGACION: TECNOLOGICA

Page 3: APLICACIONES DE LA TARJETA XILINX 2S200E

3

2. CUERPO DEL INFORME

2.1. RESUMEN

El propósito de este manual es proveer un soporte adicional a estudiantes de

Ingeniería Electrónica de la UNPRG, sobre prototipos digitales de sistemas rápidos

(Digital Systems Rapid Prototyping), se usara el software XILINX ISE para diseño

rápido de prototipos digitales en la tarjeta Digilab 2SB. Este manual es un

suplemento de la existente documentación sobre la Tarjeta Digilab 2SB [8] y el

material de Xilinx ISE 7.1i [7] La computadora facilitó la herramienta de diseño

introduciendo un set coordinado de ejemplos que tomara el usuario a través de los

pasos más comunes necesarios para la entrada de datos, simulación funcional,

síntesis lógica y la actual configuración de Xilinx Spartan-series FPGA en la tarjeta

Digilab 2SB.

En la escuela profesional de Ingeniería Electrónica de la Universidad Nacional

Pedro Ruiz Gallo, no se desarrolla, ni se aplica la descripción del lenguaje VHDL,

ni se da uso a las tarjetas del fabricante Xilinx 2s200e en los cursos de la escuela

profesional en mención. Existiendo las tarjetas en el laboratorio de Ingeniería

Electrónica sin darle mayor utilidad (tarjetas adquiridas mediante donación hace

mas de 6 años.

Por lo tanto nuestro propósito será describir el lenguaje de descripción de

hardware (similar al funcionamiento circuital) y la simulación de estas tarjetas

mediante ejemplos sencillos haciendo uso del software brindado por el mismo

fabricante. Contando para ello con la información teórica del fabricante y trabajos

realizados por otros investigadores.

ABSTRACT

The purpose of this manual is provide an additional support to students of

Electronical Engineering of the UNPRG about digital systems rapid prototyping.It

will be used XILINX ISE software for rapid design of digital prototypes in the Digilab

2SB card. This manual is a supplement of the existent documentation about Digilab

2SB (8) card and the material of Xilinx ISE 7.1i. The computer mase easy the

design tool by introducing a coordinate example set that take the user trough the

Page 4: APLICACIONES DE LA TARJETA XILINX 2S200E

4

common necessary steps for the data input, functional simulation, logic synthesis

and the actual configuration of Xilinx Spartan series FPGA in the Digilab 2SB card.

2.2. INTRODUCCION

Desde hace algún tiempo ya se viene usando el lenguaje VHDL como una de

las alternativas de implementación en dispositivos CPLD’s y FPGA’s. Las

herramientas de síntesis han ido mejorando considerablemente. Hoy en día

muchos fabricantes de circuitos integrados utilizan la tecnología de lógica

programable para implementar sistemas digitales muy complejos y poder

validar sus nuevos diseños sin tener que recurrir a la fabricación del circuito

integrado. Gracias a las herramientas de diseño automático existentes los

diseñadores pueden aumentar la productividad, reduciendo los tiempos de

desarrollo y sobre todo abaratando los costos de diseño.

Las FPGAS son una gran solución en la elaboración de prototipos gracias a la

flexibilidad que ofrecen en el diseño. Debido a su importancia, se presenta

como ejemplo de diseño, la descripción de un circuito combinacional en

lenguaje VHDL programado en una FPGA Spartan XCS200E. Se realizó la

simulación funcional utilizando el programa ModelSim 6.0a y para las etapas

de diseño restantes se utilizó ISE Foundation 7.1i; ambos softwares de la

empresa Xilinx.

2.3. MATERIALES Y METODOS

MATERIALES:

- Adaptador de voltaje (Fuente estabilizada 6V a 9V).

- Computadora con Software de Simulación de Xilinx. 7.1i y ModelSim XE III

6.0a.

- Tarjeta Digilab 2SB (FPGA Xilinx 2s200e PQ208) con conector JTAG para

la computadora.

- Tarjeta Digilab DIO4 (Tarjeta simuladora).

- Útiles de escritorio.

Page 5: APLICACIONES DE LA TARJETA XILINX 2S200E

5

METODOS

Se indicara el resumen del proceso que se ha seguido para la obtención de los

resultados (diseño de código VHDL y la simulación respectiva).

Tradicionalmente el flujo de diseño lógico consiste en:

1. Obtener especificaciones.

2. Definir entradas y salidas.

3. Definir tabla de verdad.

4. Derivar ecuaciones booleanas (simplificación).

5. Especificar circuitos mediante puertas lógicas.

6. Implementar (‘unir’ puertas).

Con VHDL:

1. Obtener especificaciones.

2. Definir entradas y salidas.

3. Describir el circuito (‘programa’ VHDL).

4. Simulación funcional (para poder realizarla primero abra que sintetizar (generar la ‘netlist’)).

5. [Si se detectan errores volver a 4].

... ‘Descargar’ el diseño en un dispositivo lógico programable (PLD)

Xilinx: entorno profesional para crear programas que describen diseños

lógicos.

Proyecto: diseño de un sistema (conjunto de módulos).

Módulo = componente = entidad (‘entity’) de diseño.

Al principio, proyecto = 1 módulo.

Para realizar el diseño VHDL en Xilinx los pasos son:

1. Crear nuevo proyecto (PROJECT MANAGER).

Page 6: APLICACIONES DE LA TARJETA XILINX 2S200E

6

2. Crear programa VHDL (DESIGN ENTRY).

3. Sintetizar la netlist (SYNTHESIS).

4. Simulación funcional.

Veamos cada uno de los pasos en detalle:

(I) Crear nuevo proyecto [PROJECT MANAGER]

1.1. Ejecutar PROJECT MANAGER

1.2. Ejecutar ‘Fila / New project’: nombre proyecto

Carpeta (creada previamente)

Indicar flujo: VHDL (no esquemático)

Descripción de la ventana del PROJECT MANAGER:

1. Ficheros fuente (.VHDL) y librerías.

2. Para activar las herramientas usadas en las distintas fases del flujo de

diseño.

3. Listado de mensajes de diagnosis de los distintos procesos que se van

realizando.

(II) Introducir el diseño (programa VHDL) [DESIGN ENTRY]

1. Se puede usar el asistente de diseño vhdl (HDL Design Wizard) para

definir las entradas y salidas del módulo, con lo que cuando pasemos al

Page 7: APLICACIONES DE LA TARJETA XILINX 2S200E

7

editor de vhdl aparecerá el ‘esqueleto’ del programa con las definiciones

de entidad (entity) y arquitectura (arquitecture).

2. HDL Editor: para escribir el programa, con todo tipo de facilidades:

indentación, cambio color palabras clave...

(III) Sintetizar (obtener la netlist) [SYNTHESIS]

Habrá que indicar el proyecto, el dispositivo (PLD) al que va dirigido y en el

que caso de que haya varios módulos definidos, cuál de ellos es el de nivel

superior en la jerarquía de diseño.

(IV) Simulación funcional del diseño [SIMULATION]

Ventanas: ‘Waveform Viewer’ dentro de ‘Logic Simulator’

1. Añadir entradas y salidas:

2. Aplicar estímulos al circuito

3. Establecer los parámetros de simulación

4. Ejecutar la simulación

5. Guardar la simulación

6. Salir : ‘File/exit’

2.4. RESULTADOS

Para la investigación se ha recopilado información de internet acerca del lenguaje de

descripción de hardware, de los dispositivos lógicos programables (PLD’s), así como

las características del Software y Hardware de las tarjetas que son el objeto de nuestra

investigación.

La forma de trabajo se basara en describir los elementos necesarios de la estructura

del lenguaje de descripción de hardware (VHDL) y de esta manera programar las

tarjetas para simular cualquier diseño de un sistema digital, también describir la

estructura interna de trabajo de los PLD’s, haciendo una descripción detallada de las

tarjetas Digilab 2SB (Xilinx XC2S200E FPGA).

Page 8: APLICACIONES DE LA TARJETA XILINX 2S200E

8

DISEÑO LÓGICO USANDO XILINX

INTRODUCCION

El propósito de este manual es proveer un soporte adicional a estudiantes de

Ingeniería Electrónica de la UNPRG, sobre prototipos digitales de sistemas rápidos

(Digital Systems Rapid Prototyping), se usara el software XILINX ISE para diseño

rápido de prototipos digitales en la tarjeta Digilab 2SB. Este manual es un suplemento

de la existente documentación sobre la Tarjeta Digilab 2SB [8] y el material de Xilinx

ISE 7.1i [7] La computadora facilitó la herramienta de diseño introduciendo un set

coordinado de ejemplos que tomara el usuario a través de los pasos más comunes

necesarios para la entrada de datos, simulación funcional, síntesis lógica y la actual

configuración de Xilinx Spartan-series FPGA en la tarjeta Digilab 2SB.

Este manual está organizado en 4 capítulos los cuales cubren los siguientes capítulos:

a) Capitulo 1: Lenguajes de descripción de Hardware.

b) Capitulo 2: Información general es presentada acerca de la tarjeta Digilab 2E, la

tarjeta Digilab DIO 4 y las herramientas de diseño ISE 7.1i.

c) Capitulo 3: Un ejemplo de diseño de un simple comparador binario de 2 bits y un

sumador binario (adder) son presentados y usados para observar los pasos

comunes asociados con la programación en VHDL, simulación funcional,

implementación del diseño y la configuración de la Spartan 2E xc2s200E FPGA y

la simulación en MODELSIM XE III 6.0a.

d) Capitulo 4: Un ejemplo de diseño de un comparador es presentado para ilustrar

los pasos comunes asociados con la entrada de datos de la captura esquemática,

síntesis, simulación funcional y la implementación en XC2S200E.

Page 9: APLICACIONES DE LA TARJETA XILINX 2S200E

9

CAPITULO I

LENGUAJES DE DESCRIPCIÓN DE HARDWARE

INTRODUCCION

Los lenguajes de descripción de hardware (HDL's) son utilizados para describir la

arquitectura y comportamiento de un sistema electrónico los cuales fueron

desarrollados para trabajar con diseños complejos.

El diseño tradicional de sistemas digitales es de bajo costo y con tiempos de desarrollo

cortos, pero es restringido por arquitecturas inflexibles, velocidades de operación y

recursos limitados así como poco versátiles a la hora de la puesta en marcha, como lo

son: memorias, microcontroladores, procesadores digitales de señal (DSP's), entre

otros.

Una solución para estos inconvenientes es el diseño ASIC o de aplicación específica,

en contraparte los tiempos de diseño y fabricación son muy extensos y por ende

costosos a la hora de solucionar un problema particular. Tomando las ventajas de los

dos tipos de diseño expuestos - bajo costo, tiempo de diseño reducido, flexibilidad y

versatilidad- surgen los dispositivos lógicos programables, con la característica

particular de poseer todos los recursos del primer tipo de diseño concentrados en una

pequeña área. Estas ventajas no están completas sin una herramienta adecuada que

nos permita organizar y aprovechar estos recursos; para lo cual surgen los lenguajes

de descripción de hardware HDL. El diseño de sistemas digitales se transforma en una

descripción de alto nivel de los componentes que lo conforman, luego esta descripción

configura apropiadamente los recursos del dispositivo, para finalmente obtener el

sistema funcional. Lenguajes de Descripción de Hardware

Los lenguajes de descripción hardware –HDL: Hardware Description Languages-, se

empezaron a utilizar en los años 70. Los primeros lenguajes surgidos no tuvieron gran

acogida y es hasta una década después que aparecen los lenguajes VHDL y Verilog,

los cuales son en la actualizad los más utilizados y han desplazado a los otros

lenguajes.

Page 10: APLICACIONES DE LA TARJETA XILINX 2S200E

10

HISTORIA DEL VHDL

La creación de este lenguaje se inicia en el año 1981, con la creación del programa de

desarrollo de circuitos integrados de muy alta velocidad (VHSIC) del Departamento de

defensa de Estados Unidos. En el año de 1982 las compañías IBM, Texas

Instruments, Intermetrics, obtuvieron la concesión para la realización del lenguaje y de

un conjunto de herramientas para su aplicación. En el año de 1987 el lenguaje VHDL

se convierte en la norma 1076 y en el año de 1993 se actualiza con la norma 1164. El

objetivo principal de utilizar lenguaje VHDL para la descripción de hardware, es

especificar y documentar circuitos y sistemas digitales con un lenguaje formal que sea

entendido tanto por diseñadores como por máquinas –computadoras-. Entre las

principales características del lenguaje se tiene que es ejecutable, lo que permite que

la descripción del hardware se materialice en dispositivos programables; posibilita la

descripción del hardware con distintos niveles de abstracción y es independiente de la

tecnología. Las diferencias entre VHDL y Verilog son: las unidades de diseño múltiple

pueden ser compiladas separadamente en VHDL, mientras que en Verilog, al

producirse un cambio sencillo en el orden de compilación la simulación puede cambiar;

el usuario puede definir el tipo de datos utilizando VHDL; los conceptos de librería,

- que permite compilar proyectos de diseño múltiple -, y paquetes – los cuales pueden

ser utilizados por cualquier unidad de diseño -, solamente existen en VHDL.

VHDL

VHDL es un lenguaje de descripción de hardware utilizado para describir circuitos en

un alto nivel de abstracción el cual está siendo rápidamente aceptado como un medio

estándar de diseño. VHDL es producto del programa Very High Speed Integrated

Circuit (VHSIC) desarrollado por el Departamento de Defensa de los Estados Unidos a

finales de la década de los 70's. El propósito era hacer un estándar para diseñar,

modelar, y documentar circuitos complejos de tal manera que un diseño desarrollado

por una empresa pudiera ser entendido por otra y, además, pudiera ser procesado por

software con propósitos de simulación.

VHDL es reconocido como un estándar de los lenguajes HDL por el Instituto de

Ingenieros en Electricidad y Electrónica – IEEE – como su estándar 1076 el cual fue

Page 11: APLICACIONES DE LA TARJETA XILINX 2S200E

11

ratificado en 1987, y por parte del Departamento de Defensa de los Estados Unidos

como el estándar MIL-STD-454L En 1993 el estándar IEEE-1076 se actualizó y un

estándar adicional, el IEEE-1164, fue adoptado. Para 1996 el estándar IEEE-1076.3 se

convirtió en un estándar de VHDL para síntesis siendo éste el que se utiliza en el

diseño de sistemas digitales. Los estándares más utilizados en síntesis de circuitos por

la mayoría de las herramientas de diseño son el IEEE-1164 y el IEEE-1076.3. En la

actualidad VHDL es un estándar de la industria para la descripción, modelado y

síntesis de circuitos digitales. Por esto, los ingenieros de la mayoría de las áreas de

electrónica, si no es que todas, deben aprender a programar en VHDL para

incrementar su eficiencia.

VENTAJAS DE LOS VHDL’S

El VHDL ofrece las siguientes ventajas en el diseño de circuitos:

- Tiene una gran capacidad descriptiva en diferentes niveles de abstracción.

- Los circuitos diseñados pueden ser reutilizados.

- Independencia en la metodología de diseño

- Independencia del proceso de fabricación.

Entre las principales características podemos decir:

Está basado en sentencias que se ejecutan de manera concurrente: quiere decir

que las sentencias se ejecutan cuando ocurre un evento y pueden ejecutarse una o

más al mismo tiempo (aquellas sentencias que dependan de las señales que están

cambiando serán evaluadas). Aunque también permite definir dominios en los que las

acciones se suceden en orden secuencial (Process).

Page 12: APLICACIONES DE LA TARJETA XILINX 2S200E

12

La concurrencia se ve claramente graficado en los circuitos electrónicos donde los

componentes se encuentran siempre activos, existiendo una asociación intrínseca

entre todos los circuitos(ver figura anterior); ello hace posible el hecho de que si se da

algún cambio en una parte del mismo, se produce una variación (en algunos casos

casi instantánea) de otras señales. Este comportamiento de los circuitos reales obliga

a que VHDL soporte estructuras específicas para el modelado y diseño de este tipo de

especificaciones de tiempos y concurrencias en el cambio de las señales.

Permite simular el diseño y generar formas de onda: Una de las finalidades del

VHDL es modelar un circuito para observar su comportamiento a lo largo del tiempo

(simulación). Esto implica que el VHDL tenga construcciones asociadas para poder

realizar una simulación. Estas construcciones permiten generar distintos eventos que

se sucederán a lo largo del tiempo, afectando a las sentencias que dependan de las

Page 13: APLICACIONES DE LA TARJETA XILINX 2S200E

13

señales que vayan cambiando y obteniendo de esta manera la respuesta del circuito

evaluado.

El comportamiento de los circuitos en VHDL, está basado en la respuesta a estímulos,

el modelo responde cuando hay un estímulo y luego espera el siguiente estímulo.

Soporta distintos niveles de descripción: El VHDL soporta tres estilos de

descripción de circuitos:

Estilo Flujo de datos: donde se aborda la implementación del diseño utilizando

ecuaciones lógicas que describen como es el flujo de las señales desde la entrada

hasta la salida.

Page 14: APLICACIONES DE LA TARJETA XILINX 2S200E

14

Se recomienda utilizar este estilo en el diseño de circuitos combinacionales de simple

a mediana complejidad (circuitos SSI y MSI) como son circuitos diseñados en base a

compuertas básicas, multiplexores, decodificadores, comparadores, sumadores, etc.

Estilo algorítmico: En donde se modela el comportamiento deseado en un alto nivel

de abstracción. No hay mayor detalle del circuito a implementar, especificándose su

funcionamiento en base a un algoritmo construido con sentencias muy parecidas a los

lenguajes de programación de alto nivel.

Se recomienda utilizar este estilo para abordar el diseño de circuitos combinacionales

de medianos a complejos, circuitos secuenciales y máquinas de estado, en el diseño

de unidades de control y ruta de datos de los sistemas digitales. Es recomendado para

iniciarse en la programación VHDL por su alto nivel de abstracción, aunque la mayoría

de las herramientas de síntesis actuales tienen ciertas restricciones en cuanto a su

uso en su real magnitud.

Estilo estructural: En donde la descripción se realiza mediante la interconexión de

componentes previamente elaborados o extraídos de algunas bibliotecas que ofrecen

los fabricantes de CPLD’s ó FPGA’s. La descripción se realiza indicando la lista de

conexiones entre los diferentes componentes que conforman el circuito.

Page 15: APLICACIONES DE LA TARJETA XILINX 2S200E

15

Se recomienda este estilo cuando el sistema digital complejo se ha divido en

diferentes bloques funcionales y se desean unir esos bloques para la implementación

del sistema final. También cuando estamos frente a un circuito que tienen bloques

repetitivos y para la creación de los vectores de pruebas (testbench) en VHDL.

El tipo de estilo utilizado finalmente dependerá de las habilidades del diseñador en el

uso de lenguajes de programación, pero no se debe olvidar nunca que lo que se está

describiendo finalmente se transformará a ecuaciones lógicas que podrían ser

implementadas en dispositivos FPGA’s (basados en CLB’s) o CPLD’s (basados en

macroceldas).

Unidades de diseño.

En un programa VHDL hay dos bloques básicos: La entidad y la arquitectura.

Entidad: La entidad, nos sirve para relacionar nuestro diseño con el mundo exterior,

es decir, analizamos lo que tratamos de crear como una "caja negra", de la que sólo

conocemos sus entradas, salidas y la disposición de las mismas.

Sintaxis:

Entity identificador is

[genéricos]

[puertos]

end [identificador];

Page 16: APLICACIONES DE LA TARJETA XILINX 2S200E

16

Nota: lo que se encuentra entre corchetes [] se considera que su uso es opcional.

Cada señal en una declaración de entidad está referida a un puerto (o grupo de

señales), el cual es análogo a un(os) pin(es) del símbolo esquemático. Un puerto es

un objeto de información, el cual puede ser usado en expresiones y a la vez se le

pueden asignar valores. A cada puerto se le debe asignar un nombre válido.

La declaración de un puerto consta de:

- nombre: identifica a un pin de la entidad

- modo: indica el flujo de la señal.

- tipo: indica el conjunto de valores que puede tomar un objeto, en este

caso el puerto.

El modo determina como las sentencias de la arquitectura pueden acceder al puerto.

Tenemos 4 tipos de modos:

- in: es de sólo lectura (no se puede escribir).

- out: es de sólo escritura (no se puede leer).

- buffer: se comporta como un puerto de salida (out) que se puede leer.

- Inout: es de tipo bidireccional, quiere decir que se puede leer y escribir.

Page 17: APLICACIONES DE LA TARJETA XILINX 2S200E

17

Sólo para fines de simulación todo puerto puede tener un valor por defecto que

determina el valor inicial de la señal, los puertos de entrada pueden dejarse

desconectados si tienen un valor por defecto.

Arquitectura: En la declaración de la arquitectura es donde reside todo el

funcionamiento de un programa, ya que es ahí donde se indica que hacer con cada

entrada para obtener la salida. La arquitectura es el conjunto de detalles interiores de

la caja negra.

Sintaxis:

architecture nombre of entidad is

- - Zona de declaración

begin

sentencias concurrentes;

sentencias concurrentes;

sentencias concurrentes;

end nombre;

Para describir una arquitectura podemos utilizar tres estilos, teniendo cada uno su

propio nivel de abstracción:

- Estilo algorítmico (behavioral)

- Estilo flujo de datos (dataflow)

- Estilo estructural (structure)

Cada estilo está basado en sentencias concurrentes que determinan el grado de

abstracción del circuito a diseñar, así tenemos que el estilo algorítmico se caracteriza

por utilizar las sentencias de los lenguajes de alto nivel, el estilo flujo de datos basado

en sentencias que asignan valores a una señal y el estilo estructural que permite

interconectar componentes ya elaborados.

Page 18: APLICACIONES DE LA TARJETA XILINX 2S200E

18

La descripción de una arquitectura se compone de un conjunto de sentencias

concurrentes que se ejecutan en forma asíncrona entre sí y se comunican mediante

señales. Estos procesos que se ejecutan concurrentemente deben poder comunicarse

(sincronizarse) entre ellos. El elemento necesario para comunicar dos procesos es la

señal (signal).

En cada uno de los estilos de modelado se utiliza la sentencia de asignación de

señales: <=, para esto hay que tener en cuenta que:

- Las señales a ambos lados del operador de asignación (<=) deben ser

del mismo tipo.

- Si hay varias asignaciones a la misma señal en un mismo proceso,

prevalece el valor de la última asignación.

- Las asignaciones a señales pueden aparecer en sentencias

concurrentes (estilo flujo de datos) o sentencias secuenciales (estilo

algorítmico).

En la arquitectura las sentencias concurrentes hacen referencia en todo momento a

señales, estas señales pueden ser puertos. La señal es un tipo de objeto en VHDL que

puede cambiar de valor y tiene un modelo de retardo asociado.

Entre los modelos de retardo tenemos:

- Retardo de tipo inercial: es el retardo asociado a las compuertas

digitales.

- Retardo de tipo transporte: es el retardo asociado por las

interconexiones que existen entre los diferentes circuitos.

Tipo: El VHDL es un lenguaje de programación donde los objetos a utilizar (señales,

variables, constantes) deben tener asignado un tipo. El tipo define el conjunto de

valores que pueden tomar los objetos. Así tenemos por ejemplo el tipo bit (declarado

en el paquete Standard de la biblioteca STD) como:

TYPE BIT IS ('0', '1')

Page 19: APLICACIONES DE LA TARJETA XILINX 2S200E

19

Indica que el tipo bit sólo puede tomar los valores: '0' y '1'. Este es un tipo básico y con

el ya podemos crear puertos y nodos internos para interconectar los circuitos digitales.

Pero hay un inconveniente: este tipo no permite implementar componentes cuya salida

pueda tomar un valor de alta impedancia (Z), no se pueden realizar operaciones

aritméticas (sólo lógicas) ya que no hay implementadas funciones para tal fin con este

tipo y tampoco pueden unirse más de una señal sobre salidas de varios circuitos

porque el tipo bit tampoco tiene asociado una función que permita resolver las

múltiples asignaciones a un mismo objeto. Por esta razón es preferible utilizar el tipo

de dato std_logic que se encuentra en el paquete STD_LOGIC_1164 de la biblioteca

IEEE. El tipo std_logic es un tipo de dato multivaluado como se muestra en parte de la

descripción del paquete:

El tipo de dato utilizado por lo general std_logic (que es un sub-tipo del tipo std_ulogic)

por las ventajas que hemos mencionado en el párrafo anterior. Para poder utilizar este

tipo de dato en el programa VHDL debemos declarar previamente en que paquete se

encuentra y a que biblioteca pertenece el paquete, para esto utilizamos las siguientes

sentencias:

Page 20: APLICACIONES DE LA TARJETA XILINX 2S200E

20

Con ello tenemos la posibilidad de utilizar todos los elementos que se encuentran

declarados en los paquetes: STD_LOGIC_1164, STD_LOGIC_ARITH y

STD_LOGIC_UNSIGNED. En el paquete STD_LOGIC_1164 encontramos la

declaración de tipos y subtipos de datos, funciones de conversión de un tipo a otro. En

el paquete STD_LOGIC_ARITH encontramos funciones aritméticas, lógicas y de

relación que se puede utilizar entre los objetos declarados con tipos de datos

STD_LOGIC ó STD_LOGIC_VECTOR. El paquete STD_LOGIC_UNSIGNED

complementa al paquete STD_LOGIC_ARITH con operaciones aritméticas sin tener

en cuenta los bits de signo. Mayor informarcion sobre el lenguaje de programación [1],

[4], [5] y [6].

Page 21: APLICACIONES DE LA TARJETA XILINX 2S200E

21

CAPITULO II

LA TARJETA DIGILAB 2SB, TARJETA DIO 4 Y LAS HERRAMIENTAS DE DISEÑO

ISE 7.1I.

La tarjeta Digilab 2SB tiene muchas características que facilitan la experimentación

diseños lógicos reconfigurables así como también prototipos generales rápidos de

lógica digital. La tarjeta Digilab 2SB se muestra en la figura 1 y mediantes diagrama de

bloques en la figura 2:

Figura 1: Tarjeta Digilab 2SB (FPGA XILINX XC200E)

Page 22: APLICACIONES DE LA TARJETA XILINX 2S200E

22

Figura 2: Diagrama de bloques de la Tarjeta Digilab 2SB (FPGA XILINX XC200E).

La tarjeta Digilab 2SB es autónoma, es una tarjeta que sirve para experimentos y

desarrollos de prototipos con FPGA’s utilizando la arquitectura Xilinx FPGA. Esta

tarjeta tiene un Xilinx Spartan XC2S200E FPGA.

Un oscilador de 50 MHz es el motor de la FPGA. Más información acerca de esta

tarjeta Digilab 2SB se puede encontrar en [9].

La tarjeta posee 6 bancos de entradas y salidas a los cuales se les asigna un número

de pines específicos para su implementación.

La tarjeta Xilinx Spartan 2E FPGA. D2-SB incluye:

Xilinx XC2S200E-200 FPGA con 200K compuestas y 350MHz de operación;

Page 23: APLICACIONES DE LA TARJETA XILINX 2S200E

23

143 entradas y salidas en 6 rutas estándares de 40 pines cada una;

Un socket para JTAG-programmable 18V02 configuration Flash ROM;

Doble regulador de voltaje (1.8V y 3.3V)

Un oscilador SMD 50MHz y un socket para un Segundo oscilador

Un puerto programable JTAG

Un led de status y un pulsador para la expansiones I/O

Conector de expansión de 40 pines

Figura 3: Vista del conector de expansión de la tarjeta Digilab 2SB.

Tarjeta Digilab DIO4

La tarjeta DIO4 puede ser conectada a un sistema de tarjetas Digilent de forma rápida

y sencilla para añadir varias utilidades a los puertos I/O. La DIO4 se alimenta de la

tarjeta del sistema y las señales de todos los dispositivos de I/O (entrada y salida) son

ruteados los pines individualmente en los conectores de la tarjeta del sistema (tarjeta

Digilab 2SB).

Estas características permiten a la tarjeta DIO4 ser incorporada dentro de los circuitos

de la tarjeta del sistema con un mínimo esfuerzo.

Todos los dispositivos de la tarjeta DIO4 usan el suministro de 3.3V de la tarjeta del

sistema, a excepción del puerto PS/2 que necesita un suministro de 5VDC (La tarjeta

DIO4 contiene un regulador de 5VDC), las señales provenientes del puerto PS/2 son

ruteadas mediante buffer de protección (para proteger la tarjeta del sistema que no

tiene entradas tolerantes de 5V

Page 24: APLICACIONES DE LA TARJETA XILINX 2S200E

24

Diagrama de bloques de la Tarjeta Digilab DIO4

Figura 4: Diagrama de bloques de la Tarjeta Digilab DIO4.

La Tarjeta Digilab DIO4 incluye:

4 Display de 7 segmentos.

8 leds individuales.

4 pulsadores.

8 switches.

Puerto VGA de 3 bits.

Puerto PS/2 para teclado o mouse.

Page 25: APLICACIONES DE LA TARJETA XILINX 2S200E

25

Visualización Grafica de las tarjetas Digilab 2SB y DIO4

Figura 5: Visualizacion grafica de las tarjetas Digilab 2SB (Izquierda) y DIO4 (Derecha).

EL SOFTWARE XILINX ISE FOUNDATION SERIES

Los diseños que son introducidos en la tarjeta Digilab 2SB requiere el uso del diseño

especial asistido por computadora, CAD, el software para configurar el Xilinx Spartan –

series FPGA. El software CAD es la suite de herramientas Xilinx ISE Foundation series

Este software funciona con una PC bajo Windows/Unix y eso da soporte a la entrada

de diseño (captura vía esquemas, entrada de diagrama de estado y lenguaje de

descripción de hardware), síntesis, simulación lógica, análisis de tiempo y

configuración del dispositivo.

Este software permite la descripción en lenguajes VHDL, Verilog, ABEL, UCF. La

pantalla está dividida en cuatro subpantallas principales, tal y como se presenta en la

Figura 6. En la parte superior izquierda se encuentra la ventana Sources in Project –

fuentes en la pantalla-, la cual presenta de forma jerárquica los elementos incluidos en

Page 26: APLICACIONES DE LA TARJETA XILINX 2S200E

26

el proyecto. Bajo esta subpantalla se encuentra Processes for Source el cual muestra

los procesos habilitados. La tercera ventana, ubicada en la parte inferior, muestra

errores y advertencias, que se producen durante todas las etapas del proyecto.

Figura 6: Interfaz general del proyecto: Interface Project Navigator.

ISE se autodenomina Navegador de Proyecto (Project Navigator) y está orientado a

facilitar el proceso de desarrollo.

En la ventana principal se distinguen cuatro partes:

- Arriba a la izquierda se encuentra la ventana de ficheros fuente del proyecto.

- Debajo, a la izquierda, se encuentra la ventana de proyecto que representa el

flujo de diseño adaptado al dispositivo del proyecto.

- A la derecha se encuentra un espacio reservado para colocar los diferentes

editores del entorno.

- Abajo tenemos una ventana que muestra la salida texto generada por las

diferentes utilidades que van siendo llamadas en el proceso de diseño.

Cada vez que abrimos la aplicación se carga el último proyecto tratado mostrando el

estado correspondiente a las actuaciones realizadas en cada una de las ventanas.

Page 27: APLICACIONES DE LA TARJETA XILINX 2S200E

27

La figura siguiente muestra la ventana de proyecto en la que se aprecian las diferentes

fases del flujo de diseño.

Figura 7: La ventana de proyectos de ISE.

Resumidamente las fases de desarrollo son:

1. Diseño.

2. Imposición de restricciones.

3. Síntesis.

4. Implementación.

5. Configuración del dispositivo o carga del programa.

Cada una de estas etapas admite una variedad de formatos y herramientas tanto

nativas (de Xilinx) como de terceros. Los dispositivos reconfigurables pueden ser de

dos arquitecturas diferentes: FPGA’s (Field Programmable Gate Array) y CPLD’s

(Complex Programmable Logic Device).

Page 28: APLICACIONES DE LA TARJETA XILINX 2S200E

28

FLUJO DE DISEÑO

En esta sección se presenta el flujo de diseño completo para lógica reconfigurable de

Xilinx. Podemos distinguir las siguientes etapas:

1. Diseño _ modelado de un circuito lógico (HDL, esquemático, EDIF, máquina

de estados, etc.).

2. Imposición de restricciones _ asignación de pines, limitaciones temporales.

3. Síntesis _ traducción a puertas lógicas.

4. Implementación _ generación del programa que configura un determinado

dispositivo destino (FPGA o CPLD).

5. Configuración del dispositivo _ carga del programa en el dispositivo destino.

La figura siguiente ilustra lo dicho indicando las diferentes fases de desarrollo según la

enumeración anterior. Dicha enumeración no significa que necesariamente haya que

seguir ese orden de principio a fin, más bien es un proceso en el que se avanza y

retrocede iterativamente hasta alcanzar el objetivo.

Figura 8: Flujo de diseño Xilinx simplificado.

Page 29: APLICACIONES DE LA TARJETA XILINX 2S200E

29

Cada una de las etapas del flujo de diseño puede realizarse dentro del entorno

integrado o bien utilizar herramientas de terceros. Algunas de esas herramientas

también son integrables en ISE si están convenientemente instaladas.

La lógica reconfigurable de Xilinx cuenta con dos tipos de dispositivos: FPGA’s (Field

Programmable Gate Array) y CPLD’s (Complex Programmable Logic Device). Cada

uno de ellos tiene sus fases de desarrollo específicas. Aquí nos centraremos en la

configuración de dispositivos FPGA.

Fase de diseño, restricciones y síntesis

En el diagrama de flujo de diseño figura en primer lugar la entrada del circuito lógico

que deseamos implantar. Esta entrada se puede realizar de las siguientes maneras: _

HDL o lenguaje de descripción de hardware (VHDL, Verilog, ABEL).

Esquemáticos.

EDIF.

NGC/BGO.

Máquina de estados.

Núcleo IP.

Para llevar a cabo esta entrada del circuito lógico el entorno ISE proporciona las

siguientes herramientas:

- Editor de texto. Genera diferentes extensiones dependiendo del lenguaje

utilizado. Para el caso de VHDL la extensión es *.vhd.

- Editor de esquemáticos. Es la utilidad ECS (Engineering Capture System)

que podemos encontrar bajo el nombre ECS.exe. Funciona tanto en el entorno

integrado ISE como de forma autónoma. Genera ficheros con extensión *.sch.

Page 30: APLICACIONES DE LA TARJETA XILINX 2S200E

30

- Editor de máquinas de estados. Es la utilidad StateCAD (fichero sc.exe).

Permite generar diagramas de estados (ficheros *.dia) y traducirlos a algún

lenguaje de descripción de hardware.

Hay que tener en cuenta que el circuito ha de relacionarse con el exterior a través de

los pines del encapsulado del dispositivo configurable destino (FPGA en nuestro caso).

Estos pines están, a su vez, unidos a una serie de elementos de la placa de desarrollo

(puertos de entrada/salida, memoria, microcontrolador, etc.). Es necesario, por tanto,

establecer las asignaciones de entradas y salidas a los pines del dispositivo físico

concreto. Esto forma parte de las restricciones de usuario que además incluyen las

limitaciones temporales.

Para realizar las asignaciones de pines del encapsulado tenemos las siguientes

herramientas:

- Editor de texto. Generamos un fichero de extensión *.ucf.

- PACE: Pinout and Area Constrints Editor. Entorno gráfico que permite

realizar las asignaciones y salvarlas en un fichero de texto. Este fichero de

texto tiene extensión *.ucf.

Finalmente hemos de realizar la traducción del circuito a puertas lógicas. Cuando el

diseño fuente se ha realizado en esquemático o con lenguajes de descripción de

hardware mediante modelados estructurales se puede disponer de la implementación

en puertas lógicas pero en otros casos no es así. La síntesis se puede realizar con las

siguientes herramientas:

- XST: Xilinx Synthesis Technology. Es el sintetizador nativo de Xilinx y se

materializa en el ejecutable xst.exe. Genera (entre otros) un fichero de

extensión *.ngc.

- LeonardoSpectrum. Pertenece a Mentor Graphics y es integrable en ISE.

- Synplify. Pertenece a Synplicity y también es integrable en ISE.

Las etapas de diseño, imposición de restricciones (asignación de pines) y síntesis se

presentan con detalle en la figura siguiente.

Page 31: APLICACIONES DE LA TARJETA XILINX 2S200E

31

Figura 9: Flujo de diseño Xilinx para entrada de modelos y síntesis.

En la figura 9, podemos observar como partiendo de esquemáticos pasamos a una

formalización textual a través de EDIF (Electronic Design Interchange Format).

EDIF es una normalización usada para intercambiar diseños entre diferentes sistemas

de CAD y entre ellos y los equipos de fabricación y ensamblado de circuitos impresos.

Los ficheros EDIF tienen extensión *.edf.

Como hemos dicho, cuando partimos de descripciones realizadas con VHDL, Verilog o

ABEL es necesario intercalar una etapa de síntesis a puertas lógicas ya que estos

modelos no siempre se realizan basados en circuitos lógicos, es más, su mayor

potencia se encuentra en los modelados comportamentales, más cercanos a los

programas de alto nivel que a los circuitos digitales. La síntesis genera ficheros NGC

(*.ngc) o EDIF (*.edf).

En esta fase del diseño es necesario comprobar las reglas lógicas y realizar

simulaciones que nos permitan justificar el correcto funcionamiento de nuestros

circuitos. Como herramientas de simulación integradas disponemos de:

- ISE SIMULATOR: es el simulador nativo de Xilinx con salida de forma de

onda que nos permite ver los cronogramas que generan nuestros diseños.

- ModelSim de Model Technology integrable en ISE.

Page 32: APLICACIONES DE LA TARJETA XILINX 2S200E

32

El conjunto de ficheros que describen el modelo (*.ngc y *.edf) y los que imponen

restricciones (.ucf) permiten abordar la siguiente fase, la de implementación.

Carga del Programa de Configuración

Disponemos de 2 opciones para cargar el programa de configuración en la pastilla

FPGA:

- La herramienta IMPACT de Xilinx que genera varios formatos de ficheros

de programación y que puede descargar el programa a través de un cable

de comunicación; y

- Las utilidades de la placa de desarrollo que proporciona Digilent. En este

caso necesitamos un fichero de programación de extensión *.svf.

IMPACT

Realiza dos funciones básicas: la configuración de un dispositivo a través de

alguno de los posibles cables desarrollados al efecto y la generación de

ficheros de configuración en diferentes formatos. El cable disponible en nuestro

caso es JTAG.

La configuración del dispositivo se puede hacer con arreglo a uno de los cuatro

modos disponibles:

- Boundary-scan.

- SelectMAP

- SlaveSerial

- Desktop Configuration (únicamente cable MultiPRO).

En nuestro caso usaremos Boundary-scan con el cable JTAG.

Page 33: APLICACIONES DE LA TARJETA XILINX 2S200E

33

CAPITULO III

COMPARADOR DE 2 BITS

APLICACIÓN ISE PROJECT NAVIGATOR Y MODELSIM

La versión ISE Project Navigator 7.1i es una edición libre, descargable de la página

web de Xilinx, previamente se tiene que configurar la licencia para que tipo de

Hardware se va a utilizar.

El arranque de la aplicación se realiza a través del menú inicio: Menú

inicio/Programas /Xilinx ISE 7.1I/Project Navigator. Después de la ventana de

bienvenida aparece la ventana principal del entorno, tal y como se muestra en la figura

siguiente si no se ha realizado ningún proyecto anteriormente.

Figura 10: Aspecto inicial de ISE Project Navigator 7.1i.

Page 34: APLICACIONES DE LA TARJETA XILINX 2S200E

34

Para cerrar la aplicación hay que seleccionar la opción File/Exit y confirmar en el

cuadro de diálogo correspondiente.

CREACION DE UN PROYECTO

Para el entorno ISE un proyecto es un conjunto de unidades de diseño --modelos en

lenguajes de descripción de hardware, esquemáticos, etc.--, unas restricciones de

implantación física y una arquitectura de dispositivo reconfigurable. Además de esto, el

proyecto integrará en el entorno algunas herramientas de simulación y síntesis que

seleccionará el usuario de entre las nativas de Xilinx y las proporcionadas por terceros.

Creación de nuestro proyecto:

1. Iniciar la aplicación ISE Project Navigator 7.1i

2. Seleccionar la opción File/New Project…. Aparecerá la ventana de dialogo de la

figura siguiente.

En dicha ventana se establece el nombre del proyecto, el directorio en el que

desea ubicarse y tipo de fichero fuente de entre los disponibles (lenguaje de

descripción de hardware (HDL), esquemático, EDIF o NGC/NGO).

Pulsar el botón ‘Siguiente’.

Figura 11. Primera ventana de dialogo para la creación de un proyecto.

Page 35: APLICACIONES DE LA TARJETA XILINX 2S200E

35

3. Aparece la ventana de diálogo de la figura siguiente en la que se determina el

dispositivo reconfigurable destino, su encapsulado y grado de velocidad. Las

herramientas de síntesis (XST de Xilinx) y simulación (ModelSim de Model

Technology) aparecen automáticamente si están instaladas en nuestro

computador. También se selecciona el lenguaje HDL concreto que se va a utilizar

en los ficheros fuente. En nuestro caso para el tipo de tarjeta que utilizaremos la

configuración seria:

Device Family: Spartan2E

Device: xc2s200e

Package: pq208

Pulsar el botón ‘Siguiente’

Figura 12: Ventana de nuevo proyecto.

4. En las siguientes ventanas podemos determinar los ficheros fuente que vamos a

utilizar o bien optar por no dar ninguna información ya que siempre podemos

añadir nuevos ficheros en cualquier momento.

Hacer clic en el botón ‘Finalizar’

Para crear el proyecto.

Page 36: APLICACIONES DE LA TARJETA XILINX 2S200E

36

La creación del proyecto tiene las siguientes consecuencias:

- Se crea el fichero de extensión *.npl de configuración del proyecto en el

directorio del proyecto. En nuestro caso es ejemplo1.npl.

- Aparecen los ficheros fuente en la ventana de fuentes. Además de los ficheros

de modelos y restricciones tenemos una entrada para el dispositivo

reconfigurable.

- Con el menú contextual podemos crear un nuevo fichero fuente, añadir uno

existente, abrir uno presente con su editor específico, eliminar fuentes o

consultar las propiedades de cada elemento.

Aparece en la ventana de proyecto el flujo de diseño específico del dispositivo

destino. Cada una de las entradas del mismo puede ejecutarse. Si el resultado

es correcto se marcará con el símbolo mientras que si genera errores se

indicará con el símbolo X.

Page 37: APLICACIONES DE LA TARJETA XILINX 2S200E

37

Figura 13: Ventana de procesos y proyectos de ISE 7.1i

5. Creamos una nueva fuente: menú Project/new source, colocamos un nombre de

archivo, luego declaramos las entradas y salidas

Figura 14: ventana para definir entradas y salidas al crear un nuevo diseño.

Page 38: APLICACIONES DE LA TARJETA XILINX 2S200E

38

Click en “siguiente”, “siguiente” y “finalizar”; Una vez definimos los puertos de

entradas y salidas, pasaremos a ingresar el código VHDL tal como muestra la

figura siguiente:

Figura 15: Ventana de trabajo donde ingresamos el código VHDL.

Esto es una forma de lenguaje de describir el hardware, puede haber muchas

variantes para describir el mismo ejemplo.

6. verificamos que nuestro programa no tenga ningún error, esto se logra haciendo

RUN en el sintetizador XST de la ventana de procesos.

Page 39: APLICACIONES DE LA TARJETA XILINX 2S200E

39

Figura 16: Ventana general del proyecto ingresado con el código VHDL.

7. Como podemos observar en la figura anterior, en la lengüeta de errores no se

detecto ninguno, luego se pasa a grabar en el chip de la tarjeta Spartan 2SB

X2S200E; Esto se hace en el programa iMPACT

Figura 17: Ventana de proceso “configure device (Impact)”

Page 40: APLICACIONES DE LA TARJETA XILINX 2S200E

40

Tenemos que editar los pines y el clock del dispositivo a usar:

La figura 18, ilustra el editor PACE (Pinout and Area Constraints Editor) que se

utiliza para realizar las asignaciones de entradas/salidas a pines del encapsulado.

Este editor gráfico genera automáticamente un fichero de asignación de pines en

modo texto de extensión .ucf, en nuestro caso se denomina ejemplo1.ucf. El

diagrama del flujo de diseño permite hacer la asignación de pines tanto en el

entorno gráfico (Assign Package Pins) como generando el fichero de texto (Edit

Constraints (Text)) bajo la entrada User Constraints del árbol de la ventana de

proyecto.

Figura 18. Editor PACE de asignación de pines con el encapsulado PQ208 del dispositivo XILINX 2S200E.

En nuestro ejemplo asignaremos los pines de las tarjetas mediante Edit

Constraints (text), que es una forma manual de ingresar la asignación de pines de

las tarjetas 2SB y DIO4

Page 41: APLICACIONES DE LA TARJETA XILINX 2S200E

41

Figura 19. Editor de texto con el fichero de asignación de pines.

El dispositivo a usar tiene puerto JTAG, por ende lo configuraremos, haciendo click

derecho sobre Generate Programming File de la ventana Proccess, la figura

muestra la elección JTAG Clock, luego click en Aceptar

Figura 20: Ventana de propiedades para editar el clock JTAG.

Page 42: APLICACIONES DE LA TARJETA XILINX 2S200E

42

8. Seleccionamos "boundary scan" y luego siguiente.

Figura 21: programación en curso.

9. Luego seleccione "Automatically Connect to cable and select boundary scan

chain" y click en “finalizar”.

10. Aparecerá un mensaje al cual le colocaremos OK

Figura 22: Proceso de verificación BOUNDARY

11. Luego abriremos el archivo .BIT, en nuestro caso ejemplo1.bit, el mensaje que

aparecerá se le coloca aceptar

Page 43: APLICACIONES DE LA TARJETA XILINX 2S200E

43

Figura 23. Tareas disponibles para realizar sobre el dispositivo en modo configuración.

Al final colocamos OK

Page 44: APLICACIONES DE LA TARJETA XILINX 2S200E

44

Figura 24: Verificación y activación de borrar programación anterior.

Con esto hemos logrado grabar el código VHDL en la tarjeta y no resta más que

comprobar su funcionamiento

NOTA: Es muy importante seleccionar Erase Before Programming para no dañar el

chip.

Luego se crea un fichero de programación *.svf si ha salido todo con éxito.

RTL SCHEMATIC DE LA VENTANA PROCESS

Aquí se puede observar después de la compilación el diseño esquemático que es un

objeto que se puede usar cuando se desea programar mediante diagrama

esquemático.

Page 45: APLICACIONES DE LA TARJETA XILINX 2S200E

45

Figura 25: Bloque esquemático del comparador

También podemos simular cualquier proceso usando la herramienta ModelSim,

una vez creado el programa en project navigator, doble click en Launch Modelsim

Simulator, para que aparezca antes deberiamos haber configurado que la simulacion

se haria con Modelsim, porque tambien se puede haber elegido ISE Simulator.

Figura 26: Abrir el Simulador ModelSim.

Por lo tanto tenemos la siguiente ventana en que se podra simular sin necesidad de

tener las tarjetas Digilab 2SB y DIO4

Page 46: APLICACIONES DE LA TARJETA XILINX 2S200E

46

Figura 27: Ventana de trabajo del simulador ModelSim XE III 6.0a.

Page 47: APLICACIONES DE LA TARJETA XILINX 2S200E

47

SUMADOR BINARIO

Creamos un nuevo proyecto:

Figura 28: creación de un nuevo proyecto para un sumador.

Click en siguiente

Debemos asegurarnos de haber ingresado las propiedades correctas del dispositivo,

tal como se observa en la figura 29:

Page 48: APLICACIONES DE LA TARJETA XILINX 2S200E

48

Figura 29: Configurar según la tarjeta Digilab 2SB

Click en “siguiente”

En el New Project Wizard, click en New Source. En New Source Wizard, seleccionar

VHDL module y escribir el nombre del archivo.

Page 49: APLICACIONES DE LA TARJETA XILINX 2S200E

49

Figura 30: Creación de un nuevo archivo para el sumador

Click “siguiente”. En este ejercicio, se diseñara un sumador (adder) con X, Y y Z

entradas y S y C salidas. Por lo tanto, colocar adecuadamente los puestos y luego

click en siguiente

Page 50: APLICACIONES DE LA TARJETA XILINX 2S200E

50

Figura 31: Ingreso de las entradas y salidas.

Click en “siguiente”, “siguiente” y “finalizar”. Esto abrirá un editor donde se podrá

ingresar el código VHDL

Figura 32: Ventana del proyecto una vez ingresado las entradas y salidas.

Recordamos que:

ZYXS

XZYZXYC

Por lo tanto,

Page 51: APLICACIONES DE LA TARJETA XILINX 2S200E

51

Figura 33: Ventana de trabajo con el programa del sumador.

Guardar el archivo

El proyecto puede ser simulado usado ModelSim o ISE Simulator. Para detalles de ISE

Simulator diríjase al tutorial de ISE Simulator. ModelSim lleva un similar proceso como

bosquejo general esto se puede ver en el tutorial de ModelSim. Esto se puede realizar

similar al ejemplo presentado en el capitulo anterior.

Page 52: APLICACIONES DE LA TARJETA XILINX 2S200E

52

Figura 34: Ventana ModelSim XE III 6.0a del sumador

Cuando el diseño es verificado, abrir el editor User Constraints Editor y asignar los

pines correctos a las entradas y salidas.

Page 53: APLICACIONES DE LA TARJETA XILINX 2S200E

53

Figura 35: Ingreso manual de la asignación de pines (edit constrainst (Text)).

Seguir los pasos para la implementación en las tarjetas mencionado en el capitulo

anterior.

Page 54: APLICACIONES DE LA TARJETA XILINX 2S200E

54

CAPITULO IV

COMPARADOR BINARIO

Creación de código VHDL mediante captura esquemática (*.sch)

Para ellos crearemos un nuevo proyecto: eligiendo Schematic

Figura 36: Nuevo proyecto para diseño esquemático.

Click en Siguiente. Elegimos según las características de las tarjetas, de la misma

manera de los proyectos anteriores

Page 55: APLICACIONES DE LA TARJETA XILINX 2S200E

55

Figura 37: Configuración del hardware a usar.

Click en “siguiente”, click en “New source”, debemos elegir Schematic, colocar nombre

a nuestro archivo y dar la ubicación donde se guardara.

Figura 38: creación de nuevo archivo de captura esquemática.

Click en “siguiente”, “finalizar”, luego click en “siguiente”, “siguiente” y “finalizar”,

tendremos la siguiente ventana, donde tenemos las ventanas “desing sum” (figura 39)

y “proyecto3.sch” (figura 40) donde haremos el esquema:

Page 56: APLICACIONES DE LA TARJETA XILINX 2S200E

56

Figura 39: ventana resultante al ingresar la configuración del nuevo proyecto

esquemático (Desing Sum).

Figura 40: ventana resultante al ingresar la configuración del nuevo proyecto

esquemático (proyecto3.sch).

En esta ventana se podrá diseñar cualquier circuito, y luego también se puede generar

su código VHDL, el proceso de simulación es similar a procesos anteriores

mencionados.

En este caso tenemos un multiplexor 2 a 1: se podrá cambiar los nombres de los

puertos mediante sus propiedades tal como se muestra en la figura 41:

Page 57: APLICACIONES DE LA TARJETA XILINX 2S200E

57

Figura 41: Visualizacion del multiplexor 2 a 1.

Luego para verificar que nuestro esquema esta correcto hacemos un click en el checo

(menú tolos/check schematic), debe mostrarse similar a la figura mostrada, sin

errores.

Figura 42: Verificación de errores del diseño esquemático.

Simulamos haciendo dobre click en synthesize -XST, y nos muestra la consola libre

de errores, aquí también notar que se genera un archivo.vhd

Page 58: APLICACIONES DE LA TARJETA XILINX 2S200E

58

Figura 43: Código VHDL generado del multiplexor 2 a 1:

Que también se puede simular en ModelSim o con ISE Simulator.

Page 59: APLICACIONES DE LA TARJETA XILINX 2S200E

59

Figura 44: Simulación del multiplexor en ModelSim XE III 6.0a.

2.5. DISCUSION

El trabajo de investigación que hemos desarrollado ha tenido en cuenta el

avance tecnológico y el uso apropiado de las tarjetas Digilab con la que cuenta

el laboratorio de Ingeniera Electrónica para resolver problemas de diseños y

simular ejemplos de circuitos digitales en general.

2.6. CONCLUSIONES

- Es posible verificar el funcionamiento del sistema dentro del proceso de Diseño

sin necesidad de implementar el circuito.

- • Las simulaciones del diseño, antes de que éste sea implementado mediante

compuertas, permiten probar la arquitectura del sistema para tomar decisiones

en cuanto a cambios en el diseño.

- • Las herramientas de síntesis tienen la capacidad de convertir una descripción

hecha VHDL a compuertas lógicas y, además, optimizar dicha descripción de

acuerdo a la tecnología utilizada.

- • Esta metodología elimina el antiguo método tedioso de diseño mediante

compuertas, reduce el tiempo de diseño y la cantidad de errores producidos

por el armado del circuito.

- Las herramientas de síntesis pueden transformar automáticamente un circuito

obtenido mediante la síntesis de un código en VHDL, a un circuito pequeño y

rápido. Además, es posible aplicar ciertas características al circuito dentro de la

descripción para afinar detalles (retardos, simplificación de compuertas, etc.)

en la arquitectura del circuito y que estas características se obtengan en la

síntesis de la descripción.

Page 60: APLICACIONES DE LA TARJETA XILINX 2S200E

60

- Las descripciones en VHDL proporcionan documentación de la funcionalidad

de un diseño independientemente de la tecnología utilizada.

- Un circuito hecho mediante una descripción en VHDL puede ser utilizado en

cualquier tipo de dispositivo programable capaz de soportar la densidad del

diseño. Es decir, no es necesario adecuar el circuito a cada dispositivo porque

las herramientas de síntesis se encargan de ello.

- Una descripción realizada en VHDL es más fácil de leer y comprender que los

netlist o circuitos esquemáticos.

2.7. RECOMENDACIONES

- Se recomienda la utilización de las tarjetas Digilab 2SB que tiene el FPGA

XILINX 2S200E y la tarjeta DIO4 en los cursos de Ingeniería Electrónica tales

como Circuitos Digitales, Sistemas Digitales, Procesamiento Digital de Señales

y Control automático debido a la utilidad de describir los diseños en VHDL

(Lenguaje de descripción de Hardware).

- Se recomienda leer la bibliografía referente a lenguaje de descripción de

Hardware (VHDL) debido a que no ha sido propósito específico de nuestra

investigación.

- Se motiva a los estudiantes y en general a los investigadores desarrollar

algoritmos para hacer uso de los puertos VGA y PS/2 que tiene la tarjeta

Digilab DIO4.

2.8. REFERENCIAS BIBLIOGRAFICAS

1. Fernando Nuño Garcia, Very High Speed Integrated Circuit Hardware

Description Language (VHSIC HDL).

Page 61: APLICACIONES DE LA TARJETA XILINX 2S200E

61

2. Sin Ming Loo, Getting Started with Xilinx Design Tools and the Digilab 2E

Prototyping Board – a User’s Guide.

3. Dpto. Electrónica – Universidad de Alcalá, tutorial de diseño en VHDL para

FPGAS.

4. Douglas L. Perry, VHDL Programming by Example, Fourth Edition.

5. IEEE Standard VHDL Language Reference Manual, IEEE Standard 1076.

2000

6. M A Freira. Introducción al lenguaje VHDL, Universidad Politécnica de

Madrid.

7. Xilinx Inc. [http://www.xilinx.com]

8. Digilent D2-SB. System Board. Reference Manual. Sep, 2003. Disponible

en:

http://www.digilentinc.com/Data/Products/D2SB/D2SBrm.pdf

9. ModelSim manual Xilinx 6.0a, publicado sep2004

Disponible en:

www.model.com/downloads/default.asp

10. Digilent DI04 Peripheral Board. Reference Manual. Agosto, 2004.

Disponible en:

http://www.digilentinc.com/Data/Products/DIO4/DIO4 -rm.pdf

http://www.digilentinc.com/Data/Products/DIO4/DIO4 -rm.pdf

Page 62: APLICACIONES DE LA TARJETA XILINX 2S200E

62

2.9. ANEXOS

Tabla 1: Configuración de los puertos de la tarjeta 2SB y DIO4.

Page 63: APLICACIONES DE LA TARJETA XILINX 2S200E

63

Tabla 2: Configuración de los puertos de la tarjeta 2SB y DIO4.

Page 64: APLICACIONES DE LA TARJETA XILINX 2S200E

64