Forum: FPGA, VHDL & Co. Serialissierte Datenübertragung FPGA <-> Parallelbus


von Chrikapie (Gast)


Lesenswert?

Morgen,

ich brauche mal einen Schubser in die richtige Richting.

Wir steuern zwei Geräte per FPGA über jeweils 32 Bit (1 Daten- und ein 
Steuerwort). Das ganze ist recht schnell, u.A. deswegen der FPGA. 
Rechnerisch ca. 30Mbit oder schneller, was parallel natürlich kein 
Problem ist.

Jetzt ist die Überlegung die Übertragung zu serialisieren, galvanisch zu 
trennen und räumlich zu entkoppeln. Sprich Lichtwellenleiter.

Prinzipiell reicht ja ein Schieberegister mit Latch, allerding will ich 
das Rad nicht neu erfinden sondern benutzen.

Meine Recherchen haben mich bisher zu SERDES bzw. Transceiver/Receiver 
ICs gebracht. Prinzipiell eine schöne Sache, aber das scheint mit etwas 
komplex für den Eigenbau. Die ICs z.b. von Cypress, TI etc. scheinen 
alle max, 8-10 Bit zu übertragen. Für 32 Bit bracht man man eine 
schnelle Logik (Digitallogik, oder gleich IC/FPGA), ein Protokoll etc. 
Außerdem wollen wir keine komplexen Platinen entwerfen.

Wie macht man das? Gibt es fertige Module?

Ggf. müsste man auch schauen ob der FPGA die Serialisierung übernimmt, 
d.h. ob es IP-Cores gibt. Denn eigentlich ist die IO-Benutzung eine 
massive Ressourcenverschwendung die z.Z. auch ein Problem ist.

Gruß
Christoph

von Christian R. (supachris)


Lesenswert?

Viele akuelle FPGAs haben solche Multi Gigabit Transceiver. Also z.B. 
die Basis für PCIe oder SATA. Die Cores für die Ansteuerung gibts 
eigentlich immer dazu, did high level Sachen wie PCIe und so kosten 
meistens. Brauchst du ja aber nicht. An diese Ports kannst du direkt 
z.B. SFP Module für LWL anschließen. Bei den Xilinx Demo Boards ist der 
SFP Käfig meist schon drauf, das könntest du fertig nehmen.

von Strubi (Gast)


Lesenswert?

Moin,

ev. kannst Du ja schon die 7:1 CameraLink-Logik des MachXO2 oder '3 
vergewaltigen. Fragt sich halt, was du für Datenraten brauchst..
Für mehr (bis 3 Gbit/s) musst du halt zu was wie ECP3, ECP5 oder doch 
was aus der Xilinx-Reihe im höheren Preissegment greifen.
Auf jeden Fall musst du da kaum viel neu machen, das kommt alles mehr 
oder weniger "gratis" mit und funktioniert recht gut.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Chrikapie schrieb:
> Jetzt ist die Überlegung die Übertragung zu serialisieren, galvanisch zu
> trennen und räumlich zu entkoppeln. Sprich Lichtwellenleiter.
Warum kommst du von diesen Anforderungen auf dieses teure Medium? Andere 
übertragen Gigabits pro Sekunde für einen Bruchteil der Kosten.

Wenn die 30MBit pro Sekunde sind, dann ist die Ein- und Ausgabe auch 
ganz ohne Zusatzhardware kein Problem. Denn gleich vor dem Sender und 
nach dem Empfänger ist das nur noch ein 32-bit Wort pro Mikrosekunde...

Wenn es 30 Millionen Kommandos pro Sekunde mit je 64 Bits sind, dann ist 
das mit 1GBit/s schon sportlicher.

: Bearbeitet durch Moderator
von Lala (Gast)


Lesenswert?

Lothar M. schrieb:
> arum kommst du von diesen Anforderungen auf dieses teure Medium? Andere
> übertragen Gigabits pro Sekunde für einen Bruchteil der Kosten.

Was ist da teuer? Bitte um Beispiele!

von Klaus F. (kfalser)


Lesenswert?

Chrikapie schrieb:
> Die ICs z.b. von Cypress, TI etc. scheinen
> alle max, 8-10 Bit zu übertragen.

Du solltest das Rad nicht neu erfinden.
Die 8B/10B Kodierung ist ein Standard, der technische Vorteile bietet 
und überall Verwendung findet.
Viele FPGAs haben SERDES Blöcke, welche darauf basieren und 
untereinander kompatibel sind.

Übertrage die 32 Bit lieber als 4 x 8Bit.

von Strubi (Gast)


Lesenswert?

Lala schrieb:
> Was ist da teuer? Bitte um Beispiele!

Teuer im Vergleich zu SATA/HDMI usw. ist das schon, ein optischer 
Gigabit-Transceiver macht was her. Bei einer entsprechenden Rate würde 
ich da lieber in etablierte Cores investieren und den Spass per 
einfaches SATA-Kabel (been there, done that, siehe auch die Klassiker 
von Dan Strother) oder auf TMDS-Basis (HDMI) umsetzen (das 
Lane-Deskewing-Geraffel muss man dafür ja nicht implementieren).
Mit TMDS hat man es fast so gut wie galvanisch entkoppelt. Ansonsten 
gibt es auch Verrückte, die per Twisted Cat5 lustige LVDS-Sachen machen.
10b8b ist dafür Pflicht, aber sowas muss man ja nicht neu schreiben.

von Chrikapie (Gast)


Lesenswert?

Vielen Dank schonmal für die Antworten, und sorry wegen der verspäteten 
Antwort.

Strubi schrieb:
> Moin,
>
> ev. kannst Du ja schon die 7:1 CameraLink-Logik des MachXO2 oder '3
> vergewaltigen. Fragt sich halt, was du für Datenraten brauchst..
> Für mehr (bis 3 Gbit/s) musst du halt zu was wie ECP3, ECP5 oder doch
> was aus der Xilinx-Reihe im höheren Preissegment greifen.
> Auf jeden Fall musst du da kaum viel neu machen, das kommt alles mehr
> oder weniger "gratis" mit und funktioniert recht gut.
Danke, natürlich geht das irgendwie. Aber ich weiß nicht ob das der 
richtige Weg ist. Mein erster naiver Gedanke war: Kann man da nicht 
irgendwas missbrauchen? Dann ist mir allerdings eingefallen dass man 
auch einfach die richtige Lösung für das Problem kaufen kann ... ;-)

Lothar M. schrieb:
> Chrikapie schrieb:
>> Jetzt ist die Überlegung die Übertragung zu serialisieren, galvanisch zu
>> trennen und räumlich zu entkoppeln. Sprich Lichtwellenleiter.
> Warum kommst du von diesen Anforderungen auf dieses teure Medium? Andere
> übertragen Gigabits pro Sekunde für einen Bruchteil der Kosten.
Naja alles ist relativ. Die Kosten für Empfänger und Sender sind nach 
dem was ich bisher gesehen habe überschaubar.
Außerdem reden wir hier von einzelgefertigter Hardware für sehr 
spezifische Zwecke.
Kosten sind erstmal zweitrangig, sofern die Lösung zieführend, sinnvoll 
und begründbar ist.

Klaus F. schrieb:
> Chrikapie schrieb:
>> Die ICs z.b. von Cypress, TI etc. scheinen
>> alle max, 8-10 Bit zu übertragen.
>
> Du solltest das Rad nicht neu erfinden.
> Die 8B/10B Kodierung ist ein Standard, der technische Vorteile bietet
> und überall Verwendung findet.
> Viele FPGAs haben SERDES Blöcke, welche darauf basieren und
> untereinander kompatibel sind.
>
> Übertrage die 32 Bit lieber als 4 x 8Bit.
Ja klar, mir ist es letztendlich egal was wie übertragen wird.
Die Frage ist: Wie sieht die Empfängerseite aus? Gibt es da was 
fertiges?

Die Alternative ist ein vergleichbaren FPGA wie bisher. Wäre dann einer 
pro Empfangsseite. Dann muss ich mich "nur" noch darum kümmern wie die 
FPGAs untereinander kommunizieren.
Da bin ich allerdings recht zuversichtlich, bzw. das ist ja nichts was 
man nicht was man nicht vorher rausfinden kann.
Das ganze sah auf den ersten Blick etwas übertrieben aus (d.h. unnötig 
teuer).

Strubi schrieb:
> Lala schrieb:
>> Was ist da teuer? Bitte um Beispiele!
>
> Teuer im Vergleich zu SATA/HDMI usw. ist das schon, ein optischer
> Gigabit-Transceiver macht was her. Bei einer entsprechenden Rate würde
> ich da lieber in etablierte Cores investieren und den Spass per
> einfaches SATA-Kabel (been there, done that, siehe auch die Klassiker
> von Dan Strother) oder auf TMDS-Basis (HDMI) umsetzen (das
> Lane-Deskewing-Geraffel muss man dafür ja nicht implementieren).
> Mit TMDS hat man es fast so gut wie galvanisch entkoppelt. Ansonsten
> gibt es auch Verrückte, die per Twisted Cat5 lustige LVDS-Sachen machen.
> 10b8b ist dafür Pflicht, aber sowas muss man ja nicht neu schreiben.
Ich glaube ich bräuchte jemanden wie dich als Kollegen ... ;-)

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Chrikapie schrieb:
> Morgen,
>
> ich brauche mal einen Schubser in die richtige Richting.
>
> Wir steuern zwei Geräte per FPGA über jeweils 32 Bit (1 Daten- und ein
> Steuerwort). Das ganze ist recht schnell, u.A. deswegen der FPGA.
> Rechnerisch ca. 30Mbit oder schneller, was parallel natürlich kein
> Problem ist.
>
> Jetzt ist die Überlegung die Übertragung zu serialisieren, galvanisch zu
> trennen und räumlich zu entkoppeln. Sprich Lichtwellenleiter.

Warum kein LAN 100MBit

von Strubi (Gast)


Lesenswert?

Chrikapie schrieb:
...
> Danke, natürlich geht das irgendwie. Aber ich weiß nicht ob das der
> richtige Weg ist. Mein erster naiver Gedanke war: Kann man da nicht
> irgendwas missbrauchen? Dann ist mir allerdings eingefallen dass man
> auch einfach die richtige Lösung für das Problem kaufen kann ... ;-)
>

Wenn dein FPGA halt schon steht, nimm nen externen Serdes und steuer ihn 
an. Wenn du die Wahl hast, ist die pure FPGA-Lösung sicher weniger 
stressig. Der Sensor-Extender mit den MachXO2 von Lattice ist z.B. gut, 
der macht genau so ne LVDS-Nudelei über ein RJ45 Cat5, am einen Ende 
gehn Videodaten rein, am andern wieder 1:1 raus. Ist halt nonstandard, 
max. Bandbreite glaube ich bei ca 60 MB/s (600 mbit/s auf dem LVDS).
Und nicht galvanisch entkoppelt (ohne Trafo am RJ45).

Der SATA-Hack läuft wiederum auf einem Spartan6 ganz ok, allerdings 
dauerte das deutlich länger als mit dem MachXO2 und lief auf eklige 
manuelle Plazierung raus, die Xilinx-P&R war da echt bitchy.

Fragt sich halt, was du für nen FPGA einsetzt, und ob die galvanische 
Entkopplung so zwingend ist. Wenn ja, ist Renes Argument mit einem 
echten Phy auch noch gewichtig, nur bringt Ethernet wieder so andere 
Probleme und Verkomplizierung.

Chrikapie schrieb:
> Ich glaube ich bräuchte jemanden wie dich als Kollegen ... ;-)

Aber nicht, dass du mir dann das Zeug auf meinen Schreibtisch legst, 
nech :-)

von Chrikapie (Gast)


Lesenswert?

Strubi schrieb:
> Chrikapie schrieb:
> ...
>> Danke, natürlich geht das irgendwie. Aber ich weiß nicht ob das der
>> richtige Weg ist. Mein erster naiver Gedanke war: Kann man da nicht
>> irgendwas missbrauchen? Dann ist mir allerdings eingefallen dass man
>> auch einfach die richtige Lösung für das Problem kaufen kann ... ;-)
>>
>
> Wenn dein FPGA halt schon steht, nimm nen externen Serdes und steuer ihn
> an. Wenn du die Wahl hast, ist die pure FPGA-Lösung sicher weniger
> stressig.
Genau da hänge ich aber. Wenn ich einen externen SERDES nehme, brauch 
ich doch wieder eine Logik die die Daten verwertet und nach meinen 
Wünschen parallelisiert?
Denn ein SERDES das mir 32Bit überträgt und parallel ausgibt habe ich 
nicht gesehen, bzw. scheint ja auch etwas an der Grundidee vorbei zu 
gehen.
D.h. wenn ich sowieso eine Logik brauche, dann kann ich doch direkt die 
FPGA zu FPGA Lösung vorziehen ?

Strubi schrieb:
> Der Sensor-Extender mit den MachXO2 von Lattice ist z.B. gut,
> der macht genau so ne LVDS-Nudelei über ein RJ45 Cat5, am einen Ende
> gehn Videodaten rein, am andern wieder 1:1 raus. Ist halt nonstandard,
> max. Bandbreite glaube ich bei ca 60 MB/s (600 mbit/s auf dem LVDS).
> Und nicht galvanisch entkoppelt (ohne Trafo am RJ45).
Witzig, da gibts ein Raspberry-Shield für :-D ... ist vielleicht was für 
mich zum Spielen daheim.

Strubi schrieb:
> Fragt sich halt, was du für nen FPGA einsetzt, und ob die galvanische
> Entkopplung so zwingend ist. Wenn ja, ist Renes Argument mit einem
> echten Phy auch noch gewichtig, nur bringt Ethernet wieder so andere
> Probleme und Verkomplizierung.
Ist ein Virtex-5. Galv. Entkopplung weil Geräte mit hohe Lasten 
geschaltet werden (120kW peak) und Erdschleifen vermieden werden müssen. 
Außerdem ist es natürlich furchtbar cool (deswegen müssen es auch 
zwingend sichtbares Wellenllängen sein).

Strubi schrieb:
> Chrikapie schrieb:
>> Ich glaube ich bräuchte jemanden wie dich als Kollegen ... ;-)
>
> Aber nicht, dass du mir dann das Zeug auf meinen Schreibtisch legst,
> nech :-)
Ne das nicht. So ein Problem ist nur ein furchtbar undankbares 
Smalltalkthema. Aber auch eins bei dem 15 Minuten Kaffeepausengespräch 
mehr bringen als 4 Stunden google.

von Strubi (Gast)


Lesenswert?

Chrikapie schrieb:
..
> Denn ein SERDES das mir 32Bit überträgt und parallel ausgibt habe ich
> nicht gesehen, bzw. scheint ja auch etwas an der Grundidee vorbei zu
> gehen.
> D.h. wenn ich sowieso eine Logik brauche, dann kann ich doch direkt die
> FPGA zu FPGA Lösung vorziehen ?
>

Ja, zumindest hat sich das bei mir so immer herausgestellt.
32 Bit gibt's m.W. nicht, also etwas Demux/Mux-Logik musst du so oder so 
basteln, 7:1 ist ja auch an den 28 Bit des CameraLink-Standards 
orientiert.
Das ist ja ansich auch ein Klacks umzusetzen, wenn man sich nicht die 
Sorgen betr. der physikalischen Uebertragung machen müsste.

> Strubi schrieb:
>> Der Sensor-Extender mit den MachXO2 von Lattice ist z.B. gut,
>> der macht genau so ne LVDS-Nudelei über ein RJ45 Cat5, am einen Ende
>> gehn Videodaten rein, am andern wieder 1:1 raus. Ist halt nonstandard,
>> max. Bandbreite glaube ich bei ca 60 MB/s (600 mbit/s auf dem LVDS).
>> Und nicht galvanisch entkoppelt (ohne Trafo am RJ45).
> Witzig, da gibts ein Raspberry-Shield für :-D ... ist vielleicht was für
> mich zum Spielen daheim.
>

Poste doch mal den Link, würde mich auch interessieren. Konnte es nicht 
finden.


> Strubi schrieb:
>> Fragt sich halt, was du für nen FPGA einsetzt, und ob die galvanische
>> Entkopplung so zwingend ist. Wenn ja, ist Renes Argument mit einem
>> echten Phy auch noch gewichtig, nur bringt Ethernet wieder so andere
>> Probleme und Verkomplizierung.
> Ist ein Virtex-5. Galv. Entkopplung weil Geräte mit hohe Lasten
> geschaltet werden (120kW peak) und Erdschleifen vermieden werden müssen.
> Außerdem ist es natürlich furchtbar cool (deswegen müssen es auch
> zwingend sichtbares Wellenllängen sein).
>

Du hast ja Randbedingungen :-)
Also die mir so gängigen Dinger gehen alle bei 850nm los (IR).
Langsamer geht es sicher auch bei 650, die Fasern sollten das packen.
HDMI/TMDS hacks fallen aber so wohl weg, wenns massefrei sein muss.


> Strubi schrieb:
>> Chrikapie schrieb:
>>> Ich glaube ich bräuchte jemanden wie dich als Kollegen ... ;-)
>>
>> Aber nicht, dass du mir dann das Zeug auf meinen Schreibtisch legst,
>> nech :-)
> Ne das nicht. So ein Problem ist nur ein furchtbar undankbares
> Smalltalkthema. Aber auch eins bei dem 15 Minuten Kaffeepausengespräch
> mehr bringen als 4 Stunden google.

Bei Google findet man lange schon keine Geheimtips mehr...

von Chrikapie (Gast)


Lesenswert?

>> Strubi schrieb:
> Poste doch mal den Link, würde mich auch interessieren. Konnte es nicht
> finden.
Unter Development Kits & Boards
http://www.latticesemi.com/en/Products/DevelopmentBoardsAndKits/RaspberryPiFPGA.aspx
http://www.bugblat.com/products/pif/index.html
Gibts auch bei watterott 
(http://www.watterott.com/de/Bugblat-PIF2-FPGA-for-Raspberry-Pi). Bin 
mir nicht ganz sicher ob das sinnvoll ist, aber zum Spielen reicht es 
hoffentlich. Ich hab auch keine Ahnung was für ein Rattenschwanz an 
Ärgernissen das hinter sich herzieht. Aber wenns geht wäre das ein 
schöner Test-Zwerg.

>
>> Strubi schrieb:
> Du hast ja Randbedingungen :-)
> Also die mir so gängigen Dinger gehen alle bei 850nm los (IR).
> Langsamer geht es sicher auch bei 650, die Fasern sollten das packen.
> HDMI/TMDS hacks fallen aber so wohl weg, wenns massefrei sein muss.
Naja gut die sichtbare Wellenlänge ist eher eine der ... optionalen 
Requirements ;-) Aber irgendwas muss natürlich blinken und leuchten.

>> Strubi schrieb:
>>> Chrikapie schrieb:
>>>> Ich glaube ich bräuchte jemanden wie dich als Kollegen ... ;-)
>>>
>>> Aber nicht, dass du mir dann das Zeug auf meinen Schreibtisch legst,
>>> nech :-)
>> Ne das nicht. So ein Problem ist nur ein furchtbar undankbares
>> Smalltalkthema. Aber auch eins bei dem 15 Minuten Kaffeepausengespräch
>> mehr bringen als 4 Stunden google.
>
> Bei Google findet man lange schon keine Geheimtips mehr...
Ich will ja keine Geheimnisse ;-)

von Chrikapie (Gast)


Lesenswert?

nachtrag: was natürlich für das FPGA-Shiel spricht ist dieser eine Satz:
"And Flashing Lights!!"
;-)
Ist jetzt offtopic: Aber sowas find ich wirklich wichtig. Wäre nicht das 
erste mal, dass unsinnige oder nicht vorhandene Status-LEDs für 
Verwirrung sorgen. Z.B.: rote LED leuchtet = alles super. Toll. Hat nur 
noch die grüne Fehler-LED gefehlt.

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.