Hallo, ich hätte mal allgemeine Fragen zu einem DDR2 SDRAM. Ich will in einem Projekt einen DDR2 SDRAM in Berieb nehmen und Daten rauf schreiben bzw. lesen. siehe auch Thread: Beitrag "DDR2 RAM Ansteuerung mit Virtex-5 ML507" In dieser Hinsicht habe ich folgenden DDR2 SDRAM: Firma: Micron Model: MT4HTF3264HY-667F1 Größe: 256MB Folgende Daten stehen auf dem Etikett des Speichers: MT4HTF3264HY-667F1 1010 256MB 1Rx16 PC2-5300S-555-13-C0 Hier noch das Datenblatt dazu: http://download.micron.com/pdf/datasheets/modules/ddr2/HTF4C16_32_64x64H.pdf Nun zu meiner Frage: So wie ich verstehe sind 256MB (256MByte) = 2048 Mbit (32Mx64) Der Ram ist in 4 Blöcke, 8192 Reihen (Row) und 1024 Zeilen (Colum) aufgeteilt. Jede Zeile ist 64bit breit. Im Datenblatt auf S.2 unter Tabelle 2 ist eine Angabe "Device Configuration" mit 512Mb (32Mx16) für 256MB. Und genau diese Angabe verwirrt mich, ob die 1024 Zeilen (Colum) nun 64bit oder 16bit breit sind. Ich könnte auch mit meiner Theorie komplett daneben liegen, wäre also nett wenn ihr mich dann aufklären würdet. Danke schon mal im voraus für die Antworten Gruß Cihan
Hi Cihan, das RAM hat diese Aufteilung 4 Blöcke 8192 Reihen 1024 Zeilen 16 Bit (pro Zelle) das gibt 4*8192*1024*16 = 512MBit = 64 MByte du hast also nur 64 Mega Byte und NICHT 256MByte beim benutzten (lesen und schreiben) werden beim Burst-Length=4 immer 4 Zellen = 4*16bit = 64Bit geschrieben (oder gelesen) Gruss Uwe
noch ein Nachtrag : -die Bezeichnung 256MB = 256MByte in der Doku bezieht sich auf das "komplette" DIMM -das besteht ja aus 4 einzelnen RAMs mit je 64MByte -und auf das DIMM gesehen beträgt die Datenbusbreite 64Bit, weil jedes RAM 16bit DatenBusbreite hat ...ich hoffe das klärt deinen "Denkfehler" auf Gruss Uwe
D.h. auch, dass ich beispielsweise mir auswählen kann, auf welchen Ram ich meine Daten schreibe, oder? Und jeder Ram hat 4 Blöcke, 8k Row, 1k Col und jede Col-Zeile 16 bit. Stimmen meine Vermutungen? Cihan
ahhh...ich glaube ich hab das ganze falsch verstanden ich dachte du benutzt ein einzelnes RAM-IC welches die Bezeichnung hat wie auf dem angefügten Datenblatt sorry, mein Fehler wenn du das komplette DIMM (256 MByte) an deinem FPGA angeschlossen hast stimmen deine Vermutungen nur bin ich mir nicht sicher ob du ein einzelnes RAM zum lesen/schreiben selektieren kannst die Adressleitungen (BANK,ROW,COL) gehen ja an alle 4 gleichzeitig da hab ich zuwenig Ahnung davon (kann sein das es über die einzelnen DQS-Leitungen funktioniert) vlt. kennt sich hier ja jemand besser damit aus Gruss Uwe
OK, also kann es auch 64bit pro Zelle sein, so wie ich vermutet habe, oder? kennt sich da jemand noch besser aus? Cihan
Cihan Kalayci schrieb: > D.h. auch, dass ich beispielsweise mir auswählen kann, auf welchen Ram > ich meine Daten schreibe, oder? Jein. Du addressierst immer ein 64 Bit Wort, weil das Modul aus 4 parellel geschaltenen Speichern besteht, die jeweils 16 Bit übernehmen. Alle Module bekommen die selbe Adressierung. Man kann aber über die DMx (Data Mask) Signale bestimmen, welche der 8 parallel anliegenden Bytes beim Schreiben auch wirklich in RAM übernommen werden. Das ganze ist aber eine ziemliche Verschwendung, weil man die Datenrate damit ziemlich reduziert. Es ist also viel besser immer 8 Bytes zusammenzufassen und diese dann in einem Mal zu schreiben. Noch besser ist es aber 64 oder 128 Bytes zu sammeln und diese in einem Burst mit 4x oder 8x 64-Bit Worten zu schreiben. Oder habe ich etwas an deiner Frage nicht verstanden. Was meinst Du nämlich mit 64 Bit pro Zelle.
Klaus Falser schrieb: > Alle Module bekommen die selbe Adressierung. Korrektur : Alle 4 Speicherbausteine bekommen die selbe Adressierung.
Wenn ich in das Datenblatt meines Speichers reinschaue sehe ich, dass er - 4 Bänke - 8192 Row - 1024 Column hat. Die 1024 Column sind 16bit orientiert, also ich kann 16 bit daten jeweils speichern. 4*8192*1024*16 = 512MBit = 64 MByte. Bis hierhin sollte jetzt alles richtig sein, oder?! 64MByte * 4 Chips? = 256MB, ist das richtig? (Vermutung von mir: nein) Mir ist die Addressierung noch nicht ganz klar geworden. habe ich nur 64MByte zur Verfügung in 256 MB(wäre ja quatsch denke ich mal) oder wie schreibe ich die Daten in die Restlichen speicherchips. Nächste Vermutung von mir: mit ChipSelect?! Cihan
Cihan Kalayci schrieb: > 64MByte * 4 Chips? = 256MB, ist das richtig? Ja !! Cihan Kalayci schrieb: > Mir ist die Addressierung noch nicht ganz klar geworden. habe ich nur > 64MByte zur Verfügung in 256 MB(wäre ja quatsch denke ich mal) oder wie > schreibe ich die Daten in die Restlichen speicherchips. Nächste > Vermutung von mir: mit ChipSelect?! Das wurde jetzt doch mehrere Male erklärt. Alle 4 Speicherchip arbeiten parellel und verarbeiten gemeinsam ein 64 Bit breites Datenwort. Speicherchip 1 ist zuständig für die Datenleitungen D15..D0, Speicherchip 2 ist zuständig für die Datenleitungen D31..D16 usw.
Klaus Falser schrieb: > Cihan Kalayci schrieb: >> Mir ist die Addressierung noch nicht ganz klar geworden. habe ich nur >> 64MByte zur Verfügung in 256 MB(wäre ja quatsch denke ich mal) oder wie >> schreibe ich die Daten in die Restlichen speicherchips. Nächste >> Vermutung von mir: mit ChipSelect?! > > Das wurde jetzt doch mehrere Male erklärt. > Alle 4 Speicherchip arbeiten parellel und verarbeiten ein 64 Bit breites > Datenwort. > Speicherchip 1 ist zuständig für die Datenleitungen D15..D0, > Speicherchip 2 ist zuständig für die Datenleitungen D31..D16 usw. Du hast halt nicht 256Mx8bit oder 128Mx16bit sondern 32Mx64bit. Hinter jeder Adresse verbergen sich 64bit bzw 8Byte Daten. Sprich, du kannst nur Adressen abrufen, die in Binär mit 4*0 enden, und musst dann das Byte, das du willst selber raussortieren.
@Cihan, -schau dir mal auf Seite 6 vom Datenblatt die Datenleitungen der 4 RAMs an dann siehst du das es pro RAM 16 Datenleitungen gibt (also 64 insgesamt [DQ0 bis DQ63]) pro Adresse werden also 64 Bit geschrieben/gelesen (und zwar in alle 4 RAMs gleichzeitig je 16bit) vlt wird es mit dem Bild klarer Gruss Uwe
Wenn ich beispielsweise dann eine Adresse von 0 habe (Col, Row, Bank = 0) und ein 64 Bit wort (X"123456789ABCDEF0"), dann würde ich im Prinzip Word X"1234" in Ram 1 Word X"5678" in Ram 2 Word X"9ABC" in Ram 3 Word X"DEF0" in Ram 4 schreiben. Richig verstanden, oder? Danke dass ihr so viel Geduld habt, bin in dieser Sache neu eingestiegen und versuche mir es mit euerer Hilfe beizubringen. Gruß Cihan
Cihan Kalayci schrieb: > Wenn ich beispielsweise dann eine Adresse von 0 habe (Col, Row, Bank = > 0) und ein 64 Bit wort (X"123456789ABCDEF0"), dann würde ich im Prinzip > Word X"1234" in Ram 1 > Word X"5678" in Ram 2 > Word X"9ABC" in Ram 3 > Word X"DEF0" in Ram 4 > schreiben. Richig verstanden, oder? > > Danke dass ihr so viel Geduld habt, bin in dieser Sache neu eingestiegen > und versuche mir es mit euerer Hilfe beizubringen. > > Gruß Cihan Genau.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.