EJERCICIO 26

Diseñar un comparador de datos de 1 bit, de manera que se pueda detectar si son iguales o uno mayor o menor que el otro. Describir el método de generalización del problema para datos de un número mayor de dígitos binarios (bits).

SOLUCIÓN:

Tenemos dos entradas A y B que son los datos a comparar y tres salidas E (datos iguales), G (dato A>B) y L (dato A<B). La tabla de verdad del problema es la siguiente:

ENTRADAS SALIDAS
B
A
E
G
L
0
0

1

0

0

0
1

0

1

0

1
0

0

0

1

1
1

1

0

0

De aquí deducimos las siguientes expresiones lógicas para las salidas:

E

G

L

La expresión lógica de la salida E es también la función que realiza la inversa de la salida de la puerta lógica EXOR:

También podemos observar que conocidas dos de las salidas, la otra se puede deducir como complemento de la suma de las dos, es decir la salida de una puerta NOR con entradas las otras dos.

E, G, L

Por tanto, podemos uilizar los siguientes circuitos a partir de puertas lógicas para el comparador de dos bits:

Para generalizar el problema y realizar comparadores de n bits cada dato a partir de comparadores de dos datos de 1 bit, realizamos los siguientes pasos:

1. Se comparan los bits más significativos y si éstos son iguales se comparan los siguientes bits hasta encontrar dos diferentes.
2. Si todos los bits del mismo peso de los dos datos son iguales se indicará que los datos son iguales.
3. Los primeros bits diferentes más significativos nos indicarán si el dato A es mayor o menor que el B.

Para dos bits cada dato, A=a1a0 y B=b1b0 la salida será:

1. A=B (E=1) cuando a1= b1(E1=1) y a0= b0 (E0=1), es decir E=E1E0.
2. A>B (G=1) cuando a1> b1 (G1=1) o a1= b1(E1=1) y a0> b0 (G0=1), es decir G=G1+E1G0.
3. A<B (L=1) cuando a1< b1 (L1=1) o a1= b1(E1=1) y a0< b0 (L0=1), es decir G=L1+E1L0.

Una de las salidas podemos obtenerla a partir de las otras dos por las expresiones: 

E, G, L

El circuito de un comparador de dos datos de dos bits podría ser el siguiente:

Generalizando para n bits tendríamos las expresiones:

1. A=B (E=1) cuando todas las comparaciones de bits del mismo peso son iguales, es decir E=En-1...E3E2E1E0.
2. A>B (G=1) cuando el bit más significativo de A es mayor que el de B o si van siendo iguales los más significativos, al encontrar dos diferentes es mayor el de A, es decir G=Gn-1+En-1Gn-2+En-1En-2Gn-3+...+En-1En-2...E3E2E1G0.
3. A<B (L=1) cuando el bit más significativo de A es menor que el de B o si van siendo iguales al encontrar dos diferentes es menor el de A, es decir L=Ln-1+En-1Ln-2+En-1En-2Ln-3+...+En-1En-2...E3E2E1L0.