Praxisleitfaden Retrocomputer · Teil 2

Wie ein 74HC138 einen Speicherchip auswählt

Die CPU gibt jedem Byte eine Adresse. Der 74HC138 macht aus einem Teil dieser Adresse ein Signal, das bestimmt, welcher Chip antworten darf. Gehen wir das Schritt für Schritt durch.

Neu bei Bussen? Beginne mit Teil 1

Warum muss überhaupt etwas ausgewählt werden?

RAM, ROM und I/O-Chips teilen sich die acht Datenleitungen der CPU. Bei einem Lesezugriff darf ein Chip einen Wert auf diese Leitungen legen, während die anderen still bleiben. Deshalb besitzt jeder Chip einen Eingang für Chip Enable oder Chip Select, oft als /CE oder /CS bezeichnet. Einen Baustein auszuwählen heißt, diesen Eingang für seinen zugewiesenen Adressbereich zu aktivieren. Das ist etwas anderes, als ein bestimmtes Byte innerhalb des Chips auszuwählen.

Die CPU hat die Adressleitungen A0 bis A15. Die unteren Leitungen können ein Byte innerhalb eines Speicherchips auswählen. Die oberen können bestimmen, welcher Chip aktiv ist. Ein 74HC138 liest drei binäre Eingänge A, B und C und aktiviert einen von acht Ausgängen. Der Schrägstrich vor einem Ausgangsnamen bedeutet: Low wählt ihn aus.

Zuerst die Pins finden

74HC138-Pinbelegung in Draufsicht mit A, B, C, Freigabeeingängen, acht Ausgängen, Versorgung und Masse.
Draufsicht, mit der Kerbe am Ende von Pin 1. Pinnummern und Funktionen entsprechen dem 16-poligen Gehäusediagramm des Herstellers. Ein Schrägstrich (/) kennzeichnet ein aktiv niedriges Signal.

Für ein einfaches, ständig aktiviertes Beispiel verbindest du Pin 6 (G1) mit High und Pins 4 und 5 (/G2A, /G2B) mit Low. Der Chip braucht Versorgung an Pin 16 und Masse an Pin 8. Setze einen 0,1-µF-Abblockkondensator dicht an diese Versorgungspins. Das sind prinzipielle Verbindungen, kein vollständiger Schaltplan: Prüfe Pegelkompatibilität und Timing vor dem Aufbau.

Adressen in acht Fenster aufteilen

Verbinde CPU A13 mit Dekodereingang A (Pin 1), A14 mit B (Pin 2) und A15 mit C (Pin 3). Warum diese Leitungen? Die unteren 13 Bit, A0–A12, zählen von 0 bis 8191: 8 KB Positionen innerhalb eines Fensters. Die nächsten drei Bit bestimmen, welches der acht Fenster die CPU anspricht.

Y0 · $0000–$1FFF

A15 A14 A13 = 000. Ausgangspin 15 wird Low.

Y1 · $2000–$3FFF

001. Ausgangspin 14 wird Low.

Y2 · $4000–$5FFF

010. Ausgangspin 13 wird Low.

Y3 · $6000–$7FFF

011. Ausgangspin 12 wird Low.

Y4 · $8000–$9FFF

100. Ausgangspin 11 wird Low.

Y5 · $A000–$BFFF

101. Ausgangspin 10 wird Low.

Y6 · $C000–$DFFF

110. Ausgangspin 9 wird Low.

Y7 · $E000–$FFFF

111. Ausgangspin 7 wird Low. Dieser Bereich enthält den Reset-Vektor.

Acht 8-KB-Adressbereiche werden von Y0 bis Y7 ausgewählt; $E000–$FFFF gehört zu Y7.
Mit A15–A13 als Eingängen deckt jeder aktiv niedrige Ausgang ein 8-KB-Fenster ab. Der markierte Bereich enthält $E123.

Die Adresse $E123 durchgehen

  1. Die CPU legt $E123 an A0–A15. Die oberen Bits A15 A14 A13 sind 111.
  2. Der aktivierte 74HC138 zieht /Y7 auf Low (Pin 7). Alle anderen Y-Ausgänge bleiben High.
  3. Wenn ein 8-KB-ROM seinen /CE-Eingang mit Y7 verbunden hat, wird es ausgewählt. Seine eigenen Eingänge A0–A12 sehen $0123, den Offset innerhalb des ROMs.
  4. Beim Lesen kann das ROM das Byte an diesem Offset auf D0–D7 legen. RAM und I/O müssen inaktiv bleiben.
Wichtige Grenzen. Ein 32-KB-Speicherchip ist größer als ein 8-KB-Fenster; ein Y-Ausgang macht nur ein Viertel davon zugänglich. Ein VIA hat weit weniger als 8 KB Register, daher wiederholen („spiegeln“) sich seine Register über das ganze Fenster, sofern du keine weiteren Adressbits dekodierst. Steuere auch die Lese-/Schreibsignale korrekt und prüfe die Signallaufzeiten, damit nie zwei Bausteine gleichzeitig den Datenbus treiben.

Als Nächstes: Wie ein 74HC245 die Richtung eines 8-Bit-Datenbusses steuert, nachdem die Adresse den Baustein ausgewählt hat.

Der Shop bietet einen MC74HC138AD im SOIC-16-SMD-Gehäuse an. Er passt nicht direkt in ein lötfreies Steckbrett; verwende einen Adapter oder ein bedrahtetes Bauteil, wenn das besser zu deinem Aufbau passt.

Retro-ICs ansehen