Forum: FPGA, VHDL & Co. RAM - Row Adressing / Column Adressing?


von NewHere84 (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit dem Verständnis von RAM-groessen.

Z.B. gibt das Datasheet des ZEDboard's an, es habe 512 MB DDR3 (128M x 
32).

Was genau bedeutet das nun?

Heisst das, ich habe 128000 Adressen zur verfügung und ich kann pro 
Adresse eine 32 Bit lange Zahl speichern?


Wenn ich dann im Datenblatt zu DDR3 Scrolle steht da folgendes 
geschrieben:
DDR3
The ZedBoard includes two Micron DDR3 128 Megabit x 16 memory components 
creating a 32-bit interface, totaling 512 MB.

Wie kann ich das nun verstehen und wie komme ich mit diesen Angaben auf 
512 MB?

Wäre fuer eine Aufklaerung sehr dankbar.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

NewHere84 schrieb:
> Heisst das, ich habe 128000 Adressen zur verfügung und ich kann pro
> Adresse eine 32 Bit lange Zahl speichern?

Nö. Die Rede ist ja von Megabyte und nicht von Kilobyte. Es sind also 
134.217.728 Adressen mit 32 bit Inhalt.

NewHere84 schrieb:
> The ZedBoard includes two Micron DDR3 128 Megabit x 16 memory components
> creating a 32-bit interface, totaling 512 MB.

Ein Byte besteht aus 8 bit. In jeden Riegel passen also 256 Mbyte. Da 
zwei verbaut sind ergibt das 512 MByte.

von Hp M. (nachtmix)


Lesenswert?

NewHere84 schrieb:
> Wäre fuer eine Aufklaerung sehr dankbar.

Wenn du damit eine Hardware entwickeln willst, und nicht unbedingt die 
Kapazität und Geschwindigkeit dieser Speicherriegel brauchst, solltest 
du vielleicht besser statische Speicherchips benutzen, denn diese SDRAMs 
halten frür Anfänger doch einige nicht zu unterschätzende 
Schwierigkeiten bereit.

von NewHere84 (Gast)


Lesenswert?

Matthias S. schrieb:
> Nö. Die Rede ist ja von Megabyte und nicht von Kilobyte. Es sind also
> 134.217.728 Adressen mit 32 bit Inhalt.

Sehr gut! - Danke!

Hp M. schrieb:
> Wenn du damit eine Hardware entwickeln willst, und nicht unbedingt die
> Kapazität und Geschwindigkeit dieser Speicherriegel brauchst, solltest
> du vielleicht besser statische Speicherchips benutzen, denn diese SDRAMs
> halten frür Anfänger doch einige nicht zu unterschätzende
> Schwierigkeiten bereit.

Koenntest du mir bitte ein paar eventuelle Schwierigkeiten aufzeigen?

von NewHere84 (Gast)


Lesenswert?

Matthias S. schrieb:
> Nö. Die Rede ist ja von Megabyte und nicht von Kilobyte. Es sind also
> 134.217.728 Adressen mit 32 bit Inhalt.

Sorry, aber ich kann das noch nicht nachvollziehen. Wie kommst du auf 
134.217.728 Adressen?

512 MB / 2 = 256 MB (da es zwei riegel sind)
256 MB * 8 = 2048,000,000 Bit
2048,000,000 Bit / 16 (Memory components) = 128,000,000 Bit

und nun weiß ich nicht mehr weiter?

von Christian R. (supachris)


Lesenswert?

NewHere84 schrieb:
> Matthias S. schrieb:
>> Nö. Die Rede ist ja von Megabyte und nicht von Kilobyte. Es sind also
>> 134.217.728 Adressen mit 32 bit Inhalt.
>
> Sorry, aber ich kann das noch nicht nachvollziehen. Wie kommst du auf
> 134.217.728 Adressen?
>
> 512 MB / 2 = 256 MB (da es zwei riegel sind)

Ja, 256MiByte pro Riegel.

> 256 MB * 8 = 2048,000,000 Bit

Naja, pro Riegel und außerdem 256 x 1024 x 1024 x 8, dann kommst du auf 
2147483648 Bit.

> 2048,000,000 Bit / 16 (Memory components) = 128,000,000 Bit

Was hat das mit der 16 zu tun? Dem User ist das völlig egal, wieviele 
Chips pro Riegel und wie viele Riegel im System sind. Der DDR3 
Controller im FPGA kann das zusammenfassen, wenn er richtig konfiguriert 
wurde.

Du hast also insgesamt 512 MiByte Speicher. Da der 32-Bit (4Byte) weise 
ansgesprochen wird, hast du 128 x 1024 x 1024 Adressen an denen du 
jeweils einen 32 Bit Wert, also 4 Byte ablegen kannst.

: Bearbeitet durch User
von P. K. (pek)


Lesenswert?

NewHere84 schrieb:
> Koenntest du mir bitte ein paar eventuelle Schwierigkeiten aufzeigen?

Hängt ein wenig davon ab, was Du alles selber machen willst. Ich gehe 
mal davon aus, dass Du ein DDR-Memory-I/F-IP auf dem FPGA verwendest, 
Dich also um das Refresh nicht extra kümmern musst und auch Row- und 
Bank-Selektion automatisch passieren, dann bleiben als Stolpersteine 
noch:

- Layout (PCB) verlangt eine gewisse Sorgfalt,
  Stichwort "signal integrity"
- Das "Random Access" muss etwas geplant werden, wenn der Durchsatz
  hoch sein soll (ROW-Adresse sollte selten wechseln, es sollte in
  Bursts zugegriffen werden...)

Allzu viel Angst machen lassen solltest Du Dir aber nicht, seriös 
einlesen und planen, dann klappt es schon.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

NewHere84 schrieb:
> Sorry, aber ich kann das noch nicht nachvollziehen. Wie kommst du auf
> 134.217.728 Adressen?

2^27 = 134.217.728
Da alle Adressen und Daten bei Computern auf dem binären Zahlensystem 
beruhen, sind auch alle Speichergrössen und so ein Vielfaches von 2.

NewHere84 schrieb:
> 256 MB * 8 = 2048,000,000 Bit

Nö, wieder falsch, weil du zu sehr mit dem Dezimalsystem verhaftet bist. 
256 MByte sind nämlich 2^28 = 268.435.456 Bytes. Das Umrechnen in die 
Anzahl der Bits überlasse ich dem geneigten Leser.

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.