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