Usando un Mux para cambiar entre leer y conducir un cable

1

He estado haciendo un poco de google y parece que no puedo encontrar una respuesta para esto. La forma en que entiendo un mux es que es básicamente un interruptor de 2 vías. Entiendo que se usa principalmente para seleccionar entradas para una sola salida.

Estoy tratando de implementar un sistema Verilog en un FPGA que puede conducir una señal a un pin y también leer el nivel de voltaje de ese pin. ¿Puedo usar un mux para cambiar entre conducir la señal y también leer desde ese mismo pin?

No intentaré leer y conducir la señal al mismo tiempo. El nivel de voltaje de esa señal básicamente determinará si tengo la intención de conducir ese pin.

    
pregunta maknelly

3 respuestas

2

Quieres un búfer de E / S de tres estados, no un mux. Este tipo de cosas se hacen en Verilog todo el tiempo:

module tristate(pin, in, out, oe);
    inout wire pin;
    output wire in;
    input wire out;
    input wire oe;

    assign in = pin;
    assign pin = oe ? out : 1'bz;
endmodule
    
respondido por el alex.forencich
0

El que está hablando es un IO bidireccional. Tienes que declarar la señal deseada como inout y usar un búfer de tres estados. Puede leer el puerto de entrada en todo momento y realizar el procesamiento independientemente de si lo está utilizando como entrada o salida.

El búfer Tristate se usa para evitar la colisión de datos entre los datos de salida y los datos de entrada externos. Cuando está esperando datos de entrada externos, debe desactivar el búfer de tres estados para evitar la colisión de datos.

    
respondido por el nsuresheee
0

Generalmente dentro de un FPGA, para cada nodo en el circuito habrá una única puerta que siempre es responsable de conducirlo; todo lo demás conectado a ese nodo lo considerará como una "entrada". Aunque es común que las conexiones entre chips usen un solo pin para entrada y salida, eso no se hace dentro de un FPGA. En su lugar, en el límite del chip habrá un circuito que toma dos o más señales de entrada de las entrañas del FPGA que dicen si debería emitir algo y, de ser así, qué (y posiblemente qué tan fuerte), y emitirá una señal a Las agallas del FPGA indican si hay una señal alta o baja en el pin. El pin que se conecta al mundo exterior será bidireccional, pero todo en el lado de FPGA de la interfaz será unidireccional.

Hay algunos tipos de lógica donde este tipo de diseño puede ser un poco restrictivo. Por ejemplo, si uno quisiera leer 8 bits de datos de uno de los 64 dispositivos, tener un bus de 8 hilos que esté conectado a todos los dispositivos y que uno de los dispositivos envíe datos de salida a ese bus (utilizando un total de 512 Las compuertas de paso y 128 compuertas NOR de 6 entradas, junto con y 20 cables que interconectan los dispositivos [enviar direcciones en forma verdadera y complementaria], pueden ser más eficientes que tener que enrutar 8 grupos de cuatro señales a cada uno de 128 4- muxes de entrada, y luego ejecute las salidas de esos a 32 muxes de 4 entradas más, cuyas salidas alimentarían ocho muxes de 4 entradas más (un total de 164 muxes de 4 entradas, más una gran cantidad de cableado de interconexión). Sin embargo, tener todas las entradas siempre conectadas a una única salida evita problemas de contención de datos y, en general, funciona bastante bien.

    
respondido por el supercat

Lea otras preguntas en las etiquetas