Hallo zusammen,
ich stecke gerade bei der Entwicklung einer Speicherlogik fest. Ich habe einen Adressraum von 64 Kb und ich möchte bei verschiedenen Adressbereichen auf einen anderen Speicherchip umschalten. Der Adressbus ist 16 Bit breit, die oberen 3 Bit sollen und ich möchte folgendermaßen vorgehen:
Die oberen 3 Bit (Bit 14-16) kämen für die Chipauswahllogik in Frage.
Chip 1: Adressbereich $0000 - $7FFF, (Bitmuster 000) = 32 Kb
Chip 2: Adressbereich $8000 - $BFFF, (Bitmuster 100) = 16 Kb
Chip 3: Adressbereich $C000 - $DFFF, (Bitmuster 110) = 8 Kb
Chip 4: Adressbereich $E000 - $FFFF, (Bitmuster 111) = 8 Kb
Ich benötige für den jeweils zu aktivierenden Chip ein /CS-Signal (Chipselect, active low). Bei der Umsetzung hatte ich zunächst an den Multiplexer 74HC139 gedacht, da bin ich jedoch gescheitert. Es gibt ja neben den oben beschriebenen Zuständen weiter Zustände, die dazu führen würden, dass die /CS-Signalen für die genannten Adressbereiche nicht vorhanden wären:
Beispiele:
Bitmuster 001 = $2000 ff.
Bitmuster 010 = $4000 ff.
Bitmuster 011 = $6000 ff.
Bitmuster 101 = $A000 ff.
Ich glaube, es wäre wohl sinnvoll die "Zwischenmuster" im Ergebnis so aufzubereiten, dass diese entweder ausgeblendet werden oder alternativ so aufbereitet werden, dass die ersten dreiBitmuster an /CS des ersten Chips anliegen und das vierte Bitmuster an Chip 2.
Zu beachten ist noch, dass ich keinen Einfluss auf die Adressierung an sich habe. Ich habe einen Z80-Prozessor als Basis meines Projekts.
Und für diejenigen, die es interessiert, habe ich noch einen frühen Entwurf meines Projekts beigefügt (Nicht abgeschlossen! Nicht funktionsfähig!). Links oben im Schaltplan ist mein Ansatz mit dem 74HC139 zu erkennen.
Hat jemand eine Idee? Ich nämlich gerade nicht!
Beste Grüße
Uni
ich stecke gerade bei der Entwicklung einer Speicherlogik fest. Ich habe einen Adressraum von 64 Kb und ich möchte bei verschiedenen Adressbereichen auf einen anderen Speicherchip umschalten. Der Adressbus ist 16 Bit breit, die oberen 3 Bit sollen und ich möchte folgendermaßen vorgehen:
Die oberen 3 Bit (Bit 14-16) kämen für die Chipauswahllogik in Frage.
Chip 1: Adressbereich $0000 - $7FFF, (Bitmuster 000) = 32 Kb
Chip 2: Adressbereich $8000 - $BFFF, (Bitmuster 100) = 16 Kb
Chip 3: Adressbereich $C000 - $DFFF, (Bitmuster 110) = 8 Kb
Chip 4: Adressbereich $E000 - $FFFF, (Bitmuster 111) = 8 Kb
Ich benötige für den jeweils zu aktivierenden Chip ein /CS-Signal (Chipselect, active low). Bei der Umsetzung hatte ich zunächst an den Multiplexer 74HC139 gedacht, da bin ich jedoch gescheitert. Es gibt ja neben den oben beschriebenen Zuständen weiter Zustände, die dazu führen würden, dass die /CS-Signalen für die genannten Adressbereiche nicht vorhanden wären:
Beispiele:
Bitmuster 001 = $2000 ff.
Bitmuster 010 = $4000 ff.
Bitmuster 011 = $6000 ff.
Bitmuster 101 = $A000 ff.
Ich glaube, es wäre wohl sinnvoll die "Zwischenmuster" im Ergebnis so aufzubereiten, dass diese entweder ausgeblendet werden oder alternativ so aufbereitet werden, dass die ersten dreiBitmuster an /CS des ersten Chips anliegen und das vierte Bitmuster an Chip 2.
Zu beachten ist noch, dass ich keinen Einfluss auf die Adressierung an sich habe. Ich habe einen Z80-Prozessor als Basis meines Projekts.
Und für diejenigen, die es interessiert, habe ich noch einen frühen Entwurf meines Projekts beigefügt (Nicht abgeschlossen! Nicht funktionsfähig!). Links oben im Schaltplan ist mein Ansatz mit dem 74HC139 zu erkennen.
Hat jemand eine Idee? Ich nämlich gerade nicht!
Beste Grüße
Uni