Bus de datos entre uC y SRAM: ¿qué sucede cuando ambos escriben al mismo tiempo?

Mi comprensión de la interfaz de un chip SRAM estándar es la siguiente: cuando el host quiere escribir, OutputEnable # se eleva para llevar el bus de datos SRAM a High-Z y el host está conduciendo el bus. Al leer, OutputEnable# es bajo y la SRAM está impulsando el bus.

¿Qué sucede si accidentalmente habilito la salida de la SRAM mientras conduzco las salidas en el lado del host al mismo tiempo? ¿Habrá daño físico?

Respuestas (2)

Sí, puede haber daño físico. Cuanto más persista la situación, mayor será la posibilidad de daño. En caso de que este sea un problema que prevea que sucederá a menudo en su configuración, probablemente debería elaborar un mejor esquema o, al menos, incluir una resistencia en serie en cada una de las líneas de datos. La resistencia debe elegirse de tal manera que, en el peor de los casos (ambos lados conducen a una lógica opuesta), la corriente a través de la resistencia debe ser menor que la capacidad de activación actual del IC con la capacidad de activación de corriente más baja. Tenga en cuenta que al hacerlo, definitivamente sacrificará la velocidad a la que el bus de datos es capaz de operar sin la resistencia en serie.

Lo que estás describiendo se llama contención de bus . Personalmente, solo he visto esto causar daño una vez y estaba usando tecnología de la era de los 80 en ese momento. La mayoría de los microcontroladores modernos tienen una lógica de arbitraje de bus incorporada para que esto no suceda cuando son el único maestro. Pero si tiene varios maestros de bus, esto ciertamente puede ocurrir.

Los síntomas más comunes serían fallas o valores incorrectos que se alternan con valores correctos muy rápidamente. Fácilmente podría ver esto con un analizador lógico. Se puede ver con un osciloscopio pero encuentro que es más difícil de identificar como tal.

Con un microcontrolador moderno que actúa como un maestro de bus único, esto rara vez será un problema (suponiendo que deje que el micro maneje la generación OE # y no fuerce el pin usted mismo). Con varios maestros de bus, generalmente coloco un pequeño dispositivo lógico programable (PLD) en el sistema y diseño un árbitro de bus separado para garantizar que esto no suceda.

¡Gracias! Dos respuestas útiles en una hora... No esperaba eso.
@tschaboo Absolutamente. Y solo para su información, por lo general debe esperar al menos 24 horas antes de aceptar una respuesta. Esta es una comunidad mundial, por lo que no todos están conectados al mismo tiempo. Y algunas personas no responderán si ya hay una aceptación. Si espera 24 horas, obtendrá muchas buenas respuestas. ¡Bienvenido a Stack Exchange!