Salida de la puerta XOR con entrada de alta impedancia

1

Uno de los ejercicios en la universidad fue generar una tabla de verdad para la puerta, que toma una entrada

t y devuelve

t ^ t , donde ^ es una puerta xor .

Ahora, si t = 1 o t = 0 , la salida siempre es 0. Además, incluso si la entrada es t = X (no sé), la salida sigue siendo 0.

Lo que no estoy seguro es la respuesta en caso de que una entrada sea Z (alta impedancia).

Supongo que la salida también es Z , porque el cable de salida no está controlado por nada. ¿Alguien podría confirmar / negar esto?

También, cualquier otro ejemplo que use otras puertas (como AND / OR) y valores Z sería apreciado.

    
pregunta mercury0114

4 respuestas

1

Para responder a su pregunta real, no, la salida de una puerta nunca es "Z", a menos que esté específicamente diseñada como una puerta triple con una salida habilitada.

En general, las entradas a las puertas que son "Z" se tratan igual que "X", y la salida es "0", "1" o "X", según corresponda.

Para el caso específico del XOR con sus entradas unidas, su declaración original de que la entrada "X" da la salida "0" es correcta, aunque muchos simuladores lógicos de mentalidad simple se equivocan. El problema es que no pueden distinguir entre dos entradas que son el mismo valor desconocido versus dos independientes valores desconocidos.

    
respondido por el Dave Tweed
0
  

Ahora si t = 1 o t = 0, la salida siempre es 0. Además, incluso si la entrada es t = X (no sé), la salida sigue siendo 0.

Esto es incorrecto. Si no sabes cuál es la entrada a una puerta, ¡ciertamente no sabes su salida! Si cualquiera de las entradas es X, la salida también debería ser X.

De todas formas, el comportamiento de una compuerta lógica cuando se le da una entrada de alta impedancia (flotante) no está definido. Dependiendo del circuito específico y de la familia lógica en uso, la entrada puede flotar alto o bajo, permanecer en su nivel definido más reciente o incluso oscilar. Ninguno de estos comportamientos será confiable, y la mejor respuesta es probablemente "no hagas eso". :)

Sin embargo, desde la perspectiva de los valores de Verilog, la respuesta correcta aquí es probablemente "desconocida" nuevamente (X).

    
respondido por el duskwuff
0

El estado "No importa" o "X" se aplica solo a las entradas y se usa para indicar que la salida del circuito no cambiará, independientemente del estado de la entrada X.

Por ejemplo, considere un AND con una entrada baja, y se hace evidente que no importa cuántas otras entradas haya en la puerta, todas serán "No importa" porque la salida se mantendrá baja sin importar qué estados toman las entradas X.

Lo mismo ocurre con un OR con cualquier entrada alta, ya que la salida se mantendrá alta independientemente de los estados de las entradas X.

La "Z" casi siempre se refiere a las salidas que se han colocado en un estado de alta impedancia o "flotante" para, por ejemplo, renunciar al control de un bus para compartir recursos de manera económica.

Si se usa para describir una entrada, es casi seguro que se refiere a una entrada a la que se le ha permitido flotar, que no está permitida o, en el mejor de los casos, está mal vista.

    
respondido por el EM Fields
0

Para complementar la respuesta de @Dave Tweed:

  • Durante simulación :

    "t XOR t" da una respuesta x cuando t está asignado a x. Esto se hace evidente por la siguiente observación que

    a XOR b 
    

    es equivalente a

    (a and !b) or (!a and b)
    

    Las tablas de verdad de cuatro sistemas lógicos (en lenguaje SystemVerilog) son tales que

    not x = x
    x and x = x
    x or x = x
    

    de donde se puede deducir el valor de "t XOR t" vinculando a y b a t.

    Lo mismo sucede con el valor z: "z XOR z = x"

    (En la simulación, x se conoce como no importa .)

  • En hardware real

    El sintetizador produce la puerta XOR real. X como valor ya no existe y se reemplaza por 0 o 1. Aunque no se puede estar seguro de cuál de los dos valores se utiliza, la salida de una compuerta XOR será cero. Uno puede ver eso en el ejemplo:

    reg [9 : 0] ten_values;
    assign ten_values = 10'b00_11_xx_zz_xz;
    assign LEDR = (ten_values ^ ten_values) ^ 10'b11_11_11_11_11;
    

    Este es el código para programar de1_soc (un FPGA que también contiene 10 LEDS). Se supone que el I-th LED se enciende solo si el LEDR [i] es alto. Después de descargar el código compilado a FPGA, el resultado fue que todos los leds estaban encendidos . Por lo tanto, esto muestra que la entrada XOR-ed consigo misma siempre da 0, independientemente de su valor.

    (Después de la síntesis, x se conoce como no sé .

    Once the circuit design is complete and a real circuit is
    constructed, the "X" values will no longer exist. They will become
    some tangible "0" or "1" value but could be either 
    depending on the final design optimisation.
    

    Párrafo de Wikipedia enlace )

Conclusión :     los resultados durante la simulación (x XOR x = x) pueden diferir de los resultados en un chip real (x XOR x = 0 si ambos x provienen de la misma fuente).

    
respondido por el mercury0114

Lea otras preguntas en las etiquetas