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.
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.
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.
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?
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?
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.
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.
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.