Unidad Circuitos combinacionales Introducción Hemos descrito las entradas y salidas de los circuitos digitales como señales eléctricas de tensión o voltaje que representan los valores lógicos. Por otra parte, teniendo en cuenta que la síntesis de un sistema digital de cierta complejidad implica la interconexión de distintos subsistemas, la salida de un circuito lógico puede actuar como entrada de otro u otros. Así, describiremos en esta unidad los aspectos más relevantes a tener en cuenta desde el punto de vista eléctrico en el funcionamiento de dichas interconexiones. También presentaremos en esta unidad el concepto de estado de alta impedancia. Otra descripción que se presenta en esta unidad es la de circuitos lógicos que implementan funciones básicas en los sistemas digitales. Aunque estos circuitos pueden ser construidos en base a compuertas lógicas, su implementación a nivel de compuertas es más complejo debido a la cantidad de componentes necesarios (considere por ejemplo, el circuito completo de un convertidor de código BCD a siete segmentos). Por esta razón, y por la generalidad de su aplicación, los fabricantes ofrecen estos circuitos sintetizados integralmente en forma de componentes. Desde el punto de vista del diseño, estos componentes representan bloques que implementan funcionalidades completas. Veremos aquí los más representativos de estos bloques funcionales. Nomenclatura de señales y terminales. Especificación del nivel activo Nomenclatura y niveles activos de señales Los nombres utilizados en las líneas o buses que sirven para transmitir señales entre distintas partes de un sistema digital también deben ser significativos de la función, carácter o uso del grupo de señales que se transportan en ellos. En las formas de representación de un circuito o sistema digital se utilizan nombres para designar las señales de entrada y de salida. En los sistemas simples, puede ser suficiente utilizar nombres de un solo carácter, sin embargo en sistemas más complejos es necesario designar las señales con nombres elegidos convenientemente para facilitar la comprensión del sistema digital representado en esquemas, símbolos, diagramas, etc. Para ello, tendremos en cuenta la función que cumplen las señales, ya sean de entrada o de salida. El valor que adopta una señal de entrada indica que el circuito debe realizar cierta acción o debe considerar ciertas condiciones para su funcionamiento, según su diseño. En forma similar, el valor que adopta una señal de salida indica que el circuito se encuentra en un estado particular o que debe ejercer una determinada acción sobre otro circuito. Teniendo en cuenta esto, es evidente la conveniencia de designar las señales del circuito lógico con nombres que indiquen la función que cumplen dichas señales. 89 Por otra parte, dado que los sistemas lógicos tratan con señales binarias cuyos valores son representados mediante los niveles lógicos ALTO y BAJO, uno de estos valores será el que debe utilizarse para que la señal realice la acción o refleje la condición que le ha sido asignada en el funcionamiento del sistema. Por ello, definimos como nivel activo de una señal lógica al nivel lógico que debe adoptar dicha señal para cumplir el objetivo indicado por su nombre. Este objetivo depende del diseño del circuito y puede consistir en realizar una acción, producir un efecto o reflejar una condición. El nivel activo de una señal puede ser ALTO o BAJO. Una señal es activa en ALTO cuando su valor debe adoptar el nivel ALTO para realizar la acción o reflejar la condición referida por su nombre. Análogamente, una señal es activa en BAJO cuando su valor debe adoptar el nivel BAJO para realizar la acción o denotar la condición que indica su nombre. Convencionalmente, el nombre con el que se designa a una señal también se utiliza para especificar su nivel activo. Un criterio ampliamente utilizado a este fin es el siguiente: Si el nombre de la señal está expresada en forma directa (esto es, sin negar), su nivel activo será el nivel ALTO. En caso contrario, si la señal lógica posee un nombre expresado en forma de complemento (esto es, negado), su nivel activo será el nivel BAJO. Nomenclatura, niveles activos y símbolos de terminales Al igual que las señales de entrada y de salida, los terminales de entrada y de salida de un circuito lógico también deben identificarse mediante nombres. Al aumentar la complejidad del circuito deben utilizarse nombres de acuerdo a la función del terminal. Así, el nombre de un terminal de entrada debe coincidir con el efecto que se pretende conseguir sobre ese circuito al actuar sobre dicha entrada y el nombre de un terminal de salida debe indicar el estado que dicha salida refleja o la acción que se desea lograr con ella. De esta manera, las etiquetas de los nombres asignados facilitarán la lectura de representaciones como circuitos, símbolos, diagramas y esquemas. En forma coherente, el nivel activo de un terminal es aquél que logra el efecto indicado por el nombre del terminal y nuevamente, este nombre puede estar expresado en forma directa o inversa, indicando así cuál es su nivel activo. En resumen, la nomenclatura de terminales de un circuito lógico sigue las mismas convenciones y criterios utilizados para la designación de señales. En el caso de los terminales, los símbolos de los dispositivos también especifican el nivel activo. Se utiliza un círculo pequeño, denominado círculo de negación, para indicar que el terminal es activo en BAJO, mientras que la ausencia de este círculo significa que el terminal es activo en ALTO. Interconexión de circuitos Al definir el concepto de terminal de entrada hemos planteado que el terminal de salida de un circuito puede constituir la señal de entrada a otro circuito. Esta es una situación muy común en los circuitos digitales, como puede observarse, por ejemplo, en la implementación de funciones lógicas mediante interconexión de compuertas lógicas. En la Figura 4.1 se muestran los bloques funcionales de dos circuitos o dispositivos interconectados de manera tal que la salida del circuito 1 se conecta a la entrada del circuito 2. Se dice así que el circuito 1, o mejor dicho, la salida del circuito 1 excita la entrada del circuito 2. 90 Figura 4.1 Bloque funcional representativo de un dispositivo eléctrico / electrónico cualquiera: Cuando la salida de un circuito se encuentra desconectada de cualquier otro dispositivo se dice que la salida está en vacío o sin carga. En la interconexión, el circuito 1 se denomina circuito excitador y el circuito 2 se denomina circuito de carga o simplemente carga. De esta forma, refiriéndonos a la Figura 4.1, decimos que el circuito 2 es la carga del circuito 1, y a la vez, como la salida del circuito 2 se muestra sin conectar a ningún otro dispositivo, el circuito 2 está en vacío. Cabe acotar que la fuente de alimentación de ambos circuitos puede ser la misma o bien pueden ser fuentes distintas, pero de cualquier manera puede observarse que los terminales de masa o tierra de cada circuito están eléctricamente conectados al mismo punto, que es el punto de referencia de tensión cero. En la interconexión se establece un flujo de corriente entre la salida y la entrada de los dispositivos interconectados. En la Figura 4.1 se muestran corrientes que circulan en ambos sentidos, solamente a fin de resaltar que en la interconexión la corriente puede ser entrante o saliente respecto a la salida del circuito excitador, pero en un momento dado, sólo una de ellas estará presente. El sentido de circulación de la corriente depende del valor lógico que el dispositivo excitador vuelca a su salida. La magnitud de esta corriente depende de las características eléctricas de salida y entrada de los dispositivos interconectados y para determinarla primero debemos definir los conceptos de impedancia de entrada e impedancia de salida de un circuito. Impedancia de entrada La impedancia de entrada (Zin) de un circuito es una medida de la oposición al paso de la corriente eléctrica que presenta dicho circuito ante la aplicación de una señal eléctrica en su entrada (excitación). De esta manera, mientras mayor sea la impedancia de entrada de un dispositivo, menor será la corriente absorbida por dicho dispositivo al ser conectada como carga de otro dispositivo. Es decir, el dispositivo consume menos corriente al aumentar su impedancia de entrada, siendo ésta una condición de diseño buscada en todo circuito. Impedancia de salida La impedancia de salida (Zout) de un circuito es una medida de la oposición al paso de la corriente eléctrica que presenta dicho circuito en su salida al conectársele una carga (cuando la salida del circuito se encuentra en vacío o sin carga, no hay circulación de corriente en la salida). Recordemos que la salida de un circuito es el terminal por donde el circuito vuelca o coloca, a modo de fuente de alimentación, una diferencia de potencial eléctrico respecto del terminal de masa del circuito. 91 Para aclarar este concepto analizaremos el caso de la impedancia de salida Zout de una fuente de alimentación cualquiera. Toda vez que hemos analizado un circuito hemos considerado fuentes de alimentación “ideales”, y como tal, el dispositivo mantiene una diferencia de potencial eléctrico constante entre sus bornes o terminales, independientemente de la corriente que suministra al circuito. En realidad esto no sucede así, sino que las fuentes brindan una tensión que decae ante aumentos de la intensidad de corriente suministrada al circuito de carga. Por esta razón, las fuentes de alimentación tienen entre sus especificaciones técnicas el valor de corriente máxima, que es aquella que puede circular sin que la tensión de la fuente caiga por debajo de su valor nominal. Esto sucede así porque las fuentes de alimentación poseen una impedancia interna o impedancia de salida Zout que normalmente es muy pequeña (para que sea una buena fuente de alimentación esta impedancia debe ser pequeña). Consideremos el caso de un circuito sencillo como el mostrado en la Figura 4.2a, que consiste en una fuente ideal que alimenta una resistencia R. De esta forma, cualquiera sea el valor de la resistencia (es decir para cualquier valor de corriente consumida por la carga), la tensión aplicada sobre la resistencia es siempre la tensión de la fuente: VR = Vf. En cambio, en la Figura 4.2b, la resistencia está alimentada por una fuente real que tiene una impedancia interna o impedancia de salida Zout = Ri de valor muy pequeño. Así, la tensión aplicada sobre la resistencia R será la tensión de la fuente menos la caída de tensión producida sobre la impedancia de salida de la fuente V Ri, como se demuestra a continuación: ⇒ Figura 4.2 a) Circuito con una fuente de alimentación ideal. b) Una fuente de alimentación real posee una impedancia interna Rin de pequeño valor que constituye la impedancia de salida Zout del dispositivo La tensión aplicada sobre la resistencia R depende ahora de la corriente consumida por el circuito y su valor decrece con el aumento de corriente suministrada por la fuente. Para que este valor de tensión no descienda a valores inconvenientes, la corriente suministrada por la fuente no debe superar un valor máximo. Así, para que este valor máximo de corriente suministrada sea lo más elevado posible, la impedancia interna de la fuente o impedancia de salida Zout debe ser lo más pequeña posible. De esta manera, la condición o criterio de diseño buscada para la fuente de alimentación es que su impedancia de salida Zout sea lo menor posible, y así, la tensión de salida que suministra disminuya lo menos posible cuando la corriente aumente. La intensidad del flujo de corriente que se establece depende de la impedancia de entrada Zin del dispositivo de carga. La impedancia de entrada de la carga es Zin = R, y a mayor valor, su efecto es que disminuye la corriente suministrada por la fuente y en consecuencia, VR se acerca más al valor de Vf. Por el contrario, cuando Zin disminuye, la corriente I aumenta, y por ende. VR disminuye, alejándose del valor de Vf. Concluyendo, el criterio de diseño para el circuito excitador es tener una baja impedancia de salida Zout, para que el valor de tensión que vuelca en su salida difiera lo menos posible ante la conexión de la carga. Asimismo, el circuito de carga debe tener una alta impedancia de entrada Zin, de manera que consuma la menor corriente posible. 92 Flujo de corriente y valor de tensión entre dispositivos interconectados Analizaremos ahora el flujo de corriente y el valor de tensión entre la salida y la entrada de dos circuitos lógicos interconectados, para ambos niveles lógicos. Interconexión en estado ALTO En la Figura 4.3 se considera el caso en que la salida del circuito 1 está en nivel ALTO. En este caso la salida suministra una corriente I a la entrada del circuito 2. Esta entrada actúa como una impedancia a tierra cuyo valor es la impedancia de entrada Zin del circuito 2 (recordar que la circulación de corriente se produce de un punto de mayor potencial eléctrico a otro de menor potencial). La salida del circuito 1 se representa como la impedancia de salida Zout conectada al borne positivo de la fuente de alimentación Vcc del circuito. Figura 4.3 Tensión y corriente para la salida en ALTO de un circuito lógico conectado a la entrada de otro. Para mantener el valor ALTO en el punto de interconexión, el valor de tensión V debe ser lo más cercano posible al valor de la fuente Vcc. Calculamos este valor V como: Esta expresión indica que el valor de V es igual al valor de la tensión de la fuente menos la caída producida en la impedancia de salida, por lo que mientras más pequeña sea la caída en la impedancia de salida, el valor de V será más cercano a Vcc. Para un determinado valor de I, esta caída (I.Zout) es menor mientras más chica sea la impedancia de salida, en un todo de acuerdo al criterio de diseño ya visto. A su vez, mientras menor sea la intensidad de corriente I suministrada, la tensión V será más cercana a Vcc y como la intensidad de esta corriente es función del valor de la impedancia de entrada Zin del circuito 2, mientras mayor sea esta impedancia Zin menor será la corriente I que debe suministrar la salida del circuito 1. Dispersión de salida en estado ALTO Es muy común que la salida de un circuito lógico maneje varias entradas, como se muestra en la Figura 4.4a. En este caso observamos que todas las entradas están conectadas a una salida única, por lo que todas las impedancias de entrada de los circuitos de carga quedan conectadas entre esta única salida y la masa o tierra del circuito, conformando una asociación de impedancias en 93 Para garantizar que el valor de tensión de salida no disminuya por debajo del intervalo de tensión definido para el 1 lógico los fabricantes especifican en la hoja de datos del dispositivo el máximo valor de corriente que puede suministrar la salida del circuito en estado ALTO. paralelo. La corriente I que debe suministrar la salida excitadora es la suma de las corrientes consumidas por cada una de las entradas. Como ya hemos analizado, al aumentar la corriente I aumenta la caída de tensión en Zout y disminuye el valor de tensión V en la salida del circuito. Este aumento de corriente puede tomar una magnitud tal que la tensión V caiga por debajo del nivel de tensión mínimo que representa el estado ALTO (sale fuera del intervalo de tensión especificado para el nivel ALTO). Si esto ocurriese, la o las entradas excitadas por dicha salida no podrán discriminar a dicho valor de tensión como un 1 lógico. Esto limita la cantidad de entradas que una salida puede excitar en ese estado y a este valor se le llama abanico de salida o dispersión de salida (fan out) para el estado ALTO. En el otro extremo, ver Figura 4.4b, tenemos el caso en que la salida del circuito se encuentra en vacío (salida sin carga). Al no existir circulación de corriente no hay caída de tensión sobre Zout y el valor de tensión V en la salida del circuito es igual a la tensión Vcc de la fuente. Cualquier carga que se conecte a esta salida hará que la tensión V disminuya en proporción a la corriente suministrada por dicha salida. Figura 4.4 a) Tensión y corriente para la salida en ALTO de un circuito lógico que maneja 3 entradas b) Salida en ALTO para un circuito en vacío o sin carga. Ejemplo Supongamos que la salida del circuito 1 de la Figura 4.4a puede suministrar una corriente máxima de 0,4 mA = 400 µA en su estado ALTO (este valor es referido por los fabricantes como “IOH = máxima corriente de salida de nivel ALTO”). Supongamos también que cada entrada de los dispositivos de carga consume una corriente de 0,02 mA = 20 µA cuando son excitados con un nivel ALTO (este valor es referido por los fabricantes como “IIH = corriente de entrada de nivel ALTO”). 94 Ejemplo (continuación) De esta forma, la corriente I que debe suministrar la salida excitadora será la suma de las corrientes consumidas por cada una de las entradas: I IIH1 IIH2 IIH3 3 20 uA 60 uA Este valor de corriente es menor que IOH = máxima corriente de salida de nivel ALTO = 400 µA. Esto quiere decir que la salida del dispositivo puede todavía manejar más entradas de este tipo. Calculemos entonces el abanico o dispersión de salida (fan out) para el estado ALTO de este dispositivo, es decir, la cantidad máxima de entradas de este tipo que el dispositivo puede manejar en este estado: dispersión de salida (ALTO) IOH 400 uA 20 IIH 20 uA Es decir que la salida del circuito 1 en nivel ALTO puede manejar hasta 20 entradas de este tipo sin que la tensión de salida V caiga por debajo del intervalo de tensión especificado para el nivel ALTO Interconexión en estado BAJO En la Figura 4.5 se considera el caso en que la salida del circuito 1 está en nivel BAJO. En este caso, la circuitería de salida está representada por la impedancia de salida Zout conectada a la masa o tierra del circuito y la circuitería de entrada del circuito 2 está representada por la impedancia de entrada Zin conectada al borne positivo de la fuente de alimentación Vcc del circuito de carga. De esta manera la corriente I fluye desde la entrada del circuito 2 de regreso a tierra a través de la impedancia de salida Zout del circuito 1 (recordar que la circulación de corriente se produce de un punto de mayor potencial eléctrico a otro de menor potencial). En otras palabras, en el estado BAJO la salida del circuito excitador debe ser capaz de “consumir” o “drenar” una corriente I que proviene de la entrada del circuito de carga. Lo que se pretende en este caso es que el valor de tensión V en el punto de interconexión sea lo más cercano a 0 volt. Calculamos este valor V como: es decir que la tensión a la salida es igual al valor de la caída de tensión producida en la impedancia de salida (I.Zout), por lo que mientras más pequeña sea esta impedancia más cercano a 0 volt será el valor de la salida para un determinado valor de I (en un todo de acuerdo al criterio de diseño ya visto para la salida de un circuito). A su vez, mientras menor sea la intensidad de corriente I consumida por la salida, también el valor de V será más cercano a 0 volt y como la intensidad de esta corriente es función del valor de la impedancia de entrada Zin, mientras mayor sea esta impedancia de entrada Zin del circuito 2, menor será la corriente I que debe drenar la salida del circuito 1. 95 Figura 4.5 Tensión y corriente para la salida en BAJO de un circuito lógico conectado a la entrada de otro. Dispersión de salida en estado BAJO En la Figura 4.6a se muestra el caso de varias entradas conectadas a una misma salida que provee un nivel BAJO. En estas condiciones, la salida excitadora debe ser capaz de drenar las corrientes que provienen de todas las entradas de carga y por lo tanto, la corriente I consumida por la salida será la suma de las corrientes provenientes de todas las entradas. Figura 4.6 (a) Tensión y corriente para la salida en BAJO de un circuito lógico que maneja 3 entradas b) Salida en BAJO para un circuito en vacío o sin carga. Como ya se analizó, al aumentar la corriente I aumenta la caída de tensión en Zout aumentando así el valor de tensión V en la salida del circuito; este aumento de corriente puede tomar una magnitud tal que la tensión V aumente hasta un valor superior al nivel de tensión máximo que materializa al estado BAJO (sale fuera del intervalo de tensión especificado para el nivel BAJO) y así la o las entradas excitadas por dicha salida no podrán discriminar a 96 Para garantizar que el valor de tensión de salida se mantenga dentro del intervalo de tensión definido para el 0 lógico los fabricantes especifican en la hoja de datos del dispositivo el máximo valor de corriente que puede drenar la salida del circuito en estado BAJO. dicho valor de tensión como un 0 lógico. Esto limita la cantidad de entradas que una salida puede excitar en ese estado y a este valor se le llama abanico o dispersión de salida (fan out) para el estado BAJO. En el otro extremo, ver Figura 4.6b, tenemos el caso en que la salida del circuito 1 se encuentra sin carga y no habiendo circulación de corriente no hay caída de tensión sobre Zout. Por eso, la salida en valor BAJO del circuito 1 en vacío es V = 0 volt. Cualquier carga que se conecte a esta salida hará que la tensión aumente en proporción a la corriente drenada por dicha salida. Ejemplo Supongamos que la salida del dispositivo de la Figura 4.6a puede drenar o consumir una corriente máxima de 8 mA = 8000 µA en su estado BAJO (este valor es referido por los fabricantes como “IOL = máxima corriente de salida de nivel BAJO”). Supongamos también que cada dispositivo de entrada suministra a la salida excitadora una corriente de 0,1 mA = 100 µA cuando son excitados con un nivel BAJO (este valor es referido por los fabricantes como “IIL = corriente de entrada de nivel BAJO”). De esta forma, la corriente I que debe drenar o consumir la salida excitadora será la suma de las corrientes suministradas por cada una de las entradas: I IIL1 IIL2 IIL3 3 100 uA 300 uA Este valor de corriente es menor que IOL = máxima corriente de salida de nivel BAJO = 8000 µA. Esto quiere decir que la salida del dispositivo en valor BAJO puede todavía manejar más entradas de este tipo. Calculemos entonces el abanico o dispersión de salida (fan out) para el estado BAJO de este dispositivo, es decir, la cantidad máxima de entradas de este tipo que el dispositivo puede manejar en este estado: dispersión de salida (BAJO) IOL 8000 uA 80 IIL 100 uA Es decir que la salida del dispositivo en nivel BAJO puede manejar hasta 80 entradas de este tipo sin que la tensión de salida V aumente por arriba del intervalo de tensión especificado para el nivel BAJO. Es de hacer notar que el abanico o dispersión de salida (fan out) de un dispositivo es distinto para cada uno de los estados, por lo que para el diseño debe tomarse el valor más bajo, en este caso el correspondiente al fan out ALTO cuyo valor es 20 de acuerdo a lo calculado en el ejemplo anterior. Circuito integrado Un circuito integrado (CI) es una pastilla o chip de material semiconductor que contiene desde cientos a millones de componentes electrónicos interconectados, (principalmente resistencias, diodos y transistores) en un área que puede ser de un cm2 o incluso inferior. La fabricación de un circuito integrado se realiza a partir de obleas de silicio muy puro, sobre las que se “dibujan" circuitos microscópicos por medio de máscaras litográficas atacadas químicamente. De este modo, quedan intactas las zonas protegidas por la máscara y se dopa con el material deseado el silicio que quede expuesto a través de las ventanas abiertas en las máscaras. Luego, se añaden los "cables" también por medio de máscaras de conexionado. 97 Posteriormente, se corta la oblea en circuitos individuales por medio de una sierra de diamante y el chip resultante se introduce en el encapsulado, conectando los pines. La Figura 4.7 presenta una imagen en corte de un circuito integrado, mostrando la disposición de sus elementos internos. Figura 4.7 Esquema de un circuito integrado Hoja de datos Para identificar la función que cumple el circuito integrado, el fabricante le asigna un código identificatorio y publica la hoja de datos o datasheet, donde se detalla la función que cumple, disposición de pines, parámetros eléctricos y demás especificaciones técnicas del circuito integrado. Figura 4.8 Ejemplo de hoja de datos. Circuito integrado 7408, cuádruple compuerta AND de dos entradas. 98 En las hojas de datos, los niveles lógicos se designan como HIGH (nivel lógico ALTO) y LOW (nivel lógico BAJO). Y de estos términos se derivan los símbolos de los valores lógicos 1 y 0, los cuales se representan con las letras H y L, respectivamente. La Figura 4.8 muestra a modo de ejemplo parte de la hoja de datos del CI 7408, que contiene cuatro compuertas AND de dos entradas cada una. Se muestra el diagrama de conexiones, que indica la distribución de pines del circuito integrado. El ejemplo mostrado contiene también algunas especificaciones del fabricante para el correcto funcionamiento del dispositivo. Las hojas de datos pueden contener además diagramas temporales y tablas de verdad. Hay que tener en cuenta que la nomenclatura utilizada en las hojas de datos (nombres de niveles lógicos, siglas, abreviaturas, etc.) se basa en el idioma inglés, aunque la hoja de datos se encuentre traducida. Familias lógicas Los circuitos lógicos pueden ser implementados mediante la interconexión de compuertas lógicas. Estas compuertas son circuitos electrónicos construidos en base a diodos, transistores y resistencias. En la Figura 4.9 se muestran circuitos muy simples que implementan compuertas lógicas fundamentales utilizando solamente diodos y resistencias (lógica con diodos) y en la Figura 4.10, utilizando solamente transistores y resistencias (lógica con transistores). Figura 4.9 Lógica con diodos; utilización de diodos y resistencias (componentes discretos) para la implementación de compuertas lógicas. Figura 4.10 Lógica con transistores: utilización de transistores y resistencias (componentes discretos) para la implementación de compuertas lógicas. Estos circuitos tienen la ventaja de ser muy sencillos pero presentan algunos inconvenientes eléctricos cuando las compuertas se interconectan para conformar el circuito lógico (por ejemplo, inconvenientes debido a valores no óptimos de las impedancias de entrada y salida). Para solucionar estos inconvenientes y lograr un aumento de la performance de las compuertas hubo que diseñar circuitos más complejos, lo que se hizo posible gracias al empleo de la tecnología de circuitos integrados (CI) que permite la síntesis de la circuitería completa en un sustrato de silicio contenido en un encapsulado pequeño. A la 99 implementación de sistemas lógicos basada en el uso de circuitos integrados se le denomina lógica con CI. Podemos agrupar a los CI de acuerdo a los componentes principales utilizados en la implementación de su circuitería, en lo que se denominan familias lógicas de circuitos integrados. Cada familia lógica tendrá diferentes características eléctricas y propiedades de operación. A continuación se enumeran cuatro tipos de familias lógicas de CI, que por su aparición en orden cronológico son: Hay distintos tipos de transistores unipolares y de acuerdo a que los CI empleen uno u otro tipo o una combinación de ellos tendremos, entre otras, las sub familias NMOS, PMOS y CMOS, siendo esta última la más representativa de las familias MOS. Familia RTL (Resistor Transistor Logic: Lógica Resistor Transistor). Fue la primera familia lógica desarrollada y está construida a base de resistencias y transistores. Familia DTL (Diode Transistor Logic: Lógica Diodo Transistor). Sus componentes principales son diodos y transistores y constituyó una mejora sobre la familia RTL. Familia TTL (Transistor Transistor Logic: Lógica Transistor Transistor). Sus componentes principales son los transistores bipolares (estos son los transistores estudiados en este curso) y es la que posee mejores características eléctricas y propiedades de operación. Familia CMOS (Complementary MOSFET Logic). Sus componentes principales son los transistores unipolares o transistores de efecto de campo MOSFET, constituye la familia de mayor uso en la actualidad. Las tres primeras familias lógicas emplean transistores bipolares, diodos y resistencias y se clasifican como familias bipolares. La familia bipolar más representativa es la familia TTL. La última familia enumerada pertenece a las familias MOS, que son aquellas que emplean transistores unipolares o transistores de efecto de campo. Resumiendo, podemos decir entonces que las familias lógicas son conjuntos de circuitos integrados digitales fabricados con una tecnología de transistores determinada. Cabe aclarar que este conjunto de CI puede ir desde simples compuertas lógicas y circuitos lógicos de diversa complejidad, hasta llegar a los CI más complejos como los microprocesadores. La tecnología de transistores utilizada determina para cada familia lógica características eléctricas y propiedades de operación. Algunas de ellas son: Niveles de tensión para determinar los unos y ceros. Velocidad de respuesta: la velocidad de una compuerta lógica es medida por el retardo de propagación de un inversor básico o compuerta NAND. Capacidad de carga o cargabilidad de salida (fan out): determina la cantidad de compuertas de la misma familia que puede manejar la salida de una compuerta o circuito lógico; mientras mayor sea la impedancia de entrada de los circuitos lógicos más grande será su fan out. Tensión de alimentación: es la tensión que la fuente de alimentación debe entregarle al CI para su funcionamiento normal. Potencia consumida: es la potencia eléctrica (en miliwatts) que una compuerta o un circuito integrado toma de la fuente de alimentación. 100 Niveles de integración De acuerdo a su complejidad circuital, los CI pueden contener distinto número de transistores y diodos, equivalente a una determinada cantidad de compuertas básicas. Se denomina nivel de integración al número de componentes contenidos en un CI, y de acuerdo a este número, se clasifican en: SSI (Small Scale Integration: nivel de integración pequeño) Inferior a 100 compuertas, se utilizan en el lógica de conmutación, compuertas AND, NAND, OR, NOR, etc. MSI (Medium Scale Integration: nivel de integración medio) De 101 a 1000 compuertas, se utiliza en codificadores, decodificadores, sumadores, comparadores, multplexores, etc. LSI (Large Scale Integration: nivel de integración grande) De 1 001 a 10 000 compuertas, utilizados en memorias. VLSI (Very Large Scale Integration: nivel de integración muy grande) De 10 001 a 100 000, utilizados en microprocesadores. ULSI (Ultra Large Scale Integration: nivel de integración ultra grande) De 100 001 a 1 000 000 de compuertas, se utiliza en la construcción de microprocesadores complejos. GLSI (Giga Large Scale Integration) más de un millón de compuertas. Retardo de propagación Figura 4.11 Retardo de propagación. En muchas compuertas el retardo de propagación para una transición en la salida de ALTO a BAJO es diferente al retardo asociado a un cambio de BAJO a ALTO. Estos valores son indicados por el fabricante en las hojas de datos. Hasta ahora, hemos descrito la relación entre las entradas y salidas de un circuito lógico asumiendo que cuando ocurre un cambio en la entrada, el cambio correspondiente en la salida sucede en forma instantánea. En los CI reales estos cambios requieren un tiempo para producirse. Este retraso es inherente al funcionamiento del componente y su valor depende en el nivel más elemental de la tecnología o familia lógica en la que se basa el componente. Se denomina retardo de propagación o tiempo de retardo al intervalo de tiempo que transcurre entre el instante de tiempo en que cambia la entrada y el instante de tiempo en que ocurre el cambio correspondiente en la salida. Así, el tiempo de retardo representa la velocidad de respuesta que posee un circuito, y por ende, un límite para la frecuencia máxima de operación. Por ejemplo, un circuito lógico con un tiempo de retardo de 10 nanosegundos no funcionará correctamente si se lo somete a cambios que se presenten con períodos de tiempo menores a este valor. El tiempo de retardo es acumulativo cuando la salida de un componente actúa como entrada de otro y por lo tanto, el retardo total de un circuito lógico depende de su complejidad. Para poder realizar comparaciones de velocidad de funcionamiento, se toma como referencia el tiempo de retardo de la compuerta lógica más sencilla, o sea, la compuerta inversora. La Figura 4.11 muestra el diagrama de tiempo de las señales de entrada y salida de un inversor. Por tratarse de un INVERSOR, cada vez que la señal de entrada cambia de nivel, la señal de salida también debe cambiar de nivel, para ̅ . El diagrama temporal de la señal S muestra que cada cambio de generar nivel en la señal de salida ocurre con un pequeño retraso respecto al instante en que ocurre el cambio de nivel de la señal entrada E. La figura indica el tiempo de retardo del primer flanco de subida de la señal de salida. Los tiempos de retardo correspondientes a los demás flancos de la señal de salida se resaltan con líneas de puntos. Debe tenerse en cuenta que en esta representación simplificada se considera que los cambios de un nivel a otro se producen en forma instantánea. Por esta razón, los flancos de subida y de bajada de las señales mostradas en la 101 Figura 4.11 son líneas verticales. En los circuitos reales las señales eléctricas requieren un tiempo para hacer la transición de un nivel a otro y por lo tanto los flancos tienen cierta pendiente. Familia lógica TTL Los circuitos TTL se basan en transistores bipolares y algunas resistencias de polarización. Esta tecnología utiliza una tensión nominal de alimentación de 5 volts. Esta fue la familia de CI que dio lugar a la difusión de la tecnología digital, convirtiéndose en estándar de la industria de fabricación de CI entre 1965 y 1985. Aunque actualmente su uso se encuentra en declive frente a la tecnología de las familias MOS, aún se emplean CI TTL en circuitos de interfaz para dispositivos que requieren el manejo de altas corrientes de salida y existen varias subfamilias TTL que presentan mejoras en algunas de las características eléctricas tales como la velocidad y la potencia consumida. Describiremos el funcionamiento de los CI lógicos de esta tecnología, ya que han tenido una gran influencia en las características de todos los dispositivos lógicos. Intervalos de voltaje de entrada y salida Se representan los niveles lógicos mediante intervalos de voltaje porque el valor de la tensión de salida del circuito dependerá de la intensidad de la corriente que circula a la salida. Esta corriente puede ser suministrada a la carga (ver Figura 4.3) o drenada desde la carga (Ver Figura 4.5). En la Figura 4.12a se muestran los intervalos de tensión que el fabricante “garantiza” a la salida del circuito lógico para la representación de los niveles lógicos. Observamos que el nivel BAJO (0 lógico) estará dado por un intervalo de tensión de entre 0 y 0,4 volt y el nivel ALTO (1 lógico) estará dado por un intervalo de tensión de entre 2,4 y 5 volt. El fabricante garantiza estos valores siempre y cuando la intensidad de corriente a la salida del circuito no supere la máxima corriente de salida especificada (o lo que sería equivalente a decir que no se supere el fan out especificado) ya que si esto sucede, el valor de la tensión a la salida se situará dentro del “intervalo no permitido” (0,4 V < Vsal < 2,4 V). 5V Figura 4.12 Intervalos de tensión TTL para la representación de valores lógicos. 5V Nivel ALTO Nivel ALTO 2,4 V 2V Intervalo no permitido Intervalo no permitido 0,8 V 0,4 V 0V Nivel BAJO (a) Intervalos de tensión de salida 0V Nivel BAJO (b) Intervalos de tensión de entrada En la Figura 4.12b se muestran los intervalos de tensión que se deben “respetar” a la entrada del circuito lógico. Nótese que los intervalos de tensión 102 de entrada válidos para los niveles lógicos son mayores que los respectivos intervalos de tensión asignados para la salida. Esto provee un margen de seguridad para asegurar que cuando la salida de un circuito excita a varias entradas, el valor de tensión en el punto de interconexión estará dentro de los intervalos preestablecidos (siempre y cuando la salida no esté sobrecargada, es decir que no se supere la máxima corriente de salida o se exceda el fan out). La diferencia de los intervalos también otorga cierta inmunidad a la tensión eléctrica inducida en los cables de conexión entre los circuitos lógicos (ruido eléctrico) generado por los campos eléctricos y magnéticos presentes en el medio. Para una operación adecuada un circuito debe distinguir en cada una de sus entradas uno de los dos valores lógicos. Para que esto sea posible, las tensiones de entrada deben ubicarse en uno de los intervalos válidos. Las tensiones de entrada ubicados en los intervalos no permitidos producirán una respuesta impredecible del circuito y por lo tanto se deben evitar. A su vez, las tensiones de salida de un circuito lógico deben asegurar que sus valores se ubiquen en los intervalos asignados para que al ser utilizados como entrada de otros circuitos lógicos, éstos operen correctamente. Circuito TTL básico El circuito lógico TTL básico es la compuerta NAND mostrado en la Figura 4.13. Haremos un análisis muy simple de cómo funciona este circuito para extraer algunas conclusiones que nos permitirán entender las características de todos los dispositivos lógicos. Figura 4.13 Circuito TTL básico (Compuerta NAND). (a) Símbolo; (b) Circuito; (c) Circuito equivalente de la unión baseemisor múltiple de Q1. Es muy conveniente comprender la naturaleza de la circuitería en la entrada y en la salida de la compuerta básica TTL ya que esto nos ayudará para el análisis y el diseño de circuitos digitales tanto con esta familia lógica como también con familias más actuales como la CMOS. 103 El transistor de entrada de emisor múltiple puede tener hasta ocho emisores, es decir, puede conformar una compuerta NAND de hasta ocho entradas. Las características de las entradas TTL provienen de la configuración de emisor múltiple del transistor de entrada Q1. Los emisores múltiples de este transistor se pueden interpretar, tal como muestra la Figura 4.13c, como un arreglo o unión de dos diodos unidos por sus ánodos. Así, los diodos D2 y D3 representan las dos uniones base-emisor de Q1. Por lo tanto, la polarización en directo de una o ambas de estas uniones de diodos lleva al transistor Q1 a saturación. Sólo cuando todas las uniones están polarizadas inversamente el transistor estará en corte o desactivado. Por otro lado, la salida de la compuerta es un circuito tipo totem pole conformado por dos transistores, QA y QB, que trabajan al corte y saturación, a modo de dos llaves electrónicas accionadas en oposición, es decir que cuando QA está al corte (llave abierta) QB debe estar saturado (llave cerrada) y viceversa. La función de QA es conectar Vcc a la salida cuando está saturado colocando un nivel ALTO en la misma. La función de QB es conectar la salida a tierra cuando está saturado, colocando un nivel BAJO en la misma. Operación del circuito: salida en nivel BAJO Cuando los diodos D2 y D3 quedan polarizados inversamente, sólo circula por ellos una pequeña corriente inversa de fuga del orden de los 10 μA. Vamos a considerar el caso en que la salida está en BAJO. En la figura 2-5 se muestra el estado de los transistores y las entradas para esta situación: ambas entradas E0 y E1 deben estar en valor ALTO, es decir, en un rango de tensión de entre 2 y 5V. Consideraremos el caso de que estén conectadas a Vcc = 5 V. Así, los dos diodos D2 y D3 que conforman las uniones base-emisor de Q1 quedan polarizados inversamente y no conducen corriente, con lo que Q1 permanece al corte (no hay circulación de corriente de colector a emisor). Figura 4.14 Circuito TTL básico (Compuerta NAND). Valores lógicos de entrada y estado de los transistores para la salida en nivel BAJO. En un transistor npn el circuito base-colector es una unión pn, o sea, un diodo cuyo ánodo es la base y cuyo cátodo es el colector. En esta situación, el transistor Q2 queda saturado, ya que la fuente de alimentación Vcc inyectará corriente en la base de Q2 a través de R1 y del diodo que conforma la unión base-colector de Q1 (como Q1 está al corte, la unión base-colector queda polarizada en forma directa, estableciéndose una circulación de corriente desde la fuente hacia la base de Q2 a través de R1 y la unión base-colector de Q1). 104 La de tensión en la salida S en nivel BAJO aumenta ante el incremento de la corriente que dicha salida drene o consuma de las entradas TTL conectadas a ella (ver Figura 4.6). Con Q2 saturado se establece una circulación de corriente a través del circuito colector-emisor de Q2 que fluirá hacia la base de QB con lo que dicho transistor va a la saturación. Al mismo tiempo, la tensión del colector de Q2 que está conectado a la base de QA- se establece en aproximadamente 0,8 V ya que es la suma de la diferencia de tensión entre base-emisor de QB saturado (0,7 V) y la diferencia de tensión entre colector-emisor de Q2 saturado (0,1 V). Este valor de tensión de 0,8 V está aplicado en la base de QA y es insuficiente para polarizar a la unión base-emisor de este transistor ya que su emisor está conectado a tierra a través del diodo D1 y el circuito colector-emisor del transistor QB saturado, por lo que se necesita una tensión mayor a 0,1 V + 0,7 V + 0,7 V = 1,5 V aplicado sobre la base de QA para que este conduzca y así QA permanece al corte. De hecho el diodo D1 se coloca para provocar una caída de 0,7 V en la malla y asegurar el corte de QA con QB saturado. De esta manera, con QA al corte (interruptor superior del circuito totem pole abierto) y QB saturado (interruptor inferior del circuito totem pole cerrado) la salida S tendrá un voltaje de entre 0,4 V y 0,1 V, que es la diferencia de tensión entre colector-emisor de QB saturado y que se corresponde con el nivel lógico BAJO que debe producirse a la salida de la compuerta NAND cuando ambas entradas están en ALTO. Operación del circuito: salida en nivel ALTO La corriente que fluye a tierra a través de cada unión baseemisor de Q1 que se encuentre polarizada en directo es de aproximadamente 1,1 mA para una compuerta TTL estándar. Vamos a considerar ahora el caso en que la salida está en nivel ALTO. Este nivel lógico en la salida se puede producir conectando alguna o ambas entradas a nivel BAJO. En la Figura 4.13 se muestra el estado de los transistores y las entradas para esta situación. En este caso, la entrada E1 está conectada a tierra. Esto polarizará en directo al diodo que conforma la unión base-emisor correspondiente a esta entrada, con lo que fluirá una corriente desde la fuente de alimentación, a través de R1 y de dicho diodo base-emisor y a través del terminal de entrada B hacia tierra y el transistor Q1 permanecerá saturado. El colector de este transistor saturado tratará de drenar corriente de la base del transistor Q2, con lo que este transistor quedará despolarizado -ya que es un transistor npn- pasando así al estado de corte. Figura 4.15 Circuito TTL básico (Compuerta NAND). Ejemplo de valores lógicos de entrada y estado de los transistores para la salida en nivel ALTO. 105 La tensión de salida de nivel ALTO disminuirá en la medida que aumente la corriente que dicha salida suministre a las entradas TTL conectadas a ella. (ver Figura 4.4) Con Q2 al corte no hay circulación de corriente por el circuito de colector-emisor con las siguientes dos consecuencias: no hay suministro de corriente para la base del transistor QB, con lo que éste último queda al corte y la tensión en la base del transistor QA será lo suficientemente grande como para polarizar en directo a la unión base-emisor de QA y al diodo D1, de manera que QA quedará saturado. De esta manera, con QA saturado (interruptor superior del circuito totem pole cerrado) y QB al corte (interruptor inferior del circuito totem pole abierto) la salida X tendrá un voltaje cercano a la fuente de alimentación de 5 V, que se corresponde con el nivel lógico ALTO que debe producirse a la salida de la compuerta NAND cuando alguna o ambas entradas están en BAJO. Otras compuertas TTL. Si reemplazamos el transistor de entrada de emisor múltiple por un transistor de un solo emisor y mantenemos la misma configuración de salida tipo totem pole de la compuerta NAND ya vista, obtenemos una compuerta inversora o compuerta NOT. Si reemplazamos el transistor de entrada de emisor múltiple por varios transistores de un solo emisor dispuestos en forma conveniente y de manera que los terminales de los emisores de estos transistores sean las entradas del circuito y mantenemos la misma configuración de salida tipo totem pole de la compuerta NAND ya vista, obtenemos una compuerta NOR. Disponiendo entonces los transistores de entrada en forma conveniente para lograr a la salida la función lógica buscada, se pueden obtener los circuitos de las otras compuertas. Circuitos lógicos TTL Finalmente, se pueden obtener circuitos lógicos más complejos con una o más salidas (decodificadores, multiplexores, biestables, contadores, etc.) combinando en forma conveniente los circuitos de entrada de las compuertas lógicas necesarias para la implementación del circuito y manteniendo, para cada salida del circuito, la misma configuración de salida tipo totem pole de la compuerta NAND ya vista. Figura 4.16 Diagrama en bloques que representa a un circuito lógico cualquiera con n entradas y una sola salida. En la Figura 4.16 se muestra el diagrama en bloques que representa a un circuito lógico cualquiera con una sola salida. El bloque funcional “lógica de 106 control” contiene la circuitería necesaria para generar sobre las salidas YA e YB los valores de tensión que excitarán convenientemente las bases de los transistores QA y QB (mientras un transistor está cortado, el otro permanece saturado) de acuerdo al valor lógico que debe adoptar la salida S en función de los valores presentes en las entradas del circuito lógico. Los transistores QA y QB actúan a modo de interruptores electrónicos, por lo que en el diagrama en bloques podemos reemplazar los transistores por los esquemas usados para representar a estos interruptores. Así, en la Figura 4.17 se muestran los estados de estos interruptores para cuando la salida X se encuentra en valor BAJO y ALTO (por simplicidad, se omite la representación del diodo D1). Figura 4.17 Diagramas en bloques que representan a un circuito lógico cualquiera con n entradas y una sola salida mostrando los estados de los interruptores para ambos estados de la salida. Por último, podemos extender este diagrama para que represente a un circuito lógico con varias salidas, en donde para cada salida tendremos una configuración tipo totem pole y el bloque “lógica de control” generará todos los pares de salidas necesarios para manejar adecuadamente cada configuración de salida. Resumen: Todos los circuitos TTL tienen una estructura similar. En las compuertas NAND y AND se usan entradas de transistor con emisor múltiple; en las compuertas NOR y OR se usan transistores de entrada (de un solo emisor) separados. En cualquier caso, la entrada será el cátodo (región n) de una unión pn, de modo que un voltaje ALTO de entrada llevará la unión al corte y sólo fluirá una pequeña corriente de fuga. A la inversa, un voltaje BAJO de entrada llevará la unión a la saturación y fluirá una corriente relativamente grande. La mayoría de los circuitos TTL tendrán algún tipo de configuración de salida tipo totem pole. Hay algunas excepciones que no se analizarán en este curso. Salida lógica de tres estados La salida lógica de tres estados o triestado es un tipo de circuitería de salida que se usa en las familias lógicas TTL y CMOS. Este tercer estado se consigue haciendo que el terminal de salida presente una impedancia muy alta 107 respecto de tierra (nivel de referencia de cero volts) y respecto de la fuente de alimentación. En estas condiciones, se considera que la salida queda eléctricamente desconectada del resto del circuito, como si se tratara de un circuito abierto. También decimos que la salida permanece sin referencia a ninguna tensión o punto del circuito o que permanece en un estado flotante. Llamaremos a este tercer estado de salida estado de alta impedancia (High Z o Hi-Z) o estado de desconexión eléctrica o simplemente tercer estado. Figura 4.18 Diagrama en bloques de un circuito lógico con una salida de tres estados. En la Figura 4.18 se muestra el diagrama en bloques que representa a un circuito lógico cualquiera con una salida de tres estados, donde se ha separado el circuito de salida del resto del circuito lógico. El bloque funcional Lógica de control recibe las señales de entrada de la función lógica y una entrada de habilitación que llamaremos EN (de ENABLE = habilitar). Este bloque lógica de control contiene la circuitería necesaria para generar las señales internas YA e YB, que gobiernan el valor de la salida S, de acuerdo a la función implementada y los valores presentes en las entradas del circuito lógico. El circuito de salida está conformado por los transistores QA y QB en disposición totem pole. Las señales YA e YB son valores de tensión que excitarán convenientemente las bases de los transistores QA y QB, que trabajan al corte o saturación a modo de interruptores electrónicos. Analizaremos a continuación cada caso. Cuando la señal de habilitación está activa, EN = 1, las señales YA e YB operan en forma normal, esto es, aplicando valores de tensión a las bases de QA y QB para que la salida adopte el valor BAJO o ALTO, de acuerdo a las entradas del circuito lógico. Para generar el nivel lógico BAJO en la salida S, la señal YA debe poner al transistor QA en estado de corte (interruptor abierto) y la señal YB debe poner al transistor QB en estado de saturación (interruptor cerrado). En tales condiciones, la salida S se encontrará a un valor de tensión aproximado de 0,1 V, que es la diferencia de tensión entre colector y emisor del transistor QB saturado y se corresponde con el nivel lógico BAJO. Para generar el nivel lógico ALTO en la salida S, la señal YA debe poner al transistor QA en estado de saturación (interruptor cerrado) y la señal YB debe poner al transistor QB en estado de corte (interruptor abierto). En tales condiciones, la salida S se encontrará a un valor de tensión cercano a la tensión de alimentación de 5 V, ya que solo existen las caídas de tensión entre colector y emisor de QA saturado (0,1 V) y el diodo D1 en 108 conducción (0,7 V), y este valor de tensión se corresponde con el nivel lógico ALTO. En resumen, cuando EN = 1, el bloque lógica de control genera las señales YA e YB para operar los transistores QA y QB en oposición: mientras un transistor esté al corte el otro estará en saturación, colocando así el valor lógico ALTO o BAJO en la salida S, de acuerdo a las entradas de la función lógica. Observe los estados de salida del circuito para EN = 1 en el diagrama en bloques de la Figura 4.19, donde los transistores QA y QB se han reemplazado por sendos interruptores. Cuando la señal de habilitación está inactiva, EN = 0, las salidas YA e YB adquieren valores tales que ambos transistores QA y QB pasan al estado de corte. En tales condiciones, la salida S se encontrará esencialmente aislada del resto del circuito (interruptores abiertos). Entonces, decimos que la salida del circuito está deshabilitada, pasando a su estado de alta impedancia Hi-Z o de desconexión eléctrica, tal como se ilustra en la Figura 4.19. Figura 4.19 Condiciones de salida para un circuito lógico de tres estados: Ventajas de esta configuración Las salidas de los dispositivos lógicos triestados presentan la ventaja de poder conectarse compartiendo el uso de un mismo conductor (por ejemplo, las líneas de un bus común), siempre y cuando solamente una de ellas, o ninguna, 109 se encuentre habilitada para volcar su valor lógico a la línea común, ya que si más de una salida es habilitada en un mismo tiempo, dichos terminales de salida quedarán cortocircuitados, generando un flujo de corriente que puede dañar los transistores de las salidas interconectadas. Buffer o controlador (driver) Figura 4.20 Símbolos de los búferes no inversor e inversor a) Buffer no inversor b) Buffer inversor En electrónica digital, un buffer o controlador es un circuito lógico que posee una entrada y una salida y ha sido diseñado para tener una corriente de salida o capacidad de carga mayor que un circuito lógico común, de manera de poder excitar muchas compuertas o entradas de circuitos lógicos. Su lógica de funcionamiento puede ser inversora o no inversora. En la Figura 4.20 (a) y (b) se muestran los símbolos de los buffers no inversor e inversor respectivamente y como puede verse, es similar al símbolo de una compuerta inversora. Estos buffers son utilizados a modo de amplificadores de corriente. Cuando la salida de un circuito lógico no es capaz de manejar un determinado número de entradas, entonces se coloca, a modo de una interfaz, un buffer entre la salida del circuito y las entradas a ser excitadas. El buffer consume poca corriente de la salida del circuito lógico y a su vez es capaz de suministrar o drenar, según sea el caso, una corriente mayor a su salida para poder manejar todas las entradas que se le conecten. Buffer de tres estados Este es el circuito lógico con salida de tres estados más sencillo. Tal como se ilustra en el diagrama en bloques de la Figura 4.21, se agrega una entrada de habilitación a la lógica de control de un buffer común para conseguir así un buffer de tres estados. Las señales de habilitación de los circuitos lógicos de tres estados, al igual que cualquier otra señal de control, pueden ser activas en nivel ALTO o bien activas en nivel BAJO, es decir que habilitan la salida del circuito cuando adquieren un valor lógico ALTO o BAJO respectivamente. Figura 4.21 Diagrama en bloques de un búfer no inversor de tres estados En las Figura 4.22 (a) y (b) se muestran los símbolos y las tablas de verdad de un buffer no inversor triestado con una entrada de habilitación EN activa en ALTO y una entrada de habilitación activa en BAJO, respectivamente. 110 Figura 4.22 Símbolos y tablas de verdad de buffers no inversores triestado. a) Buffer no inversor de tres estados con entrada de habilitación activa en ALTO. b) Buffer no inversor de tres estados con entrada de habilitación activa en BAJO. En la Figura 4.23 (a) y (b) se muestran los símbolos y las tablas de verdad de un buffer inversor triestado con una entrada de habilitación EN activa en ALTO y una entrada de habilitación activa en BAJO, respectivamente. Advierta que el símbolo X en las columnas de entrada de las tablas mostradas en la Figura 4.22, no representan inespecificaciones, sino que sirven para representar la tabla de verdad en forma condensada. En lugar de presentar todas las combinaciones, el símbolo X se usa para representar tanto 1 como 0, y por ende, en la tabla de la Figura 4.22a la entrada mostrada como 0X representa las combinaciones de entrada 00 y 01. Figura 4.23 Símbolos y tablas de verdad de buffers inversores triestado. a) Buffer inversor de tres estados con entrada de habilitación activa en ALTO. b) Buffer inversor de tres estados con entrada de habilitación activa en BAJO. Aplicaciones Los buffers triestado tienen muchas aplicaciones en circuitos en los que varias señales se conectan a líneas comunes (buses), ya que manejando su entrada de habilitación, un buffer puede hacerse funcionar en estado de baja impedancia (Low Z) o de alta impedancia (Hi-Z). Así, es posible permitir o no el paso de una señal lógica a través del buffer mediante la conexión o desconexión eléctrica de su salida respecto de la o las entradas de otros dispositivos. A partir de lo ilustrado en la Figura 4.24a podemos obtener la idea básica de la utilidad de los buffers triestado. En este caso tenemos tres señales lógicas A, B y C conectadas a una línea de bus común mediante buffers triestado no inversores con señal de habilitación activa en ALTO. Esta configuración permite transmitir a través del bus cualquiera de las señales A, B y C hacia otros circuitos, mediante la habilitación del buffer apropiado. Las señales de habilitación de los buffers son generadas por sendos circuitos compuestos por un interruptor en serie con una resistencia en configuración de pull down. 111 Por ejemplo, considere la situación que se muestra en la Figura 4.24b donde las posiciones de los interruptores generan EB = 1 y EA = EC = 0. Esto deshabilita los buffers superior e inferior, de modo que sus salidas están en estado de alta impedancia y esencialmente están desconectadas del bus. El buffer ubicado al medio está habilitado, de manera que la señal lógica B aplicada en su entrada, es aplicada también sobre el bus, desde donde es transmitida a otros dispositivos conectados al bus. Figura 4.24 a) Buffers triestado usados para conectar varias señales a un bus común. b) Condiciones para la transmisión de la señal lógica B al bus. Cuando las salidas triestado se conectan juntas, como en la Figura 4.24, es importante recordar que no se debe habilitar más de una salida a la vez. De otro modo, dos o más salidas activas estarían interconectadas, lo que produciría corrientes dañinas. Incluso si no ocurriera daño sobre las salidas, el voltaje resultante sobre el bus correspondería a un estado lógico inválido. Buffer bidireccional Figura 4.25 Búfer bidireccional de una línea implementado con dos búferes triestados. El buffer bidireccional (a veces llamado transceptor bidireccional) permite transmitir señales lógicas en ambas direcciones. Esto permite la interconexión de dispositivos que pueden enviar o recibir información a través de líneas de datos que en un momento actúan como entradas y en otros como salidas (como por ejemplo memorias, puertas de entrada / salida, etc.) Se puede construir un buffer bidireccional usando dos buffers triestados dispuestos en oposición, tal como se muestra en la Figura 4.25. De esta manera, sólo uno de los buffers estará habilitado para la transferencia de datos de acuerdo al valor de la señal de habilitación DIR. Si DIR = 1, el buffer superior queda habilitado y el inferior queda en estado de alta impedancia (Hi-Z) gracias al inversor, con lo que se transfieren datos de A hacia B; caso contrario, con DIR = 0, la transferencia se realiza de B hacia A (el buffer superior queda en Hi-Z y el inferior habilitado). 112 El buffer bidireccional mostrado en la Figura 4.25 implementa la transferencia de datos con una sola línea. La Figura 4.26 muestra un buffer bidireccional de dos líneas. Observe que la lógica para controlar la habilitación de los buffers es común a las dos líneas y puede extenderse para implementar una interfaz de n líneas. La Figura 4.26 muestra también un símbolo propuesto para la interfaz y la tabla de verdad que describe su funcionamiento. Figura 4.26 Buffer bidireccional de dos líneas, símbolo y tabla de verdad. Buffer bidireccional triestado Figura 4.27 Buffer bidireccional triestado. EN DIR 0 1 1 X 0 1 Transferencia de datos Ninguna A -> B B -> A En un buffer bidireccional no se tiene la posibilidad de interrumpir la transferencia de datos. Observe que los buffers colocados en oposición son habilitados por el inversor en forma complementaria, de manera que siempre se encontrará habilitada la transferencia de datos en alguna de las dos direcciones. Al analizar el buffer bidireccional de la Figura 4.25 puede observarse que para poder deshabilitar la transferencia de datos en ambos sentidos se debería tener la posibilidad de poner en estado de alta impedancia ambos buffers. En la Figura 4.27 se muestra cómo se puede obtener esta posibilidad mediante el agregado de una lógica de control muy sencilla. El funcionamiento del circuito es el siguiente: Cuando la señal de habilitación EN = 0, las salidas de ambas compuertas AND se hacen 0 y la señal de habilitación de ambos búferes permanecen inactivas, con lo que ambos quedan en Hi-Z y se interrumpe la transferencia de datos en ambas direcciones. Si la señal de habilitación toma el valor EN = 1, entonces sólo una de las salidas de las compuertas AND se colocará en 1, en función del valor de la señal DIR. Cuando DIR = 1, la salida de la compuerta inferior se coloca en 1 y habilita la transferencia de datos desde A hacia B. Si DIR = 0, la salida de la compuerta superior se coloca en 1 debido al inversor, habilitando la transferencia de datos desde B hacia A. La Figura 4.27 muestra un buffer bidireccional triestado de una sola línea, pero puede utilizarse la lógica de control para gobernar las señales de habilitación de n líneas. El uso de estos buffers permite que varios dispositivos que posean líneas de datos bidireccionales puedan ser conectados a un bus común y que cuando se habilite uno de estos dispositivos, éste pueda enviar o recibir información a través del bus. Tanto las salidas del bus de datos de un microprocesador (µP) como las líneas de datos de una memoria RAM, poseen buffers bidireccionales triestados que les permiten realizar la transferencia de datos en ambas direcciones (lectura y escritura). 113 Circuitos combinacionales Los sistemas lógicos se pueden clasificar en dos clases: circuitos combinacionales y circuitos secuenciales. Un circuito combinacional es un sistema lógico cuya salida depende en todo momento de los valores que adopten las variables de entrada. Es decir, en cada instante de tiempo, el estado de la salida depende únicamente del estado de sus entradas y no influyen los valores de las entradas de instantes anteriores. En cambio, un circuito secuencial es un sistema lógico cuyas salidas dependen de los valores presente en sus entradas y de los valores de dichas entradas en instantes anteriores. Este tipo de circuitos se tratará más adelante. En el diseño de un circuito combinacional, cada salida queda especificada por una función lógica, de acuerdo a la lógica que se debe lograr. Cada función es representable en una tabla de verdad y simplificable por métodos como el de Karnaugh. La implementación de la función minimizada puede realizarse en forma directa en base a compuertas lógicas (compuertas básicas, compuertas NAND, compuertas NOR, etc.) disponibles en CI de escala SSI. En relación con su funcionalidad, se pueden agrupar los circuitos lógicos combinacionales en algunos tipos fundamentales debido a que implementan funciones de base comúnmente requeridas en el diseño de sistemas lógicos. Entre los de mayor aplicación figuran los codificadores, decodificadores, conversores de código, multiplexores, demultiplexores, comparadores de magnitud y sumadores. Aunque estos circuitos combinacionales pueden ser implementados en base a compuertas lógicas, se trata de bloques funcionales completos. Por esta razón, los fabricantes ofrecen una serie de CI que sintetizan estos circuitos lógicos. Por su complejidad, estos CI pertenecen a la escala de integración MSI y en comparación a la implementación basada en compuertas, su uso representa ventajas tales como son la disminución de los CI necesarios, menor tiempo de diseño, menor número de conexiones externas y simplificación del mantenimiento. En los próximos apartados se presentan de forma simplificada los circuitos combinacionales que ofrecen las funcionalidades típicas, pero se debe tener en cuenta que los fabricantes de CI suelen definir diseños con entradas y salidas adicionales para agregar otras características a la funcionalidad básica. En tal caso, estas características se encontrarán completamente detalladas en la hoja de datos respectiva del CI. Codificadores Una funcionalidad básica en el diseño de sistemas digitales consiste en asignar a una señal de entrada un código binario que permita su posterior tratamiento. Esta funcionalidad se implementa mediante bloques combinacionales denominados codificadores. Un codificador cumple esta función para un conjunto de entradas, de las cuales se supone que solamente una de ellas puede encontrarse activa a la vez. Las salidas del codificador formarán una combinación binaria representativa de la entrada activa. En otras palabras, las salidas del codificador forman el código binario correspondiente a la entrada activa. De la funcionalidad descripta se deduce que si el codificador tiene n entradas y m salidas, se debe cumplir que . La Figura 4.28 muestra el símbolo lógico y la tabla de verdad de un codificador de cuatro entradas. Observe que en la figura se muestra una tabla de 114 verdad educida, ya que no muestra todas las combinaciones de entrada posibles, sino sólo aquellas que comprenden una sola entrada activa a la vez. E0 1 0 0 0 E1 0 1 0 0 E2 0 0 1 0 E3 0 0 0 1 S1 0 0 1 1 S0 0 1 0 1 Figura 4.28 Símbolo lógico y tabla de verdad de un codificador de 4 a 2 líneas. En la Figura 4.29 se muestran las salidas de un codificador de 4 a 2 líneas para los distintos casos de entrada activa. Nótese que se ejemplifica para un codificador con entradas activas en ALTO y salidas activas en ALTO. Figura 4.29 Salidas de un codificador de 4 a 2 líneas según la entrada activa. Considere, por ejemplo, un sistema digital que recibe como entradas las señales provenientes de un teclado numérico. Cada tecla tiene asociada una señal que presentará un estado activo cuando la tecla sea pulsada. Estas señales se conectan como entradas del codificador. Cuando se presiona una tecla, se activa la señal respectiva y el codificador presenta en sus salidas el código binario correspondiente a la entrada activada y por ende, a la tecla pulsada. Codificadores con prioridad Una limitación del tipo de codificador mostrado en la Figura 4.28 es que solamente una entrada puede estar activa en un momento dado, pero no siempre es posible impedir que se active más de una entrada en forma simultánea. Para resolver esta limitación los codificadores establecen una prioridad para cada entrada, garantizando que en caso que se presenten varias entradas activas en forma simultánea, solamente se codificará una entrada. En caso que haya más de una entrada activa a la vez, sólo se generará el código de salida correspondiente a la entrada de mayor prioridad. 115 E0 1 X X X X X X X E1 0 1 X X X X X X E2 0 0 1 X X X X X E3 0 0 0 1 X X X X E4 0 0 0 0 1 X X X E5 0 0 0 0 0 1 X X E6 0 0 0 0 0 0 1 X E7 0 0 0 0 0 0 0 1 S2 0 0 0 0 1 1 1 1 S1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 Figura 4.30 a) Tabla de verdad de un codificador de 8 a 3 líneas con prioridad. b) Estado de las salidas cuando se encuentran activas las entradas E1 y E6. En la Figura 4.30 se muestra la tabla de verdad de un codificador de 8 a 3 líneas, con prioridad y con entradas y salidas activas en nivel ALTO. Al presentarse más de una entrada activa, el codificador genera la salida correspondiente a la entrada activa de mayor prioridad, ignorando el estado de las entradas de menor prioridad. Observe que la tabla de verdad refleja estas condiciones con el símbolo X en las columnas de entrada. Decodificadores La funcionalidad inversa a la de un codificador consiste en identificar un código binario de n bits de entrada mediante la activación de una salida entre m posibles. Esta tarea es la que realizan los circuitos decodificadores. Es decir que el funcionamiento del decodificador consiste en activar la salida correspondiente al código binario que forman los valores de entrada. De acuerdo a esta funcionalidad, si el decodificador posee n entradas y m salidas, se cumple que , En la Figura 4.31 se muestra un decodificador de 2 a 4 líneas con entradas y salidas activas en ALTO. E1 0 0 1 1 E0 0 1 0 1 S0 1 0 0 0 S1 0 1 0 0 S2 0 0 1 0 S3 0 0 0 1 Figura 4.31 Símbolo lógico y tabla de verdad de un decodificador de 2 a 4 líneas. El decodificador presenta sólo una salida en nivel activo. La salida que se activa es la que corresponde al código binario de entrada, como se muestra a continuación: 116 Figura 4.32 Salida activa de un decodificador de 2 a 4 líneas según el código binario presente en las entradas. Entradas de habilitación Además de las n líneas de entrada descriptas, los decodificadores se diseñan con una o más entradas de habilitación que sirven para controlar su funcionamiento. La Figura 4.33 muestra como ejemplo el símbolo lógico y la tabla de verdad de un decodificador de 2 a 4 líneas con una entrada de habilitación. ENABLE 0 1 1 1 1 Figura 4.33 Símbolo lógico y tabla de verdad de un decodificador de 2 a 4 líneas con entrada de habilitación. E1 X 0 0 1 1 E0 X 0 1 0 1 S3 0 0 0 0 1 S2 0 0 0 1 0 S1 0 0 1 0 0 S0 0 1 0 0 0 El decodificador de la Figura 4.33 tiene una entrada de habilitación ENABLE activa en ALTO. Cuando la entrada ENABLE se encuentra en nivel activo, el decodificador funciona normalmente, de manera que ante el código binario formado por las entradas el decodificador pone en nivel activo la salida correspondiente. En caso que la entrada de habilitación ENABLE se encuentre inactiva, todas las salidas se forzarán a nivel inactivo, sin importar el valor de las entradas, tal como indican los símbolos X en las columnas de entrada de la tabla de verdad. Decodificadores especiales Algunos decodificadores especiales, diseñados para una funcionalidad particular, se apartan de la definición en cuanto a la relación entre la cantidad de entradas y salidas, Tienen n líneas de entrada pero no presentan salidas. Veremos a continuación dos de los decodificadores especiales más utilizados. Decodificador BCD a decimal Este decodificador recibe como entradas los bits de un número codificado en BCD natural y activa una de sus salidas en forma correspondiente. Dado que las entradas forman un número codificado en BCD, este decodificador posee cuatro líneas de entrada ( ), pero sólo tiene 10 líneas de salida ( ). Cuando en las entradas se presenta una combinación BCD válida, se activa la salida correspondiente. Cuando en las entradas se presenta una combinación no válida, no se activa ninguna de las salidas. En la 117 Figura 4.34 se muestra el símbolo lógico y la tabla de verdad del decodificador BCD a decimal. Figura 4.34 Símbolo lógico y tabla de verdad de un decodificador BCD a decimal. D C B A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Salida activa O0 O1 O2 O3 O4 O5 O6 O7 O8 O9 Ninguna Ninguna Ninguna Ninguna Ninguna Ninguna Decodificador BCD a siete segmentos Este decodificador recibe como entrada un número codificado en BCD natural y proporciona las salidas necesarias para mostrar en un visualizador led de siete segmentos el dígito decimal correspondiente. Dado que el código de entrada se debe expresar en BCD, el decodificador presenta cuatro líneas de entrada ( ), pero sólo requiere 7 líneas de salida ( ). Observe que cuando en las entradas se presenta una combinación BCD válida, no se activa una sola salida, sino el patrón de salidas correspondiente al dígito decimal representado. En la Figura 4.35 se muestra un esquema de conexión de este decodificador y los patrones de encendido del visualizador led de siete segmentos para cada dígito decimal. Nótese que el nivel activo de las salidas debe ser compatible con el tipo de visualizador. En este ejemplo, el decodificador posee salidas activas en BAJO, por lo que las líneas de salida deben conectarse a los cátodos de un visualizador led con ánodo común. Otro aspecto a tener en cuenta es la asociación de resistencias con cada led para limitar la circulación de corriente a valores nominales. 118 Figura 4.35 Esquema de conexión de un decodificador BCD a siete segmentos. Multiplexer Un multiplexer es un circuito combinacional que actúa como seleccionador de una de sus entradas, presentando en su salida el valor de la entrada seleccionada. Por esta razón este circuito combinacional también se conoce como selector digital. El multiplexer posee una sola línea de salida y dos grupos de entradas: n entradas de datos y p entradas de selección (p = log2n). La salida presenta el valor de la entrada de datos seleccionada por la combinación presente en las entradas de selección. En la Figura 4.36 se muestra el símbolo lógico y tabla de verdad de un multiplexer de ocho entradas. S2 0 0 0 0 1 1 1 1 Figura 4.36 Símbolo lógico y tabla de verdad de un multiplexer de 8 entradas. 119 S1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 Z I0 I1 I2 I3 I4 I5 I6 I7 Además de las entradas descriptas, los circuitos multiplexer normalmente incluyen una entrada de habilitación. Otra característica común en estos módulos es que disponen de una segunda salida, que presenta el valor negado de la entrada seleccionada. En la Figura 4.37 se muestra un multiplexer con entrada de habilitación activa en ALTO y salidas en forma directa y complementada. EN 0 1 1 1 1 Figura 4.37 Símbolo lógico y tabla de verdad de un multiplexer de 4 entradas con entrada de habilitación. S1 X 0 0 1 1 S0 X 0 1 0 1 Z 0 I0 I1 I2 I3 En la Figura 4.38 se muestra el funcionamiento de un multiplexer de 4 entradas con entrada de habilitación activa en ALTO. Observe que en ambos casos del ejemplo, la entrada de habilitación se encuentra activa (EN = 1) y por ende, la salida presenta el valor lógico de la entrada seleccionada. En caso que la entrada de habilitación se encuentre en nivel inactivo (EN = 0), la salida del multiplexer valdrá 0, sin importar los valores de las demás entradas. Figura 4.38 Ejemplos del funcionamiento de un multiplexer de 4 entradas. Demultiplexer Un demultiplexer es un circuito combinacional cuya función consiste en transferir a una de sus m líneas de salida el valor lógico presente en su única entrada de datos. La línea de salida a la cual se transfiere el valor lógico de la entrada de datos, se selecciona mediante la combinación de p entradas de selección (p = log2m). Como surge de esta descripción, el demultiplexer cumple la funcionalidad inversa a la de un multiplexer. En la Figura 4.39 se muestra el símbolo lógico y tabla de verdad de un demultiplexer de ocho salidas. 120 S2 0 0 0 0 1 1 1 1 S1 0 0 1 1 0 0 1 1 S0 0 1 0 1 0 1 0 1 O0 I 0 0 0 0 0 0 0 O1 0 I 0 0 0 0 0 0 O2 0 0 I 0 0 0 0 0 O3 0 0 0 I 0 0 0 0 O4 0 0 0 0 I 0 0 0 O5 0 0 0 0 0 I 0 0 O6 0 0 0 0 0 0 I 0 O7 0 0 0 0 0 0 0 I Figura 4.39 Símbolo lógico y tabla de verdad de un demultiplexer de 8 salidas. En la Figura 4.40 se muestra el funcionamiento de un demultiplexer de 4 salidas. En el ejemplo, se mantiene constante el valor de las entradas de selección para resaltar que el valor lógico de la línea de entrada se transfiere a la salida seleccionada. Figura 4.40 Ejemplos del funcionamiento de un demultiplexer de 4 salidas. Sumadores Existen múltiples sistemas digitales que deben realizar operaciones aritméticas. Los circuitos combinacionales aritméticos para operaciones de suma y resta se implementan en base a bloques sumadores. Desde luego, estas operaciones se llevarán a cabo en forma binaria, adecuándose a las especificaciones particulares, tales como la longitud de palabra y el sistema de representación. Semisumador El semisumador es un circuito combinacional que realiza la suma de dos bits de entrada, produciendo como salidas un bit de resultado y un bit de acarreo. La Figura 4.41 muestra la tabla de verdad de la suma binaria de dos números de un bit y la formación del resultado para todos los casos posibles, incluyendo el acarreo. Puede observarse que tratándose de números de un bit, el 121 caso 1 + 1 = 102, genera un resultado que excede la capacidad de representación de un bit. A0 0 0 1 1 B0 0 1 0 1 S0 0 1 1 0 C0 0 0 0 1 Figura 4.41 Símbolo lógico, resultados posibles y tabla de verdad de un semisumador. Sumador completo La suma binaria de números de n bits debe tener en cuenta que cuando se suman los bits de peso i, puede producirse un acarreo hacia los bits de peso i+1. La Figura 4.42 muestra el procedimiento para dos números de cuatro bits, que puede generalizarse fácilmente a números de n bits. Obsérvese que si la longitud de la representación es n, el último bit de acarreo no podrá incluirse en la representación del resultado. Independientemente de esta limitación, el circuito sumador debe generar la salida correspondiente a este último bit de acarreo. Donde: Ai Bi Ci Si : : : : bit i del bit i del acarreo bit i del número A número B de la suma individual Ai-1 + Bi-1 + Ci-1 resultado S. Si = Ci + Ai + Bi (0 < i ≤ n) Figura 4.42 Procedimiento de la suma binaria de números de cuatro bits. El sumador completo es un circuito combinacional que presenta tres líneas de entrada, por medio de las cuales recibe dos dígitos binarios A y B y un bit de acarreo de entrada, Ci (Carrier in). Las salidas presentan el bit resultado de la suma S y el bit de acarreo de salida Co (Carrier out). La Figura 4.43 muestra el símbolo lógico y la tabla de verdad del sumador completo. Ci 0 0 0 0 1 1 1 1 Figura 4.43 Símbolo lógico y tabla de verdad del sumador completo. 122 A 0 0 1 1 0 0 1 1 B 0 1 0 1 0 1 0 1 Co 0 0 0 1 0 1 1 1 S 0 1 1 0 1 0 0 1 A partir de esta unidad sumadora básica se puede formar un sumador para números de n bits, conectándolos en cascada, como se muestra en la Figura 4.44. Figura 4.44 Sumador de dos bits implementado con dos sumadores completos básicos conectados en cascada. Restadores Como se mencionó anteriormente, los circuitos restadores se implementan en base a los bloques sumadores. Para ello, se aplica la aritmética de complemento a dos, es decir, para calcular A - B : A B A ( B) . ( B) C 2( B) C1( B) 1 B 1 luego: A B A B 1 De esta forma, se puede implementar el restador de un bit mediante el circuito sumador completo analizado en el apartado anterior. Como se muestra en la Figura 4.45, para obtener el complemento a dos del sustraendo B se debe colocar un inversor a la entrada B y poner el acarreo de entrada siempre a uno. Figura 4.45 Restador de un bit implementado con el sumador básico. En forma análoga al caso del sumador, se puede formar un restador para cualquier número de bits, conectando bloques básicos en cascada. -----------------------------------------------------123