Algunos conceptos básicos de la lógica digital son el medio sumador y el sumador completo . Sabemos cómo producir la suma de dos valores binarios al nivel de las puertas AND/OR/NOT, de una manera sencilla que se presenta en muchos libros de texto. (No importa los trucos avanzados que se usan en los chips de alto rendimiento del mundo real). Unos pocos ajustes, y podemos restar .
Lo que no recuerdo haber visto nunca son formas a nivel de puerta para producir el mínimo o el máximo de dos valores binarios. ¿Existe tal cosa? Si es así, ¿algún microprocesador lo usa?
Antes de considerar el mínimo/máximo, ¿qué tal comparar dos números? Digamos que tienes dos números binarios: A y B, y quieres saber si A>B. Lo que haces es una simple resta, C=BA. Si C es negativo, entonces A era mayor que B. Con un número binario complementario a dos, el bit más significativo (MSB) será 1 si el número es negativo y 0 si es positivo. Entonces, después de la resta, un solo bit te dirá si A o B es más grande.
Ahora, esa fue una manera súper simple de explicarlo. Hay algunos detalles a los que hay que prestar atención.
Esto funciona con números con signo (el complemento de dos). Si A y B no están firmados, primero deberá convertirlos a firmados. Todo lo que esto realmente significa es que agrega un bit cero a la izquierda y el número resultante es un poco más grande. Por ejemplo, si A = 1111 (sin firmar), entonces debe hacer A = 01111 (firmado).
El otro problema es que debe prestar atención al rango de números que va a utilizar y asegurarse de que no tiene condiciones de desbordamiento/desbordamiento. La forma habitual en que trato esto es darle a A y B un poco más. Entonces, un número con signo de 8 bits se convertirá en un número con signo de 9 bits. Esto se hace duplicando el bit superior (signo). Por ejemplo, si A = 1000 (firmado), A se convertirá en 11000 (firmado).
Una vez que haya hecho los cálculos correctamente, puede usar el MSB de C para determinar qué número es mayor. Luego puede usar un MUX simple para seleccionar A o B dependiendo del valor del MSB de C.
Se llama comparador de magnitud y usa menos puertas que la solución vainilla. Consulte https://stackoverflow.com/questions/10767316/finding-the-maximum-of-two-integers-in-binary-using-bit-logic-only .
La solución "vainilla" de calcular la diferencia y mirar el MSB tiene la ventaja de reutilizar "partes" conocidas y puede ahorrarle algo de tiempo de diseño, según su caso de uso. Al menos puede guardar todas las puertas menos una para la salida, ya que solo verá el MSB.
Ignacio Vázquez-Abrams
el fotón
Ignacio Vázquez-Abrams
el fotón
travisbartley
Super gato
el fotón
Super gato
el fotón
Super gato