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 ;)
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
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?
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.
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.
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.
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.
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.
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 ;)
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.
JEDEC JESD204B? Hab selbst noch nicht mit gearbeitet, bin aber zufällig heute durch einen Kollegen darauf gestoßen.
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
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
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
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
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
Nur eine Leitung und und eine zurück. Wie soll die Taktrückgewinnung erfolgen? Gerade bei hohen Datenraten ist ein mitgeführter Takt sinnvoll.
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.
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?
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.
Die Schwierigkeit wird aber sein, eben jene Hersteller dazu zu bewegen, andere Stecker zu verwenden. Und die setzen ja irgendwo den Standard.
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. ;)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.