DDR2 SDRAM Allgemein

OP #2698321
Lesenswert?

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
#2698449
Lesenswert?

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
#2698479
Lesenswert?

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
#2698494
Lesenswert?

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
#2698627
Lesenswert?

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.
OP #2698666
Lesenswert?

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
#2698675
Lesenswert?

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.
#2698679
Lesenswert?

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.
#2698806
Lesenswert?

@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
OP #2698840
Lesenswert?

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
#2698900
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren