¿Cómo saber si un número binario es cero o no está usando puertas lógicas?

0

Estoy tratando de unir algunas puertas lógicas que realizarían una tarea de averiguar si un número es cero o no. Ya encontré un hilo como este aquí ( Cómo saber si un número binario es cero ) y dice "o cada bit en el bus y luego aplica una no compuerta" pero no estoy muy seguro de cómo funciona esto.

He intentado extraer las puertas lógicas y sus entradas / salidas, y lo que tengo son 4 puertas O que tienen entradas que van de [0] a en [7], así que la primera y la segunda puerta OR son:

Or(a=in[0], b=in[1], out=out0);
Or(a=in[2], b=in[3], out=out1);

Y así sucesivamente para las próximas dos puertas. Luego obtengo 4 salidas y no estoy completamente seguro de qué hacer con ellas ahora. Estaba pensando en combinarlos de alguna manera en una entrada y luego aplicarle una única puerta NO, pero no estoy seguro de si eso funcionaría, así como aplicar 4 puertas NO a cada una de las salidas, pero luego terminaría hasta con 4 salidas después de la puerta NO de todos modos, simplemente invertida.

¿Alguien recibió algún consejo / sugerencias sobre cómo podría hacer esto?

    
pregunta MajkelSine

3 respuestas

4

simular este circuito : esquema creado usando CircuitLab

Figura 1. La respuesta sin palabras.

    
respondido por el Transistor
2

O el primer conjunto de salidas juntas, luego O los resultados de eso. Repita hasta que tenga una sola salida. Pase esa única salida a través de un No.

Or(a=in[0], b=in[1], out=out0);
Or(a=in[2], b=in[3], out=out1);
Or(a=in[4], b=in[5], out=out2);
Or(a=in[6], b=in[7], out=out3);
Or(a=out0, b=out1, out=out4);
Or(a=out2, b=out3, out=out5);
Or(a=out4, b=out5, out=out6);
Not(a=out6, out=out[0]);
    
respondido por el ratchet freak
0

Hay varias maneras de hacer la cosa.

La fórmula principal es

not(A OR B or C or D or ... or Z)

Luego construye el diagrama del circuito real basándose en los elementos lógicos que tiene disponibles .

not( (A or B) or (C or D) or ... or (Y or Z) )

para puertas OR de 2 entradas, o

not( (A or B or C) or (D or E or F) or ... or (X or Y or Z) )

para puertas OR de 3 entradas

not(A) and not(B) and not(C) ... and not (Z)

si tienes muchas puertas NO y una puerta AND enorme.

Por lo tanto, mientras identifique los elementos lógicos que tiene, será posible pensar en el circuito más optimizado.

Sin embargo, si compila utilizando VHDL o Verilog, lo más probable es que no tenga que pensar en puertas y optimizaciones en absoluto: el compilador hará el trabajo por usted. Tu tarea será escribir correctamente la ecuación lógica más legible (lo más probable es que sea la primera en mi lista).

Es importante tener en cuenta que si construyes un circuito lógico de múltiples etapas, los retrasos de propagación de cada etapa (el máximo de ellos en cada etapa) se resumirán.

    
respondido por el Anonymous

Lea otras preguntas en las etiquetas