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?
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
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.
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...
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.
Thomas Pfeifer hat seine Diplom-Arbeit mit Bildverarbeitung mit FPGA+DSP gemacht http://thomaspfeifer.net/fpga_dsp_bildverarbeitung.htm
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.