Forum: FPGA, VHDL & Co. Frage zu DDR2 Terminierung


von Matthias (Gast)


Lesenswert?

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

von Frank B. (frankman)


Lesenswert?

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.

von hunz (Gast)


Lesenswert?

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?

von Matthias (Gast)


Lesenswert?

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

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

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.

von Matthias (Gast)


Lesenswert?

Ups, der Gruß hätte natürlich ans Ende gehört ...

von Ras F. (rasfunk)


Lesenswert?

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?

von Matthias (Gast)


Lesenswert?

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

von SuperWilly (Gast)


Lesenswert?

Werden denn alle DDR2-relevanten Timing-Constraints erfüllt ?

Gruß,
SuperWilly

von Matthias (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.