aplicaciones de la tarjeta xilinx 2s200e
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” - 2009TRANSCRIPT
“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
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
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
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.
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).
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
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).
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.
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.
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
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).
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
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.
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.
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];
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.
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.
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')
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:
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].
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)
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;
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
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.
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
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)”
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
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.
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
43
Figura 23. Tareas disponibles para realizar sobre el dispositivo en modo configuración.
Al final colocamos OK
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.
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
46
Figura 27: Ventana de trabajo del simulador ModelSim XE III 6.0a.
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:
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.
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
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,
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.
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.
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.
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
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:
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:
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
58
Figura 43: Código VHDL generado del multiplexor 2 a 1:
Que también se puede simular en ModelSim o con ISE Simulator.
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.
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).
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
62
2.9. ANEXOS
Tabla 1: Configuración de los puertos de la tarjeta 2SB y DIO4.
63
Tabla 2: Configuración de los puertos de la tarjeta 2SB y DIO4.
64