diseÑo de circuitos digitales a travÉs de...

155
- 1 - UNIVERSIDAD DEL BÍO-BÍO FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE LÓGICA PROGRAMABLE UTILIZANDO TECNOLOGÍA FPGA Y LENGUAJE VHDL AUTORES : CLAUDIO ANTONIO TRACAYANCO SAAVEDRA. - CRISTIAN DANIEL VALDÉS JARA. SEMINARIO PARA OPTAR AL TÍTULO DE INGENIERO DE EJECUCIÓN EN ELECTRÓNICA CONCEPCIÓN – CHILE 2003 AGRADECIMIENTOS He llegado a la meta, luego de varios años de estudio, y es el momento adecuado para agradecer a las personas que contribuyeron con mi desarrollo personal y que sin su apoyo me hubiera sido imposible obtener mi Título Profesional. Primero que todo, agradezco a mi amado Dios por darme vida y salud. Por su generosidad e infinito amor. Él me ha acompañado y ha sido mi amigo fiel durante toda mi vida, y sin él, definitivamente no habría logrado sacar adelante mi carrera.

Upload: vominh

Post on 11-Mar-2018

219 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 1 -

UNIVERSIDAD DEL BÍO-BÍO

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE

LÓGICA PROGRAMABLE UTILIZANDO

TECNOLOGÍA FPGA Y LENGUAJE VHDL

AUTORES : CLAUDIO ANTONIO TRACAYANCO SAAVEDRA.

- CRISTIAN DANIEL VALDÉS JARA.

SEMINARIO PARA OPTAR AL TÍTULO DE INGENIERO DE

EJECUCIÓN EN ELECTRÓNICA CONCEPCIÓN – CHILE 2003

AGRADECIMIENTOS

He llegado a la meta, luego de varios años de estudio, y es el momento adecuado para

agradecer a las personas que contribuyeron con mi desarrollo personal y que sin su apoyo

me hubiera sido imposible obtener mi Título Profesional.

Primero que todo, agradezco a mi amado Dios por darme vida y salud. Por su generosidad e

infinito amor. Él me ha acompañado y ha sido mi amigo fiel durante toda mi vida, y sin él,

definitivamente no habría logrado sacar adelante mi carrera.

Page 2: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 2 -

Agradezco también a mi hermosa madre, por entregarme todo su amor y apoyo en los

momentos difíciles. Gracias por entregarme los valores necesarios para ser una buena

persona en la vida. Gracias por ser mi eterna amiga.

A mi padre, quien ha sido un pilar fundamental en mi persona. Sin sus consejos y continuo

respaldo no habría tenido ni la fuerza ni la inteligencia necesaria para lograr las metas

impuestas.

A mi hermano Erick, quien me enseñó que el dinero o un Título Profesional no lo son todo

en la vida, gracias por ayudarme a crecer como persona. A mi abuelita Blanca, quien me

recibió en su hogar durante los años que estudié en la Universidad. Y en general, gracias a

toda mi familia por entregarme tanto amor.

Quiero también agradecer a mi amada Derthy, por toda la motivación y por todo el apoyo

que me entregó en la etapa cúlmine de este Seminario de Titulación.

Gracias a los profesores guías, a los compañeros; y en general, a la Universidad del Bío-Bío

por todo lo que me ha entregado.

Claudio Antonio Tracayanco Saavedra.

Son muchas las personas a las debo agradecer en mi carrera y en mi vida, pero

quiero dedicar esta memoria a mi madre:

Page 3: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 3 -

Mamá,

Quiero agradecerte porque siempre haz estado a mi lado, siempre me haz dado tu cariño y

siempre me apoyas con dulzura. Gracias por todo el esfuerzo y por todos los sacrificios

que haz hecho por mí. Gracias por tu gran amor.

Quiero dedicar esta memoria y todo lo que representa, a mi madre.

Te quiero mucho y muchas gracias mamá…

Cristian Daniel Valdés

RESUMEN

Día a día nos impresionamos con las nuevas tecnologías que se han estado

desarrollando. Es común que al poco tiempo de adquirir un PC o un

teléfono móvil éste ya esté obsoleto o se encuentren otros con mayores

cualidades. Todo esto es lo que vemos comúnmente.

Pero detrás de todo esto se encuentra la electrónica, la cual con su

desarrollo nos ha permitido llegar a diseñar equipos tan increíbles. Es

esta realidad la que nos impulsó a trabajar en un proyecto completamente

revolucionario tanto a nivel de Universidad como a nivel nacional.

Nuestro proyecto tiene por fín traer a nuestra Universidad el método

actual de diseño de circuitos digitales, tanto en hardware como en

software. Tomando la iniciativa dentro de las Universidades del país en

Page 4: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 4 -

este tema.

Esta tesis se basa en tres capítulos: el primero de ellos presenta las

diversas tecnologías en cuanto a hardware se refiere, explicando como se

produce físicamente el diseño de circuitos digitales y presentando la

tecnología FPGA (que finalmente fué la que utilizamos en nuestra tesis)

; el segundo presenta el lenguaje de programación (VHDL) utilizado para

configurar la FPGA, con este lenguaje tendremos que describir el

circuito a diseñar utilizando diversas estructuras y sentencias propias

de este lenguage y finalmente el tercer capítulo fusiona los dos

primeros explicando la forma de diseñar circuitos digitales trabajando

en conjunto el lenguaje de programación con la tecnología FPGA.

Como el propósito de esta tesis iba mas allá de la teoría fue necesario

que el Departamento comprara una tarjeta de entrenamiento basada en

tecnología FPGA. La tarjeta comprada a la empresa Xilinx (EEUU) es la

XSA-50, además incluía los programas necesarios para trabajar con ella.

Con todo lo necesario para trabajar se hicieron tres circuitos a modo de

ejemplo los cuales están en un anexo de la tesis presentando

detalladamente, paso a paso como trabajar con la tarjeta de

entrenamiento y con los programas complementarios. Como segundo anexo se

presentan las características de la tarjeta XSA-50 de Xilinx.

Despues de haber trabajado con todos estos conceptos, no se podía poner

otro título a esta tesis que no fuera...

" DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE LÓGICA PROGRAMABLE

UTILIZANDO TECNOLOGÍA FPGA Y LENGUAJE VHDL"

Finalmente cabe señalar que el objetivo de esta tesis es que la persona

Page 5: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 5 -

que la lea pueda comprender la metodología actual de diseño y sea capaz

de diseñar algunos circuitos básicos...por lo cual sólo los lectores

serán capaces de decir si se logró el objetivo de los autores.

INTRODUCCIÓN

El diseño de circuitos digitales ha sufrido últimamente una fuerte evolución,

dejando atrás las grandes cantidades de circuitos integrados y conexiones tanto en

protoboard como en placas de circuito impreso, utilizadas en la realización de diseños de

circuitos digitales de grande y mediana complejidad, para reemplazarlos actualmente por

dispositivos de lógica programable junto con lenguajes de descripción de hardware, esto

por su facilidad, rapidez y bajos costos entre algunas de sus características más relevantes.

Dentro de la familia de dispositivos de lógica programable, la tecnología FPGA se

presenta como una de las mejores alternativas para el diseño de circuitos digitales. En base

a su capacidad de implementación que actualmente llega a las 300.000 compuertas lógicas

y a su capacidad y facilidad de reconfiguración por parte del usuario. Por otro lado, para

trabajar con tecnología FPGA es posible utilizar lenguajes de descripción de hardware

HDL, destacándose entre los existentes VHDL por su carácter de estándar de la IEEE, lo

cual le da ciertas ventajas sobre el resto de los lenguajes.

Hoy en día las Universidades más prestigiosas del mundo, en cuanto al área de

electrónica se refiere, están trabajando con tecnología FPGA, desarrollando sistemas

Page 6: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 6 -

prototipos sobre tarjetas de entrenamiento que ofrecen las empresas fabricantes de FPGA’s,

aplicando esta tecnología sobre campos como visión artificial, audio digital, procesamiento

digital de señales, electrónica de potencia, comunicaciones y en general en cualquier área

que utilice la electrónica digital.

Actualmente, nuestra carrera de Ingeniería de Ejecución en Electrónica no incluye

dentro de su malla curricular un ramo que aborde el diseño de circuitos utilizando esta

tecnología; de hecho, los dispositivos de lógica programable sólo se estudian en forma

básica por razones de tiempo y capacidad.

Por esta razón, y por la importancia que está tomando actualmente la tecnología

FPGA, es que se ha propuesto como principal objetivo de este Seminario de Titulación, dar

a conocer las ventajas de utilizar esta tecnología en el diseño de circuitos digitales,

presentando una descripción de los circuitos integrados FPGA y del lenguaje VHDL y, en

forma completa, el diseño de algunos circuitos. Todo esto con la intención de motivar a los

alumnos del Departamento a trabajar con estas herramientas, lo cual daría un gran impulso

a la formación tecnológica de nuestra carrera. Como segundo objetivo, está el motivar a

otros profesores a trabajar con esta tecnología en proyectos y prototipos de mayor

envergadura; aplicándola a las distintas áreas de la electrónica, como las mencionadas

anteriormente.

Para poder lograr los objetivos, se ha dividido este Seminario en tres capítulos más

dos anexos. El primer capítulo explica la tecnología FPGA, dando a conocer sus

características principales. El segundo capítulo, es una descripción del lenguaje VHDL;

aquí se verán sus comienzos, estructuras y sentencias básicas. Y finalmente, en el tercer

capítulo, se muestra a través de ejemplos el proceso completo de diseño de circuitos

digitales utilizando tecnología FPGA y lenguaje VHDL en conjunto. El primer documento

anexo presenta el diseño de tres circuitos digitales de complejidad media-baja. Y el

segundo documento anexo, es un resumen de las características principales de la tarjeta de

entrenamiento XSA-50 de la empresa XESS CORP.

Page 7: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 7 -

CAPÍTULO 1: TECNOLOGÍAS DE LÓGICA PROGRAMABLE

Page 8: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 8 -

EXISTENTES EN EL MERCADO

1.1 Introducción

Este capítulo tiene por objetivo presentar tecnologías de lógica programables que

actualmente se emplean como herramientas de trabajo para el diseño de circuitos digitales.

Se comenzará dando una breve descripción del desarrollo de circuitos digitales y

una descripción de elementos de lógica programable. Luego se presentarán por separado,

las tecnologías de los circuitos integrados CPLD y FPGA. Se pretende llegar a una

comprensión del método de trabajo con estas tecnologías y de esta manera poder proyectar

su función dentro de todo el sistema de diseño de circuitos digitales que se presenta en este

seminario.

Tanto los circuitos integrados CPLD´s como las FPGA´s, están cambiando la

manera en que los diseñadores de sistemas implementan lógica digital. Reducen

radicalmente los costos y el tiempo de desarrollo para implementar miles de compuertas

lógicas. Proveen una nueva capacidad que afecta la industria al mejorar la forma en que son

diseñados los circuitos digitales.

La característica común de estas tecnologías y que marca la diferencia en la

metodología de diseño, es su capacidad de adaptar el hardware a un algoritmo (software),

donde va contenida la información lógica que da solución a problemas específicos.

Además, es posible reconfigurar estos circuitos integrados de modo que pueden ser

modificados para incluir nuevas funciones e instrucciones diseñadas para dar solución a un

nuevo problema.

Page 9: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 9 -

1.2 Desarrollo de circuitos digitales

El primer transistor vio la luz en los laboratorios Bell en 1947 y fue creado por John

Bardeen, Walter Brattain y William Shockley quienes posteriormente, en 1954, obtuvieron

el premio Nobel por su desarrollo.

El circuito integrado o CHIP, fue patentado con el nombre de circuito sólido en

febrero de 1959. Se desarrolló un circuito construido en base a un conjunto de transistores y

otros componentes ubicados en una pieza única de material semiconductor, donde ellos son

conectados con delgadas líneas de metal. En 1958 Jack Kilby, de la empresa Texas

Instruments, mostró que era posible fabricar un circuito integrado simple en germanio, un

semiconductor comúnmente usado en ese tiempo. Casi al mismo tiempo, Robert Noyce

mostró como un circuito integrado puede ser fabricado en silicio usando dióxido de silicio

como el aislador y aluminio para las líneas metálicas. Pese a suponer toda una revolución,

no procuró ningún premio a Jack Kilby. Noyce y Kilby son considerados co-inventores del

circuito integrado. El primer Chip apareció en el mercado en 1961. En 1964 algunos chips

ya contenían 32 transistores.

1.2.1 Circuitos digitales

Los circuitos digitales trabajan con dígitos binarios o bits. Un bit tiene un valor 0 o

1. De los fenómenos físicos empleados para representar los estados de un bit, un estándar

es la tecnología TTL (Transistor-Transistor Logic); en ella, se usa un nivel de voltaje desde

0 a 0.8 volts para denotar el 0 lógico y de 2.0 a 5.0 volts para denotar un 1 lógico. Para la

utilización de los bits se emplean los operadores y las Tablas de verdad del álgebra de

Boole.

Page 10: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 10 -

Los elementos lógicos de los sistemas digitales son fabricados como circuitos

integrados. Se ha observado un gran desarrollo en la fabricación de circuitos integrados

desde sus comienzos. Este desarrollo se manifiesta en la cantidad de compuertas lógicas y

flip-flops que son implementados dentro de un circuito integrado individual.

En la década de los sesenta se construía lógica discreta, circuitos integrados que

contenían un pequeño número de compuertas lógicas individuales o flip-flops. A este tipo

de circuitos se les conoce como CI de integración de pequeña escala o SSI (Small Scale

Integration).

Era común que se generaran problemas cuando se trabajaba en diseño con circuitos

integrados SSI debido a que los sistemas son construidos utilizando grandes cantidades de

circuitos integrados individuales que se conectan mediante demasiados conductores entre

ellos. Era difícil modificar el sistema una vez que estaba construido, incluso era difícil

recordar por qué se utilizaba y como estaba cableado cada uno de los componentes. Una

vez que el sistema había sido armado, cualquier cambio requería una gran cantidad de

tiempo para poder ser reconfigurado.

Los fabricantes de circuitos integrados lograron crear circuitos integrados con más

componentes en su interior. A medida que los circuitos integrados contienen mayor

cantidad de componentes, reciben diferentes clasificaciones. Los circuitos integrados MSI

(Medium Scale Integration) contienen típicamente de 10 a 100 compuertas individuales, los

LSI (Large Scale Integration) y VLSI (Very Large Scale Integration) pueden contener más

de 100.000 dispositivos como transistores o diodos, donde una compuerta lógica puede

llegar a usar cinco dispositivos pero una celda de memoria puede llegar a usar solo uno.

Page 11: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 11 -

1.2.2 Dispositivos de lógica programable

La lógica programable, como el nombre implica, es una familia de componentes que

contienen conjuntos de elementos lógicos (AND, OR, NOT, LATCH, FLIP-FLOP) que

pueden configurarse en cualquier función lógica que el usuario desee y que el componente

soporte. Hay varias clases de dispositivos lógicos programables: ASIC´s, PLD´s donde

encontramos PLA´s, PROM´s, PAL´s, GAL´s, CPLD´s y FPGA´s. A continuación se

describirán brevemente cada uno de ellos, dejando aparte a los dispositivos CPLD y FPGA

para verlos posteriormente con mas detalle.

ASIC

ASIC significa Circuitos Integrados de Aplicación Específica. Estos dispositivos

están diseñados de acuerdo a las necesidades de la función específica que van a desarrollar.

Se fabrican especialmente por lo que es necesario requerir una cantidad lo suficientemente

grande que justifique el alto costo inicial que implica su construcción. Los ASICs, al

contrario que otros dispositivos, pueden contener funciones analógicas, digitales, y

combinaciones de ambas. En general, no son reprogramables por el usuario. Esto significa

que los fabricantes configurarán el dispositivo según las especificaciones pero éstas no se

podrán modificar. Se usan para combinar una gran cantidad de funciones lógicas en un

dispositivo.

PLD

PLD significa Dispositivo Lógico Programable (Programmable Logic Device) y es

aquel que contiene una arquitectura general pre-definida en la que el usuario puede

programar el diseño final del dispositivo empleando un conjunto de herramientas de

desarrollo. Las arquitecturas generales pueden variar pero normalmente consisten en una o

más matrices de puertas AND y OR para implementar funciones lógicas. Muchos

dispositivos también contienen combinaciones de flip-flops y latches que pueden usarse

como elementos de almacenaje para entrada y salida de un dispositivo.

Page 12: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 12 -

Los dispositivos más complejos contienen macrocélulas. Éstas permiten al usuario

configurar el tipo de entradas y salidas necesarias en el diseño. Para el diseño de circuitos

digitales, los PLD en general poseen grandes ventajas respecto de los ASIC debido a que su

utilización reduce los costos gracias a que su uso es estándar, existiendo softwares que

permiten la fácil reprogramación, dependiendo de las necesidades del usuario

PROM

Las PROM son memorias programables de sólo lectura (Programmable Read Only

Memory). Aunque el nombre no implica la lógica programable, las PROM son de hecho

lógicas. La arquitectura de la mayoría de las PROM consiste generalmente en un número

fijo de términos AND que alimenta una matriz programable OR. Se usan principalmente

para decodificar las combinaciones de entrada en funciones de salida.

PAL

Las PAL son dispositivos de matriz programable (Programmable Array Logic). La

arquitectura interna consiste en términos AND programables que alimentan términos OR

fijos. Todas las entradas a la matriz pueden ser combinadas mediante AND entre sí, pero

los términos AND específicos se dedican a términos OR específicos. Las PAL tienen una

arquitectura muy popular y son probablemente el tipo de dispositivo programable por

usuario más empleado. Si un dispositivo contiene macrocélulas, comúnmente tendrá una

arquitectura PAL. Las macrocélulas típicas pueden programarse como entradas, salidas, o

entrada/salida (E/S) usando una habilitación tri-estado. Normalmente tienen registros de

salida que pueden usarse, o no, conjuntamente con el pin de E/S asociado. Otras

macrocélulas tienen más de un registro, varios tipos de retroalimentación en las matrices, y

ocasionalmente realimentación entre macrocélulas.

Page 13: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 13 -

GAL

Las GAL son dispositivos de matriz lógica genérica. Están diseñados para emular

muchas PAL pensadas para el uso de macrocélulas. Si un usuario tiene un diseño que se

implementa usando varias PAL comunes, puede configurar varias de las mismas GAL para

emular cada de uno de los otros dispositivos. Esto reducirá el número de dispositivos

diferentes en existencia y aumenta la cantidad comprada. Comúnmente, una cantidad

grande del mismo dispositivo debería rebajar el costo individual del dispositivo. Estos

dispositivos también son eléctricamente borrables, lo que los hace muy útiles para los

ingenieros de diseño.

PLA

Las PLA son matrices lógicas programables. Estos dispositivos contienen ambos

términos AND y OR programables lo que permite a cualquier término AND alimentar

cualquier término OR. Las PLA probablemente tienen la mayor flexibilidad frente a otros

dispositivos con respecto a la lógica funcional. Normalmente poseen realimentación desde

la matriz OR hacia la matriz AND que puede usarse para implementar máquinas de estado

asíncronas. La mayoría de las máquinas de estado, sin embargo, se implementan como

máquinas síncronas. Con esta perspectiva, los fabricantes crearon un tipo de PLA

denominado Secuencial (Sequencer) que posee registros de realimentación desde la salida

de la matriz OR hacia la matriz AND.

CPLD y FPGA

La característica común de estos dispositivos es que poseen la capacidad de

reconfigurar su comportamiento a nivel hardware mediante una lógica que se configura a

través de software. En el punto 1.3 se presentan ambas tecnologías en forma detallada.

Page 14: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 14 -

1.3 Tecnología CPLD

CPLD significa Dispositivo Lógico Programable Complejo (Complex

Programmable Logic Device) y se forma de múltiples bloques lógicos cada uno similar a

un PLD. Los bloques lógicos se comunican ente sí utilizando una matriz programable de

interconexiones lo cual hace más eficiente el uso del silicio y conduce a un mejor

desempeño. Un CPLD extiende el concepto de un PLD a un mayor nivel integración ya que

permite implementar sistemas más eficientes porque utilizan menos espacios, mejoran la

confiabilidad en el circuito y reducen costos. A continuación se explican brevemente las

principales características de un CPLD.

1.3.1 Arquitectura de un CPLD

Page 15: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 15 -

Figura 1.1

Su arquitectura se basa en la combinación de bloques de Entrada/Salida IOB (Input/

Output Block) y bloques lógicos LB (Logic Blocks) conectados por medio de una matriz de

interconexiones programables PIM (Programmable Interconect Matrix). En la figura 1.1 se

muestra un esquema simplificado de la arquitectura de un CPLD. A continuación se

describirán las características de los elementos que conforman el sistema.

1.3.2 Matriz de interconexiones programables

La Matriz de interconexiones programables, PIM, permite unir los pines de

entrada/salida a las entradas de otro bloque lógico, o incluso a las entradas de un mismo

bloque lógico. La mayoría de los CPLD´s usan una de dos configuraciones para esta matriz:

interconexión mediante arreglo o interconexión mediante multiplexores.

La interconexión mediante arreglo se basa en una matriz de filas y columnas con

una celda EECMOS en cada intersección. Al igual que en el GAL, esta celda puede ser

activada para conectar o desconectar la correspondiente fila y columna. Esta configuración

permite la total interconexión entre las entradas y salidas de los bloques lógicos. Sin

embargo, estas ventajas provocan una disminución del desempeño del dispositivo además

de aumentar el consumo de energía y el tamaño del componente.

En la interconexión mediante multiplexores, existe un multiplexor por cada entrada

a un bloque lógico. Las vías de interconexión programables son interconectadas a las

entradas de un numero fijo de multiplexores por cada bloque lógico. Las entradas de

selección de estos multiplexores son reprogramadas para permitir que sea seleccionada

únicamente una vía de la matriz de interconexiones por cada multiplexor, la cual se propaga

hacia el bloque lógico. Cabe mencionar que estos multiplexores no tienen acceso a todas las

vías de la matriz por lo que la rutabilidad se aumentará usando multiplexores de mayor

Page 16: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 16 -

tamaño, permitiendo así que cualquiera combinación de señales de la matriz de

interconexión pueda ser enlazada hacia cualquier bloque lógico. Sin embargo, el uso de

grandes multiplexores incrementa el tamaño y reduce su desempeño.

1.3.3 Bloques lógicos

Un bloque lógico es muy similar a un PLD. Cada uno de ellos posee generalmente

una matriz de compuertas AND, una matriz de compuertas OR y una configuración para la

distribución de los productos en las diferentes macroceldas del bloque. El tamaño del

bloque lógico es una medida de la capacidad del CPLD, ya que de esto depende el tamaño

de la función booleana que pueda ser implementadas dentro del bloque. Los bloques

lógicos tienen usualmente de 4 a 20 macroceldas (Macrocells). La capacidad del bloque

lógico que puede poseer un CPLD depende de la familia y fabricante del dispositivo. En la

figura 1.2 se muestra, a modo de ejemplo, un diagrama de la forma en que interrelacionan

los subsistemas para un CPLD de la familia XC9500 de Xilinx. En el esquema, al Bloque

Lógico se le da el nombre de Function Block (Bloque Funcional).

Page 17: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 17 -

Figura 1.2

1.3.4 Macroceldas

Las macroceldas poseen una arquitectura básica muy parecida a la PAL, con

la capacidad de ser configurada para una función de combinatoria o de registro.

Figura 1.3

Page 18: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 18 -

En la Figura 1.3 se muestra el diseño de una macrocelda de un circuito integrado

CPLD de la familia XC9500 de Xilinx. En el se observa que sus entradas son procesadas a

semejanza de una PAL.

La distribución de los productos difiere levemente dependiendo del fabricante. A

modo de ejemplo, en este caso se observa un bloque Product Term Allocator (Asignador de

términos de productos) que recibe el resultado de cada 5 productos directos y, actuando

como un OR, en su lógica es capaz de entregar un resultado como macrocelda, o bien

reasignarlo como entrada a otro Product Term Allocator.

Los CPLD MAX de Altera, que fue la primera familia de CPLD que salió al

mercado, utilizan una distribución de productos diferente. Reciben 4 productos por

macrocelda, los cuales pueden ser compartidos con otras macroceldas.

Cuando un producto puede ser únicamente utilizado por una macrocelda se le

conoce como término-producto dirigido y cuando estos pueden ser usados por otras

macroceldas se les llama término-producto compartido.

La utilización de términos-producto compartidos mejora las capacidades del circuito

integrado pero disminuye su velocidad al tener un retardo adicional por tener que

realimentar un producto hacia otra macrocelda.

Page 19: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 19 -

.

1.4 Tecnología FPGA

Las FPGA son Campos de Matrices de Puertas Programables (Field Programmable

Gate Array). Básicamente son un arreglo bidimensional de bloques y flip-flops donde el

usuario puede configurar tanto la interconexión entre los bloques lógicos, así como la

configuración de cada bloque. En la figura se muestra la versión simplificada de una FPGA.

Figura 1.4

Page 20: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 20 -

Es decir, las FPGA son matrices de puertas eléctricamente programables que

contienen múltiples niveles de lógica. Las FPGA se caracterizan por altas densidades de

puerta, alto rendimiento, un número grande de entradas y salidas definibles por el usuario,

un esquema de interconexión flexible, y un entorno de diseño similar al de matriz de

puertas lógicas, sin embargo, no están limitadas a la típica matriz AND-OR. En cambio,

contienen una matriz interna configurable de bloques lógicos CLB (Configurable Logic

Block) y un anillo de circunvalación de bloques de entrada/salida IOB (Input Output Block).

Cada CLB contiene lógica programable combinacional y registros de

almacenamiento. La sección de lógica combinacional es capaz de implementar cualquier

función booleana de sus variables de entrada.

Cada IOB puede programarse independientemente para ser una entrada, una salida

con control tri-estado o un pin bidireccional. También contiene flip-flops que pueden usarse

como buffers de entrada y salida. Los recursos de interconexión son una red de líneas que

corren horizontalmente y verticalmente las filas y columnas entre el CLB´s.

Los interruptores programables conectan las entradas y salidas de IOB´s y CLB´s a

líneas cercanas. Las líneas largas recorren la anchura o longitud entera del dispositivo,

estableciendo intercambios para proporcionar una distribución de señales críticas con la

mínima demora o distorsión.

Los diseñadores que usan CPLD´s pueden definir funciones lógicas en un circuito y

revisar estas funciones como sea necesario. Así, las FPGA´s pueden diseñarse y verificarse

en unos días, a diferencia de las varias semanas necesarias para las matrices de puerta

programables.

1.4.1 Desarrollo de la tecnología FPGA

Page 21: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 21 -

Es importante entender la justificación en que se basó el desarrollo de la tecnología

FPGA. Por los comienzos de los años 80, la mayoría de los circuitos lógicos en los

sistemas típicos eran implementados con un conjunto de circuitos integrados de gran escala

(Large scale integrated, LSI) de tipo estándar. Estos podían ser Microprocesadores,

Controladores de IO/bus, Relojes de sistemas etc.

Cada sistema aún mantenía la necesidad de una forma de unión lógica de tipo

aleatoria para conectar la gran cantidad de circuitos integrados, es decir, que tuviera la

posibilidad de ser implementada de acuerdo a las necesidades especiales de cada diseño.

Esto se resolvía generando señales de control globales (para resets etc.), y mediante

transformaciones y manipulación de datos (serial a paralelo, multiplexando, etc.).

Los trabajos con circuitos integrados muchas veces debían ser rediseñados, forzados por

reemplazar la gran cantidad de conexiones lógicas. Como resultado de este rediseño, se

lograba reducir la complejidad del sistema y los costos de manufactura, mejorando así el

rendimiento. De todas formas, los trabajos con circuitos integrados eran relativamente caros

de desarrollar y se retrasaba la introducción de un producto al mercado o TTM (Time To

Market) debido al incremento en el tiempo de diseño.

Considerando el aspecto económico del diseño de sistemas electrónicos, existe la

necesidad de preocuparse de dos tipos de costos:

A.- Costos de desarrollo, a veces llamados costos de ingeniería no recurrente NRE (non-

recurring engineering).

B.- Costos de producción.

Una relación típica existe entre los costos NRE y los costos de producción, esta se

muestra en la figura 1.5.

Page 22: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 22 -

Figura 1.5

Un aspecto importante a considerar es que el trabajo con CI, en general, era

solamente viable para productos con grandes volúmenes de producción, donde el NRE

podía ser amortizado y que no fuera demasiado sensible al tiempo al mercado (TTM).

Las FPGA fueron introducidas como una alternativa para implementar las

conexiones lógicas de los trabajos con CI. Mejoraron la densidad respecto de los

componentes discretos de tipo SSI/MSI. Además, con la ayuda de herramientas CAD

(Computer Aided Design) los circuitos podían ser implementados en menores cantidades de

tiempo ya que no existían procesos de layout físicos, por lo que no había creación de

máscaras y no había producción con circuitos integrados. Estas acciones permitían menores

costos NRE y acortar los tiempos TTM.

De acuerdo a la Ley de Moore, que dice el número de transistores por pulgada

cuadrada en circuitos integrados se duplicaba cada año y medio, la densidad (gates/area) de

las FPGA continuó creciendo a través de los años 80 y 90 al punto en que pudieron ser

implementadas mayores funciones de procesamiento de datos dentro de un integrado FPGA

individual. Las FPGA continuaron compitiendo con diseños de CI para funciones

especiales de procesamiento (y lógica de conexiones) pero ahora también competían con

los microprocesadores en aplicaciones dedicadas. Desarrollaron una ventaja sobre los

microprocesadores porque los circuitos podían ser “moldeados a mano” y los

microprocesadores debían trabajar con funciones especiales de programación (muchos

ciclos). Si se comparan los componentes más usados podemos observar el cuadro de la

figura 1.6.

Page 23: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 23 -

Figura 1.6

* ASIC = Circuito integrado de aplicación específica, MICRO = Microprocesador

1.4.2 Variaciones de FPGA

Como se señaló anteriormente, en el diseño de un circuito integrado FPGA, se

consideran principalmente tres elementos: Bloques Lógicos Configurables (CLB), Bloques

de Entrada y Salida (I/O Blocks) y la Interconexión Programable entre ellos (figura 1.7).

Page 24: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 24 -

Figura 1.7

Cada uno de estos elementos es diseñado por los fabricantes de circuitos integrados

FPGA de acuerdo a su propio método, lo que define la composición y capacidades de cada

uno de ellos.

En base a esto, las familias de FPGA existentes, presentan principalmente diferencias

en lo que refiere a:

- Métodos físicos de implementación de la programabilidad del usuario.

- Arreglo del cableado de interconexión.

- Funcionalidad básica de los bloques lógicos.

La diferencia más significativa se encuentra en el método para proveer bloques flexibles

y su forma de conexión (figura 1.8).

Figura 1.8

La industria de CPLD y FPGA usa varios métodos para hacer las conexiones entre

los bloques lógicos. Algunos fabricantes producen circuitos integrados con fusibles o anti-

fusibles que son programados mediante el paso de una gran corriente a través de ellos.

Page 25: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 25 -

Estos tipos de circuitos integrados CPLD´s y FPGA´s son del tipo Programables de una

vez, one-time programmable (OTP) ya que no es posible recablearlos internamente una vez

que los fusibles han sido accionados.

Otros fabricantes hacen las conexiones usando transistores de paso que son abiertos

o cerrados mediante la carga en sus electrodos de Gate usando pulsos de alto voltaje. Este

tipo de dispositivos se asemejan a una memoria EPROM o EEPROM: Estas pueden ser

borradas y utilizando un socket de un programador especial pueden ser reprogramadas. Esta

forma de trabajo es útil mientras no tenga el CPLD o FPGA soldado a la placa del circuito.

Finalmente, algunos fabricantes usan memorias RAM estáticas o FLASH para

controlar el transistor de paso para cada interconexión. Mediante la carga de cada bit con un

1 o un 0, se puede controlar cuando el interruptor está cerrado o abierto y de esa forma

controlar cuando dos elementos lógicos son o no conectados. Los CPLD y los FPGA que

utilizan interruptores con memorias RAM o Flash pueden ser reprogramados sin necesidad

de retirarlos de la placa en que el circuito está implementado. Estos son comúnmente

llamados Reconfigurables en circuito o Programables en circuito.

Independiente del método de interconexión usado, se puede observar que el decidir

o calcular cuales interruptores deben ser abiertos o cerrados para crear un circuito lógico es

una tarea demasiado compleja. Por esto, los fabricantes de los circuitos entregan programas

desarrollados que toman una descripción del diseño lógico como una entrada, y entonces,

entregan un archivo binario con el cual se configuran los interruptores en la FPGA de

forma que se comporte como el diseño deseado.

1.4.3 Programabilidad de usuario

La posibilidad de programar y reprogramar una FPGA de acuerdo a las necesidades

del usuario, dependerá de la técnica empleada en la fabricación sea la adecuada.

Page 26: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 26 -

Por ejemplo, se muestra en un esquema simple, la técnica usada por Actel, basada

en antifusibles. En ella, se utilizan fusibles para todas las conexiones y luego se rompen los

fusibles necesarios de modo de desconectarlos y de esa forma conservar activos los

interruptores deseados.

Figura 1.9

Una ventaja de esta técnica es el ser no-volátil, otra ventaja es que este tipo de

conexión es relativamente pequeña. La principal desventaja es que por ser permanente no

es reprogramable.

Los fabricantes Xilinx y Altera, basan la conexiones en transistores de paso cuya

activación o desactivación dependerá de un enclavamiento (Latch).

Page 27: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 27 -

Figura 1.10

De modo opuesto a la anterior, la gran ventaja de esta técnica es la posibilidad de

ser reconfigurable y las desventajas son el hecho de tener una configuración volátil y el

emplear mayor tamaño.

Dentro de una FPGA los distintos enclavamientos tienen por función varias tareas:

1. Crear o romper puntos de cruce en las interconexiones.

2. Definir la función de los bloques lógicos .

3. Ingresar las opciones de usuario:

a) Entre los bloques lógicos.

b) En los bloques de entrada/salida.

c) Reset y clock global.

La configuración que permite el activar los enclavamientos se llama Trama de bit (Bit

Stream) y corresponde a un conjunto de unos y ceros lógicos que pueden ser cargados bajo

el control del usuario.

1.4.4 Esquema de un Circuito integrado FPGA

En la Figura 1.11 se muestra la imagen de un circuito integrado FPGA de la serie

Spartan de Xilinx.

Page 28: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 28 -

Figura 1.11

En la Figura 1.12 se muestra el diseño de un circuito integrado FPGA de la serie

Spartan II de Xilinx.

Figura 1.12

1.4.5 Esquema de interconexiones

En la Figura 1.12 se muestra un esquema de parte de las interconexiones dentro de

un circuito integrado FPGA de Xilinx.

Page 29: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 29 -

Figura 1.13

1.4.6 Bloque Lógico FPGA Idealizado

Para comprender el funcionamiento de un Bloque Lógico Configurable (CLB) se

comenzará analizando un modelo idealizado para cuatro entradas.

Page 30: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 30 -

Figura 1.14

En la figura se muestran los distintos componentes que presenta como sistema un

CLB. En él se observa un bloque llamado Look Up Table (LUT) que en este caso posee 4

entradas que corresponden a las del CLB. El LUT es el encargado de implementar las

funciones de lógica sobre las entradas. El Latch se configura para permitir la salida desde el

CLB.

1.4.7 Implementación de un 4-LUT

A continuación, en la figura 1.15, se muestra un diagrama representativo de la

operación de un LUT de 4 entradas.

Page 31: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 31 -

Figura 1.15

Un LUT de n-bit es implementado como una memoria de 2n x 1. Por lo tanto, para este

ejemplo de 4 entradas, el bloque “4-LUT” posee 16 locaciones de memoria donde se

encuentra cada función lógica que operará sobre las entradas. Estas locaciones de memorias

son cargadas mediante la configuración de Bitstream, que se encarga de configurar sus

latches correspondientes. Se observa que las entradas al control MUX son las entradas al

CLB.

1.4.8 El LUT como una compuerta lógica general

Se puede entender un n-LUT como una implementación directa de una tabla de

verdad. Cada localización de latch retiene el valor de la función correspondiente a una

Page 32: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 32 -

combinación de entrada. En la figura 1.16 se observa la tabla de verdad que es posible

implementar para un 2-LUT.

Ejemplo: 2- LUT

Figura 1.16

Así como un 2-LUT implementa cualquier función de 2 entradas, un n-LUT es

capaz de implementar 2n funciones, para n entradas (figura 1.17).

Figura 1.17

Page 33: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 33 -

1.4.9 Configuración de una FPGA

De acuerdo con las características antes presentadas, se observa que el proceso para

configurar una FPGA está basado en definir el estado de los Latches que se encargan tanto

de determinar las funciones que tendrán los bloques lógicas como de las conexiones que se

realizarán dentro de la FPGA. Esta configuración es determinada por el usuario, en base a

las necesidades que debe resolver el sistema.

En la práctica, para llevar a cabo esta operación, se emplean softwares

especializados que trabajan con lenguajes de descripción de hardware (HDL). Estos

programas computacionales reciben mediante lenguaje HDL, la lógica que debe ser

implementada en el circuito digital a diseñar. También son capaces de determinar la mejor

opción de configuración para que la FPGA se comporte de manera óptima, determinando

los mínimos componentes necesarios que son posibles de implementar en la función de los

Bloques Lógicos y la mejor ubicación dentro de los diferentes puntos de la FPGA, con el

fin de reducir el tiempo del proceso de trabajo. El proceso de definir los componentes a

implementar, determinar la ubicación dentro de la FPGA y definir la mejor conexión entre

ellos se conoce como Mapping, Placement and Routing y luego es necesario llevar la

secuencia de bits (bitstream) generada por el software hasta la FPGA.

En los capítulos siguientes se presentan con más detalles la forma de llevar el diseño

de un circuito digital a la configuración de una FPGA y el resultado interno de la

configuración.

Page 34: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 34 -

CAPÍTULO 2: VHDL

2.1 Introducción

Constantemente en Ingeniería Electrónica se ha buscado nuevas y mejores formas

de diseño, con el fin de minimizar los costos y lograr diseños flexibles; esto último

producto de lo difícil o imposible que resulta modificar circuitos ya montados en una placa

(PCB). Hoy en día estos objetivos se logran utilizando dispositivos de lógica programable

(PLD´s) con lenguajes de descripción de hardware (HDL´s). Dentro de los lenguajes

HDL´s el más popular y utilizado es el VHDL.

VHDL es un lenguaje estándar de programación de alto nivel, diseñado para

describir el comportamiento de circuitos electrónicos digitales, desde complejos sistemas

hasta una simple compuerta lógica. Su sigla proviene de VHSIC-HDL, (Very High Speed

Integrated Circuits-Hardware Description Languaje), lenguaje de descripción de hardware

de circuitos integrados de alta velocidad. Este lenguaje permite que el comportamiento de

los circuitos electrónicos sea capturado en un sistema de diseño para la simulación del

sistema y posteriormente realizar la síntesis automática del circuito; este es un proceso en

el cual se transforma el diseño de manera automática desde una descripción con pocos

detalles a una más elaborada, con el fin de poder llevarla a un dispositivo de lógica

programable.

Page 35: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 35 -

VHDL permite el diseño "Top-Down", es decir, partir desde un nivel muy alto de

abstracción para después ir bajando a niveles con más detalles según sea necesario, como lo

muestra la figura 2.1.

Figura 2.1

El usar un lenguaje estándar como VHDL, garantiza que los circuitos ya descritos

serán soportados por las nuevas herramientas de diseño que aparezcan en el futuro. Por otro

lado, constantemente el lenguaje VHDL está sujeto a revisiones y es por esta razón que el

Instituto de Ingenieros Eléctricos y Electrónicos (IEEE), lanza continuamente nuevos

paquetes estándares que lo complementan.

Una de las más importantes aplicaciones del lenguaje VHDL se refiere a la

simulación de los circuitos modelados, proceso en el cual se ingresa un grupo de estímulos

al circuito modelado y se estudian las señales de salida comparándolas con las señales

Page 36: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 36 -

esperadas. Este grupo de estímulos se describe en lenguaje VHDL, al igual que el circuito

modelado. El ambiente de simulación recibe el nombre de “Testbench”.

Una de las características más relevantes del lenguaje VHDL es que describe los

circuitos electrónicos desde el punto de vista funcional y también desde el punto de vista de

los componentes.

Otra característica importante es que los circuitos que han sido modelados

anteriormente quedan disponibles para ser utilizados en forma de bloque en la descripción

de circuitos más grandes, lo que facilita enormemente la descripción de éstos. Esta

característica se aprecia mejor en la figura 2.2. Además, los diseños que son utilizados

frecuentemente se agrupan en "bibliotecas" que quedan disponibles para ser utilizadas en

cualquier diseño.

Figura 2.2

Page 37: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 37 -

2.2 Reseña Histórica

Una fuerte evolución sufrió el proceso de fabricación de circuitos integrados a

mediados de los años setenta con la aparición de la tecnología MOS (Metal Oxide

Semiconductor), dando un importante impulso al desarrollo de circuitos electrónicos. En

esta época se encontraban con problemas como la interconexión de transistores, circuitos

integrados etc.

A medida que pasaban los años, los diseños crecían enormemente, ocupaban

grandes cantidades de componentes electrónicos y se hacían muy complejos; esto traía

consigo problemas como la integración, depuración y mantención de los circuitos

diseñados.

A fines de los años setenta se podía notar el tremendo desfase entre las tecnologías

disponibles y las metodologías de diseño, por un lado la tecnología avanzaba a pasos

agigantados, mientras que por el otro, los métodos de diseño quedaban obsoletos, los costos

implicados en los diseños eran imposibles de sostener para cualquier empresa. Es en este

momento cuando se comienza a buscar nuevas técnicas de diseño, de manera de aprovechar

al máximo las ventajas de las nuevas tecnologías y a la vez tratando de facilitar el trabajo al

diseñador. La tendencia principal eran los lenguajes de descripción de hardware (HDL); de

esta forma algunas empresas comienzan a crear sus propios HDL´s. Por ejemplo la empresa

Texas Instruments crea el TI-HDL, IBM crea su lenguaje IDL, la General Electric crea

Page 38: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 38 -

ZEUS, etc. Por otro lado las universidades también comenzaron a trabajar en estos

lenguajes, creando sus propios prototipos.

Si bien, todo indicaba que el HDL era la solución al problema del diseño, ninguno

de los lenguajes llegó a consolidarse. La razón de esto, en el caso de las empresas, fue

porque querían que su lenguaje fuera de uso exclusivo, no permitiendo su estandarización.

En el caso de las universidades, el problema fue que no contaron con soporte ni

mantenimiento adecuado para sus lenguajes.

Aproximadamente en 1981 el Departamento de Defensa de los Estados Unidos

comenzó a trabajar en un proyecto llamado VHSIC (Very High Speed Integrated Circuit),

el cual tenía como objetivo disminuir los costos de hardware. Este proyecto buscaría

resolver el problema de modificar circuitos ya diseñados para poder utilizarlos en otros

proyectos.

En 1983 el Departamento de Defensa de los Estados Unidos contrató un equipo de

ingenieros de tres compañías: Texas Instruments, IBM e Intermetrics, para especificar e

implementar un nuevo método de diseño basado en lenguaje de descripción de hardware.

La primera versión pública disponible de VHDL fue la versión 7.2 lanzada en 1985.

En 1986 el Instituto de Ingenieros Eléctricos y Electrónicos (IEEE), propuso la

estandarización del lenguaje. Después de considerables modificaciones y mejoras

realizadas por representantes de las empresas, universidades y gobierno se logró la

estandarización del lenguaje. En diciembre de 1987 el IEEE publicó el estándar “IEEE std

1076-1987”, el cual sería la base de cada producto de simulación y síntesis vendido hoy en

día.

Al momento de simular los circuitos descritos, los diseñadores se encontraron con

un problema, aunque VHDL soportaba muchos tipos de datos abstractos, no soportaba

valores como cero lógico, uno lógico, alta impedancia etc., lo que no permitía una

simulación exacta.

Page 39: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 39 -

Ante este problema, las empresas vendedoras de simuladores de VHDL comenzaron

a complementar el lenguaje con sus nuevos " paquetes no estándar ", lo que permitía a sus

clientes simular complejos circuitos electrónicos con exactitud. Esto trajo consigo otro

problema, los diseños incorporados en un simulador eran a menudo incompatibles con

otros ambientes de simulación; VHDL se tornaba NO-ESTÁNDAR. Para solucionar este

problema, el IEEE presentó a fines de los años 80 el estándar “ IEEE std 1164 “.

Gracias a su carácter de estándar, el lenguaje está bajo constantes revisiones y

actualizaciones. Es de esta forma que en 1994 el IEEE lanzó una nueva versión del

lenguaje VHDL, el estándar “ IEEE std 1076-1993 “.

Cuando los diseñadores trataron de sintetizar los circuitos descritos para llevarlos a

hardware se encontraron con otro problema. Faltaban tipos de datos que pudieran

comunicar el sistema diseñado con el hardware real. Este problema además de otros fue

solucionado a fines de 1995 cuando la IEEE entregó un nuevo estándar, el estándar IEEE

std 1076.3.

De esta forma llegamos a la actualidad, en donde el IEEE está constantemente

publicando nuevos paquetes para complementar VHDL, aunque solo se requieren los

estándares IEEE std 1076-1987(o IEEE std 1076-1993), IEEE std 1164 y IEEE std

1076.3 para formar en conjunto el estándar completo de VHDL, que permite trabajar desde

la descripción del circuito en lenguaje VHDL hasta la implementación de éste en

dispositivos de lógica programable.

2.2.1 El estándar IEEE std 1164

Este es un estándar que viene a reemplazar los paquetes creados por las empresas

vendedoras de simuladores, los cuales dentro de sus paquetes agrupaban distintas

cantidades de datos lógicos (cuatro, siete, trece, etc.). Este estándar también conocido como

Page 40: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 40 -

"Standard Logic Package", contiene nueve valores para los nueve tipos de datos lógicos

estándar que agrupa. Estos nueve valores son presentados en la tabla 2.1.

Tabla 2.1

Estos nueve tipos de datos lógicos permiten modelar con exactitud el

comportamiento de circuitos digitales durante la simulación.

Este estándar aparte de permitir un uno o cero lógico como señal de entrada al

circuito simulado, permite ingresar una señal desconocida para ver la respuesta del sistema

ante este tipo de entrada.

2.2.2 El estándar IEEE std 1076.3

Page 41: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 41 -

También conocido como "Estándar Numérico" o "Estándar de Síntesis", fue

desarrollado para reemplazar los muchos paquetes "no estándar" creados por las empresas

vendedoras de herramientas de Síntesis. Este estándar define el paquete numeric_std que

permite el uso de operaciones aritméticas en datos de tipo lógico estándar (std_logic y

std_logic_vector). También define en forma aritmética datos del tipo bit y bit_vector en

un paquete llamado numeric_bit.

2.3 Principios de VHDL

Debido a que el objetivo principal de este seminario no es el lenguaje VHDL en sí,

solamente se enseñarán los principios básicos para que el lector pueda describir circuitos

simples con el fin de poder simularlos y sintetizarlos. Queda en manos del lector el ahondar

más en las características del lenguaje si desea realizar descripciones de circuitos más

complejos.

Existen dos formas de describir un circuito. La primera es indicando los

componentes del circuito y sus correspondientes interconexiones; para realizar este tipo de

descripción es necesario conocer la estructura interna del circuito. Las herramientas

utilizadas son las de captura de esquemas y el lenguaje Netlist (lista de conexiones). La

segunda forma es describir el funcionamiento (comportamiento) del circuito; VHDL

permite describir un circuito utilizando cualquiera de estas formas.

Originalmente, VHDL fue creado para facilitar el trabajo de los diseñadores de

circuitos digitales, haciendo más fácil la depuración, modificación y mantención de los

diseños. Es por esta razón que VHDL cuenta con muchas instrucciones orientadas más a la

simulación que a la implementación física del diseño. Esto trae consigo la diferencia entre

el VHDL simulable y el VHDL sintetizable, siendo este último el más utilizado

actualmente. Debido a que ciertas instrucciones de VHDL no tienen un equivalente físico,

no todas las instrucciones pueden ser utilizadas en el VHDL sintetizable. Por lo tanto, la

Page 42: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 42 -

mayoría de los diseños pueden ser simulados, pero no todos pueden sintetizarse para

llevarlos a un dispositivo de lógica programable.

VHDL tiene dos formas básicas de sentencias de programación, las sentencias

secuenciales y las sentencias concurrentes.

Las sentencias secuenciales son ejecutadas una después de otra, como cualquier

lenguaje de programación común (Basic, C, etc.), y la siguiente sentencia puede anular a la

actual; es por esta razón que al usar este tipo de sentencias se debe considerar el orden de

éstas.

Las sentencias concurrentes son aquellas que están ejecutándose continuamente; es

por esta razón que en este caso no es necesario preocuparse por el orden de las sentencias.

Este tipo de sentencias se utiliza para describir procesos paralelos.

En cuanto a las técnicas de diseño, VHDL posee tres técnicas de modelado:

abstracción, modularidad y jerarquía.

2.3.1 Abstracción: El diseño por abstracción es aquel que discrimina entre la

información esencial y la no-esencial; es por esta razón que oculta muchos

detalles. Toda la información de un diseño de cierto nivel de abstracción tiene

el mismo grado de abstracción. Para esta técnica de modelado el diseño de

circuitos digitales se divide en cuatro niveles de abstracción: Behaviour, RTL,

Logic y Layout. HDL es aplicable solo a los tres primeros niveles.

2.3.1.1 Behaviour: También conocido como nivel de comportamiento, es el

nivel de mayor abstracción; solo se describe el funcionamiento del

sistema, utilizando sentencias como if, else, for, etc. Por lo general, los

diseños realizados con este nivel de abstracción son simulables pero no

Page 43: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 43 -

se recomienda sintetizarlos, porque resultan poco óptimos, debido a

que su estructura es secuencial y no permite paralelismos, como ocurre

en los circuitos reales. En este nivel se ve el circuito a describir como

una caja negra, de la cual se conoce las entradas, las salidas y como

obtener éstas a partir de las entradas. Como ejemplo se muestra en la

figura 2.3, la descripción de la arquitectura del multiplexor de la figura

2.4, el cual consta de dos entradas, una señal de selección y una salida.

Figura 2.3

Figura 2.4

ARCHITECTURE behaviour OF mux IS BEGIN

PROCESS (a,b,selec) BEGIN

IF (selec=´0´) THEN salida<=a;

ELSE salida<=b;

END IF; END PROCESS;

END behaviour;

Page 44: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 44 -

La sintaxis se estudiará más adelante; este ejemplo se presenta para visualizar el

nivel de abstracción. Se puede observar que a través de sentencias se describe el

funcionamiento del multiplexor sin saber que componentes lo conforman; la salida está

relacionada en forma directa con respecto a las entradas.

2.3.1.2 RTL (Register Transfer Level): También conocido como Dataflow,

Flujo de Datos o Transferencia entre Registros. Como su nombre lo

dice, en este nivel se ve el circuito a describir como un conjunto de

registros (Flip-Flops, latches, etc.). Si en el caso del nivel behaviour

se tenía una descripción de comportamiento, aquí se tiene una

descripción más cercana a la estructural con el fin de acercar más la

descripción a una posible realización física; pero aún es un nivel de

descripción funcional. En este nivel se describe un circuito desde el

punto de vista de las señales, siguiendo el flujo de señales desde las

entradas hasta llegar a las salidas. En el nivel RTL de abstracción se

utilizan sentencias concurrentes, permitiendo describir bloques

paralelos como los que existen en los circuitos reales; es por esta razón

que los circuitos descritos en este nivel pueden ser simulados y

sintetizados. Ahora como ejemplo se mostrará el mismo multiplexor

del ejemplo anterior pero descrito con un nivel de abstracción RTL

(figuras 2.6 y 2.7); para ello es necesario presentar el multiplexor

como lo muestra la figura 2.5.

Page 45: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 45 -

Figura 2.5

Figura 2.6 Figura 2.7

En este ejemplo se puede apreciar que hay dos formas de describir el multiplexor

con el nivel de abstracción RTL. En el primer caso (figura 2.6), todas las instrucciones son

concurrentes; lo que implica que cada vez que cambie alguna de las señales que intervienen

en las asignaciones, éstas se ejecutarán. Se puede apreciar también que la descripción es

muy cercana a una descripción estructural, ya que de alguna manera se está definiendo las

señales (conductores) y los componentes que la definen. La diferencia radica en que aquí se

está definiendo las señales y no una lista de componentes y sus interconexiones; esto se

ARCHITECTURE RTL OF mux IS

SIGNAL ax,bx,noselec: bit;

BEGIN

noselec<=NOT selec;

ax<=a AND noselec;

bx<=b AND selec;

salida<=ax OR bx;

END RTL;

ARCHITECTURE RTL OF mux IS

BEGIN

salida<=a WHEN selec=´0´ ELSE b;

END RTL;

Page 46: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 46 -

aclarará más al estudiar la descripción en nivel logic. La segunda descripción (figura 27),

es más corta debido a que se relaciona en forma directa la señal de salida con las señales de

entrada.

2.3.1.3 Logic (lógico): También conocido como nivel de Compuerta o Gate,

en este nivel se describe un circuito desde el punto de vista estructural,

definiendo los componentes (AND, OR, NOT, etc.), que lo conforman

y sus correspondientes interconexiones. Por esta razón para poder

describir un circuito utilizando este nivel de abstracción es necesario

conocer su estructura. A continuación, en la figura 2.8 se muestra la

descripción del multiplexor de la figura 2.5 utilizando el nivel lógico

de abstracción.

Figura 2.8

En este ejemplo se puede observar la definición de cada componente del circuito y

como están conectados entre sí, a diferencia con la descripción anterior donde solo se

define el flujo de señales.

Existen herramientas de síntesis que permiten bajar desde un nivel Behaviour a un

nivel RTL; este proceso recibe el nombre de Síntesis Funcional. También hay herramientas

ARCHITECTURE logic OF mux IS

SIGNAL ax,bx,noselec: bit;

BEGIN

u1: ENTITY inv PORT MAP(e=>selec,y=>noselec);

u2: ENTITY and2 PORT MAP(e1=>a,e2=>noselec,y=>ax);

u3: ENTITY and2 PORT MAP(b,selec,bx);

u4: ENTITY or2 PORT MAP(e1=>ax,e2=>bx,y=>salida);

END logic;

Page 47: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 47 -

que permiten bajar desde un nivel RTL a un nivel de Netlist; este proceso recibe el nombre

de Síntesis Lógica.

En general, transformar una descripción Behaviour/RTL en un Netlist de

compuertas y Flip-Flops de una tecnología dada, recibe el nombre de Síntesis. Al momento

de sintetizar un diseño es necesario especificar que tipo de tecnología lo acogerá (CPLD,

ASIC, FPGA, etc.).

Para finalizar con esta técnica de modelado, se puede decir que al bajar desde una

descripción behaviour a una descripción RTL, se disminuye la velocidad de simulación

pero a la vez se aumenta la precisión de la descripción, acercándose más al circuito real

descrito.

2.3.2 Modular: El método modular consiste en dividir un gran sistema en

subsistemas más pequeños; estos subsistemas reciben el nombre de módulos.

Esto permite pasar desde un complejo sistema a un grupo de módulos más

simples.

2.3.3 Hierarchy (Jerarquía): Este método es utilizado para organizar el diseño de

grandes circuitos, y se utiliza en conjunto con el método modular. Al utilizar

la jerarquía se crea un nivel de descripción funcional debajo de otro; cada

nivel creado posee una descripción más detallada del sistema. El uso de este

método es consecuencia directa de aplicar el diseño Top-Down.

Estas dos últimas técnicas de modelado se utilizan cuando el circuito a modelar es

muy grande como para aplicar directamente el modelado de abstracción.

Page 48: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 48 -

2.4 Sintaxis de VHDL

Por ser VHDL un lenguaje de alto nivel, posee una gran cantidad de términos y

sentencias para poder describir diversos tipos de circuitos. Como el objetivo de este

capitulo es dar a conocer las características más esenciales de VHDL, solo se presentarán

las sentencias y los términos más utilizados.

2.4.1 Declaración y Asignación de Constantes, Variables y Señales

Asignación de señales: "<="

Ejemplo: next_state <= S0;

Asignación de variables: ":="

Ejemplo: salida := resultado;

Declaración de constantes:

Page 49: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 49 -

Ejemplos: constant E: REAL := 2.71828;

constant RETRASO: TIME := 10 ns;

Declaración de variables:

Ejemplo: variable CONTADOR: NATURAL;

Declaración de señales:

Ejemplos: signal SELECT: BIT := '0';

signal DIR: STD_LOGIC := '0'

2.4.2 Principales Operadores y Elementos Sintácticos

A continuación, se presentan los operadores y elementos sintácticos más utilizados

en la descripción de circuitos a través de VHDL.

Comentarios: "--"

Ejemplo: -- Inicialización de Variables

Las sentencias (que pueden abarcar varias líneas) se finalizan con: ";"

Ejemplo: next_state <= S1;

Delimitador de lista: ","

Ejemplo:

reloj <= '0', -- empieza con nivel cero lógico.

Page 50: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 50 -

'1' after 10 ns, -- después de 10 ns cambia a uno lógico.

'0' after 10 ns, -- cada 10 ns va cambiando.

'1' after 10 ns;

Comparaciones:

• Igualdad, desigualdad: =, /=

• Mayor que, menor que: >, <

• Mayor o igual que, menor o igual que: >=, <=

Operadores lógicos: and, or, nand, nor, not, xor, xnor.

Identificadores: En este punto hay que separar el estándar VHDL '87 del estándar

VHDL '93.

VHDL 87

mySignal_6 -- identificador simple.

fte, FTE, Fte -- identificadores idénticos.

fte_&_fte -- no permite caracteres especiales (&).

no signal -- no permite espacios. next__state -- no permite dos subrayados seguidos.

VHDL 93

\mySignal_6\ -- identificador extendido.

\fte\, \FTE\, \Fte\ -- identificadores diferentes.

\fte_&_fte\ -- permite caracteres especiales.

\no signal\ -- permite usar espacios.

\next__state\ -- permite dos subrayados seguidos.

2do_estado -- no se puede comenzar con un número.

\2do_estado\ -- se puede comenzar con un número

open, register -- no se puede utilizar las

palabras claves de VHDL.

\open\, \register\ -- se puede utilizar las palabras claves de VHDL.

Page 51: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 51 -

2.4.3 Principales Sentencias

2.4.3.1 Sentencia IF: Esta sentencia presenta dos formas de utilización como

se muestra en los ejemplos de las figuras 2.9 y 2.10.

Figura 2.9 Figura 2.10

Ejemplo 1: if Z = '0' then

next_state <= S1;

else

next_state <= S2;

end if;

Ejemplo 2:

if Z = '0' then

next_state <= S1;

elsif Z = '1' then

next_state <= S2;

else

next_state <= SX;

d if

Figura 2 11

Figura 2 12

Page 52: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 52 -

La diferencia entre las dos sentencias if la podemos apreciar en las figuras 2.11 y

2.12. En el caso del ejemplo 1, si Z es igual a 0, entonces next_state es igual a S1, en

cualquier otro caso next_state es igual a S2. En el ejemplo 2, podemos decir que si Z es

igual a 0, entonces next_state es igual a S1, si Z es igual a 1, entonces next_state es igual a

S2 y en cualquier otro caso, next_state es igual a SX. Se recomienda el uso del comando

"else" cada vez que se utilice el comando "if", para que no ocurran eventos imprevistos.

2.4.3.2 Sentencia LOOP: Esta sentencia se puede realizar con un ciclo for o

con un ciclo while, ambos casos se muestran en las figuras 2.13 y

2.14.

Figura 2.13 Figura 2.14 Ambos programas realizan la misma tarea, le asignan el valor lógico cero a los 8

bits menos significativos del vector de entrada, debido a que la notación "entrada (i)",

representa el i-ésimo elemento del vector de entrada. En el caso del loop realizado con un

ciclo for, el loop se ejecutará hasta que la variable "i" llegue al valor cero, ejecutando la

sentencia de asignación por última vez con "i = 0". Cabe señalar que en este caso no es

necesario declarar la variable "i" debido a que en un ciclo for, este procedimiento se hace

en forma automática. Por otro lado, en el caso del loop realizado con la sentencia while,

primero se declara como entero (integer) la variable "i" y se inicializa en cero. Como el

loop se ejecutará siempre que la variable "i" sea menor a 8, se incrementa ésta dentro del

loop para que no quede ejecutándose para siempre. Cuando la variable tome el valor 8, no

se ejecutará el loop.

process (a)

begin

loop1: for i in 7 downto 0 loop

entrada (i) <= '0';

end loop;

end process;

process (a) variable i: integer := 0; begin loop2: while i < 8 loop entrada (i) <= '0'; i := i + 1; end loop; end process;

Page 53: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 53 -

2.4.3.3 Sentencia CASE: Es usada para especificar una serie de acciones

según el valor dado de una señal de selección, su sintaxis es como se

muestra en la figura 2.15.

Figura 2.15

Además existe una variante muy importante dentro de VHDL, el cual le da un valor

específico a la señal cuando no se cumple ninguno de los casos anteriores, esto se hace a

través del comando "others". Un ejemplo de su uso se muestra en las figuras 2.16 y2.17. Figura 2.16 Figura 2.17

En ambos casos se describe un multiplexor con tres señales de entrada, una señal de

control y la señal de salida "g". A simple vista observamos que en la primera descripción

(figura 2.16) están definidas todas las combinaciones posibles, entonces ¿porqué utilizar la

segunda descripción?. Porque VHDL no solo reconoce el cero o uno lógico, también

case (señal a evaluar) is

when (valor 1) => haz una cosa;

when (valor 2) => haz otra cosa;

… when (último valor) => haz tal cosa;

end case;

case control is

when "00" => g <= a;

when "01" => g <= b;

when "10" => g <= c;

when "11" => g <= "1111";

end case;

case control is

when "00" => g <= a;

when "01" => g <= b;

when "10" => g <= c;

when others => g <= "1111";

end case;

Page 54: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 54 -

reconoce el estado de alta impedancia y otros, es por esta razón que se recomienda usar

siempre el comando "others" para definir todas las otras combinaciones que puedan ocurrir

(figura 2.17).

La sentencia "case" también permite especificar un rango de valores posibles de la

señal de selección, para los cuales hacer una asignación, mediante la palabra reservada "to".

Como ejemplo, se muestran en las figuras 2.18 y 2.19 dos descripciones equivalentes:

Figura 2.18 Figura 2.19

2.4.3.4 Sentencia PROCESS: La sentencia process solo se puede utilizar

dentro de la "arquitectura" de un diseño (esto se explicará con detalles

posteriormente). La sentencia process es concurrente, debido a que

todos los process existentes en la "arquitectura" se ejecutan en forma

concurrente (paralela). Por otro lado, la única forma de utilizar

instrucciones secuenciales en VHDL es haciéndolo dentro de un

bloque process.

En la figura 2.20 se muestra la forma de declarar un bloque process.

case control is

when "000" => d <= a;

when "001" => d <= a;

when "010" => d <= a;

when "011" => d <= b;

when "100" => d <= b;

when "101" => d <= b;

when "110" => d <= b;

when "111" => d <= c;

when others => d <= null;

end case;

case control is

when "000" to "010" => d <= a;

when "011" to "110" => d <= b;

when "111" => d <= c;

when others => d <= null;

end case;

etiqueta: process (señal1, señal2,...)

begin

sentencias secuenciales

end process etiqueta;

Page 55: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 55 -

Figura 2.20

La etiqueta sirve para ponerle nombre al proceso y su uso es opcional. El paréntesis

que sigue a la palabra process recibe el nombre de lista sensible. La ejecución del process

se activa cuando se produce un cambio en alguna de las señales de la lista sensible. En el

caso de no utilizar una lista sensible, la ejecución se controla con el uso de sentencias wait

dentro del process. La sentencia wait se estudiará más adelante. En cualquier caso debe

existir, o una lista sensible o una sentencia wait, de lo contrario, al simular el diseño, el

process se ejecutaría una y otra vez entrando la simulación en un ciclo infinito. Entre la

etiqueta y la palabra begin se pueden declarar variables, atributos, tipos, subprogramas,

pero en ningún caso se pueden declarar señales.

2.4.3.5 Sentencia WAIT: Esta sentencia se utiliza para suspender un process

cuando éste no tiene lista sensible. Lo único que exige esta sentencia

es ir al final del process. En las figuras 2.21 y 2.22 se muestran dos

descripciones, las cuales se ejecutarán cuando haya un cambio en las

señales a, b o c. Una descripción tiene lista sensible y la otra una

sentencia wait, ambas son equivalentes.

Figura 2.21 Figura 2.22

process (a,b,c)

begin

x <= a and b and c;

end process;

process

begin

x <= a and b and c;

wait on a,b,c;

end process;

Page 56: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 56 -

2.4.3.6 Sentencia WAIT UNTIL: Esta sentencia también se utiliza para

suspender el process; pero a diferencia con la sentencia wait, ésta

debe ir al comienzo del process. En el ejemplo de la figura 2.23 se

muestra la descripción de un Flip-Flop tipo “D” utilizando la sentencia

wait until.

Figura 2.23

En este caso, el process está suspendido hasta que la condición siguiente a wait

until sea verdadera. Una vez que es verdadera, se ejecuta el process asignando a la señal

"q" el valor de "d"; luego vuelve a suspenderse hasta que la señal "clk" vuelva a tomar el

valor de 1.

2.4.4 Variables v/s Señales:

• Las variables solo pueden ser declaradas dentro de un process.

• Las variables toman en forma instantánea el valor asignado.

a := ’1’;

• Las señales solo pueden ser declaradas dentro del cuerpo de la

"arquitectura".

• Solo las señales son usadas como puertos de conexión en el

cuerpo de "entidad".

• La asignación de una señal dentro de un process es secuencial,

es decir, la señal no cambia hasta llegar al final del process. Si

la señal no está dentro de un process, la asignación es en forma

inmediata.

FFD: process

begin

wait until (clk='1');

q <= d;

end process FFD;

Page 57: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 57 -

• La asignación de una señal puede ser retardada:

a <= ’1’ after 10 ns

Como una de las diferencias más importantes está en la asignación, en las figuras

2.24 y 2.25 se muestra un ejemplo para dejar más en claro la diferencia.

Figura 2.24 Figura 2.25

La idea es la siguiente, si al cambiar el valor de "a", ésta vale "0000", entonces el

valor de "b" aumenta en 1, como el valor inicial de "b" era "0000" al aumentar su valor es

"0001", entonces "c" vale 1, sino vale 0.

En el primer caso (figura 2.24), se intentó realizar esta tarea solo con señales, pero

el objetivo no se logró debido a que esta descripción no funciona. Consideremos que "b"

tiene un valor inicial de "0000", si la señal "a" toma el valor "0000", "b" no valdrá "0001"

hasta el final del process y por consiguiente "c" no valdrá 1 que era lo esperado.

En el segundo caso (figura 2.24), se utilizó una variable "v", suponiendo

nuevamente que "b" tiene un valor inicial de "0000" y "a" cambia a "0000", "v" toma

instantáneamente el valor de "b", luego como "a" es igual a "0000", "v" toma en forma

instantánea el valor "0001", con lo que al final del process "v" valdrá "0001" y por ello "c"

process (a)

begin

if a = "0000" then b <= b + '1';

end if;

if b = "0001" then c <= '1';

else c <= '0';

end process;

process (a)

variable v: bit_vector (3 downto 0);

begin

v := b;

if a = "0000" then v := v + '1';

end if;

if v = "0001" then c <= '1';

else c <= '0';

b <= v;

end process;

Page 58: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 58 -

tendrá el valor 1, luego "b" toma el valor de "v". Por lo tanto el programa funciona

correctamente.

2.4.5 Tipos de Señales

El estándar IEEE 1076/93 define cuatro tipos de señales, pero además, se da la

posibilidad de crear nuevos tipos. Los cuatro tipos de señales nativos de VHDL son:

Tipo boolean: Puede tomar dos valores, verdadero/true y falso/false.

Tipo bit: Puede tomar dos valores: 0 / low y 1/high.

Tipo bit_vector: Es un vector de bits, solo hay que tener cuidado al utilizar las

palabras reservadas downto o to, debido a que éstas definen cual es el bit más

significativo, como se mostró en el ejemplo anterior.

Tipo integer: Se utiliza para trabajar con números enteros.

2.5 Elementos estructurales de VHDL

La estructura de un diseño en VHDL puede utilizar varios elementos estructurales

dependiendo esta cantidad de la extensión del programa, la cual depende en forma directa

de la complejidad del circuito descrito. Para describir circuitos de complejidad mediana-

baja (que son los estudiados en esta tesis), solo es necesario conocer los elementos más

importantes. Precisamente serán éstos los que se analizarán en este punto.

Los elementos estructurales a analizar son: la Entidad (Entity), la Arquitectura

(Architecture), la Configuración (Configuration), los Paquetes (Packages) y las Bibliotecas

(Library).

Page 59: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 59 -

2.5.1 Entidad (Entity): Se utiliza para relacionar el diseño con el mundo exterior,

es decir, como una interfase. Se observa el diseño como una "caja negra", de

la cual solo se conocen sus entradas y salidas con sus correspondientes

características. Al momento de declarar las entradas y las salidas, hay que

especificar la longitud de éstas (número de bits), modo (entrada, salida,

buffer, entrada/salida) y el tipo (integer, bit, bit_vector, etc). En la figura 2.26

se presenta la entidad de un circuito "X", el cual consta de dos puertos de

entrada, un puerto de salida, un puerto en modo buffer y un puerto de

entrada/salida.

Figura 2.26

En este ejemplo, el puertoa es un bit de entrada, el puertob es un vector de entrada

de 8 bits, siendo el MSB el puertob(0) y el LSB el puertob(7). El puertoc es un vector de

salida de 4 bits, cuyo MSB es el puertoc(3) y el LSB el puertoc(0). El cuarto puerto es del

modo buffer, y es usado para realimentación interna; es similar al modo out pero permite

realimentación y no es bidireccional. Solo puede ser conectado directamente a una señal

interna o a un puerto de modo buffer de otra identidad. El último puerto es de

entrada/salida del tipo standard logic de un solo bit.

Nótese que la definición del último puerto no lleva ";", de lo contrario estaría

incorrecto.

entity circuito_X is

port (

puertoa: in bit;

puertob: in bit_vector (0 to 7);

puertoc: out bit_vector (3 downto 0);

puertod: buffer bit;

puertoe: inout std_logic);

end entity circuito_X;

Page 60: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 60 -

Al final de la descripción se destacó la palabra entity. Esto es porque VHDL93

permite escribirla después del end, pero el estándar VHDL87 no lo permite; por lo tanto su

uso dependerá del estándar a utilizar.

Varios puertos del mismo tipo y modo pueden ser declarados de la siguiente forma:

A,B,C,D: in integer range 0 to 3;

VHDL solo permite los cuatro modos de puertos presentados anteriormente.

2.5.2 Arquitectura (Architecture): A grandes rasgos, describe lo que hay que

hacer con las señales de entradas para transformarlas en salida. La arquitectura

es lo que hay dentro de la "caja negra" descrita en la entidad y es aquí donde

se describe el funcionamiento del circuito que se está diseñando. La sintaxis

de la arquitectura debe tener a lo menos la estructura mostrada en la figura

2.27.

entity HALFADDER is

port(

A,B: in bit;

SUM,CARRY: out bit);

end SUMADOR;

architecture RTL of HALFADDER is

-- declaración de señales y otros

begin

Page 61: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 61 -

Figura 2.27

En este ejemplo se consideró que el circuito diseñado era un sumador con un nivel

de abstracción RTL; hay que aclarar que después del comando architecture se puede

escribir cualquier cosa que uno quiera, pero generalmente se coloca el nivel de abstracción

utilizado. Después de la palabra "of" se coloca el nombre de la identidad que alberga esta

arquitectura, en este caso es SUMADOR. Luego se declaran las señales, componentes y

otros, en caso que existan. Después de la palabra "begin" va la descripción del circuito.

Nótese que se destaca la palabra architecture al final del programa; la razón es la misma

que en el caso de la entidad.

Una entidad puede tener varias arquitecturas; esto debido a que hay muchas formas

de describir el mismo circuito, pero una arquitectura está enlazada a una entidad específica.

Page 62: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 62 -

Al momento de simular el diseño hay que especificar cual de las arquitecturas se va a

simular.

Por otro lado, los puertos declarados en la entidad están disponibles en forma de

señal dentro de la arquitectura.

Dentro de la arquitectura solo hay sentencias concurrentes y un ejemplo de éstas es

el bloque process.

A continuación a modo de resumen se muestra en la figura 2.28 un programa

compuesto por la identidad y arquitectura de un multiplexor de dos entradas, más una señal

de selección y una salida. Su nivel de abstracción es behaviour (de comportamiento). Este

programa está terminado y listo para ser simulado.

entity MUX is

Port ( a : in std_logic;

b : in std_logic;

selec : in std_logic;

salida : out std_logic);

end MUX;

architecture BEHAVIOUR of MUX is

begin

process (a,b,selec)

begin

if(selec='0')

then salida<=a;

else salida<=b;

end if;

end process;

Page 63: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 63 -

Figura 2.28

2.5.3 Configuración (Configuration): Hasta aquí solo se a hablado y dado

ejemplos de descripciones con nivel de abstracción del tipo behaviour y RTL,

esto debido a que son las más utilizadas. También es bueno hablar un poco de

las descripciones estructurales, ya que dentro de estas descripciones se utiliza

la configuración. Pero antes de poder explicar la configuración es necesario

estudiar los componentes.

2.5.3.1 Componentes (Components): Los componentes a utilizar se declaran

antes del “begin” de la arquitectura (en la parte declarativa de la

arquitectura). Su sintaxis y su similitud con la “entidad” se muestra en

la figura 2.29.

Figura 2.29

component HALFADDER

port (A, B: in bit;

SUM, CARRY : out bit);

end component;

Page 64: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 64 -

Es necesario enlazar los componentes con la entidad y esto lo hacen las

instrucciones for y use; este enlace se realiza dentro del bloque de configuración cuya

sintaxis se muestra en la figura 2.30.

Figura 2.30

Debido a que la descripción estructural es complicada, no muy utilizada y el

objetivo de este capítulo es aprender en forma básica el lenguaje, no se explicará más a

fondo este tema. Si el lector está interesado en ahondar más en la descripción estructural,

puede buscar alguna referencia en la bibliografía.

2.5.4 Paquetes (Packages): Los paquetes permiten agrupar un conjunto de

declaraciones de tipos de datos, subprogramas, constantes, etc., para que

puedan ser usadas en el diseño de diferentes circuitos sin ser repetidas en la

declaración de cada uno. La estructura básica de un paquete está formada por

dos partes: la declaración del paquete y la declaración del cuerpo del paquete.

En la figura 2.31 se muestra la sintaxis de ambos.

CONFIGURATION nombre OF la_entidad IS

declaraciones

configuracion

END nombre;

--DECLARACIÓN DEL PAQUETE

package nombre_del_package is

-- declaración de procedures -- declaración de funciones -- declaración de tipos, etc...

end nombre_del_package;

--DECLARACIÓN DEL CUERPO DEL PAQUETE

Page 65: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 65 -

Figura 2.31

Una vez que se ha declarado el package, se puede hacer uso de todos los

subprogramas, constantes, tipos de datos declarados dentro de él y para ello hay que llamar

el paquete al proceso. Esto se hace con la siguiente sentencia:

use work.NOMBRE DEL PACKAGE.NOMBRE DEL COMPONENTE;

Lo primero que se encuentra en esta sentencia es con el comando use, luego con el

nombre de la biblioteca que hospeda al paquete, luego el nombre del paquete y finalmente

el componente del paquete que se desee usar. Generalmente cuando se llama un paquete, se

utilizan todos los componentes que éste tiene.

La forma de habilitar todos los componentes del package es utilizando el comando

all como se muestra a continuación:

use work.NOMBRE DEL PACKAGE.all;

Un completo ejemplo se mostrará después de explicar las bibliotecas.

Page 66: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 66 -

2.5.5 Biblioteca (library): Hasta ahora se ha estudiado los módulos (entidad,

arquitectura, configuración, paquetes) que componen la descripción de un

circuito en VHDL. Pero aún no se unifican formando un solo ente. Esto se

logra al momento de compilar el programa, proceso en el cual se comprueba

la sintaxis y además se unifican todos los módulos que componen al

programa. El nombre que recibe el sistema unificado es library. Luego, tanto

la simulación como la síntesis se realizarán sobre esta biblioteca. Hay que

aclarar que estas bibliotecas solo pueden ser creadas por las herramientas de

compilación, aunque hay cláusulas que permiten la utilización de los

elementos internos de los paquetes, que están dentro de bibliotecas, en nuevos

programas, como muestra el ejemplo de la figura 2.32.

Figura 2.32

En VHDL existen dos bibliotecas que no tienen que ser llamadas, ya que por

defecto eso ocurre automáticamente. Una de estas bibliotecas es la WORK, en la cual se

guardan los elementos de la descripción después de la compilación y la segunda es la STD,

que consta de dos paquetes, el STANDARD y el TEXTIO. El paquete STANDARD

contiene todas las definiciones de tipos de datos y constantes (bit, bit_vector, etc.); por otro

lado el paquete TEXTIO contiene tipos y funciones para el acceso a ficheros de texto.

Además de estas bibliotecas, las herramientas de simulación y síntesis suelen venir

con otras bibliotecas como la IEEE, la cual tiene los paquetes std_logic_1164, std_logic,

std_ulogic, etc.

library COMPONENTES; -- se especifica la biblioteca

use COMPONENTES.LOGIC.AND2; -- se especifica el componente AND2 del

-- paquete LOGIC para ser utilizado.

use COMPONENTES.ARITH.all; -- se utilizarán todos los componentes de

-- del paquete ARITH

Page 67: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 67 -

En la figura 2.33 se muestra un completo ejemplo que agrupa tanto la declaración

de paquetes como el uso de bibliotecas.

Figura 2.33

--Declaración de las entidades library ieee; use ieee.std_logic_1164.all; use work.std_arith.all; use work.uno.all; entity count is port ( clk,reset:in bit; conta:buffer std_logic_vector(1 downto 0)); end count;

architecture behaviour of count is

--Primero se declaran las bibliotecas que se van a utilizar library ieee; use ieee.std_logic_1164.all; use work.std_arith.all; --Empieza la declaración del package "UNO" package uno is component count port ( clk,reset:in bit; conta :buffer std_logic_vector(1 downto 0)); end component; component decoder port ( seleccion :in std_logic_vector(1 downto 0); enable1,enable2:in bit; salida :out std_logic_vector(3 downto 0)); end component; end package;

Page 68: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 68 -

Figura 2.33 (continuación)

Page 69: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 69 -

Figura 2.33 (continuación)

--Descripción del decodificadorarchitecture behaviour of decoder isbegin decodificador:process(seleccion,enable1,enable2) begin if enable2='1' then salida<=(others=>'0'); elsif enable2='0' and enable1='0' then salida<=(others=> '0'); elsif(enable1='1') then case seleccion is when "00" => salida <= "0001"; when "01" => salida <= "0010"; when "10" => salida <= "0100"; when "11" => salida <= "1000"; when others => salida <="1111"; end case; end if;end process decodificador;end behaviour;

Page 70: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 70 -

2.6 Testbench

El Testbench es utilizado en la simulación; en él se encuentran especificados los

estímulos (señales), que serán ingresados al sistema diseñado. La herramienta de

simulación toma el diseño, le ingresa las señales especificadas en el Testbench y entrega la

respuesta del sistema ante tales estímulos, ahí se puede observar si el sistema funciona

correctamente o no.

La estructura de un Testbench está dividida en tres partes: entidad, arquitectura y

configuración.

2.6.1 Entidad : En caso la entidad se encuentra vacía, ya que el Testbench no

necesita interfase de señales. En la figura 2.34 se muestra la entidad de un

Testbench correspondiente a un multiplexor.

Figura 2.34

2.6.2 Arquitectura: Aquí se definen las señales internas del Testbench, las cuales

reciben el mismo nombre que los puertos del diseño a simular para hacer la

entity TB_MUX is

end TB_MUX ;

Page 71: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 71 -

relación en forma directa. También se declara como componente el diseño a

simular, identificando sus puertos (con los mismos nombres que tenían en la

entidad del diseño), luego se llama al componente (que contiene el diseño

completo) y se le ingresan las señales que fueron definidas al principio de la

arquitectura, luego se les da valores a estas señales. En otras palabras, lo que

se está haciendo es ingresarle valores al sistema diseñado a través de unas

señales intermedias. En la figura 2.36 se muestra la arquitectura de un

Testbench realizado para el multiplexor definido en el punto anterior y en la

figura 2.35 se muestra la entidad del multiplexor diseñado para relacionar las

señales con los puertos del diseño.

Figura 2.35

library ieee;

use ieee.std_logic_1164.all;

entity MUX is

port(a: in std_logic;

b: in std_logic;

sel: in std_logic;

z: out std_logic);

end;

architecture DATAFLOW of MUX is

begin

z <= a WHEN sel = '0' ELSE b;

end DATAFLOW;

architecture TESTBENCH of TB_MUX is

signal a, b, sel : std_logic;

signal z : std_logic;

component MUX

Port (a, b, sel : in std_logic;

z: out std_logic);

end component;

begin

UUT : MUX Port Map (a, b, sel, z);

---------------------------------------------------------------------

-- primeros estímulos

---------------------------------------------------------------------

process

begin

a <= '0', '1' after 10 ns;

b <= '1', '0' after 15 ns;

sel <= '0', '1' after 5 ns, '0' after 35 ns;

wait for 40 ns;

end process;

----------------------------------------------------------------------

-- -segundos estímulos

----------------------------------------------------------------------

-- a_stimuli: process

Page 72: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 72 -

Figura 2.36

En el Testbench descrito en la figura 2.36 se comienza llamando al diseño creado

del multiplexor, especificando sus puertos. Luego se les asigna valores a las señales que

corresponden a cada entrada. (a, b, sel).

2.6.3 Configuración: Es utilizada para elegir el componente a simular en el caso

de haber más de uno, aunque lo típico es tener solo uno. Su sintaxis básica se

muestra en la figura 2.37.

Figura 2.37

configuration CFG_tb_MUX of tb_MUX is for TESTBENCH for UUT : MUX end for; end for; end;

Page 73: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 73 -

Nota: La palabra UUT proviene de las siglas Unit Under Test (unidad bajo prueba).

Al finalizar este capítulo, el lector estará en condiciones de realizar descripciones de

circuitos simples, también será capaz de entender los circuitos que serán utilizados más

adelante, y en general podrá entender, a rasgos generales, la estructura y funcionamiento de

descripciones más complejas.

Como el carácter de este capítulo es solo introductorio, no se abarcó toda la

información y características de VHDL; es por esto, que se recomienda a las personas que

estén interesadas en trabajar con VHDL, un estudio más profundo sobre dicho lenguaje.

Podrán encontrar más información en los libros utilizados en este capítulo en la

bibliografía.

CAPÍTULO 3: DISEÑO DE CIRCUITOS DIGITALES

3.1 Introducción

En el primer capítulo se estudió la FPGA, su funcionamiento, como está construida,

por qué su uso va en aumento y qué importancia tiene hoy en día en el diseño electrónico.

En el segundo capítulo se estudió el lenguaje VHDL, desde sus inicios hasta la actualidad;

también se presentó en forma general las estructuras y sentencias básicas para realizar la

descripción de un circuito simple a través de este lenguaje. Finalmente se ha llegado al

tercer capítulo, después de haber estudiado en forma independiente FPGA y VHDL, llegó

el momento de utilizar ambos en conjunto. En este capítulo se explicará el proceso

Page 74: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 74 -

completo de diseño de circuitos digitales, desde el momento de la programación en VHDL,

hasta lograr albergar dicho diseño en la FPGA.

2.2 Metodología de Diseño

En el diseño de circuitos digitales utilizando tecnología FPGA, hay una metodología

estándar a seguir, independiente de la empresa fabricante del chip o de los diferentes

programas que existen para trabajar con dicha tecnología. En general, la metodología a

seguir es como se muestra en la figura 3.1.

Figura 3.1

3.2.1 Captura del Diseño: Existen varias formas de capturar el diseño de un

circuito digital; algunos métodos son:

Lenguaje de descripción de hardware.

Diagramas esquemáticos.

Diagramas de máquinas de estado.

El programa Webpack, ofrece ayuda para utilizar algunos de estos métodos de captura,

haciendo esta tarea mucho más fácil. En nuestro caso, utilizaremos el lenguaje de

descripción de hardware VHDL. Este punto es el primer paso del diseño, el cual describe, a

través de dicho lenguaje, el circuito o sistema a diseñar. Como se mencionó anteriormente,

el programa de trabajo Webpack ofrece ayuda para comenzar el diseño utilizando lenguaje

VHDL, pero al momento de describir la arquitectura del circuito, esto lo deja en manos del

Page 75: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 75 -

diseñador. También se puede describir en forma completa el circuito o sistema a diseñar en

un archivo ASCII o similar y guardarlo con extensión .VHD, ya que el programa también

permite adherir al proyecto de diseño, un archivo creado en forma externa. Pero esto se

aclarará más en los ejemplos que se presentarán posteriormente.

3.2.2 Simulación Funcional: Se realiza una simulación ideal del circuito descrito,

esto es, sin tiempos de retardos producidos por el hardware (compuertas

lógicas, buses, etc.). Esta simulación no es exacta, así que solo se utiliza para

verificar el correcto funcionamiento de la descripción realizada. Como se

aprecia en la figura 3.1, la simulación no es un paso obligatorio dentro del

proyecto de diseño, pero el no utilizarlo sería arriesgarse a que el circuito

implementado en la FPGA no funcione correctamente y es por eso que se

recomienda seguir todos los pasos de diseño mostrados en la figura 3.1 para

lograr un circuito confiable. Por lo estudiado en el capítulo anterior, se sabe

que para simular un circuito descrito en VHDL, es necesario crear un

Testbench, en el cual se especifican las señales de entrada al circuito a

simular. Para lograr esto, el programa Webpack también ofrece ayuda para

crear el Testbench, aunque al igual que en el caso anterior, se puede realizar

en forma externa al programa utilizando un editor de texto, se recomienda

realizarlo utilizando el programa Webpack por su facilidad.

3.2.3 Síntesis e Implementación: En el proceso de Síntesis se verifica la sintaxis

del diseño y se lleva la descripción en VHDL a un Netlist (nivel de

compuerta). Por otro lado, en el proceso de Implementación se lleva la

descripción del circuito en nivel de compuerta a un circuito compuesto por los

elementos de la FPGA (CLB´s, IOB´s, etc). Para finalmente, generar un

archivo que configurará la FPGA. El proceso de Implementación se subdivide

en 5 pasos.

Page 76: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 76 -

3.2.3.1 Mapeado (Mapping): En este punto, se descomponen los símbolos

lógicos que conforman el circuito diseñado, en los elementos físicos

que componen la FPGA (CLB´s, IOB´s, etc.).

3.2.3.2 Emplazamiento (Placement): Luego de descomponer el diseño

descrito, en un conjunto de CLB´s, IOB´s y otros, corresponde ubicar

estos elementos en la FPGA. Esto se realiza en la etapa de

Emplazamiento o Placement, siguiendo criterios de proximidad para

reducir los tiempos de retardo dentro de la FPGA.

3.2.3.3 Ruteo (Routing): En esta etapa se realiza la interconexión de los

elementos internos de la FPGA (CLB´s, IOB´s. etc.).

3.2.3.4 Cálculo de Retardos: Aquí se realiza una estimación de los tiempos

de retardo en función de las compuertas lógicas utilizadas y sus

interconexiones, para realizar simulaciones más precisas.

3.2.3.5 Configuración: Finalmente, es en esta etapa donde se genera el

archivo que se enviará a la FPGA para configurarla según el diseño

creado.

Estas cinco etapas son realizadas por los programas de trabajo, en este caso

el Webpack, el cual entrega reportes indicando errores, precauciones y/o el éxito en el

proceso. También entrega un reporte de los tiempos de retardos, tanto en compuertas

lógicas como en los buses de interconexión; con estos datos calcula la frecuencia máxima a

la que puede operar el circuito diseñado.

3.2.4 Simulación con Retardos: Esta simulación, a diferencia de la anterior,

considera los retardos producidos por los tiempos que toman las compuertas

lógicas y por los retardos producidos por las interconexiones de los CLB´s,

IOB´s y otros, por lo que esta simulación es más precisa. Es utilizada para

Page 77: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 77 -

verificar que el circuito diseñado funcione correctamente a la velocidad

requerida.

3.2.5 Programación: En esta etapa se descarga en la FPGA, el archivo que

contiene la información necesaria para programarla. Para realizar esta tarea, la

empresa Xilinx ofrece el programa XTOOLS, el cual, además de incluir un

programa para comunicar un computador con la tarjeta XSA-50, permite

utilizar otro programa que maneja las salidas del puerto serie, lo que permite

ingresar señales en la tarjeta y verificar de esta forma su funcionamiento.

3.2.6 Depuración: Se verifica el funcionamiento del circuito implementado en la

FPGA y en el caso de existir errores, detectar las causas y corregirlas.

2.3 Ejemplo de diseño.

Para poder realizar un diseño en forma real, se utilizará a modo de ejemplo la FPGA

XC2S50 de XILINX que viene incluida en la tarjeta de entrenamiento XSA-50 de XESS

CORP. Dicha tarjeta trabaja con los programas: ISE-WEBPACK de la empresa XILINX y

el programa simulador de VHDL, MODELSIM de la empresa MODEL TECHNOLOGY.

En el Anexo B se puede encontrar información sobre la tarjeta XSA-50.

En este punto se desarrollará en forma completa el diseño de un multiplexor, desde su

descripción en VHDL hasta lograr descargar el diseño en la FPGA. Se ha decidido realizar

Page 78: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 78 -

el diseño de un circuito simple para asegurar el buen entendimiento del proceso de diseño.

En el caso de requerir ejemplos más elaborados, en el Anexo A se encuentran diseños de

mayor complejidad.

3.3.1 Multiplexor

El ejemplo del multiplexor es clásico en el diseño de circuitos mediante

FPGA. Este circuito es muy fácil de describirlo en VHDL. Cabe destacar que como

se presentó en el capítulo anterior, un multiplexor tiene más de una forma de

describirse utilizando VHDL; esto depende del nivel de abstracción que se desee

utilizar y en este caso se utilizará una descripción RTL.

Page 79: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 79 -

Se comienza abriendo el "Project Navigator" del programa ISE-WEBPACK,

luego de realizar este paso, se abrirá la ventana mostrada en la figura 3.2.

Figura 3.2

Esta ventana se divide en 4 partes: la primera, que dice “Sources in Project” muestra

todos los diseños creados dentro del proyecto; la segunda, “Processes for Current Source”

muestra los procesos que se pueden realizar sobre la fuente (diseño descrito), seleccionada

en la primera ventana. La tercera ventana muestra continuamente los procesos que está

realizando el programa y también muestra los errores, en caso de existir, durante un proceso

e indica de la razón del error. La cuarta ventana es donde se editan las fuentes y reportes

Page 80: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 80 -

que entrega el programa al realizar procesos como el de síntesis; la forma de editarlos es

haciendo doble click sobre la fuente en la primera ventana.

Para comenzar se selecciona el menú File → New Project. Al realizar esto, se abrirá

una ventana, la cual se muestra en la figura 3.3.

Figura 3.3

Esta ventana es muy importante, porque el programa pregunta que tipo de FPGA

utilizará el proyecto de diseño. En este caso la FPGA utilizada es la XC2S50 y los otros

datos que se aprecian en la figura 3.3 corresponden a esta FPGA en específico. Luego de

realizar esto y colocar el nombre del proyecto se presiona OK y el proyecto llamado

“multiplexor” aparecerá como creado. La ventana visualizada se muestra en la figura 3.4.

Page 81: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 81 -

Figura 3.4

Ahora se está en condiciones de empezar a describir el circuito, que en este caso es

el multiplexor mostrado en la figura 3.5, el cual consta de dos señales de entrada más una

de selección y una salida.

Figura 3.5

Page 82: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 82 -

Para comenzar a describir el circuito se hace un click con el botón izquierdo del

mouse sobre XC2S50-6tq144 –XST VHDL, para luego sobre el mismo ícono hacer un

clíck con el botón derecho del mouse, en donde se selecciona “new source”, ahí aparecerá

la ventana mostrada en la figura 3.6.

Figura 3.6

Aquí se presentan varias formas de describir el circuito, pero como este primer

ejemplo es simple se realizará utilizando solo lenguaje VHDL sin utilizar otras

herramientas. Para esto se selecciona VHDL Module y se le asigna un nombre al módulo de

diseño; en este caso se le llamó multiplexor (no necesariamente se llama igual que el

proyecto) y luego se presiona Siguiente. Entonces aparecerá una ventana que ayudará a

comenzar con la descripción en VHDL (figura 3.7).

Page 83: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 83 -

Figura 3.7

En la figura 3.7 se aprecia que el programa pide la información de la “Entidad” del

diseño que se está creando, también pregunta nivel de abstracción que será el utilizado para

describir la arquitectura y por otro lado pide especificar los puertos de entrada y salida.

Luego de realizar esta tarea se presiona Siguiente y aparecerá una ventana que indicará los

datos ingresados (figura 3.8).

Page 84: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 84 -

Figura 3.8

Luego se presiona Finalizar para terminar con esta etapa de la descripción. Como

se dijo anteriormente, el programa Webpack ofrece ayuda para escribir la entidad, pero no

así la descripción de la arquitectura ni el resto de los cuerpos del diseño, ya que esto queda

en manos del diseñador. Luego de esto, se presenta la ventana mostrada en la figura 3.9.

Page 85: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 85 -

Figura 3.9

Se puede apreciar que el cuarto cuadro ahora presenta la descripción en VHDL del

diseño. El programa Webpack dejó en blanco solo la parte de la arquitectura, la cual se

procede a completar en este momento. Para completar la descripción hay que agregar la

arquitectura mostrada en la figura 3.10.

Figura 3.10

architecture RTL of multiplexor is signal ax,bx,noselec: std_logic; begin noselec <= NOT selec; ax <= a AND noselec; bx <= b AND selec;

lid < OR b

Page 86: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 86 -

En la figura 3.11 se muestra la descripción final del multiplexor con un nivel de

abstracción RTL es la siguiente.

Figura 3.11

En este sencillo ejemplo se puede apreciar algunas de las ventajas de trabajar con el

programa Webpack. Dentro del programa se pueden ver varios colores, el color verde avisa

que esas líneas son solo comentarios y no son parte de la descripción; por otro lado, el color

azul indica que son comandos de VHDL, etc., lo que sirve para detectar fácilmente errores

de sintaxis. Cada vez que se modifique alguna descripción es necesario volver a guardarla.

Ahora se puede comenzar a trabajar sobre el circuito descrito; para ello es

importante tener claro la segunda ventana del Project Navigator (figura 3.12).

Page 87: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 87 -

Figura 3.12

El primer proceso es una herramienta que facilita el diseño, ya que permite crear un

símbolo del diseño realizado, para poder utilizarlo en otro diseño en forma de bloque; éste

se utilizará en un ejemplo posterior. El segundo proceso es para trabajar directamente sobre

la FPGA, por ejemplo seleccionar físicamente un IOB (Input Output Block) a utilizar. Los

tres procesos restantes están relacionados directamente con la figura 3.1. El proceso

Synthesize se encarga de llevar la descripción en VHDL a un circuito de compuertas

lógicas (nivel de compuerta). El proceso de Synthesize tiene varios subprocesos; uno de

ellos permite verificar la sintaxis del diseño creado. Para ejecutar este proceso basta con

hacer doble click sobre “Check Syntax”. En caso de estar correcto mostrará una indicación

(figura 3.13), en caso contrario indicará que existe algún error (figura 3.14).

Figura 3.13

Page 88: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 88 -

Figura 3.14

También dentro del proceso Synthesize se encuentra el subproceso llamado

“Analyze Hierarchy”, el cual se encarga de analizar la jerarquía del circuito descrito. Por

otro lado, existe un subproceso llamado “View RTL Schematic”, el cual lo único que hace

es mostrar el circuito entregado por el proceso completo de Synthesize. El “View Synthesis

Report”, es un archivo que almacena los resultados de la síntesis, tiempos, datos del

circuito etc.

Siguiendo con los procesos, el Implement Design es el encargado de tomar la

descripción del circuito a nivel RTL entregada por el proceso de síntesis, para bajarla al

nivel de las compuertas lógicas que contiene la FPGA; es decir, toma la descripción en

nivel RTL y lo lleva al nivel de la FPGA. En este proceso hay más subprocesos que en caso

anterior, por lo que no se podrá explicar cada uno y solo se verán los más importantes.

Básicamente los tres subprogramas que existen dentro del proceso Implement

Design, realizan la tarea del Mapeado (Mapping), el emplazamiento (Placement) y el Ruteo

(Routing); estos pasos fueron explicados anteriormente por lo que no es necesario volver a

hacerlo. En este caso, el programa Webpack nuevamente entrega reportes, indicando la

cantidad de compuertas utilizadas en la FPGA, los tiempos de retardos, etc. En el caso de

existir un error en el proceso o en algún subproceso se indicará de la misma forma

presentada anteriormente. No se mencionó antes el que se pueden ejecutar uno a uno los

subprocesos o todos a la vez ejecutando directamente el proceso. Hay que recordar que en

la tercera ventana se indicará por qué ocurrió el error.

Page 89: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 89 -

Finalmente el proceso de “Generate Programming File” crea el bitstream que

programará la FPGA y luego se descarga a la tarjeta XSA-50.

Luego de esta breve introducción a los procesos del programa Webpack, se continua

realizando el proceso completo de Synthesize para el multiplexor. Este proceso se

completa de manera satisfactoria; haciendo doble click en “View RTL Schematic” se

abrirá la ventana mostrada en la figura 3.15.

Figura 3.15

En la figura 3.15 se muestra el diseño creado en forma de bloque. Para ver su

interior basta con hacer doble click sobre el diseño simbólico presentado; luego de repetir

este procedimiento se llega al circuito en nivel RTL obtenido por el Webpack. El circuito

obtenido se muestra en la figura 3.16.

Page 90: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 90 -

Figura 3.16

Ahora se puede realizar una simulación funcional del diseño; para realizar esto es

necesario crear el Testbench. Primero se hace un click con el botón izquierdo del mouse

sobre XC2S50-6tq144 –XST VHDL para asegurarnos que será creado ahí. Luego haciendo

un click ahí mismo con el botón derecho del mouse se selecciona “New Source”. En este

caso no seleccionaremos “VHDL module”, sino que se seleccionará “VHDL TestBench”

como se puede apreciar en la figura 3.17.

Page 91: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 91 -

Figura 3.17

Generalmente el nombre del Testbench es como se presenta aquí, comenzando con

“TB_“ y luego el nombre del módulo VHDL a simular. Después de presionar Siguiente, el

programa pregunta a qué módulo se asociará el Testbech; en otras palabras, pregunta cuál

será el módulo a simular. En este caso sólo existe uno y es el multiplexor. Se selecciona y

se presiona Siguiente; luego abrirá una ventana indicando algunos datos, como el nombre

del Testbench y a qué modulo está asociado. Después de finalizar, el Project Navigator se

verá como lo muestra la figura 3.18.

Page 92: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 92 -

Figura 3.18

En la figura 3.18 se pueden apreciar varias cosas; primero que todo, se creó una

nueva fuente (source) en la ventana “Source in Project” y ésta se ubicó debajo del módulo

al que se asoció. Segundo, en la ventana de edición se abrió el Testbench para completarlo

con los estímulos que se desea que entren al circuito descrito, o sea, al multiplexor. Para

este ejemplo el Testbench final utilizado se muestra en la figura 3.19.

Page 93: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 93 -

Figura 3.19

LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; ENTITY testbench IS END testbench; ARCHITECTURE behaviour OF testbench IS COMPONENT multiplexor PORT( a : IN std_logic; b : IN std_logic; selec : IN std_logic; salida : OUT std_logic ); END COMPONENT; SIGNAL a : std_logic; SIGNAL b : std_logic; SIGNAL selec : std_logic; SIGNAL salida : std_logic; BEGIN uut: multiplexor PORT MAP( a => a, b => b, selec => selec, salida => salida );

Page 94: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 94 -

Figura 3.19 (continuación)

Para simular el diseño del multiplexor, primero hay que hacer click con el botón

izquierdo del mouse sobre tb_multiplexor que se encuentra en la ventana correspondiente

a las fuentes (sources); luego aparecerá en la ventana de los procesos, uno solo, el cual se

llama “ModelSim Simulator”. Este proceso tiene cuatro subprocesos en su interior (figura

3.20). En este caso se utilizará el “Simulate Behavioral VHDL Model”, que vendría siendo

la simulación funcional; haciendo click con el botón derecho del mouse sobre este

subproceso, se selecciona “Properties” (propiedades), y ahí se especifica el tiempo de

simulación, que en este caso es 1000 ns.

-- *** Test Bench - User Defined Section ***

tb : PROCESS

BEGIN

a <= 0 after 110 ns, 1 after 160 ns, 1 after 210 ns, 0 after 260 ns,

1 after 310 ns, 1 after 360 ns, 1 after 410 ns, 1 after 460 ns, 1 after

510 ns,

0 after 560 ns, 0 after 610 ns, 0 after 660 ns, 0 after 710 ns, 0 after

760 ns;

b <= 1 after 110 ns, 1 after 160 ns, 0 after 210 ns, 0 after 260 ns,

0 after 310 ns, 0 after 360 ns, 0 after 410 ns, 0 after 460 ns, 0 after

510

Page 95: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 95 -

Figura 3.20

Luego de ingresar ese dato, se hace doble click sobre “Simulate Behavioral VHDL

Model”. La figura 3.21 muestra el resultado de la simulación.

Figura 3.21

Page 96: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 96 -

De la segunda descripción RTL realizada en el capitulo anterior, podemos verificar

en forma rápida el funcionamiento. En esa descripción se dijo que salida<=a WHEN

selec=´0´ ELSE b, y del resultado de la simulación se puede observar que cuando selec es

cero, efectivamente la salida es “a”, mientras que cuando selec es uno, la salida es “b”; por

lo tanto, el diseño del multiplexor funciona correctamente.

Luego de verificar el funcionamiento del diseño, se ejecuta el proceso “Implement

Design”. Si se ejecuta en forma correcta, este proceso está en condiciones de mostrar

cuantos elementos electrónicos físicos utiliza el diseño en la FPGA. Para esto ejecutaremos

Implement Design → Place & Route → View/Edit Placed Design (FloorPlanner). La

ventana que se abrirá se muestra en la figura 3.22.

Figura 3.22

Page 97: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 97 -

Se puede apreciar al costado izquierdo de la figura 3.22, un pequeño recuadro en

verde; ese es físicamente el espacio que está utilizando el diseño creado en la FPGA. Ahora

se realizará un zoom al área de interés y además en Edit→Preferences, se seleccionará

mostrar todos los componentes electrónicos que componen la FPGA. La ventana obtenida

se muestra en la figura 3.23.

Figura 3.23

En la figura 3.23 se puede apreciar el recuadro donde se selecciona el mostrar todos

los elementos de la FPGA; por otro lado, se muestra el bloque multiplexor que está

albergando el diseño creado. Además se destacan las conexiones entre salida, entradas y

componentes utilizados. Además, como el nombre de este proceso lo dice, también es

editor, lo que implica que en la ventana “Editable Floorplan”, se puede tomar uno por uno

los componentes electrónicos del diseño y colocarlos en la ubicación que se desee dentro

de la FPGA.

Page 98: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 98 -

Después de haber realizado todo esto, se puede crear el bitstream haciendo doble

click sobre el subproceso “Programming File Generation Report”. Esto creará un bitstream

con el mismo nombre del proyecto, pero con extensión .bit.

Para programar la FPGA es necesario configurar la tarjeta de entrenamiento en

modo “programación”, y luego conectarla al computador. Las instrucciones de estos pasos

están en el manual de la tarjeta. Después de realizar esto, se ejecuta el programa Gxsload

del Xtools; después de ejecutarlo se abrirá la ventana mostrada en la figura 3.24.

Figura 3.24

Para ingresar el archivo multiplexor.bit (para este ejemplo), es necesario poner en

paralelo una ventana que contenga el archivo, para poder arrastrarlo al cuadro

correspondiente FPGA/CPLD, como lo muestra la figura 3.25.

Page 99: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 99 -

Figura 3.25

Después se selecciona el modelo de tarjeta de entrenamiento que recibirá el archivo

y se especifica el puerto de comunicación. Luego de presiona Load para transferir el

archivo, entonces la FPGA será programada y estará en condiciones de comportarse como

el circuito diseñado.

Para verificar el funcionamiento del circuito diseñado en la FPGA, lo primero es

conocer los pines de entrada y salida del diseño, estos se pueden ver ejecutando Implement

Design→Place & Route→Pad Report. Al ejecutar el Pad Report se abrirá una ventana que

indicará los pines asociados a las señales de entrada y salida. Luego de conocer los pines

correspondientes a cada señal se ingresan las señales a procesar, éstas pueden provenir de

un Generador de Señales y a través de un Osciloscopio adecuado se puede verificar la

respuesta del circuito.

Page 100: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 100 -

COMENTARIOS Y CONCLUSIONES

Cuando se realiza el diseño de circuitos digitales, parte del proceso consiste en

implementar el sistema. En esta etapa, en que se lleva el modelo teórico a la práctica, surge

la necesidad de adaptarse a la realidad física, que no siempre se comporta como se espera;

entonces, es necesario revisar donde ocurrió la falla y modificar el circuito para obtener el

resultado correcto. Por otro lado, se puede dar que las condiciones requeridas inicialmente

hayan cambiando o bien se desee mejorar la respuesta del sistema. Estos casos son parte

implícita en el diseño de circuitos. Bajo estas condiciones se hace necesario realizar un

rediseño del sistema. Esta tarea de implementación y rediseño se complica

proporcionalmente al número de componentes que se requiera utilizar. Este problema se

presenta desde estudiantes que requieran implementar un diseño relativamente sencillo,

hasta diseñadores de nivel industrial.

El desarrollo de la tecnología ha venido a solucionar ese problema creando las

herramientas necesarias tanto en la parte teórica como en la práctica. Se han desarrollado

Circuitos Integrados que pueden ser programados y reprogramados dependiendo de las

necesidades del usuario. La tecnología FPGA es capaz de organizar los componentes

básicos que se encuentran al interior del circuito integrado y de esta forma comportarse

como el circuito solicitado por el usuario. Si es requerido, se puede realizar modificaciones

al sistema sin necesidad de cambiar físicamente los componentes.

Para el diseño teórico se encuentran en la actualidad, programas computacionales

donde es posible trabajar mediante diseño Top-Down, es decir, partir describiendo un

sistema desde un nivel superior, y mediante un análisis del programa, recibir la estructura

de componentes básicos requeridos para su implementación. La descripción del sistema se

realiza utilizando un lenguaje de descripción de hardware HDL. Además, mediante

software es posible optimizar la forma de organizar los componentes de una FPGA y llevar

el diseño directamente a la configuración del sistema.

Page 101: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 101 -

Para cumplir con el objetivo de este Seminario se ha dado a conocer el método de

diseño mediante la combinación de estas herramientas. Se han descrito las características

que hacen posible que un circuito integrado FPGA sea reconfigurable. Se ha presentado el

lenguaje de descripción de hardware VHDL, visto desde sus diferentes niveles de

abstracción hasta sus instrucciones más importantes. Y, finalmente, se ha realizado un

ejemplo completo de diseño de un circuito digital presentando detalladamente el uso del

software empleado. Estas herramientas están a disposición del Departamento y es de

esperar que este documento sirva de guía y motivación para quienes deseen utilizar esta

poderosa y actual técnica de diseño de circuitos digitales.

En relación con este tema de Seminario, queda como trabajo futuro, profundizar en

la técnica de diseño presentada; ya que tanto la tecnología FPGA como el lenguaje VHDL

son temas que poseen características y ventajas que requieren ser analizadas con más

detalle.

Además, con este Seminario, se entregó la base para comenzar a diseñar e

implementar circuitos de mayor complejidad. Es importante resaltar el enorme potencial

del método de diseño, ya que es posible trabajar en temas tan variados como:

procesamiento digital de señales, controladores discretos, visión artificial, robótica,

comunicaciones digitales; y en general, en todas las áreas que se utilice electrónica digital.

Por último, se espera que se realice un estudio del hardware y funcionamiento de la

tarjeta de entrenamiento XSA-50, ya que este dispositivo representa en forma real la teoría

presentada en este Seminario; y en un sentido más práctico, se espera su correcto uso

obteniendo el máximo provecho de sus potencialidades.

Page 102: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 102 -

BIBLIOGRAFÍA

[1] John Wakerly, “Digital Design: Principles and Practices”, Editorial Prentice Hall,

3ra edición, año 2000.

[2] Fernando Pardo, “VHDL: Lenguaje Para Síntesis y Modelado de Circuitos”,

Coedición RAMA-Alfaomega, año 2000.

[3] Nick Mehta, “Programmable Logic Design Quick Start Hand Book”, 2da

edición, año 2002.

[4] David Vanden Bout, “Pragmatic Logic Design With Xilinx Foundation 2.1i”, Xess

Corp., año 2001. (Disponible en la página www.xess.com/pragmatic-2_1.html)

[5] Manual de usuario de la tarjeta “XSA-50” de la empresa Xess Corp.

(Disponible en la página www.xess.com/prod027.php3)

[6] Manual de usuario del programa “Ise-Webpack” de la empresa Xess Corp.

(Disponible en la página http://www.xess.com/ho03000.html#Tutorials)

[7] Manual de usuario del programa “ModelSim” de la empresa Model Technology.

[8] Búsqueda en la WEB:

www.vhdl.org

www.ieee.org

www.xilinx.com

Page 103: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 103 -

www.xess.com

Page 104: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 104 -

ANEXOS

Con el fin de entregar una visión más clara respecto a la forma de diseño de

circuitos empleando el lenguaje VHDL y la tecnología FPGA, se entrega en forma

complementaria, dos documentos anexos.

El anexo A, presenta tres ejemplos de diseño de circuitos mediante lenguaje VHDL

y algunas herramientas del programa Webpack. El primero es un decodificador BCD a

display de 7 segmentos, el segundo es un contador binario con salida Hexadecimal a

display de 7 segmentos, y el tercero es un sumador de 16 bits. Aunque se realizará el

proceso completo de diseño, estos ejemplos estarán vistos en menor detalle que el ejemplo

del multiplexor presentado en la memoria.

El anexo B, presenta las principales características de la tarjeta de entrenamiento

XSA-50 de la empresa Xess Corp. Esta tarjeta contiene un circuito integrado FPGA

XC2S50 y está diseñada para ser usada como tarjeta de entrenamiento, utilizando el

programa Webpack de la empresa Xilinx y el programa simulador ModelSim de la empresa

Model Technology.

Page 105: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 105 -

ANEXO A: EJEMPLOS

Decodificador BCD a Display de 7 Segmentos.

La entrada al circuito es de 4 bits y la salida debe ser a través del display de 7

segmentos disponible en la tarjeta XSA-50; las 16 combinaciones posibles corresponden a

los dígitos hexadecimal como muestra la tabla A.1.

Page 106: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 106 -

Tabla A.1

Entrada 4

Bits

Display

0000 0

0001 1

0010 2

0011 3

0100 4

0101 5

0110 6

0111 7

1000 8

1001 9

1010 A

1011 B

1100 C

1101 D

1110 E

1111 F

El diagrama en bloques del diseño se muestra en la figura A.1.

Page 107: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 107 -

Figura A.1

El proyecto se comienza de la misma forma que en el ejemplo del multiplexor. En la

figura A.2 se muestra la descripción del decodificador en VHDL.

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity leddcd is

Port ( d : in std_logic_vector(3 downto 0);

s : out std_logic_vector(6 downto 0));

end leddcd;

architecture Behaviour of leddcd is

begin

s <= "1110111" when d="0000" else

"0010010" when d="0001" else

"1011101" when d="0010" else

"1011011" when d="0011" else

"0111010" when d="0100" else

"1101011" when d="0101" else

"1101111" when d="0110" else

"1010010" when d="0111" else

Page 108: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 108 -

Figura A.2

La descripción es muy simple; se define la salida dependiendo de la entrada,

realizando las 16 combinaciones más una adicional para el caso en que ninguna de las

anteriores se cumpla. El proceso de diseño es idéntico al ejemplo anterior salvo por la

definición de la entrada y la salida, la cual se muestra en la figura A.3.

Figura A.3

Lo que sigue del diseño es igual al ya realizado anteriormente y los pasos a seguir

son los de síntesis y luego la implementación. El programa siempre tratará de optimizar el

diseño al momento de bajarlo al nivel de la FPGA, tratando de minimizar tiempos de

retardos producidos por las conexiones entre compuertas lógicas y entre los bloques de

entrada/salida (IOB). El problema es que el display de la tarjeta de entrenamiento está en

pines específicos de la FPGA, por lo que será necesario elegir manualmente las salidas a

utilizar.

Page 109: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 109 -

El fabricante de la Tarjeta XSA-50 entrega la información de los pines de la FPGA

que están conectados al display de 7 segmentos, los que se muestran en la tabla A.2.

Tabla A.2

Display Pines FPGA

S0 P67

S1 P39

S2 P62

S3 P60

S4 P46

S5 P57

S6 P49

También en el caso de las entradas al decodificador, se cambiarán los pines

asignados por el programa, por unos pines que van al puerto paralelo del computador; la

idea es poder enviar desde el computador la entrada al decodificador. La entrada al

decodificador se modificará como se muestra en la tabla A.3.

Tabla A.3

Entrada

Decodificador Pines FPGA

d0 P50

d1 P48

d2 P42

d3 P47

Page 110: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 110 -

Como se mencionó anteriormente, el programa automáticamente le asignó otros

pines de entrada y de salida al decodificador. Para poder modificarlos es necesario crear

una nueva fuente, que en este caso será “Implementation Constraints File”; luego

preguntará al módulo que está asociado. Este módulo es el “leddcd”; después de realizada

la creación de la fuente, se ejecuta User Constraints → Create Timing Constraints y

entonces aparecerá una ventana sobre la etiqueta “Global”. Se selecciona “Ports” y ahí se

visualizará la ventana que se muestra en la figura A.4.

Figura A.4

Page 111: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 111 -

Entonces aquí es donde se puede especificar que pin de la FPGA se quiere para un

puerto específico, para hacerlo solo hay que colocar el número del pin en la columna

“Location”, como se muestra en la figura A.5.

Figura A.5

Luego se guardan los cambios y se cierra esta ventana. Entonces hay que realizar

todos los procesos de nuevo debido al cambio realizado. El “Edit Constraints” confirmará

el cambio de los pines de la FPGA utilizados.

En la figura A.6 se muestra la ubicación física de las compuertas lógicas y bloques

de entrada/salida que utiliza este diseño en la FPGA.

Page 112: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 112 -

Figura A.6

Se puede apreciar con color verde dentro de la FPGA el lugar físico donde se

albergará el diseño creado y los pines que utilizará. También se puede realizar un zoom

sobre el área de interés (figura A.7).

Page 113: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 113 -

Figura A.7

Se pueden ver también las interconexiones entre los elementos destacados,

activando uno de estos componentes, como se muestra en las figuras A.8 y A.9.

Page 114: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 114 -

Figura A.8

Figura A.9

Page 115: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 115 -

Ahora, si se desea ser más específico, se puede pedir en las opciones mostrar los

Flip-Flop´s, los LUT´s, etc., como se muestra en la figura A.10.

Figura A.10

Ahora se realizará la simulación del decodificador; para esto se creará el Testbench

mostrado en la figura A.11.

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE ieee.numeric_std.ALL;

ENTITY testbench IS

END testbench;

ARCHITECTURE behavior OF testbench IS

COMPONENT leddcd

PORT(

d : IN std_logic_vector(3 downto 0);

s : OUT std_logic_vector(6 downto 0)

);

END COMPONENT;

SIGNAL d : std_logic_vector(3 downto 0);

SIGNAL s : std_logic_vector(6 downto 0);

Page 116: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 116 -

Figura A.11

Figura A.11 (continuación)

"1001" after 560 ns,

"1010" after 610 ns,

"1011" after 660 ns,

"1100" after 710 ns,

"1101" after 760 ns,

"1110" after 810 ns,

"1111" after 860 ns;

wait for 1000 ns;

end process;

Page 117: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 117 -

Los resultados de la simulación funcional se muestran en la figura A.12.

Figura A.12

Se puede observar que el circuito diseñado funciona correctamente.

Como el objetivo de este capitulo es explicar las características básicas del diseño

de circuitos utilizando el programa Webpack, no se realizará la simulación con retardos y la

velocidad a utilizar estará dentro de los límites entregados por los reportes de

Implementación. Solo para visualizar la cantidad de tiempo de retardo se mostrará en la

figura A.13 el resultado de ejecutar “Simulate Post-Place & Route VHDL Model”.

Page 118: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 118 -

Figura A.13

A simple vista se puede ver un retardo de aproximadamente 8.5 ns, además de

algunas transiciones.

Ahora que todo el diseño está funcionando correctamente, se puede crear el

bitstream como se indicó en el ejemplo del multiplexor. El bitstream creado tendrá el

nombre del proyecto con extensión .bit. Para poder descargarlo en la FPGA se debe colocar

la tarjeta de entrenamiento en modo programación; luego, teniendo conectada la tarjeta al

computador se ejecuta el programa Gxsload del Xtools, entonces se abrirá la ventana

mostrada en la figura A.14.

Page 119: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 119 -

Figura A.14

Luego la forma de seleccionar el bitstream a cargar en la tarjeta se realiza poniendo

al lado la carpeta con el archivo dentro, luego se arrastra el archivo .bit sobre el primer

espacio en blanco correspondiente a FPGA/CPLD, de la ventana del Gxsload como muestra

la figura A.15.

Figura A.15

Luego seleccionando la tarjeta que recibirá el diseño y el puerto por el cual se

transmitirá, se procede a cargar el archivo en la tarjeta. Entonces la FPGA estará

programada.

Page 120: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 120 -

La razón por la cual se cambiaron los pines de entrada del decodificador, fue porque

el programa Xtools permite a través del “Gxsport”, poner los unos y ceros que uno quiera

en el puerto; de esta forma se puede verificar el funcionamiento del decodificador diseñado

en forma simple.

Contador de 4 bits con salida hexadecimal en display de 7 segmentos.

Page 121: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 121 -

La idea de este ejemplo se explicará a través del diagrama en bloques del sistema

que se desea diseñar(figura A.16).

Figura A.16

Desde el decodificador hacia delante el diseño ya está realizado, así que no es

necesario volver a describirlo y solo hay que crear un nuevo proyecto, en el cual se adherirá

en forma de “VHDL Module” la descripción en VHDL del decodificador creado

anteriormente. Luego se creará el símbolo del decodificador, para poder utilizarlo en forma

de módulo. Para realizar esto se ejecuta Design Entry Utilities→Create Schematic Symbol.

Si el proceso es realizado correctamente, quedará disponible el decodificador para ser

utilizado.

Por otro lado el contador de 4 bits es necesario describirlo. Por lo tanto se creará

una nueva fuente para el contador, en donde la descripción en VHDL es la que se muestra

en la figura A.17.

Page 122: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 122 -

Figura A.17

Luego de verificar la sintaxis, se procede a crear el símbolo esquemático del

contador.

Cuando ya se tienen estos dos módulos VHDL creados en un solo proyecto, para

unificarlos en un solo diseño se creará una nueva fuente, pero en este caso se seleccionará

“Schematic” como lo muestra la figura A.18.

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity counter is Port ( clk : in std_logic; count : out std_logic_vector(3 downto 0)); end counter; architecture Behaviour of counter is signal cnt: std_logic_vector(27 downto 0); begin process(clk) begin if clk'event and clk='0' then cnt <= cnt + 1; end if; end process; count(3 downto 0) <= cnt(27 downto 24); end Behaviour;

Page 123: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 123 -

Figura A.18

Cuando ya ha sido creado aparecerá en la ventana de las fuentes (sources); haciendo

doble click sobre él, se abrirá la ventana mostrada en la figura A.19.

Page 124: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 124 -

Figura A.19

En el cuadro de Categorías (Categories), se puede observar el creado anteriormente;

ahí dentro están los símbolos del contador y del decodificador como lo muestra la ventana

Símbolos (Symbols). Para comenzar a trabajar, se tomará el contador y se arrastrará sobre

la superficie de trabajo; lo mismo se realizará con el decodificador. La ventana a visualizar

se muestra en la figura A.20.

Page 125: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 125 -

Figura A.20

Entonces, haciendo click en “Add Wire” como se muestra en la figura A.20, se

puede comenzar a unir los elementos. Hay que tener en cuenta que este programa sólo une

elementos cuyos buses son del mismo tamaño o de lo contrario arrojará errores. En este

caso, al unir el contador con el decodificador no existe este problema. Como la salida del

decodificador tiene 7 bits de longitud, se conectarán a ellas 7 buffers para mantener la

salida almacenada, mientras que en la entrada también se conectará un buffer. Estos buffers

se extraen de la categoría IO; es necesario indicar cual de los 7 bits es el que pasa por cada

uno de los buffers. Esta definición se realiza haciendo doble click sobre el conductor a

definir, como se muestra en la figura A.21.

Page 126: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 126 -

Figura A.21

Esta es la definición por defecto, ahora se cambiará a la definición correcta como lo

indica la figura A.22.

Figura A.22

Page 127: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 127 -

En la ventana mostrada en la figura A.22 se indica que el conductor seleccionado

representa el bit cero de la salida S; este procedimiento hay que repetirlo en los 11

conductores restantes, como lo muestra en la figura A.23.

Figura A.23

Se puede observar que también se colocaron 12 taps para sacar los conductores del

bus. En los extremos es necesario conectar los marcadores de entrada/ salida. Éstos también

hay que definirlos.

Finalmente el circuito completo es como se muestra en la figura A.24.

Page 128: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 128 -

Figura A.24

Por otro lado, el área física ocupada finalmente en la FPGA se muestra en la figura

A.25.

Page 129: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 129 -

Page 130: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 130 -

Figura A.25

Si al verificar las conexiones todo está correcto, se guarda y se cierra la ventana; de

ahí en adelante el diseño creado esquemáticamente se maneja igual que los vistos

anteriormente. Los resultados obtenidos en la simulación funcional se muestran en la figura

A.26.

Figura A.26

Page 131: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 131 -

Se puede ver que el comportamiento del circuito completo es el que se deseaba, con

lo que se comprueba que el circuito diseñado está correctamente descrito en VHDL.

Si se deseara probar este diseño en la tarjeta de entrenamiento, es necesario asignar

a la entrada del contador el pin P88, el cual contiene la señal de un reloj interno de la

tarjeta.

Sumador de 16 Bits.

La forma de construir el sumador de 16 bits se muestra en forma de diagrama de

bloques en la figura A.27

Page 132: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 132 -

Figura A.27

Aunque es posible describir directamente el sumador de 16 bits, se realizará

partiendo del sumador más simple; el de dos bits más carry, por razones pedagógicas. El

circuito electrónico de este sumador se muestra en la figura A.28.

Figura A.28

Este ejemplo se realizará utilizando una combinación de métodos de diseño, para

mostrar que se puede utilizar cada uno por separado o ambos métodos al momento de

diseñar un circuito. Se comenzará describiendo en un módulo VHDL el sumador total, de la

Page 133: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 133 -

figura A.28; luego se creará otro módulo VHDL, en donde solo utilizando lenguaje VHDL

se llamará al sumador total, como componente, dos veces para obtener un sumador de 4

bits; finalmente se creará otra fuente, pero esta vez esquemática, en donde se tomarán 4

sumadores de 4 bits en forma de símbolo y se interconectarán entre ellos. Después de

realizar esto, se ejecutarán los procesos mostrando las ventanas más importantes y también

se mostrará el resultado de la simulación.

Se comenzará creando un nuevo proyecto y luego se creará el primer módulo

VHDL, describiendo el sumador total, cuya descripción en lenguaje VHDL, para un nivel

de descripción RTL se muestra en la figura A.29.

library ieee;

use ieee.std_logic_1164.all;

entity sc is

port (

a, b, cin : in std_logic;

cout, s : out std_logic);

end sc;

architecture RTL of sc is

signal aux, p, g : std_logic;

begin

p <= a xor b;

Page 134: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 134 -

Figura A.29

A continuación se crea otro módulo VHDL para el sumador de 4 bits, este módulo

llama en forma de componente al sumador completo. En la figura A.30 se muestra el

módulo VHDL del sumador de 4 bits.

library ieee;

use ieee.std_logic_1164.all;

entity sumador4 is

port (

a, b : in std_logic_vector(3 downto 0);

cin : in std_logic;

s : out std_logic_vector(3 downto 0);

cout : out std_logic );

end sumador4;

architecture serie_estructural of sumador4 is

component sc

port (

a, b, cin : in std_logic;

cout, s : out std_logic);

end component;

signal c : std_logic_vector(4 downto 0);

Page 135: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 135 -

Figura A.30

Ahora se ejecuta el proceso de síntesis para el sumador de 4 bits, luego se crea el

símbolo de este diseño. Realizado esto, se crea una nueva fuente, pero esta vez

esquemática; cuando ya ha sido creada, se ingresa haciendo doble click sobre ella para

entrar a diseñar el sumador de 16 bits. Estando dentro, se colocan 4 símbolos del sumador

de 4 bits y se conectan de la forma que muestra la figura A.31.

Page 136: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 136 -

Figura A.31

El símbolo del sumador de 4 bits se muestra en la figura A.32.

Page 137: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 137 -

Figura A.32

En el esquema de la figura A.31 también se ocuparon tabs para especificar los bits

que entran y salen de cada sumador, los correspondientes marcadores de entrada/salida. Al

verificar las conexiones el programa no indica errores por lo que se procede a guardar el

esquema y luego se cierra esa ventana.

Al volver al Project Navigator se ejecutan los procesos sobre la fuente esquemática

del sumador de 16 bits. Lo que se muestra en la ventana de la figura A.33 es el espacio

físico que ocupa el diseño en la FPGA.

Figura A.33

Si se seleccionan todos los elementos en verde, se apreciarán todas sus

interconexiones, como lo muestra la figura A.34.

Page 138: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 138 -

Figura A.34

A continuación se simulará el sumador, pero antes es necesario crear el Testbench.

El Testbench utilizado en este caso se muestra en la figura A.35.

Page 139: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 139 -

Figura A.35

LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; LIBRARY UNISIM; USE UNISIM.Vcomponents.ALL; ENTITY testbench IS END testbench; ARCHITECTURE behavioral OF testbench IS COMPONENT sumador_16_bits_bloque PORT( A : IN STD_LOGIC_VECTOR (15 DOWNTO 0); B : IN STD_LOGIC_VECTOR (15 DOWNTO 0); cin : IN STD_LOGIC; S : OUT STD_LOGIC_VECTOR (15 DOWNTO 0); cout : OUT STD_LOGIC); END COMPONENT; SIGNAL A : STD_LOGIC_VECTOR (15 DOWNTO 0); SIGNAL B : STD_LOGIC_VECTOR (15 DOWNTO 0); SIGNAL cin : STD_LOGIC; SIGNAL S : STD_LOGIC_VECTOR (15 DOWNTO 0); SIGNAL cout : STD_LOGIC; BEGIN UUT: sumador_16_bits_bloque PORT MAP( A => A, B => B, cin => cin, S => S, cout => cout );

-- *** Test Bench - User Defined Section *** tb : PROCESS BEGIN cin <= '0', '1' after 400 ns; a <= "0000000000000000", "1010101010101010" after 100 ns,

Page 140: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 140 -

Figura A.35 (continuación)

Entonces ahora se está en condiciones realizar la simulación funcional del sumador

de 16 bits. Los resultados de la simulación se muestran en la figura A.36.

Page 141: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 141 -

Figura A.36

En la figura A.37 se muestra el resultado de la simulación con retardos para

compararla con la obtenida en el ejemplo A.1.

Figura A.37

Page 142: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 142 -

Lo lógico es que el retardo fuera mayor por el hecho de haber más componentes

electrónicos y más conexiones (rutas) dentro de la FPGA y eso queda demostrado con la

simulación, en donde se aprecia un retardo de aproximadamente 25 ns.

Al terminar este capítulo el lector debiera estar en condiciones de crear un proyecto

de diseño en el programa Webpack de Xilinx Corp., y en general en cualquier programa de

diseño ya que son muy similares. Los ejemplos mostrados fueron de complejidad

relativamente baja, con el fin de mostrar las ventajas de trabajar con esta tecnología. Queda

abierta la invitación para profundizar más sobre las herramientas de diseño, ya que son muy

importantes hoy en día en el diseño de circuitos digitales.

Page 143: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 143 -

ANEXO B: CARACTERÍSTICAS DE LA

TARJETA DE

Page 144: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 144 -

ENTRENAMIENTO XSA-50 DE XESS

CORP.

En el presente documento se entrega una descripción de las principales

características de la Tarjeta digital programable XSA-50. Si se desea conocer más detalles,

se puede recurrir al manual de la tarjeta, disponible en Internet.

Esta Tarjeta contiene como elementos principales un circuito integrado FPGA y un

Circuito integrado CPLD. Está diseñada para poder facilitar el trabajo de programación y

prueba con un circuito integrado FPGA, dejando a disposición una forma de conexión

rápida a las entradas y salidas.

En la Figura B.1 se observa su aspecto físico, señalando sus principales

componentes.

Page 145: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 145 -

Figura B.1

A continuación se entrega un listado de sus componentes:

• Circuito Integrado FPGA XC2S50 , Xilinx.

• Circuito Integrado CPLD XC9572XL , Xilinx.

• SDRAM 8-Mbyte.

• RAM Flash 128-Kbyte.

• Oscilador Programable 100 MHz.

• Conector de Puerto Paralelo.

• Puerto PS/2.

• Puerto VGA.

• Display de LED 7-segmentos .

• 84-pin prototyping interface.

Page 146: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 146 -

• 9V DC power jack.

• Reguladores 5V / 3.3V / 2.5V.

En la figura B.2 se presenta un esquema con sus

interconexiones.

Page 147: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 147 -

Figura B.2

Page 148: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 148 -

En la figura B.3, se muestra un esquema de la forma de trabajo del diseño de

circuitos digitales utilizando la tarjeta XSA-50.

Page 149: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 149 -

Figura B.3

Page 150: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 150 -

En la figura B.4 se muestra la interconexión entre la FPGA, la CPLD, la memoria

RAM FLASH y el display.

Figura B.4

Page 151: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 151 -

A continuación, en la figura B.5, se muestran los pines de la FPGA y su

correspondiente función

Figura B.5

Page 152: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 152 -

Figura B.5 (continuación)

Page 153: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 153 -

Figura B.5 (continuación)

Page 154: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 154 -

Figura B.5 (continuación)

Page 155: DISEÑO DE CIRCUITOS DIGITALES A TRAVÉS DE …cybertesis.ubiobio.cl/tesis/2003/tracayanco_c/doc/tracayanco_c.pdf · otros profesores a trabajar con esta tecnología en proyectos

- 155 -