La serie “El computador mágico” está disponible también en forma de libro. |
En los últimos artículos presentamos el transistor y llegamos a modelarlo como un interruptor controlado eléctricamente. En este artículo veremos cómo organizar esos transistores para formar un bloque un poco más complejo: las puertas lógicas.
Luego veremos cada una de estas puertas lógicas, pero para empezar vamos a ver cómo construimos alguna.
Bueno, mejor aun, primero una salvedad: vamos a empezar con un circuito que no se utiliza. Vamos a empezar utilizando los transistores BJT que hemos visto en capítulos anteriores, pero los vamos a poner en una configuración complementaria que no se usa en la realidad. Vamos a ir haciéndolo así para continuar con los transistores que hemos visto. Al final del artículo veremos cómo es la forma real de hacerlo, usando transistores MOSFET en configuración CMOS.
Imagina entonces que disponemos los transistores de la siguiente manera:
Voy a resumir primero las cosas que ya hemos explicado y que estamos suponiendo. Después de esto no volveré a escribirlas, podremos suponer que son así a menos que digamos lo contrario.
- El punto gordo de arriba es la tensión de alimentación, lo que antes llamábamos Vcc, y que es de 5V.
- Hemos hecho corresponder el concepto “1 lógico” con 5V y el concepto “0 lógico” con 0V. Así, cuando diga “le metemos un 1 y sale un 0″ lo que hay que entender eléctricamente es “le metemos 5V y salen 0V”.
Veamos entonces qué ocurre cuando metemos un 1 en la Entrada. Como un 1 son 5V, el transistor de arriba está en zona de corte y el transistor de abajo está en zona de saturación. Dijimos que un transistor en zona de corte se puede simplemente eliminar y que un transistor en zona de saturación se puede cambiar por un cable que conecte Emisor y Colector, así que esa situación podemos resumirla de la siguiente forma:
Es decir, cuando metemos un 1 en la Entrada, la Salida está conectada directamente a tierra. Es decir, 0V. Es decir, un 0 lógico.
¿Qué ocurre, en cambio, cuando lo que metemos en la entrada es un 0? El transistor de arriba está en saturación y el de abajo en corte, por lo que podríamos reprensentarlo así:
Es decir, cuando metemos un 0 en la Entrada, la Salida es un 1.
Fácil, ¿verdad? Vamos a resumirlo en una tabla:[1]
Entrada |
Salida |
0 |
1 |
1 |
0 |
Esto que hemos hecho es, definitivamente, una puerta NOT. Lo que hace es invertir la Entrada. Si la Entrada es 1, devuelve un 0, y viceversa. Su símbolo electrónico es el siguiente:
Vamos a construir ahora una un poco más compleja. Vamos a suponer ahora que pusiéramos los transistores de esta otra manera:
Fíjate en que ahora tenemos dos entradas, A y B, y una sola salida, S. Fíjate en que cada una de las entradas, además, va a dos transistores distintos. Es decir, que la A aparece dos veces, y lo mismo la B. Obviamente, no aparece ahí mágicamente, sino que tenemos un único terminal de entrada A y dos cables que conectan en paralelo ese terminal tanto con un transistor como con el otro. Simplemente, para no convertir el dibujo en una madeja de líneas, escribimos la letra en lugar de dibujar la línea; pero que eso no te confunda.
Tenemos, entonces, 4 posibles estados: los dos posibles valores de A combinados con los dos posibles estados de B. Resumámoslo en una nueva tabla:
A |
B |
¿Salida? |
0 |
0 |
? |
0 |
1 |
? |
1 |
0 |
? |
1 |
1 |
? |
Vamos a rellenar la tabla como sabemos: poniendo interruptores abiertos o cerrados en función de si la entrada es un 1 o un 0, según los transistores correspondientes estén en zona de saturación o de corte, respectivamente:
Así que ya podemos rellenar la tabla con los valores que hemos encontrado:
A |
B |
Salida |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
Esto es lo que se llama una puerta NAND. Su explicación la veremos luego, cuando veamos todas las puertas lógicas. Pero te sirve para ver que podemos usar esos “transistores-conmutadores” para construir bloques complejos que llamamos puertas lógicas. No vamos a ver cómo se construyen todas y cada una de las puertas, pero sí que debemos resumir todas las posibles puertas lógicas que hay, porque nos serán importantes para más adelante.
Existen 3 puertas lógicas básicas: AND, OR y NOT. Si sabes un poco de inglés puedes intuir qué es lo que significa cada una.
Una puerta AND se representa por el siguiente símbolo gráfico y define su comportamiento según la siguiente tabla:
Sabiendo inglés no es difícil darse cuenta de que la puerta AND entrega un 1 en la salida si una entrada es un 1 y la otra entrada también es un 1. Cuando estamos escribiéndola en texto, en lugar de en gráfico, se suele representar con el símbolo de multiplicación “·”, aunque en la práctica simplemente se omite. Así si decimos “AB”, estamos diciendo A AND B.
Una puerta OR se representa por el siguiente símbolo gráfico y define su comportamiento según la siguiente tabla:
Lo mismo: OR significa O en inglés, de modo que la salida es un 1 si una entrada o la otra (o ambas) es un 1 . En modo textual se usa el símbolo + para representarlo. Así, si decimos A+B, estamos diciendo A OR B.
Finalmente, una puerta NOT como la que hemos visto al principio se representa por el siguiente símbolo gráfico y define su comportamiento según la siguiente tabla:
Finalmente, NOT significa NO en inglés, por lo que es fácil adivinar que la puerta NOT invierte la entrada. En modo textual se puede representar de varias formas. Por ejemplo, si queremos decir NOT A, a menudo ponemos A’, /A, !A o o alguna cosa así. Nosotros trataremos de usar A’, que es muy cómodo de escribir.
Si sabes algo de álgebra booleana, sabrás que esas tres puertas son un conjunto completo, porque cualquier tabla que queramos hacer se puede conseguir a base de combinar adecuadamente estas puertas. Si no sabes de qué hablo y quieres profundizar más, a lo mejor quieres revisar la serie de Macluskey sobre Lógica. No obstante, por comodidad (o por conveniencia… ya lo veremos en el siguiente capítulo), se definen algunas puertas lógicas más.
XOR es el OR eXclusivo y se suele representar con un + rodeado en círculo: . Se puede entender como algo parecido a la puerta OR, pero en la que exclusivamente puede ocurrir que A sea 1 o que lo sea B. Algo así como “o A o B, pero no ambas a la vez”. Exclusivo. Su tabla y su símbolo son los siguientes.
NOR es simplemente la combinación de NOT y OR: . Fácil, lo contrario de OR. Si te fijas en el símbolo verás que es el mismo que el OR, pero con un círculo detrás que sirva de mnemotécnico.
XNOR es nada más que la combinación de NOT y XOR y se suele representar con un punto en un círculo: . También fácil: lo contrario de XOR. Se suele decir que esta es la puerta de la equivalencia, porque si os fijáis en la tabla veréis que comprueba si A y B son iguales.
Finalmente, la puerta NAND es la combinación de NOT y AND: . Otra vez el símbolo de AND con el círculo para representar el NOT.
Existen también puertas que tienen más de dos entradas, pero su funcionamiento, una vez entendidas estas, es muy sencillo:
- AND de varias entradas: la salida es un 1 si todas las entradas son un 1. La NAND es simplemente al revés.
- OR de varias entradas: la salida es un 1 si alguna de las entradas es un 1. La NOR es simplemente al revés.
- XOR de varias entradas: la salida es un 1 si el número de 1s en la entrada es impar. La XNOR es simplemente al revés.
No vamos a ver cómo se construyen todas las puertas lógicas usando transistores, pero supongo que habiendo visto cómo hemos hecho la puerta NAND, se te ocurre que las demás también pueden construirse, ¿verdad? Algunas son un poco más complicadas, como por ejemplo la puerta AND, que paradójicamente se suele construir como NAND + NOT (eso es porque la puerta NAND es muy sencilla), pero vaya, te llevas la idea de que todas esas puertas se pueden construir con transistores.
Solo nos queda ver cómo se hace esto en realidad, porque hemos dicho que no se usan transistores BJT, sino transistores MOSFET en contraposición (lo que se conoce como CMOS, Complementary MOS, MOS complementario).[2] El esquema de una puerta NAND con tecnología CMOS es el siguiente:
Los símbolos raros que ves, que son parecidos a los transistores que veíamos antes pero en cuadrado, son transistores MOSFET (acrónimo de Metal-Oxide-Semiconductor Field Effect Transistor, transistor de efecto de campo metal-óxido-semiconductor), con canal de tipo N y de tipo P (se suelen abreviar como NMOS y PMOS). NMOS es el de abajo y PMOS el de arriba. Existen distintos símbolos para estos transistores, pero los más sencillos de entender son estos:
Las ecuaciones que describen su funcionamiento son distintas de las de los transistores bipolares (BJT), pero el comportamiento cualitativo es similar (especialmente cuando, como aquí, los usamos como conmutadores). Los tres terminales se llaman Drenaje/Drenador, Fuente/Surtidor y Puerta (del inglés Drain, Source y Gate; de ahí las iniciales que ponemos en el dibujo), equivalentes respectivamente al Colector, Emisor y Base que veíamos en el transistor BJT. Para el transistor NMOS:
- Si la tensión entre Puerta y Fuente es grande, es casi como un cortocircuito entre Drenaje y Fuente.
- Si la tensión entre Puerta y Fuente es pequeña, es casi como un circuito abierto entre Drenaje y Fuente.
- Entre medias, la corriente que entra por el Drenaje es proporcional a la tensión entre Puerta y Fuente.
Es decir, prácticamente igual que en el BJT.
La tecnología que utiliza dos transistores en contraposición para hacer puerta lógicas se llama CMOS (por Complementary MOS, MOS complementario) y aunque los transistores NMOS y PMOS eran inicialmente más complicados de fabricar, la industria tiene muy trillado el procedimiento, de modo que actualmente es más fácil hacer puertas digitales con circuitos CMOS que con transistores BJT.
Continuando, las puertas lógicas, además, pueden combinarse, por ejemplo del siguiente modo:
En el próximo artículo veremos cómo hacerlo, pero entre medias publicaremos un “apéndice avanzado” en el que contaremos cómo es la física que subyace al semiconductor y por qué el diodo, el transistor bipolar y el transistor MOSFET se comportan así.
- Una Tabla de Verdad. [↩]
- Ojo, sí se pueden usar transistores BJT para hacer puertas lógicas, pero no con el esquema que hemos enseñado; y además está bastante obsoleto salvo para algunas aplicaciones concretas. [↩]
The Computador mágico VI – Puertas lógicas by , unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 2.5 Spain License.
{ 3 } Comentarios
Tengo una duda con el diagrama con los BJT que forman la NAND, y por extensión a cualquier diagrama con transistores vaya =)
¿Qué papel tienen los dos transistores en la parte inferior del dibujo? Es decir, sin los dos de abajo, simplemente con que, o bien A, o bien B sean cero, la corriente transcurre desde Vcc a la salida, y si tanto A como B son 1, entre Vcc y S no hay conexión, por lo que no transcurre corriente que es lo que queremos. ¿Están para evitar algún problema? ¿Enviar a toma de tierra algo?
Desde fuera entiendo perfectamente el funcionamiento de una puerta lógica, internamente es donde se me escapan los detalles.
Saludos willhelm,
salvo error mio el asunto está en que no detectamos intensidades sino voltajes, no hace falta que circule ninguna corriente sino que la salida esté a un voltaje concreto.
de esta forma si lo conectamos a vcc está a 5v (y presumiblemente circulará alguna corriente, pero esto es lo de menos), si lo conectamos a tierra está a 0v (y presumiblemente no circulará corriente ninguna).
Volviendo sobre el último caso, si eliminamos el camino que lleva la conexión a tierra entonces no estamos aportando ningún voltaje sino dejando la salida al aire, una salida al aire puede tener cualquier voltaje, posiblemente delimitado por lo que haya en el circuito de detrás.
Aunque sea por cuestiones de segundo o tercer orden de repente lo que sea que esté más allá de la puerta que debería de estar recibiendo un dato de entrada está aportando el ese dato al voltaje de la línea que está al aire… Cuando vaya a “leer” el dato, leerá cualquier cosa.
A la pregunta que alguien se hará al respecto de “¿y por que leemos voltajes en lugar de corrientes?” creo que es debido a que es más fácil tener voltajes “altos” y corrientes “cercanas a cero” que voltajes “cercanos a cero” y corrientes “bajas”.
Como debes de cumplir una de las dos condiciones para tener consumos de energía cercanos a cero, es mejor leer voltajes sin corriente que corrientes sin voltajes.
Que me corrijan si me equivoco!
Willhelm,
es porque no sabes lo que habrá detrás fundamentalmente, pero no solo.
Por tu comentario supongo que algo sabes de electrónica (quizás más que yo, incluso), así que voy a usar algunos términos “avanzados”.
Piensa que tienes que poner algo en lugar de los transistores de abajo. Si no pones nada, los transistores de arriba no se polarizan. No puedes simplemente “no poner nada”, dejarlo en abierto.
Así que lo habitual es una resistencia. Pero, ¿qué resistencia? Si pones una de valor grande, cuando el transistor de arriba está en abierto, la impedancia de salida es precisamente la resistencia que has puesto. Así que es una impedancia de salida grande… y eso es malo, como sabrás. En algunos casos puede ser un problema.
Pero si pones una resistencia pequeña (en cuyo caso se soluciona el problema de la impedancia de salida), cuando el transistor de arriba está en saturación (es casi un cortocircuito), la corriente que circula desde Vcc hasta tierra es muy alta. El circuito consume mucho inútilmente e incluso puede llegar a quemarse si la pones muy pequeña. Además, aunque el transistor en saturación ideal es un cortocircuito, solo es una aproximación. Podría ocurrir que en realidad su resistencia fuera mayor que la resistencia que pongas.
En cambio, el transistor de abajo es casi como “una resistencia variable”, dependiendo de si le metes un 1 o un 0: obtienes el mejor de los comportamientos en cada caso.
No obstante eso de poner una resistencia sí se hace; o al menos se hacía… no sé si seguirá habiendo situaciones en que siga usándose. Cuando se estudia más formalmente, a eso se le llama atenuador, y se introducen los c0nceptos de 0-débil y 1-débil.
Escribe un comentario