Está en la página 1de 14

ÁRBOL FAMILIAR DE LOS SISTEMAS DIGITALES

Aunque el principal objetivo de este capítulo es investigar las arquitecturas de los PLDs, también es
conveniente analizar las diversas opciones de hardware disponibles para los diseñadores de
sistemas digitales, ya que podremos obtener una mejor percepción de las alternativas de hardware
digital de la actualidad. Por lo general, se puede lograr la funcionalidad deseada de un circuito
mediante el uso de varios tipos distintos de hardware digital.

Un árbol familiar de los sistemas digitales (vea la figura 13-1) en el que se muestre la mayoría de
opciones de hardware disponibles en la actualidad puede ser útil para ordenar las diversas
categorías de dispositivos digitales. La representación gráfica en la figura no muestra todos los
detalles; algunos de los tipos de dispositivos más complejos tienen muchas subcategorías
adicionales y se omitieron los tipos de dispositivos obsoletos por cuestión de claridad. Las
principales categorías de sistemas digitales incluyen la lógica estándar, los circuitos integrados de
aplicación específica (ASIC) y los dispositivos de microprocesador/procesador digital de señales
(DSP).

La primera categoría de dispositivos de lógica estándar se refiere a los componentes digitales con
funcionalidad básica (compuertas, flip-flops, decodificadores, multiplexores, registros, contadores,
etc.) que están disponibles en chips SSI y MSI.

La categoría de microprocesadores/procesadores digitales de señales (DSP) es un enfoque mucho


muy distinto para el diseño de sistemas digitales. Estos dispositivos contienen los diversos tipos de
bloques funcionales, los dispositivos pueden controlarse en forma electrónica y los datos pueden
manipularse mediante la ejecución de un programa de instrucciones que se haya escrito para esa
aplicación. Puede lograrse una gran flexibilidad con los sistemas de microcomputadora/DSP, ya que
todo lo que hay que hacer es cambiar el programa. La principal desventaja de esta categoría de
sistemas digitales es la velocidad. Siempre será más rápido utilizar una solución de hardware para
su diseño de sistemas digitales que una solución de software.

La tercera categoría principal de sistemas digitales es la de los circuitos integrados de aplicación


específica (ASIC). Esta amplia categoría representa la solución moderna de diseño de hardware
para los sistemas digitales. Como su acrónimo lo indica, un circuito integrado está diseñado para
implementar una aplicación específica deseada. Hay cuatro subcategorías de dispositivos ASIC
disponibles para crear sistemas digitales: dispositivos lógicos programables, matrices de
compuertas, de celda estándar y totalmente personalizados.

Los dispositivos lógicos programables (PLDs), que algunas veces se denominan dispositivos lógicos
programables en campo (FPLDs), pueden configurarse a la medida para crear cualquier circuito
digital deseado, desde simples compuertas lógicas hasta sistemas digitales complejos. [1]

Dispositivos lógicos programables (PLD)


Los dispositivos lógicos programables (o PLD, por sus siglas en inglés) favorecen la integración de
aplicaciones y desarrollos lógicos mediante el empaquetamiento de soluciones en un circuito
integrado. El resultado es la reducción de espacio físico dentro de la aplicación; es decir, se trata de
dispositivos fabricados y revisados que se pueden personalizar desde el exterior mediante diversas
técnicas de programación. El diseño se basa en bibliotecas y mecanismos específicos de mapeado
de funciones, mientras que su implementación tan sólo requiere una fase de programación del
dispositivo que el diseñador suele realizar en unos segundos [4].

En la actualidad, el diseño de ASIC (circuitos integrados desarrollados para aplicaciones específicas)


domina las tendencias en el desarrollo de aplicaciones a nivel de microelectrónica. Este diseño
presenta varias opciones de desarrollo, como se observa en la tabla 1.1. A nivel de ASIC los
desarrollos full y semi custom ofrecen grandes ventajas en sistemas que emplean circuitos
diseñados para una aplicación en particular. Sin embargo, su diseño ahora sólo es adecuado en
aplicaciones que requieren un alto volumen de producción; por ejemplo, sistemas de telefonía
celular, computadoras portátiles, cámaras de video, etcétera.

Los FPGA (arreglos de compuertas programables en campo) y CPLD (dispositivos lógicos


programables complejos) ofrecen las mismas ventajas de un ASIC, sólo que a un menor costo; es
decir, el costo por desarrollar un ASIC es mucho más alto que el que precisaría un FPGA o un CPLD,
con la ventaja de que ambos son circuitos reprogramables, en los cuales es posible modificar o
borrar una función programada sin alterar el funcionamiento del circuito [4].
En la actualidad existe una gran variedad de dispositivos lógicos programables, los cuales se usan
para reemplazar circuitos SSI (pequeña escala de integración), MSI (mediana escala de integración)
e incluso circuitos VLSI (muy alta escala de integración), ya que ahorran espacio y reducen de
manera significativa el número y el costo de los diseños. Estos dispositivos, llamados PLD (tabla
1.2), se clasifican por su arquitectura —la forma funcional en que se encuentran ordenados los
elementos internos que proporcionan al dispositivo sus características.
FUNDAMENTOS DE LOS CIRCUITOS DE UN PLD

En la figura 13-3 se muestra un dispositivo PLD simple. Cada una de las cuatro compuertas OR
pueden producir una salida que sea una función de las dos variables de entrada, A y B. Cada
función de salida se programa con los fusibles ubicados entre las compuertas AND y cada una de
las compuertas OR.

Cada una de las entradas A y B alimenta a un búfer no inversor y a un búfer inversor para producir
las formas verdadera e invertida de cada variable. Éstas son las líneas de entrada para el arreglo de
compuertas AND. Cada compuerta AND se conecta a dos líneas distintas de entrada para generar
un producto único de las variables de entrada. A las salidas de las compuertas AND se les llama
líneas de productos. Cada una de las líneas de productos se conecta a una de las cuatro entradas
de cada compuerta OR, a través de un enlace de fusible. Cuando al principio todos los enlaces
están intactos, la salida de cada compuerta OR será un 1 constante. He aquí la prueba:

Cada una de las cuatro salidas O1, O2, O3 y O4 pueden programarse para ser cualquier función de
A y B, para ello se queman en forma selectiva los fusibles apropiados. Los PLDs están diseñados de
manera que una entrada OR quemada actúe como un 0 lógico. Por ejemplo, si quemamos los
fusibles 1 y 4 en la compuerta OR 1, la salida O1 se convierte en
Podemos programar cada una de las salidas OR con cualquier función deseada en forma similar.
Una vez programadas todas las salidas, el dispositivo generará en forma permanente las funciones
de salida seleccionadas.

Simbología de PLDs
El ejemplo en la figura 13-3 sólo tiene dos variables de entrada y el diagrama del circuito esta un
tanto saturado de líneas y conexiones. Imagine lo complejo que sería el diagrama para PLDs con
muchas más entradas. Por esta razón, los fabricantes de PLDs han adoptado una representación
simbólica de los circuitos internos de estos dispositivos. La figura 13-4 muestra el mismo circuito
de PLD que la figura 13-3, sólo que utiliza los símbolos simplificados. En primer lugar, observe que
los búferes de entrada se representan como un búfer individual con dos salidas, una invertida y
otra no invertida. A continuación observe que se muestra una línea individual que va hacia la
compuerta AND para representar las cuatro entradas. Cada vez que la línea de las filas cruza una
columna, representa una entrada separada para la compuerta AND. Las conexiones que van desde
las líneas de las variables de entrada hasta las entradas de las compuertas AND se indican como
puntos. Un punto significa que esa conexión con la entrada de la compuerta AND es fija y no puede
cambiarse. A primera instancia parece como si las variables de entrada estuvieran conectadas unas
con otras. Es importante tener en cuenta que éste no es el caso, ya que la línea de fila individual
representa múltiples entradas para la compuerta AND. Las entradas para cada una de las
compuertas OR también se designan mediante una línea individual que representa a las cuatro
entradas. Una X representa un fusible intacto que conecta una línea de producto con una entrada
de la compuerta OR. La ausencia de una X (o un punto) en cualquier intersección representa un
fusible quemado. Para las entradas de las compuertas OR se asume que los fusibles quemados
(entradas no conectadas) están en BAJO, y para las compuertas AND los fusibles quemados están
en ALTO. En este ejemplo las salidas se programan como:
De acuerdo con lo anterior, observemos en la tabla 1.3 la estructura de los dispositivos lógicos
programables básicos.

 La PROM no se utiliza como un dispositivo lógico, sino como una memoria direccionable,
debido a las limitaciones que presenta con las compuertas AND fijas.
 En esencia, el PLA se desarrolló para superar las limitaciones de la memoria PROM. Este
dispositivo se llama también FPLA (arreglo lógico programable en campo), ya que es el
usuario y no el fabricante quien lo programa.
 El PAL se desarrolló para superar algunas limitaciones del PLA, como retardos provocados
por la implementación de fusibles adicionales, que resultan de la utilización de dos
arreglos programables y de la complejidad del circuito. Un ejemplo típico de estos
dispositivos es la familia PAL16R8, la cual fue desarrollada por la compañía AMD
(Advanced Micro Devices) e incluye los dispositivos PAL16R4, PAL16R6, PAL16L8, PAL16R8,
dispositivos programables por el usuario para reemplazar circuitos combinacionales y
secuenciales SSI y MSI en un circuito.

ARQUITECTURAS DE PLDS
PROMs

La arquitectura de los circuitos programables de la sección anterior implica la programación de las


conexiones con la compuerta OR. Las compuertas AND se utilizan para decodificar todas las
posibles combinaciones de las variables de entrada, como se muestra en la figura 13-5(a). Para
cualquier combinación de entrada dada se activa la correspondiente fila (cambia a ALTO). Si la
entrada OR se conecta a esa fila, aparece un nivel ALTO en la salida OR. Si la entrada no se conecta,
aparece un nivel BAJO en la salida OR. Si considera las variables de entrada como entradas de
dirección y los fusibles intactos/quemados como 1s y 0s almacenados, deberá reconocer la
arquitectura de una PROM. La figura 13-5(b) muestra cómo se programaría la PROM para generar
cuatro funciones lógicas especificadas. Sigamos el procedimiento para la salida O3 = AB + C D. El
primer paso es construir una tabla de verdad que muestre el nivel deseado de la salida O3 para
todas las posibles combinaciones de entrada (tabla 13-1).
A continuación se anotan los productos AND para los casos en los que la salida debe ser un 1. La
salida O3 debe ser la suma OR de estos productos. Por ende, sólo los fusibles que conectan estos
términos de productos con las entradas de la compuerta OR 3 deben dejarse intactos. Todos los
demás se deben quemar, como se indica en la figura 13-5(b). Este mismo procedimiento se sigue
para determinar el estado de los fusibles en las demás entradas de las compuertas OR. La PROM
puede generar cualquier función lógica posible de las variables de entrada, ya que genera todos los
términos de productos AND posibles. En general, cualquier aplicación que requiera que todas las
combinaciones de entrada estén disponibles es un buen candidato para una PROM. No obstante,
las PROMs se vuelven imprácticas cuando debe acomodarse un gran número de variables de
entrada, debido a que el número de fusibles se duplica para cada variable de entrada que se
agregue. Decir que una PROM es un PLD es sólo cuestión de semántica. Usted ya sabía que una
PROM es programable y que es un dispositivo lógico. Ésta es sólo una manera de utilizar una PROM
y de pensar en que su propósito es implementar expresiones lógicas de SOP en vez de almacenar
valores de datos en ubicaciones de memoria. El verdadero problema es traducir las ecuaciones
lógicas en el mapa de fusibles para una PROM dada. Un compilador lógico de propósito general
diseñado para programar SPLDs tiene una lista de dispositivos PROM que puede soportar. Si usted
opta por utilizar cualquier EPROM vieja y rebuscada como un PLD, tal vez necesite generar su
propio mapa de bits (como solían hacerlo antes), lo cual es muy tedioso.

Matriz lógica programable (PAL)


La arquitectura de la PROM se adapta muy bien a las aplicaciones en las que se requieren todas las
posibles combinaciones de entradas para generar las funciones de salida. Algunos ejemplos son los
convertidores de código y las tablas de almacenamiento de datos (de búsqueda) que examinamos
en el capítulo 12. No obstante, al implementar expresiones de SOP, no hacen un uso muy eficiente
de los circuitos. Cada combinación de entradas de dirección debe decodificarse por completo y
cada término de producto expandido tiene un fusible asociado que se utiliza para aplicar una
operación OR entre todos los términos. Por ejemplo, observe cuántos fusibles se requirieron en la
figura 13-5 para programar las expresiones simples de SOP y cuántos términos de productos no se
utilizan a menudo. Esto ha originado el desarrollo de una clase de PLDs llamada lógica de matriz
programable (PAL). La arquitectura de una PAL difiere un poco de la de una PROM, como se
muestra en la figura 13-6(a). La PAL tiene una estructura de compuertas AND y OR similar a una
PROM, pero en la PAL las entradas de las compuertas AND son programables, mientras que las
entradas de las compuertas OR son fijas. Esto significa que toda compuerta AND puede
programarse para generar cualquier producto deseado de las cuatro variables de entrada y sus
complementos. Cada compuerta OR se conecta en forma permanente a sólo cuatro salidas AND.
Esto limita cada función de salida a cuatro términos de productos. Si una función requiere más de
cuatro términos de productos, no puede implementarse con esta PAL; tendría que utilizarse una
que tuviera más entradas OR. Si se requieren menos de cuatro términos de productos, los que no
se necesiten pueden hacerse 0.

La figura 13-6(b) muestra cómo se programa esta PAL para generar cuatro funciones lógicas
específicas. Sigamos el procedimiento para la salida O3 = AB C D. Primero debemos expresar esta
salida como la suma OR de cuatro términos, ya que las compuertas OR tienen cuatro entradas.
Para ello debemos colocar 0s. Por ende, tenemos que

A continuación, debemos determinar cómo programar las entradas para las compuertas AND 1, 2,
3 y 4 de manera que proporcionen los términos de productos correctos para la compuerta OR 3.
Debemos hacer esto término por término. El primer término AB se obtiene dejando intactos los
fusibles que conectan las entradas A y B con la compuerta AND 1 y quemando todos los demás
fusibles en esa línea.

De igual forma, el segundo término C D se obtiene dejando intactos sólo los fusibles que conectan
las entradas C y D con la compuerta AND 2. El tercer término es 0. Para producir un 0 constante en
la salida de la compuerta AND 3 se dejan todos sus fusibles de entrada intactos. Esto produciría
una salida de que, como sabemos, es 0. El cuarto término también es 0, por lo que los
fusibles de entrada para la compuerta AND 4 también se dejan intactos. Las entradas para las otras
compuertas AND se programan de manera similar para generar las otras funciones de salida. En
especial observe que muchas de las compuertas AND tienen todos sus fusibles de entrada intactos,
ya que necesitan generar 0s.

SPLD: la GAL

Programación de un arreglo GAL A diferencia de un PAL, el GAL está formado por celdas
programables, las cuales se pueden reprogramar las veces que sea necesario.. Tiene el mismo tipo
de organización AND/OR que la PAL. La diferencia básica es que la GAL utiliza una tecnología de
proceso reprogramable, como por ejemplo EEPROM ( E2 CMOS), en lugar de emplear fusibles.

Como se observa en la figura 1.5, cada fila se conecta a una entrada de la compuerta AND y cada
columna a una variable de entrada y sus complementos. Cuando se programa una celda, ésta se
activa mediante la aplicación de cualquier combinación de las variables de entrada o sus
complementos a la compuerta AND. Esto permite la implementación de cualquier función
(producto de términos) requerida.

Diagrama de bloques general de una PAL/GAL

En la Figura 11.6 se muestra un diagrama de bloques de una PAL o GAL. Recuerde que la diferencia
básica es que una GAL tiene una matriz reprogramable mientras que la PAL sólo puede
programarse una vez. Las salidas de la matriz AND programable están conectadas a puerta OR fijas
que a su vez están conectadas a circuitos lógicos adicionales de salida. El conjunto formado por
una puerta OR y su lógica de salida asociada suele denominarse macrocelda. La complejidad de la
macrocelda depende de cada dispositivo concreto, y en los dispositivos GAL las macroceldas
suelen ser reprogramables.

Macroceldas

Generalmente, una macrocelda consiste en una puerta OR y cierta lógica de salida asociada. Las
macroceldas varían en su complejidad dependiendo del tipo concreto de PAL o GAL. Una
macrocelda puede configurarse para implementar lógica combinacional, lógica registrada o una
combinación de ambos tipos de lógica. La lógica registrada significa que existe un flip-flop en la
celda que permite implementar funciones de lógica secuencial. La operación registrada de las
macroceldas se trata en la Sección 11.4. La Figura 11.7 ilustra tres tipos básicos de macroceldas con
lógica combinacional.
La parte (a) muestra una macrocelda simple con la puerta OR y un inversor con control triestado,
que puede hacer que el inversor actúe como un circuito abierto para desconectar completamente
la salida. La salida del inversor triestado puede estar a nivel BAJO, a nivel ALTO o desconectada. La
parte (b) es una macrocelda que puede actuar como entrada o como salida. Cuando la salida se
emplea como entrada, se desconecta el inversor triestado y la entrada va al buffer que está
conectado a la matriz AND. La parte (c) es una macrocelda que puede programarse para tener una
salida activa a nivel ALTO o activa a nivel BAJO, o que puede utilizarse como entrada. Una entrada a
una puerta OR-exclusiva (XOR) puede programarse para estar a nivel ALTO o BAJO. Cuando la
entrada programable de la puerta XOR está a nivel ALTO, la salida de la puerta OR se invierte
porque 0 ⊕ 1 = 1 y 1 ⊕ 1 = 0. De forma similar, cuando la entrada programable de la puerta XOR
está a nivel BAJO, la salida de la puerta OR no se invierte porque 0 ⊕ 0 = 0 y 1 ⊕ 0 = 1.

Dispositivos SPLD Generalmente, los encapsulados de los SPLD suelen tener entre 20 y 28 pines.
Dos factores que pueden usarse para determinar si una cierta PAL o GAL resulta adecuada para un
diseño lógico determinado son el número de entradas y salidas y el número de puertas
equivalentes o densidad del dispositivo. Otros parámetros que hay que considerar son la
frecuencia máxima de operación, los retardos y la tensión continua de alimentación. Entre las
diversas empresas que fabrican dispositivos SPLD podemos citar Lattice, Actel, Atmel y Cypress.
Diversos fabricantes de SPLD pueden utilizar distintas formas de definir la densidad de los
dispositivos, por lo que hay que tener en cuenta esta variabilidad a la hora de utilizar el número
especificado de puertas equivalentes. Dos tipos comunes de dispositivos PAL y GAL son el 16V8 y el
22V10. La designación de los dispositivos indica el número de entradas, el número de salidas y el
tipo de lógica de salida. Por ejemplo, 16V8 significa que el dispositivo tiene dieciséis entradas, ocho
salidas y que estas salida son variables (V). La letra L o H significa que la salida es activa a nivel bajo
(L, Low, bajo) o a nivel alto (H, High, alto). En la Figura 11.8 se muestra el diagrama de bloques de
una PAL16V8 y un encapsulado de SPLD típico. Cada macrocelda tiene ocho entradas procedentes
de la matriz de puertas AND, por lo que puede haber hasta ocho términos producto para cada
salida. Existen diez entradas dedicadas (E), dos salidas dedicadas (S) y seis pines que pueden
utilizarse como entradas o salidas (E/S). Cada salida es activa a nivel BAJO. La PAL16V8 tiene una
densidad de aproximadamente 300 puertas equivalentes.
En la Figura 11.9 se muestra el diagrama de bloques de una GAL22V10 y un encapsulado SPLD
típico. Este dispositivo tiene doce entradas dedicadas y diez pines que pueden actuar como
entradas o como salidas. Las macroceldas tienen entradas procedentes de la matriz AND que
varían entre ocho y dieciséis como se indica mediante la notación simplificada. La GAL22V10 tiene
una densidad de aproximadamente 500 puertas equivalentes.

También podría gustarte