Você está na página 1de 24

Cap tulo 6

Introducci on a los PLD y a VHDL


Conceptos b asicos PLD: Programmable Logic Device PROM PAL GAL FPGA VHDL Entidad Arquitectura Puerto Modo de un puerto Se nal Variable Conguraci on Declaraci on del paquete Cuerpo del paquete Tipos de datos Vectores Descripci on funcional Descripci on por ujo de datos Descripci on estructural Saber Hacer Conocer las diferentes opciones de PLD. Reconocer la celda b asica de un circuito programable. Conocer la estructura b asica de un lenguaje de descripci on de hardware como lo es VHDL. Conocer los diferentes componentes del lenguaje.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

6.1

Introducci on a los dispositivos programables. Introducci on.

6.1.1.

Los dispositivos l ogicos programables PLD, son una alternativa para el dise no de sistemas digitales y prototipos de baja escala de integraci on, esto se debe a la disponibilidad en el mercado y al soporte existente para las herramientas de desarrollo asistido por computador, CAD.

6.1.2.

Dispositivos L ogicos Programables, PLD.

Un dispositivo l ogico programable o PLD por sus siglas en ingl es (Programmable Logic Device ), es un circuito integrado que contiene gran n umero de compuertas, ip-ops y registros internamente conectados. Estas conexiones son de dos tipos: jas y programables. Las conexiones jas son aquellas que no var an, mientras que las conexiones programables se pueden o no desconectar. Muchas de estas conexiones programables son tipo fusible, fusibles que son quemados durante la programaci on, permitiendo de esta manera congurar nuestra aplicaci on dentro de un PLD. Algunas de las caracter sticas principales de los PLD pueden ser: Capacidad de reprogramaci on, pueden ser programables o reprogramables. Tipo de tecnolog a, bien sea CMOS o TTL. Tipo de salida, activa baja o alta o congurable. Consumo de potencia. Tiempo de retardos. Niveles de tensi on alimentaci on, 3 o 5 Voltios. Clasicaci on de los PLD. Un PLD consta de arreglos de compuertas AND conectados a un arreglo de compuertas OR a trav es de elementos programables, generalmente del tipo fusible. Un diagrama de bloques de la estructura interna de un PLD se muestra en la gura 6.1. Seg un sean programables sus arreglos, los PLD se pueden clasicar en: PROM, arreglo AND jo, arreglo OR programable. PLA, ambos arreglos programables.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION


PINES DE ENTRADA BLOQUE DE ENTRADA ARREGLOS PROGAMABLES AND Y OR BLOQUE DE SALIDA PINES DE SALIDA

REALIMENTACIN

Figura 6.1: Estructura interna de un PLD

PAL, Arreglo AND programable y arreglo OR jo. GAL, Arreglo AND reprogramable y arreglo OR jo, adem as de l ogica de salida programable. FPGA, son arreglos de compuertas programables en campo, est a formado por bloques l ogicos congurables. PROM, Memorias de S olo Lectura. Son tambi en conocidas como PLE (elementos l ogicos programables), constan de un arreglo AND jo, el cual decodica las direcciones, 2 entradas, conectado a un arreglo OR programable. En la gura 6.2 se muestra una PROM de dos entradas, cuatro l neas de producto y cuatro salidas.
N ENTRADAS

ARREGLO OR PROGRAMABLE

2 LINEAS DE PRODUCTO

M SALIDAS ARREGLO AND FIJO

Figura 6.2: Estructura interna de una PROM

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

PAL, L ogica de Arreglos Programables. Este dispositivo cuenta con un arreglo AND programable y un arreglo OR jo, adem as tiene la posibilidad de realimentaci on de la salida, algo que lo hace muy u til para el caso en que se necesite conocer un estado intermedio de una funci on. Adem as la arquitectura PAL tiene a su salida un buer (YES o NOT) en el cual se puede implementar l ogica de tercer estado, y tener puertos bidireccionales, de entrada/salida. La salida de este arreglo puede estar conectada un registro (ip-op), la cual se realimenta hacia el arreglo AND, este registro permite la implementaci on de l ogica secuencial y m aquinas de estado. En la gura 6.3 se muestra un PAL en su modo combinacional, mientras que en la gura 6.4 se muestra un PAL con la salida conectada a un ip - op tipo D.
CONTROL TRIESTADO

FUSIBLE PROGRAMABLE

Figura 6.3: Estructura interna de una PAL en modo combinacional

RELOJ

Q CONTROL TRIESTADO

CP Q

Figura 6.4: Estructura interna de una PAL con registros.

GAL, L ogica de Matriz Gen erica. En esta tecnolog a los fusibles de un PAL son reemplazados por un bloque E2 CMOS. Su l ogica de salida es programable y no se habla de una arreglo OR, sino de una OLMC, macro celda l ogica de salida. Esta permite el trabajo en modo combinacional, buer de tercer estado y modo registrado. Con el GAL se pueden emular los PAL. En la gura 6.5 se muestra el detalle de una macro celda l ogica de salida.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

MUX

Vcc Ac0 Ac1(n) A la entrada del OLMC del MUX contiguo

MUX

De la matriz AND
D Q CP Q

MUX

E/S n

XOR=1

MUX

Retroalimentacin CLK Ac0 Ac1(n) OE De la salida del OLMC contiguo

Figura 6.5: Macro celda de salida de un GAL.

De la matriz AND Inversa No Inversa

Salida Entrada E/S n

Retroalimentacin

Figura 6.6: Macro celda l ogica en modo combinacional.

La GAL puede congura en tres modos de operaci on: Sencillo o simple , en donde se trabaja l ogica combinacional sin salida de tercer estado. En la gura 6.6 se observa la macro celda en modo combinacional, como puede observarse, la salida queda denida como entrada o salida. Complejo , en donde se trabaja l ogica combinacional con salida de tercer estado controlada, lo cual permite usar un pin como entrada y salida dentro de un mismo dise no.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

Registrado , el cual hace que cada macro celda de salida funcione en una conguraci on combinacional con salida de tercer estado o un modo sincr onico con un ip - op tipo D sincronizado con una se nal de reloj com un a todas las macro celdas. Durante la programaci on se elige el modo de trabajo de la GAL de acuerdo a la funci on a realizar. FPGA, Arreglo de Compuertas Programables en Campo. Una FPGA est a formada por bloques de arreglos l ogicos, LAB, y cada LAB est a conformado por 16 bloques modulares o macro celdas, como la mostrada en la gura 6.7.
ELP

clareo global

reloj global

Preset

MP U15

S D Q CP Q R

Vcc

Seales de interconexin programable

ELC

MP=Matriz de seleccin de trmino o producto ELP=Expansor lgico paralelo ELC=Expansor lgico compartido

Figura 6.7: Arquitectura de una macro celda de la familia MAX7000 de Altera. Esta arquitectura permite alta densidad (20 000 compuertas), alta velocidad (70 MHz), retardos de 15 nano segundos y consumo m aximo de 45 mA, en presentaciones de 44 a 288 pines. Los LAB se conectan entre s por medio de un PIA, arreglo de interconexi on programable, el cual optimiza la relaci on velocidad - consumo. En la mayor a de las arquitecturas PLD, cuando un pin de I/O es usado como entrada, la macro celda asociada no puede ser usada para ejercer otras funciones, en esta arquitectura se elimina este problema por desacoplamiento de los pines de I/O. Lo que permite que estas macro celdas permanezcan aptas para ser usadas para la implementaci on de l ogica interna.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Ventajas de los PLD.

La conveniencia de la l ogica programable est a en la habilidad para realizar un producto que no se encuentre en el mercado. Se pueden incluir otras ventajas como: F acil obtenci on de prototipos. Se pueden realizar modicaciones a un dise no sin mayores traumatismos. Estos dise nos se pueden emplear como m odulo, y el dise no nal puede ser la interconexi on de varias partes. Mayor conabilidad. Menos integrados, menos conexiones, tarjetas m as sencillas. F acil dise no. Gracias a la amplia disponibilidad de herramientas CAD, se puede especicar un dise no a alto nivel, realizar s ntesis l ogica y selecci on y adaptaci on autom atica de un dise no a un dispositivo espec co. Adem as simular y realizar pruebas y generar documentos. Mayor rendimiento, con retardos de 15 nano segundos para PLD de tecnolog a CMOS y de 10 nano segundos para PLD de familia TTL. Y menores costos y tiempo de desarrollo de cualquier aplicaci on.

6.2

VHDL: Su organizaci on y arquitectura. Introducci on.

6.2.1.

Tal como lo indican sus siglas, VHDL (Hardware Description Language ) es un lenguaje orientado a la descripci on o modelado de sistemas digitales; es decir, se trata de un lenguaje mediante el cual se puede describir, analizar y evaluar el comportamiento de un sistema electr onico digital. VHDL es un lenguaje poderoso que permite la integraci on de sistemas digitales sencillos, elaborados o ambos en un dispositivo l ogico programable, sea de baja capacidad de integraci on como un GAL, o de mayor capacidad como los CPLD y FPGA.

6.2.2.

Unidades b asicas de dise no.

La estructura general de un programa en VHDL est a formada por m odulos o unidades de dise no, cada uno de ellos compuesto por un conjunto de declaraciones e instrucciones que denen, describen, estructuran, analizan y eval uan el comportamiento de un sistema digital. Existen cinco tipos de unidades de dise no en VHDL; declaraci on de entidades (entity declaration ), arquitectura (architecture ), conguraci on (conguration ), declaraci on del pa-

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

quete (package declaration ) y el cuerpo del paquete (package body ). De estas cinco unidades, son obligatorias al menos una entidad y una arquitectura. Las declaraciones de entidad, paquete y conguraci on se consideran unidades de dise no primarias, mientras que la arquitectura y el cuerpo del paquete son unidades de dise no secundarias porque dependen de una entidad primaria que se analiza antes que ellas.

6.2.3.

Entidad

Una entidad (entity ) es el bloque elemental de dise no en VHDL. Las entidades son todos los elementos electr onicos (sumadores, contadores, compuertas, ip-ops, memorias, multiplexores, etc.) que forman de manera individual o en conjunto un sistema digital. La entidad puede representarse de muy diversas maneras; por ejemplo, la gura 6.13(a) muestra la arquitectura de un sumador completo a nivel de compuertas; ahora bien, esta entidad se puede representar a nivel de sistema indicando tan s olo las entradas (Cin, A y B) y salidas (SUMA y Cout ) del circuito: gura 6.13(b). De igual forma, la integraci on de varios subsistemas (medio sumador) puede representarse mediante una entidad, gura 6.8(c). Los subsistemas pueden conectarse internamente entre s ; pero la entidad sigue identicando con claridad sus entradas y salidas generales.
Cin Suma

A B Cout A B Cin Entidad Sumador Suma Cout

(b) (a)
Cin Medio Sumador Suma

B A Medio Sumador Cout

(c)

Figura 6.8: 6.13(a) Descripci on a nivel de compuerta. 6.13(b) S mbolo funcional de la entidad. 6.8(c) Diagrama a bloques relativo de la entidad.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Puertos de entrada y salida.

Cada una de las se nales de entrada y salida en una entidad son referidas como puertos, los cuales son similares a una terminal (pin) de un s mbolo esquem atico. Todos los puertos que son declarados deben tener un nombre, un modo y un tipo de dato. El nombre se utiliza para referenciar al puerto; el modo permite denir la direcci on que tomar a la informaci on, es decir, si es de entrada o de salida, y el tipo dene qu e clase de informaci on se trasmitir a por el puerto. Por ejemplo, respecto a los puertos de la entidad que representan a un comparador de igualdad (gura 6.9), las variables a y b denotan los puertos de entrada y la variable c se reere al puerto de salida.
a b

Comparador

c(a=B)

Figura 6.9: Comparador de igualdad. Modos Como ya se mencion o, el modo permite denir la direcci on en la cual el dato es transferido a trav es de un puerto. El modo puede tener uno de cuatro valores: in (entrada), out (salida), inout (entrada/salida) y buer. Modo in. Se reere a las se nales de entrada a la entidad. Este s olo es unidireccional y nada m as permite el ujo de datos hacia dentro de la entidad. Modo out. Indica las se nales de salida de la entidad. Modo inout. Permite declarar un puerto de forma bidireccional, es decir, de entrada/salida; adem as permite la retroalimentaci on de se nales hacia dentro o hacia afuera de la entidad. Modo buer. Permite hacer retroalimentaciones internas dentro de la entidad, pero a diferencia del modo inout, el puerto declarado se comporta como una terminal de salida.
In Out

Inout In

Buffer

In

Out

Figura 6.10: Modos y el curso de sus se nales.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Tipos de datos

10

Los tipos se reeren a las diversas clases de valores (datos) que el dise nador establece para los puertos de entrada y salida dentro de una entidad; se asignan de acuerdo con las caracter sticas de un dise no en particular. Algunos de los tipos m as utilizados en VHDL son: Bit, el cual tiene valores de 0 y 1. Boolean (booleano) que dene valores de verdadero y falso en una expresi on. Bit vector (vector de bits) que representa un conjunto de bits para cada variable de entrada o salida. Integer (entero) que representa un n umero entero. Los anteriores son s olo algunos de los tipos que maneja VHDL.

6.2.4.

Declaraci on de entidades

Como se mencion o en la secci on 6.2.2 (Unidades b asicas de dise no), los m odulos elementales en el desarrollo de un programa dentro del lenguaje de descripci on de hardware (VHDL) son la entidad y la arquitectura. La declaraci on de una entidad consiste en la descripci on de las entradas y salidas de un circuito de dise no identicado como entity (entidad); es decir, la declaraci on se nala las terminales o pines de entrada y salida de la entidad de dise no. Por ejemplo, la forma de declarar la entidad correspondiente al circuito sumador de la gura 6.8b se muestra a continuaci on:

Cin B A Entidad Sumador SUMA Cout

1 2 3 4 5 6

-- Declaraci o n de la entidad de un circuito sumador entity sumador is port (A , B , Cin : in bit ; SUMA , Cout : out bit ) ; end sumador ;

Listado 6.1: Declaraci on de la entidad de la gura 6.8b

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

11

Los n umeros de las l neas (1, 2, 3, 4, 5) no son parte del c odigo; se usan como referencia para explicar alguna secci on en particular. Las palabras en negrilla est an reservadas por el lenguaje de programaci on VHDL; esto es, tiene un signicado especial para el programa; el dise nador asigna los otros t erminos. La l nea 1 inicia con dos guiones (), los cuales indican que el texto que est a a la derecha es un comentario cuyo objetivo es documentar el programa; el compilador ignora todos los comentario. En la l nea 2 se inicia la declaraci on de la entidad con la palabra reservada entity, seguida del identicador o nombre de la entidad (sumador) y la palabra reservada is. Los puertos de entrada y salida (port) se declaran en las l neas 3 y 4, respectivamente - en este caso los puertos de entrada A, B y Cin -, mientras que SUMA y Cout representan los puertos de salida. El tipo de dato utilizado para todos los puertos es bit, lo cual indica que s olo pueden manejarse valores de 0y 1l ogicos. Por u ltimo, en la l nea 5 termina la declaraci on de entidad con la palabra reservada end, seguida del nombre de la entidad (sumador). Identicadores Los identicadores son simplemente los nombres que se usan para referir variables, se nales, procesos, etc. Pueden ser n umeros, letras del alfabeto y guiones bajos ( ) que separen caracteres y no tienen una restricci on en cuanto a su longitud. Todos los identicadores deben seguir las reglas que aparecen en la tabla 6.1. Regla El primer car acter siempre es una letra may uscula o min uscula. El segundo car acter no puede ser un gui on bajo. Dos guiones juntos no son permitidos. Un identicador no puede utilizar s mbolos. Incorrecto 4sumas S 4bits Resta 4 Clear#8 Correcto Suma4 S4 bits Resta 4 Clear 8

Cuadro 6.1: Especicaciones para la escritura de identicadores. VHDL tiene una lista de palabras reservadas que no son v alidos como identicadores (vea ap endice A).

6.2.5.

Dise no de entidades mediante vectores

La entidad sumador realizada en el circuito del listado anterior, usa bits individuales, los cuales s olo pueden representar dos valores l ogicos (0 o 1). De manera general, en la pr actica se utilizan conjuntos (palabras) de varios bits; en VHDL las palabras binarias se conocen como vectores de bits, de la misma manera como los arreglos de los lenguajes de programaci on convencionales. Como ejemplo consid erense los vectores de 4 bits que se muestran a continuaci on:

vector A = (A3 , A2 , A1 , A0 )

(6.1)

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION vector B = (B3 , B2 , B1 , B0 ) vector SU M A = (S3 , S2 , S1 , S0 )

12 (6.2) (6.3)

En la gura 6.11 se observa la entidad del sumador analizado antes, s olo que ahora las entradas A, B y la salida SUMA incorporan vectores de 4 bits en sus puertos. Obs ervese c omo la entrada Cin y la salida Cout son de un bit.
Cin B A Entidad Sumador SUMA Cout

Figura 6.11: Entidad representada por vectores. Para describir en VHDL una conguraci on que utilice vectores se utiliza la sentencia bit vector, mediante la cual se especican los componentes de cada uno de los vectores utilizados. La parte del c odigo que se usa para declarar un vector dentro de los puertos es el siguiente: port ( vector A, vector B : in bit vector (3 downto 0); vector SUMA : out bit vector (3 downto 0)); La declaraci on dene los vectores (A, B y SUMA) con cuatro componentes distribuidos en orden descendente por medio del comando: 3 downto 0 (3 hasta 0) Los cuales se agrupan de la siguiente manera. vector A(3) = A3 vector A(2) = A2 vector A(1) = A1 vector A(0) = A0 vector B (3) = B3 vector B (2) = B2 vector B (1) = B1 vector B (0) = B0 vector SU M A(3) = S3 vector SU M A(2) = S2 vector SU M A(1) = S1 vector SU M A(0) = S0

Una vez que se ha establecido el orden en que aparecer an los bits enunciados en cada vector, no se puede modicar, a menos que se utilice el comando to: 0 to 3 (0 hasta 3) que indica el orden de aparici on en sentido ascendente.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Declaraci on de entidades mediante librer as y paquetes.

13

Una parte importante en la programaci on con VHDL radica en el uso de librer as y paquetes que permiten declarar y almacenar estructuras l ogicas, seccionadas o completas que facilitan el dise no. Una librer a o biblioteca es un lugar al que se tiene acceso para utilizar las unidades de dise no predeterminadas por el fabricante de la herramienta y su funci on es agilizar el dise no. En VHDL se encuentran denidas dos librer as llamadas ieee y work. En una librer a tambi en se permite almacenar el resultado de la compilaci on de un dise no, con el n de utilizar en uno o varios programas. La librer a work es el lugar establecido donde se almacenan los programas que el usuario va generando. Esta librer a se encuentra siempre presente en la compilaci on de un dise no y los dise nos se guardan en ella mientras no se especique otra. Un paquete es una unidad de dise no que permite desarrollar un programa en VHDL de una manera agil, debido a que contiene algoritmos preestablecidos (sumadores, restadores, contadores, etc.) que ya tienen optimizado su comportamiento. Por esta raz on, el dise nador no necesita denir paso a paso una nueva unidad de dise no si ya se encuentra almacenada en alg un paquete - en cuyo caso basta con llamarla y especicarla en el programa -. Por lo tanto, un paquete no es m as que una unidad de dise no formada por declaraciones, programas, componentes y subprogramas, que incluyen los diversos tipos de datos (bit, on en VHDL y que suelen formar parte booleano, std logic), empleados en la programaci de las herramientas en software. Por u ltimo, cuando en el dise no se utiliza alg un paquete es necesario llamar a la librer a que lo contiene. Para esto se utiliza la siguiente declaraci on: library ieee; Lo anterior permite el uso de todos los componentes incluidos en la librer a ieee. En el caso de la librer a de trabajo (work), su uso no requiere la declaraci on library, dado que la carpeta work siempre est a presente al desarrollar un dise no. Paquetes El paquete std logic 1164 (est andar l ogico 1164) que se encuentra en la librer a ieee contiene todos los tipos de datos que suelen emplearse en VHDL (std logic vector, std logic, entre otros). El acceso a la informaci on contenida en un paquete se hace por medio de la sentencia use, seguida del nombre de la librer a y del paquete, respectivamente: use nombre liber a.nombre paquete.all;

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION por ejemplo: use ieee.std logic 1164.all;

14

En este caso ieee es la librer a, std logic 1164 es el paquete y la palabra reservada all indica que se pueden usar todos los componentes almacenados en el paquete. El paquete numeric std dene funciones para realizar operaciones entre diferentes tipos de datos (sobrecargados); adem as, los tipos pueden representarse con signo o sin este. El paquete numeric bit dene tipos de datos binarios con signo o sin este. El paquete std arith dene funciones y operadores aritm eticos, como igual (=), mayor que ( >), menor que (<), entre otros.

6.2.6.

Arquitecturas

Una arquitectura (architecture ) se dene como la estructura que describe el funcionamiento de una entidad, de tal forma que permita el desarrollo de los procedimientos que se llevar an a cabo con el n de que la entidad cumpla las condiciones de funcionamiento deseadas. La denici on de una arquitectura se puede realizar utilizando tres enfoques, a saber: Enfoque funcional. Enfoque por ujo de datos. Enfoque estructural. Descripci on funcional Es en la gura 6.11 se describe funcionalmente el circuito comparador. Se trata de una descripci on funcional porque expone la forma en que trabaja el sistema; es decir, las descripciones consideran la relaci on que hay entre las entradas y las salidas del circuito, sin importar c omo est e organizado en su interior. Para este caso: El c odigo que representa el circuito de la gura 6.2.6 se muestra en el siguiente listado:

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION si a = b entonces c = 1 si a = b entonces c = 0


a b

15

Comparador

Figura 6.12: Descripci on funcional de un comparador de igualdad de dos bits.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

-- Ejemplo de una descripci o n funcional library ieee ; use ieee . std_logic_1164 . all ; entity comparador is port ( a , b : in bit_vector ( 1 downto 0) ; c : in bit ) ; end comparador ; architecture funcional of comparador is begin compara : process (a , b ) begin if a = b then c <= 1 ; else c <= 0 ; end if ; end process compara ; end funcional ;

Listado 6.2: Arquitectura funcional de un comparador de igualdad de 2 bits. N otese c omo la declaraci on de la entidad (entity ) se describe en las l neas de la 1 a la 7; la arquitectura se incluye de la l nea 8 a la 18, Las l neas 10, 11 y 17 corresponden al marco del proceso (process ) caracter stico de una descripci on funcional. Las l neas 12 a la 17 detallan el algoritmo elegido para describir el proceso, en este caso una estructura ifthenelse Como se puede observar, la declaraci on funcional se basa principalmente en el uso de procesos y de declaraciones secuenciales, de forma an aloga a los algoritmos cl asicos de los lenguajes de programaci on convencionales.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Descripci on por ujo de datos

16

La descripci on por ujo de datos indica la forma en que los datos se transforman al pasar por el circuito. Este tipo de descripciones permite denir el ujo que tomar an los datos entre m odulos encargados de realizar operaciones. En este tipo de descripci on se pueden utilizar dos formatos mediante instrucciones when else (cuandosi no) o por medio de ecuaciones booleanas. 1. Descripci on por ujo de datos mediante whenelse A continuaci on se muestra el c odigo del comparador de igualdad de dos bits descrito antes (gura 6.2.6). N otese que la diferencia entre los listados radica en la eliminaci on del proceso y en la descripci on sin declaraciones secuenciales (ifthenelse ). En VHDL se manejan dos tipos de declaraciones: secuenciales y concurrentes. Una declaraci on secuencial de la forma if then else se utiliz o en el listado 6.2 dentro del proceso, donde su ejecuci on debe seguir un orden para evitar la p erdida de la l ogica descrita. En cambio, en una declaraci on concurrente esto no es necesario, ya que no importa el orden en que se ejecutan. Tal es el caso del listado 6.3.

1 2 3 4 5 6 7 8 9 10 11 12 13

-- Ejemplo de declaraci o n de la entidad de un comparador library ieee ; use ieee . std_logic . all ; entity comp is port (a , b : in bit_vector (1 downto 0) ; c : out bit ) ; end comp architecture f_datos of comp is begin c <= 1 when ( a = b ) else end f_datos

Listado 6.3: Arquitectura por ujo de datos.

2. Descripci on por ujo de datos mediante ecuaciones booleanas Otra forma de describir el circuito comparador de dos bits es mediante la obtenci on de sus ecuaciones booleanas gura 6.13. En el listado 6.4 se observa este desarrollo. El interior del circuito comparador de la gura 6.13a a puede representarse por medio de compuertas b asicas [gura 6.13b] y este circuito puede describirse mediante la obtenci on de sus ecuaciones booleanas.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION


U0 a b a b a0 b0 U2 x0 c U1 a1 b1 x1

17

Comparador
(a)

(b)

Figura 6.13: (a) Entidad del comparador de dos bits. (b) Comparador de dos bits realizado con compuertas.

1 2 3 4 5 6 7 8 9 10 11 12 13

-- Ejemplo de declaraci o n de la entidad de un comparador library ieee ; use ieee . std_logic_1164 . all ; entity comparador is port ( a , b : in c : out end comparador ;

bit_vector (1 downto 0) ; bit ) ;

architecture booleana of comparador is begin c <= ( a (1) xnor b (1) and a (0) xnor b (0) ) ; end booleana ;

Listado 6.4: Arquitectura de forma de ujo de datos construido por medio de ecuaciones boolenas.

La forma de ujo de datos en cualquiera de sus representaciones describe el camino que los datos siguen al ser transferidos de las operaciones efectuadas entre las entradas a y b a la se nal de salida c. Descripci on estructural Como se nombre indica, una descripci on estructural basa su comportamiento en modelos l ogicos establecidos (compuertas, sumadores, contadores, etc.). Seg un veremos m as adelante, el usuario puede dise nar estas estructuras y guardarlas para su uso posterior o tomarlas de los paquetes contenidos en las librer as de dise no del software que es est e utilizando. En la gura 6.14 se encuentra un esquema del circuito comparador de igualdad de 2 bits, el cual est a formado por compuertas nor-exclusivas y una compuerta AND.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION


U0 a b a0 b0 U2 x0 c U1 a1 b1 x1

18

Figura 6.14: Representaci on esquem atica de un comparador de 2 bits.

En nuestro caso, cada compuerta (modelo l ogico) se encuentra dentro del paquete gatespkg, del cual se toman para estructurar el dise no. A su vez, este tipo de arquitecturas est andares se conocen como componentes, que al interconectarse por medio de se nales internas, (x0 , x1 ) permiten proponer una soluci on. En VHDL esta conectividad se conoce como netlist 1 o listado de componentes. Para iniciar la programaci on de una entidad de manera estructural, es necesario la descomposici on l ogica del dise no en peque nos subm odulos (jerarquizar), los cuales permiten analizar de manera pr actica el circuito, ya que la funci on de entrada/salida es conocida. En nuestro ejemplo se conoce la funci on de salida de las dos compuertas xnor, por lo que al unirlas a la compuerta and, la salida c es el resultado de la operaci on and efectuada en el interior a trav es de las se nales x0 y x1 (gura 6.14). Es importante resaltar que una jerarqu a en VHDL se reere al procedimiento de dividir en bloques y no a que un bloque tenga mayor jerarqu a (peso) que otro. Esta forma de dividir el problema hace de la descripci on estructural una forma sencilla de programar. En el contexto del dise no l ogico esto es observable cuando se analiza por separado alguna secci on de un sistema integral. En el listado 6.5 se muestra el c odigo del programa que representa al esquema de la gura 6.14. En el c odigo se puede ver que en la entidad nada m as se describen las entradas y salida del circuito (a, b y c), seg un se ha venido haciendo (l neas 3 a la 6). Los componentes xnor y and no se declaran debido a que se encuentran en el paquete de compuertas (gatespkg ), el cual a su vez est a dentro de la librer a de trabajo (work), l nea 8.
1 Un netlist se reere a la forma como se encuentran conectados los componentes dentro de una estructura y las se nales que propician esta interconexi on.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

19

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

library ieee ;

use ieee . std_logic_1164 . all ;

entity comparador is port ( a , b : in bit_vector (0 to 1) : c : out bit ) ; end comparador ; use work . compueta . all ; architecture estructural of signal x : bit_vector (0 to begin U0 : xnor2 port U1 : xnor2 port U2 : and2 port end estructural ; compuerta is 1) ; map map map ( a (0) , ( a (1) , ( x (0) , b (0) , b (1) , x (1) , x (0) ) ; x (1) ) ; c);

Listado 6.5: Descripci on estructural de un comparador de igualdad de 2 bits. En la l nea 10 se inicia la declaraci on de la arquitectura estructural. El algoritmo propuesto (l neas 13 a 15) describe la estructura de la siguiente forma: cada compuerta se maneja como un bloque l ogico independiente (componente) del dise no original, al cual se le asigna una variable temporal (U0, U1 y U2); la salida de cada uno de estos bloques se maneja como una se nal l nea 9, signal x (x0 y x1), las cuales se declaran dentro de la arquitectura y no en la entidad, debido a que no representan a una terminal (pin) y s olo se utilizan para conectar bloques de manera interna a la entidad. Por u ltimo, podemos observar que la compuerta and recibe las dos se nales provenientes de x (x0 y x1), ejecuta la operaci on y asigna el resultado a la salida c del circuito. Comparaci on entre los estilos de dise no El estilo de dise no utilizado en la programaci on depende del dise nador y de la complejidad del proyecto. Por ejemplo, un dise no puede describirse por medio de ecuaciones booleanas, pero si es muy extenso quiz a sea m as apropiado emplear estructuras jer arquicas para dividirlo; ahora bien, si se requiere dise nar un sistema cuyo funcionamiento dependa s olo de sus entradas y salidas, es conveniente utilizar la descripci on funcional, la cual presenta la ventaja de requerir menos instrucciones y el dise nador no necesita un conocimiento previo de cada componente del circuito.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION

20

6.2.7.

Resumen de VHDL

Generalidades Este lenguaje fue desarrollado inicialmente por el Departamento de Defensa de los EE.UU., siendo posteriormente estandarizado por IEEE en 1987 y en 1993. Las sentencias del lenguaje se pueden clasicar como sigue: Sentencias declarativas: permiten declarar tipos de datos, variables, se nales, etc. Sentencias ejecutivas, las cuales clasicamos a su vez as : Sentencias de asignaci on: asignan valor a variables o se nales Sentencias de control de ujo: lazos de repetici on, condicionales, etc. Las sentencias ejecutivas tambi en se pueden clasicar en: Concurrentes: no importa el orden de ejecuci on Secuenciales: es importante el orden de ejecuci on, tal como en los lenguajes de programaci on convencionales. Se pueden aplicar tres estilos diferentes para desarrollar un sistema: Estructural: se denen los elementos que hacen parte del sistema y la forma como se conectan. Funcional: el comportamiento del sistema se describe mediante un algoritmo. Flujo de datos: enfoque mixto de los dos anteriores. Elementos del lenguaje En cada sentencia del lenguaje, se utilizan elementos que pueden ser: Identicadores: nombre de un elemento tal como circuito, se nal, variable, etc. Palabras reservadas propias del lenguaje, entre las cuales podemos citar las siguientes: architecture, begin, bus, end, entity, if, and, or, nand, port, register. Literales o constantes, que pueden ser num ericas, car acter, cadena de caracteres, cadena de bits. Por ejemplo: 345, 2E5, A, Digitales, XFF, b101000 Igualmente, se utilizan separadores que van entre los elementos del lenguaje, tales como espacios, tabuladores, nales de l nea. Finalmente, se pueden incluir comentarios, los cuales empiezan por dos guiones consecutivos y terminan con un n de l nea.

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Variables y tipos de datos Los objetos que se pueden manipular en VHDL son: Variables , que se declaran como: Variable identicador: subtipo [:=expresi on] Por ejemplo: variable contador: positive:= 100; Constantes , que se declaran como: Constant identicador: subtipo [:= expresi on]

21

Se nales , las cuales permiten el modelado de circuitos. Son similares a las variables, pero se diferencian en la forma en que se actualiza el valor. Una variable lo hace al ejecutar la sentencia correspondiente, mientras que no ocurre lo mismo con las se nales. Se denen as : Signal identicador: subtipo [tipo se nal] [:= expresi on] En donde tipo se nal puede ser register o bus. Por ejemplo: signal OPERADOR: bit vector (8 downto 0); Los tipos de datos denidos en el paquete STANDARD son los siguientes: BOOLEAN, que permite los valores FALSE y TRUE. BIT, que permite los valores 0y 1 CHARACTER, que permite los valores ASCII est andar INTEGER, con rango correspondiente a 16 bits REAL, tal como los lenguajes convencionales TIME STRING, como arreglo de caracteres BIT VECTOR, como arreglo de bits

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Entidad y arquitectura

22

Los dos bloques b asicos de VHDL son Entidad (entity), la cual dene la interfaz del sistema, y Arquitectura (architecture), en donde se dene el comportamiento o dise no del circuito. El bloque entidad describe el modelo de entradas y salidas del sistema, o del elemento del sistema. El bloque arquitectura describe el comportamiento del sistema o elemento. Conviene anotar que una entidad puede tener varias arquitecturas. Una combinaci on particular entidad-arquitectura se puede declarar como componente. Sentencias concurrentes y secuenciales Las sentencias secuenciales son aquellas que se ejecutan una despu es de la otra, de la misma manera que en cualquier lenguaje de programaci on convencional. Dado que en los sistemas electr onicos aparecen actividades que no son de naturaleza secuencial sino paralela o concurrente, VHDL contempla el mecanismo de los procesos (process), los cuales se ejecutan todos en forma paralela. Cada proceso se describe mediante un bloque de sentencias, las cuales se ejecutan en forma secuencial. Estilos de descripci on La descripci on de un sistema digital puede hacerse empleando uno de los siguientes estilos, o tambi en combinaciones de ellos: Enfoque estructural: la descripci on se realiza detallando cada uno de los componentes del sistema y sus interconexiones. Enfoque de trayectorias de datos: la descripci on se realiza en t erminos de las transformaciones que sufren los datos al pasar por el sistema. Se utilizan principalmente ecuaciones l ogicas. Enfoque algor tmico: La descripci on del sistema se hace detallando el algoritmo que desarrolla. Unidades, paquetes y bibliotecas VHDL permite que se desarrollen los dise nos de manera jer arquica. Las bibliotecas permiten catalogar elementos que se van a utilizar en los dise nos, no siendo necesario cada vez volverlos a denir. Las unidades denidas por VHDL son de dos tipos:

A LOS PLD Y A VHDL CAP ITULO 6. INTRODUCCION Primarias, de naturaleza declarativa, y son: Entidad (entity): especica la interfaz de un elemento o sistema.

23

Paquete (package): formado por un conjunto de declaraciones de elementos, funciones, subprogramas, orientadas a que el usuario las pueda utilizar pero sin suministrar los detalles de implementaci on de los mismos. Conguraci on (conguration): permite asociar a cada componente una entidad. Secundarias, de naturaleza ejecutiva, y son: Arquitectura (architecture): describe la implementaci on de una entidad. Cuerpo de paquete (package body): describe la implementaci on de los componentes de un paquete. Los componentes, que son asociaciones entity-arquitecture, se suelen agrupar en paquetes, los cuales se re unen como bibliotecas.

Lecturas adicionales
[BC02] Norman Balabanian Bradley Carlson. Principios de Dise no l ogico digital, chapter 4.4, 4.5, 8. CECSA, 1a edition, 2002.

[BDC96] Victor P. Nelson H. TroyNagle. Bill D. Carroll, J. David Irwin. An alisis y Dise noo de Circuitos L ogicos Digitales, chapter 5. Prentice Hall, 1a edition, 1996. [CRK04] M. Morris Mano Charles R. Kime. Fundamento de dise noo l ogico y de computadoras, chapter 3. Pearson Prentice Hall, 3a edition, 2004. [Due01] [Flo00] [JA02] Robert K. Dueck. Digital Design with CPLD Applications and VHDL, chapter 4. Delmar Thomson Learning, 1a edition, 2001. Thomas L. Floyd. Fundamentos de Sistemas Digitales, chapter 7. Prentice Hall, 7a edition, 2000. David G. Maxinez Jessica Alcal a. VHDL el arte de programar Sistemas Digitales, chapter 1, 2. CECSA, 1a edition, 2002.

[LPR03] Alberto Prieto Espinosa Luis Parrilla Roure, Antonio LLoris Ru z. Sistemas Digitales, chapter 14. McGraw-Hill, 1a edition, 2003. [Man92] Enrique Mandado. Sistemas Electr onicos Digitales, chapter 3.8. AlfaOmega Marcombo, 7a edition, 1992. [NSW03] Ronald J. Tocci Neal S. Widmer. SISTEMAS DIGITALES Principios y aplicaciones, chapter 12. Pearson Educaci on, 8a edition, 2003. [Uye00] Jhon P. Uyemura. Introducci on al Dise noo de Sistemas Digitales, Un enfoque integrado, chapter 5. Thomson, 1a edition, 2000.

[Wak01] Jhon F. Wakerly. DISENO DIGITAL Principios y pr acticas, chapter 5.3. Pearson Educaci on, 3a edition, 2001.

24

Você também pode gostar