Woher wissen Sie, ob die Impedanz für 2 ICs gleich ist?

In meiner letzten Frage habe ich einige sehr interessante Antworten erhalten, die dazu geführt haben, dass ich viel über mein Design nachgedacht habe, ob ich überhaupt Abschlusswiderstände benötige oder nicht. Darüber hinaus haben mich das in dieser Antwort vorgeschlagene Design sowie die Antwort auf diese spezielle Frage dazu veranlasst, meinen Ansatz im Allgemeinen zu überdenken. Nun, das wird wahrscheinlich eine lange Frage, aber ich hoffe, dass jemand die Geduld hat, die Dinge zu lesen und zu klären. :)

Hintergrund

Ich arbeite seit einiger Zeit an einem Projekt, das unter anderem das Design und die Implementierung der Kommunikation zwischen einem FPGA und einer USB 3.0-Bridge, dem MachXO2 bzw. FT601, beinhaltet. Es ist mein erstes Hochgeschwindigkeitsdesign und ich möchte Erfahrungen und Einblicke in die Prinzipien dieser Art von Design gewinnen.

Ich habe den letzten Monat damit verbracht, eine große Menge Literatur zu studieren, einschließlich Ressourcen von hier , verschiedene andere Artikel aus glaubwürdigen Quellen (wie TI oder hier gestellte Fragen) sowie Herrn Bogatins Buch "Signal and Power Integrity - Simplified". Aus Zeitgründen habe ich nicht so tief studiert, wie ich möchte, aber ich denke, ich habe die grundlegenden Ideen. Mein Problem und meine Verwirrung liegt in der Anwendung dieser.

Erste Ansatz

Mein erster Ansatz zu diesem Thema bestand darin, die Daten, die ich für beide ICs habe, zu untersuchen, um festzustellen, ob ich der Integrität entkommen kann, indem ich die Spuren kurz genug halte. FT taktet mit 100 MHz, bietet aber keine Anstiegszeit. Auf der anderen Seite stellt der MXO2 eine IBIS-Datei für das Design bereit, die eine Anstiegszeit von 0,8 ns meldet, was auch als Anstiegszeit für FT sinnvoll erscheint. Für 0,8 ns meldet PCB Toolkit eine maximale Leiterbahnlänge von 1,25 Zoll. Obwohl ich eine solche Länge erreicht habe, waren die Spuren dicht gepackt, was zu einem erheblichen Übersprechen führen kann. Darüber hinaus zeigte die Simulation mit MXO2 IBIS für mein Design in Altium ein signifikantes Über- und Unterschwingen. Jetzt verstehe ich, dass dies möglicherweise nicht ganz korrekt ist, da ich kein richtiges IBIS für FT habe, aber es hat mich trotzdem alarmiert.

Abschluss von Rs

Sicherheitshalber habe ich mich für Vorwiderstände entschieden und die Leiterbahnen mit 50Ω abgeschlossen. Die Platine ist natürlich so ausgelegt, dass die jeweiligen Leiterbahnen eine Impedanz von 50Ω haben. Ich habe diesen Wert gewählt, weil Sie mit dem FT-Konfigurationsdienstprogramm die Pin-Treiberstärke auf 50 Ω konfigurieren können, sodass wir mit diesem Treiber in Ordnung sind, und MXO2 die Leitungen mit 3,3 V, 8 mA ansteuert, was nach dem, was ich gelesen habe, auch ungefähr 50 Ω entspricht. Auch die Tatsache, dass viele der Leitungen bidirektional sind, verwirrt die Situation noch mehr. Nach dem, was ich gelesen habe, müssen Bidir-Leitungen in beide Richtungen enden. Also habe ich Rs in meinem Design sowohl am Anfang als auch am Ende der Linien platziert, die Simulation erneut ausgeführt und ich habe einige glatte Kurven erhalten. Dann stellte ich meine vorherige Frage.

Meine Verwirrungsquelle

Nun fragen Sie sich vielleicht, warum ich das Terminierungsschema verwendet habe, da beide Treiber bei 50 Ω auszugeben scheinen. Und meine Antwort ist, weil ich die Impedanz jedes Empfängers nicht kenne. Und hier beginnt für mich die Verwirrung. Theorie und Zeug ist alles gut, aber ich stecke in der praktischen Anwendung fest.

Laut Theorie treten keine Reflexionen auf, wenn Zt, Zr und Z0 gleich (oder nahe beieinander) sind. Ich kenne Z0, seit ich es entworfen habe, aber was ist mit Zt und Zr? Und um die Dinge noch komplizierter zu machen, sind diese Leitungen bidirektional, sodass sie die Funktionalität wechseln.

Ich weiß, dass es für die FT 50 Ω sein kann, da Sie den Chip so konfigurieren können. Aber obwohl MXO2 bei LVCMOS33, 8 mA auch 50 Ω haben sollte, und der IBIS-Viewer berichtete, dass die Leitung tatsächlich viel weniger wie 25-30 Ω oder so hat, was die Sache für mich noch komplizierter macht.

Aber unabhängig von der IBIS-Datei (viele Anbieter bieten sowieso keine an), lässt sich meine Verwirrung auf diese einfachen und wahrscheinlich naiven Fragen zusammenfassen:

  • Ich habe die Datenblätter von beiden ICs. Wo steht geschrieben, impliziert oder kann die Eingangs-/Ausgangsimpedanz der Pins berechnet/extrahiert werden?

  • Ist die Ausgangsimpedanz dieselbe wie die Eingangsimpedanz für I/O-Pins?

  • Gibt die Spezifikation des Protokolls (in diesem Fall LVCMOS33) die I/O-Impedanz an?

  • Woher soll ein Designer wissen, dass die Impedanzen zwischen diesen beiden ICs übereinstimmen, sodass nur eine kontrollierte Leitung erforderlich ist?

Da das in meiner anderen Frage erwähnte Design keine Rs verwendet, ist die einzige vernünftige Antwort, die mir einfällt, dass wahrscheinlich das gesamte Design tatsächlich eine bestimmte Impedanz sowie die daran angeschlossenen FPGAs ist.

All das mag für einen erfahrenen Designer ziemlich trivial erscheinen, hat mich aber seit geraumer Zeit wirklich verwirrt. Wenn es mein Ruf zulässt, würde ich für diese Frage gerne ein Kopfgeld aussetzen. Ich habe gesucht, aber ich konnte auf keine Informationen landen.

Antworten (3)

Ich habe nicht Ihre gesamte Textwand gelesen, aber ich glaube nicht, dass die Antworten auf Ihre Fragen von viel von dem abhängen, was Sie geschrieben haben.

Ich habe die Datenblätter von beiden ICs. Wo steht geschrieben, impliziert oder kann die Eingangs-/Ausgangsimpedanz der Pins berechnet/extrahiert werden?

Verschiedene Anbieter haben unterschiedliche Konventionen für die Art und Weise, wie sie dies melden. Man könnte eine Ausgangsimpedanz melden. Man könnte einen melden | S 22 | Grenze. Man könnte ein typisches berichten S 22 ( F ) Kurve. Sie müssen jedes einzelne Datenblatt lesen und sehen, wie sie ihren Chip spezifizieren.

Bei einigen Arten von ICs sind Eingangs- und Ausgangsimpedanzen überhaupt nicht angegeben.

Ist die Ausgangsimpedanz dieselbe wie die Eingangsimpedanz für I/O-Pins?

Nicht unbedingt. Bei einem digitalen Puffer würden Sie beispielsweise erwarten, dass die Eingangsimpedanz sehr hoch und die Ausgangsimpedanz sehr niedrig ist.

Gibt die Spezifikation des Protokolls (in diesem Fall LVCMOS33) die I/O-Impedanz an?

Ja, für CMOS können Sie eine "sehr niedrige" Ausgangsimpedanz erwarten, vielleicht einige Ohm. Und die Eingangsimpedanz wird von der Kapazität dominiert, die sehr oft angegeben wird.

Woher soll ein Designer wissen, dass die Impedanzen zwischen diesen beiden ICs übereinstimmen, sodass nur eine kontrollierte Leitung erforderlich ist?

Bei CMOS-Designs passen Sie die Impedanzen im Allgemeinen nicht an, sondern halten die Leitungen so kurz, dass es keine Rolle spielt. Ein Reihenwiderstand von wenigen Ohm an Treibern kann verwendet werden, um das Klingeln zu reduzieren, aber es wird immer noch kein tatsächlich angepasster Abschluss erwartet.

Eines habe ich aus deinem Text herausgegriffen,

Für 0,8 ns meldet PCB Toolkit eine maximale Leiterbahnlänge von 1,25 Zoll.

Eine Möglichkeit besteht darin, einen Vorwiderstand an der Quelle zu verwenden, um die Anstiegs- und Abfallzeiten zu erhöhen. Wenn Sie die Flankenzeit auf vernünftigere 2 ns (für eine Taktperiode von 10 ns) erhöhen, erhalten Sie eine maximale unübertroffene Spurlänge, mit der Sie viel einfacher arbeiten können.

Vielen Dank für Ihre Antwort, obwohl sie die Dinge nicht vollständig klärt, fühle ich mich sicherer in Bezug auf mein Design. Eine letzte Frage, auf die ich gerne näher eingehen würde (die meinen Text wahrscheinlich nicht gelesen hat), ist, dass viele dieser Zeilen bidirektional sind. Im Allgemeinen verstehe ich, dass Sie am Ausgang einen Vorwiderstand platzieren. Im Falle einer bidirektionalen Funktion, da sie beide als Ausgang und Eingang fungieren, wo platzieren Sie das R? Oder platzierst du einen auf beiden Seiten? Eine Antwort in meiner vorherigen Frage schlug ein R vor und bei kurzen Längen unter 2-3 Zoll spielt es keine Rolle, wo es platziert wird.
@Manos, möchten Sie die Teilenummer für die Teile, die Sie in Betracht ziehen, teilen (oder einen Link zum Datenblatt in Ihrem Beitrag angeben)?
Natürlich FT601 und MachXO2 . Nochmals vielen Dank für Ihre Antwort.
Ich habe gerade ein FT601-basiertes Design auf meiner Werkbank, aber es ist nicht mein Design, also kann ich Ihnen nur sagen, dass der parallele Bus nicht das ist, was Probleme verursacht hat. Wahrscheinlich haben wir den FT601 jedoch innerhalb von 2 Zoll des FPGA, mit dem er spricht (kann dies morgen überprüfen).
Sie meinen also, dass 2-Zoll-Spuren ein sicherer Abstand sind und keine Rs verwendet wurden? Ich frage, weil die Simulation in Alitum mit 1,3-Zoll-50-Ω-Spuren eine erhebliche Verzerrung zeigte.
@Manos, ich werde es morgen noch einmal überprüfen.
@Manos - Ich verstehe Ihre Frustration bei dem Versuch, die Lücke zwischen Theorie und Praxis im Bereich der Signalintegrität zu schließen. Ich bin weder mit den Teilen vertraut, die Sie verwenden, noch mit welchem ​​bestimmten Pin verbunden ist. Wie auch immer, wenn Sie normale Logiksignale anschließen, ist es besser, einfach einen Serienabschluss an der Quelle zu verwenden, damit der externe Widerstand plus die interne Ausgangsimpedanz des Treibers der charakteristischen Impedanz der Spur entspricht. Wenn sie bidirektional sind und zu einem bestimmten Zeitpunkt jede Seite entweder ein Eingang oder ein Ausgang ist, hätte ich an beiden Enden Vorwiderstände.
@Manos, mein Projekt verwendete einen 33-Ohm-Serienabschluss auf der FTDI-Seite, keinen Abschluss auf der FPGA-Seite. Die Spurlänge beträgt ~ 1 Zoll. Keine bekannten Probleme mit dieser Schnittstelle bei Dutzenden von Boards, die im Feld eingesetzt werden.
@ThePhoton Vielen Dank, dass Sie daran gedacht haben, es sich anzusehen! Heute habe ich herausgefunden, dass die Konfiguration des Ausgangs des FPGA als LVCMOS33, 4 mA gemäß dem generierten IBIS zu einer Impedanz von 50 Ω führt. FT ist auch als 50Ω konfigurierbar, also bin ich dafür, die R's wegzulassen, habe ich recht? Simulation scheint in Ordnung zu sein, sehr geringes Unterschwingen/Überschwingen (<=40 mV)
@Manos, ich würde lieber die Widerstandsposition setzen und sie mit 0 Ohm stopfen, wenn ich entscheide, dass ich sie nicht brauche, als die Widerstandsposition nicht setzen und die Platine neu drehen müssen, wenn ich entscheide, dass ich sie brauche. Sie werden wahrscheinlich ein Array mit 4 oder 8 Widerständen verwenden wollen, um Platz zu sparen.

Dies ist eine Punkt-zu-Punkt-Verbindung?

Dann ist die Quellenterminierung durch die Ausgangsimpedanz des Treibers wahrscheinlich alles, was Sie brauchen, wenn Sie den Treiber so konfigurieren können, dass er der Leitungsimpedanz entspricht (was sich so anhört, als könnten Sie dies tun).

Wenn beispielsweise der Treiber 50 Ohm und die Leitungsimpedanz 50 Ohm beträgt und einen CMOS-Eingang ansteuert (also im Wesentlichen ein leicht kapazitiver offener Stromkreis), erhalten Sie am Empfänger eine fast 100% ige Reflexion, was in Ordnung ist, da dies korrekt ist abgeschlossen durch die Ausgangsimpedanz des Treibers. Beachten Sie, dass die doppelte Spannung am Empfänger im Vergleich zu der sich in der Leitung ausbreitenden Spannung aufgrund des durch die Leitungsimpedanz und die Ausgangsimpedanz des Treibers gebildeten Teilers korrekt ist, offensichtlich sobald die Reflexion am Treiber ankommt und der stationäre Zustand beendet wird gilt und die Leitungsimpedanz nicht mehr relevant ist.

Wo solche Dinge birnenförmig werden, ist, wenn Sie entweder eine Multi-Drop-Bus-Topologie oder sehr steife Treiber haben, die beide am Ende irgendeine Form von Terminierung benötigen, um ein gutes Verhalten zu erzielen, aber es hört sich so an, als wäre dies hier nicht der Fall.

Danke für die Antwort! Soweit ich weiß und Sie angegeben haben, werden keine Rs benötigt, wenn ich beide Treiber für die Ausgabe bei 50 Ω konfigurieren könnte, solange die Leiterbahnimpedanz ebenfalls 50 Ω beträgt und alles in Ordnung ist. Was mich zu der anderen Frage brachte: Woher weiß ich die Ausgangsimpedanz des Treibers? Im Datenblatt steht das nicht explizit. FT hat Konfigurationsoptionen, mit denen Sie 50 Ω so fein auswählen können. Aber MXO2 (FPGA) hat Optionen für LVCMOS33, um bei 4, 8, 16, 24 mA auszugeben. Wie ist dies mit einer Ausgangsimpedanz korreliert?

Es gibt viele Möglichkeiten, zwei Geräte miteinander zu verbinden. Abhängig vom Timing und der Verbindungsgeschwindigkeit können Sie ein Spektrum an Verbindungen verwenden, angefangen von einseitigen, nicht abgeschlossenen Leitungen bis hin zu vielen Arten von impedanzgesteuerten Differenz-Transceivern. Bei Altera bin ich mir nicht sicher, aber besorgen Sie sich einfach fast alle Xilinx-Datenblätter oder E/A-Designleitfäden, wie diese , und Sie werden eine ganze Vielfalt und viele verfügbare Optionen sehen.

Danke für deine Antwort, werde ich auf jeden Fall lesen. Ich kenne die verschiedenen Verbindungen und verwende LVDS an anderer Stelle im Design. Es ist dieser spezielle Fall, den ich beschreibe, der so viele Probleme verursacht.