Conexión de un circuito de 3.3V a un bus de 5V

2

Me gustaría conectar un circuito de 3.3V (no tolerante a 5V) (un FPGA Xilinx XC3S200) a un bus de 16 bits asíncrono de 5V de nivel TTL (muy similar al qbus) con aproximadamente 30 líneas principalmente bidireccionales. (El bus pertenece a un equipo doméstico Elektronika BK-0011 con una CPU KM1801VM1 de 4 MHz, similar a las CPU LSI-11).

Estaba pensando en usar el simple circuito de cambio de nivel bidireccional FET de NXP / Philips AN97055 . ¿Es esta una buena idea? ¿Qué sería un buen MOSFET para usar? Muchos de ellos parecen tener capacidades de entrada / salida bastante altas, lo que podría ser un problema con los tiempos de subida. ¿Hay otros circuitos que valga la pena considerar?

El FPGA tiene resistencias pull-up incorporadas configurables (aproximadamente 3 kΩ) y BK tiene resistencias pull-up de 2.2 kΩ en cada línea, ¿puedo omitir las resistencias en el circuito de cambio de nivel?

    
pregunta aiju

3 respuestas

2

El cambio de nivel bidireccional en un bus de este tipo por lo general implica pedir problemas.

La nota a la que te vinculaste en tu pregunta habla sobre "bus I2C y sistemas similares", lo que básicamente significa que se trata de líneas de drenaje abiertas. Esto suele ser NO en el caso de líneas paralelas anchas de alta velocidad, donde el drenaje abierto generalmente es demasiado lento para poder operar a esas velocidades. Ambos lados conducen el autobús.

Puede ver el TXB0108 de TI y esa familia de conductores bidireccionales. Estos son los más cercanos que he visto a lo que quieres hacer, pero tengo la sensación de que no funcionarán. Los buses bidireccionales como este básicamente usan el hecho de que el lado que quiere controlar la línea hace que las líneas del bus sean más duras que la fuerza de la unidad de salida del búfer. En la práctica, con un bus paralelo de este tipo, es poco probable que sea así. Si la memoria sirve, necesita 2 mA de fuerza de la unidad en sus líneas de E / S en ambos lados para que puedan anular la salida del búfer. Esto no es algo que deba asumir para sus dispositivos. De hecho, apostaría a que simplemente conectar las líneas pin a pin probablemente no hará el trabajo.

En el mundo real, realmente no hay muchos autobuses verdaderamente bidireccionales. Debe mirar detenidamente sus líneas (reclama 30 líneas para un bus de 16 bits de ancho - mire cuidadosamente las otras 14). Muchas de esas líneas pueden no ser realmente direccionales. Una vez que decida qué lado es el Maestro y cómo se distribuye el autobús, debería ser posible especificar la dirección de la mayoría de esas 14 líneas. Además, utilizando la lógica y una combinación de esas 14 líneas, también debería poder especificar la dirección de las 16 líneas de datos. Utilice esta señal, construida a partir de una combinación lógica de sus líneas de control, para cambiar la dirección de un búfer de traducción de nivel regular. Muchos de ellos cambiarán lo suficientemente rápido para que parezca que la traducción es transparente. Para estar seguro, sugeriría una pequeña serie de resistencias en serie con todas las líneas para lidiar con las posibles condiciones de carrera en el cambio: los controladores de salida de sus circuitos integrados y los del búfer tardarán un tiempo diferente en responder, ya menos que dejar un montón de tiempo muerto en el medio verá una contención de autobús. Las resistencias en serie limitarán la corriente a través de las líneas de bus a través de estos transitorios. Sin embargo, mantenga estas resistencias lo más bajas posible, ya que limitarán la velocidad del bus por su cuenta.

    
respondido por el Chintalagiri Shashank
0

Encontré el ADG3300 mientras investigaba en el cambio de nivel. Tiene una capacitancia de compuerta baja, propagación del búfer en las decenas bajas de ns (y puede funcionar a 50Mbps con 5V / 3V3), y no requiere partes externas más que los condensadores de bypass.

    
respondido por el Ignacio Vazquez-Abrams
-1

Puede usar un traductor de nivel simple, como este SN74LVC2T45 para lograrlo.

Si solo trae líneas de estado, o algunas líneas de baja velocidad y tiene NFET alrededor (posiblemente en otro lugar de su circuito, y desea usar la misma parte) puede usar lo siguiente. El único inconveniente es que quemará algo de energía (a través de la resistencia de pull-up) cuando el estado del bus sea bajo. También invierte la lógica, pero puede compensar eso en un FPGA.

Los Vgs de su NFET deben ser menores que el más bajo de los dos voltajes del sistema, en este caso, menores a + 3.3V

simular este circuito : esquema creado usando CircuitLab

    
respondido por el EEToronto

Lea otras preguntas en las etiquetas