Hallo zusammen Die DDR3 Technologie bietet ja Write-Leveling an. Soweit ich weiss, ist es dazu notwendig, dass bestimmte Datenbits 1:1 verdrahtet werden und nicht getauscht werden dürfen. Welche nicht getauscht werden dürfen, hängt scheinbar vom DDR3 Controller ab und ist nicht immer gleich. Weiter habe ich gelesen, dass Write-Leveling offenbar nur bei mehr als einem angeschlossenen Chip verwendbar ist. Hat jemand damit erfahrung und weiss, ob man bei der Verwendung nur eines einzelnen Chips, alle bits innerhalb eines bytes tauschen darf? Verwenderter Prozessor: Allwinner A13 Dieser hat leider keinerlei Informationen bezüglich WriteLeveling im Datenblatt / manual. Danke
:
Bearbeitet durch User
Holger K. schrieb: > Hallo zusammen > > Die DDR3 Technologie bietet ja Write-Leveling an. Soweit ich weiss, ist > es dazu notwendig, dass bestimmte Datenbits 1:1 verdrahtet werden und > nicht ge swapt werden dürfen. Soso, "ge swapt". . . Früher (tm) hießt das getauscht. #Muttersprache #denglischfürdoofe
Falk B. schrieb: > Soso, "ge swapt". . . Früher (tm) hießt das getauscht. Ohjeee #MontagMorgen... Danke für den Input ^^ Habs nun geändert :)
Holger K. schrieb: > Verwenderter Prozessor: Allwinner A13 > Dieser hat leider keinerlei Informationen bezüglich WriteLeveling im > Datenblatt / manual. > > Danke Das ist nicht mehr so trivial. Ich will gar nicht versuchen, das zu erklären, weil ich mir selber nicht 100% sicher bin. Lies lieber selber: https://blogs.mentor.com/hyperblog/blog/2017/10/24/ddr-design-write-leveling-for-better-dq-timing/ https://www.nxp.com/files-static/32bit/doc/app_note/AN3940.pdf Im Prinzip sind die Datenleitungen in Bytegruppen unterteilt. Ein Byte muss dann gleich lang sein. Zu jedem Byte gehört ein Strobe. Entsprechend muss das an die Bausteine ran. In einer Gruppe wirst du bits tauschen können, aber nicht zwischen Bytegruppen. Also: D0<>D4 ist möglich D7<>D8 sicher nicht Die Laufzeit wird nur Byteweise kompensiert. Ich denke nicht, dass das bei einem Allwinner-SOC anders ist, weil es eine Eigenschaft von DDR3 ist. Ich kenne übrigens kein Design, wo Bytes getauscht wurden. Im Normalfall sollte das nicht nötig sein. Der Hersteller liefert normalerweise eine Appnote für diese Dinge, und daran solltest du dich halten. Im Idealfall kannst du dich an einem Referenzdesign orientieren. Ich würde davon abraten, ein eigenes DDR3-Layout zu entwerfen, weil das viel Erfahrung benötigt. Hier wurde das so gemacht: Man nimmt das Referenzdesign und orientiert sich daran, unter Einhaltung der entsprechenden Guidelines. Das funktioniert dann auch. Schon das ist keine einfache Aufgabe... Mit Allwinner ist man halt ange******, weil man keine Doku bekommt. Da wärst du mit NXP, ST, Microchip oder einem anderen westlichen Hersteller besser dran, da gibts wenigstens ordentliche Dokumentation.
Vielen Dank für deine Antwort. Mir ist bewusst, dass ich Bytes nicht tauschen darf. Mir geht es lediglich darum, die einzelnen Bits innterhalb einer Bytegruppe zu tauschen. Aber auch dies darf man offenbar nicht immer tun, da der DDR Controller teilweise BIT0 für das write-leveling verwendet. Daher muss bei einigen Controllern B0 immmer B0 bleiben. Jedoch habe ich gelesen, dass es offenbar auch Controller gibt, welche noch andere als nur B0 für das Leveling anwenden. jemand schrieb: > ch würde davon abraten, ein eigenes > DDR3-Layout zu entwerfen, weil das viel Erfahrung benötigt. Da hast du recht. Habe bereits einmal eines gemacht. Dies mit Erfolg. Jetzt gehts ans zweite... jemand schrieb: > Mit Allwinner ist man halt ange******, weil man keine Doku bekommt. Da > wärst du mit NXP, ST, Microchip oder einem anderen westlichen Hersteller > besser dran, da gibts wenigstens ordentliche Dokumentation. Jap, das habe ich auch schon bemerkt :)
Holger K. schrieb: > Jedoch habe ich gelesen, > dass es offenbar auch Controller gibt, welche noch andere als nur B0 für > das Leveling anwenden. Das wäre seltsam. Weil ja auch das DRAM mitspielen muss. Der Controller kann nicht z.B. auf DQ3 das Signal zur Einstellung des Timings verwenden, wenn das DRAM es auf DQ0 raustreibt. Und jedes DRAM treibt - pro Byte Datenbreite - nur auf dem ersten Bit (DQ0). Was du vielleicht gelesen hast: wenn das DRAM mehr als 8 Bit Datenbreite hat, dann wird aus DRAM-Sicht nicht nur DQ0 verwendet sondern ebenfalls DQ8. Aus Controllersicht bedeutet das, dass auf allen DQ(n*8) das Write-Leveling durchgeführt wird. Udn wenn das Speicherinterface aus DRAMs mit 4 Bit Datenbreite aufgebaut wäre, fände aus Controllersicht auf allen DQ(n*4) das Write-Leveling statt (aus DRAM-Sicht wäre das wieder jeweils nur DQ0).
Vielen Dank für deine Antwort. Du hast recht, das mach Sinn, dass das Memory ja auch konform sein muss. Daraus schliesse ich, dass ich DQ1..DQ7 grundsätzlich tauschen darf. Und DQ0 idealerweise ungetauscht lasse... Dankeschön :)
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.