Lógica Combinacional
En este apartado se incluyen algunos módulos básicos de circuitos combinacionales:
Salida código exceso-3
La salida código exceso-3 es un código de 4 bits que se obtiene sumando 3 al número decimal que se quiere codificar.
Esta tabla de verdad muestra la relación entre los BCD o Binary Coded Decimals y la salida código exceso-3:
Entrada BCD
\(A\) | \(B\) | \(C\) | \(D\) |
---|---|---|---|
\(0\) | \(0\) | \(0\) | \(0\) |
\(0\) | \(0\) | \(0\) | \(1\) |
\(0\) | \(0\) | \(1\) | \(0\) |
\(0\) | \(0\) | \(1\) | \(1\) |
\(0\) | \(1\) | \(0\) | \(0\) |
\(0\) | \(1\) | \(0\) | \(1\) |
\(0\) | \(1\) | \(1\) | \(0\) |
\(0\) | \(1\) | \(1\) | \(1\) |
\(1\) | \(0\) | \(0\) | \(0\) |
\(1\) | \(0\) | \(0\) | \(1\) |
Salida código exceso-3
\(w\) | \(x\) | \(y\) | \(z\) |
---|---|---|---|
\(0\) | \(0\) | \(1\) | \(1\) |
\(0\) | \(1\) | \(0\) | \(0\) |
\(0\) | \(1\) | \(0\) | \(1\) |
\(0\) | \(1\) | \(1\) | \(0\) |
\(0\) | \(1\) | \(1\) | \(1\) |
\(1\) | \(0\) | \(0\) | \(0\) |
\(1\) | \(0\) | \(0\) | \(1\) |
\(1\) | \(0\) | \(1\) | \(0\) |
\(1\) | \(0\) | \(1\) | \(1\) |
\(1\) | \(1\) | \(0\) | \(0\) |
Luego es posible hacer un mapa de Karnaugh para las salidas/funciones \(x, y , z, w\)
Es importante mencionar que los BCD posibles son 10, cualquier entrada \(BCD > 9 \; \lor \; BCD < (1001)_2\) no es posible (valor indiferente marcado con \(X\)).
En este mapa se pueden ver las salidas \(z, y\).

De esta forma transformarlas en un diagrama lógico ahora es más sencillo (faltarían ver las salidas \(w, x\)).
Sumadores
Semisumador
Un semisumador es un circuito que suma dos bits de entrada \(x\) y \(y\) y produce dos salidas: la suma \(S\) y el acarreo \(C\).
La tabla de verdad de un semisumador es la siguiente:
\(x\) | \(y\) | \(S\) | \(C\) |
---|---|---|---|
\(0\) | \(0\) | \(0\) | \(0\) |
\(0\) | \(1\) | \(1\) | \(0\) |
\(1\) | \(0\) | \(1\) | \(0\) |
\(1\) | \(1\) | \(0\) | \(1\) |
Su diagrama es el siguiente:

Donde \(\;S = x \oplus y, \; C = xy\)
Sumador completo
Un sumador completo tiene tres entradas: dos bits \(x\) y \(y\) y un acarreo de entrada \(z\). Produce dos salidas: la suma \(S\) y el acarreo de salida \(C\).
La tabla de verdad de un sumador completo es la siguiente:
\(x\) | \(y\) | \(z\) | \(C\) | \(S\) |
---|---|---|---|---|
\(0\) | \(0\) | \(0\) | \(0\) | \(0\) |
\(0\) | \(0\) | \(1\) | \(0\) | \(1\) |
\(0\) | \(1\) | \(0\) | \(0\) | \(1\) |
\(0\) | \(1\) | \(1\) | \(1\) | \(0\) |
\(1\) | \(0\) | \(0\) | \(0\) | \(1\) |
\(1\) | \(0\) | \(1\) | \(1\) | \(0\) |
\(1\) | \(1\) | \(0\) | \(1\) | \(0\) |
\(1\) | \(1\) | \(1\) | \(1\) | \(1\) |
Su diagrama es el siguiente:

Donde \(\;S = z \oplus (x \oplus y), \; C = z(xy + x'y) + xy\)
Sumador binario
Un sumador binario es un circuito que suma dos números binarios. El mismo se compone de distintos sumadores completos (dependiendo de la cantidad de bits de los números a sumar).
Si tomamos por ejemplo, la suma de los números de cuatro bits \(A, B\) debemos sumar cada \(A_i\) con \(B_i\) y el acarreo de la suma anterior:
\[\begin{align} &\quad \; \\ &\quad \quad C_3 C_2 C_1 C_0 \\ &\quad \quad A_3 A_2 A_1 A_0 \\ &+ \;\;\; B_3 B_2 B_1 B_0 \\ &\quad \;\; \overline{C_4 S_3 S_2 S_1 S_0} \\ \end{align} \]
Uno de los problemas que radican en este sumadro es que, al ser un proceso en cascada, su velocidad depende del cálculo de los acarreos.
La forma de resolver este problema es paralelizando el proceso, obteniendo los acarreos anticipadamente.
Acarreo anticipado
El acarreo anticipado es un método que permite calcular los acarreos de un sumador binario de forma paralela.
Observando el diagrama del sumador completo:

Mediante las variables binarias:
\[\begin{align} P_i &= A_i \oplus B_i \\ G_i &= A_iB_i \\ \end{align} \]Expresamos la suma y el acarreo como:
\[\begin{align} S_i &= P_i \oplus C_i \\ C_{i+1} &= G_i + P_iC_i \\ \end{align} \]Los acarreos serían:
\[\begin{align} &C_0 \\ &C_1 = G_0 + P_0C_0 \\ &C_2 = G_1 + P_1C_1 = G_1 + P_1(G_0 + P_0C_0) \\ &C_3 = G_2 + P_2C_2 = G_2 + P_2(G_1 + P_1(G_0 + P_0C_0)) \\ \end{align} \]Un diagrama lógico de un acarreo anticipado sería:

Multiplicador binario
Un multiplicador binario es un circuito que realiza la multiplicación de dos números binarios.
Si queremos multiplicar dos números de dos bits \(A, B\) seguimos de la siguiente manera:
\[\begin{align} &\quad \quad \quad \quad \quad \quad \; B_1 \quad \quad \quad B_0 \\ &\quad \quad \quad \quad \quad \times \; \; A_1 \quad \quad \quad A_0 \\ &+ \quad \quad \quad \quad \quad \overline{A_0 B_1 \quad A_0 B_0} \\ &\quad \quad \;\;\; A_1 B_1 \quad A_1 B_0 \\ &\overline{C_3 \quad \quad C_2 \quad \quad C_1 \quad \quad C_0} \\ \end{align} \]Aplicado a un diagrama lógico:

Decodificadores
Los decodificadores son circuitos combinacionales que dadas \(n\) variables de entrada generan \(2^n\) salidas (minitérminos).
Este sería un diagrama lógico de un decodificador de \(3\) entradas \(x, y, z\)

Multiplexores
Los multiplexores son circuitos que permiten seleccionar una de las \(2^n\) entradas en base a \(n\) entradas de selección y enviarla a la salida.
Un multiplexor de \(2\) a \(1\) sería:

Si \(S = 0 \implies Y = I_0\)
Si \(S = 1 \implies Y = I_1\)
Buffer triestado
Un buffer triestado posee una entrada, una salida y una entrada de control.
Si la entrada de control es \(0\) la salida es de alta impedancia, si es \(1\) la salida es igual a la entrada.

En otras palabras, dependiendo de la entrada de control la salida puede estar o no conectada.
Los multiplexores también pueden ser creados a partir de buffers triestado.