Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores CircuitosCombinacionalesComunes–Multiplexer Multiplexer (Multiplexor) El multiplexer conecta varias entradas con una única salida.

Download Report

Transcript Circuitos Combinacionales Comunes Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores CircuitosCombinacionalesComunes–Multiplexer Multiplexer (Multiplexor) El multiplexer conecta varias entradas con una única salida.

Circuitos Combinacionales Comunes
Multiplexer, Decodificador, Demultiplexer, Encoders, Sumadores, Sumadores-Restadores
CircuitosCombinacionalesComunes–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.
CircuitosCombinacionalesComunes–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.
CircuitosCombinacionalesComunes–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.
CircuitosCombinacionalesComunes–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:
CircuitosCombinacionalesComunes–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.
CircuitosCombinacionalesComunes–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 7segmentos:
CircuitosCombinacionalesComunes–Encoder
CircuitosCombinacionalesComunes–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.
CircuitosCombinacionalesComunes–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:
CircuitosCombinacionalesComunes–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:
CircuitosCombinacionalesComunes–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.
CircuitosCombinacionalesComunes–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
CircuitosCombinacionalesComunes–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
expresió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.
CircuitosCombinacionalesComunes–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.