¿Cómo funciona un bus AND/OR cableado?

Estudiar para un examen Observar buses de datos usando configuraciones cableadas Y y cableadas O.

Usando la lógica de tres estados, un dispositivo puede obtener el control del bus y transmitir cualquier cosa por él.

No entiendo Cableado Y o Cableado O. La forma en que entiendo Wired AND en este momento: ningún dispositivo tiene control del Bus y la salida permanece a un voltaje constante (digamos 5V) si ningún dispositivo intenta usar el bus. Sin embargo, cuando un dispositivo intenta usar el bus, la línea se pondrá a 0V. Ahora, si algún dispositivo intenta usar el bus al mismo tiempo, nunca estará claro qué dispositivo está transmitiendo.

También se supone que Wired AND está activo alto, sin embargo, cuando un dispositivo usa el bus, la línea baja. Hubiera pensado que esto era activo bajo.

Respuestas (2)

"Sin embargo, cuando un dispositivo intenta usar el bus, la línea se reducirá a 0 V".
Eso es exactamente: el bus está alto solo si todos los dispositivos lo configuran alto. Al igual que en una puerta AND, la salida es alta solo si todas las entradas son altas.

La lógica de tres estados no es la forma de controlar el bus; si un dispositivo lo establece alto y otro lo establece bajo, tiene un cortocircuito. Por lo general, hay un pull-up pasivo, que mantiene el autobús en su nivel alto. Cada dispositivo controla un FET de drenaje abierto para bajarlo.
Como dijiste, en esta configuración no hay forma de determinar cuántos dispositivos lo están bajando simultáneamente.

De hecho, esta es una lógica alta activa: para la función AND, el bus está activo (alto) si todas las entradas están activas (alto). Si un dispositivo baja el bus, solo le está poniendo un nivel bajo.

En un caso de uso común para un bus con cable AND/wired-OR, existen otros medios además del bus por los cuales los dispositivos pueden indicar si desean atención. Si hay cinco dispositivos que pueden requerir atención pero un procesador tiene un solo pin de interrupción, una solución común sería hacer que el pin de interrupción active algún código que le preguntará a cada dispositivo si desea atención (y si es así, repararlo) . Si el pin aún está bajo después de que se hayan sondeado todos los dispositivos, el ciclo de sondeo se repetirá (en caso de que un dispositivo que no quería atención cuando se sondeó por primera vez decida que quiere atención mientras se repara un dispositivo posterior).

En general, se usará un bus AND con cable/OR con cable cuando a menudo no habrá dispositivos que requieran atención y cuando sea útil optimizar para ese caso. Sería posible prescindir de las interrupciones y simplemente hacer que el código consulte repetidamente cada dispositivo de E/S para ver si necesita atención incluso cuando ninguno lo hace, pero a menudo es mucho más útil tener código haciendo otras cosas cuando ningún dispositivo necesita atención.

Por cierto, otro enfoque para usar un bus que está configurado eléctricamente para la operación con cable Y/O con cable es hacer que los dispositivos solo controlen la línea cuando se les dirija explícitamente y se les solicite que lo hagan. Sin embargo, a pesar de la similitud eléctrica, tales configuraciones a menudo no se denominan buses AND-AND/OR-wired, ya que no hay posibilidad (cuando las cosas funcionan como se espera) de combinar señales de fuentes desconocidas.

Como ejemplo, la línea Slave Select de dispositivos SPI se usa a menudo para direccionar explícitamente dispositivos que comparten un bus SPI común.
@ajs410: SPI con un retorno de datos compartido sería un ejemplo de varios dispositivos que comparten un cable común, pero solo hablan sobre él cuando se abordan. Creo que la mayoría de los dispositivos SPI usan salidas de 3 estados, lo que excluye el comportamiento de cable o, pero dado que están en la categoría de bus que generalmente no se llamaría cable Y/cable O, eso realmente no importa.