Forum: FPGA, VHDL & Co. Board zur Bildverarbeitung


von Zennehoy (Gast)


Lesenswert?

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

von Jochen Pernsteiner (Gast)


Lesenswert?

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

von Jörn (Gast)


Lesenswert?

Lt. Xilinx kommt das Spartan 3e Board im September...

von Sascha (Gast)


Lesenswert?

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

von Zennehoy (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Bildverarbeitung? Da wuerde ich mich eher mal in Richtung DSP umschauen,
z.B. Blackfin. In C programmiert sich sowas doch einfacher als in VHDL.

von Zennehoy (Gast)


Lesenswert?

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

von Steffen O (Gast)


Lesenswert?

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

von Michael Noll (Gast)


Lesenswert?

>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

von Hartmut (Gast)


Lesenswert?

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.

von Steffen O. (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von Hartmut (Gast)


Lesenswert?

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

von Steffen O. (Gast)


Lesenswert?

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

von Hartmut (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.