Está en la página 1de 47

CIME

INTRODUCCIÓN AL DISEÑO DIGITAL DE


CIRCUITOS LÓGICOS
COMBINACIONALES Y SECUENCIALES

Capítulo 2
(PRIMERA PARTE)

Autor: Dr. Alberto Hernández Pérez, Profesor Consultante

Centro de Investigaciones en Microelectrónica


Facultad de Ingeniería Eléctrica
CUJAE
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Contenido

Resumen I-3

Breve introducción histórica I-4

Introducción al diseño digital I-6

Capítulo 1. Introducción a la Electrónica Digital.


Introducción. I-7
Dispositivos digitales. Compuertas (puertas) lógicas. I-7
Sistemas numéricos. I-11
Códigos. I-12
Circuitos integrados digitales. Familias lógicas. I-17
Series de la familia CMOS. Series de la familia TTL. I-20
Nomenclatura de los circuitos integrados digitales I-20
Algunos índices de las familias CMOS y TTL. I-21
Márgenes de ruido. I-22
Factor de carga (Fan-out). I-22
Lógica cableada. Compuertas drenaje abierto y colector abierto. I-23
Compuertas con tercer estado. Compuertas Schmitt-trigger I-31
Consumo de potencia. I-32
Interconexión de circuitos CMOS con TTL. I-33
Electrónica molecular. I-33
Elementos del Álgebra de Conmutación. I-35
Simplificación de funciones lógicas. Mapas de Karnaugh. Azares estáticos I-39
Referencias I-56
Ejercicios. I-57

Capítulo 2. Dispositivos Lógicos Programables


Introducción 3
Dispositivos lógicos programables. Clasificación, características y aplicaciones. 3
PLD simples (SPLD) 3
Estructura interna de un PAL CMOS 6
SPLD comerciales. SPLD 16V8 8
SPLD 22V10 11
PLD complejos (CPLD). FPGA 12
Lenguajes de descripción de hardware. Introducción al VHDL. 15
Diseño jerárquico en VHDL 23
Síntesis de circuitos lógicos combinacionales usando PLD y circuitos integrados SSI 27
Referencias 32
Ejercicios 33
Anexo 1 37
Anexo 2 38

2
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Capítulo 2. Dispositivos Lógicos Programables.

Introducción.
El diseño digital ha ido cambiando en los últimos años incorporando cada vez más los
dispositivos lógicos programables (PLD) debido a sus grandes ventajas entre ellas la
facilidad de diseño que permite obtener circuitos a la medida utilizando dispositivos
estándar de fácil adquisición en el mercado, gran flexibilidad debido a que los dispositivos
pueden volverse a programar simplemente modificando el programa, generalmente sin
afectar el circuito impreso, menor costo debido a la disminución del tiempo necesario para
realizar el diseño así como la reducción de los inventarios de componentes ya que con un
mismo dispositivo se pueden diseñar una gran variedad de sistemas digitales, mayor
fiabilidad debido a que se utilizan menor cantidad de circuitos integrados con lo cual se
simplifica también el circuito impreso, posibilidad de proteger el diseño de modo tal que no
sea posible descifrar la función programada en el PLD. Por todo lo anterior, y muchas otras
ventajas que pudieran señalarse, la lógica programable se ha convertido en la más
importante en el diseño digital. En este capítulo se introducirán algunos de los PLD
disponibles en el mercado así como el lenguaje de descripción de hardware VHDL que es
uno de los más utilizados actualmente para la programación de los PLD. En los ejemplos y
ejercicios de este capítulo se ilustra la facilidad y rapidez que brindan los dispositivos
lógicos programables en el diseño digital.

Dispositivos lógicos programables. Clasificación, características y


aplicaciones.
Los dispositivos lógicos programables forman parte de los CI de alto nivel de integración
de lógica programable que incluye, entre otros, los PLD simples (SPLD), los PLD
complejos (CPLD) y los arreglos de compuertas programables por campo (FPGA). La
tecnología de fabricación predominante en estos dispositivos es la CMOS.

PLD simples (SPLD). Están formados, fundamentalmente, por un arreglo de


compuertas AND y otro arreglo de compuertas OR. Uno de estos arreglos, o ambos, pueden
ser programados por el usuario del dispositivo. De acuerdo con esto tenemos tres tipos
diferentes de SPLD:
. Memorias ROM programables (PROM). Es un SPLD en el que se programa el arreglo
de compuertas OR mientras que el arreglo AND es fijo. Este dispositivo se utiliza
ampliamente en los sistemas digitales. Se estudia en el Capítulo 3 de esta Primera Parte.
. PAL (Arreglo Lógico Programable). Es un SPLD en el que se programa el arreglo de
compuertas AND mientras que el arreglo OR es fijo. Este dispositivo se utiliza en forma
creciente en el diseño digital tanto en la lógica combinacional como en la secuencial.
. PLA. En estos SPLD se programan ambos arreglos. Se utiliza mucho menos que los

3
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
PAL y las memorias ROM y por esa razón no se estudian en este Texto.

Estudio del PAL.


En la Figura 2-1 se muestra el diagrama lógico de un PAL

Figura 2-1. Diagrama lógico de un PAL. a) Se presenta el arreglo AND en la forma


acostumbrada. X significa que la conexión es programable en cambio las conexiones en las
entradas del arreglo OR son fijas. b) Se presenta el mismo PAL pero el diagrama ha sido
dibujado en forma más compacta.

4
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
Note que en cada una de las compuertas AND que constituye el arreglo programable de un
PAL están disponibles todas las variables de entrada tanto negadas como sin negar.

En la Figura 2-2 a) se ilustra el empleo del PAL anterior para obtener la función
F(a,b) = /a.b + a./b = a ⊕ b. Mientras que en la Figura 2-2 b) se obiene W = /b. Note la
programación del arreglo AND para obtener la función deseada en cada caso. Este proceso
de programación se realiza escribiendo el programa correspondiente mediante el uso de un
lenguaje de descripción de hardware y se aplica al dispositivo mediante un programador.

Figura 2-2. a) Utilización del PAL de la Figura 2-1 para obtener la función F = a ⊕ b.
b) Utilización del PAL de la Figura 2-1 para obtener la función W = /b.

5
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Estructura interna de un PAL CMOS. En la Figura 2-3 se muestra la estructura


interna del PAL correspondiente a la Figura 2-1 suponiendo que se ha construido, como es
usual, con tecnología CMOS.

Figura 2-3. a) Estructura interna de un PAL CMOS b) El resistor R es un


transistor MOS-P con la compuerta conectada a tierra
c) En el arreglo AND, que es programable, los transistores MOS-N
tienen una compuerta adicional, llamada compuerta flotante.

La programación del arreglo AND se realiza depositando una carga negativa en la


compuerta flotante del transistor cuya entrada se desea desconectar. Esta carga negativa
impide la acción de la señal aplicada a la compuerta normal del transistor por lo que éste
queda permanente abierto (OFF). Note que en el arreglo OR, que es fijo, los transistores
MOS-N no tienen compuerta flotante.

6
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
En la Figura 2-2 a) se mostró el diagrama lógico del PAL programado para obtener la
función F(a,b) = /a.b + a./b = a ⊕ b. Veamos ahora esta misma programación en la
estructura interna del PAL. En la Figura 2-4 se ilustra este caso:

7
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
Figura 2-4. a) Estructura interna del PAL programado para obtener la
función F(a,b) = /a.b + a./b = a ⊕ b. b) Circuito equivalente.

SPLD comerciales.
El PAL fue inventado en 1978 y ya en los años 90 se había convertido en un dispositivo
muy popular para el diseño digital tanto en circuitos lógicos combinacionales como en los
secuenciales. En la actualidad hay muchos tipos diferentes de PAL fabricados por una gran
cantidad de firmas las que utilizan diferentes nombres comerciales para designarlos tales
como PAL, PALCE, GAL y otros. Entre los PAL mas utilizados pueden mencionarse el
16V8 y el 22V10. El diagrama lógico tanto del 16V8 como del 22V10 es similar al PLD
básico mostrado en la Figura 2-1 pero además tienen otros elementos que los hacen más
flexibles y potentes. Comenzaremos presentando algunas características del 16V8 y
posteriormente las del 22V10.

16V8.
Este dispositivo es muy flexible y económico su arreglo AND está formado por 64
compuertas de 32 entradas que son programables. Su macro celda de salida combinacional
está formada por la compuerta OR y una XOR tal como se aprecia en la Figura 2-5:

Figura 2-5. a) Macro celda de salida del 16V8 en su variante compleja b) Macro celda de
salida del 16V8 en su variante simple.

Como se puede apreciar en la Figura anterior a la salida de la compuerta OR hay una XOR
cuya función es la de actuar como un buffer o como inversor según convenga de acuerdo a
la polaridad de la función que se esté sintetizando; esto es transparente para el usuario y se
ejecuta automáticamente de acuerdo al programa. También hay un buffer inversor con
tercer estado que permite utilizar el terminal de salida como entrada en los casos
necesarios. En esta variante, llamada compleja, el buffer inversor con tercer estado se
controla mediante un término producto para lo que se dedica una de las ocho compuertas
AND asociada a la macro celda. Los siete términos producto restantes se utilizan para
sintetizar la función deseada. Hay una versión llamada simple, mostrada en la Figura 2-5b),
donde los ocho términos producto se utilizan para sintetizar la función y en ese caso la
entrada de control del buffer inversor con tercer estado se conecta a la fuente de
alimentación para que el mismo sea transparente. En el 16V8 hay ocho macro celdas
Iguales. Note, además, la conexión de la salida hacia las entradas, presente en seis de sus
ocho macro celdas, lo que permite realimentar la variable de salida, o sea, se puede utilizar

8
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
también como entrada. En la Figura 2-6 se muestra la distribución de terminales del 16V8
en su versión compleja.

16V8C

1 I1
2 19
I2 O1
3 I3 18
IO2
4 I4 17
IO3
5 D5
I5 16
IO4
6 D6 15
I6 IO5
7 I7 14
IO6
8 13
I8 IO7
9 B 12
I9 O8
11
I10

Figura 2-6. Distribución de terminales del 16V8 en su versión compleja.


Los terminales 10 y 20, no representados, son los de alimentación.

Como se puede apreciar, el 16V8 tiene 16 entradas posibles y 8 salidas, por eso se utilizan
los números 16 y 8 en su nombre. Hay 6 terminales que se pueden utilizar como entradas o
salidas o ambas cosas a la vez, 10 terminales son sólo de entrada y 2 son solamente de
salida. En una aplicación determinada la suma de las entradas más las salidas nunca puede
ser mayor de 18 que es el número de terminales disponibles para ellas ya que en total el
envase tiene 20 terminales.
Otros datos sobre este dispositivo pueden hallarse en las hojas de dato dada por sus
fabricantes [3, 4, 5].

El diagrama lógico completo del 16V8 se muestra en la Figura 2-7. Las 32 líneas verticales
representan cada una de las entradas de las compuertas AND.

9
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Figura 2-7. Diagrama lógico del 16V8 en su versión compleja. Los terminales 12 y 19 son
únicamente de salida y los del 1 al 11 solamente de entrada.

10
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

22V10.
Con el 22V10 se pueden sintetizar los mismos circuitos que con el 16V8 y otros mayores
ya que este tiene diez macro celdas y un número mayor de términos producto. Las
compuertas que forman el arreglo AND tienen 44 entradas cada una para asimilar las 22
variables posibles de entrada tanto negadas como sin negar. Al igual que el 16V8, con este
PAL, se pueden diseñar circuitos lógicos combinacionales y también secuenciales
La macro celda combinacional del 22V10 y la distribución de sus terminales en su versión
combinacional se muestra en la Figura 2-8:

Figura 2-8. a) Macro celda combinacional del 22V10. La cantidad de términos productos en
cada macro celda varía desde 8 hasta 16. b) Distribución de terminales del 22V10 en su
versión combinacional. Los terminales 12 y 24, no representados, son los de alimentación.

Como se puede apreciar, el 22V10 tiene 22 entradas posibles y 10 salidas, por eso se
utilizan los números 22 y 10 en su nombre. Hay 10 terminales que se pueden utilizar como
entradas o salidas o ambas cosas a la vez y 12 terminales son sólo de entrada. En una
aplicación determinada la suma de las entradas más las salidas nunca puede ser mayor de
22 que es el número de terminales disponibles para ellas ya que en total el envase tiene 24
terminales. El diagrama lógico del 22V10 se puede encontrar en las Referencias [1-2].

Tiempo de propagación (tpd).


El tiempo de propagación se define como el tiempo que debe transcurrir a partir de que la
señal de entrada sea válida para que la salida combinacional sea válida. El tiempo de
propagación es del orden de los nanosegundos. Algunos fabricantes agregan el número que
representa este tiempo en el nombre del dispositivo, por ejemplo, PALCE16V8-10PC
significa que en este dispositivo tpd = 10ns.

11
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Figura 2-9. Definición del tiempo de propagación (tpd). Otros índices, tales
como consumo, frecuencia máxima, etc. Pueden hallarse en la hoja de datos que
suministran los fabricantes.

PLD complejos (CPLD). Un CPLD está formado por un conjunto de PLD simples
con un sistema de interconexión entre los mismos que permite aprovechar mejor los
recursos de que estos disponen. Estos dispositivos le brindan al diseñador un número mayor
de macro celdas y de términos productos lo que permite sintetizar sistemas digitales
mayores tanto combinacionales como secuenciales. En la Figura 2-10 se muestra la
arquitectura de un CPLD:

PLD PLD PLD PLD

Interconexión programable

PLD PLD PLD PLD

= Bloque de entrada/salida

Figura 2-10. Arquitectura de un CPLD.

Al igual que ocurre con los SPLD, en el mercado hay disponibles muchos tipos de CPLD
producidos por diferentes firmas entre ellas la familia C370 de Cypress [3]
y la familia XC9500 de Xilinx [4]. En la familia XC9500 cada uno de los PLD, bloques
funcionales, que forman su arquitectura tiene 18 macro celdas y cada macro celda tiene
asociadas cinco compuertas AND de 72 entradas cada una lo que permite aplicar hasta 36
variables de entrada. Cada uno de estos bloques funcionales puede ser considerado como

12
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
equivalente a un PAL 36V18. Aunque cada macro celda tiene asociadas solamente cinco
compuertas AND dentro de cada bloque funcional todas las compuertas AND del mismo
pueden utilizarse por cualquiera de sus macro celdas de manera tal que pudiera llegarse a
tener hasta 90 (18x5) compuertas AND en una macro celda. En la Figura 2_11 b) se ilustra
esta combinación de compuertas AND:

Figura 2-11. a) Grupo de cinco AND correspondiente a una macro celda de un CPLD de la
familia XC9500 b) Combinación de compuertas AND de dos macro celdas
para disponer de diez términos producto.

La Familia XC9500 tiene seis dispositivos que van desde el XC9536 hasta el XC95288, los
dígitos que aparecen a la derecha del 95 dan la cantidad total de macro celdas que posee
cada dispositivo. En la Tabla 2-1 se puede apreciar todo lo anterior:

CPLD XC9536 XC9572 XC95108 XC95144 XC95216 XC95288


No. de macro celdas 36 72 108 144 216 288
No. de bloques 2 4 6 8 12 16
funcionales

Tabla 2-1. Total de macro celdas y de bloques funcionales de cada CPLD de la Familia
XC9500.

En la Tabla 2-2 se muestra los diferentes envases en que se ofertan los CPLD de la Familia
XC9500:

13
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Cantidad de terminales accesibles


Tipo de Envase XC9536 XC9572 XC95108 XC95144 XC95216 XC95288
44-Pin VQFP 34
44-Pin PLCC 34 34
84-Pin PLCC 69 69
100-Pin TQFP 72 81 81
100-Pin PQFP 72 81 81
160-Pin PQFP 108 133 133
208-Pin HQFP 166 168
352-Pin BGA 166 192
VQFP: Very Thin Quad Flat Pack, PLCC: Plastic Leaded Chip Carrier, TQFP: Thin Quad Flat
Pack, PQFP: Plastic Quad Flat Pack, HQFP: Heat Sink Quad Flat Pack, BGA: Plastic Ball
Grid Array

Tabla 2-2. Encapsulado de los CPLD de la Familia XC9500.

Otra ventaja importante que ofrecen al diseñador los CPLD es que un mismo dispositivo se
oferta en diferentes envases lo que permite escoger el más adecuado de acuerdo a la
aplicación de que se trate. Además se puede cambiar de dispositivo sin cambiar de envase
lo que posibilita utilizar la misma tarjeta de circuito impreso en el caso de que ya esta
existiera. Todos los terminales externos son de entrada/salida lo que posibilita utilizarlos
como entradas, como salidas o como ambas cosas a la vez.
Macro celdas enterradas. En la Tabla 2-2 se puede ver que el número total de terminales
accesibles es, en general, menor que el total de macro celdas del CPLD esto significa que
hay macro celdas cuyas salidas no son accesibles externamente, se dice que ellas están
“enterradas” dentro del dispositivo. Esto se debe a que en el diseño de un circuito o sistema
digital grande puede haber salidas de macro celdas que no se necesitan externamente ya que
las mismas sólo se utilizan internamente en la realización de alguna parte de la lógica
necesaria.

FPGA. Los arreglos de compuertas programables por campo son dispositivos con
mayores posibilidades aun que los CPLD para diseñar sistemas digitales grandes tanto
combinacionales como secuenciales. Están formados por una gran cantidad de bloques
programables, cada uno de estos bloques tienen menos posibilidades que los bloques
funcionales de un CPLD pero hay una cantidad de ellos mucho mayor por unidad de área.
Estos bloques se encuentran distribuidos en un mar de interconexiones programables. El
arreglo posee además bloques de entrada/salida que también son programables. Al igual
que en los casos estudiados anteriormente, existen numerosos tipos de FPGA ofertados por
diferentes firmas entre ellas puede señalarse la Familia XC4000E de Xilinx [1,4] y la nueva
familia ORCA de Lattice Semiconductor [5].
Recientemente, como resultado de los trabajos de desarrollo encaminados a la obtención de
dispositivos analógicos programables, ha sido introducido el FPAA, arreglo analógico
programable por campo. Su tecnología es similar a la de los FPGA. Entre las funciones que
pueden seleccionarse con el software correspondiente se encuentran rectificadores, etapas
de ganancia, filtros y osciladores [6].

14
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Lenguajes de descripción de hardware. Introducción al VHDL.

La utilización de los PLD en el diseño digital requiere, además del dispositivo programable,
de un programador y del software correspondiente. Este software en el caso de los PAL,
CPLD y FPGA es un lenguaje de descripción de hardware.
Un lenguaje de descripción de hardware (HDL) es una herramienta formal que sirve para
describir el comportamiento y la arquitectura de un circuito o sistema electrónico utilizando
diferentes niveles de abstracción y en muchos casos el modo jerárquico. Aquí nos
ocuparemos solamente de los HDL utilizados para el diseño digital.

Existen distintos tipos de HDL, generalmente se clasifican en tres niveles:

• HDL de bajo nivel: Permiten definir un circuito a nivel de su arquitectura con poco
nivel de abstracción. Ejemplos de esto son ABEL y PALASM. En la Referencias
[1-2] pueden encontrarse algunas de las características del lenguaje ABEL y
numerosos ejemplos de diseño digital empleando este lenguaje. En el Capítulo 4 de
la Referencia [7] hay varios ejemplos de CLC diseñados con PALASM.

• HDL de nivel medio: Permiten definir un circuito con mayor nivel de abstracción y
utilizar el modo jerárquico. Un lenguaje de este tipo es el AHDL de Altera [8] .

• HDL de alto nivel: Permiten definir un circuito o sistema con un gran nivel de
abstracción, además de utilizar el modo jerárquico. Lenguajes de este tipo son
VERILOG y VHDL, ambos han alcanzado una gran difusión a nivel internacional y
son estándares de la IEEE. En este Texto se utiliza el VHDL debido a su
importancia creciente [9, 10, 11].

VHDL. Es un lenguaje de descripción de hardware concebido para el diseño de circuitos


integrados de muy alta velocidad. Surgió a mediados de los años 80 y desde 1987 se
convirtió en un estándar de la IEEE. Los diseños se pueden descomponer en forma
jerárquica de arriba abajo (top down). Cada modelo posee una interfase (entidad) bien
definida que permite su conexión con otros elementos y una arquitectura donde se
especifica su funcionamiento lo que permite su simulación. El diseño jerárquico permite
diseñar los diferentes bloques de un sistema en forma paralela por distintos equipos de
diseñadores ubicados incluso en lugares geográficos distantes donde cada grupo diseña la
parte que le corresponda de acuerdo a los requisitos que se le establezcan sin necesidad de
conocer el resto del sistema (compartimentación) lo que es una gran ventaja desde muchos
puntos de vista. Un grupo central se encarga de concebir el sistema, trazar las directivas de
trabajo para los restantes grupos y reunir los diferentes bloques que lo constituyen cuando
los mismos están listos.

15
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
Utilizando VHDL se puede diseñar, simular y sintetizar desde un CLC sencillo, como los
ejemplos que se muestran en este Texto, hasta sistemas digitales de gran complejidad tal
como un microprocesador [9].

Estructura de VHDL. Como se planteó anteriormente, VHDL está formado por la


pareja Entidad-Arquitectura (Entity-Architecture). A la pareja entidad-arquitectura se le
llama modelo en VHDL. Un fichero nombre.vhd puede contener uno o varios modelos.
En la entidad se declaran los terminales de entrada y de salida, en VHDL estos terminales
se llaman port (puertos), del circuito o sistema que se desea diseñar.
En la arquitectura se define qué hace el circuito o cómo lo hace.
Por lo tanto, un diseño en VHDL será un fichero texto (no un dibujo), escrito en cualquier
editor de texto, donde en la primera parte aparece la declaración de la entidad (entity) y a
continuación la definición de la arquitectura (architecture). La definición de la arquitectura
puede hacerse con un gran nivel de abstracción como se requiere en el diseño de sistemas o
circuitos muy complicados donde el diseñador, generalmente, lo único que sabe es lo que
necesita pero no qué circuito lo hace. Compare esto con otros programas empleados en el
diseño electrónico, por ejemplo Pspice, donde el diseñador tiene que conocer de antemano
el circuito que presumiblemente sirve para resolver su problema. En la Figura 2-12 se
ilustra la estructura de un modelo en VHDL.

File texto (nombre.vhd)

Declaración de la
Entidad.

Definición de la
Arquitectura.

Figura 2-12. Estructura de un modelo en VHDL.

Sintaxis para la declaración de la entidad.


La sintaxis para la declaración de la entidad es la siguiente (aparecen en mayúscula las
palabras reservadas del lenguaje VHDL, pero esto no es necesario):

ENTITY nombre_entidad IS
PORT ( Nombre de señal : modo tipo de la señal ;
...
Nombre de señal : modo tipo de la señal ) ;

16
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

END nombre_entidad ;

Modo de las señales. En VHDL las señales pueden tener cuatro modos diferentes:

IN, OUT, BUFFER, INOUT

IN En este modo las señales sólo entran en la entidad.


OUT En este modo las señales salen de la entidad
BUFFER Este modo se utiliza para las señales que además de salir de la entidad pueden
usarse como entradas realimentadas.
INOUT Este modo se utiliza para las señales bidireccionales. Se puede asignar como
sustituto de los tres modos restantes; pero no se aconseja porque dificulta
comprender el programa.

Cuando se omite el modo de una señal en la declaración de la entidad se sobreentiende que


es de entrada.

Tipo de las señales. En VHDL hay varios tipos de señales predefinidos por el lenguaje,
tales como:

Bit, boolean, std_logic, bit_vector, integer, std_logic_vector

Además el usuario puede definir otros tipos, lo que resulta muy conveniente en algunos
casos, como por ejemplo en el diseño de máquinas de estado.
El lenguaje VHDL concede máxima importancia a los tipos de las señales, por ejemplo no
se admite realizar una asignación mezclando tipos diferentes. Algunas características de los
tipos predefinidos están dadas en la Tabla 2-3.

Tipo Características
Bit En este tipo las señales sólo toman los valores ‘1’ y ‘0’
Boolean En este tipo las señales sólo toman los valores True y False
Std_logic En este tipo las señales toman nueve valores, entre ellos
tenemos: ‘1’, ‘0’, ‘Z’ (para el tercer estado),
‘-’ (para los opcionales)
Integer En este tipo las señales toman valores enteros. Los 1 y 0
aquí van sin ‘’
Bit_vector En este tipo los valores de las señales son una cadena de
unos y ceros. Una cadena se escribe entre comillas.
Ejemplo: “1000”
Std_logic_vector En este tipo los valores de las señales son una cadena de
los nueve valores permisibles para el tipo std_logic.
Ejemplo: “1-0Z”

Tabla 2-3. Algunas características de los tipos predefinidos en VHDL.

17
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Ejemplo 2-1. Escriba la declaración de identidad para un circuito digital con dos entradas
(a, b) y una salida f, como el mostrado:

ENTITY
a
f
b

Solución:

ENTITY ejemplo1 IS

PORT ( a, b : IN bit ;
f : OUT bit ) ;
END ejemplo1 ;

En este caso ejemplo1 es el nombre asignado a la entidad,


IN es el modo de las señales de entrada a y b. Se pueden escribir en una misma línea
separadas por comas o en líneas aparte,
OUT es el modo de la señal de salida,
Bit es el tipo de las señales de entrada y de salida.

Sintaxis para la definición de la arquitectura.


La sintaxis para la definición de la arquitectura es la siguiente (aparecen en mayúscula las
palabras reservadas del lenguaje VHDL, pero esto no es necesario):

ARCHITECTURE nombre_arquitectura OF nombre_entidad IS


Declaración de tipos
Declaración de señales
Declaración de constantes
Declaración de componentes
Definición de funciones
Definición de procedimientos
BEGIN
Sentencia concurrente
...
Sentencia concurrente
END nombre_arquitectura ;

Las declaraciones y definiciones que preceden a BEGIN pueden estar presentes todas,
algunas o ninguna, esto depende del tipo de diseño que se esté realizando. No obstante la
declaración de señales se utiliza mucho pues contribuye, entre otras cosas, a la claridad del
diseño.

18
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Ejemplo 2-2. Escriba la definición de arquitectura para la entidad del Ejemplo 2-1
suponiendo que el circuito es una compuerta AND.

Solución:

ARCHITECTURE and_2ent OF ejemplo1 IS


BEGIN
f <= a AND b ;
END and_2ent ;

En VHDL hay una gran flexibilidad para escribir la arquitectura de una identidad
determinada. Otra forma es la siguiente:

ARCHITECTURE and_2ent OF ejemplo1 IS


BEGIN
f <= ‘1’ WHEN a = ‘1’ AND b =’1’ ELSE
‘0’ ;
END and_2ent ;

Ejemplo 2-3. Veamos ahora, otra situación donde tenemos un circuito con dos entradas
(a, b) y una salida f. La entidad es igual a la del Ejemplo 2-1; pero supongamos que la
función que realiza el circuito es tal que la salida será 0 sólo si las entradas son iguales (el
circuito realiza la operación XOR). Escriba el programa en VHDL para sintetizar este
circuito.

Solución:
La entidad es la misma del Ejemplo 1, sólo es necesario cambiar la arquitectura. Esta es una
forma posible de escribir el programa:

ENTITY ejemp2_3 IS -- Sólo se cambió el nombre de la entidad


PORT ( a, b: IN bit ;
f: OUT bit ) ;
END ejemp2_3 ;

ARCHITECTURE dos_ent OF ejemp2_3 IS


BEGIN
f <= '1' WHEN a / = b ELSE -- También podíamos escribir:
'0' ; -- f <= a xor b ;
END dos_ent ;

En VHDL lo que se escribe después de -- es un comentario

19
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Operadores en VHDL.
En VHDL existen diferentes operadores entre ellos tenemos: operadores lógicos, de
relación, aritméticos y de concatenación.

Debajo se muestran algunos de ellos:


Operadores Definidos en el lenguaje VHDL para los tipos:
Lógicos: AND, OR, XOR, Bit y Boolean
NOT, NAND, NOR y XNOR
De relación: = , /= , < , > Integer, Bit y Bit_vector
, >= , <=
Aritméticos: + , - , Integer
* (multiplicación sólo por 2)
Concatenación: & Bit, Bit_vector y para las cadenas

Tabla 2-4. Algunos operadores en VHDL.

Asignaciones condicionales en VHDL.


En VHDL hay varias asignaciones que se realizan en forma condicionada. En este capítulo
se utilizan dos de ellas:

WITH ..... SELECT .. WHEN ... OTHERS

WHEN ... ELSE ...

Esta última ya se empleó en los ejemplo 2-2 y 2-3 y será utilizada nuevamente en el
siguiente:

Ejemplo 2-4. Escriba en VHDL un fichero para obtener una compuerta NOR de dos
entradas. Utilice señales tipo boolean y asignaciones condicionales de la forma when ...
else.

Solución:

entity boole4 is port ( a, b : in boolean ;


y : out boolean ) ;
end boole4;

architecture boole4_a of boole4 is begin


y <= true when a = false and b = false else
false ;
end boole4_a ;

20
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
Ejemplo 2-5.
Repita el diseño anterior; pero utilice asignaciones condicionales de la forma
with ..... select .. when ... others

Solución:
-- fichero boole2_5.vhd

entity boole5 is port ( a, b : in boolean ;


y : out boolean ) ;
end boole5 ;

architecture boole5_a of boole5 is begin


with a select
y <= false when true,
not b when others ;
end boole5_a ;

Note la diferencia entre las arquitecturas de estos dos Ejemplos; sin embargo en ambos
casos se obtiene el mismo resultado, la operación NOR.

Bibliotecas y paquetes en VHDL.

Bibliotecas. Una biblioteca en VHDL es un lugar donde se guarda la información


relacionada con un diseño determinado. Al comienzo de cada diseño el compilador crea
automáticamente una biblioteca llamada Work con este objetivo. Además de esta biblioteca
particular existen otras bibliotecas de tipo general que contienen un conjunto de
definiciones que pueden utilizarse en cualquier diseño. Un ejemplo de biblioteca general es
la llamada Library ieee la que contiene definiciones estándar para VHDL. Para poder
utilizar una biblioteca general es necesario escribir su nombre al inicio del programa, por
eso es muy común que en la primera línea de un diseño en VHDL aparezca escrito
Library ieee ; De esta forma dicha biblioteca se hace visible para el diseño de que se trate.

Paquetes. En los paquetes se guardan definiciones de tipos y objetos que pueden ser
utilizados en los diferentes diseños que invoquen su utilización. Un paquete muy utilizado
es el paquete estándar IEEE.STD_LOGIC_1164. La utilización de un paquete en un diseño
se realiza invocando su empleo mediante la cláusula Use nombre del paquete. Un ejemplo
de esto es la siguiente línea:
Use IEEE.STD_LOGIC_1164.ALL ;
La terminación .ALL permite utilizar todas las definiciones y objetos que contiene dicho
paquete. Además del estándar, existen otros paquetes de utilización general y también los
diseñadores que trabajan con VHDL pueden definir sus propios paquetes lo que les permite
reutilizar diseños realizados anteriormente como parte de nuevos diseños.

21
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Sintaxis para la definición de un paquete.


La sintaxis para la definición de un paquete es la siguiente:

PACKAGE nombre_paquete IS
Declaración de tipos
Declaración de señales
Declaración de constantes
Declaración de componentes
Declaración de funciones
Declaración de procedimientos
END nombre_paquete ;

PACKAGE BODY nombre_paquete IS


Declaración de tipos
Declaración de constantes
Definición de funciones
Definición de procedimientos
END nombre_paquete ;

Esta última parte que aparece entre los dos END, la relacionada con el cuerpo del paquete,
puede o no existir y en el caso de existir las declaraciones y definiciones contenidos en la
misma son locales, visibles sólo dentro del paquete; mientras que las declaraciones y
definiciones contenidos en la primera parte del paquete, son visibles para todos los diseños
que lo utilicen.

Sintaxis para la declaración de un componente en VHDL.


La sintaxis para la declaración de un componente es la siguiente:

COMPONENT nombre_componente

PORT ( Nombre de la señal: modo tipo de la señal ;


...
Nombre de la señal: modo tipo de la señal ) ;

END COMPONENT ;

Extensión (Overload) de los operadores en VHDL.


La validez de los operadores dados en la Tabla 2-4 se ha extendido a otros tipos para los
que no estaban originalmente definidos Por ejemplo el paquete estándar
IEEE.std_logic_1164 define la extensión de los operadores lógicos para los tipos std_logic
y std_logic_vector. Sin embargo la extensión de los operadores de relación y aritméticos
para los tipos std_logic y std_logic_vector no están definidos en el paquete estándar sino en
otro paquete llamado Work.std_arith.

22
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Ejemplo 2-6. Diseñe un buffer con tercer estado semejante al dado en la Figura 1-12 del
Capítulo 1 cuya Tabla de la verdad es la siguiente:

EN_L A Y
1 – Tercer estado
0 0 0
0 1 1

Solución:

-- fichero Ejem2_6.vhd

Library ieee ;
Use ieee.std_logic_1164.all ;

entity ejem2_6 is port ( EN_L, A : in STD_LOGIC ;


Y : out STD_LOGIC ) ;
end ejem2_6;

architecture ejem2_6 of ejem2_6 is


begin
Y <= A when EN_L = '0' else
'Z' ;
end ejem2_6 ;

En este caso hay que utilizar el tipo std_logic que es el que tiene el tercer estado entre sus
valores. Esto exige la utilización de la biblioteca Library ieee y del paquete estándar
ieee.std_logic_1164.all que es donde están las definiciones necesarias para poder trabajar
con el tipo std_logic.

Diseño jerárquico en VHDL.


En VHDL un diseño puede utilizar “componentes” que son a su vez otros circuitos o
sistemas más sencillos previamente diseñados. Como se dijo antes esto constituye una gran
ventaja pues facilita el trabajo en equipo y la distribución de tareas entre distintos grupos de
diseñadores. A medida que se sube hacia el nivel de jerarquía máxima, la arquitectura se
hace más general mientras que en los niveles inferiores el grado de detalle es mayor. En la
Figura 2-13 se presenta un esquema que ilustra los diferentes niveles jerárquicos.

23
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Entidad 1 (Nivel de jerarquía máxima)

Arquitectura 1

Entidad 2 Entidad 3

Arquitectura Arquitectura

Entidad 4

Arquitectura 4

Figura 2-13. Niveles jerárquicos en VHDL

Ejemplo 2-7. Utilice VHDL y diseñe un CLC con tres entradas a, b, c y una salida T que
realice la función mostrada en la Tabla siguiente:

Entradas Salida
a b c T
0 0 - 0
0 1 0 0
0 1 1 1
1 0 - 1
1 1 - 0

Solución:

-- fichero t.vhd
entity T is port ( a,b,c : in bit ;
T : out bit ) ;
end T ;

architecture T of T is begin
T <= '1' WHEN a = '0' and b = '1' and c = '1' ELSE
'1' WHEN a = '1' and b = '0' ELSE
'0' ;
end T ; -- Note el tratamiento dado a los opcionales.

-- Ahora lo empaquetamos para poder reutilizarlo en otro diseño:


PACKAGE TPKG IS
COMPONENT T -- El nombre del componente tiene que ser igual al de la
-- identidad que se empaqueta

24
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
port ( a,b,c : in bit ;
T : out bit ) ;
END COMPONENT ;
END TPKG ;

Ejemplo 2-8. Utilice VHDL y diseñe un CLC con tres entradas a, b, c y una salida W que
realice la función mostrada en la tabla siguiente:

Entradas Salida
a b c W
0 - - 1
1 0 - 0
1 1 0 0
1 1 1 1

Solución:

-- fichero W.vhd
entity W is port ( a,b,c : in bit ;
W : out bit);
end W;

architecture W of W is begin
W <= '1' WHEN a = '0' ELSE
'1' WHEN b = '1' and c = '1' ELSE
'0' ;
end W ;

-- Note el tratamiento dado a los opcionales.

-- Ahora lo empaquetamos para poder reutilizarlo en otro diseño:


PACKAGE WPKG IS
COMPONENT W -- El nombre del componente tiene que ser igual al de la
-- identidad que se empaqueta
port (
a,b,c : in bit ;
W : out bit ) ;
END COMPONENT ;
END WPKG ;

Ejemplo 2-9. Utilice el diseño jerárquico en VHDL y diseñe un CLC con tres entradas a,
b, c y una salida F que realice la función T dada en el Ejemplo 2-7 o la función W dada en
el Ejemplo 2-8, de acuerdo al valor que tome una entrada adicional de selección, S .
Cuando S =’0’ la salida debe ser F = T y para S =’1’ será F = W.

25
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

S F
0 T
1 W

Solución:

-- fichero pprincip.vhd Diseño jerárquico

USE WORK.TPKG.ALL ; -- Hace visible el paquete tpkg


USE WORK.WPKG.ALL ; -- Hace visible el paquete wpkg

entity pprincip is port ( s,a,b,c : in bit ;


F : out bit ) ;
End pprincip ;

architecture pprincip of pprincip is


signal S0, S1 : bit ; -- Las señales dentro de la arquitectura no tienen modo sólo tipo.
Begin

T0 : T port map (a, b, c, S0) ;

W0: W port map (a, b, c, S1) ;

-- T0 y WO son etiquetas obligatorias. Sus nombres son arbitrarios.

F <= S0 WHEN S = '0' ELSE S1 ;


End pprincip ;

-- Note la falta de detalles en el programa principal.

Síntesis de CLC utilizando PLD y circuitos integrados SSI.

Ejemplo 2_10. Diseñe un CLC que realice la suma de dos números enteros de dos bits cada
uno. Utilice señales de tipo integer.

Solución:

26
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
-- fichero: suma.vhd
entity suma is
port (
a, b: in integer range 3 DOWNTO 0 ;
salida: out integer range 6 DOWNTO 0
) ;
end suma ;

architecture suma of suma is


begin
salida <= a + b ;
end suma ;

Ejemplo 2_11. Diseñe un CLC para obtener el módulo de la diferencia de dos números
enteros de dos bits cada uno. Utilice señales de tipo integer.

entity resta is
port (
a, b: in integer range 3 downto 0 ;
salida : out integer range 3 downto 0 ) ;
end resta ;

architecture resta of resta is


begin
salida <= a - b when a >= b else
b-a ;
end resta ;

Ejemplo 2-12. Diseñe un CLC que realice la operación 2a + b, donde a y b son dos
números enteros de tres bits cada uno. Utilice señales de tipo integer.

Solución:

--Fichero: multi.vhd
entity multipli is
port (a, b: in integer range 7 DOWNTO 0 ;
salida : out integer range 21 DOWNTO 0 ) ;
end multipli ;

architecture multipli of multipli is


begin

27
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
salida <= ((a*2) + b) ;
-- Un entero sólo se puede multiplicar por números que sean potencias de 2.
end multipli ;

Ejemplo 2-13. Diseñe un CLC que realice la multiplicación de dos números enteros de dos
bits cada uno. El circuito debe tener además una entrada de habilitación (EN_L) activa en el
nivel bajo tal que las salidas estén transparentes cuando EN_L =’0’ y estarán en tercer
estado cuando EN_L =’1’.

-- Solución. Fichero: producto.vhd

library IEEE ;
use IEEE.std_logic_1164.all ;
use work.std_arith.all ;

entity producto is
port (EN_L : in bit ;
a, b : in STD_LOGIC_VECTOR (1 DOWNTO 0) ;
salida : buffer STD_LOGIC_VECTOR (3 DOWNTO 0) ) ;
end producto ;

Architecture prod_arc of producto is


signal Y : STD_LOGIC_VECTOR (3 DOWNTO 0) ; -- Las señales dentro de la
-- arquitectura no tienen modo.
BEGIN
Y <= a*b ; -- El tipo std_logic_vector permite multiplicar por números /= 2.

WITH EN_L SELECT


salida <= y WHEN '0' ,
"ZZZZ" WHEN OTHERS ;
end prod_arc ;
-- "ZZZZ" es una cadena. Estas Z tienen que ser mayúsculas.

Ejemplo 2-14. Diseñe con VHDL un circuito digital con cinco entradas y una salida F tal
que F = 1 cuando cuatro o más de sus entradas estén en el nivel alto y F = 0 en cualquier
otro caso.
Este es el mismo problema planteado en el Ejemplo 1-14. Compare ambas soluciones.

Solución:

-- Fichero: Ejem2_14.vhd

28
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
library IEEE;
use IEEE.std_logic_1164.all ;

ENTITY Ejem2_14 IS
PORT (
N : in integer range 31 downto 0 ;
F1: OUT STD_LOGIC ) ;
END Ejem2_14 ;

Architecture Ejem2_14 of Ejem2_14 is


begin

with n select

F1 <= '1' when 15|23|27|29|30|31,


'0' when others ;
END Ejem2_14 ;

Ejemplo 2-15. Diseñe con VHDL un circuito lógico combinacional que recibe en sus
entradas los dígitos del sistema numérico decimal escritos en código BCD y tiene una
salida W que se activa en el nivel alto cuando el número en las entradas es impar.
Este es el mismo problema planteado en el Ejemplo 1-15. Compare ambas soluciones.

Solución:
-- Fichero:Ejem2_15

library IEEE ;
use IEEE.std_logic_1164.all ;

ENTITY Ejem2_15 IS
PORT (
N : in integer range 15 downto 0 ;
W: OUT STD_LOGIC ) ;
END Ejem2_15 ;

Architecture Ejem2_15 of Ejem2_15 is


begin

with n select

W <= '1' when 1|3|5|7|9,


'-' when 10|11|12|13|14|15,
'0' when others ;
END Ejem2_15 ;

29
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
-- Note el tratamiento de los opcionales en la función de salida.

Ejemplo 2-16. Diseñe con VHDL un circuito lógico combinacional correspondiente a la


función siguiente:

F(N4,N3,N2,N1,N0) = ∑ (0,4,10,11,13,15,16,29) + ∑ (2,14,20)


(-)
Este es el mismo problema planteado en el Ejemplo 1-16. Compare ambas soluciones.

Solución:

-- Fichero: Ejem2_16
library IEEE ;
use IEEE.std_logic_1164.all ;

ENTITY Ejem2_16 IS
PORT (
N : in integer range 31 downto 0 ;
F : OUT STD_LOGIC ) ;
END Ejem2_16 ;

Architecture Ejem2_16 of Ejem2_16 is


begin

with n select
F <= '1' when 0|4|10|11|13|15|16|29,
'-' when 2|14|20,
'0' when others ;

END Ejem2_16 ;

Atributos en VHDL.
Los atributos (attribute) en VHDL tienen diversos usos, uno de ellos es el de especificar los
terminales externos donde se desea que aparezcan determinadas señales. En el Ejemplo
2-17 se ilustra esta utilización.

30
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
Ejemplo 2-17. Escriba un fichero en VHDL para obtener las ocho compuertas lógicas.
Utilice los atributos para asignar las señales en pines específicos, suponga que el
dispositivo programable es un 22v10 y que el terminal 1 no debe utilizarse.

Solución:

--Fichero puertas.vhd

Entity puertas is
port ( A, B : in bit ;
y_not, y_or2, y_and2 : out bit ;
y_nor2, y_nand2, y_xor2, y_xnor2, y_buffer: out bit ) ;

Attribute pin_numbers of puertas: entity is

"A:2 "&"B:3 "&"y_not:23 "&"y_or2:22 "&"y_and2:21 "


&"y_nor2:20 "&"y_nand2:19 "&"y_xor2:18 "&"y_xnor2:17 "&"y_buffer:16 " ;

END puertas ;

Architecture puertas of puertas is


begin
y_not <= not a ;
y_or2 <= a or b ;
y_and2 <= a and b ;
y_nor2 <= a nor b ;
y_nand2 <= a nand b ;
y_xor2 <= a xor b ;
y_xnor2 <= a xnor b ;
y_buffer <= a ;
end puertas ;

En el Anexo 2 aparece un fragmento del fichero puertas.rpt que brinda el compilador de la


plataforma de diseño empleada [3]. Este fichero contiene, entre otras cosas, las ecuaciones
de diseño, la distribución de terminales del circuito integrado 22V10 que es el utilizado en
este diseño.

También se incluye el fichero puertas.jed que es el que sirve para simular el diseño y
programar el dispositivo. Finalmente se presentan los resultados de la simulación.

31
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Referencias.
[1] J. F. Wakerly, Electronic Design: Principles and Practices, Third Edition, Prentice
Hall, New Jersey, 2000.

[2] J. F. Wakerly, Electronic Design: Principles and Practices, Second Edition, Prentice
Hall, New Jersey, 1994.

[3] www.cypress.com

[4] www.xilinx.com

[5] http://www.latticesemi.com/

[6] B. Martin, Automation Comes to Analog, IEEE Spectrum, Vol.38, pp 70-75, Jun. 2001.

[7] A. Hernández y N. Domínguez, Folleto de Prácticas de Laboratorio de Electrónica


Digital, CIME, enero/99.

[8] www.altera.com

[9] K. Skahill, VHDL for Programmable Logic, Addison-Wesley, 1996.

[10] Cypress, VHDL Training for PLDs, CPLDs and FPGAs, Cypress
Semiconductor,1996.

[11] J. L. Perdomo y A. Hernández, Introducción del VHDL en la docencia de pregrado,


Revista Ingeniería Electrónica Automática y Comunicaciones, Vol. XXII, no. 3, pp. 78-80,
2001.

32
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Ejercicios.

2-1. Compruebe que en el ejemplo 2-9 la ecuación de diseño es la siguiente:

f = /s * a * /b + /a * b * c + s * b * c + s * /a

2-2. Diseñe con VHDL el CLC que realice la función siguiente:


F(N4,N3,N2,N1,N0) = Σ (0,1,5,7,8,9,12,13,14,17,21,25,27,29,30,31)

Compare esta solución con la del Ejercicio 1-10.

2-3. Diseñe con VHDL el CLC que realice las funciones siguientes:

F1(n3,n2,n1,n0) = ∑(0,2,9,10) + ∑ (4,6,14)


(-)

F2(n3,n2,n1,n0) = ∑(1,6,8,14) + ∑(2,10,12)


(-)
Compare esta solución con la del Ejercicio 1-11.

2-4. Diseñe con VHDL el CLC que realice las funciones siguientes:

F1(n4,n3,n2,n1,n0) = ∑ (7,9,17,18,20,24,27)+ ∑ (0,3,11,14,29,31)


(-)
F2 (n4,n3,n2,n1,n0) = ∑ (3,5,8,15,16,22,26,27) + ∑(4,6,14,29)
(-)
F3 (n4,n3,n2,n1,n0) = ∑ (0,5,9,14,18,21,27,31) + ∑(3,6,13,24)
(-)
Compare esta solución con la del Ejercicio 1-12

2-5. Escriba la Tabla de funcionamiento que corresponde al siguiente diseño,

-- fichero Ejer2_5.vhd

Library ieee ;
Use ieee.std_logic_1164.all ;

entity Ejer2_5 is port (


EN_L, A, B, S : in STD_LOGIC ;
Y : out STD_LOGIC ) ;
end Ejer2_5 ;

architecture Ejer2_5 of Ejer2_5 is


signal Yi: STD_LOGIC ;

33
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

begin

Yi <= A when S = '0' else B ;

Y <= Yi when EN_L = '0' else


'Z' ;

end Ejer2_5 ;

2-6. Diseñe con VHDL un CLC que funcione de acuerdo a la Tabla siguiente:

Entradas Salidas
I3 I2 I1 I0 Y1 Y0
1 - - - 1 1
0 1 - - 1 0
0 0 1 - 0 1
0 0 0 1 0 0

Repita este diseño utilizando los circuitos integrados disponibles en la Tabla 1-7. Compare
ambas soluciones.

2-7. Diseñe con VHDL un CLC que funcione de acuerdo a la Tabla siguiente:

Entradas Salidas
G_L B A Y3 Y2 Y1 Y0
1 - - 0 0 0 0
0 0 0 0 0 0 1
0 0 1 0 0 1 0
0 1 0 0 1 0 0
0 1 1 1 0 0 0

Repita este diseño utilizando los circuitos integrados disponibles en la Tabla 1-7. Compare
ambas soluciones.

2-8. Escriba la Tabla de funcionamiento que corresponde al diseño siguiente:

entity ejer2_8 is
port ( a, b : in bit_vector (3 downto 0) ;
S, EN_L : in bit ;
y : out bit_vector (3 downto 0) ) ;
end ejer2_8 ;

architecture ejer2_8 of ejer2_8 is


signal yi : bit_vector (3 downto 0) ;

34
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

begin

yi <= a when s = '0' else b ;

WITH EN_L SELECT


y <= yi when '0' ,
"0000" when others ;

end ejer2_8 ;

2-9. Diseñe con VHDL un CLC que tenga dos entradas de selección S1, S0 y cuatro
entradas de datos D0, D1, D2, D3 y una salida Y que funcione de acuerdo a la Tabla
siguiente:

S1 S0 Y
0 0 D0
0 1 D1
1 0 D2
1 1 D3

Repita este diseño utilizando los circuitos integrados disponibles en la Tabla 1-7. Compare
ambas soluciones.

2-10. Explique detalladamente la aplicación práctica del circuito siguiente:

entity ejer2_10 is
port ( b7, b6, b5, b3, b4, b2, b1 : in bit ;
b7_out, b6_out, b5_out, b3_out, b4_out, b2_out, b1_out: out bit ) ;

end ejer2_10 ;

architecture ejer2_10 of ejer2_10 is

signal C, B, A : bit ;

begin
A <= (b7 XOR b5) XOR (b3 XOR b1) ;
B <= (b7 XOR b6) XOR (b3 XOR b2) ;
C <= (b7 XOR b6) XOR (b5 XOR b4) ;

b1_out <= not b1 when C='0' and B='0' and A='1' else b1 ;
b2_out <= not b2 when C='0' and B='1' and A='0' else b2 ;

35
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
b4_out <= not b4 when C='1' and B='0' and A='0' else b4 ;
b3_out <= not b3 when C='0' and B='1' and A='1' else b3 ;
b5_out <= not b5 when C='1' and B='0' and A='1' else b5 ;
b6_out <= not b6 when C='1' and B='1' and A='0' else b6 ;
b7_out <= not b7 when C='1' and B='1' and A='1' else b7 ;

end ejer2_10 ;

36
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

ANEXO 1
PALABRAS RESERVADAS EN VHDL*
Abs access after alias all
And Architecture array Assert Attribute
Begin Block body Buffer Bus
Case Component configuration Constant
Disconnect Downto
Else Elsif end Entity Exit
File For function
Generate Generic group guarded
If Impure In inertial Inout
Is Label library linkage Loop
Map Mod Nand
New Next nor not Null
Of On open or Others
Out Package port postponed Procedure
Process Pure range record Register
Reject Rem report return Rol
Ror Select severity signal Shared
Sla Sll sra srl Subtype
Then To transparent type Unafeccted
Units Until use variable Wait
When While with xor Xnor
* IEEE std 1076-1993. IEEE Standard VHDL Language Reference Manual

37
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

ANEXO 2

Una parte del fichero puertas.rpt es el siguiente:

================================================================
Compiling: puertas.vhd
Options: -q -o2 -ygs -fP -v10 -yb -yp -dc22v10 -pPALC22V10-20PC/PI puertas.vhd

Library 'work' => directory 'lc22v10'

----------------------------------------------------------------------------
PLD Optimizer Software: DSGNOPT.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN HEADER INFORMATION (15:55:50)

Input File(s): puertas.pla


Device : C22V10
Package : PALC22V10-20PC/PI
ReportFile : puertas.rpt

Program Controls:
None.

Signal Requests:
GROUP USEPOL ALL

Completed Successfully
----------------------------------------------------------------------------
PLD Optimizer Software: DSGNOPT.EXE 17/JUL/96 [v3.22 ] 4 IR x66

OPTIMIZATION OPTIONS (15:55:50)

Messages:
Information: Optimizing logic using best output polarity for signals:
y_xnor2 y_xor2 y_nand2 y_or2

Information: Selected logic optimization OFF for signals:


y_buffer y_nor2 y_and2 y_not

Summary:
Error Count = 0 Warning Count = 0

Completed Successfully
----------------------------------------------------------------------------

38
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
PLD Optimizer Software: MINOPT.EXE 17/JUL/96 [v3.22 ] 4 IR x66

LOGIC MINIMIZATION (15:55:50)

Messages:

Summary:
Error Count = 0 Warning Count = 0

Completed Successfully
----------------------------------------------------------------------------
PLD Optimizer Software: DSGNOPT.EXE 17/JUL/96 [v3.22 ] 4 IR x66

OPTIMIZATION OPTIONS (15:55:51)

Messages:
Information: Optimizing Banked Preset/Reset requirements.

Summary:
Error Count = 0 Warning Count = 0

Completed Successfully
----------------------------------------------------------------------------
PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN EQUATIONS (15:55:51)

y_buffer = a

y_xnor2 = /a * /b + a * b

y_xor2 = a * /b + /a * b

/y_nand2 = a * b

y_nor2 = /a * /b

y_and2 = a * b

/y_or2 = /a * /b

y_not = /a

Completed Successfully
----------------------------------------------------------------------------

39
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN RULE CHECK (15:55:52)

Messages:
None.

Summary:
Error Count = 0 Warning Count = 0

Completed Successfully
----------------------------------------------------------------------------
PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN SIGNAL PLACEMENT (15:55:52)

Messages:
Information: All signals pre-placed in user design.

C22V10
__________________________________________
not used *| 1 | |24|* not used
a=|2| |23|= y_not
b=|3| |22|= y_or2
not used *| 4 | |21|= y_and2
not used *| 5 | |20|= y_nor2
not used *| 6 | |19|= y_nand2
not used *| 7 | |18|= y_xor2
not used *| 8 | |17|= y_xnor2
not used *| 9 | |16|= y_buffer
not used *|10| |15|* not used
not used *|11| |14|* not used
not used *|12| |13|* not used
__________________________________________

Summary:
Error Count = 0 Warning Count = 0

Completed Successfully
Information: Checking for duplicate NODE logic.
----------------------------------------------------------------------------
PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

RESOURCE ALLOCATION (15:55:52)

40
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Information: Macrocell Utilization.

Description Used Max


______________________________________
| Dedicated Inputs | 2 | 11 |
| Clock/Inputs | 0 | 1 |
| I/O Macrocells | 8 | 10 |
______________________________________
10 / 22 = 45 %

Information: Output Logic Product Term Utilization.

Node# Output Signal Name Used Max


________________________________________
| 14 | Unused | 0 | 8 |
| 15 | Unused | 0 | 10 |
| 16 | y_buffer | 1 | 12 |
| 17 | y_xnor2 | 2 | 14 |
| 18 | y_xor2 | 2 | 16 |
| 19 | y_nand2 | 1 | 16 |
| 20 | y_nor2 | 1 | 14 |
| 21 | y_and2 | 1 | 12 |
| 22 | y_or2 | 1 | 10 |
| 23 | y_not | 1 | 8 |
| 25 | Unused | 0 | 1 |
________________________________________
10 / 121 = 8 %

Completed Successfully
----------------------------------------------------------------------------

PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

JEDEC ASSEMBLE (15:55:52)

Messages:
Information: Output file 'puertas.jed' created.

Summary:

41
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
Error Count = 0 Warning Count = 0

Completed Successfully at 15:55:52

El siguiente fichero puertas.jed es el que crea el compilador para poder simular el diseño y
programar el dispositivo:

Cypress C22V10 Jedec Fuse File: puertas.jed

This file was created on 04/23/02 at 15:55:52


by PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

C22V10*
QP24* Number of Pins*
QF5828* Number of Fuses*
F0* Note: Default fuse setting 0*
G0* Note: Security bit Unprogrammed*
NOTE DEVICE C22V10*
NOTE PACKAGE PALC22V10-20PC/PI*
NOTE PINS a:2 b:3 y_buffer:16 y_xnor2:17 y_xor2:18 y_nand2:19 y_nor2:20 *
NOTE PINS y_and2:21 y_or2:22 y_not:23 *
NOTE NODES *
L00000
00000000000000000000000000000000000000000000
* Not Used #[1] => BANK : 1 *

L00044
11111111111111111111111111111111111111111111
11111011111111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_not[23] => OE : 1 ,LOGIC : 8 *

L00440
11111111111111111111111111111111111111111111
11111011101111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000

42
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_or2[22] => OE : 1 ,LOGIC : 10 *

L00924
11111111111111111111111111111111111111111111
11110111011111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_and2[21] => OE : 1 ,LOGIC : 12 *

L01496
11111111111111111111111111111111111111111111
11111011101111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_nor2[20] => OE : 1 ,LOGIC : 14 *

L02156
11111111111111111111111111111111111111111111
11110111011111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000

43
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_nand2[19] => OE : 1 ,LOGIC : 16 *

L02904
11111111111111111111111111111111111111111111
11110111101111111111111111111111111111111111
11111011011111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_xor2[18] => OE : 1 ,LOGIC : 16 *

L03652
11111111111111111111111111111111111111111111
11111011101111111111111111111111111111111111
11110111011111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000

44
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_xnor2[17] => OE : 1 ,LOGIC : 14 *

L04312
11111111111111111111111111111111111111111111
11110111111111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node y_buffer[16] => OE : 1 ,LOGIC : 12 *

L04884
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[15] => OE : 1 ,LOGIC : 10 *

L05368
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[14] => OE : 1 ,LOGIC : 8 *

45
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

L05764
00000000000000000000000000000000000000000000
* Node a[2] => BANK : 1 *

L05808
11* Note: 23 *

L05810
01* Note: 22 *

L05812
11* Note: 21 *

L05814
11* Note: 20 *

L05816
01* Note: 19 *

L05818
11* Note: 18 *

L05820
11* Note: 17 *

L05822
11* Note: 16 *

L05824
00* Note: 15 *

L05826
00* Note: 14 *

C639A* Note: Fuse Checksum*


7136

46
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales y Secuenciales.
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE, 2002.
Primera Parte: Capítulo 2. Dispositivos Lógicos Programables.

Los resultados obtenidos con la simulación son los siguientes:

47

También podría gustarte