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
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.
Wenn man von 0x20000 bis 0x3FFFF adressieren will bedeutet das einen Decoder, der 0x2xxxx aufloest. Das waere dann ein einzelnes Bit, das 0x20000.
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\)\
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.
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.