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
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.
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.
>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.
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.
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.
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.
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
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.
@ 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.
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
;-)
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 :)