Bus habilita circuito integrado

8

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 mis 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 pensamiento inicial fue usar puertas para conducir el autobús. La salida de varias líneas en la ALU podría ir a un conjunto de chips quad-AND que salen al bus. Solo un conjunto de compuertas AND a la vez tendría todas sus entradas B elevadas para dejarlas salir en el 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 más adecuado para 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 quiera.

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

captncraig
fuente

Respuestas:

11

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

Pero como estás hablando de un bus de datos, probablemente quieras un búfer bidireccional . Entonces puedes usar el 74HC245 .

74HC245

Tiene un DIRpin para controlar la dirección y /OEpuede hacer que el búfer tenga tres estados.

editar
JustJeff menciona el flip-flop octal D tri-estado 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 dará un búfer de tres estados, el 74HC574 también tiene una función de memoria , en forma de flip-flop octal D. Excelente 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 allí, para que el bus se convierta 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 manera, 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 fijo a tierra).

stevenvh
fuente
¡Eso se ve genial! Todavía no estoy seguro de cómo interactuarán mis registros con el autobús, pero sospecho que los bidireccionales ayudarán allí.
captncraig
@CMP - en una situación como la que usted 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 de tres estados en el mismo chip. Puede conectar las salidas de varios de estos juntos, y simplemente afirmar el OE del que desea "en el bus".
JustJeff
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 en algunos casos ser un cuello de botella, no creo que el objetivo aquí sea competir con un i7. Tenga en cuenta que si uno desea que un registro tome la entrada de un bus y se envíe selectivamente a dos buses diferentes, uno podría usar un 74HC273 y dos 74HC244, pero uno podría hacer el trabajo con solo dos 74HC574 que traban los mismos datos.
supercat
5

(1) Las compuertas AND son inherentemente inadecuadas para ser utilizadas como memorias intermedias de bus transparentes porque si tienen controladores de salida completamente activos interactúan, y si "colector abierto" la lógica se invierte.

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

Si alimenta "data" y "not_enable" a una compuerta OR, la salida será alta si not_enable es alta y seguirá los datos si not_enable es baja.

Cuando la salida de una compuerta de colector abierto es alta, no carga el bus de ninguna manera. Cuando está bajo, carga el bus con una salida baja activada. Por lo tanto, múltiples compuertas O de colector abierto pueden compartir el bus y solo las habilitadas (generalmente una a la vez) pueden conducir el bus. Necesitas un solo pullup para elevar el bus y cualquier número de puertas para bajarlo.

(2) EDUC-8 fue / es un microordenador basado en TTL de 8 bits presentado 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 mirando cómo 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 fabricación de PCB de transferencia de tóner de varios PCB latrgsih y mucho más.

Wikipedia EDUC-8

Página de enlaces

Alguna documentación

Imagen de PCB

Russell McMahon
fuente