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
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.
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 ;)
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.
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.