Forum: Mikrocontroller und Digitale Elektronik Externe Speicherverbindung mit 8051


von mr gast (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche gerade die Hardware von 8051 und was alles dazu 
gehört(externes RAM, Code-Store etc.) zu verstehen.

Ich hab hier einen Schaltplan wo ein 8051 und 2 weitere ICs abgebildet 
und auch miteinander verbaunden sind.

62256 ist auf jedenfall ein externer RAM, also Datenspeicher un der 
74HC573N ist ein Code-Speicher, oder was ist das genau?

Zum RAM: Man braucht dazu: D0-7(bzw. IO auf dem Bild), A0-15, WE, OE, 
CS, ALE und PSEN. CS muss auf LOW sein, dass der Speicher aktiviert ist.
D0-7 sind Datenleitungen und A0-A15 Adressleitungen.

Was ist den der Unterschied zwischen den beiden?
Ich kenn mich bei dem Schaltplan net wirklich aus, da ich sowas noch nie 
gesehn hab und auf anblick kompliziert aussieht:

Mit was müssen die Datenleitungen und Adressleitungen verbunden sein? 
Und vorallem: Warum gerade mit dem?

Für was ist ALE, OE und WE gut? Mit was muss ich diese verbinden und 
wieder: Warum gerade mit dem?

Und wie sieht das ganze dann beim 74HC573 aus? Hat dieser Code-Speicher, 
falls es einer ist 8 Adress- und Datenleitungen? Hier jetzt wieder die 
gleichen Fragen wie beim RAM.

Es gibt ja Verbindungen mit Latch und ohne Latch. Wenn man ohne Latch 
verbinden dann ist das die einfache Art -> Einfach Verbinden

Aber wenn man mit Latch verbindet, dann kann man sich Leitungen sparen - 
Welche und warum?

Und dann gibts halt noch: Von-Neumann...

Ich weiß viele Fragen, die sicher grundlegend sind, aber ich hab schon 
gegoogelt und da lässt sich nichts gutes finden.

Hab mir: 
http://www.mikrocontroller.net/articles/Speicher#Anschluss_an_den_Mikrocontroller 
durchgelesen, aber hat mir nicht wirklich was gebracht leider.

Danke im voraus!

mfg

Gast

von Helmut L. (helmi1)


Lesenswert?

mr gast schrieb:
> 62256 ist auf jedenfall ein externer RAM, also Datenspeicher un der
> 74HC573N ist ein Code-Speicher, oder was ist das genau?
>

Das ist ein Latch. Es dient dazu die unteren 8 Addressleitung 
zwischenzuspeichern. Die sind mit den Daten gemultiplext um Pine zu 
sparen.
Ist die Leitung ALE auf 1 erscheinen die Addressen sonst die Daten. Da 
man die Addressen aber laenger braucht muss man die zwischenspeichern.

> Zum RAM: Man braucht dazu: D0-7(bzw. IO auf dem Bild), A0-15, WE, OE,
> CS, ALE und PSEN. CS muss auf LOW sein, dass der Speicher aktiviert ist.
> D0-7 sind Datenleitungen und A0-A15 Adressleitungen.
>
Wenn man nur ein RAM am Bus hat ja. Sonst wird mit CS das RAM 
ausgwaehlt.

> Was ist den der Unterschied zwischen den beiden?
> Ich kenn mich bei dem Schaltplan net wirklich aus, da ich sowas noch nie
> gesehn hab und auf anblick kompliziert aussieht:
>

Unterschied zwischen was?

> Mit was müssen die Datenleitungen und Adressleitungen verbunden sein?
> Und vorallem: Warum gerade mit dem?
>

Das sagt doch schon der Name der Leitungen.

> Für was ist ALE, OE und WE gut? Mit was muss ich diese verbinden und
> wieder: Warum gerade mit dem?
>

ALE = Addresslatch enable siehe oben.
OE = Output enable vom RAM. Wenn hier logisch 0 anliegt erscheinen die 
Daten auf dem Bus (Cs muss ebenfalls auf 0 sein)

WE = Write Enable. Liegt hier 0 an werden die Daten auf dem Bus im RAM 
gespeichert. (Cs muss ebenfalls auf 0 sein)

> Und wie sieht das ganze dann beim 74HC573 aus? Hat dieser Code-Speicher,
> falls es einer ist 8 Adress- und Datenleitungen? Hier jetzt wieder die
> gleichen Fragen wie beim RAM.
>

siehe oben

> Es gibt ja Verbindungen mit Latch und ohne Latch. Wenn man ohne Latch
> verbinden dann ist das die einfache Art -> Einfach Verbinden
>

siehe oben

> Aber wenn man mit Latch verbindet, dann kann man sich Leitungen sparen -
> Welche und warum?
>

Nur die untersten 8 Addressleitungen werden gelatcht.

> Und dann gibts halt noch: Von-Neumann...
>

Dazu dient das eine AND Gatter. Es dient dazu Lesezugriffe auf Daten und 
Code zusammenzufassen.

PSEN = 0 zeigt an das eine Code Byte gelesen wird.
RD   = 0 zeigt an das ein Datum gelesen wird.

> Ich weiß viele Fragen, die sicher grundlegend sind, aber ich hab schon
> gegoogelt und da lässt sich nichts gutes finden.

Es sollte ueber die 8051 Archektur genug im I-Net geben. Die ist schon 
ueber 30 Jahre alt.

von 8051-Fan (Gast)


Lesenswert?

Auch wenn es im Datenblatt erklärt ist beschreibe ich es nochmal.

PSEN (ProgrammStorEnable) ist der Chip-Enable für einen EXTERNEN 
Programmspeicher.

ALE (AdressLatchEnable) speichert das höherwertige Adressbyte im
573, die 8051-Family hat einen gemultiplexten Adressbus,
da wird erst das niederwertige Adressbyte A0 mit A7 über AD0 bis AD7
herausgeschickt und mit dem ALE-Puls im 573 gespeichert. Das 
Höherwertige
Adressbyte kommt bei A8 mit A15.

Mit dem PSEN Signal wird der Programmspeicher gelesen,
mit WR und RD und deren Verknüpfung wird auf den Datenspeicher 
zugegriffen.

Die EA Leitung (ExternalAcess) teilt dem 8051 mit ob für den untern
Programmspeicherbereich der externe oder der interne (Flash)Speicher
verwendet werden soll. EA wird nur beim Reset gemessen.

von MCUA (Gast)


Lesenswert?

>Mit dem PSEN Signal wird der Programmspeicher gelesen,
>mit WR und RD und deren Verknüpfung wird auf den Datenspeicher
>zugegriffen.
Was aber nicht heisst, dass man mit \RD (\WR) nicht auch auf den 
Programmspeicher zugreifen könnte.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Der einzige Fall wo man heutzutage noch so ein System zu sehen bekommt 
ist in der Schule oder wenn man alte Geräte repariert. Für 
Neuentwicklungen ist das seit mindestens 10 Jahren überholt, weil es 
selbst mit 8051-Architektur Controller mit mehr internem RAM gibt als 
man jemals extern an den klassischen 8051 anschließen könnte.

von mr gast (Gast)


Lesenswert?

Mh ok danke.

Helmut Lenzen schrieb:
> ALE = Addresslatch enable siehe oben.
> OE = Output enable vom RAM. Wenn hier logisch 0 anliegt erscheinen die
> Daten auf dem Bus (Cs muss ebenfalls auf 0 sein)
>
> WE = Write Enable. Liegt hier 0 an werden die Daten auf dem Bus im RAM
> gespeichert. (Cs muss ebenfalls auf 0 sein)

Also ist der 573 kein Programmspeicher, sondern nur ein 
Zwischenspeicher?

Soll das Blaue der Bus sein? Dieser ist aber mit Port 0, Port 2, 
1-8Q(vom 573), A0-14 u. D0-7(vom RAM) und der Eingang von IC8/2.

Ich nehme an das AD0 und AD1 nicht miteinander verbunden sind, sowie 
andere Pins, da es sonst ein Kurzschluss gäbe. Das sind nur x Linien die 
nebeneinender zu den anderen ICs führen, richtig? Aber was macht den das 
Gatter IC8/2 bitte? Mit welchen Pin ist das jetzt verbunden, doch nicht 
mit alle?

ALE ist mit dem Eingang(oder Ausgang?) C von 573 verbunden, was ist das 
C?

Und ich meinte: Unterschied zwischen Datenleitung und Adressleitung, was 
das ist.

von Helmut L. (helmi1)


Lesenswert?

mr gast schrieb:
> Also ist der 573 kein Programmspeicher, sondern nur ein
> Zwischenspeicher?
>

Richtig.

> Soll das Blaue der Bus sein? Dieser ist aber mit Port 0, Port 2,
> 1-8Q(vom 573), A0-14 u. D0-7(vom RAM) und der Eingang von IC8/2.
>

Das Blaue ist eine Zusammenfassung von einzelnen Leitungen. Dient nur 
der zeichnerischen Darstellung.

> Ich nehme an das AD0 und AD1 nicht miteinander verbunden sind, sowie
> andere Pins, da es sonst ein Kurzschluss gäbe. Das sind nur x Linien die
> nebeneinender zu den anderen ICs führen, richtig? Aber was macht den das
> Gatter IC8/2 bitte? Mit welchen Pin ist das jetzt verbunden, doch nicht
> mit alle?
>

IC8/2 invertiert das Signal A15

> ALE ist mit dem Eingang(oder Ausgang?) C von 573 verbunden, was ist das
> C?
>

C ist der Clock Eingang vom Latch.

> Und ich meinte: Unterschied zwischen Datenleitung und Adressleitung, was
> das ist.
 Das sagt doch schon der Name. Auf den Addressleitung werden die 
Addressen uebertragen zum Speicher. Der Speicher Antwortet b.z.w. 
uebernimmnt die Daten von den Datenleitungen.

von Thomas R. (Gast)


Lesenswert?

mr gast schrieb:
> Hab mir:
> http://www.mikrocontroller.net/articles/Speicher#A...
> durchgelesen, aber hat mir nicht wirklich was gebracht leider.

Lese es so oft, bis du es verstanden hast.

von Dietrich L. (dietrichl)


Lesenswert?

mr gast schrieb:
> Soll das Blaue der Bus sein?

Ja.

Wie Helmut schon sagte, ist das nur eine platzreduzierte Darstellung 
aller Signale, die hier in den "Bus" zusammengefasst sind. Welches 
Signal davon jetzt an das IC angeschlossen wird, sagt der Name, der an 
der abzweigenden Leitung steht: nur die Anschlüsse, an denen z.B. "A5" 
steht, sind miteinander verbunden.

Gruß Dietrich

von mr gast (Gast)


Lesenswert?

Ahh jetzt verstehe ich das mit dem Latch und Multiplexen. Das 
Multiplexen ist im Prinzip wie ein Schalter das mit Hilfe vom ALE einmal 
da liegt und einmal da, oder?

Man kann ja darunter einzelne Gatter sehn, ich weiß zwar wie sie im 
Prinzip funktionieren, aber was sie hier bezwecken. Ich versuchs mal zu 
erklären.

>ALE = Addresslatch enable siehe oben.
>OE = Output enable vom RAM. Wenn hier logisch 0 anliegt erscheinen die
>Daten auf dem Bus (Cs muss ebenfalls auf 0 sein)

>WE = Write Enable. Liegt hier 0 an werden die Daten auf dem Bus im RAM
>gespeichert. (Cs muss ebenfalls auf 0 sein)

IC7/1 hat die Eingänge PSEN und RD - am Ausgang ist OE vom RAM.

In 3 Fällen kommt LOW raus, d.h. in 3(0,0 - 1,0 und 0,1) verschiedenen 
Fällen werden die Daten auf dem BUS gesendet(Die adressen auch, oder nur 
daten?)

Aber was hat hiermit PSEN zu tun, das braucht man ja nur wenn iwas mit 
dem externen Programmspeicher ist?

Wenn WR 0 ist, liegt am Eingang(WE) vom RAM auch 0 an, d.h. die 
Daten(sind da die Adressen gemeint, oder wie sieht man das hier?)werden 
ins RAM gespeichert.

IC8/2: Die beiden Eingänge bekommen Signale vom A15, entweder 2 Einsen 
oder 2mal Null. Der Ausgang ist CS.
Das der RAM aktiviert ist muss CS=0 sein.
Warum gerade die 15te Adressleitung?

Was ist den eigentliche der Inhalt einer Adressleitung? Werden da 
Adressen im binärer Schreibweise übertragen?

Der Inhalt von Datenleitungen ist einfach nur Null oder Eins.

In den Leitungen werden ja viele Binärfolgen schnell übertragen, oder? 
Also wenn jetzt aus A15 die Bitfolge: 01001111 rauskommt, dann ist ja CS 
zuerst Null, dann Eins und 0,0,1,1 etc. Bei den Einsen würde ja das 
nicht mehr funktionieren?

Das verstehe ich nicht wirklich, welche Daten da genau übertragen werden 
und wie Lang diese sind.

von Falk B. (falk)


Lesenswert?

@  mr gast (Gast)

>Ahh jetzt verstehe ich das mit dem Latch und Multiplexen.

Wirklich?

>Das
>Multiplexen ist im Prinzip wie ein Schalter das mit Hilfe vom ALE einmal
>da liegt und einmal da, oder?

Komischer Satz. Ein Latch ist ein Zwischenspeicher. Er speichert 
hier die unteeren 8 Bit der 16 Bit Adresse. Der Bus für Daten und untere 
Adressbit ist also gemultiplext.

>Aber was hat hiermit PSEN zu tun, das braucht man ja nur wenn iwas mit
>dem externen Programmspeicher ist?

Ja.

>Wenn WR 0 ist, liegt am Eingang(WE) vom RAM auch 0 an, d.h. die
>Daten(sind da die Adressen gemeint,

Nein, die Daten auf dem Datenbus. Die dazu passende Adresse wurde einen 
Takt vorher ins Latch geschrieben.

>oder wie sieht man das hier?)werden
>ins RAM gespeichert.

Ja.

>Das der RAM aktiviert ist muss CS=0 sein.
>Warum gerade die 15te Adressleitung?

Weil man das so festgelegt hat. Der RAM belegt die unteren 32k des 64k 
Adresssraums.

>Was ist den eigentliche der Inhalt einer Adressleitung?

Ja was wohl? Die Adresse, welche gerade geschrieben oder gelesen werden 
soll!

> Werden da
>Adressen im binärer Schreibweise übertragen?

Wie sonst?

>Der Inhalt von Datenleitungen ist einfach nur Null oder Eins.

Das ist bei JEDEM Digitalsignal der Fall. Die Datenleitungen übertragen 
die Daten, wer hätte das gedacht.

>In den Leitungen werden ja viele Binärfolgen schnell übertragen, oder?

Sicher.

>Das verstehe ich nicht wirklich, welche Daten da genau übertragen werden
>und wie Lang diese sind.

Dazu zeichnet man sinnvollerweise Zeitdiagramme, wo der Ablauf aller 
Signale dargestellt wird. Dann erkennt man auch die Funktion. Mit einer 
Beschreibung nur mit Text wird man nicht schlau.

von Dietrich L. (dietrichl)


Lesenswert?

Falk Brunner schrieb:
>>Das der RAM aktiviert ist muss CS=0 sein.
>>Warum gerade die 15te Adressleitung?
>
> Weil man das so festgelegt hat. Der RAM belegt die unteren 32k des 64k
> Adresssraums.

Da IC8/2 A15 aber noch invertiert, sind es in diesem Fall die oberen 32k 
;-)

von Manuel X. (vophatec)


Angehängte Dateien:

Lesenswert?

Fürs Verständnis, welches allem anderen erstmal voreilen sollte, ist es 
aber nicht schlecht. Weil man in dem Zug auch auf das (interne) 
Bussystem eingehen kann. Abgesehen davon muss man da ja nicht nur RAM 
anschliessen, soll ja Fälle geben in denen man mehr EEPROM brauchen 
könnte.

Âllerdings find ich persönlich, um das Prinzip zu verinnerlichen, is die 
gezeigte Schaltung schlecht geeignet, weil die Daten und Adressleitungen 
Plansparend zusammengefasst sind :)

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.