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
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