Forum: FPGA, VHDL & Co. FPGA-Board mit PCIe


von Ichige (Gast)


Lesenswert?

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

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


Lesenswert?

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.

von uwe (Gast)


Lesenswert?

>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/

von Christian R. (supachris)


Lesenswert?

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.

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


Lesenswert?

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?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

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.

von Ichige (Gast)


Lesenswert?

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.

von KarlGustav (Gast)


Lesenswert?

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!

von Micha (Gast)


Lesenswert?

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

von Lukas K. (carrotindustries)


Lesenswert?

Muss es denn wirklich PCIe sein? Bei 500Mbit reicht ja noch Gigabit 
Ethernet oder USB3. Warum wurden die nicht in Erwägung gezogen?

von FPGA... (Gast)


Lesenswert?

Schau mal bei abaxor.de

von chrisd (Gast)


Lesenswert?

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

von Frank K. (fchk)


Lesenswert?

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

von Merlin G. (Firma: Jungo Connectivity Ltd.) (merlin_g)


Lesenswert?

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

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.