SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
“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
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




                                            2
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


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


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

                                   5
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


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


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




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




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




                                          11
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


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




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

                                           14
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];
                                          15
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.




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


                                                  17
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')



                                                 18
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:
                                             19
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].




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




                                          21
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;


                                          22
 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



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




                                         24
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
                                            25
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.


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



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

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




                                           29
-   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.
                                           30
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.


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




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


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

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


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




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


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




                                             38
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)”



                                       39
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




                                       40
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.
                                      41
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

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


Al final colocamos OK




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




                                          44
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
                                         45
Figura 27: Ventana de trabajo del simulador ModelSim XE III 6.0a.




                               46
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:




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




                                          48
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




                                         49
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:


S  X Y  Z


C  XY  YZ  XZ


Por lo tanto,




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




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




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




                                          53
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




                                        54
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:




                                           55
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:




                                          56
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




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

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




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

                                        60
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




                                   61
2.9. ANEXOS




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

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


                              63
64

Contenu connexe

Similaire à APLICACIONES DE LA TARJETA XILINX 2S200E

Unidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JPUnidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JPJhonatan Pat
 
Informe de proyecto final de control discreto
Informe de proyecto final de control discretoInforme de proyecto final de control discreto
Informe de proyecto final de control discretoSamuel Guiza Jerez
 
Guia de practicas s7 1200 tia portal
Guia de practicas s7 1200 tia portalGuia de practicas s7 1200 tia portal
Guia de practicas s7 1200 tia portalDavidSnchez297251
 
Electrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3EElectrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3ESANTIAGO PABLO ALBERTO
 
Electrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDLElectrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDLSANTIAGO PABLO ALBERTO
 
Electrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDLElectrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDLSANTIAGO PABLO ALBERTO
 
MTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y CardmoduleMTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y CardmoduleMariano Tejedor
 
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfdsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfEloyChoque1
 
Arquitectura de computadoras ii
Arquitectura de computadoras iiArquitectura de computadoras ii
Arquitectura de computadoras iisilvestron
 
Recuperacion Soporte tecnico_240320_061459.pdf
Recuperacion Soporte tecnico_240320_061459.pdfRecuperacion Soporte tecnico_240320_061459.pdf
Recuperacion Soporte tecnico_240320_061459.pdfJavierYajamin
 
Guia de aprendizaje fase 3 - diseno (1)
 Guia de aprendizaje fase 3 - diseno  (1) Guia de aprendizaje fase 3 - diseno  (1)
Guia de aprendizaje fase 3 - diseno (1)Arii Diaz
 

Similaire à APLICACIONES DE LA TARJETA XILINX 2S200E (20)

Herramientas cad tarea 3
Herramientas cad tarea 3Herramientas cad tarea 3
Herramientas cad tarea 3
 
Curso fpga-programacion-arreglos-compuertas
Curso fpga-programacion-arreglos-compuertasCurso fpga-programacion-arreglos-compuertas
Curso fpga-programacion-arreglos-compuertas
 
Exposicion
ExposicionExposicion
Exposicion
 
Fritzing
FritzingFritzing
Fritzing
 
Exposicion
ExposicionExposicion
Exposicion
 
Unidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JPUnidad 4 lenguaje hdl ISC J3 - A JP
Unidad 4 lenguaje hdl ISC J3 - A JP
 
Informe de proyecto final de control discreto
Informe de proyecto final de control discretoInforme de proyecto final de control discreto
Informe de proyecto final de control discreto
 
intro_VHDL.pdf
intro_VHDL.pdfintro_VHDL.pdf
intro_VHDL.pdf
 
Intro vhdl
Intro vhdlIntro vhdl
Intro vhdl
 
Guia de practicas s7 1200 tia portal
Guia de practicas s7 1200 tia portalGuia de practicas s7 1200 tia portal
Guia de practicas s7 1200 tia portal
 
Electrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3EElectrónica digital: Practicas spartan 3E
Electrónica digital: Practicas spartan 3E
 
Electrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDLElectrónica digital: Introducción a la programación VHDL
Electrónica digital: Introducción a la programación VHDL
 
IDLconVHDL2010.pdf
IDLconVHDL2010.pdfIDLconVHDL2010.pdf
IDLconVHDL2010.pdf
 
Electrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDLElectrónica digital: Lenguaje descripción de hardware VHDL
Electrónica digital: Lenguaje descripción de hardware VHDL
 
MTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y CardmoduleMTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
MTM eSEC-ENISE 26Oct - Framework DNIe y Cardmodule
 
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdfdsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
dsi_tp_1515_1516_microcontroller_development_systems_es_screen.pdf
 
Buenooo opengl
Buenooo openglBuenooo opengl
Buenooo opengl
 
Arquitectura de computadoras ii
Arquitectura de computadoras iiArquitectura de computadoras ii
Arquitectura de computadoras ii
 
Recuperacion Soporte tecnico_240320_061459.pdf
Recuperacion Soporte tecnico_240320_061459.pdfRecuperacion Soporte tecnico_240320_061459.pdf
Recuperacion Soporte tecnico_240320_061459.pdf
 
Guia de aprendizaje fase 3 - diseno (1)
 Guia de aprendizaje fase 3 - diseno  (1) Guia de aprendizaje fase 3 - diseno  (1)
Guia de aprendizaje fase 3 - diseno (1)
 

APLICACIONES DE LA TARJETA XILINX 2S200E

  • 1. “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 2
  • 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 3
  • 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. 4
  • 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). 5
  • 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 6
  • 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). 7
  • 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. 8
  • 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. 9
  • 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 10
  • 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). 11
  • 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 12
  • 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. 13
  • 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. 14
  • 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]; 15
  • 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. 16
  • 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. 17
  • 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') 18
  • 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: 19
  • 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]. 20
  • 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) 21
  • 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; 22
  • 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 23
  • 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. 24
  • 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 25
  • 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. 26
  • 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). 27
  • 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. 28
  • 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. 29
  • 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. 30
  • 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. 31
  • 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. 32
  • 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. 33
  • 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. 34
  • 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. 35
  • 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. 36
  • 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. 37
  • 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. 38
  • 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)” 39
  • 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 40
  • 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. 41
  • 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 42
  • 43. Figura 23. Tareas disponibles para realizar sobre el dispositivo en modo configuración. Al final colocamos OK 43
  • 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. 44
  • 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 45
  • 46. Figura 27: Ventana de trabajo del simulador ModelSim XE III 6.0a. 46
  • 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: 47
  • 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. 48
  • 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 49
  • 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: S  X Y  Z C  XY  YZ  XZ Por lo tanto, 50
  • 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. 51
  • 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. 52
  • 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. 53
  • 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 54
  • 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: 55
  • 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: 56
  • 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 57
  • 58. Figura 43: Código VHDL generado del multiplexor 2 a 1: Que también se puede simular en ModelSim o con ISE Simulator. 58
  • 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. 59
  • 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). 60
  • 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 61
  • 62. 2.9. ANEXOS Tabla 1: Configuración de los puertos de la tarjeta 2SB y DIO4. 62
  • 63. Tabla 2: Configuración de los puertos de la tarjeta 2SB y DIO4. 63
  • 64. 64