Guten Abend,
ich möchte ein kleines Projekt starten, habe aber mit FPGAs kaum
Erfahrung. Daher mein Problem:
Ich plane eine 60-120fps-Echtzeit-Motion-Flow-Anwendung (3D-Scanner).
Hierfür würde ich nun gern ein FPGA-Board nutzen. Mein Lattice
ICEblink40LP1k ist hierfür vermutlich etwas schwachbrüstig :?. Ich
schwanke nun zwischen 3 Platinen:
- Lattice ICE40HX8K-DRAGON-EVN
- Papilo Duo 2MB
- Terasic DE-0 Nano
Ich kann aber schwerlich die Leistungsfähigkeit abschätzen. Da man zum
DE-0 Nano eine Tochterkarte zukaufen kann tendiere ich dazu. Jedoch
würden mir 1,3 MP auch genügen. Der Fokus liegt auf der Geschwindigkeit.
Zudem sollte der ein oder andere Stepper angesprochen werden...
Ich bin mir darüber im klaren, dass es neben der Architektur auf mein
konkretes Programm ankommt. Jedoch bin ich noch sehr unbedarft, und
würde meine Anwendung dann ggf. an ein Beaglebone Black koppeln.
Welches Board würdet ihr empfehlen?
Wer mir sachdienliche Hinweise geben kann, dem ist mein ewiger Dank
sicher ;)
Moin,
eine ähnlich komplexe Anwendung wurde hier mal mit einem Gigabee von
Trenz (Spartan6 mit DDR-Memory) und einem Blackfin erschlagen. Faktisch
ein Basisboard, wo man die beteiligten Module einfach ransteckt. Mit so
einer Kombination aus DSP und FPGA kommt man meiner Meinung nach am
schnellsten zu einer Demo. Alles gleich im FPGA ohne Vorkenntnisse zu
machen, ist ziemlich illusorisch, da holen Dich gleich eine Menge
Probleme ein.
Die aufgezählten Module oben reichen dafür zumindest was Lattice und
Xilinx angeht, nicht aus, DE-0 kenn' ich nicht.
Die OMAP-basierte HW halte ich für Bilderfassung im Highspeed-Bereich
nicht für geeignet (hat mit dem DMA-Handling zu tun).
Das ganze ist eine rechte Knacknuss, an der Du locker 5 Mannjahre
verbraten kannst. (Der Kommentar kommt übrigens sehr oft bei
ambitionierten Projektpostings :-) )
Trotzdem: Viel Erfolg,
- Strubi
Ich mache so etwas ähnliches.
Aber die Bildbearbeitung findet komplett im PC statt. Die Algorithmen
dort zu entwickeln und dort in Bildbuffern zu arbeiten ist wesentlich
angenehmer als mit VHDL.
PittyJ schrieb:> Ich mache so etwas ähnliches.> Aber die Bildbearbeitung findet komplett im PC statt.
Dito. Die Aufgabe des FPGAs beschränkt sich auch bei mir darauf, die HW
(Sensor, etc.) zu steuern, die Datenflut entgegennehmen,
zwischenspeichern und umpacken. Dann die Daten (optional) vorfiltern und
geeignet komprimieren um sie über den vorhandenen Schlauch (USB2/3) in
den PC zu kriegen. Alles andere ist Sache der CPU/GPU.
Ein DE0-nano ist aber fast für alles zu klein, hat zu wenig IOs und 5MP
in 60 oder gar 120fps kannst Du damit gleich vergessen. Auch nur SDRAM
Speicher ist zu langsam dafür.
Was Du brauchst ist sowas etwas wie Arrow/Terassic SoCKit, mit
DDR3-Speicher und einer Erweiterungsmöglichkeit, wo Du die Kameras
anschließen kannst. Das ist wohl die günstigste Variante von Altera.
Andere Hersteller kenne ich nicht.
Im Prinzip musst Du wahrscheinlich die Daten einziehen (5MP bei 60 fps
ist schon ordentlich, 120 fps ist auf dem Board mit dem Speicher nicht
machbar) Und das noch in Stereo.
Nur als Richtwert: 5MP bei 8 Bit (Graustufen) x 60 fps = ca 286 MByte/s.
2 Kameras -> 572 MBytes/s. DDR3 wird da am Anschlag sein (?). Musst Du
die Daten also schon mal vorprozessieren: 9x9 Kernel ist wohl zu klein,
also 15x15...
Es wird sicherlich kein "kleines Projekt" ;-) Mach mal einfach die
Rechnung auf, dann siehst Du bald, was machbar ist und was nicht.
Vielleicht ist fullHD ausreichend? Oder gar 720p? SVGA, VGA?
Schreib die Rechnung hier rein
Grüße
Kest
Vielen Dank für eure kritischen Stimmen. Ich muss gestehen, dass ich
etwas blauäugig herangegangen bin.
Ich wollte nicht zwingend auf 5MP... der Nachtrag betraf nur die
Tochterkarte für das DE-0 Nano.
Es war so angedacht, dass ich die einzelnen Pixel fraktioniere, und zu
größeren Superpixeln zusammenfasse, jedoch auch in der Lage bin, die
einzelnen Superpixel bei bedarf wieder aufzulösen. Unter diesem Aspekt
kam ich erst auf die Idee ein FPGA zu nutzen.
Angesichts der Kosten, die mein vorgesehenes Budget sprengen, werde ich
wohl nur die Vorverarbeitung auf einem "kleinen" FPGA-Board laufen
lassen und erstmal auf 30fps runter gehen. Alles weitere werde ich auf
dem Beaglebone black laufen lassen.
Ich werde mich dann langsam steigern und sehen was damit geht.
Vielleicht klappt es ja auch bis 60fps.
Das Arrow/Terassic SoCKit sieht interessant aus. Ich werde es mir
vormerken.
Allen beteiligten noch einmal einen recht herzlichen Dank! und
insbesondere an Kest, der mit seiner Rechnung ein schlagkräftiges
Argument hervorgebracht hat, das ich ganz verdrängt hatte.
Weiterhin kannst Du Dir mal die Arbeiten von Dan Strother anschauen, der
partitioniert das schon ganz gut, macht aber auch keinen optical flow
sondern semi-global block matching (was ähnlich bspw. auch in der
Daimler Stereokamera, damals auf einem Spartan-3E sitzt, Paper dazu:
http://www.6d-vision.com/9-literatur/gehrig_icvs09).
HTH, Micha.
Wir machen Stereobildverarbeitung für Industrieanwendungen. Das meiste
läuft auf Grafikkarten, zumindest wenn die Auswertung ein wenig Zeit hat
und nicht in Echtzeit erfolgen muss. In jüngster Zeit kommt aber immer
mehr in FPGAs rein. Das erfordert aber Rechenpower ohne Ende, wenn es
mit der vollen Pixeltaktgeschwindigkeit erfolgen soll. Mit Papillo ist
da nix. Eher Stratix und Kintex.