15
Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Embed Size (px)

Citation preview

Page 1: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales ComunesMultiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Page 2: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Multiplexer

Multiplexer (Multiplexor)

El multiplexer conecta varias entradas con una única salida. En un momento dado, se selecciona una de las entradas para que pase a la salida. La figura muestra un multiplexer 4 a 1, es decir, con 4 entradas (D0, D1, D2, y D3), una salida F y dos líneas de selección, S1 y S2. Las n = 2 líneas de selección determinan cual de las 2n = 22 = 4 entradas (0, 1, .. 2n – 1) se propaga a la salida.

Page 3: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Multiplexer

Los multiplexers son usados en circuitos digitales para controlar la ruta de señales y datos. Un ejemplo es la carga del registro PC (Program Counter). El valor a cargar puede venir de distintas fuentes:

• Un contador binario, si el PC será incrementado para la siguiente instrucción.• El registro de instrucciones, si se ha ejecutado una instrucción de salto con dirección directa.• La salida del ALU, si una instrucción de salto especifica la dirección usando el modo de

desplazamiento.

Las distintas entradas se pueden conectar a las líneas de entrada de un multiplexor con el PC conectado a la línea de salida. Las líneas seleccionadas determinan cuál es el valor a cargar en el PC. Como el PC contiene varios bits, se usan varios multiplexores, uno por bit. La figura ilustra esto para dirccciones de 16 bits.

Page 4: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Decodificador

Decodificador

Un decodificador es un circuito combinacional con varias líneas de salida, con una sola de ellas seleccionada en un instante dado, dependiendo del patrón de líneas de entrada. En general, un decodificador tiene n entradas y 2n salidas. La figura muestra un decodificador con tres entradas y ocho salidas.

Page 5: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Decodificador

Los decodificadores tienen muchos usos en computadoras digitales. Un ejemplo es la decodificación de direcciones. Supongamos que se quiere construir una memoria de 1 KB usando cuatro chips de RAM de 256 x 8 bits. Se desea contar con un espacio de direcciones único y unificado, el cual puede ser dividido en partes como sigue:

Cada chip requiere ocho líneas de dirección, las cuales se toman de los ocho bits menos significativos de la dirección. Los dos bits más significativos de los diez bits de direcciones se usan para seleccionar uno de los cuatro chips de RAM. Para este propósito, se usa un decodificador 2 a 4 cuya salida habilita a uno de los cuatro chips, como se muestra a continuación:

Page 6: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Demultiplexer

Demultiplexer

Con una línea adicional de entrada (datos de entrada), un decodificador puede ser usado como demultiplexer. El demultiplexer realiza la operación inversa de un multiplexer; conecta una entrada única a una de posibles salidas. Esto se muestra a continuación:

Al igual que en el caso del decodificador, n entradas son decodificadas para producir una sola salida de entre las 2n posibles. Cada una de las 2n salidas es usada como entrada a una compuerta AND de dos entradas, las segunda entrada sería la línea de datos. Con esto, la salida correspondiente a la combinación de las n líneas de entrada será igual a la entrada de datos.

Page 7: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Encoder

Encoder (Codificadores)

Un codificador o encoder es un circuito que convierte la información binaria presentada en cierto formato a otro formato. A continuación, se presenta un el diseño de un encoder de BCD a 7-segmentos:

Page 8: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Encoder

Page 9: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Sumador

Sumadores (Adders)

La suma binaria difiere del álgebra boolena en que el resultado incluye un carry (acarreo):

Half Adder (medio sumador)

El half adder o medio sumador suma dos dígitos binarios A y B, y tiene dos salidas: la suma y el carry de salida (Cout). El carry representa un desbordamiento (overflow) en el siguiente dígito en una suma entre números de varios bits. El valor de la suma es Suma = A B ⊕ y Cout = A AND B.

Page 10: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Sumador

Full Adder (sumador)

El full adder o sumador suma dos dígitos binarios A y B, y considera como entrada adicional el carry Cin producido por la etapa anterior (suma de los bits menos significativos inmediatos) y tiene dos salidas: la suma y el carry de salida (Cout). El Cin se considera igual a cero en la suma de los bits menos significativos de A y B. El carry producido por la suma de los bits correspondiente de A y B es transferido a la suma de los siguientes bits más significativos inmediatos. El Full adder se presenta a continuación:

Page 11: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Sumador

Analizando las ecuaciones anteriores, se puede que la Suma es 1 cuando las variables de entrada son un número impar de 1s, por lo que se puede expresar como el XOR entre cada una de estas variables. Cout es 1 cuando A AND B es 1 (ambas son uno) y cuando cualquiera de las variables A y B es uno la vez que también Cin es igual a 1; sin embargo, el caso en que ambas, A y B, sean uno, ya está cubierto por el término AB, requiriéndose agregar solo los casos en los que solo una de las variables A y B es 1 (A ⊕B). Entonces,

Suma = A B ⊕ ⊕ Cin

Cout = AB + Cin (A B)⊕

Lo cual resulta en la siguiente implementación:

Page 12: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Sumador

Sin embargo, en una computadora, no es de interés el realizar operaciones entre un par de bits. Se busca poder sumar dos números de n bits. Esto se puede realizar interconectando un conjunto de sumadores de un bit de tal manera que el carry de uno sumador sea alimentado como entrada al siguiente. En la siguiente figura se muestra un sumador de dos números de 4 bits:

Entonces tenemos la lógica necesaria para implementar un sumador de varios bits, tal como se muestra a continuación.

Page 13: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Sumador

Note que ya que la salida de cada sumador depende del carry del sumador anterior, por lo que hay un incremento acumulado de retardo al obtener la suma total del bit menos significativo al bit más significativo. Cada sumador de un bit tiene cierto retardo como resultado del retardo en sus compuertas lógicas, el cual se acumula al pasar de compuerta a compuerta. En el caso de sumadores más grandes, este retardo acumulado puede resultar inaceptablemente alto.

Si los valores de acarreo se pudieran determinar sin tener que pasar a través de todas las etapas previas, entonces cada sumador de un bit podría funcionar independientemente, y el retardo no se acumularía. Esto se puede lograr con una procedimiento conocido como acarreo anticipado (carry lookahead). Veamos de nuevo el sumador de cuatro bits para explicar este método.

Se busca proponer una expresión que especifica el acarreo de entrada a cualquier etapa del sumador sin referimos a los valores de acarreo previos. Se tiene, entonces

Siguiendo el mismo procedimiento, se obtiene

Page 14: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Sumador

Este proceso se puede repetir para sumadores arbitrariamente grandes. Cada término de acarreo se puede expresar en forma SOP como función de solo las entradas originales, sin dependencia de los acarreos. Por lo tanto, solo se dan dos niveles de retardo de compuerta sin importar la longitud del sumador.

Para el caso de números grandes, este procedimiento se vuelve demasiado complicado. Evaluando la expre sión para el bit más significativo de un sumador de n bits, se requiere una compuerta OR con un número de n - 1 entradas y n compuertas AND de 2 a n + 1 entradas. Por consiguiente, el acarreo anticipado se hace normalmente con solo cuatro u ocho bits a la vez. La siguiente figura muestra el sumador de 32 bits ya visto anteriormente, el cual se construye a partir de cuatro sumadores de ocho bits. En este caso, el acarreo debe pasar a través de los cuatro sumadores de ocho bits, pero puede ser sustancialmente más rápido que pasar a través de 32 sumadores de un bit.

Page 15: Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores

Circuitos Combinacionales Comunes – Sumadores-Restadores

Sumadores-Restadores

Muchas veces es conveniente implementar un restador a partir de un sumador. Esto se logra representando la resta como la suma del minuendo (B) más el complemento a dos del sustraendo (A). Como ya se vio anteriormente, el complemento a dos (C2) de un número se obtiene invirtiendo el número (complemento a uno, C1) y sumándole un uno.

El sumador-restador implementa esta función incorporando un multiplexer para cada bit del número a restar (sustraendo), de tal manera que cuando se desea implementar la resta, una señal D será igual a 1, y será cero en caso de una suma ordinaria. Al ser D = 1, se alimenta al sumador el complemento de A, al ser D = 0 se alimenta al sumador simplemente A. A la vez, el valor de D se introduce como carry al sumador de los bits menos significativos de los dos operandos, por lo que, en el caso de la resta (D = 1) esto representa sumar 1 al complemento a uno de A, resultando el complemento a dos de A lo que finalmente se suma a B. En el caso de la suma ordinaria, D = 0 no afecta el resultado.