Hallo, ich möchte auf meinem Board mit Virtex5 gerne den DDR2 ausprobieren und habe dazu mit MIG (ISE 13.4) einen DDR-Controller generiert. Ich versteh bis jetzt noch nicht genau wie das mit dem Adressieren des DDR2 funktioniert. Laut ug086 besteht die Adresse aus folgenden Teilen: Column address = app_af_addr[COL_WIDTH-1: 0] Row address = app_af_addr[ROW_WIDTH+COL_WIDTH–1: COL_WIDTH] Bank address = app_af_addr[BANK_WIDTH+ROW_WIDTH+COL_WIDTH–1: ROW_WIDTH+COL_WIDTH] Chip select(3)= app_af_addr[BANK_WIDTH+ROW_WIDTH+COL_WIDTH] Bei meinem DDR gilt dabei: COL_WIDTH = 10 ROW_WIDTH = 13 Bank_Width = 2 Insgesamt hat bei mir einer Adresse ein Breite von 31 bits. Wenn ich nun zum Beispiel in die ersten 3 Adressen nach einander schreiben möchte. Diese würde einer burst length = 4 entsprechen. Wie würden dann die Adressen genau ausschauen? Einfach so: A1 = 0000000000000000000000000000001 A2 = 0000000000000000000000000000010 A3 = 0000000000000000000000000000011 und so weiter... A4 = 0000000000000000000000000000100 A5 = 0000000000000000000000000000101 Leider finde ich in der Doku nichts genaueres darüber. Danke
Du müsstest die Addresse jedesmal um 4 erhöhen. Ich hab das immer so gemacht, dass meine erste Addresse 0, die nächste 4, dann 8, usw. Klaus schrieb: > Column address = app_af_addr[COL_WIDTH-1: 0] > Row address = app_af_addr[ROW_WIDTH+COL_WIDTH–1: COL_WIDTH] > Bank address = app_af_addr[BANK_WIDTH+ROW_WIDTH+COL_WIDTH–1: > ROW_WIDTH+COL_WIDTH] > Chip select(3)= app_af_addr[BANK_WIDTH+ROW_WIDTH+COL_WIDTH] Der Addressvektor ist so ausgelegt, dass du dank dem Burst 4 nur eine "Zahl" zuweisen musst, so wie du es hier geschrieben hast: Klaus schrieb: > A1 = 0000000000000000000000000000001 aber mit 0 starten. Wenn du hintereinander Daten schreiben willst, nimmst du am besten eine UNSIGNED Variable, die pro Schreibvorgang um 4 erhöht wird und weisst es dem A1 (cast nicht vergessen!) zu. Cihan
Hallo, Vielen dank für die schnelle Antwort. Mir ist allerdings deine Erklärung für diese Adressierung nicht ganz klar. Liegt es daran dass man (laut ug086, Seite 384) pro Adresse jeweils 2 Daten Pakete Schicken soll, wobei jedes Paket Daten für die steigende und fallende clk Flanke enthält . Das macht also insgesamt 4 Speicheradressen. Mit der burst Länge von 4 hat das doch zunächst nichts zu tun oder? Wenn ich eine burst Länge von 8 hätte dann wäre die Adressierung wie oben beschrieben genau gleich, oder nicht? Viele Grüße
Soweit ich das verstanden habe, habe ich einen DDR2 Ram mit einem Datenbus von 64 Bits. Wenn ich nun mit Burst 4 ihn beschreibe, gebe ich ihm Bsp. die Addresse 0, sodass die DDR2 Core 64 Bit in Addresse 0, die nächsten 64 in Addresse 1, dann die nächsten in Addresse 2 und die letzten 64 in Addresse 3. Dann kann im nächsten Schreibzyklus die Addresse 4 verwendet werden. Es dauert ja auch 2 Clockzyklen, um die Daten in den DDR2 zu schreiben (DDR, also steig. und fall. Flanke => 4 Schreibzyklen in 2 Clockzyklen). Beim Burst 8 würde es 4 Clockzyklen dauern und es würden 8x64 Bit von Addresse 0 bis 7 geschrieben werden. Das ist meine Kenntnis. Vllt. kann der eine oder andere mich bestätigen oder korrigieren. Der Burst sagt dir ja wieviele Addressen du beschreibst, bei 4 ebend 4 Addressen also 2 Datenpakete(128 Bit) und bei Burst 8 ebend 8 Addressen, also 4 Datenpakete. Cihan
Cihan Kalayci schrieb: > Der Burst sagt dir ja wieviele Addressen du beschreibst, bei 4 ebend 4 > Addressen also 2 Datenpakete(128 Bit) und bei Burst 8 ebend 8 Addressen, > also 4 Datenpakete. Burst 4 bedeutet nicht gleich, dass 4 Addressen beschrieben werden. Der Burst gibt ja die Anzahl der Datenworte an. Da nun 1 Datenpaket(128Bit)= 2 Datenworte(64Bit) sind, werden bedingt durch Burst 4 und 8 ebend 4 oder 8 Addressen beschrieben. Cihan
Hallo Cihan, Also zumindest für mich klingt deine Erklärung richtig. Danke noch mal! Gruß klaus
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.