Forum: FPGA, VHDL & Co. FPGA zur Personenerkennung


von Andreas B. (Gast)


Lesenswert?

Servus Leute,

könnt ihr mir beim Einstieg in die FPGA Welt behilflich sein? Und zwar 
habe ich momentan ein Programm in C++ geschrieben, das per http auf eine 
IP-Kamera zugreift und dort ein Bild abruft. Anschließend wird dieses 
Bild analysiert (OpenCV) und darin gefundene Personen eingezeichnet.

Unter C++ funktioniert das System bereits, nun möchte ich das ganze mit 
Hilfe eines FPGAs / DSP umsetzen.

Könnt ihr mir da etwas behilflich sein? Was verwendet man jetzt an 
Hardware? Werde ich alles neuprogrammieren müssen?

von Strubi (Gast)


Lesenswert?

Moin,

das Thema wird hier immer wieder mal durchgekaut, dürften einige 
ausführliche Threads zu finden sein, aber in Kürze:

> Werde ich alles neuprogrammieren müssen?

Beim FPGA ja, beim DSP je nachdem.
Beim FPGA gilt: rechenintensive, wenig komplexe Ops in gut gepipelinte 
Logik packen (also z.B. FIR-Filter-Ops). Bei den meisten DSPs sollte man 
sich im klaren sein, dass sie bei float/double-Arithmetik 
performancetechnisch in die Knie gehen.
Was ist deine Motivation? Wenn's nur "embedded" sein soll, würde ich zu 
einem ARM greifen, ev. mit FPU, wenn Du viele float-Routinen aus openCV 
benutzt.
Aber eine gute und genaue Antwort kann man Dir nur geben, wenn Du deine 
"processing stages" etwas dokumentierst.

Salut,

- Strubi

von Tim T. (tim_taylor) Benutzerseite


Lesenswert?

Andreas B. schrieb:
> Werde ich alles neuprogrammieren müssen?

Ja.

von PittyJ (Gast)


Lesenswert?

Warum willst du das überhaupt auf einen FPGA oder DSP umsetzen?
Ein DSP läuft ja auch mit C++, also höchstens ein Recompile. Und dann 
sehen, was man optimieren kann, um die Vorteile eine DSP auszunutzen.

Mit einem FPGA alleine wird es nicht gehen. Es sei denn du 
implementierst einen Softcore-Prozessor im FPGA. Und ob dieser dann 
schneller ist, als eine normaler Prozessor....?
Alleine das Ansprechen der Kamera über TCPIP wird Monate in Anspruch 
nehmen. Und dann ist noch kein Bild ausgewertet.

Vielleícht sollte man bei dem jetzigen Programm analysieren: was kann 
parallelisiert werden, und wo kann eine Umsetzung eines einfachen 
Unterprogramms in Hardware etwas nützen.

Als Einstieg in die FPGA-Welt würde ich die üblichen Eval-Boards 
vorschlagen, und dann erst einmal mit Blink-Schaltungen beginnen.
Dann bekommt man ein Gefühl dafür, was geht und wie lange selbst 
einfache Dinge bei der Implementierung benötigen.

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


Lesenswert?

Andreas B. schrieb:
> Unter C++ funktioniert das System bereits,
Auf welcher Plattform?
> nun möchte ich das ganze mit Hilfe eines FPGAs / DSP umsetzen.
Warum?
Welchen Zeitrahmen hast du?
BTW: du kannst auch auf DSPs mit C++ programmieren.

Man glaubt es nicht, was PittyJ schrieb:
> wie lange selbst einfache Dinge bei der Implementierung benötigen.
...solange man das nicht selber mal durchgemacht hat.

PittyJ schrieb:
> du implementierst einen Softcore-Prozessor im FPGA. Und ob dieser
> dann schneller ist, als ein normaler Prozessor....?
Niemals! Billiger, schneller und einfacher als z.B. mit einem Q7-CPU-PC 
bekommst du nirgends Rechenleistung. Immerhin wird bei PCs in 
Gigahertzen gerechnet. Auf einem insgesamt gleich teuren FPGA-System 
freust du dich, wenn deine CPU mit 200MHz läuft...

von Andreas B. (Gast)


Lesenswert?

Also Zeit für das Projekt habe ich genug, da es mein Privatprojekt ist. 
Allerdings verstehe ich nicht, wieso ich schon für das Abrufen von 
Bildern über TCP/IP Monate brauchen werde.  Ist es denn keine 
"Standard-Aufgabe"? Wenn ich mir jetzt mal die FPGA Eval Boards 
anschaue, die es so gibt, dann sind die doch wirklich mit jedem "Scheiß" 
ausgestattet. Gibt es da vom Hersteller des Boards oder der IDE keine 
Bibliotheken, die genau so etwas für mich erledigen und den 
Entwicklungsaufwand auf das Nötigste beschränken?

Mein persönliches Ziel soll eine optische Steuerung für (m)einen Roboter 
sein. Sie soll embedded und echtzeitfähig sein. Aber vor allem 
unabhängig von einem Betriebssystem wie Windows oder Linux.

Meine aktuelle Implementierung mit C++ läuft derzeit unter Windows und 
ist momentan hauptsächlich als PoC gedacht.

von tt2t (Gast)


Lesenswert?

Thomas Pfeifer hat seine Diplom-Arbeit mit Bildverarbeitung mit FPGA+DSP 
gemacht http://thomaspfeifer.net/fpga_dsp_bildverarbeitung.htm

von PittyJ (Gast)


Lesenswert?

Andreas B. schrieb:
> Also Zeit für das Projekt habe ich genug, da es mein Privatprojekt ist.
> Allerdings verstehe ich nicht, wieso ich schon für das Abrufen von
> Bildern über TCP/IP Monate brauchen werde.  Ist es denn keine
> "Standard-Aufgabe"? Wenn ich mir jetzt mal die FPGA Eval Boards
> anschaue, die es so gibt, dann sind die doch wirklich mit jedem "Scheiß"
> ausgestattet. Gibt es da vom Hersteller des Boards oder der IDE keine
> Bibliotheken, die genau so etwas für mich erledigen und den
> Entwicklungsaufwand auf das Nötigste beschränken?

Ich habe für den reinen Ethernet MAC-Verkehr ca 4 Wochen gebraucht. 
Profis schaffen es evtl. in der Hälfte der Zeit. Alles reines VHDL. Und 
da ist noch keine IP-Schicht dabei, die liegt dann darüber.
Es gibt auch einen IP-Core dafür, der bei Altera circa 500 Euro an 
Lizenz kostet. Manche Dinge gibt es auch bei Opencores umsonst. 
Allerdings ist das wie bei freien Bibliotheken in C: man muss sie für 
sein Design anpassen.

Auf den Boards ist alles drauf. Aber nur die Hardware. Und die 
Ansteuerung darf man selber programmieren. Das ist in etwa, als wenn man 
einen PC ohne Betriebssystem hat. Es liegt nur ein C-Compiler dabei.

Es gibt auch die Softcores und System On a Chip Lösungen, die mehr 
bieten. Dafür zahlt man dann auch mehr.

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


Lesenswert?

Andreas B. schrieb:
> Sie soll embedded und echtzeitfähig sein. Aber vor allem
> unabhängig von einem Betriebssystem wie Windows oder Linux.
Dann lass das Betriebssystem einfach weg...

> Gibt es da vom Hersteller des Boards oder der IDE keine Bibliotheken,
> die genau so etwas für mich erledigen und den Entwicklungsaufwand auf
> das Nötigste beschränken?
Du wirst nicht "am Groben" die Zeit verbrauchen. Kaufleute nehmen da 
gerne das Pareto-Prinzip her (weil sie es nur mit solch einfachen 
Verhältnissen kapieren). Du wirst 80% der Aufgabe in 3 Monaten erledigt 
haben. Und für die restlichen 20% brauchst du dann noch ein zusätzliches 
Jahr.
Ich würde eher ein 9/1 Verhältnis draus machen: nach 2 Monaten bist du 
fast fertig. Und 18 Monate später am Ziel.

> Gibt es da vom Hersteller des Boards oder der IDE keine Bibliotheken,
> die genau so etwas für mich erledigen und den Entwicklungsaufwand auf
> das Nötigste beschränken?
Was ist dir das wert? Rechne mal mit 1k aufwärts für einfache IP-Cores.

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.