Forum: Mikrocontroller und Digitale Elektronik Adressierung CE Aufgabe


von Benjamin B. (benjamin_b320)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen

Ich bin momentan am lernen habe ein Problem. Ich stehe hier mit meinem 
Verständins gerade an.

Aufgabe:
"Geben Sie die Gleichungen für die !CE aller 4 externen Bausteine an. 
Der Datenbus ist 16-Bit breit.

4PROM:4kB ab Adresse 0x0000H
IO:4kB unmittelbar anschliessend an ROM
FLASH:6000H Bytes anschliessend an IO
RAM: Rest anschliessend an Flash
"
Die Aufgabe habe ich angehängt.

Also habe ich mir überlegt:
ROM: 4096 * 8 = 32'768 bit => 32'768 bit / 16 bit Adresse = 2048 Adresse 
die ich brauche. Also ist der Adressbereich von 0x0000 bis 0x07FF

Mit dem gleichem Prinzip:
IO: 0x0800 bis 0x0FFF
FLASH (0x6000 gross): 0x1000 bis 0x3FFF
RAM: 0x4000 bis 0xFFFF

Nun soll ich mit diesen Adressen für !CE die Gleichungen 
herrausschreiben.
Meine Überlegung ist für ROM:
0b0000 0000 0000 0000
0b0000 0111 1111 1111
Also  sollte CE für ROM die Gleichung gelten: !A15 * !A14 * !A13 * !A12 
* !A11

Jedoch habe ich dann die Schwirigkeit, dass ich beim Flash bei teil 
Adressen auch IO anspreche....
Wie komme ich auf die richtige Gleichung?

Kann mir dass jemand besser als mein Lehrer erklären?

Mit Wissensdurst und Freundlich Grüssen
Benj

: Bearbeitet durch User
von Darth Moan (Gast)


Lesenswert?

Moin,

Benjamin B. schrieb:
> Jedoch habe ich dann die Schwirigkeit, dass ich beim Flash bei teil
> Adressen auch IO anspreche....

Wie Kommst du da drauf?
Schreibe doch mal alle Adressbereiche (wie für ROM) untereinander,
und schaue welche forderen Bits für den jeweiligen Bereich gleich sind.
Das du diese Bits verknoten musst, hast du ja offenbar schon Verstanden.
Dann vergleiche die forderen Bitfelder, ob sie sicher unterscheidbar 
sind.

von W.S. (Gast)


Lesenswert?

Also, gewöhnlichen Speicher und I/O spricht man nicht bitweise an, 
sondern entweder byteweise oder wortweise oder doppelwortweise oder gar 
mit 64 Bit Datenbreite.

Dein Datenbus ist 16 Bit breit, also 2 Byte.
Die Details deines Bildes kann ichnicht lesen, weiß also auch nicht, 
wieviel Adressbits vorhanden sind.

Da sämtlicher Kram offenbar in einem gemeinsamen Adreßraum liegt, ist es 
also eine v.Neumann Maschine, folglich muß die Datenbreite aller Teile 
ebenfalls 16 Bit sein, die Adreßzählung wird aber vermutlich byteweise 
erfolgen. Das nicht angegeben zu haben, ist eine Schlamperei deines 
Lehrers. (Anmerkung: bei Harvard-Maschinen kann jeder Adreßraum seine 
eigene Bitbreite haben, z.B. bei den kleinen PIC16 ist der Befehls-Flash 
14 Bit breit und wird nicht byteweise, sondern nur befehlsweise gezählt)

Du hast also einen Adreßbereich, bei dem unter jeder Adresse ein Wort 
(also 2 Byte) zu erreichen sind. Die CE, also die low-aktiven 
Auswahlsignale werden nur durch die Adreßbits gebildet, für den 
eigentlichen Zugriff gibt es dann noch 2 Signale RD und WR, zumeist auch 
low-aktiv. (Anmerkung: bei Breite von 16 Bit brauchen RAM,ROM,etc. 
EIGENTLICH auch noch 2 Auswahlsignale BHE und BLE für High-/Low-Byte 
enable)
So.

256=100h
1024=1K=400h
2048=2K=800h
4K=4096=1000h
und so weiter. Und auf jeder Adresse gibt's 2 Byte.

So. nun schreibst du dir auf, von wo bis wo deine Teile zu erreichen 
sind:
ROM   4K: 0..???? (na, rechne das mal selber)
IO    4K: ????..????
Flash 6K: ????..????
RAM: nicht ROM und nicht IO und nicht Flash. Also der Rest.

Wenn du dir das hingeschrieben hast, dann weißt du auch, wieviel 
Adreßbits direkt an RAM,ROM,etc. gehen und welche Adreßbits du für 
deinen Dekoder verwenden mußt.

Klaro?

W.S.

von S. Landolt (Gast)


Lesenswert?

Als Nichtfachmann in diesem Bereich hätte ich es naiv so formuliert: ich 
muss den kleinsten Adressbereich der Bausteine unterscheiden können, das 
ist hier ein Block mit 4096 Bytes = 2048 Worten = 2^11. Der 
Gesamtadressbereich ist 2^16; 2^16 / 2^11 = 2^5, folglich müssen die 
oberen fünf Adressleitungen für die Unterscheidung reichen.

von Karadur (Gast)


Lesenswert?

Was fehlt ist: wieviele Adressleitungen.

von S. Landolt (Gast)


Lesenswert?

Nun ja, da in der Aufgabe die Adressen mit 4 Hex-Ziffern angegeben sind, 
darf man wohl von 16 ausgehen.

von S. Landolt (Gast)


Lesenswert?

Landolt irrte:
> ... fünf Adressleitungen ... reichen

Es sind wohl eher 6: der Flash mit seinen 6 kB = 3 kWorte = (2+1) k 
bestimmt den kleinsten Adressblock, 1 k = 2^10, also 2^16 / 2^10 = 2^6.
  Als Laie erkläre ich mir das irgendwie mit dem GGT, wie es formal 
richtig ist, kann sicher W.S. ausführen.
  Nur am Rande: hat sich die Schreibweise Ki (statt k) für 1024 noch 
nicht durchgesetzt?

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.