Hallo miteinander! Ich suche mir ein FPGA-Board um unter anderem meinen Roboter mit einer Bildverarbeitungs-moeglichkeit auszustatten. Dabei sind mir schon folgende Moeglichkeiten ueber den Weg gelaufen: XESS mit Spartan-3 XC3S1000: http://www.xess.com/prod035.php3 Xilinx Spartan 3 Starter Kit: http://www.xilinx.com/products/spartan3/s3boards.htm Altium mit XC3S400: http://www.altium.com/Community/LiveDesignEvaluationBoards/ Besonders beeindruckt bin ich von XESS, vor allem weil sie eine fantastische Website bzgl. Daten und Support haben! Von Xilinx und Altium habe ich schon einiges hier im Forum gelesen, aber das XESS-board scheint voellig unbekannt. Gibt es dafuer einen bestimmten Grund? (Also das aeltere XSA-50, das neue kommt erst im Juli). Hat jemand noch weitere Vorschlaege, oder kann mir ein bestimmtes der oben genannten empfehlen? Vielen Dank! Zen ps. Eigentlich waehre ein 5V-tolleranter FPGA noch besser da ich einen Anschluss an 'nen AtMega8 brauche, hab da aber noch nichts gescheites gefunden. Ist aber auch kein unueberwindliches Problem...
>Hat jemand noch weitere Vorschlaege, oder kann mir ein bestimmtes der >oben genannten empfehlen? http://www.xilinx.com/products/spartan3e/s3eboards.htm Kann aber noch dauern.
Ich kann dir Devbards mit FPGAs von Altera empfehlen. Besonders der Stratix II mit seinen Features waere fuer die Bildverarbeitung interessant. Allerdings sind Boards mit Stratix II um einiges teurer als die mit XC3... Ich persönlich finde die Entwicklungsumgebung Quartus II ganz ansprechend. Auch der Softcore-Prozessor Nios II ist ganz interessant. Ich habe schon drei FPGAs (Cyclone) mit Nios II mit Betriebssystem Linux für Regelaufgaben im Einsatz. Stratix II: http://www.altera.com/products/devices/stratix2/st2-index.jsp Dev-Kits direkt von Altera: http://www.altera.com/products/devkits/kit-dev_platforms.jsp Low-Cost Solutions, besonders interessant das Nios II Devkit mit Cyclone II: http://www.altera.com/lowcost Dev-Kits mit Altera-FPGAs/CPLDs von Drittherstellern: http://www.altera.com/products/devkits/kit-dev_platforms_partner.jsp
Danke schon mal fuer die Weiteren Links! Das Spartan 3E Board sieht nicht schlecht aus, hat aber hat fuer einen aehnlichen (3/4) Preis nur einen halb so grossen FPGA wie das XESS Board. Was die Altera Boards betrifft, sind die mir doch ein bischen teuer. Ich moechte eigentlich nicht mehr als 200 investieren... Je mehr ich die Boards vergleiche, desto besser gefaellt mir das von XESS. Vor allem einen zweiten CPLD drauf zu tun um das ganze zu konfigurieren und zb. das Xilinx Kabel zu emulieren finde ich genial! Trotzdem wundert es mich, dass es hier im Forum nicht schon hauefiger erwaehnt worden ist. Hat einer von euch schon mal erfahrungen mit einem XESS Board gemacht? Waere toll davon zu hoeren! Danke! Zen
Bildverarbeitung? Da wuerde ich mich eher mal in Richtung DSP umschauen, z.B. Blackfin. In C programmiert sich sowas doch einfacher als in VHDL.
Hallo! Mich wundert fast, dass der Einwand "Bildverarbeitung auf einem FPGA sei zu schwer" erst jetzt kommt... ;) Der Grund fuer FPGA ist ganz einfach, naemlich dass sich meine Diplomarbeit im gleichen Gebiet befindet. Also habe ich schon einiges mit Bildverarbeitung auf FPGA gemacht, und suche mir halt nun ein Board auf dem ich auch spaeter rumspielen kann. Das Board an der Uni ist mir bei ein paar tausend einfach zu teuer, und ich denke vermissen wuerden die es auch :p Ausserdem ist das ganze auf einem FPGA doch noch mal um einiges schneller, und man kann den FPGA auch noch fuer andere Zwecke verwenden. Ich hoffe noch immer von jemandem zu hoeren, der schon mal ein XESS Board ausprobiert hat, sonst bestelle ich mir wahrscheinlich eins wenn wieder welche zu haben sind. Cheers! Zen
Hi, ich habe sowohl mit dem XSA-50 Board als auch mit dem Spartan 3 Starter Kit (200er FPGA) gearbeitet. Das XSA ist (besonders mit dem Erweiterungsboard) ein interessantes Board, das jedoch nicht ganz so uneingeschränkt nutzbar ist wie man am Anfang denkt, da der FPGA relativ wenige I/O hat und somit viel Anschlüsse gemeinsam verwendet werden. Ob dies eine Einschränkung ist, ist natürlich von der Anwendung abhängig, aber man sollte es berücksichtigen. Da mein Board leider abgeraucht ist (außerdem war es etwas klein), musste ich für den Rest meiner Diplomarbeit (Bildverarbeitung im FPGA) auf das Spartan 3 Starter Kit umsteigen (bis jetzt mit dem 200er und ab dieser Woche mit dem 1000er drauf - gibt es bei www.Digilentinc.com für 150 euro und somit besonders für Studenten interssant). Mit dem Board bin ich super zufrieden, auch wenn es ab Werk weniger Peripherie hat als das von XESS. Dafür sind ca. 60 I/O frei beschaltbar. Ich kann Dir (bzw. Euch) jetzt nicht sagen, welches für das besser Board ist. Schlecht sind beide nicht und man sollte es von der Aufgabe abhängig machen. An dieser Stelle würde mich mal interessieren, ob jemand Erfahrungen mit DSPs und Bildverarbeitung hat, da ich neben einer eigenen Umsetzung der BV im FPGA Vergleiche über die Leistungsfähigkeit anderer Plattformen brauche und mich mit DSPs nicht genug auskenne, um hier eine Abschätzung zu machen. Wäre klasse, wenn hier jemand kurz helfen könnte und sich evt. bei mir per Mail meldet (steffen.o@gmx.de) Wenn noch Fragen zu den Boards sind, kann mir natürlich auch geschrieben werden. Tschau Steffen
>Bildverarbeitung? Da wuerde ich mich eher mal in Richtung DSP >umschauen, >z.B. Blackfin. In C programmiert sich sowas doch einfacher als in >VHDL. Bilderverarbeitung beschraenkt sich doch im Wesentlichen auf Matrixmultiplikationen, die sich imho recht einfach mittels FPGA machen lassen. Schwieriger wird das erst bei Transformationen in andere (Informations)Ebenen. Da haben wir u.A. auch schon log-funktionen gebraucht (sind aber auch nicht die Welt). Ansonsten wuerde ich keinen Grund sehen, BV nicht mit FPGAs zu machen ... wie gesagt meine Meinung. Zudem ist hardwareseitige BV um einiges naeher an Echtzeitdran als die mittels Software. gruss micha
Hallo Leute, hier ist mal wieder ein Anfaenger in Sachen FPGA und Bildverarbeitung. Also, ich habe auch vor auf einem FPGA Algorithmen zur BV zu implementieren. Da der Speicherbedarf von Bildern recht gross ist und die Menge an distributed RAM recht klein ist, wollte ich das zu bearbeitende Bild im Block-RAM onchip oder im externen RAM, speichern. Um die Leistung des FPGAs richtig auszunutzen, moechte ich parallele Prozesse laufen lassen. Da Dual RAM aber max nur zwei Prozessen gleichzeitiges Lesen-/Schreiben erlaubt, frage ich mich, wie man das trozdem geschickt hinbekommt. Sodass beispielsweise 20 Prozesse gleichzeitig die Zeilen des Bildes summieren (Beispiel). Waere euch sehr dankbar fuer einen evtl Vorschlag!!! MfG Hartmut.
Hallo Hartmut, Du hast sicher recht, dass distributed RAM nicht die beste Lösung ist, um damit BV zu betreiben (schon aufgrund des Routings). Jedoch ist je nach Anwendung auch der interne Block RAM nicht gerade riesig (außer man hat nen dicken FPGA). Daher solltest Du auf jeden Fall überlegen, externen RAM dafür zu verwenden (hattest Du ja auch schon geschrieben). Die BV von mehreren Prozessen bearbeiten zu lassen sichert Dir natürlich einen Geschwindigkeitsvorteil, aber der Aufwand der Entwicklung ist nicht zu unterschätzen. Außerdem lohnt sich das nur, wenn Du die Leistung auch benötigst. Du solltest Dir also überlegen, wieviele Daten von der Kamera anfallen werden, was Du damit genau machen willst, ob alle Prozesse auf die gleichen Datenzugreifen, Du evt. die Daten so aufteilen kannst, dass beim Verwenden von mehr als 2 Prozessen immer 2 sich einen BlockRAM teilen und vielleicht nacheinander die Blöcke bearbeiten (oder Du stellst von den Daten identsiche Kopien bereit). Es ist auch möglich sich einen 4-port RAM oder höher zu bauen, wenn man nicht die volle Taktfrequenz benötigt (hab ich in nem Xilinx oder Altera Applicationnote mal gesehen). Auch das Entwerfen eines virtuellen Dual-port-controllers (oder für noch mehr Ports) für das externe RAM ist möglich, wenn die Daten kontinuierlich (örtlich nicht zeitlich) anfallen bzw. benötigt werden. Vieleicht sind das ja mal ein paar Anregungen. Tschau Steffen
Michael Noll: Bei einem Roboter geht es ja in der Regel darum Objekte zu erkennen, z.B. Hindernisse, Wände, einen Ball oder die klassische Linie auf dem Boden, und diese Erkenntnisse in die Steuerung einfließen zu lassen. Mit Matrixmultiplikation alleine ist da noch nicht viel getan. IMO können FPGAs eher da punkten wo mit hohen Geschwindigkeiten relativ einfache Berechnungen durchgeführt werden müssen. Beim Roboter geht es aber um relativ geringe Auflösungen und Bildfrequenzen, dafür müssen umfangreichere Algorithmen implementiert werden (z.B. eine Tabelle in der verfolgte Objekte eingetragen werden, Bewegungsschätzung). Das stelle ich mir bei der Verteilung der Aufgaben zwischen FPGA und AVR sehr viel schwieriger vor, als wenn man alles mit einem einzigen Prozessor und einem einzigen Programm erschlagen kann.
Hallo Steffen, vielen Dank fuer die Anregungen. Ich habe mir ueberlegt, direkt mit dem seriellen Bilddatenstrom von CCD Chip zu arbeiten. Es gibt dann also nur einen Prozess, der Zeile fuer Zeile die Daten bearbeitet und anschliessend ins externe SRAM schreibt. Du hast Recht, es macht keinen Sinn fuer jede Zeile einen parallelen Prozess zu starten, da ja der CCD Chip eh nur serielle Daten liefert. Das Block RAM werde ich evtl. fuer Zwischenspeicherung nehmen. Vorteil ist, dass ich mit einem zweiten Prozess die Bilddaten vom zweiten Datenport des externen RAMs lesen und anzeigen kann. OK, so weit erstmal vielen Dank. Die naechste Frage kommt bestimmt bald : ) Hartmut
Hallo Hartmut, freut mich zu hören, dass ich helfen konnte. Wenn Du für die Anzeige des Datenstroms (sprich des Bildes) einen Monitor nimmst, musst Du bedenken, dass dieser die Daten in einer anderen Geschwindigkeit benötigt, als sie die Kamera zur Verfügung stellen kann (schon wegen der Bildwiederholfrequenz - min 50 statt max.25 oder 30). Das würde ein Zwischenspeichern der Bilddaten notwendigmachen, wofür wieder der RAM nicht reicht. Hier habe ich den beschriebenen virtuellen dual-port RAM Controller eingesetzt. Damit entkoppelt man beide Seiten. Wie digitalisierst Du eigentlich die Daten der CCD Kamera. Es gibt da ja sicherlich mehr als eine Variante. Würde mich mal interessieren, ob Du da Erfahrungen hat. Ich hab nämlich den einfacheren Weg über eine CMOS Kamera gewählt (ist zwar teurer, aber dafür super simple) Tschau Steffen
Hi Steffen, ich habe leider keine Erfahrung mit der digitalisierung der Zeilensignale. Aber ich weiss, das es eine LVDS (Low power Voltage Differential Signaling) Verbindung zwischen Kamera und FPGA gibt. Naiver weise wollte ich dann einfach ein Modul im FPGA implementieren, welches die Digitalisierung uebernimmt. Ansonsten nehme ich einen geeigneten Baustein, den ich dann an die Pin des FPGAs loeten werde. ABer da muss ich aber erstmal noch weiterstudieren..... Gruss nach Deutschland, so heute ist sonntag, und so verhalte ich mich dann auch! Ein schoenes wochenende und bis morgen.....
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.