Circuito integrado de habilitación de bus

Estoy jugando con el diseño de una CPU simple de 8 bits a partir de componentes lógicos básicos. Tengo una idea bastante buena de cómo interactuarán mi ALU y los registros, pero lo único que creo que puede mejorar es cómo alternar cuando se permite que una línea se conecte al bus de datos principal.

Mi idea inicial fue usar puertas para conducir el autobús. La salida de las diversas líneas en la ALU podría ir a un conjunto de chips AND cuádruples que salen al bus. Solo un conjunto de compuertas AND a la vez tendría todas sus entradas B en alto para dejarlo salir al bus.

Un par de cosas de las que no estoy seguro: parece un desperdicio usar ocho compuertas AND completas por línea, cuando solo necesito una línea de control. ¿Hay un chip mejor que se adapte a este propósito? Estoy seguro de que también podría hacerlo con ocho transistores, pero me gustaría seguir con circuitos integrados bastante comunes (y baratos).

Una solución como esta solo permite que los datos fluyan en una dirección desde el bus. ¿Es esto un problema? Creo que no, ya que tengo otras líneas de control que impiden que los registros carguen los datos del bus hasta que yo lo desee.

¿Hay un chip estándar para usar en una puerta de autobús como esta?

Respuestas (2)

El 74HC244 es el dispositivo típico para conectarse/desconectarse de un bus. Es un búfer de tres estados octal (o más bien un búfer cuádruple dual). Necesitará la función de tres estados para desconectarse completamente del autobús. Las puertas pondrían el autobús alto o bajo, pero eso no permitiría que otro dispositivo entrara en él.

Pero dado que está hablando de un bus de datos, probablemente desee un búfer bidireccional . Entonces puedes usar el 74HC245 .

74HC245

Tiene un DIRpin para controlar la dirección y uno /OEque puede hacer que el búfer tri-estado.

editar
JustJeff menciona el flip-flop octal tri-state D 74HC374. ( Nota: hablaré sobre el 74HC574, que es funcionalmente el mismo, pero tiene un pinout más lógico ). El 74HC574 es de hecho una parte interesante y un clásico desde la serie SN74xx. Mientras que el 74HC245 le proporcionará un búfer de tres estados, el 74HC574 también tiene una función de memoria , en forma de un flip-flop octal D. Genial para hacer registros, y a través de la conexión de tres estados al bus puede enrutar su flujo de datos fácilmente.
Sin embargo, hay un inconveniente en esto. La salida del registro solo está disponible para el bus, por lo que toda la comunicación tendría que pasar por allí, por lo que el bus se convertirá en un cuello de botella.. Por lo tanto, creo que es mejor reemplazar el 74HC374 por un flip-flop octal D 74HC273 seguido de un búfer de tres estados 74HC244 separado para la conexión al bus. De esa forma, la salida del registro también está disponible internamente cuando alguna otra señal ocupa el bus. (No sé si hay una parte compatible con la función con el pinout más lógico. También puede usar un 74HC574 con /OEcableado a tierra).

¡Eso se ve genial! Todavía no estoy seguro de cómo mis registros interactuarán con el bus, pero sospecho que los bidireccionales ayudarán allí.
@CMP: en una situación como la que describe, construyendo una CPU desde cero, las salidas de tres estados son sus amigos. Por ejemplo, el 74hc374 es un registro de 8 bits que proporciona una salida triestable en el mismo chip. Puede conectar las salidas de varios de estos juntos, y simplemente afirmar el OE del que desea "en el autobús".
Vale la pena señalar que, de hecho, muchas CPU tenían registros que solo podían recibir entradas o enviar salidas desde/hacia buses compartidos (en muchos casos, entrada desde un bus; salida en otro). Si bien dicho diseño puede ser un cuello de botella en algunos casos, no creo que el objetivo aquí sea competir con un i7. Tenga en cuenta que si desea que un registro tome la entrada de un bus y se envíe de forma selectiva a dos buses diferentes, podría usar un 74HC273 y dos 74HC244, pero podría hacer el trabajo con solo dos 74HC574 que enganchen los mismos datos.

(1) Las puertas AND son intrínsecamente inadecuadas para el uso común como búferes de bus transparentes porque si tienen controladores de salida completamente activos, interactúan, y si son de "colector abierto", la lógica se invierte.

Puede usar compuertas OR de 2 entradas de colector abierto como controladores de línea única para un bus común.

Si alimenta "datos" y "not_enable" a una puerta OR, la salida será alta si not_enable es alto y seguirá los datos si not_enable es bajo.

Cuando la salida de una puerta colectora abierta es alta, no carga el bus de ninguna manera. Cuando está bajo, carga el bus con una salida baja activada. Por lo tanto, varias puertas O de colector abierto pueden compartir el bus y solo las habilitadas (generalmente una a la vez) pueden conducir el bus. Necesita un solo pull-up para subir el autobús y cualquier cantidad de puertas para bajarlo.

(2) EDUC-8 fue/es una microcomputadora basada en TTL de 8 bits presentada como un proyecto de varios meses en la revista Electronics Australia desde agosto de 1974 hasta agosto de 1975. Incluso si no quisiera copiarlo, podría aprender mucho observando cómo funciona. Fue implementado. Hay varios entusiastas que han construido copias en los últimos años.

Documentación muy extensa del viaje EDUC-8 de un usuario ... Lo mismo... Incluye detalles de su PCB de transferencia de tóner, fabricación de varios PCB latrgsih y mucho, mucho más.

WikipediaEDUC-8

página de enlaces

Algo de documentación

imagen de placa de circuito impreso