Hallo,
habe grad hier mal ein Design wo mehrere differentielle Leitungen für
eine Kameraschnittstelle erzugt werden müssen.
Möchte nun diese am Oszilloskop auf Phase kontrollieren. Nun kann ich
die positive oder negative Leitung des LVDS einzeln vergleichen.
Nun will ich aber positiv und negativ auswegewertet vergleichen mit
einem phasensynchronen Takt. Dazu entweder messtechnisch über zwei
Tastköpfe mittels Mathe funktion oder ich hab mir gedacht an einem FPGA
Entwicklungsboard lese ich die LVDS Pins ein und erzeuge daraus Single
Ended Outputs die ich am Oszilloskop vergleichen kann.
NET "DIFF_1[*]" IOSTANDARD = LVDS_25;
NET "DIFF_1[*]" DIFF_TERM = "TRUE";
NET "SE_1" IOSTANDARD = LVCMOS25;
NET "DIFF_2[*]" IOSTANDARD = LVDS_25;
NET "DIFF_2[*]" DIFF_TERM = "TRUE";
NET "SE_2" IOSTANDARD = LVCMOS25;
Nur leider ist der Hub beim SE_1 und SE2 sehr klein, kleiner als die
LVDS Pins.
Meine Frequenzen bewegen sich im Bereich 40-100MHz vorerst.
Dass ich bei dieser Anwendung ein PAD to PAD delay habe ist mir klar,
daher habe ich darauf geachtet, dass alle die gleiche Verzögerung
geroutet bekommen.
Ist mein Ansatz evtl. nicht korrekt? Oder unvollständig?
Oder muss ich unbedingt eine PLL oder so benutzen um einen stabilen
Output zu bekommen?
Und poste mal bitte die Warnings..
Kann es sein, dass du das Constraint DIFF_TERM gar nicht auf ein Signal
anwenden darfst, sondern nur auf die Instanz des IOBuffers?
Hier mal ein Oszi Bild (siehe Bild 1)
Gelb ist das SE_1 Signal
Die anderen beide jeweils P/N des LVDS.
Die Pins die ich gewählt habe liegen alle auf einer Bank direkt
nebeneinander. Nehme ich das SE_1 Signal weiter weg auf der gleichen
Bank bekomme ich ein besseres Signal mit mehr Hub (siehe Bild 2, warum
auch immer sind bei der Messung die diff. Signale verzehrt, ohne den SE
sehen sie gut aus).
Der Sinn warum ich versucht habe die Pins nebeneinander zu setzen, dass
ich so wenig wie möglich routing delay habe von PAD to PAD. Da ich min.
4 Diff to SE umwandlungen haben werde will ich die PAD to PAD Delays
alle gleich (!) routen lassen.
Den DIFF_TERM sehe ich im Pinout Report. Habe versucht ihn im IBUFGDS
Primitive im generic map zu deklarieren, spuckte aber errors aus.
Warnings sind an sich auch keine da.
Hmm, also mit AC Kopplung siehst du natürlich nur den AC Anteil des
Signals.
Auch wenn das jetzt sicher nicht das Problem ist, aber vielleicht kannst
nochmal ein Bild machen, wo du das SE-Signal DC-gekoppelt misst.
Ganz abgesehen davon finde ich deine Idee, die Phasenlage der LVDS
Signale über diese Methode zu kontrollieren etwas ungeschickt.
Du willst ja ne Aussage über die Qualität des eigentlichen Signals.
Und dazu leitest du es durch ein FPGA, der irgendwelche Skews macht.
Warum machst du die Messung nicht zweistufig.
Erster Schritt:
Augendiagramm jedes LVDS Kanals ermitteln.
Wenn da die Augen gut sind, dann kannst du davon ausgehen, dass die
Phase zwischen LVDS+ und LVDS- Null ist.
Wenn das bei allen Kanälen zutrifft, dann vergleichst du im nächsten
Schritt nur noch die LVDS+ Leitungen untereinander.
Aber natürlich: Das Verhalten hier ist merkwürdig und es wäre schon
interessant, was da nicht stimmt.
AC oder DC hat am Signal nichts geändert, halt nur dass es auf den
Nullpunkt verschoben ist.
Habe leider leider leider meinen Fehler entdeckt! Das gelbe Signal in
Bild 1 ist ein hochohmiger pin, hab mich beim messen versehentlich
falsch gesteckt. In Bild 2 war ich halt am richtigen pin.
Zur Methode, warscheinlich nicht die beste, aber da ich vermeiden will
eine differential probe zu benutzen und keine sauberen (!) Messungen mit
schnelleren LVDS Signalen habe, habe ich mir diesen weg überlegt.
Das ist das PAD to PAD Report meiner Diff to SE pins.
All values displayed in nanoseconds (ns)
DIFF_1<0> |SE_1 | 5.612|
DIFF_1<1> |SE_1 | 5.612|
DIFF_2<0> |SE_2 | 5.606|
DIFF_2<1> |SE_2 | 5.606|
DIFF_3<0> |SE_3 | 5.598|
DIFF_3<1> |SE_3 | 5.598|
DIFF_4<0> |SE_4 | 5.616|
DIFF_4<1> |SE_4 | 5.616|
Vom report ausgehend habe ich ~20ps Unterschied untereinander, das ist
akzeptabel für die Messung. Mein schnellstes Signal wird ca. 350MHz sein
(später).
Im angehängten Bild sieht man nun das saubere SE Signal. die
Phasenverschiebung passt auch zum Report.
User schrieb:> Habe leider leider leider meinen Fehler entdeckt
Wieso leider? Ist doch gut, wenn man den Fehler gefunden hat..
User schrieb:> aber da ich vermeiden will> eine differential probe zu benutzen
Du kannst auch zwei Single Ended Probes nehmen und die Differenz im Oszi
ausrechnen lassen.
User schrieb:> Vom report ausgehend habe ich ~20ps Unterschied untereinander, das ist> akzeptabel für die Messung.
Das ist in der Tat nicht viel.
Wenn dir die Methode so taugt, dann kann man das natürlich so machen.
Schlumpf schrieb:> User schrieb:>> aber da ich vermeiden will>> eine differential probe zu benutzen>> Du kannst auch zwei Single Ended Probes nehmen und die Differenz im Oszi> ausrechnen lassen.
genau, die Methode hatte ich ja oben auch erwähnt. Bin dann auf 2
Messungen beschränkt.
User schrieb:> Dazu entweder messtechnisch über zwei> Tastköpfe mittels Mathe funktion oder
Weiterhin ist der Vorteil einer Diff to SE Umwandlung, dass ich es in
einem Logic Analyzer leichter triggern kann.
Ich danke dir sehr, dass du dir Zeit genommen hast.
User schrieb:> genau, die Methode hatte ich ja oben auch erwähnt. Bin dann auf 2> Messungen beschränkt.
Ich meinte es eher so, dass du erst prüfst, ob deine 4 Kanäle in sich
gut sind.
Das heißt für jeden Kanal machst du getrennt eine Messung mit 2 Probes.
Wenn du die Integrität jedes Kanal in sich festgestellt hast, dann
kannst von jedem Kanal nur den LVDS+ betrachten und hast somit 4 Kanäle.
User schrieb:> Weiterhin ist der Vorteil einer Diff to SE Umwandlung, dass ich es in> einem Logic Analyzer leichter triggern kann.
Das ist natürlich ein gutes Argument.
User schrieb:> Ich danke dir sehr, dass du dir Zeit genommen hast.
Keine Ursache :-)
Die differentiellen Signale nimmt ja nicht umsonst.
Schau Dir mal an, welche Frequenzen der FPGA mit Single-Ended ausgeben
kann und wie weit er mit differentiellen Signalen kommt.
Schon beim Spannungshub ist da ein Faktor von ~10 drin (3 V vs. 2x150
mV).
User schrieb:> Mein schnellstes Signal wird ca. 350MHz sein> (später).
Wie hoch ist die Abtastrate von deinem Oszilloskop? Wie genau soll die
Messung des Phasenversatzes werden?
Duke
Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
Groß- und Kleinschreibung verwenden
Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang