lunes, 19 de noviembre de 2007

5: El flip-flop R-S. Memorias. Multivibradores




La desventaja que poseen todos los circuitos lógicos y las configuraciones que hemos estudiado en los capítulos anteriores es que al ser removida la información a su entrada desaparece la información a su salida, algo así como lo que ocurre cuando hay una interrupción en el suministro de la energía eléctrica y se pierde toda la información que una persona estaba manejando en su computadora de escritorio justo cuando ocurrió el apagón. Estos circuitos únicamente pueden procesar información, no la pueden retener ni siquiera temporalmente. Es obvio que la existencia de configuraciones con memoria, esto es, con la capacidad para retener por tiempo indefinido (o al menos mientras haya suministro de corriente eléctrica) la información que alguna vez fue colocada a su entrada, puede ser de una utilidad enorme.

Para lograr tales elementos con memoria, podemos explotar un fenómeno muy peculiar a los circuitos lógicos de enorme importancia: La retroalimentación (o el regreso) de la salida (o salidas) a la entrada (o entradas) de los circuitos lógicos introduce memoria en los mismos; esto es, se convierten en elementos capaces de almacenar información por tiempo indefinido. (En la literatura de habla inglesa, a la retroalimentación se le conoce como feedback.)

Empezaremos nuestra introducción a los circuitos lógicos capaces de exhibir capacidades de memoria con la siguiente configuración que puede parecer curiosa al principio por carecer por completo de entradas que podamos variar a nuestro antojo:


Para analizar este tipo de circuitos, procedemos exactamente de la misma manera como lo hicimos con los circuitos lógicos combinatorios, en los cuales aplicamos todas las combinaciones posibles de "unos" y "ceros" a la entrada (o entradas) y obtuvimos todas las respuestas posibles a la salida (o salidas) de tales circuitos lógicos, construyendo Tablas de Verdad para cada uno de ellos, análisis que posteriormente fue refinado con la introducción del álgebra Boleana. La diferencia en este caso es que como estamos retroalimentando las salidas a las entradas, no sólo tenemos que aplicar todas las combinaciones posibles de "unos" y "ceros" a la entrada (o entradas) sino que tenemos que aplicar también todas las combinaciones posibles de "unos" y "ceros" a la salida (o salidas), fijándonos muy bien en aquellas combinaciones de entradas y salidas que produzcan estados incompatibles para proceder a desecharlas de nuestro análisis. Un estado incompatible en el anterior circuito formado con dos bloques NOT sería el estado en el cual Q=0 y Q'=0:


Aquí la verificación de que este es un estado incompatible es un asunto fácil. Suponiendo que la salida del NOT superior es "0", entonces dicho "0" está siendo introducido al NOT inferior, el cual por la acción inversora debería convertir dicho "0" produciendo un "1" a su salida, lo cual es incompatible con el "0" que habíamos supuesto desde un principio para Q'. Y si la salida del NOT inferior es "0", entonces dicho "0" está siendo introducido al NOT superior, el cual por la acción inversora también debería convertir dicho "0" en un "1", lo cual es incompatible con el valor que habíamos supuesto de Q=0.

Llevando a cabo un análisis similar, podemos proceder a desechar también el estado Q=1 y Q'=1 como un estado posible, porque también nos produce incompatibilidades. Tal estado simple y sencillamente no puede existir.

Sin embargo, un estado que sí es posible es el estado Q=1 y Q'=0:


Aquí, el "1" que posee la salida Q en el NOT superior es alimentado a la entrada del NOT inferior, el cual por la acción inversora del NOT es convertido a un "0", que es precisamente el valor que estamos suponiendo para Q'. Aquí no hay incompatibilidad alguna. Y el "0" que posee la salida Q' en el NOT inferior es alimentado a la entrada del NOT superior, el cual por la acción inversora del NOT es convertido a un "1", que es precisamente el valor que estamos suponiendo para Q. No habiendo incompatibilidad alguna, aceptamos el hecho de que este es un estado posible y estable.

Pero la combinación Q=1 y Q'=0 no es la única combinación estable para este circuito. Existe otra combinación, la combinación de salidas Q=0 y Q'=1:


la cual también podemos comprobar que también es una configuración estable.

Esto nos conduce a un dilema. Si tenemos dos estados estables, igualmente posibles, tomando en cuenta que el circuito lógico no tiene entrada alguna sobre la cual podamos ejercitar algún control a nuestra discreción, ¿cuál de los dos estados tomará el circuito al encenderse la configuración con la aplicación de energía eléctrica?

La difícil realidad es que, como ambos estados son igualmente posibles, el estado en que podrá caer este circuito al aplicar energía eléctrica es completamente una cuestión de azar. Una vez que se encienda el circuito, podemos encontrarnos con cualquiera de los dos estados, esto es algo que está completamente fuera de nuestro control. Y peor aún, entre estos dos estados existe un tercer estado, conocido como estado meta-estable, en el cual las salidas dejan de ser "0" ó "1" para quedar atoradas en un limbo. Este circuito formado por dos NOTs ciertamente posee memoria, pero su comportamiento azaroso lo vuelve inútil para una aplicación práctica que no sea la de construír una máquina electrónica de juegos de azar. Sin embargo, el circuito nos dá una pista sobre cómo utilizando funciones lógicas más elaboradas que el NOT, tales como bloques NAND o bloques NOR, podemos construír circuitos lógicos con memoria sobre los cuales podamos tener algún tipo de control.

Usando como base tales propiedades, apareció en el mercado por vez primera un elemento básico de memoria conocido como el flip-flop R-S, el cual frecuentemente se representa como una "caja negra" cuyos detalles interiores están ocultos de la vista de los técnicos que atienden sistemas construídos con circuitos lógicos:




Como podemos ver en su representación esquemática, el flip-flop R-S es un bloque fundamental que consta de dos terminales de entrada, la terminal de "ajuste" S (set) y la terminal de "reajuste" R (reset); así como dos terminales de salida Q y Q', las cuales, como su notación lo indica, son complementarias, son el inverso la una de la otra. La palabra combinada "flip-flop" viene del inglés empezando con la palabra flip que es utilizada cuando se usa un interruputor de encendido para prender algo como las luces de la sala de la casa, situación en la que se acostumbra decir "flip the switch", mientras que la palabra flop, derivada de la palabra flip, tiene una intención opuesta, usándose cuando se va a apagar algo a través del mismo interruptor de encendido.

Las características del flip-flop R-S son las siguientes, suponiendo que al empezar ambas entradas R y S estaban siendo alimentadas con un cero (0) lógico:

(1) Cuando S=1 y R=0; o sea, al poner un 1 en la terminal de entrada S, el flip-flop R-S entra en el estado Q=1 independientemente del valor que Q haya tenido anteriormente. La salida Q' a su vez adquirirá el valor Q' =0.

(2) Cuando S=0 y R=1; o sea, al poner un 1 en la terminal de entrada R, el flip-flop R-S entra en el estado Q=0 independientemente del valor que Q haya tenido anteriormente. La salida Q' a su vez adquirirá el valor Q' =0. En lenguaje vulgar, se dice que el flip-flop R-S es reseteado.

Dependiendo de los elementos usados para construír el flip-flop R-S, éste tendrá una combinación de valores S y R con la cual mientras haya suministro de energía retendrá por tiempo indefinido la información que le fué colocada anteriormente.

Desgraciadamente, tendrá también otra combinación de valores que lo colocarán en un estado no-definido en el cual las salidas Q y Q' dejarán de ser complementarias. Esta combinación de valores debe evitarse a toda costa.

Este elemento, como todos los demás bloques fundamentales en los circuitos lógicos, se puede construír empleando funciones lógicas básicas. En general, el flip-flop R-S se construye empleando ya sea funciones NAND o funciones NOR.

Una forma de analizar el comportamiento "interno" del flip-flop R-S cuando es construído a partir de funciones lógicas básicas es considerar para cada combinación de unos y ceros a la entrada todas las combinaciones posibles de unos y ceros a la salida, eliminando sistemáticamente las combinaciones de unos y ceros que no sean compatibles. Este método resulta algo laborioso.

La forma más efectiva de analizar un flip-flop R-S es obteniendo las salidas Q yQ' en función de las entradas R y S utilizando álgebra Boleana. Este método resulta más rápido, más práctico y más académico. De cualquier modo, en la sección de problemas resueltos se usan ambos métodos con el fin de que se pueda comparar las ventajas y desventajas de ambos.

El flip-flop R-S, capaz de almacenar un "bit" de información, se puede utilizar a su vez como bloque básico para construír memorias más complejas tales como la Memoria de Acceso al Azar (Random Access Memory o RAM). La gran mayoría de los lectores debe poder reconocer este tipo de memoria, la famosa memoria RAM; es la que se anuncia en los modelos de las computadoras caseras puestos a la venta con la garantía de que entre mayor sea la memoria RAM mejor podrá ser el desempeño de la computadora.

Aquí se vuelve necesario hacer una aclaración. Aunque es posible almacenar un "bit" o varios "bits" de información usando para ello elementos de memoria construídos con funciones lógicas básicas, se pueden construír elementos de memoria sin utilizar para el almacenamiento de información elemento alguno que involucre alguna de las funciones lógicas básicas, inclusive sin utilizar tecnología de semiconductores. Tal es el caso de las memorias de ferrita magnética (core memory) en las cuales el almacenamiento de un "0" ó de un "1" se lleva a cabo en base a la dirección del campo magnético del elemento utilizado como medio de almacenamiento. El principio esencial radica en que es posible magnetizar una pieza de material magnético en dos direcciones opuestas, como lo muestran los siguientes dos imanes acomodados en direcciones contrarias:


En el imán de la izquierda (A) tenemos su "polo Norte" (N) apuntando hacia la derecha y su "polo Sur" (S) apuntando hacia la izquierda, en una alineación que llamaremos un "0" lógico, mientras que en el imán de la derecha (B) tenemos su "polo Norte" apuntando hacia la izquierda y su "polo Sur" apuntando hacia la derecha, en una alineación que llamaremos un "1" lógico. De hecho, podemos ver esto como el mismo imán acostado en dos diferentes direcciones.

Es un hecho físico bien conocido que con la aplicación externa de una corriente eléctrica es posible magnetizar ciertos materiales en direcciones opuestas, dependiendo de la dirección de la corriente, lo cual a su vez depende de cómo se aplican las polaridades del voltaje que produce la corriente eléctrica:



Este es el mismo principio físico que fue utilizado por Jay W. Forrester en 1952 para inventar las memorias de acceso aleatorio RAM basadas en el uso de ferritas magnéticas, en las cuales utilizó núcleos de ferrita (cores) en forma de anillos y en las cuales la dirección del campo magnético dentro de los anillos podía ser "en sentido del avance de las manecillas del reloj" o "en sentido contrario del avance de las manecillas del reloj" dependiendo de la dirección del flujo de la corriente eléctrica en el alambre puesto en el centro de la ferrita:


En la siguiente fotografía amplificada tenemos un arreglo rectangular de 4 por 4 núcleos de ferrita magnética capaces de almacenar un modesto total de 16 bits (es necesario tomar en cuenta que cada uno de los núcleos de ferrita es de tamaño milimétrico):




Como podemos ver en la fotografía, cada uno de los núcleos de ferrita es atravesado por dos alambres, un alambre horizontal y un alambre vertical que actúan como selectores, lo cual permite localizar un núcleo de ferrita específico entre todos los demás seleccionando eléctricamente el alambre horizontal y el alambre vertical que lo atraviesan. Este método de selección basado en un arreglo rectangular de coordenadas X y Y es completamente general y aplica también a las memorias RAM contemporáneas hechas a base de semiconductores.

En la fotografía no se muestra un tercer alambre que atraviesa a todos los núcleos de ferrita, identificado en aquellos tiempos como el alambre de detección de información Sense y utilizado precisamente para poder "escribir" ó "leer" el "1" ó el "0" almacenado en cada núcleo de ferrita. Porque no basta con poder localizar un núcleo de ferrita individual entre muchos otros, es necesario tener alguna forma de poder meter y sacar la información del mismo:




Inclusive para aquellos tiempos, 16 bits era una cantidad demasiada modesta de "bits" con la cual no se podía hacer prácticamente nada que valiera la pena. Para poder ser de utilidad alguna, era necesario construír arreglos mucho más grandes de núcleos de ferrita magnética, como el siguiente modelo capaz de poder almacenar 2,048 palabras de 8 bits cada una (ampliar imagen):




Dadas las enormes dificultades para poder construír memorias RAM de este tipo, tanto por lo laborioso de la inserción individual de alambres muy delgados (susceptibles de reventarse durante el proceso de inserción) dentro de núcleos de ferrita milimétricos, como por el enorme trabajo involucrado en tener que desarmar toda la configuración para volver a comenzar de nuevo en caso de que un solo núcleo de ferrita resultara defectuoso, el costo de una memoria como esta ascendía fácilmente a los cientos de miles de dólares aunque la fabricación se llevara a cabo en países asiáticos con mano de obra sumamente barata. Esta es una de las razones por la que en esos tiempos las computadoras no se vendían, se rentaban, e inclusive así los costos de la posesión temporal de las mismas podían ser sumamente elevados. Pese a todo, esta era la memoria RAM utilizada en el 95 por ciento de todas las computadoras empresariales (las computadoras personales de escritorio no existían aún) usadas hasta 1976. La situación eventualmente cambiaría al hacer su aparición en 1970 la primera memoria RAM construída con semiconductores, la memoria dinámica RAM 1103, con una capacidad de almacenamiento de 1,024 bits, construída por una nueva empresa que nació viendo una posibilidad de que los semiconductores eventualmente pudieran reemplazar algún día los costosos núcleos de ferrita magnética, Intel:




Aunque mucho se ha escrito que la invención del microprocesador en un substrato semiconductor fue lo que posibilitó el abaratamiento y la accesibilidad de las computadoras para prácticamente cualquier persona alrededor del mundo, sin la invención de las memorias RAM hechas a base de semiconductores las computadoras hoy en día seguirían siendo un lujo accesible únicamente a grandes empresas e investigadores y personal académico universitario trabajando con un amplio subsidio gubernamental. Es importante señalar que fue la misma compañía, Intel, la que inventó las dos cosas, el microprocesador y la memoria RAM ambos implementados en la microelectrónica de los semiconductores. Y de allí en adelante el mundo no volvería a ser igual.

A Intel no le llevó mucho tiempo fabricar otro tipo de memoria RAM, la memoria RAM estática, usando un principio de operación diferente. En la siguiente fotografía tenemos la "pastilla semiconductora" (la cual cabe fácilmente en la yema de un dedo) de la memoria RAM estática C51C98-25, con una capacidad de almacenamiento de 16 mil palabras binarias de 4 bits cada una:




Al final del Suplemento # 1: Las familias lógicas se han incluído explicaciones más a fondo sobre cómo trabajan ambos tipos de memoria RAM, tanto la memoria RAM dinámica como la memoria RAM estática, de acuerdo con la tecnología de semiconductores con la cual son construídas en la actualidad.

Es importante hace notar que existe otra clase de memorias que nada tiene que ver con el flip-flop R-S. Un ejemplo típico es la Memoria de Lectura Unicamente (Read-Only Memory o ROM), en la cual la información ya está almacenada permanentemente y es imposible borrarla o modificarla, teniendo por lo tanto la ventaja de que retiene la información puesta en ella aún cuando el equipo en el que se encuentra es apagado. Esta es una memoria imprescindible en prácticamente todas las calculadoras electrónicas de bolsillo, los relojes digitales, las carátulas de los hornos de microondas, e inclusive en muchas computadoras de escritorio, porque es precisamente el tipo de memoria que contiene los programas (software) que permiten que estos artículos puedan trabajar apropiadamente al momento de ser encendidos. Aunque la memoria ROM tuvo sus inicios como un circuito integrado pequeño, cualquier tecnología que contenga información grabada que no puede ser alterada también puede ser considerada como una memoria ROM, lo cual permite clasificar a los discos CD de datos como memorias ROM. La enorme ventaja de las memorias ROM es que en virtud de que no pueden ser alteradas, son inmunes al ataque de algún virus elaborado por un hacker. En tiempos recientes, con el advenimiento de las memorias flash de bajo costo que son reprogramables, ha habido una tendencia a favorecer el uso en los nuevos diseños de las memorias flash sobre las memorias ROM. Desafortunadamente, justo por el hecho de ser reprogramables, esto las hace vulnerables a ataques cibernéticos como el ocasionado por el tristemente célebre virus informático Chernobyl, el cual al reprogramar el circuito integrado BIOS de las computadoras de escritorio (este circuito integrado está presente en todas las computadoras, el cual contiene los programas preliminares encargados de inicializar la máquina antes de que un sistema operativo como Windows o Linux tome el control de la computadora) echaba a perder el BIOS inutilizando con ello a la computadora, la cual tenía que ser desechada por completo al no haber forma de poder inicializarla (la razón principal dada por los fabricantes para substituír el BIOS basado en memorias ROM por memorias flash era para permitirle al usuario llevar a cabo actualizaciones para permitirle a su máquina la instalación y el manejo de equipos novedosos como los lectores de discos DVD que no existían cuando las máquinas salieron a la venta).

Históricamente hablando, al aparecer en el mercado las memorias ROM construídas a base de semiconductores hicieron su aparición poco después en 1956 las memorias ROM programables eléctricamente, conocidas como memorias PROM (Programmable Read-Only Memory). Estas memorias, las cuales en su interior tienen un arreglo rectangular de fusibles, antes de ser programadas tienen todas sus salidas puestas a un bit de "1" lógico. La programación de las memorias PROM se lleva a cabo quemando en forma selectiva los fusibles bajo el control de una computadora de escritorio conectada al "quemador", lo cual hace que la salida se ponga a "0" lógico en cada punto en donde se "quema" un fusible, razón por la cual estas memorias sólo pueden ser programadas en una sola ocasión. El siguiente diagrama esquemático nos muestra el aspecto funcional de una memoria PROM que puede almacenar tres palabras binarias formadas por tres bits cada una (los fusibles son las pequeñas líneas curvas en forma de "onda"):


(Por razones de simplicidad didáctica, no se han mostrado en este diagrama esquemático cada uno de los diodos conectados a los nueve puntos de cruce en donde se encuentran los fusibles, los cuales tienen como propósito impedir el flujo de la corriente eléctrica hacia las otras terminales actuando a la vez como los componentes de un decodificador disfrazado. En esencia, estos diodos tienen el efecto de implementar el equivalente de la función AND. Para mayores detalles, véase el Suplemento # 1: Las familias lógicas.)

En esta memoria PROM (y lo mismo puede decirse para todas las demás) sólo una de las líneas de domicilio (address) que en este caso son A0, A1, y A2 puede estar activada a la vez con un "1". En la memoria PROM tal y como está mostrada arriba, si la línea del domicilio A0 es activada con un "1", este "1" será puesto en las tres líneas de salida de datos (data) D2, D1 y D0 por estar intactos los tres fusibles. En otras palabras, bajo el domicilio A0 el dato encontrado será D2D1D0=111, puesto que ninguno de los fusibles ha sido "quemado". También en los dos domicilios restantes A1 y A2 los datos obtenidos serán D2D1D0=111 al tener intactos sus fusibles. ¿Y qué sucederá si en el proceso de programación ("quema") del PROM quemamos los tres fusibles que van conectados al renglón A0? En tal caso y en ese renglón la fuente de voltaje +V no podrá llegar por la ausencia de dichos fusibles a las líneas D2, D1 y D0, y la salida será D2D1D0=000. Este será el dato binario almacenado bajo el domicilio A0.

El siguiente esquemático nos muestra el diagrama funcional de otro PROM que aún no ha sido "programado", un PROM con capacidad para almacenar ocho palabras binarias, con cuatro bits de extensión cada una (precaución: cada uno de los AND mostrados no es un AND de una sola entrada sino un AND de tres entradas, del mismo modo que los OR mostrados son ORs de entradas múltiples y no de una sola entrada; la representación simbólica utilizada aquí se hizo con el propósito de evitar una "sobrepoblación" de líneas de conexión y así simplificar el diagrama; tampoco se muestran aquí los diodos que implementan las funciones AND y OR en cada uno de los puntos de cruce):



Podemos ver mejor lo que ocurre en este tipo de memoria suponiendo varios valores para el domicilio de entrada A2A1A0. Supóngase que A2A1A0=000. Entonces el AND de tres entradas puesto en el primer renglón y alimentado con A2A1 A0=111 será activado por la función decodificadora de los tres NOT cuyas tres salidas alimentan el AND que conduce hacia el primer renglón. Esto pondrá un "1" lógico en la línea del primer renglón, y como los fusibles están intactos por ser un PLA aún sin ser programado, la salida será S3S2S1S0=1111. Ahora supóngase que A2A1A0=001. Entonces el AND de tres entradas puesto en el segundo renglón y alimentado con A2A1A0=111 será activado por la función decodificadora de los tres NOT cuyas tres salidas alimentan el AND que conduce hacia el segundo renglón. Esto pondrá un "1" lógico en la línea del segundo renglón, y como los fusibles están intactos por ser un PROM aún sin ser programado, la salida será también S3S2S1S0=1111.

La programación de las PROM se lleva a cabo aplicando pulsos de voltajes elevados que no son encontrados durante la operación normal de las mismas, y aunque pueden ser programadas bit-por-bit normalmente son programadas con el "quemador de PROMs" conectado a una computadora de escritorio.

Funcionalmente hablando y como podemos comprobarlo arriba, la memoria PROM consiste en la utilización de una matriz (arreglo rectangular) fija, el equivalente de bloques de entrada AND que siempre produce una salida de "1" en una línea distinta para cada una de todas las combinaciones posibles de "unos" y "ceros" a la entrada (domicilio); seguida de otra matriz capaz de seleccionar una o varias de las líneas horizontales para combinar en suma Boleana todos los términos seleccionados de cada renglón.

La estructura operacional del PROM la podemos resumir en forma más concreta con el siguiente diagrama funcional de bloques:


Tiempo después, en 1971 hizo su aparición la memoria EPROM (Erasable Programmable Read-Only Memory), la cual a diferencia de las memorias PROM que no pueden ser programadas de nuevo tras la "quema" de sus fusibles internos, puede volverse a programar borrando por completo la información contenida. Para poder ser borrada con el fin de ser programada de nuevo, la memoria EPROM tiene que ser expuesta a una luz ultravioleta a través de la ventana transparente que la cubre en su circuito integrado, como la siguiente memoria EPROM 27C256 (equivalente a la memoria EPROM 27256) con capacidad de almacenamiento de 32K bytes:


A continuación tenemos el diagrama de la relación funcional de las terminales "pins" de este circuito integrado:


Para la programación de este circuito integrado, se va aplica en la terminal Vpp (terminal 1) un voltaje mayor del valor de operación normal. Una vez programada la información dentro de esta memoria EPROM, podemos localizar algún byte específico poniendo la combinación de "unos" y "ceros" del domicilio binario (address) bajo el cual se encuentra el byte que estamos buscando, identificado por las terminales de la 2 a la 10 y de la 23 a la 27. El byte almacenado es recuperado a través de las terminales de datos (data) en las terminales 11 a la 13 y de la 15 a la 19. A modo de ejemplo, en el siguiente domicilio:

A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0 = 11010011010001

podríamos localizar el siguiente byte:

D7D6D5D4D3D2D1D0 = 01101011

Para programar este tipo de memorias, utilizamos un "quemador" como el siguiente conectado a una computadora de escritorio:




Puesto que estos equipos no son baratos, teniendo precios que pueden llegar a los miles de dólares, una alternativa atractiva para escuelas técnicas y estudiantes de ingeniería puede ser la construcción o adquisición de "kits" de bajo costo, como el diseño económico del Doctor Glenn Pure descrito en el siguiente enlace:

http://www.siliconchip.com.au/cms/A_30475/article.html

y para el cual podemos obtener los programas ejecutables de software en el siguiente sub-enlace de su página casera:

http://glenn.pure.site.net.au/electron.htm

Otro ejemplo típico de este tipo de memorias es el Arreglo Lógico Programable (Programmable Logic Array ó PLA) que una vez programado ya no se puede "desprogramar" en virtud de que su programación se lleva a cabo "soldando" con antifusibles (los cuales tienen una acción contraria a los fusibles en el sentido de que al "quemarse" no se abren sino que se funden estableciendo un contacto eléctrico) los puntos seleccionados (hay también memorias PLA equipadas con "fusibles" convencionales como los que usan las memorias PROM). La principal diferencia entre el Arreglo Lógico Programable y las memorias PROM que vimos arriba es que podemos programar no sólo las líneas de salida sino también las líneas de entrada al PLA. Para poder apreciar esto mejor, a continuación se presenta primero un esquema simplificado de un PLA sin programar:


seguido por el mismo PLA ya programado:


Podemos ver cómo partiendo de las entradas a, b, c y d del PROM así como de los complementos a', b', c' y d' de las entradas se seleccionaron ciertos puntos (nueve en total) de la matriz de entradas en el plano AND para ser "fusionados" (soldados, estableciéndose una conexión eléctrica) y así tener disponibles en los renglones de la matriz de la izquierda (la matriz de salida en el plano OR) los términos ab, b'c'd', bc' y c'd'. En el plano OR dos salidas (columnas) y1 y y2 fueron seleccionadas para tener en dichas salidas los términos:

y1 = ab + b'c'd'

y2 = ab +bc' + cd'

El diagrama de este ejemplo muestra claramente que no sólo las salidas pueden ser seleccionadas y "fusionadas" (programadas) a voluntad, sino también las entradas. Obsérvese la rica variedad de posibilidades que un PLA nos ofrece sobre un PROM.

Como esto puede parecer más complicado de lo que realmente es, veremos a continuación un segundo ejemplo de otro PLA, ya "programado":


En este segundo ejemplo estamos obteniendo de la matriz de ANDs todas las cuatro combinaciones posibles para los términos de entrada: A·B, A·B, AB y AB. Y con la matriz de ORs estamos seleccionando dos salidas con distintas combinaciones de dichos términos: A·B+AB y A·B+ AB.

Resumiendo, el PLA normalmente sería idéntico en su funcionamiento a un PROM, excepto que las conexiones de entrada ligadas a los AND también son seleccionables y programables mediante la "fusión" con antifusibles de los puntos seleccionados. Esta estructura operacional del PLA la podemos resumir en forma más concreta con el siguiente diagrama funcional de bloques:




En virtud de que en el PLA ambas matrices, tanto la de compuertas AND como la de compuertas OR (implementadas con diodos en cada punto de cruce, los cuales no se han mostrado para mantener la simplicidad de los diagramas), son programables, esto nos habilita para incrementar el número de entradas disponibles sin necesidad de tener que aumentar el tamaño de la matriz, y nos permite "diseñar" a nuestro antojo un bloque combinatorio de entradas múltiples y salidas múltiples con una gran variedad de combinaciones posibles. Esta estructura permite una mejor utilización de los recursos disponibles en el circuito integrado, de tal forma que se requiere un mínimo numero de términos necesarios para generar una función lógica .

En la sección de problemas resueltos correspondiente a este capítulo se pueden encontrar ejemplos que muestran específicamente la presencia de los diodos que permiten implementar tanto la función AND como la función OR en cada matriz.

El flip-flop R-S, el elemento de memoria fundamental construído con funciones lógicas básicas, es también conocido como un multivibrador biestable por tener dos estados estables (Q=0 y Q=1).

También es posible tener un multivibrador monoestable; esto es, con un estado estable y un estado inestable. Este tipo de multivibrador es también conocido en la literatura técnica de habla inglesa como one-shot (un "disparo", posiblemente en alusión a la acción que se lleva a cabo cuando se jala el gatillo de una pistola).

Igualmente posible es la existencia de un multivibrador astable, esto es, con dos estados inestables (Q=0 y Q=1), lo cual implica que actuará como un oscilador.

A continuación se muestra un diagrama de tiempos que ejemplifica el comportamiento de los tres tipos de multivibradores:




En el diagrama superior correspondiente al inciso (a) que muestra el comportamiento de un multivibrador astable (astable multivibrator) se puede ver que este tipo de multivibrador no precisa de ninguna señal a su entrada (input), y de hecho este tipo de circuito no tiene terminal de entrada alguna. Su salida estará oscilando todo el tiempo entre el nivel de voltaje positivo (+Vout) y el nivel de voltaje negativo (-Vout) produciendo una forma de onda cuadrada. (Podemos tomar +Vout como un "1" lógico y -Vout como un "0" lógico.)

En el diagrama intermedio correspondiente al inciso (b) que muestra el comportamiento de un multivibrador monoestable (monostable multivibrator) se puede ver que la acción de "disparo" a la salida es iniciada por un brevísimo pulso de voltaje aplicado a la entrada en un tiempo t1. Inmediatamente, a la salida, el voltaje cambia de polaridad por un período prefijado de tiempo, después de lo cual la salida regresa a su valor original de voltaje. Este tipo de circuito tiene una sola terminal de entrada, la terminal de "gatillo" (trigger) que se usa para "disparar" la acción del circuito.

Y por último, en el diagrama final correspondiente al inciso (c) que muestra el comportamiento de un multivibrador biestable (bistable multivibrator) se puede ver que el circuito tiene dos estados estables. Para hacerlo cambiar de estado, aplicamos un pulso brevísimo de voltaje a una de las dos entradas (la cual podemos suponer como la entrada S de un flip-flop R-S) en un tiempo t1, con lo cual el circuito permanecerá en dicho estado por tiempo indefinido (segundos, minutos, horas, días, meses, años). Si queremos que el circuito regrese a su estado anterior, tenemos que aplicar un pulso brevísimo de voltaje en la otra terminal de entrada (la cual podemos suponer como la entrada R de un flip-flop R-S) en un tiempo t2, con lo cual el circuito volverá a su estado anterior, permaneciendo en dicho estado por tiempo indefinido hasta que no se aplique nuevamente un pulso en la terminal de entrada correspondiente para llevar a cabo tal acción.

Si lo deseamos, podemos construír con relativa facilidad cualquiera de los tres tipos de multivibradores con componentes que podemos obtener comercialmente en el mercado. Por ejemplo, si queremos construír un multivibrador monoestable, lo podemos hacer con el circuito integrado 74121 cuyo diagrama funcional interno es el siguiente:




Para construír el multivibrador monoestable, necesitamos proveerle al circuito integrado unos componentes adicionales, tales como la resistencia R y el capacitor C cuya constante de tiempo RC fijará la duración del pulso de salida. El diagrama completo de un monoestable tal es el siguiente:


En este caso, la resistencia R tiene un valor de 10K (10 mil ohms) y el condensador tiene un valor de 2 uf (2 microfarads), lo cual le fijará al pulso de salida una duración de 0.066 segundos con un comportamiento mostrado por el siguiente diagrama de tiempos.


Además del circuito integrado 74121, podemos utilizar otro circuito integrado extremadamente versátil, el cual pese a que tiene ya varias décadas de haber sido introducido, sigue resonando aún por su enorme flexibilidad y bajo costo, el timer 555, del cual hay mayores detalles en el Suplemento # 7 puesto al final de este libro (El temporizador 555).