Hallo, ich habe hier einen DDR2 an einen Virtex5 FPGA mit MIG generiertem Design anzuschließen und bin schon so weit, dass ich nur mehr einzelne Bitfehler habe (die recht deterministisch auftreten, ich könnte jetzt auch nicht sagen, ob die schon beim Schreiben oder erst beim Lesen passieren) aber ich bin mir unsicher, ob ich die I/O Standards zur Terminierung passend gesetzt habe. Vielleicht kennt sich hier ja jemand damit aus. Das ganze läuft mit SSTL 1.8 V Standard. Also: Ich habe vor dem Slot parallele Terminierungen mit 50 Ohm Widerständen zu 0.9 V auf folgenden Signalen: CK0, CK0#, CK1, CK1# S0#, S1# RAS#, CAS#, WE# BA2, BA1, BA0 A12, ..., A0 Sonst habe ich noch einen 1k Pulldown auf folgenden Signalen: CKE0, CKE1 ODT0, ODT1 Abgesehen davon sehe ich im Schematics keine Terminierungswiderstände, auch nicht serielle an den FPGA Ausgängen. Dafür benutze ich DCI, ich habe zwar keine Referenzwiderstände aber für SSTL18_I geht es auch ohne. Ich habe also folgende I/O Standards gesetzt: SSTL18_II: DQ63, ..., DQ0 SSTL18_I_DCI: S0#, S1#, RAS#, CAS#, WE#, BA2, BA1, BA0, A12, ..., A0 DIFF_SSTL18_II: DQS7 ... DQS0, DQS#7 ... DQS#0, CK0, CK0#, CK1, CK1# Ich denke, dass ich da noch Fehler drinnen hab und ich bin schön langsam ziemlich verunsichert, weil ich in den Schematics nichts von seriellen Terminierungswiderständen an den FPGA Ausgängen sehe, diese im V5 User Guide aber doch überall eingezeichnet sind. Hat jemand diesbezüglich eine Ahnung, was zu verwenden ist? Die Bezeichnung des Boards ist übrigens AES-XLX-V5LXT-PCIE110-G, das Internet hat mich aber auch noch nicht schlauer gemacht. Danke und LG Matthias
Also, ich bin, was DDR2 betrifft leider auch nicht die Referenz, aber: Hast Du nur beim Speicher terminiert? Ggv. mußt du beim FPGA und beim Speicher terminieren, mit je 100 Ohm ( Also 100 /2 ist wieder 50) Oder Dir helfen Serienwiderstände von 1-50 Ohm? Hast Du die Signale mit kontrollierter Impedanz geroutet? Vielleicht passt einfach die Impedanz der Leiterbahnen nicht.
Wenn ich mich recht erinnere kann man beim Xilinx und/oder den micron-rams (via configregister) für SSTL 1.8V noch zwischen I und II wählen, wovon eines ne reduced drive strength hat. Die "normale" drive strength braucht man wohl nur wenn man DIMM-riegel anschliessen will, ansonsten faengt man sich mit der reduced weniger probleme ein. Hast da schonmal mit I/II gespielt?
Hallo, danke für die Antworten. Mit wechseln von Class II auf I auf den DQ Leitungen könnte ich vielleicht noch was holen, das probiere ich gerade aus. Da das Board insgesamt schon fertig ist, habe ich keine Möglichkeit, da noch serielle Widerstände an den Transmitter zu geben, was aber nur bei den bidirektionalen Signalen ein Problem sein dürfte (und auch da anscheinend nur auf den differentiellen DQS, map frisst anscheinend SSTL Class I auch für die DQ Leitungen). Ich melde mich wieder wenn ich Ergebnisse von diesen Versuchen habe, danke und LG Matthias
ODT0:1 ist die on-die Terminierung. Spiel mal damit rum, vielleicht wirds so besser. Ansonsten: Deine Pulldowns entsprechen ungefähr dem was man für ein DDR2-Dimm braucht. Also: Modul oder Chip? Serienwiderstände sind für Längsterminierung. Das ist dann aber ein Fall für sich, da das Layout und Lagenaufbau des Boards mitspielen muß.
Hallo, sorry, dass es ein DIMM ist hätte ich schon früher mal sagen können. Ergebnisse des Umstellens der DQ auf Class I: maximal gefühlte Verbesserung, es schaut aber doch so aus, dass es sich um ein Leseproblem handelt, da die drei Bits, um die es geht, doch ganz gelegentlich mal richtig daherkommen (nicht alle zur selben Zeit aber nach einigen dutzend Versuchen hat man schon jedes mal richtig gesehen). Das Problem tritt immer auf den den letzten beiden Wörtern eines 4 Wörter langen Bursts auf, vielleicht ist also einfach das Ergebnis des Kalibrationsprozesses für diese drei Bits nicht korrekt. Die I/F-Frequenz ist mit 125 MHz relativ niedrig, ich muss mir das erst genauer anschauen, vielleicht kann man da mit Nachstellen über das Debug-I/F diese Probleme beseitigen. Bzgl ODT: Laut MIG User Guide ist ODT während des Lesens disabled, also bringt es mir unter Annahme eines Leseproblems nichts, daran herumzudrehen. Die größten Sorgen machen mir eben diese fehlenden Widerstände für die Längsterminierung, ich hab mir das jetzt auch bei einem anderen Design (anderes Board, Altera FPGA) angeschaut, da gibt es für alle Leitungen serielle Terminierungen. Auch im V5 User Guide sind beim SSTL18 Kapitel überall serielle Terminierungen. LG Matthias Nur das Board, das ich verwende, hat keine, das ist mir nicht ganz geheuer.
Theoretisch ist die serielle Terminierung bei DDR2 nicht mehr in jedem Fall nötig. Wie lang sind denn so ca. die Traces vom FPGA zum DIMM? Kenne mich nicht so wahnsinnig gut aus, hatte mich aber vor kurzem mit DDR-Terminierung beschäftigt, allerdings ohne DIMM. Der Virtex bietet doch auch die Digitally Controlled Impedance (DCI) an, spielt die schon irgendeine Rolle bei Deinen IO-Einstellungen?
Die Leitungen sind wohl ziemlich kurz, der FPGA ist auf der Vorderseite des Boards, der DDR2 Slot auf der Rückseite, der Unterschied sind wohl nur wenige cm, die Leitungen müssten per Vias durchs Board geführt sein. DCI kann ich für die unidirektionalen Signale machen, da braucht es auch keine Referenzwiderstände. Das hat eine eindeutige Verbesserung gebracht, davor war kaum erkennbar, dass der Speicher irgendwie sinnvoll angesteuert wird. Auf den differentiellen Signalen und den bidirektionalen kann ich ohne Referenzwiderstände allerdings kein DCI machen. Laut Schematics ist in keiner Bank auf den VRP oder VRN ein Widerstand angeschlossen, also denke ich, dass da nichts geht. Na wenn die serielle Terminierung nicht immer notwendig ist dann glaube ich mal dran, dass der Board Designer das richtig gemacht hat und schaue, dass ich mit den Delay Werten im MIG hinkomme. Es wäre zwar nicht der erste Fehler, der auf dem Board auftaucht, aber vielleicht sollte ich einfach optimistisch sein. LG Matthias
Werden denn alle DDR2-relevanten Timing-Constraints erfüllt ? Gruß, SuperWilly
Die vom MIG vorgegebenen werden alle erfüllt. Die Direct Routing Constraints kann er auch umsetzen und wenn ich im FPGA Editor nachschaue sehe ich den Read Data Capture Circuit so, wie er im MIG User Guide beschrieben ist. Es klappt ja es auch für ~95% der Pins, wahrscheinlich ist das eh der normale Schnitt für ein MIG Design. Die restlichen 5% muss ich jetzt eben ohne Chipscope auf die Reihe bringen, aber nachdem das Design eh schon ein schönes Interface über PCIe hat hoffe ich, dass das auch in wenigen Tagen machbar ist. LG Matthias
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.