Busfreigabe integrierte Schaltung

8

Ich spiele mit dem Entwerfen einer einfachen 8-Bit-CPU aus grundlegenden Logikkomponenten. Ich habe eine ziemlich gute Vorstellung davon, wie meine ALU und Register interagieren werden, aber das einzige, was meiner Meinung nach verbessert werden kann, ist das Umschalten, wenn eine Leitung mit dem Hauptdatenbus verbunden werden darf.

Mein erster Gedanke war, Tore zu benutzen, um den Bus zu fahren. Die Ausgabe von den verschiedenen Leitungen in der ALU könnte alle in einen Satz von Quad-AND-Chips gehen, die auf den Bus ausgegeben werden. Nur ein Satz von UND-Gattern gleichzeitig würde alle seine B-Eingänge hochziehen, um ihn auf den Bus herauszulassen.

Ein paar Dinge, bei denen ich mir nicht sicher bin: Es scheint verschwenderisch, acht vollständige UND-Gatter pro Leitung zu verwenden, wenn nur eine Steuerleitung erforderlich ist. Gibt es einen besseren Chip, der für diesen Zweck besser geeignet ist? Ich bin mir sicher, dass ich es auch mit acht Transistoren machen könnte, aber ich würde gerne bei ziemlich üblichen (und billigen) ICs bleiben.

Mit einer solchen Lösung können Daten nur in eine Richtung vom Bus fließen. Ist das ein Problem? Ich denke nicht, da ich andere Steuerleitungen habe, die verhindern, dass Register die Busdaten laden, bis ich möchte, dass sie es tun.

Gibt es einen Standardchip für ein solches Bus-Gate?

captncraig
quelle

Antworten:

11

Der 74HC244 ist das typische Gerät zum Anschließen / Trennen von einem Bus. Es ist ein oktaler Tri-State-Puffer (oder vielmehr ein Dual-Quad-Puffer). Sie benötigen die Tri-State-Funktion, um die Verbindung zum Bus vollständig zu trennen. Die Tore würden den Bus hoch oder niedrig stellen, aber das würde kein anderes Gerät darauf zulassen.

Da es sich jedoch um einen Datenbus handelt, möchten Sie wahrscheinlich einen bidirektionalen Puffer. Dann können Sie den 74HC245 verwenden .

74HC245

Sie haben einen DIRPin zur Steuerung der Richtung und einen, /OEder den Puffer in drei Zustände versetzen kann.

edit
JustJeff erwähnt das 74HC374 Oktal Tri-State D Flip-Flop. ( Hinweis: Ich werde über den 74HC574 sprechen, der funktional identisch ist, aber eine logischere Pinbelegung aufweist. ) Der 74HC574 ist in der Tat ein interessanter Teil und ein Klassiker seit der SN74xx-Serie. Während der 74HC245 einen Drei-Zustands-Puffer liefert, verfügt der 74HC574 auch über eine Speicherfunktion in Form eines oktalen D-Flip-Flops. Hervorragend geeignet, um Register zu erstellen, und über die Drei-Zustands-Verbindung zum Bus können Sie Ihren Datenfluss problemlos weiterleiten.
Dies hat jedoch einen Nachteil. Der Ausgang des Registers steht nur dem Bus zur Verfügung, sodass die gesamte Kommunikation dort stattfinden müsste, damit der Bus zu einem Flaschenhals wird. Daher denke ich, dass es besser ist, den 74HC374 durch ein 74HC273- Oktal-D-Flip-Flop zu ersetzen, gefolgt von einem separaten 74HC244-Tri-State-Puffer für die Verbindung zum Bus. Auf diese Weise ist der Ausgang des Registers auch intern verfügbar, wenn ein anderes Signal den Bus belegt. (Ich weiß nicht, ob es einen funktionskompatiblen Teil mit der logischeren Pinbelegung gibt. Sie können auch einen 74HC574 mit /OEfestverdrahteter Erdung verwenden .)

stevenvh
quelle
Das sieht gut aus! Ich bin mir noch nicht sicher, wie meine Register mit dem Bus interagieren werden, aber ich vermute, dass die bidirektionalen dort helfen werden.
Captncraig
@CMP - in einer Situation, wie Sie sie beschreiben - eine CPU von Grund auf neu erstellen - Tri-State-Ausgänge sind Ihre Freunde. Zum Beispiel ist der 74hc374 ein 8-Bit-Register, das eine tristatifizierbare Ausgabe in demselben Chip liefert. Sie können die Ausgänge mehrerer dieser Busse zusammen bündeln und einfach die OE des gewünschten "auf dem Bus" aktivieren.
JustJeff
Es ist erwähnenswert, dass viele CPUs tatsächlich Register hatten, die nur Eingaben empfangen oder Ausgaben von / an gemeinsam genutzte Busse senden konnten (in vielen Fällen Eingaben von einem Bus; Ausgabe auf einem anderen). Während ein solches Design in einigen Fällen ein Engpass sein kann, denke ich nicht, dass das Ziel hier darin besteht, mit einem i7 zu konkurrieren. Beachten Sie, dass, wenn ein Register Eingaben von einem Bus entgegennehmen und selektiv an zwei verschiedene Busse ausgegeben werden soll, ein 74HC273 und zwei 74HC244 verwendet werden können, die Aufgabe jedoch nur mit zwei 74HC574 ausgeführt werden kann, die dieselben Daten speichern.
Supercat
5

(1) UND-Gatter sind von Natur aus ungeeignet für die gemeinsame Nutzung als transparente Buspuffer, da sie interagieren, wenn sie voll aktive Ausgangstreiber haben, und wenn "Open Collector" die Logik invertiert.

Sie können ODER- Gatter mit offenem Kollektor und zwei Eingängen als Einleitungstreiber für einen gemeinsamen Bus verwenden.

Wenn Sie "data" und "not_enable" einem ODER-Gatter zuführen, ist der Ausgang hoch, wenn not_enable hoch ist, und folgt den Daten, wenn not_enable niedrig ist.

Wenn der Ausgang eines Open-Collector-Gates hoch ist, wird der Bus in keiner Weise belastet. Wenn es niedrig ist, lädt es den Bus mit einem eingeschalteten niedrigen Ausgang. So können mehrere Open-Collector-O-Gates den Bus gemeinsam nutzen, und nur aktivierte (normalerweise jeweils eines) können den Bus ansteuern. Sie benötigen einen einzelnen Pullup, um den Bus hoch zu ziehen, und eine beliebige Anzahl von Gates, um ihn niedrig zu fahren.

(2) EDUC-8 war / ist ein 8-Bit-TTL-basierter Mikrocomputer, der von August 1974 bis August 1975 als mehrmonatiges Projekt in der Zeitschrift Electronics Australia vorgestellt wurde. Selbst wenn Sie ihn nicht kopieren wollten, können Sie viel lernen, indem Sie sich ansehen, wie er funktioniert wurde implementiert. Es gibt verschiedene Enthusiasten, die in den letzten Jahren Kopien gebaut haben.

Sehr umfangreiche Dokumentation der EDUC-8-Reise eines Benutzers ... Gleiche ... Enthält Details zu seiner Tonerübertragungs-Leiterplattenherstellung der verschiedenen latrgsih-Leiterplatten und vieles mehr.

Wikipedia EDUC-8

Links Seite

Einige Dokumentationen

PCB-Image

Russell McMahon
quelle