


















































Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Introducció als Computadors, Profesor: , Carrera: Enginyeria Informàtica, Universidad: UPC
Tipo: Apuntes
1 / 58
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!



















































Circuitos lógicos combinacionales 1
Juan J. Navarro Toni Juan
Primera versión: 07-2007; versión actual: 09-
En este capítulo estudiamos lo que consideramos imprescindible sobre circuitos combinacionales para entender el diseño del computador que vamos a crear paso a paso en este curso.
Como introducción al tema, en la sección 3.1 definimos qué es un circuito combinacional y formulamos un modelo para facilitar su estudio. Aquí aparecen los conceptos de variable lógica, función lógica y tabla de verdad. También presentamos las puertas lógicas Not, And y Or, que son los circuitos combinacionales más simples con los que vamos a construir el computador y, finalmente, damos las reglas de interconexión de dispositivos combinacionales para que el resultado sea un circuito combinacional válido. En la sección 3.2 obtenemos la especificación funcional de circuitos combinacionales formados por puertas lógicas (análisis) y en la sección 3.3 tratamos el problema inverso, dada una especificación funcional deseada obtenemos el esquema del circuito que la implementa (síntesis). En la 3.4 completamos el modelo de circuito combinacional, haciéndolo más realista: consideramos el tiempo de propagación de las señales al atravesar los dispositivos del circuito. Por último, en el Apéndice I definimos el álgebra de Boole, una herramienta matemática que nos puede ayudar en el análisis y sobre todo la síntesis eficiente de circuitos combinacionales (este apéndice no está disponible todavía).
3.1.1 Circuito Lógico Combinacional
Como vimos en el tema 1, un computador es capaz de comunicar, almacenar y procesar información digital. Los circuitos lógicos combinacionales son los circuitos encargados de procesar las señales eléctricas binarias, que son las que codifican la información.
2 Introducción a los Computadores
Definición
El elemento característico de los circuitos combinacionales es que no tienen memoria. Por ejemplo, el circuito interno del dispositivo o bloque f, que se muestra en la figura 3.1, está diseñado de forma que para cualquier instante de tiempo, t 1 , en el que señales de entrada x(t 1 ) e y(t 1 ) valgan respectivamente 5 y 0 voltios, la señal de salida en ese mismo instante, w(t 1 ) valga 5 voltios; y esto es siempre así, independientemente del valor de las entradas en cualquier momento anterior a t 1.
Cronograma Esto se muestra en la figura 3.1, mediante un cronograma : un gráfico que indica el voltaje (eje vertical) que toma la señal de salida a lo largo del tiempo (eje horizontal) como respuesta a variaciones temporales concretas de los valores de las señales de entrada. Este cronograma también nos indica que, para este circuito concreto, cuando las dos entradas valen 0 voltios la salida también vale 0 voltios, lo que ocurre al principio y al final del intervalo de tiempo mostrado. También se ve que cuando las dos señales de entrada tienen 5 voltios la salida es de 0 voltios, sin importar los valores anteriores de las entradas.
Denominamos circuito lógico combinacional (CLC) a un circuito lógico (las señales que entran al circuito y las que salen de él son binarias) en el que el valor de cada una de sus señales de salida en cada momento es función únicamente de lo que valen sus entradas en ese preciso momento (respuesta instantánea -sin retardoa- y sin memoria). Esto es, a cada combinación de valores concretos de las entradas le corresponden siempre unos mismos valores concretos de las salidas, con independencia del instante de tiempo en el que se den estos valores en las entradas y con independencia de los valores que hayan tenido las entradas en momentos anteriores.
a. Como veremos en la sección 3.4, en un circuito combinacional real sí que hay un retardo entre el cambio de una entrada y lo que tarda en reaccionar la salida, o las salidas, a ese cambio. Pero de momento vamos a considerar que el retardo es 0.
Fig. 3.1 Circuito combinacional f con dos entradas (señales x(t) e y(t) ) y una salida ( w(t) ). Cronograma y tabla que define el funcionamiento del circuito.
f
x(t)^ y(t)
w(t)
f
x(t)^ y(t)
w(t)
0v
5v
5v
t
x(t)
t
y(t)
t
w(t)
0v
5v
5v
Respuesta instantánea
Sin memoria
x(t) y(t) w(t) 0v 0v 5v 5v
0v 5v 0v 5v
0v 0v 5v 0v
4 Introducción a los Computadores
Tabla de verdad
La tabla de verdad indica el valor que toma cada variable lógica de salida de un circuito combinacional para cada uno de los posibles valores de las variables de entrada. Una tabla de verdad tiene una columna para cada entrada al circuito (para cada variable lógica de entrada) y una columna para cada salida (para cada variable lógica de salida). La tabla de verdad tiene una primera fila de cabecera, donde se especifica el nombre de las variables de cada columna. Además de la cabecera, tiene una fila para cada una de las posibles combinaciones de valores que pueden tomar las entradas.a
En general, si tenemos un circuito combinacional con n variables de entrada ordenadas de alguna forma, por ejemplo: xn-1, xn-2,…, x 2 , x 1 , x 0 , la tabla de verdad tiene 2n^ filas, que son las posibles combinaciones distintas de n elementos pudiendo tomar cada uno de ellos 2 valores distintos.
Por convenio, las filas de una tabla de verdad se ordenan de arriba abajo, comenzando por la fila 0, como sigue. La fila i es la que corresponde a la combinación de valores de las entradas que representan el valor i , suponiendo que las variables de entrada son los dígitos de un vector de bits que representa el número natural i codificado en binario. Esto es así aunque cada variable de entrada represente algo que nada tenga que ver con el dígito de un número binariob.
a. Por ejemplo, si el circuito tiene solamente 1 entrada, la tabla de verdad tiene 2 filas, una para el valor 0 de la entrada y otra para el 1. Si el circuito tiene dos entradas denominadas, por ejemplo x e y, la tabla de verdad tiene 4 filas: una para la combinación de entradas x=0 e y=0, otra para la combinación x=0 e y=1, otra para x=1 e y=0 y la última para x=1 e y=1. b. Por ejemplo, si tenemos 3 variables de entrada ordenadas como a, b y c, la fila 6 corresponde a los valores de las variables de entrada a=1, b=1 y c=0, ya que el 6 se codifica en binario como
Señales eléctricas binarias x(t), y(t), w(t)
Variables lógicas x, y, w ɛ {0, 1}
w(t) = f (x(t), y(t)) w = f (x, y) función lógica
f
x(t)^ y(t)
w(t)
f
x^ y
w
Fig. 3.2 Modelo lógico de un circuito combinacional: variable lógica, función lógica.
Circuitos lógicos combinacionales 5
La figura 3.3 muestra, a modo de ejemplo, el símbolo de un circuito con 3 entradas (a, b, c) y 2 salidas (w 1 y w 0 ) y su tabla de verdad, que define las funciones lógicas w 1 (a, b, c) y w 0 (a, b, c).
3.1.2 De la descripción funcional a la tabla de verdad
A veces tenemos que resolver un problema mediante un circuito combinacional del que no nos dan su tabla de verdad, sino que nos dan una descripción funcional de su comportamiento. Esta descripción relaciona, de manera más o menos formal, las salidas y las entradas mediante un texto explicativo y/o expresiones algebraicas y/o un fragmento de código en un pseudolenguaje de alto nivel, etc. La descripción puede completarse con figuras aclaratorias. En estos casos primero debemos encontrar la tabla de verdad del circuito a partir de la descripción funcional y después pasamos de la tabla de verdad al esquema lógico del circuito mediante alguna de las técnicas que veremos en la sección 3.3. Veamos dos ejemplos de circuitos combinacionales que hacen cosas muy distintas.
En la figura 3.4 se muestra la caja que representa un circuito combinacional con 3 entradas y 1 salida para controlar el llenado automático de un depósito para el consumo de agua. La entrada x viene de un reloj y vale 1 durante el día y 0 durante la noche. Las entradas y y z vienen de dos sensores colocados dentro del depósito, en la parte superior e inferior respectivamente. Cada señal indica con el valor 1 qué el sensor está cubierto de agua y con 0 que no lo está. La salida del circuito controla una bomba de agua, cuando w vale 1 se bombea agua de un pozo para llenar el depósito y
Para pasar de la descripción funcional de un circuito a su tabla de verdad no hay un método sistemático de hacerlo. Depende de la funcionalidad concreta, de cómo está expresada, etc. Se trata de cambiar la manera de como se representa el funcionamiento del circuito, de un texto más o menos informal, por ejemplo, a una tabla de verdad, que es una representación formal que indica de manera exhaustiva el valor lógico de cada salida para cada uno de los posibles valores de las entradas. Esto lo aprenderemos haciendo ejemplos.
Fig. 3.3 Tabla de verdad de un circuito lógico combinacional, CLC, con 3 entradas y 2 salidas.
a b
w 0
c w 1
b c w 1 0 0 1 1
0 1 0 1
0 0 0 1
w 0 0 1 1 0
a 0 0 0 0 0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 1 1 1
Fila 0
Fila 7
Circuitos lógicos combinacionales 7
Ya solo quedan dos filas por completar, una para el día y otra para la noche. En este caso los sensores nos dicen que hay agua en la parte superior del depósito y que no la hay en la parte inferior. Pero, ¡esta situación es imposible! (a no ser que los sensores se hayan estropeado). En este caso, como en el enunciado no nos dicen nada de qué hacer en situaciones anómalas, consirederamos que es imposible que las entradas (x, y, z) valgan (0, 1, 0) o (1, 1, 0). En estos casos decimos que no importa lo que valga la salida, ya que nunca se daran estas combinaciones de valores de las entradas. Al rellenar la tabla de verdad nosotros pondremos una cruz (x) en las salidas cuyo valor puede ser tanto 0 como 1 (también se suelen usar el guión, -, o la letra d para estas salidas). La tabla final completa se ve en la figura 3.5d, con estas dos filas marcadas. Cuando se implemente el circuito (ver ejemplo 9) se hará de forma que la salida sea 0 cuando la tabla dice que puede ser 0 o 1, porque esto es lo más económico en el tipo de implementación que vemos en la sección 3.3.
Vamos a obtener la tabla de verdad de un dispositivo (bloque combinacional) que más adelante usaremos para formar dispositivos más complejos, llamado multiplexor. Lo denotamos como Mx-2-1 porque tiene dos entradas de datos (x 1 , x 0 ) y una salida, w. Además tiene una entrada de selección s. El símbolo del Mx-2-1 se muestra al margen. La especificación del comportamiento del circuito puede hacerse mediante el siguiente texto. La entrada de selección s indica qué entrada, x 0 o x 1 , se conecta en cada momento a la salida w. Cuando s vale 0 la entrada x 0 se conecta a la salida, mientras que cuando s vale 1 se conecta la entrada x 1. Este comportamiento se puede ver de forma gráfica en los dibujos de la figura 3.6.
De una manera más formal se puede especificar el comportamiento mediante un lenguaje de programación de alto nivel, como el C, por ejemplo, (o cualquier otro pseudolenguaje, en el sentido de que no hace falta que tenga todo el formalismo de un lenguaje de programación): if (s == 0) w = x 0 ; else w = x 1 ; Para encontrar la tabla de verdad primero ponemos la fila de cabecera con las variables de entrada, ordenadas según nos parezca más razonable (o sin ningún criterio) y después la variable de salida. Ordenamos las variables como muestra la figura 3.7.a: la variable s a la izquierda, después x 1 y por último x 0. La figura 3.7.b muestra cómo rellenamos las filas correspondientes a s=0, copiando las 4 filas correspondientes de x 0 en la salida w. En la parte c) de la figura mostramos el caso de s=1 y en la d) la tabla resultante.
Mx
1 0
x 1 x 0
s
w
Mx
1 0
x 1 x 0
s
w
Fig. 3.6 Dos posibles situaciones en las que se puede encontrar un Mx-2-1 en función de s_._
Mx
x 1 x 0
s
w
Mx
x 1 x 0
s
w
x 0
x 1
w w
8 Introducción a los Computadores
Es interesante observar que partiendo de la sentencia if, que indica la salida en función de s, ha resultado muy cómoda la creación de la tabla de verdad, en la que la variable s ocupa la posición de más a la izquierda. Si probamos a obtener la tabla de verdad ordenando las variables de entrada con s en otra posición nos hubiera costado más tiempo. No obstante, cualquier orden es correcto.
3.1.3 Puertas Lógicas
Definimos ahora los circuitos lógicos más simples con los que vamos a trabajar, que se denominan puertas lógicas. Las puertas lógicas tienen muy pocas entradas y sólo una salida. Como sólo tiene una salida, podemos decir que una puerta lógica es una implementación física de una función lógica.
Usaremos las puertas lógicas como “ladrillos” para construir poco a poco un gran edificio como es el computador. Usaremos solamente tres tipos distintos de puertas, las denominadas Not, And y Or, ya que con ellas se puede implementar cualquier función lógica (se dice que es un conjunto completo - universal- de puertas). No entraremos en cómo se construyen estas puertas con una tecnología determinada, pues esto forma parte de un curso de electrónica o de diseño digital más avanzado. Definiremos su funcionamiento y asociaremos un símbolo a cada puerta. Usaremos las puertas como dispositivos para, conectándolos entre sí, formar otros circuitos combinacionales más complejos.
Puertas de una entrada. ¿Cuántas puertas lógicas o funciones lógicas distintas podemos definir que tengan una sola entrada? La tabla de verdad de una de estas puertas tiene solamente dos filas, una para especificar el valor de la salida cuando la entrada toma el valor 0 y otra para el valor 1. El número de funciones lógicas distintas de una entrada es el número de columnas distintas que sepamos poner con dos bits por columna, (un bit en cada fila). La respuesta es cuatro ya que cuatro es el número de combinaciones diferentes que pueden tomar dos bits (00, 01, 10 y 11). La figura 3.8 muestra las cuatro posibles funciones que hemos denominado g 3 , g 2 , g 1 y g 0.
x 1 x 0 0 0 1 1
0 1 0 1
w 0 1 0 1
s 0 0 0 0 1 0 0 0 (^10 1 ) 1 1 0 1 1 1 1 1
x 1 x 0 0 0 1 1
0 1 0 1
s w 0 0 0 0 1 0 0 (^10 ) 1 1 0 1 1 1
x 1 x 0 0 0 1 1
0 1 0 1
w 0 1 0 1
s 0 0 0 0 1 0 0 (^10 ) 1 1 0 1 1 1
x 1 x 0 0 0 1 1
0 1 0 1
w 0 1 0 1
s 0 0 0 0 1 0 0 0 (^10 1 ) 1 1 0 1 1 1 1 1
a) b) c) d)
Fig. 3.7 Construcción, paso a paso, de la tabla de verdad del multiplexor Mx-2-1.
Fig. 3.8 Tabla con las 4 posibles funciones de una entrada. Símbolo usado para la puerta Not y notación algebraica de la operación Not (que es la función g 2 de la tabla).
x (^) gi w
w = gi (x)
x 0 1
g 3 1 1
g 2 1 0
g 1 0 1
g 0 0 0
x w Not w = !x
10 Introducción a los Computadores
Notación. En la figura 3.10 se indica entre paréntesis alguna notación alternativa para cada operación. Nosotros usamos normalmente la notación w = !x para referirnos a la Not porque por un lado la notación que lleva una línea encima no se puede hacer con algunos editores y simuladores de circuitos y por otro, la notación con un apóstrofo se ve poco. Además, cuando esta decisión no induzca a errores, no pondremos el punto entre las variables para indicar la operación And. Igualmente, usaremos el símbolo + para la operación Or, y lo indicaremos en negrita cuando pueda inducir a errores, para diferenciarlo de la suma aritmética sobre números naturales, enteros o reales. La operación And se denomina también producto lógico y la Or suma lógica
Las tres puertas básicas. La figura 3.10 muestra, para cada una de las tres puertas básicas: el nombre y el símbolo que le asignamos en nuestra librería de dispositivos Digit@Lib, la notación matemática usada para la operación lógica que implementa la puerta y su tabla de verdad. Además, definimos las puertas con las siguientes frases.
Not : La salida vale 1 cuando la entrada vale 0. (la salida vale 0 cuando la entrada vale 1). And : La salida vale 1 cuando todas las entradas valen 1. (la salida vale 0 cuando alguna entrada vale 0). Or : La salida vale 1 cuando alguna entrada vale 1. (la salida vale 0 cuando todas las entradas valen 0).
Fig. 3.10 Definición de las tres puertas básicas: Not, And y Or.
x y
x y w = x y (w = x · y) (w = x && y)
And-
x y
x y w = x + y (w = x + y) (w = x || y)
Or-
x y w 0 0 1 1
0 1 0 1
0 1 1 1
x y w 0 0 1 1
0 1 0 1
0 1 1 1
x y w 0 0 1 1
0 1 0 1
0 0 0 1
Not xx
Nombre (^) Símbolo Expresiónlógica Tabla deverdad
x w 0 1
1 0
w = !x (w = ) (w =x´)
x
w = !x (w = ) (w =x´)
x
Circuitos lógicos combinacionales 11
3.1.4 Conectando circuitos combinacionales entre si
Diseño modular
Vamos a construir un computador sencillo, pero completo, utilizando muy pocos elementos distintos entre los que se encuentran las tres puertas básicas Not, And-2 y Or-2, con las que construiremos todos los circuitos combinacionales. Construir estos circuitos, que pueden llegar a ser muy complejos, puede ser muy complicado y muy fácil cometer errores. Para evitar estas dificultades seguimos un método de diseño modular (a bloques), que además facilita la comprensión del funcionamiento del computador.
Primero diseñamos circuitos sencillos, aunque un poco más complejos que las puertas lógicas básicas. Estos circuitos sencillos los construimos directamente conectando puertas lógicas. Para cada uno de estos circuitos asociamos un símbolo, con sus entradas y salidas. Después, podremos usar estos símbolos ( dispositivos o bloques ) para, conectándolos entre sí, construir circuitos un poco más complejos. A su vez, a estos circuitos más complejos, también les asociaremos otros símbolos, que podrán ser usados como dispositivos en otros diseños más complejos todavía.
En un diseño modular como el que seguimos en este curso, es fácil detectar y corregir los errores. Cada dispositivo se construye con pocos dispositivos de los niveles inferiores. La sencillez del circuito hace que no sea muy probable que cometamos errores y si los cometemos, es fácil que los detectemos. Además, cada dispositivo nuevo se prueba exhaustivamente antes de ser incorporado a la librería de dispositivos, de forma que cuando es usado para construir otros dispositivos más complejos, es seguro que funciona correctamente.
Esquema lógico
La figura 3.11 (parte de la izquierda) muestra el esquema lógico de un circuito combinacional construido a partir de varias puertas lógicas conectadas entre sí. Un esquema lógico es un dibujo que representa un circuito lógico. Consiste en varios símbolos de dispositivos lógicos unidos por líneas que especifican las conexiones entre las entradas y salidas de los dispositivos. Por convenio, dos líneas que se cruzan no están conectadas excepto que se dibuje un punto en la intersección. Este esquema, también tiene tres conectores, dos de entrada y uno de salida que hemos etiquetado como x, y y w (aunque en algunos esquemas no dibujaremos los conectores). A la derecha de la figura se muestra el símbolo que asociamos al circuito de la izquierda cuando lo usamos como dispositivo en un circuito más complejo.
Fig. 3.11 Esquema lógico interno de un dispositivo combinacional formado mediante la interconexión de varias puertas lógicas y símbolo del dispositivo.
x y
w
CLC
x^ y
w
Circuitos lógicos combinacionales 13
En la figura 3.13 se muestran los esquemas lógicos de algunos circuitos. Para dar valor lógico a algunas entradas hemos usado un conmutador binario ( binary switch ) que simula un conmutador que pone a su salida un 0 o un 1 y lo mantiene mientras no se pulse. Para ver el valor de algunos puntos del circuito y de las salidas hemos conectado un visor binario ( binary probe ), que nos muestra un 0, 1, Z, C o X, según sea el caso.
El circuito a) es válido, pues cumple con las tres reglas. El b) no es válido, se viola la regla 1, ya que se han conectado las dos salidas de las puertas And. Se produce un conflicto en este punto, por lo que el visor muestra una C. A la salida de las puertas Not parece una X pues no podemos saber el valor de la
a) (^) b)
c) d)
0
1
0
1
0
1
0
1
0
1
0
0
1
(^0) X
1
Z
Z
C
C
0
1
0
1
0
1
0
1
X
0
1
(^01)
1
Z
Z
X
X
0
X
1
1
X
0
Fig. 3.13 Esquemas lógicos de cuatro circuitos. El a es el único correcto.
14 Introducción a los Computadores
entrada de la puerta. El circuito c) no es válido, se viola la regla 2, ya que no se ha dado valor a una de las entradas de la puerta And. No obstante, en la situación primera, aunque una entrada no tenga valor se puede saber el valor de la salida de la puerta And, ya que la otra entrada tiene valor 0 y la And produce un 0 en la salida siempre que una entrada vale 0 independientemente del valor de la otra entrada. No podemos decir lo mismo del segundo caso, en que la entrada con valor lógico tiene un 1. El circuito d) tampoco es válido por el mismo motivo que el c).
La figura 3.14 muestra, a modo de ejemplo, el esquema lógico de un CLC con 3 entradas (x, y, z) y dos salidas (w1, w0). El circuito está formado por la interconexión válida de varias puertas Not, And y Or. Observad que se cumplen las tres reglas que producen un circuito combinacional válido.
Un esquema lógico formado por la interconexión de puertas lógicas y otros dispositivos combinacionales es válido para especificar un circuito combinacional si se cumplen las tres reglas siguientes.
Fig. 3.14 Ejemplo de circuito combinacional correcto formado mediante la interconexión de puertas lógicas.
16 Introducción a los Computadores
La tabla de verdad resultante es la función f 6 de la figura 3.9 que se denomina Xor y este esquema es una posible implementación interna de la puerta con dos entradas Xor-2, cuyo símbolo se muestra en la figura 3.16. La salida de la Xor vale 1 cuando las dos entradas tienen distinto valor lógico. Esta puerta es muy útil en el diseño del sumador y restador que usaremos en la construcción del computador.
3.2.2 Análisis: creando la tabla de verdad por columnas
El análisis que acabamos de hacer es un poco pesado: simplemente con 5 entradas, en vez de las 2 del ejemplo anterior, el trabajo se multiplica por 8 (hay que dar 32 pasadas sobre el esquema del circuito). Veamos otra forma más rápida de encontrar la tabla de verdad, usando como ejemplo el de la figura 3.17.
0
0
0 1
0
1
x y w 0 0 1 1
0 1 0 1
0
x
y
(^0 )
0
w
a b
c
d
Fig. 3.15 Análisis de un circuito para obtener la fila 0 de la tabla de verdad.
0
0
0 1
0
1
x y w 0 0 1 1
0 1 0 1
0 1 1 0
x
y
0 0 1 1
0 1 0
0 0 1 1 0 1 0
1 0 0
1 0 0
0 1 0 1 1 0 1
a (^11 0) w b
c
d
Fig. 3.16 Análisis de un circuito creando la tabla de verdad por filas. Puerta Xor-
Circuitos lógicos combinacionales 17
Primero creamos las cabeceras de una tabla de verdad con las entradas del circuito, x e y, y rellenamos las dos columnas con las combinaciones de 2 bits en el orden estándar. A continuación ponemos la cabecera de las variables internas (las salidas de los dispositivos/puertas que no son salidas del circuito) a, b, etc. y de la salida del circuito, w (una columna para cada variable lógica). En la figura 3.17 se muestra esto y además, para mayor claridad, para cada variable se indica su expresión lógica en función de las variables de entrada de la puerta que la genera. Por ejemplo, la variable a es igual a x·y y la variable de salida w es !e.
Vamos a completar esta tabla por columnas. Para ello solamente hay que saber la tabla de verdad de las puertas/dispositivos que aparecen en el esquema: Not, And-2 y Or-2. Podemos comenzar por la columna a, b o c, ya que estas variables sólo dependen de las entradas x e y (a=x·y, b=!x y c=!y), cuyos valores conocemos a priori. Pero no podemos completar la columna d, por ejemplo, hasta que no tengamos competa la b y la c, ya que d=b·c.
Por ejemplo, para completar la columna b sólo tenemos que copiar la columna x de la tabla de verdad pero cambiando ceros por unos y unos por ceros, ya que b=!x. Lo mismo ocurre para la columna c, pero negando la columna y. La columna d, que ya podemos completar después de tener la b y la c, se rellena avanzando hacia abajo haciendo la operación And lógica de cada pareja de bits de las columnas b y c (de arriba abajo: 1·1=1, 1·0=0, 0·1=0 y 0·0=0).
Así se procede, columna a columna, hasta obtener la columna de la salida. La tabla completa y el resultado del análisis (con sólo la columna de salida, w) se muestran en la figura 3.18.
Es interesante observar que aunque el circuito de la figura 3.17 es distinto del de la figura 3.16, ambos tienen la misma tabla de verdad. Se dice que son circuitos equivalentes: tienen el mismo comporta- miento lógico, pero están construidos de distinta forma. En el Apéndice I se habla de esto.
Fig. 3.17 Circuito a analizar y estructura de la tabla de verdad para el análisis por columnas.
a
b
e
x y
d w c
x y 0 0 1 1
0 1 0 1
a
x · y d e w
b · c a + d (^) !e b
!x c
!y
Fig. 3.18 .Tablas de verdad resultantes del análisis por columnas.
x y 0 0 1 1
0 1 0 1
a 0 0 0 1
x · y d 1 0 0 0
1 0 0 1
e 0 1 1 0
w
b · c a + d (^) !e b 1 1 0 0
!x c 1 0 1 0
!y x y 0 0 1 1
0 1 0 1
0 1 1 0
w
Circuitos lógicos combinacionales 19
3.3.1 Definición
La síntesis de un circuito combinacional consiste en obtener el esquema lógico del circuito a partir de una especificación de su comportamiento. De momento partimos de la especificación del circuito mediante su tabla de verdad y obtenemos un circuito formado por puertas lógicas Not, And y Or que sigue una estructura general que se denomina “en suma de minterms”.
Mas adelante ampliamos las posibilidades de síntesis. Por un lado, podremos partir de una especificación del comportamiento del circuito diferente de la tabla de verdad: mediante un texto explicativo, un pseudo-lenguaje de alto nivel, etc. (sección 3.1.2). Por otro lado, podremos obtener el circuito resultante usando bloques combinacionales: mediante un decodificador y puertas Or (sección 3.3.5) o mediante una única memoria ROM (sección 3.3.6).
3.3.2 Caso sencillo de síntesis en suma de minterms
Para empezar vamos a encontrar el esquema lógico de un circuito muy sencillo, con sólo dos entradas y una salida, como el que se especifica en la figura 3.20. El método de síntesis que vamos a seguir tiene dos pasos.
El primer paso consiste en sintetizar las funciones minterm necesarias para implementar la tabla de verdad: nivel de puertas And. Una función minterm es una función lógica que vale 1 solamente para una única combinación concreta de las entradas, para todas las demás combinaciones vale 0. Dicho de otra forma, una función minterm sólo tiene un 1 en la columna de salida de su tabla de verdad. Dependiendo de en qué fila esté el 1 se definen las distintas funciones minterm. La función minterm 0, que denominamos m 0 , tiene el 1 en la fila 0 de la tabla de verdad, la m 1 en la fila 1, y así
sucesivamente.
Así, para circuitos de dos entradas, por ejemplo x e y, existen 4 posibles funciones minterm. El minterm más trivial de sintetizar es el minterm 3, que como se ve en la tabla de verdad de la figura 3. es igual que la tabla de verdad de la puerta And (la salida sólo vale 1 cuando las dos entradas valen 1, lo que corresponde a la fila 3 de la tabla de verdad).
La puerta And parece muy interesante para implementar una función minterm, ya que su tabla de verdad sólo tiene un 1. El problema nos aparece cuando queremos que el 1 no esté en la última fila de la tabla de verdad. Por ejemplo ¿cómo implementamos el minterm 2, m2(x,y)? La respuesta se ve en la figura 3.22: al negar la entrada y de la puerta And, la salida de la puerta vale 1 sólo cuando la entrada x
Fig. 3.20 Tabla de verdad de un circuito muy sencillo, con sólo dos entradas y una salida.
x y w 0 0 1 1
0 1 0 1
1 0 0 1
f
x y
w
20 Introducción a los Computadores
vale 1 y la y vale 0. Esta combinación es la única que hace que las dos entradas de la And valgan 1 a la vez y por tanto que la salida valga 1. En la derecha de la figura se muestra el esquema que implementa la función m 2 y sobre él se indica como se obtiene su expresión lógica (expresión algebraica donde las
variables son lógicas (pueden valer solamente 0 o 1) y los operadores son la suma, +, el producto, ·, y la negación, !, lógicas): m 2 (x, y) = x · !y. Puede decirse que el esquema de la derecha es una implementación directa de la expresión lógica x · !y.
La tabla de verdad de las 4 funciones minterm de dos entradas se ve en la figura 3.23, donde se indica, también, la expresión lógica de cada minterm. Cualquier minterm se implementa con una puerta And y las correspondientes puertas Not según el minterm de que se trate.
Volvamos al caso particular de la síntesis de la tabla de verdad de la figura 3.20. Tiene 2 unos en la columna de salida, que corresponden a los minterms 0 y 3. Ya sabemos cómo implementar cada uno de estos minterms pero ¿cómo implementar la función que nos piden, que tiene 2 unos?
El segundo paso consiste en hacer la Or de los minterms del circuito: nivel Or. Fijémonos en la tabla de verdad de la Or. Cuando una de sus entradas vale 1 y la otra 0 su salida vale 1. Si conectamos cada una de las salidas de las puertas And que implementan los minterms m 0 y m 3 a las dos entradas de una
puerta Or, la salida valdrá 1 tanto cuando m 1 valga 1 como cuando lo valga m 2. Así obtenemos la
expresión lógica de la función w que buscamos, w(x,y) = m 0 (x,y) + m 3 (x,y) = !x·!y + x·y.
La figura 3.24 muestra las tablas de verdad de la función objetivo y de las funciones internas usadas para su implementación directa a partir de la expresión lógica en suma de minterms y el esquema del circuito resultante.
Fig. 3.21 Tabla de verdad e implementación de la función minterm 3 de dos entradas.
x y 0 0 1 1
0 1 0 1
x·y 0 0 0 1
1 1 1
x y m^3 (x,y) = x·y
Fig. 3.22 Tabla de verdad e implementación de la función minterm 2 de dos entradas.
x y 0 0 1 1
0 1 0 1
!y 1 0 1 0
x·!y 0 0 1 0
x y 0 0 1 1
0 1 0 1
!y 1 0 1 0
x·!y 0 0 1 0
x y !y
m 2 (x,y) = x·!y
x 1 0 1
1
1 1 0 1
1
1
x y 0 0 1 1
0 1 0 1
!x 1 1 0 0
!y 1 0 1 0
m 3 x·y 0 0 0 1
m 2 x·!y 0 0 1 0
m 1 !x·y 0 1 0 0
m 0 !x·!y 1 0 0 0
Fig. 3.23 Tabla de verdad de las 4 funciones minterm de dos entradas.