Cómo saber si un número binario es cero

13

Estaba implementando la ALU a partir de las especificaciones dadas en mi libro Los elementos de sistemas informáticos. Estoy atascado en un solo problema ¿Cómo encuentro si un número dado es cero o no? Una cosa que puedo hacer es o cada bit en el bus, y luego aplicar un no gate en eso. Pero tiene que haber alguna otra solución elegante.

    
pregunta Rick_2047

5 respuestas

11

Simplemente no hay forma de evitar OR todos los bits, por muy insatisfactorio que pueda parecer. Sin embargo, usted tampoco está restringido a dos puertas de entrada en el silicio. Puede construir una compuerta NOR de 4 entradas en la lógica CMOS al colocar 4 transistores de tipo p en la red de extracción y 4 transistores de tipo n paralelos en la red desplegable. Eso reduce la profundidad de la topología de su árbol y, por lo tanto, el retraso de su propagación. Solo puede tomar esa teoría hasta ahora, sin embargo, antes de que la caída de tensión acumulada a través de los transistores de la serie haga que el pull-up no sea lo suficientemente alto como para que sea un "1" ... / p>     

respondido por el vicatcu
12

La función lógica es la puerta NOR. Esa es la función lógica más simple que existe.

    
respondido por el Rex Logan
7

La solución típica con máquinas de 8 bits era que la ALU produciría un número de bits de 'bandera' que representaría el resultado de la operación más reciente. Si bien sería posible tener cualquier número de bits de indicador (es decir, podría tener un indicador 'Z' para cada registro en su CPU), generalmente es lo que acaba de calcular en el que está más interesado, por lo que tiene cierto sentido hacerlo de esa manera.

Algunas de esas CPU antiguas establecerían automáticamente bits de bandera para casi todos los movimientos de datos, mientras que otras requerirán que pegue una instrucción de 'comparación' específica en su código si de repente necesita saber si cierto registro es cero. Y ya sea que proporcione una comprobación de cero para cada registro o solo para lo que se acaba de calcular, realmente no hay una forma más sencilla de verificar "es esta palabra cero" que simplemente O O todos los bits juntos.

    
respondido por el JustJeff
3

Algunas CPU, por ejemplo, MIPS, tienen un registro que siempre contiene cero, lo que hace que la prueba de otro registro sea muy rápida.

    
respondido por el Leon Heller
0

Soy un gran fan de or_reduce : la mayoría de las herramientas de síntesis lo optimizarán para la mejor implementación, ya que saben exactamente lo que está haciendo.

    
respondido por el Aaron D. Marasco

Lea otras preguntas en las etiquetas