Circuitos programables
El término dispositivo lógico programable o PLD (programmable logic device) se aplica de manera general a los circuitos integrados que tienen un conjunto base fijo de componentes, como conmutadores, compuertas o celdas más complejas, pero cuyas interconexiones se pueden configurar de acuerdo con la aplicación para convertirlos en componentes de diseño de propósito general. La implantación del sumador con un arreglo de compuertas, presentada en la figura, es un ejemplo de un PLD. El número de componentes disponibles en los PLD puede ser muy grande, de manera que su complejidad está entre la integración a mediana escala y la integración a muy grande escala. Se han desarrollado varias técnicas de diseño y tecnologías de circuitos integrados para los PLD; nosotros veremos aquí algunas de las más importantes. Los PLD constituyen una tecnología clave para implantar circuitos integrados de aplicación específica o ASIC (application-specific integrated circuits).
El proceso de programación
Las interconexiones de un PLD para una aplicación específica se producen en dos formas principales. La primera requiere uno o dos pasos especiales en el proceso de fabricación del chip del circuito integrado y en este caso se dice que el PLD ha sido programado en fábrica o con máscara. El segundo método permite que el diseñador o el usuario final lleve a cabo el proceso de configuración del circuito integrado encapsulado, inyectándole señales eléctricas a través de un equipo especializado, conocido como unidad de programación de PLD. Estas señales abren o cierran conmutadores para establecer los patrones de conexión deseados entre los componentes. Los circuitos integrados que se configuran en esta forma denominan programables sobre el terreno. En algunos casos, un circuito integrado programable sobre el terreno también es borrable, de manera que se puede programar en repetidas ocasiones, algo muy práctico cuando se desarrolla un nuevo diseño.
Las unidades de programación de PLD son dispositivos relativamente pequeños y baratos que se conectan de manera fácil como dispositivos periféricos de las estaciones de trabajo CAD o de computadoras personales (véase la Figura). Constituyen una sencilla "fábrica de escritorio" para producir una realización en circuito integrado independiente y completamente funcional de un circuito lógico. Los PLD programables sobre el terreno se usan mucho para implantar prototipos de diseño y par fabricación de bajo volumen de ASIC. Se prefieren los PLD programa mediante máscara para la fabricación de grandes volúmenes de ASIC.
Conmutadores de punto de cruce
Una conexión programable entre dos líneas A y B de un PLD equivale lógicamente a un conmutador que se puede programar para que esté cerrado (lo que significa que A y B están eléctrica y lógicamente conectados y transportan la misma señal) o abierto (lo que indica que A y B están desconectados). La figura muestra un modelo de conmutador de dicha conexión programable, la cual se conoce como punto de cruce. La programación se puede considerar como la asignación permanente igual a 0 (conmutador abierto) o a 1 (conmutador cerrado). Como un PLD normal contiene miles de puntos de cruce, es más común usar la notación abreviada de la figura, donde el símbolo x representa una conexión programable, en lugar del punto que se usa para una conexión normal permanente.
Son varios los dispositivos físicos que se emplean para implantar conmutadores de punto de cruce. En los PLD programados con máscara se pueden omitir partes de los cables en el punto de cruce, con lo cual se elimina la necesidad de un conmutador físico, un proceso llamado cableado discrecional. Por otra parte, puede existir un conmutador físico en forma de fusible que normalmente conecta A con B, el cual se abre o "funde" aplicando a la línea una corriente eléctrica relativamente grande. Un conmutador alternativo es un antifusible, que normalmente actúa como aislante pero que puede conducir una corriente eléctrica si se programa de manera adecuada. Una vez que se ha fundido un fusible o antifusible, su estado generalmente es irreversible y el PLD es del tipo de "sólo lectura".
Muchos PLD, incluyendo la mayoría de los reprogramables, usan transistores como conmutadores de punto de cruce. La señal x que determina el estado del conmutador puede tener la forma de una cantidad de carga eléctrica que se puede alterar con señales de la unidad de programación del PLD. Por ejemplo, hay PLD que se programan arbitrariamente en forma eléctrica, pero que al exponerse a la luz ultravioleta, se restablecen todas las x a un 1 lógico. De hecho, con esto se borra el programa viejo del PLD y se permite su reprogramación. Observe que en todos los casos, la programación de un PLD requiere condiciones de señal especiales (voltajes o corrientes muy altos, luz ultravioleta, etcétera) que no están presentes durante la utilización normal del PLD. Una vez que un PLD entra en operación, en esencia tiene las mismas características eléctricas y lógicas que cualquier otro circuito integrado de la misma familia.
Arreglos programables
Como vimos antes, los conmutadores pueden ser utilizados de varias formas para construir compuertas lógicas. Los PLD emplean arreglos de conmutadores para implantar compuertas de gran tamaño de manera eficiente, es decir, con un área mínima y el menor número posible de conexiones. La figura muestra una compuerta AND común de n entradas implantada de esta manera con una fila de conmutadores. En este caso, los conmutadores son negativos en lugar de positivos, de manera que se encienden con x = O y se apagan con x = 1. El dispositivo de pull-up representado por un atenuador puede alimentar la línea de salida z con un 1 lógico débil, siempre y cuando los demás conmutadores estén apagados. Sin embargo, si alguna de las entradas X es O, se enciende el i-ésimo conmutador y se aplica un O fuerte a la línea z, lo cual la lleva al nivel lógico O e implanta así la función AND en z. La notación abreviada de la figura en la parte c usa una vez más el símbolo x para representar los puntos de cruce programables, pero en este caso se interpretan como entradas AND programables. Las compuertas OR se pueden construir de manera similar (Figura); en este caso, los puntos de cruce programables definen las entradas de una compuerta OR.
Si se combinan las estructuras de compuertas de las figuras, es posible construir gran variedad de PLD útiles a partir de contadores. Éstos toman la forma de un gran arreglo bidimensional de conmutadores, una parte del cual realiza un conjunto de compuertas AND (el plano AND) y otra implanta un conjunto de compuertas OR (el plano OR). Los planos AND y OR se conectan para obtener estructuras. AND-OR u OR-AND de dos niveles (es decir, de suma de productos o de producto de sumas) que pueden implantar funciones booleanas arbitrarias. Dependiendo de la organización y el grado de programabilidad de los planos AND y OR, podemos obtener diversos tipos de PLD, incluyendo memorias de sólo lectura (ROM, read-only memory) y arreglos lógicos programables (PLA, programmable logic arrays).
Ejemplo de un PLA
Para ilustrar estas ideas, la figura presenta un pequeño ejemplo de un PLA. Este circuito no programado consiste en ocho compuertas horizontales que forman el plano AND y dos compuertas OR verticales que forman el plano OR. Cada compuerta AND tiene seis entradas programables que se toman de las tres variables de entrada x1, x2, x3 y sus complementos, por lo que se pueden programar para realizar cualquier producto de una, dos o tres literales. Las ocho filas del PLA se pueden considerar como la realización de los términos del producto. Las salidas de estas filas son las entradas de las dos compuertas OR. Una vez más, las conexiones de entrada de las compuertas OR son programables, de manera que cualquiera de las columnas de salida puede sumar cualquier subconjunto de los términos de las filas. Así, este PLD implanta un par de funciones booleanas z1 y z2 en forma de suma de productos AND-OR. Como podemos usar las ocho filas para realizar los ocho minitérminos de las tres variables, el PLA se puede programar para realizar dos funciones cualesquiera z1 y z2 en su forma canónica de suma de minitérminos.
La figura muestra el modelo completo del PLA a nivel de conmutadores. Un modelo a nivel de compuertas del mismo PLA se presenta en la figura, donde se observa claramente la estructura lógica de dos niveles del circuito. Sin embargo, no refleja de manera muy buena la estructura de las conexiones internas del PLA. Los PLA y otros PLD generalmente se representan con la forma simplificada de la figura, que indica tanto la estructura lógica como la estructura física de manera compacta. Aquí, las filas y las columnas usan los formatos AND y OR de las figuras 4.49c y 4.5Oc, respectivamente. Esta representación, que llamaremos diagrama PLA, tiene la ventaja de que el patrón de símbolos x representa de manera precisa el patrón de conmutadores de punto de cruce disponibles para programar el PLA.
Suponga que queremos usar el PLA de las figuras 4.51, 4.52 y 4.53 para implantar nuestro viejo amigo, el sumador completo. Primero hay que obtener una realización SDP (Suma de Productos) de dos niveles del sumador; en la figura se presenta una adecuada, correspondiente al par de expresiones canónicas de suma de minitérminos.
f1 = x1x2’x3 + x1x2x3’ + x1’x2x3 + x1x2x3
f2 = x1’x2’x3 + x1’x2x3’ + x1x2’x3’ + x1x2x3
Cada expresión contiene cuatro minitérminos, uno de los cuales es compartido. Podemos establecer una correspondencia entre los siete minitérminos distintos (compuertas AND de tres entradas) y una fila del PLA. Observe que a cada fila se le proporcionan las variables de entrada en forma verdadera y complementada, una de las cuales está conectada a la fila (indicado con un x en el punto de cruce) y la otra está desconectada. Si se programan los puntos de cruce de manera apropiada, se puede lograr que la fila genere cualquier minitérmino deseado o, de manera más general, cualquier producto deseado de un máximo de tres variables. Por ejemplo, la primera fila del plano AND de la figura 4.54b tiene conexiones con las entradas primarias x1, x2’ y x3 y por ende genera el minitérmino m5 = x1x2’x3. La segunda fila tiene conexiones a x1, x2 y x3’, produciendo m6 = x1x2x3’, etcétera. Cada una de las primeras siete filas del PLA representa un minitérmino m1: m7; no se requiere la última fila. Si pasamos al plano OR de la figura 4.54b, observamos que la primera columna está conectada únicamente a las primeras cuatro filas y por lo tanto calcula la función de cuatro términos (acarreo)
f1 = m5 + m6 + rn3 + m7 = x1x2’x3 + x1x2x3’ +x1’x2x3 + x1x2x3
La otra función (suma) f2 se implanta en forma similar como una suma lógica de cuatro de sus minitérminos. Observe cómo se comparte el minitérmino m7 entre las dos funciones de salida.