Forum: Mikrocontroller und Digitale Elektronik Frage zum externen SRAM


von Pie (Gast)


Lesenswert?

Hallo,
ich habe deine kleine Verständnisfrage. Wenn ich ein 64kByte SRAM extern 
Anschließe, ist die Adresse doch von 0000h bis FFFFh richtig?
Wie lang können denn jetzt meine Daten auf einer Adresse sein? Was ist 
wenn diese länger sind?
Danke und MFG

von Kevin K. (nemon) Benutzerseite


Lesenswert?

hängt von der Organisation des RAMs ab. Die 64kByte (nicht kBit?) werden 
entweder auf 1, 2 oder 4Byte große Blöcke verteilt. Dementsprechend 
brauchst du auch 8, 16 oder 32 Datenleitungen um die einzelnen 
Speicherzellen zu übertragen. Natürlich ist dann die Zahl der 
Adressleitungen auch unterschiedlich, bei 1Byte großen Blöcken brauchst 
du 16 Leitungen, bei 2Byte großen Blöcken 15 Leitungen und so weiter. 
Dementsprechend ist auch der Adressbereich unterschiedlich. 0xFFFF hast 
du bei 1Byte großen Zellen und 0x07FF dann bei 2Byte großen.

von Weingut P. (weinbauer)


Lesenswert?

Welches SRAM extern an was und wie?

42 ist die ultimative Antwort.

von Pie (Gast)


Lesenswert?

Kevin K. schrieb:
> hängt von der Organisation des RAMs ab. Die 64kByte (nicht kBit?) werden
> entweder auf 1, 2 oder 4Byte große Blöcke verteilt. Dementsprechend
> brauchst du auch 8, 16 oder 32 Datenleitungen um die einzelnen
> Speicherzellen zu übertragen. Natürlich ist dann die Zahl der
> Adressleitungen auch unterschiedlich, bei 1Byte großen Blöcken brauchst
> du 16 Leitungen, bei 2Byte großen Blöcken 15 Leitungen und so weiter.
> Dementsprechend ist auch der Adressbereich unterschiedlich. 0xFFFF hast
> du bei 1Byte großen Zellen und 0x07FF dann bei 2Byte großen.

Danke schön, dass hat mir schon viel geholfen. Es bedeutet also, wenn 
ich von 0x0000 bis 0xFFFF 1 Byte legen kann brauche ich 16 Leitungen.

Wenn ich aber 2 Byte je Speicher"zelle" nutzen will, gehts dann nur von 
0x07FF.


Blöde frage, wenn ich jetzt also 512kByte (ja ganz richtig) nehmen 
würde, an ein ATmega644 anschließe müsste ich also den Adressbereich von 
0x8000 bis 0xFFFF nutzen können, bei 4 Adressleitungen, wieviele Daten 
passen dann auf eine Speicherzelle?

von g457 (Gast)


Lesenswert?

> wieviele Daten passen dann auf eine Speicherzelle?

..Du zäumst das Pferd von hinten auf. Such Dir einen Speicher der eine 
Organisation hat die Du bedienen kannst und willst, schließ ihn an und 
gut iss. Beim m644 - der keine Hardwareunterstützung für externen 
Speicher hat - musst Du eh alles in Software machen. Da ist es dann egal 
ob er x1, x4, x8 oder x16 ist, nur richtig(tm) bedienen musst Du ihn.

HTH und nix für ungut

von Andreas B. (Gast)


Lesenswert?

Pie schrieb:
> Wenn ich aber 2 Byte je Speicher"zelle" nutzen will, gehts dann nur von
> 0x07FF.

Was du nutzen willst ist dem SRAM egal. Das hat eine bestimmte 
Wortbreite (= Anzahl der Datenleitungen) und damit musst du dich 
abfinden. Brauchst du eine andere, musst du ein anderes SRAM kaufen.

von Pie (Gast)


Lesenswert?

g457 schrieb:
>> wieviele Daten passen dann auf eine Speicherzelle?
>
> ..Du zäumst das Pferd von hinten auf. Such Dir einen Speicher der eine
> Organisation hat die Du bedienen kannst und willst, schließ ihn an und
> gut iss. Beim m644 - der keine Hardwareunterstützung für externen
> Speicher hat - musst Du eh alles in Software machen. Da ist es dann egal
> ob er x1, x4, x8 oder x16 ist, nur richtig(tm) bedienen musst Du ihn.
>
> HTH und nix für ungut

Och Leute, dass ist nicht meine Frage, wenn ihr meine Fragen nicht 
beantworten WOLLT (ist okay), dann schreibt bitte nicht was ich evt. 
machen könnte.

Ich will es verstehen!! Darum geht es mir hier.

von Pie (Gast)


Lesenswert?

Andreas B. schrieb:
> Pie schrieb:
>> Wenn ich aber 2 Byte je Speicher"zelle" nutzen will, gehts dann nur von
>> 0x07FF.
>
> Was du nutzen willst ist dem SRAM egal. Das hat eine bestimmte
> Wortbreite (= Anzahl der Datenleitungen) und damit musst du dich
> abfinden. Brauchst du eine andere, musst du ein anderes SRAM kaufen.

Wenn ich ein Latch nehme, kann ich doch so die Datenleitungen 
"verdoppeln" sag ich jetzt mal, stimmt das?

Organisiert sich der Mikrocontroller mit so einem SRAM von selbst, wenn 
ich diesen entsprechend initialisiere?

von g457 (Gast)


Lesenswert?

> Organisiert sich der Mikrocontroller mit so einem SRAM von selbst, wenn
> ich diesen entsprechend initialisiere?

[repeat-mode]Beim m644 - der keine Hardwareunterstützung für externen
Speicher hat - musst Du eh alles in Software machen. Da ist es dann egal
ob er x1, x4, x8 oder x16 ist[/repeat-mode]

Nix für ungut und EOD

von Andreas B. (Gast)


Lesenswert?

Pie schrieb:
> Wenn ich ein Latch nehme, kann ich doch so die Datenleitungen
> "verdoppeln" sag ich jetzt mal, stimmt das?

Aber wozu? Dann macht man einen Zugriff, speichert den im Latch, macht 
den zweiten, und liest dann. Nix gewonnen, man kann ja gleich die Daten 
ohne Latch lesen und dann zusammensetzen, sind genauso zwei Zugriffe. 
Die Adressleitungen halbiert man sich so auch nicht, man muss immer noch 
beide Hälften adressieren. Deshalb gibt es sowas auch nicht.

Datenleitungen vervielfacht man, indem man mehrere Speicherchips (ausser 
den Datenleitungen) parallel schaltet. Genauso wie es auf den 
Speicherriegeln im PC gemacht wird.

von Stefan E. (sternst)


Lesenswert?

Pie schrieb:
>
> Och Leute, dass ist nicht meine Frage, wenn ihr meine Fragen nicht
> beantworten WOLLT (ist okay), dann schreibt bitte nicht was ich evt.
> machen könnte.

Deine ursprüngliche Frage macht im Zusammenhang mit einem Mega644 
schlicht keinen Sinn, weil der kein externes Speicherinterface hat. Du 
kannst also gar keinen Adressbereich direkt nutzen. Du musst alles in 
Hardware und Software selber machen, und kannst daher alles so 
organisieren, wie du es gerne hättest.

von pie (Gast)


Lesenswert?

Stefan Ernst schrieb:
> Pie schrieb:
>>
>> Och Leute, dass ist nicht meine Frage, wenn ihr meine Fragen nicht
>> beantworten WOLLT (ist okay), dann schreibt bitte nicht was ich evt.
>> machen könnte.
>
> Deine ursprüngliche Frage macht im Zusammenhang mit einem Mega644
> schlicht keinen Sinn, weil der kein externes Speicherinterface hat. Du
> kannst also gar keinen Adressbereich direkt nutzen. Du musst alles in
> Hardware und Software selber machen, und kannst daher alles so
> organisieren, wie du es gerne hättest.

Und was ist mit dem 128?

von pie (Gast)


Lesenswert?

Andreas B. schrieb:
> Pie schrieb:
>> Wenn ich ein Latch nehme, kann ich doch so die Datenleitungen
>> "verdoppeln" sag ich jetzt mal, stimmt das?
>
> Aber wozu? Dann macht man einen Zugriff, speichert den im Latch, macht
> den zweiten, und liest dann. Nix gewonnen, man kann ja gleich die Daten
> ohne Latch lesen und dann zusammensetzen, sind genauso zwei Zugriffe.
> Die Adressleitungen halbiert man sich so auch nicht, man muss immer noch
> beide Hälften adressieren. Deshalb gibt es sowas auch nicht.
>
> Datenleitungen vervielfacht man, indem man mehrere Speicherchips (ausser
> den Datenleitungen) parallel schaltet. Genauso wie es auf den
> Speicherriegeln im PC gemacht wird.

wozu bräuchte ich dann ein latch, generell mein ich

von Stefan E. (sternst)


Lesenswert?

pie schrieb:
> Und was ist mit dem 128?

Dann kannst du vom externen RAM genau die Adressen benutzen, die nicht 
intern verwendet werden. Welcher Bereich das genau ist? Siehe 
Datenblatt.

pie schrieb:
> wozu bräuchte ich dann ein latch, generell mein ich

Beim Mega128 brauchst du es, weil die Hälfte vom Adressbus und der 
Datenbus auf dem selben Port liegen.

PS: Aber gibt es überhaupt 64kByte SRAM? Ich kenne nur 32kByte und 
128kByte, oder halt 64kBit (8kByte).

von pie (Gast)


Lesenswert?

Verstehe schon mehr danke sehr, 0x8000 bis 0xffff wären es dann, aber 
wie viel hab ich dann bei 512kByte pro Zelle? Mfg und danke

von Stefan E. (sternst)


Lesenswert?

pie schrieb:
> 0x8000 bis 0xffff wären es dann,

Ne, glaube ich nicht. Ich bezweifle, dass beim Mega128 die ersten 32k 
intern belegt sind.

pie schrieb:
> aber wie viel hab ich dann bei 512kByte pro Zelle?

Diese Frage macht mal wieder keinen wirklichen Sinn.
Was meinst du mit "Zelle"?

von Thomas E. (thomase)


Lesenswert?

pie schrieb:
> wozu bräuchte ich dann ein latch, generell mein ich

Sieh' dir mal das Datenblatt vom Atmega 128 an. Da gibt es die Leitungen 
AD0 - AD7. Das ist ein kombinierter Adress- Datenbus. Zuerst gibt der 
Controller die Adresse aus, die muss dann auf einem Latch 
zwischengespeichert werden, dann werden über dieselben Leitungen die 
Daten gelesen oder geschrieben.

mfg.

von pie (Gast)


Lesenswert?

Also ich will diesen Speicher zum Beispiel von 0x8000 bis 0xffff nutzen, 
wieviel Speicher habe ich pro Adresse, es wohl noch nicht klick gemacht

von Stefan E. (sternst)


Lesenswert?

pie schrieb:
> wieviel Speicher habe ich pro Adresse

1 Byte

von klausr (Gast)


Lesenswert?

Pie schrieb:
> Wie lang können denn jetzt meine Daten auf einer Adresse sein?

Pro Speicherzelle genau 1 Byte. Wo ist das Problem?

von Pie (Gast)


Lesenswert?

Stefan Ernst schrieb:
> pie schrieb:
>> wieviel Speicher habe ich pro Adresse
>
> 1 Byte

Wenn ich jetzt mehr als ein Byte reinschreibe, dann wird der Rest den 
nächsten Adressbereich geschrieben richtig?

von Kevin K. (nemon) Benutzerseite


Lesenswert?

nein

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.