Forum: Mikrocontroller und Digitale Elektronik CS-Gleichung


von Tomus (Gast)


Lesenswert?

Guten Morgen  ich hab mal eine Frage die Ihr mir sicher beantworten 
könnt.

Also ich hab einen adressierbaren Bereich von 0x40.0000 meiner CPU. Die 
Basisadresse dafür soll bei 0x20.000 liegen. Die CS-Gleichung für den 
Adressdecoder ist doch dann:

/A19*/A18*A17*/A16..... bit */A0, stimmt es dass die CS-Gleichung sich 
tatsächlich bis A0 durchzieht für die Basisadresse oder "reichts" wenn 
ich bis A16 durchmache?

Grüße an euch alle und einen schönen Tag noch

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Du willst CS ja nicht nur für die Adresse 0x20000 aktivieren, sondern 
für 0x020000 bis 0x03FFFF(?). Es ist also nicht hilfreich, niedrigere 
Addressbits mit zur Erzeugung von CS zu benutzen.

Du solltest aber das nochmal durchgucken, denn

Tomus schrieb:
> adressierbaren Bereich von 0x40.0000 meiner CPU

und

Tomus schrieb:
> Die
> Basisadresse dafür soll bei 0x20.000 liegen

passen nicht so recht zusammen. Da ist irgendwo eine Null zuviel oder 
zuwenig, wenn ich mich nicht täusche.

von Pandur S. (jetztnicht)


Lesenswert?

Wenn man von 0x20000 bis 0x3FFFF adressieren will bedeutet das einen 
Decoder, der 0x2xxxx aufloest. Das waere dann ein einzelnes Bit, das 
0x20000.

von Helmut S. (helmuts)


Lesenswert?

Welches ist die höchste nach außen geführte Adressleitung?
A23? A22?

24bits wäre bis A23.

0x400000
0100 0000 0000 0000 0000 0000
A22=1

0x200000
0010 0000 0000 0000 0000 0000
A21=1

Dekoder für 0x200000 bis 0x2fffff
A23\*A22\*A21*A21\

Dekoder für 0x200000 bis 0x3fffff
A23\*A22\*A21

Wie weit man dekodiert hängt von der Größe des angeschlossenen Speichers 
ab und davon ab welchem Bereich ein anderer Speicher liegt.

Falls man wie häufig gefordert CS\ benötigt, dann muss man den Ausdruck 
noch negieren (NAND statt AND).

(A23\*A22\*A21*A21\)\

von fop (Gast)


Lesenswert?

Habe ich da etwas falsch verstanden ? Die Größe des Speichers umfasst 
0x40 0000 also 4.194.304 Adressen, wovon die erste auf 0x2 0000 (oder 
sollte es 0x20 0000 heißen) liegt ?
Dann müsste CS wahr werden für Adressen von 0x02 0000 bis 0x41 ffff 
(bzw. 0x20 0000 bis 0x5f ffff). Macht mindestens 24 Adressleitungen. 
Falls Du mehr hast, mußt Du noch abprüfen, ob die höheren auch schön 0 
sind, sonst spiegelt sich Dein Speicher auf höheren Adressen. Die 
niederwertigen 16 Adressleitungen brauchst Du dabei nicht zu beachten.
Rein praktisch würde man ein IC wie den 74 138 benutzen, aber das klingt 
ja eher wie eine Aufgabe aus dem Unterricht.

von Tomus (Gast)


Lesenswert?

Also ich habe zwei Speicher mit jeweils 2 MB ( 4M * 4), also insgesamt 
einen Speicher von 4 MB. Der soll jetzt bei der CPU die 4 MB adressieren 
kann ab Adresse 0x200000 liegen. Dazu bräuchte ich jetzt die CS 
Gleichung. Und wenn die ja aus der Basisadresse gebildet wird muss ich 
ja nur bis 2 dekodieren?

von Achim S. (Gast)


Lesenswert?

Tomus schrieb:
> also insgesamt
> einen Speicher von 4 MB. Der soll jetzt bei der CPU die 4 MB adressieren
> kann ab Adresse 0x200000 liegen.

der Speicher soll also im Adressraum von 2MByte bis 6MByte angesprochen 
werden? Wie willst du diesen Adressraum abdecken, wenn deine CPU nur 
4MByte adressieren kann?

Tomus schrieb:
> Und wenn die ja aus der Basisadresse gebildet wird muss ich
> ja nur bis 2 dekodieren?

Du musst die Adressbits dekodieren, die entscheiden, ob die aktuelle 
Adresse innerhalb des gewünschten Adressraums ist oder außerhalb. 
Adressbit 2 gehört sicher nicht dazu.

Helmut hat es doch schön vorgerechnet! (bis auf den Flüchtigkeitsfehler, 
dass er " A21*A21\ " schrieb wo er " A21*A20\ " gemeint hat.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.