Hallo, ich hätte mal eine Frage. Hättet ihr Vorschläge, wie man am schnellsten (und einfachsten) Daten von einem FPGA (Virtex5 oder 6) mit etwa 300MBit/s an einen PC senden und in Dateien schreiben kann? Die Verlustrate sollte dabei gleich Null sein. Die Daten sollen dabei nur in eine Richtung gesendet werden, also nicht zurück von PC zu FPGA. Meint ihr, dass es PCIe sein muss oder gehen auch andere Lösungen (Cypress fx3 über USB oder Ähnliches)? Gibt es Beispielprojekte zum schnellen Ausprobieren und Anpassen mit der Angabe der Hardware die dafür benötigt wird? Danke schon mal für eure Antworten! Viele Grüße, Chris
300MBit/s sind ja "nur" 37,5MB/s das geht notfalls noch eben so mit USB 2.0, aber mit dem FX3 bist du auf der sicheren Seite. Die Ansteuerung vom FPGA aus ist denkbar einfach, Firmware Beispiele sind dabei. Damit kommst du viel schneller zum Ziel als mit einem PCIe IP Core und dem nötigen DMA Controller und der ganzen Einarbeitung samt Treiberentwicklung auf dem PC. Für den FX3 kannste den Cypress Treiber nehmen, oder aber gleich LibUSB oder WinUSB, die sind wenigstens signiert und überall verfügbar.
Ethernet bietet aktuell 1000 MBit/s, die sollte auch ein Windows-Host verarbeiten können. Duke
Duke Scarring schrieb: > Ethernet bietet aktuell 1000 MBit/s, die sollte auch ein Windows-Host > verarbeiten können. Ja, aber einen PHY mit einem FPGA anzusteuern, ist definitiv nicht einfacher, als ein US-Chip. Zudem hat ein PC immer nochmal einen USB Slot über, von daher plädiere ich auch für USB.
Chris schrieb: > Hallo, > > ich hätte mal eine Frage. > Hättet ihr Vorschläge, wie man am schnellsten (und einfachsten) Daten > von einem FPGA (Virtex5 oder 6) mit etwa 300MBit/s an einen PC senden > und in Dateien schreiben kann? SATA-IF in den FPGA und Du kannst die Daten ohne Umweg PC sichern: http://people.inf.ethz.ch/lwoods/publications/Groundhog-A_Serial_ATA_Host_Bus_Adapter_%28HBA%29_for_FPGAs.pdf MfG,
Fpga Kuechle schrieb: > SATA-IF in den FPGA und Du kannst die Daten ohne Umweg PC sichern: > > http://people.inf.ethz.ch/lwoods/publications/Groundhog-A_Serial_ATA_Host_Bus_Adapter_%28HBA%29_for_FPGAs.pdf Schaut ja nicht so kompliziert aus. Hast du das mal gemacht, welchen SATA-PHY verwendest du?
Sigi schrieb: > Fpga Kuechle schrieb: >> SATA-IF in den FPGA und Du kannst die Daten ohne Umweg PC sichern: >> >> > http://people.inf.ethz.ch/lwoods/publications/Groundhog-A_Serial_ATA_Host_Bus_Adapter_%28HBA%29_for_FPGAs.pdf > > Schaut ja nicht so kompliziert aus. > Hast du das mal gemacht, Nein, weiss aber das PCIe und SATA elektrisch nicht viel anders sind und (einige) FPGA's PCIe als Core mitbringen, resp. die Seriallen IO's dafür verwendbar sind. > welchen SATA-PHY verwendest du? Sollte alles der passende FPGA können: http://www.design-reuse.com/articles/24658/sata-connectivity-xilinx-fpga.html MfG,
Naja, SATA für einen Anfänger... Ich weiß ja nicht. Den Slave Fifo des FX3 anzusteuern dürfte schon komplex genug sein. Sich in die MGTs incl. Protokoll einzuarbeiten ist schon heftig.
Oder mal andersrum gefragt: hat jemand schon mal sowas gemacht und könnte das vhdl-Projekt/API PC seitig bereitstellen (z.B. über den cypress fx3)? Ich glaube notfalls könnte das http://www.cypress.com/?docID=49786 auch geeignet sein.
Für den FX2 gibt es libfpgalink. https://github.com/makestuff/libfpgalink Wenn man sich mal in das verwendete Buildsystem eingearbeitet hat dann ist die Verwendung relativ einfach. Bereitgestellt wird eine Library für den PC (mit C und Python Bindings) und ein Core fürs FPGA. Die Library bietet auch Funktionen zum Laden des FX2 und der FPGA Konfiguration. Die maximale Datenrate die ich erzielt habe liegt bei etwa 28 MB/s vom FPGA zum PC, die mitgelieferten Beispiele lassen eine ähnliche Geschwindigkeit in die andere Richtung vermuten. Wie aufwändig eine Portierung auf den FX3 ist kann ich aber nicht wirklich einschätzen. Edit: Gerade getestet: Wenn die Daten nicht auf die Platte geschrieben werden dann erreiche ich eine max. Übertragungsrate von 37 MB/s.
:
Bearbeitet durch User
Aus dem Repository dort werde ich nicht schlau. Wo befindet sich der FPGA-Code und wo der Code für den PC?
Der FPGA Code befindet sich in einem anderen Repository: https://github.com/makestuff/comm-fpga Mit dem verwendeten Buildsystem kann ich mich nicht wirklich anfreunden, ich bin gerade dabei das auf ein reines Makefile-Projekt zu ändern. Die Library abstrahiert so weit, dass man auf dem FPGA nur ein FIFO Interface mit 128 Kanälen sieht. Für den Anfang ist es am einfachsten, wenn man das für ein bereits unterstütztes Board übersetzt und dann die wirklich relevanten Dateien raussucht. https://github.com/makestuff/libfpgalink/wiki/FPGALink
:
Bearbeitet durch User
Mir gefällt Xillybus recht gut. Mit dem Core kommunizierst du ebenfalls über einfache FIFOs. Auf Hostseite realisiert der Treiber ein (oder mehrere, je nach FPGA-Konfiguration) normales Characterdevice. Interessanterweise kommt der Treiber mittlerweile sogar mit jedem halbwegs aktuellen Standard-Linux. Für Windows gibts gesonderte Treiber. Das ganze funktioniert über PCIe oder (für SoCs wie Zynq) über AXI. Evaluation ist kostenlos (und ohne Featureeinschränkungen) möglich, ebenso die dauerhafte Nutzung für akademische Zwecke. Kannst also erstmal testen, ob es für deine Anwendung taugt. Für den Produktionseinsatz kostet der Core dann was. http://xillybus.com
Fpga Kuechle schrieb: > Nein, weiss aber das PCIe und SATA elektrisch nicht viel anders sind > und (einige) FPGA's PCIe als Core mitbringen, resp. die Seriallen IO's > dafür verwendbar sind. Die besseren Alteras (bei Cyclone mit den MGTs) können das in der Tat. SATA Core ist aber IP und kostenpflichtig. Eine Art DMA per SATA hat aber was weil man so den PC massiv entlasten kann, jenachdem ob der die Daten noch filtern muss oder ob er alles post sampling bearbeiten soll. Für ein Recording-System hatte ich das mal entworfen und zwei Solid State Disks drangehängt. Die machen dann etwa das 10fache dessen, was der TE möchte :-) http://www.96khz.org/images/recordingplatform.jpg
:
Bearbeitet durch User
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.