Forum: FPGA, VHDL & Co. GBit Inter-Board Link


von P. K. (pek)


Lesenswert?

Um in meinem Sensor-Handset die verbrauchte Leistung zu reduzieren, 
denke ich darüber nach, mein FPGA (z.Zt. Startix III) aufzuteilen und 
den rechenintensiven Part sowie den DDR-Zwischenspeicher auf die 
zugehörige PC-Karte zu verbannen (am Kabel ca. 3m entfernt) und nur noch 
das Sensor-Handling lokal zu haben. Damit das funktioniert, müsste ich 
etwa 4-8 GBit/s streamen können. Dazu kommt noch ein minimaler 
Kontrolldatenfluss in beide Richtungen.

Der Stream sollte sich wie ein FIFO verhalten, ich möchte also 
eigentlich lieber nicht den ganzen Overhead von Link Layer/MAC und die 
ganze Protokollgeschichte, wie es z.B. 10Gbit Ethernet erfordert, 
mitschleppen.

Hat irgendjemand von Euch schon was in dieser Richtung gebaut? Wie geht 
man das an, um den Overhead minimal zu halten?

Gibt's allenfalls irgendwo Reference-Designs im Netz, die sowas 
aufgreifen?

von Christian R. (supachris)


Lesenswert?

Mach das doch einfach mit den Multi Gigabit Transceivern. Sowas gibts 
sicherlich auch am Stratix. Ich arbeite gerade mit den MGTs am Spartan 
6, sind nach einger Einarbeitung recht leicht zu Handhaben. Die LVDS 
Leitungspaare für RX, TX und REF Clock kannst du dann über einige Meter 
ziehen, eventuell noch einen Cable Redriver einbauen. Da bist du an kein 
Protokoll gebunden, als "Overhead" hast du die 8B/10B Kodierung drin, 
wenn du den REF Clock auf beiden Seiten aus dem selben Oszillator 
verwendest, brauchst du auch keine Clock Correction mit Paddings Words 
einzubauen, da nix weglaufen kann. Eigentlich eine einfache Sache. 
Flusskontrolle müsstest du noch einbauen, falls da ein FIFO überlaufen 
kann.

von Joe (Gast)


Lesenswert?

>wenn du den REF Clock auf beiden Seiten aus dem selben Oszillator
>verwendest, brauchst du auch keine Clock Correction mit Paddings Words


Wie soll das denn bitte funktionieren? Zwei Bausteine des gleiches Typs 
haben immer eine ppm-Abweichung, so dass du in jedem Fall eine Clock 
Frequency Compensation (und i.d.R. eine Clock Phase Compensation) 
benötigst!

von P. K. (pek)


Lesenswert?

Joe schrieb:
> Wie soll das denn bitte funktionieren?

Über das Clocking mache ich mir zur Zeit nicht wirklich Sorgen, da der 
Bulk-Link unidirektional ist und für die Kommunikation ein I2S oder so 
reicht.

Die Frage ist vielmehr, was ich pro LVDS-Link über meine geforderten 3m 
kriege. Wikipedia sagt dazu

> Mit Cat-5-Kabel UTP ist typischerweise eine Leitungslänge von etwa 2 m
> bei einer Datenrate von 200 MBit/s möglich.

was natürlich himmeltraurig ist (mit 30 twisted Pairs für 6 GBit wäre 
das dann ein Totschläger und kein flexibles Arbeitsgerätekabel).

Christian R. schrieb:
> Die LVDS Leitungspaare für RX, TX und REF Clock kannst du dann über
> einige Meter ziehen

Was könnte man da mit endlichem Aufwand (z.B. S/STP) an Durchsatz 
gewinnen, hast Du eine Schätzung mit was ich da in etwa rechnen könnte?

von Christian R. (supachris)


Lesenswert?

Joe schrieb:
> Zwei Bausteine des gleiches Typs
> haben immer eine ppm-Abweichung

Ja genau, deswegen schrieb ich ja den selben und nicht den gleichen. 
Also nur ein Oszillator für beide Seiten zusammen und den REF Clock 
mit übertragen. Dann brauchst du das nicht.

Peter K. schrieb:
> Was könnte man da mit endlichem Aufwand (z.B. S/STP) an Durchsatz
> gewinnen, hast Du eine Schätzung mit was ich da in etwa rechnen könnte?

Hm, naja, kommt auf die Kabelqualität an. Mit TP kabel wird das nix 
werden. Es gibt ja extra dafür gemachte Kabel. Zum Beispiel betreiben 
wir hier ein Gerät mit Cabled PCI Express, da gibts diese TDP Kabel von 
Molex 
(http://www.molex.com/molex/products/family?key=tdp_triad_differential_pair&channel=products&chanName=family&pageTitle=Introduction), 
da gehen locker 5 GBit/s rüber, also PCIe 2.0, die haben verschraubbare 
Stecker und fertige Kabel gibts in 1m, 3m und 7m.
Momentan habe ich hier einen Versuchsaufbau mit dem SP605 Board von 
Xilinx und die MGT über kleine SMA Kabel. Die Dinger sind im Spartan 6 
auf 3,125GBit/s limitiert, ich hab hier den Aufbau mit 3.0GBit/s laufen.

Über TP Kabel ist ja bei GbE schon schwierig, da sitzt meines Wissens im 
PHY jede Menge "Intelligenz" die aus den verrauschten Signalen noch die 
Daten heraus rechnet. Direkt an die MGT angeschlossen wird da nicht mehr 
viel ankommen. Genau kann ich das aber nicht sagen.

Edit: Kannst auch mal hier rein schauen. Ist zwar Xilinx lastig, aber 
vermittelt viele Basics: 
www.xilinx.com/publications/archives/books/serialio.pdf

von P. K. (pek)


Lesenswert?

Hi Chris

Erst mal vielen Dank für Deinen Überblick. Glaube das gibt einen guten 
Startpunkt ab, die Xilinx-Doku schein was herzugeben, werde ich sicher 
für meine erste Lernkurve in dem Gebiet benutzen...
Eine Frage bleibt aber noch:

Christian R. schrieb:
> da gibts diese TDP Kabel von Molex

Ich habe zwar auf die Schnelle keine TDP-Kabel-Spec gefunden, aber ich 
denke dahinter steckt auch wieder eine Art TP, einfach jedes Paar 
einzeln abgeschirmt und wahrscheinlich die Gesamtheit auch nochmals (wie 
Cat-7). Der Benefit der Molex-Kabel sehe ich dann eher darin, dass die 
Stecker eine möglichst gute Impedanzanpassung haben. Oder liege ich da 
falsch?

Thanks & Gruss

von Christian R. (supachris)


Lesenswert?

Ja, das sind 3 differenzielle Paare und ein paar Steuerleitungen. Die 
Impedanz ist auf die LVDS angepasst. Außerdem ist das Industriestandard 
und der Stecker ist 1000 mal stabiler als RJ45. 3m Kabel davon kosten 
bei Digikey allerdings etwa 30€.

von Dirk (Gast)


Lesenswert?

Von diesen ganzen FPGA und LVDS Zeug habe ich keinen Plan, allerdings 
wäre es eine möglicherweise eine Idee handelsübliche SFP's zu verwenden.

http://en.wikipedia.org/wiki/Enhanced_small_form-factor_pluggable_transceiver#Signals

Die Dinger sind nicht auf Ethernet beschränkt, z.b. SAN's mit 
Fiberchannel verwenden die gleichen SFP's, die Pinbelegung sieht so aus 
als könnten diese "einfach" mit einem differentiellen Signal angesteuert 
werden.

von Christian R. (supachris)


Lesenswert?

SFP Module gehen natürlich auch. Sind auf den Xilinx Boards immer 
vorgesehen an die MGT anzuschließen. Allerdings kommst du dann um Clock 
Correction nicht herum, die übertragen keinen REF CLOCK mit.

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.