PCIe, Diagnose und Verbesserung eines Augendiagramms

Ich habe ein Design implementiert, das PCIe verwendet. Es unterscheidet sich etwas darin, dass die PCIe-Schnittstelle als Chip-zu-Chip-Kommunikationsweg auf einer einzelnen Leiterplatte verwendet wird (z. B. kein PCIe-Anschluss).

Das Root-Complex-Gerät ist ein Freescale i.MX6, das PCIe Gen 2-kompatibel ist, und das Gerät, mit dem ich kommuniziere, ist ein Marvell WiFi-Modul, das ein PCIe Gen 3-kompatibles Gerät ist. Es ist eine einspurige Schnittstelle, die mit 2,5 Gbit/s läuft.

Ich habe einige Signalintegritätsmessungen durchgeführt, indem ich ein Hochgeschwindigkeitsoszilloskop mit geeigneten Differentialsonden direkt auf der anderen Seite der unten gezeigten Inline-Kappen gelötet habe:

Geben Sie hier die Bildbeschreibung ein

Für die Uhr sieht das Augendiagramm ganz gut aus:

Geben Sie hier die Bildbeschreibung ein

Aber die TX-Daten nicht so sehr:

Geben Sie hier die Bildbeschreibung ein

Der WiFi-Chip hat On-Chip-Terminierungen, daher glaube ich nicht, dass ich zusätzliche Terminierungen benötigen sollte, aber ich könnte mich darin irren.

Ich habe einige Register gefunden, die innerhalb des i.MX6-Prozessors für das PCIe-Peripheriegerät eingestellt werden können, aber ich bin mir nicht ganz sicher, was sie tatsächlich tun. Ein bisschen Trial and Error hat mich auch nicht weitergebracht.

Geben Sie hier die Bildbeschreibung ein

Ich habe überprüft, ob das Layout den richtigen Routing-Regeln folgt und die Leiterplatte mit der richtigen Impedanz konstruiert wurde. Offensichtlich habe ich etwas Jitter im System, aber es sieht auch so aus, als hätte ich ein Reflexions- oder Deemphasis-Problem. Ich hoffe, jemand könnte beschreiben, was er mit meinem Augendiagramm falsch sieht, und / oder einige Möglichkeiten vorschlagen, es zu beheben.

Beifall!

coole frage. Hoffe auf ein paar gute Antworten.
Wo misst du dein Tx-Auge?
Und worauf sind diese Register eingestellt?
Ein paar Fragen: Welcher TX ist das Problem? der i.MX6 zu Marvell oder Marvell zu i.MX6? Welche Art von Versorgungsfilterung haben Sie um den fehlerhaften Sender oder seine Taktversorgungsschienen herum eingerichtet? Was sind die aktuellen Werte dieser Register?
@SomeHardwareGuy Ich messe das Sendeauge direkt auf der anderen Seite dieser eingekreisten Kondensatoren. In Bezug auf das Layout befinden sich die Kondensatoren sowohl für die Uhr als auch für den TX direkt neben dem WiFi-Chip. Die Gesamtstrecke, über die die Paare verlegt werden, beträgt etwa 2,5 Zoll. Der i.MX6 ist eigentlich Teil eines SOM, das in einen SO-DIMM-Anschluss eingesteckt wird, und ich habe nur das Board entworfen, das dieses SOM und den WiFi-Chip „trägt“.
@akohlsmith & SomeHardwareGuy Die Werte liegen derzeit im mittleren Bereich und basieren auf ihrem Entwicklungsboard. Ich glaube, nur zwei der 5 Register haben zu einem bestimmten Zeitpunkt tatsächlich eine Wirkung. Es scheint, dass das FULL_SWING-Register in Kraft ist, während das LOW_SWING nicht ... ich habe nicht festgestellt, welche Deemphasis aktiv ist, aber ich arbeite mit dem Freescale-Support zusammen, um zu verstehen, was die Werte von pipe0_tx_swing und pipe0_tx_deemph sind, da sie nirgendwo anders enthalten sind die Dokumentation. Ich melde mich wieder, wenn ich dazu mehr erfahre.
@akohlsmith Wie oben erwähnt, verwende ich ein SOM, sodass die Versorgungsfilterung vom Power-Management-IC des i.MX6 zu den eigentlichen Schienen vom SOM-Design übernommen wird. Auf meiner Platine stelle ich 3,3 V von einem TI-Leistungsmodul bereit, das eine ziemlich geringe Welligkeit und 10 uF Umgehung und 100-nF-Kappen für niederfrequentes Rauschen und pF-Bereichskappen für HF-Rauschen aufweist.

Antworten (1)

Es gibt eine ganze Reihe von Dingen, die Ihnen das antun werden.

Sie haben die Länge der Schnittstelle nicht angegeben. Ich leite häufig Chip-zu-Chip-PCIe, und Sie müssen dies wirklich berücksichtigen, da Sie aufgrund von Skin-Effekt-Verlusten eine Dämpfung von etwa 0,18 dB pro Zoll und etwa 0,5 dB pro Zoll aufgrund der dielektrischen Absorption bei „normalem“ FR4 erhalten.

Ich denke, Sie können möglicherweise bessere Zahlen aus dem PCB-Materialdatenblatt erhalten, wenn Sie es herunterladen und sich die Verlusttangente ansehen. Werfen Sie einen Blick auf Isola 370HR für ein typisches Datenblatt. Die obigen Zahlen sind bei der 5-GHz-Rate ziemlich genau. Bei der 2,5-GB-Rate sind die Zahlen mit einem Gesamtverlust von ~ 0,4 dB pro Zoll etwas niedriger.

Ich gehe davon aus, dass Sie abgesehen von Breakout und den Koppelkondensatoren Single-Layer-Routing für die Schnittstelle verwenden. Layer-Übergänge können leicht sehr unangenehme Dinge mit dem Signal anstellen. Die kontrollierte Impedanz ist von Schicht zu Schicht etwas anders, und Reflexionen sind das natürliche Ergebnis (es gibt Möglichkeiten, Multi-Layer-Routing erfolgreich durchzuführen, aber es erfordert viel Sorgfalt und einige ungewöhnliche Tricks, um dies zu erreichen).

Für PCI Express (und Infiniband für diese Angelegenheit) hat die Anstiegs- und Abfallrate des Signals am Sender eine minimale Anstiegs- und Abfallzeit, um EMI-Probleme zu minimieren, und diese Zeit beträgt 0,25 UI, was zu 10-GHz-Signalartefakten auf Gen-2-Verbindungen führt und 5-GHz-Artefakte in Gen 1, die berücksichtigt werden müssen.

Das De-Emphasis-Feld oben hilft Ihnen, den Empfänger sauber im Auge zu behalten , indem es die nicht schaltende Amplitude relativ zur nominalen Einkopplungsamplitude verringert.

Wenn Sie an der Schaltflanke des Signals zu viel Amplitude verlieren, setzen Sie dieses Feld auf einen größeren Wert. Sie können auch die nominelle Launch-Amplitude etwas höher einstellen.

Andere Probleme, die Sie sich ansehen können:

Wo, bezogen auf den Sender, sind die Koppelkondensatoren? Sie sollten so nah wie möglich an den Sendepins liegen. Sobald sie mehr als eine halbe Wellenlänge von 10 GHz (etwa 0,6 Zoll auf FR4) [doppelt so weit für 2,5-Gb/s-Verbindungen] entfernt sind, werden sie definitiv Energie reflektieren.

Ich hatte Probleme mit Kondensatorgeometrien von 0402 oder größer in PCI Express Gen. 2 und ich verwende jetzt Geräte mit umgekehrter Geometrie (0204) für die reduzierte effektive Serieninduktivität. Diese scheinen ihre Arbeit sehr gut zu erledigen.

Wenn Sie sich das Augendiagramm für Übergangsbits genau ansehen (übrigens ein schöner Bereich, den Sie für dieses Zeug brauchen), scheint der anfängliche Signalantrieb eine abgeschlossene Leitung zu treiben (das Signal geht auf 0,5 V (nominal) in klassischer Transmissionline-Manier). Dies ist keine besonders lange Leitung (die Umlaufzeit ist, wo das Signal auf volle V[nominal] fährt).

Sie sagen, dass die Verbindung mit 2,5 Gbit / s (Gen 1) läuft, und das zeigen die Oszilloskopspuren, aber Sie möchten vielleicht mit dem Deemphasis-Feld experimentieren (sehen Sie sowohl im Referenzhandbuch als auch im elektrischen Datenblatt nach (siehe Hinweis unten). Die „Standard“-Deemphasis-Werte gelten für einen nominellen Link, nicht für einen eingebetteten Link, wie Sie ihn hier haben (und was ich auch regelmäßig mache). Wenn Sie es auf etwa 6 dB bringen können, können Sie es bekommen bessere Ergebnisse.

Die nominelle Deemphasis beträgt 3,5 dB für Gen 1 und 6 dB für Gen2. Ich stelle fest, dass das obige Feld zu implizieren scheint, dass ein Gen 2-Link 3,5 dB beträgt - vielleicht möchten Sie ein wenig darüber graben. Der Link, den Sie haben, benötigt mindestens 3,5 dB Deemphasis.

Beachten Sie, dass das Auge beim Empfänger sehr unterschiedlich sein wird, aber hier kommt es darauf an . Lesen Sie als Experiment die Fehlerzähler im Prozessor (die meisten haben einen Zähler für Wiederholungen); Wenn Sie keine signifikanten Fehler sehen, jagen Sie möglicherweise etwas, das nicht wirklich ein Problem darstellt. Wenn Sie eine große Anzahl von Fehlern sehen, kann einiges davon vielleicht helfen.

Noch etwas: Überhöhte Launch-Amplituden und Deemphasis sind genauso schlimm wie eine zu niedrige Einstellung.

Vielleicht hilft dir das ein bisschen: Hoffentlich.

Hinweis: Freescale dokumentiert alles, es ist nur so, dass es manchmal nicht an der erwarteten Stelle ist. Stellen Sie sicher, dass Sie auch über die neuesten Gerätefehler verfügen.

Aktualisieren . Hinweise zu Kondensatorgeometrien hinzugefügt.

Bis zum 2,5-Gbit/s-Knoten sind 0402-Geräte in Ordnung. Mein praktischer Taschenrechner zeigt, dass ein typisches 0402-Gerät bei dieser Frequenz eine Impedanz von etwa 10 Ohm (induktiv) und 21 Ohm bei 5 GHz (der höchsten interessierenden Frequenz) hat. Dies ist in einem 100-Ohm-Differentialsystem nicht allzu schlimm, da die effektive Impedanz eines eng gekoppelten Paares etwas geringer ist als eine direkte Addition.

Die Eigenresonanz für dieses Gerät liegt bei 19 MHz, weit unter allen interessierenden Frequenzen, sodass jegliches Phasenrauschen auf ESL zurückzuführen ist. Wenn die Impedanz auf weniger als etwa 1/3 der effektiven Streckenimpedanz niedrig gehalten wird, bedeutet dies, dass das Phasenrauschen (und damit der zusätzliche ISI) zwischen 1 und 17 Grad liegt (eine asymmetrische Strecke von einem eng gekoppelten Paar ist typischerweise (Z (diff)/2)*1,25, also für 100 diff beträgt die Single-Ended-Impedanz etwa 65 Ohm). Diese Menge an Phasenrauschen ist handhabbar.

Bei 10 GHz beträgt die effektive Impedanz etwa 44 Ohm und kann beginnen, das Differentialpaar zu stören, indem übermäßiges Phasenrauschen über das interessierende Frequenzband eingeführt wird, da die maximale Phase jetzt etwa 34 Grad beträgt. Obwohl ich Gen 2 erfolgreich mit 0402-Geräten durchgeführt habe, hatte ich auch Probleme mit längeren Läufen und verwende jetzt 0204-Geräte mit umgekehrter Geometrie für diese Geschwindigkeit und höher.

Für 8b/10b-codierte Verbindungen reicht das interessierende Frequenzband von Bitrate/5 bis Bitrate * 2. Die untere Grenze wird durch die Lauflängencodierung begrenzt, und die obere Grenze wird durch die Spezifikationsanforderung für minimale Anstiegs- und Abfallzeiten begrenzt .

Die ESL für verschiedene Geometrien:

0402: etwa 700 pH

0204: etwa 300 pH

0805: ca. 1nF

Update Kommentar zu 50 % anfänglicher Startamplitude hinzugefügt.

Betrachten wir eine Übertragungsleitung, die an der Quelle und am Ziel mit der charakteristischen Impedanz der Leitung Z0 endet.

Unter der Annahme, dass die Leitung im Vergleich zur Wellenlänge des Signals lang ist, geht beim anfänglichen Start der Startpunkt aufgrund des Spannungsteilereffekts auf 50 % der Startamplitude (der Sender sieht an diesem Punkt nur die Übertragungsleitung).

Sobald die Energie am Zielpunkt ankommt und auf den 50%-Punkt anzusteigen beginnt, hat die Energie an der Quelle die Leitung effektiv mit Energie „gefüllt“ und steigt auf die volle Startamplitude an. Genau genommen sieht die Übertragungsleitung am Ziel einen Spannungsteiler, und der Teilereffekt an der Quelle verschwindet, wenn sich der Ausgang DC nähert (beachten Sie, dass der Übertragungsleitungseffekt nur auf Übergänge anwendbar ist).

Dies könnte auch als Energieniveau von 50 % visualisiert werden, das sich die Übertragungsleitung hinab bis zum endgültigen Abschluss bewegt und dann mit vollem Niveau zurückreflektiert. Aus diesem Grund sehen wir an jedem Punkt der Linie eine „Umlaufzeit“ im 50%-Punkt.

Ihr Diagramm zeigt genau dieses Verhalten an einem Punkt der Linie, der noch nicht am Zielhafen liegt, weil sich dieser 50%-Punkt tatsächlich entlang der Linie bewegt.

Sobald die Energie am Empfänger den 50%-Punkt erreicht hat, folgt die volle Energie der Leitung und die Spannung am Empfänger steigt weiter an, was einen sanften Übergang von einem Niveau zum anderen ergibt.

Dies könnte auch als der 50-%-Spannungspunkt visualisiert werden, der sich entlang der Leitung zum Empfänger bewegt und dann bei 100 % zurückreflektiert (der Empfänger erreicht zuerst Gleichstrom). Aus diesem Grund zeigt die Spannung bei 50 %, betrachtet an einem beliebigen Punkt auf der Leitung, die Umlaufzeit von diesem Punkt bis zum Empfänger.

Diese Diskussion gilt für differentielle Signale ebenso wie für Single-Ended-Signale.

Ihr Diagramm oben zeigt also ein klassisches Übertragungsleitungsverhalten mit kleinen Abweichungen über das erwartete Verhalten hinaus. Tatsächlich ist dies eines der saubersten Senderaugen, die ich je gesehen habe.

Gute Antwort. Fügen Sie vielleicht eine Referenz oder einige Messungen hinzu, bei denen Sie Reflexionen von Ihren Kappen bei ernsthaften Verlusten sehen? Ich habe das noch nie gesehen und halte es eher für einen Mythos.
In den Kommentaren unter dem Beitrag habe ich klargestellt, dass die Länge etwa 2,5 Zoll beträgt. Wir verwenden tatsächlich Isola 370HR und haben das Layout sehr sorgfältig verwaltet. Allerdings verwenden wir auch ein SOM, das es praktisch unmöglich macht, die Kappen in der Nähe des Senders zu platzieren. Ich messe auf der Empfängerseite der Koppelkappen, die so nah wie möglich am Empfänger ist, bevor die Routen in eine Innenschicht mit kontrollierter Impedanz fallen.
Nachdem ich die obige schöne Antwort gesagt habe. Ich werde es als richtig markieren, auch wenn es nicht direkt zur Lösung meines speziellen Problems führt, da es so viel nützliches Wissen enthält. Irgendwelche Vorschläge für gute Ressourcen zu diesem Thema? Ich finde, das eigentlich praktische Wissen ist in Powerpoints und gelegentlichen Whitepapers eingeschlossen.
Rolf: Die Kappen verursachen eine gewisse Reflexion, wenn sie weit entfernt sind, und es kann verwaltet werden, aber es muss erkannt werden, insbesondere wenn das Signal von einer inneren Schicht zu und von den Kappen kommen muss, was ein paar hinzufügt Durchgänge. Die Diskontinuität ist nicht groß, aber wenn das Link-Budget gestreckt wird, kann das der Tropfen sein, der das Fass zum Überlaufen bringt.
Noch ein paar Fragen, wenn es Ihnen nichts ausmacht! Was meinen Sie, wenn Sie 0,5 V anfänglich mit Vfull vergleichen und die Rundreisezeit erwähnen ...? Wollen Sie damit sagen, dass der erste Teil die Reflexion und das Signal misst und der letzte Teil nur ein Signal ist? Ist das angemessen zu sehen oder schlecht? Trotzdem entfernen?
Zwingen Sie Ihren Link in den polling.compliance-Modus, um diesen Test durchzuführen, oder machen Sie es einfach mit den 8b/10b-Codierungsübergängen? Soll der „Empfangs“-Chip abgeklemmt werden oder muss er in einen bestimmten Modus versetzt werden? Im Moment ist der WiFi-Chip nur eingeschaltet und tut nichts Besonderes.
Für die meisten Tests lasse ich den Link einfach normal laufen, und das ist für mehr als 99 % aller Tests in Ordnung. Das Verständnis der Erkennungs- und Polling-Zustandsmaschinen ist unglaublich nützlich für Links, die nicht richtig angezeigt werden, und hier versuche ich, bestimmte Zustände zu erzwingen.
Der WiFi-Chip muss nichts Besonderes tun - statistisch gesehen sollte das Augendiagramm, das Sie erhalten, aufgrund des Datenverkehrs nicht variieren, da die Verbindung durch ein LFSR (manchmal als PRBS bekannt) verschlüsselt wird, das ein konstantes Leistungsspektrum beibehält Dichte, wenn sie über einen langen Zeitraum gemittelt wird (im Vergleich zu einer Bitzeit). In diesem Fall ist der größte Teil des Verkehrs wahrscheinlich der 'leere' geordnete Satz.