Forum: FPGA, VHDL & Co. Schneller serieller, skalierbarer Bus für Hobby FPGA Boards.


von Hans-Georg L. (h-g-l)


Lesenswert?

Da ich mich momentan mit der Anbindung eines 1Gsps Adc an ein FPGA Board 
beschäftige und auch immer fleissig Jürgens Thread:
Beitrag "Suche Mitwirkende für Universal-FPGA board"
mitgelesen habe kam mir heute Morgen ein Gedanke, den ich hier 
diskutieren möchte.

Die Anforderungen an eine Multiboard Lösung für Hobbyzwecke sind sehr 
unterschiedlich. Der eine will viele Module an einer FPGA, der andere 
will dazu noch viele FPGA vernetzen. Die üblichen Bussysteme auf den 
FPGA Boards der Hersteller wie FMC oder ähnliches für High Speed sind da 
schlecht geeignet und die Digilent PMods sind zu langsam. In der 
analogen Welt gab es bei modularen Synthesizern mal eine geniale Lösung, 
das Patchkabel. Irgendwann ist mir auch noch diese Seite über den Weg 
gelaufen:
http://danstrother.com/2010/12/04/fmc-lpc-to-sata-adapter-board/

Sata Kabel bekommt man in jedem Computerladen und das sind 2 Lvds 
Pärchen und 3 Masseleitungen.

Für Audioanwendungen wie von Jürgen würde 1 Kabel wahrscheinlich schon 
reichen 1 Taktsignal + 1 Datensignal Übertragungsrate ca 100Mhz. Jürgen 
könnte also beliebige FPGA Module mit je einem Sata Kabel patchen. Wenn 
die Bandbreite nicht reicht dann werden mehrere parallel geschaltet.

Der nächste würde gerne einen 4Gsps ADC, bestehend aus 4x1Gsps Modulen 
bauen. Also 8 Paare für die Daten und zwei weitere Paare für Frame und 
Bitclock -> 5 SataKabel parallel/ Modul. Das wäre ja auch noch 
handelbar.

Jetzt braucht man natürlich nicht nur High Speed Datenleitungen und 
dafür könnte man einfache Flachkabel verwenden.

Was jetzt noch fehlt sind: Stromversorgung, Probleme mit 
Massenschleifen, Vertauschungssicherheit, Zerstörungssicherheit, usw.

ps.
Ich möchte keine Boards entwickeln es ist einfach eine unausgegorene 
Idee  ;)

von Strubi (Gast)


Lesenswert?

Moin,

SATA habe ich auch der Einfachheit halber als LVDS-Physical für Sensoren 
am Spartan6 genutzt, würde ansich einen Pseudo-Standard begrüssen, um 
mehrere Boards miteinander kommunizieren zu lassen.
Da aber die Tendenz sicher in Richtung PCIe geht, bin ich skeptisch, was 
den "Standard" angeht, im Endeffekt backt sich doch jeder seinen Hack 
selber. Vom SATA-Standard weicht es ja dann eh ab...
Was an SATA gegenüber PCIe ein echter Nachteil ist, dass keine 
Duplex-Verbindung geht und man mit lästigen Zwischenlayern rumemulieren 
muss, bzw. die Master/Slave-Rollen fix definiert sind.
Deswegen hätte ich jetzt nicht zuviel Zeit auf eine universelle 
Bus-Lösung basierend auf dem SATA-Physical verwettet.

Gruss,

- Strubi

von Michael W. (Gast)


Lesenswert?

Wie aufwändig wäre es, einen SATA-Controller zu schreiben? Ginge das 
rein in VHDL oder bräuchte man noch einen Chip? Wie ist es mit den 
Leitungen zwischen zwei Platinen?

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


Lesenswert?

Ich konnte bis jetzt alle High Speed Probleme innerhalb eines Boards 
lösen, deshalb musste ich nie solche High-Speed Datenströme führen.

Bei deinem ADC wirst du sicher ein Trigger event haben, den du mit dem 
FPGA einfagen wirst, dann die Daten im FPGA Buffern und mit einer 
geringeren Datenrate vom Board zum PC.
Ist eine kleine State Maschine in VDHL.

Ich nutze als Standardschnittstelle die Ethernetschnittstelle. Diese ist 
auf vielen Board schon mit drauf.

von Strubi (Gast)


Lesenswert?

Markus W. schrieb:
> Wie aufwändig wäre es, einen SATA-Controller zu schreiben? Ginge
> das
> rein in VHDL oder bräuchte man noch einen Chip? Wie ist es mit den
> Leitungen zwischen zwei Platinen?

Es gibt von Xilinx fertige Designs, und bei der Verbindung muss man wie 
üblich korrekt terminieren. Steht alles in den entsprechenden Appnotes. 
Einen extra Phy braucht es nicht.

von Hans-Georg L. (h-g-l)


Lesenswert?

Mein Gedanke war jetzt nicht einen SATA-Controller zu verwenden, sondern 
nur die Kabel und die Stecker und Buchsen davon, also praktisch High 
Speed LVDS PMods over Sata Kabel zu haben.

FMC Stecker oder ähnlich belegen halt immer alle verfügbaren Kanäle auch 
wenn du nur ein LVDS Paar davon benutzt und alles ist fest verdrahtet.

von Hans-Georg L. (h-g-l)


Lesenswert?

René D. schrieb:
> Ich konnte bis jetzt alle High Speed Probleme innerhalb eines Boards
> lösen, deshalb musste ich nie solche High-Speed Datenströme führen.
>

Jürgen braucht für Audio Anwendungen mehrere Fpga Boards ...

Jeder hat andere Wünsche.

von J. S. (engineer) Benutzerseite


Lesenswert?

Da ich schon namentlich angesprochen werde, möchte ich auch kurz dazu 
Stellung nehmen:

Ja, in der Tat brauche ich mehrere FPGA boards und dies hat drei Gründe: 
Die Rechenleistung muss skalierbar sein, weil man nie weiß, was man noch 
braucht, das board muss klein und bezahlbar sein und es muss sich mit 
freien = limitierten Versionen programmieren lassen.

Über einen BUS habe ich mir noch keine Gedanken gemacht, aber SATA wäre 
insofern interessant, als dass man dann leicht Massenspeicher anschalten 
könnte, was das board für andere wieder interessanter macht. Ich selber 
kopple derzeit mit S/PDIF, lasse bei PCB-Interconnetion einfach die 
S/PDIF Transceiver weg und kopple über LVDS. Die 12,8 MHz die da 
standardmässig laufen, bekommt man sehr sicher über einen halben Meter 
Kabel.

Grundsätzlich geht es mir aber überhaupt erst einmal um ein System, das 
für genügend Viele interessant ist. Und interessant ist, was man nicht 
kaufen kann. Wer den thread verfolgt, weiß, daß wir inzwischen bei Video 
gelandet sind.

Mit Video liesse sich sich busmässig im Übrigen auch einiges machen, 
wenn man zwei boards hat, die Transceiver besitzen. Ein Video HDMI 1080p 
könnte rund 100 Audiokanäle transportieren.

von Hans-Georg L. (h-g-l)


Lesenswert?

Hallo Jürgen S.,

für Videoanwendugen ist vielleicht für dich das Buch:
"High-Speed Serial I/O Made Simple" interessant. Das ist mir heute über 
den Weg gelaufen. Man findet es mit Google zum Download aber ich poste 
vorsichtshalber mal keinen direkten Link ;)

von Sym (Gast)


Lesenswert?

Man kann SATA-Kabel für die Board-zu-Board Kommunikation verwenden klar. 
Aber doch bitte nicht mit LVDS mit seperatem Takt, und mit DC-Anteil im 
Signal. Besser mit Transceivern arbeiten, 8B10B kodieren oder 64B66 und 
das Signal AC koppeln.
Man kann auch auf bestehende Protokolle oder zumindest deren physical 
layer zurückgreifen z.B. aus Ethernet:
SGMII: 1.25 Gbps mit 8B10B
QSGMII: 5 Gbps mit 8B10B
10GBase-(K)R: 10.325 Gbps mit 64B66
oder PCIe:
Gen1: 2.5 Gbps 8B10B
Gen2: 5 Gbps 8B10B
Gen3: 8 Gbps 64B66B.

Alternativ fällt mir noch Aurora von Xilinx (ähnlich wie oben) ein, 
welches mit AXI Interface auf beiden Seiten kommt, oder Infiniband. Also 
es gibt in dem Bereich bereits einiges, man muss das Rad nicht neu 
erfinden.

von Marcus H. (mharnisch) Benutzerseite


Lesenswert?

JEDEC JESD204B?

Hab selbst noch nicht mit gearbeitet, bin aber zufällig heute durch 
einen Kollegen darauf gestoßen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Das ist richtig, was ihr beide schreibt, aber wozu brauchen 
Hobbybenutzer einen aufwändigen speziellen Bus zwischen FPGAs, der 
Implementierungsaufwand benötigt und Resourcen frisst?

Es muss einfach und nützlich sein, also entweder direkt parallel als 
RAM-IF, also viele Leitungen, dafür aber wenige Resourcen oder aber 
seriell mit begrenztem Resourcenaufwand zum Sparen der Leitungen und 
dann nimmt man am Besten den jeweils spezifischen Bus für das dedizierte 
Signal, also S/PDIF oder I2S für Audio und HDMI für Video. Dann machen 
die Transceiver auch Sinn und man kann das Signal außen nutzen.

S/PDF geht halt bei den üblichen Frequenzen mit 12,8 MHz und damit LVDS 
über die paar 10cm ganz ohne Transceiver.

: Bearbeitet durch User
von Hans-Georg L. (h-g-l)


Lesenswert?

Genauso hatte ich es ursprünglich auch gedacht aber scheinbar haben 
manche Leute Probleme Sata-Kabel ohne Sata zu verwenden ;) Für Ghz 
braucht man ja wieder FPGA mit GTX Transceivern und die kosten mehr und 
sind begrenzt. LVDS für ein paar hundert MHz hat jedes moderne FPGA 
genug. ich hatte nur an Sata kabel gedacht weil sie Massenware, für LVDS 
tauglich, flexibler wie Netzwerkkabel und entsprechen billig und überall 
erhältlich sind.
Welches Protokoll man dann benutzt ist dem Kabel doch völlig egal ...

: Bearbeitet durch User
von Strubi (Gast)


Lesenswert?

Hi Hans-Georg,

ich finde die Idee gut, elektrisch spricht ja nix dagegen, solang man 
die Leitungen nicht anders nutzt, geht ja da nix kaputt.
Ich bin ansich ein Fan von "keep it simple", also bloss weg mit dem 
ATA-Legacy-Kram. Wenn ich jetzt mal 10b8b voraussetzen darf, rein um 
bisschen mehr elektrische Performance rauszuhauen, ist ja ansich nicht 
mehr viel nötig, um z.B. einen Wishbone zu tunneln. Nur kommen dann 
einige Fragen auf, wenn es um eine flexible Busbreite gehen soll:
- Wie läuft die "Bus-Probe" ?
- Synchronisation/Fehler-Handling (da kriegt man ein bisschen was von 
der 18b8b coding-Seite ja schon 'gratis')

In einigen Kameraanwendungen kam das Problem auf, dass die Kamera recht 
abgesetzt von der CPU ist oder mehrere dieser Kameras gemultiplext 
eingelesen werden. Da ist SATA elektrisch ideal, und die 'Gearboxen' 
sind nicht teuer.
So am Rande: Lattice hat auch eine Lösung mit Cat5-Kabeln, da schenkt 
sich elektrisch nicht mehr viel. Kam mir leider erst viel später nach 
dem SATA-Hack unter. Nur ist da die Sache elektrisch eher gefährlich 
(mit PoE ist nicht zum ersten mal was abgeraucht..) Auf jeden Fall ist 
mit den MACHXO2 einiges an Durchsatz drin, ich glaube es waren um die 
750 Mbps).

Schlussendlich definiert aber der den Quasi-Standard, der als erster 
eine Board-Lösung mit offenem Core hinlegt, das ist schon eine Menge 
Arbeit, bis das die Community so adoptiert. Müsste was sein wie der 
"Papilio" für die Fortgeschrittenen...

Grüsse,

- Strubi

von J. S. (engineer) Benutzerseite


Lesenswert?

Hallo Hans-Georg

Hans-Georg L. schrieb:
> Genauso hatte ich es ursprünglich auch gedacht aber scheinbar haben
> manche Leute Probleme Sata-Kabel ohne Sata zu verwenden ;)

unter einem "Bus" verstehe ich nicht nur Kabel, sondern eine Logistik 
mitsamt Arbitrierung, Spezifiktaion für Bandbreiten und Timing, 
Bitordering und Datenformat, von daher hiesse "SATA verwenden" aus 
meiner Sicht durchaus "SATA-Protokoll" + "SATA-Physik" + 
"SATA-Bit-order" ++

Ansonsten macht der Begriff keinen Sinn und man müsste sofort eine 
eigene SPEC nachschieben.

Vielleicht möchtest Du nochmal darstellen, was Du Dir genau vorgestellt 
hast, oder realisiert hast. Ich möchte verstehen, wo der Vorteil einer 
(nicht-)normierten Schnittstelle liegt, zumal sie sich mitunter nur auf 
die Kabelphysik beziehe soll. Auch, wie die Skalierbarkeit zustande 
kommt und wo, bzw wie sie griffe, sollte man nochmals erörtern.

Dann wäre die Frage zu klären, inwieweit hier der Bezug auf Hobbyboards 
hergestellt wird. Siehe dazu mein Zahlenbeispiel unten.

Ich sehe die Sache so:

Ein solcher Vorschlag macht Sinn, wenn es eine genügend großer 
Nutzergruppe gibt, die davon profitieren kann. Dies ist der Fall, wenn 
es eine genügend große Zahl an Fällen gibt, wo man etwa kaufen kann, 
statt es selber zu bauen, weil das käufliche baord zufällig passt. Also 
braucht man eine ausreichend Anzahl von use-cases und core usern.

Ich sehe da zumindest einen Soll-Bedarf von 10.000 Benutzern weltweit, 
von denen dann vielleicht 1000 in den Genuß kommen, etwas verwenden zu 
können, was andere 1000 zufällig gebaut haben. Wahrscheinlich sind es 
aber nur 100, die etwas verwenden können, was 10 gebaut haben.

Vorher machen standardisierte Interfaces keinen Sinn. Dann kann man auch 
selber bauen oder einfach etwas verwenden, was einer gebaut hat, ohne 
sich um den jeweiligen "lokalen" Standard zu kümmern.

Sinn würde es IMHO machen, wenn man ein komplettes Interface definiert, 
das entweder mehr kann, als ein existentes (schwer zu leisten) oder 
billiger ist (noch schwerer) oder schneller ist (ziemlich unmöglich).

Also muss es irgendeinen Vorteil haben. Den sehe ich nur, wenn man eine 
große Schar an Leute dahin brächte, einen ganz bestimmten frei 
konfigurierbaren Stecker auf ihr board zu löten, damit sich andere 
anflanschen können. Dann ein Protokoll drauf und es als open source 
angeboten. Mit etwas Glück bekommt es eine ähnliche Verbreitung wie 
wishbone.

Allerdings haben wir ja mit den FMC-Steckern schon solche Geschichten zu 
Hauf und sie helfen bei der Verbreitung der FPGA-Selbstbauten nicht 
wirklich. An dem benachbarten von mir gestarteten thread lässt sich ja 
ablesen, wie wenige Nutzer es gibt, die was bauen wollen, was es nicht 
schon gibt. Sehr wenige, bis Null.

Was den konktreten Vorschlag angeht, macht es mitunter Sinn, einen SATA 
vollständig einzubauen, wenn man dann einen Stick oder eine Platte 
anschließen kann. Aber dafür habe ich schon eine Lösung:
http://www.96khz.org/images/recordingplatform.jpg

Ist in meinem Demo-Altera baord quasi mit integriert. Das Design für den 
SATA-Teil gab es von ALtera.

: Bearbeitet durch User
von Hans-Georg L. (h-g-l)


Lesenswert?

Hallo Jürgen,

die Überschrift war etwas hochtrabend gebe ich doch gerne zu;)

Momentan arbeite ich mit einem Zedboard, das hat einen FMC Stecker und 
und 4 PMOD. PMods können nur bis ca30MHz. Der FMC Stecker ist mit einer 
1Gsps ADC Karte belegt, die 10 Diff-Signale, SPI und ein paar 
Steuersignale belegt.

An die anderen 26 weitere Diff-Kanäle komme ich nicht dran, weil der FMC 
Stecker nicht teilbar ist. Auch die Stapellösungen, die es bei anderen 
Boards gibt, wären keine Lösung, weil die nicht für Diff-Signale taugen.

Also kam mir der Gedanke nur 2 Diff-Kanäle in einem Kabel und Stecker 
zusammzufassen. Damit kann ich 1:1 Verbindungen mit Hin und Rückkanal 
oder durch parallelschalten (skalieren) mehrerer Kabel breitere 
Bussyteme aufbauen. Parallel seriell Umsetzer mit LVDS Ausgang gibt es 
auch preiswert, damit könnte man auch preiswerte Ein und Ausgangskarten 
aufbauen.

Es sind nur Gedankenspiele, Stress mit Produkten und Markteinführungen 
hatte ich während meinem Arbeitsleben genug ;)

: Bearbeitet durch User
von Dose (Gast)


Lesenswert?

Nur eine Leitung und und eine zurück.


Wie soll die Taktrückgewinnung erfolgen?

Gerade bei hohen Datenraten ist ein mitgeführter Takt sinnvoll.

von J. S. (engineer) Benutzerseite


Lesenswert?

Das ist das Problem. Dann lieber ein Format, wo die Taktrückgewinnung 
schon drin ist. Die Receiver für S/PDIF und HDMI haben das alles fertig 
drin. Und Audio und Video sind nun mal die Hauptanwendungen der 
Hobbyisten. Ich würde da inzwischen lieber einen HDMI-Bus 
zweckentfremden, weil man in einen hochaufgelösten HDMI-Datenstrom, 
mehrkanaliges Audio und Zusatzdaten reinpacken kann.

von Michael W. (Gast)


Lesenswert?

Hans-Georg L. schrieb:
> Mein Gedanke war jetzt nicht einen SATA-Controller zu verwenden, sondern
> nur die Kabel und die Stecker und Buchsen davon, also praktisch High
> Speed LVDS PMods over Sata Kabel zu haben.

Hättest Du ein Beispiel für eine schon realisierte Applikation? Welche 
Vorteile siehst Du? Nur, weil die Kabel preiswert sind?

von Hans-Georg L. (h-g-l)


Lesenswert?

Nein, ich habe nichts realisiert, sondern mich nur geärgert weil meine 
Eval- Boards nur einen FMC-Stecker haben und ich hätte schon öfter mal 
nur 1 oder 2 schnelle Diff-Kanäle aber dafür auf mehreren IO-Boards für 
Experimente gebraucht.
Sata Kabel - weil es sie konfektioniert und preiswert gibt.

von J. S. (engineer) Benutzerseite


Lesenswert?

Die Schwierigkeit wird aber sein, eben jene Hersteller dazu zu bewegen, 
andere Stecker zu verwenden. Und die setzen ja irgendwo den Standard.

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Falls jemand, wie ich gerade eben, nach der Kabel-Spec sucht:

Impedanz 100R+-15%
Impedanzdifferenz +-5R
Einfügedämpfung 6dB (10..4500MHz)
Übersprechen -26dB

http://www.calgreg.com/circuit-assembly/sata-specification.pdf


sAtari - power without the price. ;)

von Hans-Georg L. (h-g-l)


Lesenswert?

Jürgen S. schrieb:
> Die Schwierigkeit wird aber sein, eben jene Hersteller dazu zu bewegen,
> andere Stecker zu verwenden. Und die setzen ja irgendwo den Standard.

Habe gerade gesehen, das das Red Pitaya 2 Sata Buchsen, für diesen 
Zweck, auf dem Board hat. Das ist jetzt nicht gerade der Markführer aber 
vieleicht ein Anfang ;)

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.