Forum: FPGA, VHDL & Co. Erfahrungen mit hohen seriellen Datenraten gesucht


von Achim (Gast)


Lesenswert?

Hallo,

für ein Sensorsystem sollen mehrere FPGAs (bis zu 20) Source Synchron 
Daten (Sensordaten + Routing Information) seriell auf ein zentrales 
Routing FPGA schicken, der die Daten wiederum Source Synchron verteilt. 
Die Datenrate pro FPGA ist dabei min. 125Mbit. Wie sind eure Erfahrungen 
hinsichtlich der Datenrate bei Spartan-6 (oder zukünftig Artix) FPGAs: 
Sind bei der Übertragung von Takt und Daten getrennt über LVDS und evtl. 
SelectIO Primitives "problemlos" höhere Datenraten möglich? Was habt ihr 
schon in der Praxis umgesetzt und ab wann traten Probleme auf? Die 
Entfernung von Quelle zu Senke wäre max. 50cm (PCB) mit 1-2 noch zu 
definierenen Steckverbindern dazuwischen.

Vielen Dank schon mal und viele Grüße

Achim

von Christian R. (supachris)


Lesenswert?

Du könntest dich von vornherein gleich an den OSERDES und ISERDES 
Primitiven orientieren. Damit sind Datenraten von bis zu 1,08GBit/s pro 
differenziellem Paar möglich. Und die haben bei differenziellen 
Eingängen am Spartan 6 1:8 bzw. 8:1 Fähigkeiten. Beim Spartan 6 muss man 
ziemlich aufpassen, was das Clock Routing angeht, da kann man den 
mitgelieferten Takt nicht auf jeden Pin geben. Prinzipiell brauchst du 
dann aber einen Takt und ein Frame-Sync pro Datenleitung, wobei der 
Sensor natürlich gleich mehrere Lanes parallel mit dem selben Frame-Sync 
ausgeben kann. Schau dir mal z.B. das Datenblatt des LTC2175 ADC an, der 
hat auch solche Ausgänge.

von Achim (Gast)


Lesenswert?

Danke für deine Antwort! Zu dem Thema habe ich mir mal die xapp1064 
angeschaut, die ziemlich vielversprechend ist. Allerdings halte ich die 
1,08GBit/s für einen eher akademischen Wert - aus diesem Grund würde 
mich mal interessieren, wie die Erfahrungen mit I/OSERDES bei Datenraten 
um die 300MBit/s sind. Läuft das so problemlos, wie es in der xapp 
klingt? Der Hinweis zum Thema Clock Routing ist schon mal sehr gut, 
danke. Ich hatte überlegt, auf ein Frame Sync zu verzichten und statt 
dessen die Daten (auch ohne Taktrückgewinnung) 8b10b zu codieren und 
K-Wörter als Symbolkennung zu benutzen. Andernfalls wird es mit den Pins 
am FPGA schnell rar ;)

von Christian R. (supachris)


Lesenswert?

Also ich hab den LTC2175 ADC hier mit 125MS/s am SP605 laufen, das 
ergibt 1000MBit/s pro Pin. Das geht problemlos selbst über den FMC 
Adapter und eine eigene 4-Lagen Platine. Das ganze läuft LVDS DDR mit 
500MHz Takt, den der ADC liefert. Allerdings muss man wie gesagt 
aufpassen, der Clock geht nur auf einen GCLK Eingang zu legen, der in 
der gleichen halben Bank liegt wie die Daten-Lanes, die dazu gehören. 
8B/10B on the Fly ohne dedizierte Hardware ist natürlich machbar, aber 
unschön. Dafür eignen sich eher die MGTs.

von Bissinger (Gast)


Lesenswert?

Achim schrieb:
> Allerdings halte ich die
> 1,08GBit/s für einen eher akademischen Wert
Ich habe vor Kurzem in einer Sensorapplikation Automotive 2x400MHz DDR 
ganz "unakademisch" eingelesen. Die Daten kommen in je 8 Bit und werden 
mit 2 LVDS-ISERDES eingelesen. Der Takt dafür wird intern mit 4x2x50 
erzeugt, synchronisicert wird auf einen externen Takt von 50MHz, der mit 
den Datenleitungen kommt.

Die ISERDES synchen sich quasi auf die Taktflanke der 50ers und lesen ab 
da mit 400 MHz ein - jeweils auf zwei Paaren um 90° versetzt (IQ) - 
praktisch also 800MHz.

von Achim (Gast)


Lesenswert?

@Christian R.

> 8B/10B on the Fly ohne dedizierte Hardware ist natürlich machbar, aber
> unschön. Dafür eignen sich eher die MGTs.

Die MGTs will (kann) ich leider nicht benutzen, weil es unter den 
bezahlbaren Spartan-6/Artix/Kintex keine gibt, die 20 davon haben. 8b10b 
war eine Idee um die Signalintegrität zu verbessern und in dem 
Zusammenhang ein Frame Sync zu zaubern. Ein gemeinsames Frame-Sync 
scheidet aus, weil immer unterschiedliche Sensoren angeschlossen sein 
können und damit unter einander asynchron laufen. Auf die Sache mit der 
halben Bank werde ich achten. Die Datenraten die du erzielst sind aber 
schon mal vielversprechend.

@Bissinger

Kannst du bitte noch 1-2 Details schreiben, über welche Strecke und 
evtl. Steckverbinder die Datenverbindung läuft? Danke!

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.