Hallo,
ich habe gerade einen Vorschlag für meine Masterarbeit bekommen. Ich
würde gerne mal einschätzen was in dem Thema drin an Arbeit drin steckt
und welche großen Probleme auf mich zu kommen. Deshalb würde ich gerne
eure Erfahrungen zu dem Thema hören.
Es geht um folgendes:
-Ich bekomme ein Datensignal, irgendwo zwischen 100 und 500MBit/s
-Dieses soll in einem Linuxsystem verarbeitet werden
Für die Umsetzung gibt es 2 zu Prüfende ideen:
1. ein FPGA-Board mit PCIe und ein normales PC-Board
2. ein Board mit einem SOC ähnlich dem Zync von Xilinx
Das Board sollte nicht deutlich mehr als 1000€ kosten. Von Xilinx ist
schon einiges an Knowhow vorhanden. Deshalb wäre es für mich vorteilhaft
bei xilinx zu bleiben.
Es geht mir hier speziell um folgendes Problem:
Die eingehenden Daten müssen so im RAM des Prozessors sein das ich sie
mit einer User-Space-Software verarbeiten kann.
- Dafür brauche ich zuerst mal natürlich das FPGA-Board
- Eine IP-Core für PCIe
- Einen DMA-Core?
- Teure Zusatzsoftware?
Ich habe schon einige VHDL-Designs auf FPGAs umgesetzt (meist Spartan
3). Aber mit PCIe hatte ich noch nichts zu tun.
Wie hoch würdet ihr den Aufwand und die Kosten für so ein Projekt
einschätzen? (nur Hardware und Software, kein Lohn) Es gibt ja
verschiedene Starter Kits die die notwendige Software gleich enthalten
(eingeschränkt auf das Kit natürlich)
Habe ich etwas wesentliches vergessen bei meinen Überlegungen?
Wie sieht es mit Beispielen und Anleitungen bei den unterschiedlichen
Herstellern aus?
Und noch eine Frage konkret zum Zync. Ich habe vor kurzem das ZEDBoard
gesehen. Ist es bei dem möglich mit dem FPGA direkt in das Prozessor-RAM
zu schreiben oder besitzt der FGPA-Teil ein eigenes RAM?
Ich bin auf eure Meinungen gespannt.
Danke und viele Grüße
Ichige schrieb:> Ich habe vor kurzem das ZEDBoard gesehen. Ist es bei dem möglich mit> dem FPGA direkt in das Prozessor-RAM zu schreiben
Das ist mit PCI und natürlich PCIe prinzipiell möglich. Dein FPGA muss
dafür "einfach" einen DMA Transfer initieren können.
>Es geht mir hier speziell um folgendes Problem:>Die eingehenden Daten müssen so im RAM des Prozessors sein das ich sie>mit einer User-Space-Software verarbeiten kann.
Du willst also keinen Kernel Treiber schreiben. Du willst das der user
direkt auf den Speicher zugreifen kann. Also mußt du darauf achten das
der IP Core schon guter treiberunterstützung mitbringt. Ansonsten Jungos
WinDriver. http://www.jungo.com/st/products/windriver/
Ganz unabhängig von den Kosten würde ich sagen, dass das zeitlich in
einer Masterarbeit nicht zu schaffen ist. Alleine der Kernel-Treiber für
das PCIe Device samt korrekter Implementierung der DMA Transfers auf
beiden Seiten plus der User-Mode Software, die den Treiber anspricht und
der Software auf dem Zynq die dort das PCIe anspricht und zwischen dem
"Datenstrom" und PCIe vermittelt ist für einen alleine in der Zeit
vollkommen illosorisch. Bis du das Zynq System im VIVADO komplett zum
laufen hast, ist wahrscheinlich die Zeit rum.
Ichige schrieb:> Ich würde gerne mal einschätzen was in dem Thema drin an Arbeit drin> steckt und welche großen Probleme auf mich zu kommen.
Was kannst und kennst du zum Thema schon?
Lothar Miller schrieb:> Ichige schrieb:>> Ich habe vor kurzem das ZEDBoard gesehen. Ist es bei dem möglich mit>> dem FPGA direkt in das Prozessor-RAM zu schreiben> Das ist mit PCI und natürlich PCIe prinzipiell möglich. Dein FPGA muss> dafür "einfach" einen DMA Transfer initieren können.
Ähh, die Kopplung zwischen FPGA und dem Prozessorteil erfolgt über
mehrere AXI-Kanäle und nicht über PCI/PCI Express.
Es ist in der Tat möglich, über AXI Master auf die Speicher des
Prozessorteils zuzugreifen. Jedoch muss man sehr genau schauen, welchen
Datenpfad man verwendet. Benötigt man lokale Puffer für den FPGA-Teil,
auf die kein Zugriff durch den Prozessorteil erfolgen soll, muss die
Cache-Kohärenz nicht gewährleistet sein; bei geteilten Puffern natürlich
schon.
Die Latenzzeiten beim Zugriff auf externes SDRAM können auf Grund der
vielen Puffer und Synchronisierungsstufen schon etliche hundert
Taktzyklen betragen, d.h. es eignet sich z.B. gut für
hintereinandergeschaltete Bildverarbeitungsstufen, aber nicht als
Registerersatz o.ä..
Auf jeden Fall muss man auch die zur Verfügung stehenden Busbandbreiten
der verschiedenen Datenpfade berücksichtigen. Das ganze lässt sich nicht
ohne weiteres in drei Sätzen vollständig beschreiben, sondern man muss
schon viel im Architekturhandbuch und Applikationsschriften lesen und
durcharbeiten.
Wie es mit der Nutzung der in einigen Bausteinen vorhandenen
PCI-Express-Schnittstelle aussieht, weiß ich derzeit nicht. Es wird aber
sicherlich irgendein Beispielprojekt von Xilinx, Digilent o.ä. geben.
Interessant ist, dass Xilinx jetzt auch den XC7Z015 nachgeschoben hat,
d.h. einen Zynq mit (billigem) Artix-FPGA und PCI Express.
Christian R. schrieb:> Ganz unabhängig von den Kosten würde ich sagen, dass das zeitlich in> einer Masterarbeit nicht zu schaffen ist. Alleine der Kernel-Treiber für> das PCIe Device samt korrekter Implementierung der DMA Transfers auf> beiden Seiten plus der User-Mode Software, die den Treiber anspricht und> der Software auf dem Zynq die dort das PCIe anspricht und zwischen dem> "Datenstrom" und PCIe vermittelt ist für einen alleine in der Zeit> vollkommen illosorisch. Bis du das Zynq System im VIVADO komplett zum> laufen hast, ist wahrscheinlich die Zeit rum.
Danke für diese Einschätzung. Ich hatte mit dem Zynq noch nichts zu tun.
Deshalb hatte ich gehofft das ich hier nicht den Umweg über pcie gehen
muss.
Ich vermute ein normaler embedded PC mit einem virtex auf pcie Karte ist
auch nicht leichter oder?
Was ist am VIVADO so schlimm? Ich hatte bisher nur mit der ise zu tun.
Lothar Miller schrieb:> Was kannst und kennst du zum Thema schon?
Ich bin recht fit in vhdl, kenne mich recht gut mit embedded Linux aus
und habe schon verschiedene male mit Treiberentwicklung unter Linux zu
tun gehabt. Aber noch nichts mit pcie. Es ging damals um das Innenleben
eines soc.
Ichige schrieb:> Hallo,> ich habe gerade einen Vorschlag für meine Masterarbeit bekommen. Ich> würde gerne mal einschätzen was in dem Thema drin an Arbeit drin steckt> und welche großen Probleme auf mich zu kommen. Deshalb würde ich gerne> eure Erfahrungen zu dem Thema hören.>> Es geht um folgendes:> -Ich bekomme ein Datensignal, irgendwo zwischen 100 und 500MBit/s> -Dieses soll in einem Linuxsystem verarbeitet werden>> Für die Umsetzung gibt es 2 zu Prüfende ideen:> 1. ein FPGA-Board mit PCIe und ein normales PC-Board
Mit dieser Variante bist du sehr flexible was die Verarbeitung angeht.
> 2. ein Board mit einem SOC ähnlich dem Zync von Xilinx>> Das Board sollte nicht deutlich mehr als 1000€ kosten. Von Xilinx ist> schon einiges an Knowhow vorhanden. Deshalb wäre es für mich vorteilhaft> bei xilinx zu bleiben.
Die PCIe-Boards kosten oft mehr als 1000€, aber zwischen 1000-2000€ bist
du dabei, inklusive Softwarelicense.
> Es geht mir hier speziell um folgendes Problem:> Die eingehenden Daten müssen so im RAM des Prozessors sein das ich sie> mit einer User-Space-Software verarbeiten kann.>> - Dafür brauche ich zuerst mal natürlich das FPGA-Board> - Eine IP-Core für PCIe> - Einen DMA-Core?> - Teure Zusatzsoftware?
Mit PCIe brauchst du den mitgelieferten PCIe IP und einen minimalen
Treiber auf dem Linux-System.
> Ich habe schon einige VHDL-Designs auf FPGAs umgesetzt (meist Spartan> 3). Aber mit PCIe hatte ich noch nichts zu tun.
PCIe ist "nicht" sehr schwer, es sind eben wieder mal die üblichen
Verdächtigen im Spiel, Timing, Buffer etc..
> Wie hoch würdet ihr den Aufwand und die Kosten für so ein Projekt> einschätzen? (nur Hardware und Software, kein Lohn) Es gibt ja> verschiedene Starter Kits die die notwendige Software gleich enthalten> (eingeschränkt auf das Kit natürlich)
Für das FPGA-Board würde ich, wie gesagt, etwa 1500€ veranschlagen.
PCIe Entwicklung auf dem FPGA: 1-2Monate
Datenanbindung FPGA: 1Monat
Linux-Treiber Entwicklung: 1-4Wochen
Linux Daten Aufbereitung: 1-4Wochen
Linux Verarbeitung: ??? je nach Aufwand
> Habe ich etwas wesentliches vergessen bei meinen Überlegungen?
Welchen Schwerpunkt hat deine Masterarbeit und wieviel Zeit hast du?
> Wie sieht es mit Beispielen und Anleitungen bei den unterschiedlichen> Herstellern aus?
Die gibt es, sind aber immer auf dein System anzupassen und das kostet
Zeit ohne Ende.
> Und noch eine Frage konkret zum Zync. Ich habe vor kurzem das ZEDBoard> gesehen. Ist es bei dem möglich mit dem FPGA direkt in das Prozessor-RAM> zu schreiben oder besitzt der FGPA-Teil ein eigenes RAM?
Reicht die CPU-Leistung für die Verarbeitung aus?
Bitte!
z.B.
http://www.altera.com/products/devkits/altera/kit-arria-v-starter.html
der PCIe Hard IP Core ist mit der Avalon St Doku und SignalTrap recht
gut nachzuvollziehen.
Ich halte KarlGustav Zeiteinschätzung für realistisch.
PCIe Entwicklung auf dem FPGA: 1-2Monate (eher 2, Quartus/SignalTrap)
Datenanbindung FPGA: 1Monat
Linux-Treiber Entwicklung: 1-4Wochen (eher 4, wenn man wissen will was
man tut)
Linux Daten Aufbereitung: 1-4Wochen (eher 4, je nach Anforderungen die
noch kommen werden)
Sechster Monat für die Ausarbeitung und Dokumentation reservieren.
Viele Grüße
Micha
Hi
also ich habe vor ein paar Jahren meine Diplomarbeit über ein sehr
ähnliches Thema geschrieben. Ich musste allerdings knapp 800MByte/s vom
FPGA Board (ml605) in den Speicher schieben. Zum Einsatz kam ein DMA
Core von PLDA und dem dazugehörigen Treiber (sehr teuer).
Falls du Firmware und Treiber selbst schreiben sollst, sind die Zeiten
etwas optimistisch. Ich habe schon mit dem "fertigen" Treiber meine
Probleme gehabt (war buggy).
Grüße
Micha schrieb:> Ich halte KarlGustav Zeiteinschätzung für realistisch.> PCIe Entwicklung auf dem FPGA: 1-2Monate (eher 2, Quartus/SignalTrap)> Datenanbindung FPGA: 1Monat> Linux-Treiber Entwicklung: 1-4Wochen (eher 4, wenn man wissen will was> man tut)> Linux Daten Aufbereitung: 1-4Wochen (eher 4, je nach Anforderungen die> noch kommen werden)> Sechster Monat für die Ausarbeitung und Dokumentation reservieren.
Ein Monat für Ausarbeitung und Dokumentation ist zu wenig. Das Papier,
das Du produzieren musst, ist die eigentliche Prüfungsleistung. Wenn
irgend eine Teilkomponente aus Zeitmangel nicht zum Laufen gebracht
werden kann, ist das verzeihlich, aber die Ausarbeitung, die muss
perfekt sein. Ich würde die Hälfte der Zeit für den praktischen Teil
veranschlagen, die andere Hälfte für den Papierkram.
Bei uns war es so, dass man exakt 180 Tage Zeit hatte - wer am 181. Tag
abgegeben hat, war durchgefallen. Also lieber extrem konservativ planen.
fchk
Hallo Ichige,
Mein Name is Merlin Gehrig von der Firma Jungo Connectivity Ltd.
Wie Uwe schon angedeutet hat kann WinDriver eine Loesung fuer sie sein.
WinDriver is ein Treiber Entwicklungs toolkit fuer PCI/PCIe/USB Geraete.
Mit den WinDriver cross platform(Windows/Linux/CE) user mode APIs, kann
man sofort mit der Implementierung beginnen,
Laden sie doch einmal die Demo version von WinDriver von unserer
Webseite http://www.jungo.com/st/products/windriver/ herunter und
shauen sie das Xilinx BMD Design sample an, das sich mit DMA transfer
befasst. Diese sollte die Treiber entwicklung extrem Beschleunigen. Es
werden natuerlich auch weitere FPGA Boards(Altera, Microsemi)
unterstuetzt.
Fuer mehr informationen koennen sie sich direct an mich wenden
Best Regards, / Mit freundlichen Grüßen
Merlin Gehrig
- - - - - - - - - - -
Sales & Support Engineer,
Jungo Connectivity Ltd.
Web: www.jungo.com
Email: merlin@jungo.com
Phone: +1 (408) 600-0851 (USA) & +972 (09) 970-8607 (World Wide)
Fax: +1 (408) 404-0202 (USA) \& +972 (09) 777-0299 (World Wide)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
For any technical issues, please visit https://techsup.jungo.com