Nachteile der Verwendung von Single-Ended-Kommunikation über differenzielle Paare

Ich habe kürzlich ein ZYBO-FPGA-Board gekauft, nur um herauszufinden, dass es genau sechs reguläre Single-Ended-GPIO-Leitungen gibt, die mit dem FPGA verdrahtet sind. Im Gegensatz dazu stehen 18 Differenzleitungen zur Verfügung. Das Referenzhandbuch des Boards besagt, dass die Single-Ended-Kommunikation über die Differenzleitungen funktioniert, aber "erhebliches Übersprechen" aufweist. In diesem Fall wird empfohlen, eine Leitung des Differentialpaars zu erden, aber dies wird offensichtlich den ganzen Zweck zunichte machen, mehr Single-Ended-IO-Leitungen zu haben.

Was genau ist also „signifikantes“ Übersprechen? Wie schnell könnte ich kommunizieren (Single-Ended)? Würde Hochgeschwindigkeits-I2C gut funktionieren? 2 Mbit SPI? Was ist mit einer 25 MHz parallelen Datenübertragung? Kann irgendetwas anderes getan werden, um Übersprechen zu vermeiden oder zu korrigieren?

Antworten (3)

Obwohl die Leitungen als differentielle Paare geführt werden, ist dies nicht unbedingt ein Killer für Ihre Art von Anwendung. Das Ausmaß des Übersprechens dürfte tatsächlich noch recht gering sein, da Diff-Paare oft näher an der Grundplatte als aneinander geführt werden. Es ist nicht so, als wären sie ein verdrillter Draht ohne Abschirmung, bei dem die Signale effektiv viel besser miteinander gekoppelt sind. Und die Spuren sind wahrscheinlich relativ kurz, stelle ich mir vor (wenn Sie eine parallele Übertragung in Betracht ziehen).

Ich würde vorschlagen, dass Sie problemlos einen parallelen 25-MHz-Bus mit einem in Reihe geschalteten Takt einrichten könnten, um dem Gerät am anderen Ende zu signalisieren, die Daten zu speichern. Treiben Sie die Daten auf eine Kante, verriegeln Sie sie auf der gegenüberliegenden Kante, Sie haben 20 ns Zeit für Übersprechen und Reflexionen, um sich zu beruhigen). Sie könnten die negative Seite des Takttreibers auf '0' treiben und ihn vom Datenbus entfernt platzieren, um dieses Signal so sauber wie möglich zu halten. Es hört sich nicht so anders an, als wie wir früher asynchrone SRAM-Datenbusse geroutet haben (alle Drähte verlaufen sehr eng zusammen mit einer flankengetriggerten Schreibfreigabeleitung) und das hat früher gut funktioniert :)

Die Drähte in den Differentialpaaren werden sehr nahe beieinander verlegt, sodass Signale von einem Draht auf den benachbarten Draht gekoppelt werden können. Der größte Teil des Übersprechens ist wahrscheinlich kapazitiv. Stellen Sie sich die beiden Drähte als Platten in einem Kondensator vor. Eine plötzliche Änderung in einem Draht wird auf den anderen "durchsickern". Eine solche Kopplung ist frequenzabhängig. DC wird überhaupt nicht koppeln. Langsame Flanken können ein wenig koppeln. Sehr schnelle Flanken können sehr stark koppeln. Wenn Sie eine Rechteckwelle mit sehr schnellen Flanken auf einen Draht legen, erhält der benachbarte Draht scharfe positive und negative Flanken, gefolgt von exponentiell abfallenden Flanken. Die positiven Spitzen entsprechen der steigenden Flanke der Rechteckwelle, die negativen Spitzen entsprechen der fallenden Flanke.

Wenn Sie gezwungen sind, differenzielle E/A als Single-Ended-E/A zu verwenden, müssen Sie einige Überlegungen anstellen. Wenn die Gesamtlänge der Spur kurz ist, können die Effekte so klein sein, dass sie ignoriert werden können. Wenn die Spur lang ist, müssen Sie möglicherweise etwas tun, um das Übersprechen zu verringern. Eine einfache Lösung besteht darin, nur einen Draht aus jedem Paar zu verwenden. Der andere Draht kann auf Masse getrieben werden, oder die beiden können auf dem gleichen Logikpegel getrieben werden. Dadurch reduziert sich jedoch die Anzahl der verfügbaren I/Os um den Faktor 2. Eine andere Möglichkeit besteht darin, die Anstiegsgeschwindigkeit der Ausgangs-I/O-Pins zu verringern. Xilinx-FPGAs haben mehrere Auswahlmöglichkeiten für die Antriebsstärke und die Anstiegsgeschwindigkeit. Drehen Sie die Anstiegsgeschwindigkeit auf die niedrigste Einstellung, quietio. Versuchen Sie auch, die Antriebsstärke zu verringern. Sie können auch versuchen, die 50-Ohm-Quellenimpedanz einzuschalten, da dies begrenzt, wie viel Strom aus dem Stift fließen kann.

Es ist schwer zu sagen, wie schnell du laufen könntest, ohne deutlich mehr Informationen darüber zu haben, was du zu tun versuchst. Leider kenne ich mich mit dem Board nicht gut genug aus, um dir eine Einschätzung geben zu können. Es sieht so aus, als könnten die Spuren ziemlich kurz sein.

Um eine Vorstellung davon zu bekommen, wie viel Übersprechen Sie auf einem Paar bekommen können, stellen Sie den FPGA so ein, dass er einen auf einem konstanten Pegel (GND oder VDD) hält und den anderen auf ein paar MHz umschaltet. Stellen Sie die Anstiegsgeschwindigkeit am IO-Pin auf schnell ein. Schließen Sie dann ein Zielfernrohr an den "Opfer" -Stift an und messen Sie die Höhe der Spitzen. Wenn es viel weniger als VDD ist, verursacht es möglicherweise keine Probleme.

Wenn Sie ein einzelnes Kabel und eine Rückleitung (Masse) haben und Daten übertragen, wird das durchschnittliche elektrische Feld an jedem Punkt entlang der Länge des Kabels von der Datenleitung und der Masse stammen - in einfachen Worten, wenn die Daten 5 V pp waren, die elektrische Feld wäre die Hälfte dieses Wertes. Dies ist nicht direkt am Draht, sondern in einiger Entfernung von dem Paar.

Bei einem differenziell angesteuerten Kabelpaar sind die Signale gegenphasig, dh wenn eines bei 5 V liegt, liegt das andere bei -5 V - das elektrische Nettofeld ist über die gesamte Länge des Kabels Null, außer wenn es sich in der Nähe des einen oder anderen Kabels befindet.

Dasselbe gilt für normale gegenphasige Logikpegel - Sie können sich vorstellen, dass 2,5 V der Mittelpunkt ist - ein Draht liegt 2,5 V über dem Mittelpunkt, während der andere 2,5 V unter dem Mittelpunkt liegt.

Wenn also ein differenziell angesteuerter Draht kein signifikantes elektrisches Feld erzeugt, gibt es kein Übersprechen. Das ist die einfache Version. Es ist auch das Magnetfeld zu berücksichtigen, aber da der Strom einen Draht hinauf und umgekehrt auf den anderen fließt UND die beiden Drähte gleiche Geometrien haben, ist das Nettomagnetfeld in einer kürzeren Entfernung theoretisch Null.

Was genau ist also „signifikantes“ Übersprechen? Wie schnell könnte ich kommunizieren? Würde Hochgeschwindigkeits-I2C gut funktionieren? 2 Mbit SPI? Was ist mit einer 25 MHz parallelen Datenübertragung? Kann irgendetwas anderes getan werden, um Übersprechen zu vermeiden oder zu korrigieren?

  1. Hoffentlich habe ich das beantwortet, aber es wird komplexer, wenn die Datengeschwindigkeit steigt, weil Sie symmetrische Terminierungen benötigen.
  2. Über abgeschirmtes Twisted-Pair habe ich Schaltungen entworfen, die über 35 Meter bei etwa 400 Mbit / s funktionieren. Es gibt viele schnellere als das, aber ich dachte, ich würde meine persönliche Arbeit als Beispiel teilen.
  3. I2C erfordert Klimmzüge und ich bin mir nicht sicher, ob dies aufgrund von Kabelkapazitätsproblemen funktionieren würde - Sie werden nicht so weit kommen, denke ich. SPI ist in Ordnung - ich habe 2 Mbit / s über 15 m mit symmetrischen Kabeltechniken durchgeführt.
  4. 25Mbps parallele Daten werden zu einem Problem, wenn Verzögerungszeiten zwischen einem Paar und dem nächsten dazu führen, dass die Daten beim Empfänger falsch gelesen werden. Ich neige dazu, Chipsätze wie den MAX9205 zu verwenden - es ist ein 10 Bit breiter Datenserialisierer, der gut für 600 MBit/sek ist: -

Geben Sie hier die Bildbeschreibung ein

Sie können den gleichen Chip von TI bekommen, aber er hat eine andere Nummer und sie sind austauschbar.

Danke soweit, das hat einiges klarer gemacht. Den MAX werde ich mir auch anschauen. Was ich jedoch fragen wollte, war, inwieweit die Single-Ended-Kommunikation beeinträchtigt würde, wenn Leitungen (oder allgemein Drähte) verwendet würden, die für die Differenzsignalisierung ausgelegt wären. Im Moment geht es mir nur um die Lanes auf dem Board vom FPGA bis zum (Pmod) Connector. Die Drähte werden auch nicht so lang sein; Im Grunde geht es um ein Experiment in Steckbrettgröße mit einer OV7670-Kamera, die 8-Bit-Daten mit 25 MHz austaktet - mir gehen die GPIOs aus.
Wie lang ist ein stück schnur. Ich habe Single-Ended 40 Mbit / s über sehr gutes Koax in einer Entfernung von 350 Metern gesendet. An der nicht-differenziellen Signalisierung ist grundsätzlich nichts auszusetzen, aber in Gegenwart von Interferenzen ist sie um ein Vielfaches anfälliger, aber "viele Male" kann zweimal oder zehnmal bedeuten - sie ist berufsabhängig und kabelabhängig und geschwindigkeitsabhängig und protokollabhängig.
Es gibt Dinge, die Sie tun können, um Rausch- und Übersprechprobleme zu minimieren. Früher habe ich ein altes 80-adriges IDE-Kabel verwendet, um meine Signale mit meiner FPGA-Karte zu verbinden. Es dauert einige Zeit, die speziellen Anschlüsse herzustellen, aber dann haben Sie ein Kabel mit GND zwischen jedem Signal, was ziemlich hilfreich ist, wenn Sie viele Signale mit relativ hoher Geschwindigkeit ausführen. Für das PMOD denke ich, dass 25 MHz in Ordnung sein sollten, das Problem ist die Anzahl der Drähte und wie Sie sie mit dem FPGA verbinden.