Bus abilitato circuito integrato


8

Sto giocando con la progettazione di una semplice CPU a 8 bit dai componenti logici di base. Ho una buona idea di come interagiranno il mio ALU e i registri, ma l'unica cosa che sento di poter usare per migliorare è come attivare o disattivare la connessione di una linea al bus dati principale.

Il mio pensiero iniziale era di usare e cancelli per guidare l'autobus. L'output dalle varie linee nell'ALU potrebbe andare in un insieme di chip quad-AND che vengono inviati al bus. Solo un set di porte AND alla volta avrebbe tutti i suoi ingressi B tirati in alto per farlo uscire sul bus.

Un paio di cose di cui non sono sicuro: sembra inutile usare otto porte AND complete per linea, quando ho bisogno solo di una linea di controllo. C'è un chip migliore più adatto a questo scopo? Sono sicuro di poterlo fare anche con otto transistor, ma vorrei attenermi a circuiti integrati abbastanza comuni (ed economici).

Una soluzione come questa consente solo il flusso dei dati in una direzione dal bus. È un problema? Non credo, dato che ho altre linee di controllo che impediscono ai registri di caricare i dati del bus fino a quando non li voglio.

Esiste un chip standard da utilizzare per un gate di autobus come questo?

Risposte:


11

Il 74HC244 è il dispositivo tipico per la connessione / disconnessione da un bus. È un buffer a tre stati ottali (o piuttosto un buffer a doppio quadrante). Avrai bisogno della funzione tri-state per disconnetterti completamente dal bus. Le porte imposteranno il bus su o giù, ma ciò non consentirebbe un altro dispositivo su di esso.

Ma dal momento che stai parlando di un bus dati probabilmente vuoi un buffer bidirezionale . Quindi è possibile utilizzare 74HC245 .

74HC245

Hai un DIRpin per controllare la direzione e un /OEche può rendere tri-stato del buffer.

modifica
JustJeff menziona il flip-flop D tri-stato ottale 74HC374. ( Nota: parlerò del 74HC574, che è funzionalmente lo stesso, ma ha una piedinatura più logica. ) Il 74HC574 è davvero una parte interessante e un classico dalla serie SN74xx. Mentre il 74HC245 fornisce un buffer a tre stati, anche il 74HC574 ha una funzione di memoria , sotto forma di un flip-flop ottale D. Ottimo per creare registri e attraverso la connessione in tre stati al bus è possibile instradare facilmente il flusso di dati.
C'è un inconveniente in questo, tuttavia. L'output del registro è disponibile solo per il bus, quindi tutte le comunicazioni dovrebbero passare lì, in modo che il bus diventi un collo di bottiglia. Quindi penso che sia meglio sostituire il 74HC374 con un flip-flop D ottale 74HC273 seguito da un buffer a tre stati 74HC244 separato per la connessione al bus. In questo modo l'uscita del registro è disponibile anche internamente quando qualche altro segnale occupa il bus. (Non so se esiste una parte compatibile con la funzione con il pinout più logico. Puoi anche usare un 74HC574 con /OEhardwired a terra.)


Sembra fantastico! Non sono ancora sicuro di come i miei registri interagiranno con il bus, ma sospetto che quelli bidirezionali possano esservi d'aiuto.
captncraig,

@CMP - in una situazione come la descrivi - costruire una CPU da zero - le uscite a tre stati sono i tuoi amici. Ad esempio, 74hc374 è un registro a 8 bit che fornisce un'uscita tri-stateable nello stesso chip. Puoi mettere insieme le uscite di molti di questi e semplicemente affermare l'OE di quello che vuoi "sul bus".
JustJeff,

Vale la pena notare che molte CPU avevano infatti dei registri che potevano solo prendere input o inviare output da / verso bus condivisi (in molti casi, input da un bus; output su un altro). Sebbene un tale design possa in alcuni casi essere un collo di bottiglia, non credo che l'obiettivo qui sia competere con un i7. Si noti che se si desidera che un registro prenda l'input da un bus e venga emesso selettivamente su due bus diversi, si potrebbe usare un 74HC273 e due 74HC244, ma si potrebbe fare il lavoro con solo due 74HC574 che bloccano gli stessi dati.
supercat

5

(1) I gate AND sono intrinsecamente inadatti per essere comuni come buffer di bus trasparenti perché se hanno driver di output completamente attivi interagiscono e se "open collector" la logica si inverte.

È possibile utilizzare porte OR a 2 ingressi open collector come driver a linea singola per un bus comune.

Se si alimentano "dati" e "not_enable" a un gate OR l'output sarà alto se not_enable è alto e seguirà i dati se not_enable è basso.

Quando l'uscita di una porta open collector è elevata, non carica il bus in alcun modo. Quando è basso, carica il bus con un'uscita bassa attivata. Pertanto, più porte O open collector possono condividere il bus e solo quelle abilitate (di solito una alla volta) possono guidare il bus. È necessario un singolo pullup per tirare in alto il bus e un numero qualsiasi di gate per abbassarlo.

(2) EDUC-8 era / è un microcomputer basato su TTL a 8 bit presentato come progetto di più mesi nella rivista Electronics Australia dall'agosto 1974 all'agosto 1975. Anche se non volessi copiarlo, puoi imparare molto osservando come è stato implementato. Ci sono vari appassionati che hanno costruito copie negli ultimi anni.

Documentazione molto estesa del percorso EDUC-8 di un utente ... Stesso ... Include i dettagli della sua produzione di PCB per trasferimento toner dei vari PCB latrgsih e molto altro ancora.

Wikipedia EDUC-8

Pagina dei collegamenti

Alcuni documenti

Immagine PCB

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.