Servus!
Erstmal: ich hoffe, ich bin hier richtig, wenn nicht: sorry :)
Um es kurz zu fassen, folgende Situtation: ich habe ein Projektaufbau,
bei dem ein Farb-Display (320x240) mit dem im Bild angehängten Signalen
angesteuert wird.
Wie zu sehen ist kommen einfach getaktet durch CLK die Signale für ein
Pixel rein, wobei die Farbwerte (R, G und B) parallel übergeben werden.
Ich möchte nun etwas besteln, womit ich dieses "RGB" Signal abgreifen
kann und am besten per USB oder einer anderen Schnittstelle zu einem PC
übertragen kann.
Die Steuer-Signale kann ich ignorieren (sind für Dimmung, An/Aus, etc.).
Ich habe schon etwas Erfahrung im Programmieren von FPGAs und auch im
Erstellen von Layouts mit ICs wie z.B. Atmel AVR, allerdings meist
weniger komplex, Schrittmotor-Synchronisation etc.
Software-seitig (die Software am PC, die aus z.B. dem USB-Signal das
Bild zusammenfriemelt und speichert) sollte kein Problem sein, damit
habe ich Erfahrung.
USB als Schnittstelle zum PC würde ich vorziehen, da es da schon diverse
ICs mit Treibern gibt, die daraus für den Rechner einfach einen
COM/Seriellen Port machen, was denk ich reichen würde.
Nun meine Fragen:
- wie würded ihr das umstetzen (Prototyp!):
- ein kleines FPG-Board, evtl. schon mit USB-ICs o.Ä.?
- eins/zwei Atmel (1er USB, einer "Converter") + evtl. Speicher falls
nötig, dazu ein Layout bastel und auf ein Leiterboard klatschen
- wie schätzt Ihr den Aufwand ein? etwas Erfahrung mit allem ist
vorhanden, aber nicht extremst vertieft.
- gibt es was Ähnliches schon?
- Zeitaufwand?
Ich hoffe, Ihr könnt mir hier weiter helfen. Ich hätter gerne Lust, das
umzusetzen und mich darüber mehr in die Materie zu vertiefen.
Vielen Dank
Thomas
>USB als Schnittstelle zum PC würde ich vorziehen, da es da schon diverse>ICs mit Treibern gibt, die daraus für den Rechner einfach einen>COM/Seriellen Port machen, was denk ich reichen würde.
320 x 240 x 3 Farben x 60Hz x 10 = 138.24MBit/s
Das macht kein COM Port.
Thomas schrieb:> Ich möchte nun etwas besteln, womit ich dieses "RGB" Signal abgreifen> kann und am besten per USB oder einer anderen Schnittstelle zu einem PC> übertragen kann.
Schau dir mal Softwarelösungen wie z.B. (Tight-)VNC oder sonstige
"Fernverwaltungssysteme" (wie z.B. Back Orifice) an.
Der von dir getriebene Aufwand lohnt nicht wirklich, es sei denn du
schickst dein 24Bit-RGB-Signal auf DACs(R2R geht vielleicht) und greifst
das mit einem KVM-Umschalter ab, der seinerseits einen VNC- oder
Sonstwas-Server aufmacht, auf den du dann per Ethernet zugreifen kannst.
mfg mf
PS: Der Umweg über Analogsignale wäre für mich jedenfalls nicht
akzeptabel.
Falls du etwas für ein System suchst, das nur "Kommandozeile" kann, also
keine GUI wie Windows oder Xserver oder wasauchimmer anbietet, kann man
das problemlos per telnet-server, comport oder sonstwie viel besser
fernsteuern/fernwarten.
>Der von dir getriebene Aufwand lohnt nicht wirklich, es sei denn du>schickst dein 24Bit-RGB-Signal auf DACs(R2R geht vielleicht) und greifst>das mit einem KVM-Umschalter ab, der seinerseits einen VNC- oder>Sonstwas-Server aufmacht, auf den du dann per Ethernet zugreifen kannst.
Ich würde einfach eine USB Kamera vor das Display pappen;)
@holger: sorry, ganz vergessen: das Bild muss nicht in Echtzeit
durchgereich werden, es werden eher so zw. 4-10 Bilder/sec oder eine Art
"on Demand". Auf das (statische) Bild soll dann eine Mustererkennung
und/oder OCR angewand werden.
@Mini Float: das hört sich in der Tat aufwendig an, allerdings wollte
ich es so einfach wie möglich halten. eine Server-Client umsetzung hatte
ich eigentlich nicht vor. trotzdem danke.
holger schrieb:> Ich würde einfach eine USB Kamera vor das Display pappen;)
Das ist zurzeit der Fall, nur leider ist die Kamera nicht wirklich
ausreichend gut, z.B. eine Pixelvergleich machen zu können.
>@holger: sorry, ganz vergessen: das Bild muss nicht in Echtzeit>durchgereich werden, es werden eher so zw. 4-10 Bilder/sec oder eine Art>"on Demand". Auf das (statische) Bild soll dann eine Mustererkennung>und/oder OCR angewand werden.
Na dann ist eine USB Kamera doch bestens dafür geeignet.
320 x 240 x 3 x 4 x 10 = 9.2MBit/s
Dafür reicht kein COM und USB 1.1 auch nicht.
holger schrieb:>>@holger: sorry, ganz vergessen: das Bild muss nicht in Echtzeit>>durchgereich werden, es werden eher so zw. 4-10 Bilder/sec oder eine Art>>"on Demand". Auf das (statische) Bild soll dann eine Mustererkennung>>und/oder OCR angewand werden.>> Na dann ist eine USB Kamera doch bestens dafür geeignet.>> 320 x 240 x 3 x 4 x 10 = 9.2MBit/s>> Dafür reicht kein COM und USB 1.1 auch nicht.
wie geschrieben, kamera ist für diverse Aufgaben suboptimal. deswegen ja
das vorhaben. allerdings sehe ich das gerade leider so etwas
auseinandernder bröckeln :)
Das sollte mit einem kleinen FPGA und einem USB 2.0 HighSpeed Controller
sehr simpel sein. Der FPGA speichert die 24 Bit in einen FIFO, der auf
der Schreib-Seite 32 Bit Breite hat, auf der Lese-Seite 8 Bit. Dann list
du die Daten mit einem USB Controller aus, zum Beispiel dem Cypress FX2
im Slave FIFO Modus oder dem FT2232H. Fertig ist der Lack. Mit einem
entsprechend tiefem FIFO könntest du sicherlich sogar die reichlich
13MB/s bei vollen 60Hz streamen. Musst nur auf der Schreiben-Seite die
Sync-Signale irgendwie noch mit berücksichtigen. Vielleicht gleich in
die übrig bleibenden 8 Bit rein schreiben und dann am PC auswerten. Da
hast du gleich wieder die Sync-Signale.
Christian R. schrieb:> Das sollte mit einem kleinen FPGA und einem USB 2.0 HighSpeed Controller> sehr simpel sein. Der FPGA speichert die 24 Bit in einen FIFO, der auf> der Schreib-Seite 32 Bit Breite hat, auf der Lese-Seite 8 Bit. Dann list> du die Daten mit einem USB Controller aus, zum Beispiel dem Cypress FX2> im Slave FIFO Modus oder dem FT2232H. Fertig ist der Lack. Mit einem> entsprechend tiefem FIFO könntest du sicherlich sogar die reichlich> 13MB/s bei vollen 60Hz streamen. Musst nur auf der Schreiben-Seite die> Sync-Signale irgendwie noch mit berücksichtigen. Vielleicht gleich in> die übrig bleibenden 8 Bit rein schreiben und dann am PC auswerten. Da> hast du gleich wieder die Sync-Signale.
Genau sowas habe ich mir auch gedacht.
Dazu habe ich schon etwas im Netz gesucht, nach einer Art
kostnegünstigen Entwickler-board mit einem kleinen FPGA und USB 2.0
Controller.
Du kennst nicht zufälligerweise eines?
Eine andere Richtung: ich habe im Netz folgendes gefunden:
http://apple.clickandbuild.com/cnb/shop/ftdichip?op=catalogue-products-null&prodCategoryID=116&title=V2DIP1
... ich kenne mich nicht wirklich mit FTDI etc. aus, aber nach dem, was
ich darüber gelesen habe, sollte soetwas doch auch mit solch einem Modul
möglch sein.
Für mich hört sicher der VNC2
(http://www.ftdichip.com/Products/VNC2.htm) nach einem programmierbaren
USB2.0 Controller inkl. Speicher und FIFO-Schnittstelle an, dazu gibts
noch ne ToolChain. Oder irre ich mich da? Jemand shcon Erfahrung damit?
Danke nochmal für die Hilfe.
slw schrieb:> wenn man die Bilder vorher komprimiert, braucht man nicht so viel> übertragen.
Ja wenn es wirklich ein FPGA wird, wäre zumindest eine RLE, abhängig von
der Leistung und den Ressourcen des FPGa sogar mehr drin.
Thomas schrieb:> Auf das (statische) Bild soll dann eine Mustererkennung> und/oder OCR angewand werden.Thomas schrieb:> Ja wenn es wirklich ein FPGA wird, wäre zumindest eine RLE, abhängig von> der Leistung und den Ressourcen des FPGa sogar mehr drin.
RLE ist bei den vollen 24bit aussichtslos. Wenn man nur 12Bit, also von
den 3x 8Bit nur das obere Nibble hernimmt, Könnte da mehr gehen. Oder
vom FPGA die Eingangsdaten auf 256 Graustufen umkodieren lassen.
Evalboard: Altera DE2 Board, allerdings nicht ganz so günstig. Dafür hat
man eine Plattform, auf der einiges her geht.
Mit den Boards lässt sich echt schön arbeiten, hab ich an der Uni in
einem Praktikum verwenden dürfen. Vllt. lach ich mir so eines mal zum
rumprobieren an.
mfg mf
Mini Float schrieb:> Thomas schrieb:>> Auf das (statische) Bild soll dann eine Mustererkennung>> und/oder OCR angewand werden.>> Thomas schrieb:>> Ja wenn es wirklich ein FPGA wird, wäre zumindest eine RLE, abhängig von>> der Leistung und den Ressourcen des FPGa sogar mehr drin.>> RLE ist bei den vollen 24bit aussichtslos. Wenn man nur 12Bit, also von> den 3x 8Bit nur das obere Nibble hernimmt, Könnte da mehr gehen. Oder> vom FPGA die Eingangsdaten auf 256 Graustufen umkodieren lassen.>> Evalboard: Altera DE2 Board, allerdings nicht ganz so günstig. Dafür hat> man eine Plattform, auf der einiges her geht.> Mit den Boards lässt sich echt schön arbeiten, hab ich an der Uni in> einem Praktikum verwenden dürfen. Vllt. lach ich mir so eines mal zum> rumprobieren an.>> mfg mf
Mit unter anderem dem DE2 von Altera hatte ich wärend meiner
Diplomarbeit zu tun, die waren wirklich recht angenehm. Nur leider ist
es diesmal ein mehr oder weniger privates Projekt und uns stehen nicht
all zu viele Mittel bereit.
Aber: falls, die Sache mit dem VNC2 nicht das Richtige ist, was haltet
ihr davon:
http://shop.trenz-electronic.de/catalog/product_info.php?cPath=1_50&products_id=62
? Sowas sollte doch ausreichen, oder? dazu gibt es noch ein Träger-board
für die Entwicklungsphase, und wenn ich es irgendwann mal in ein hübsche
Box packen will, kann man sich dazu stecker basteln.
gruß
Thomas
Mal ne ganz blöde Frage:
Was ist auf dem Display eigentlich drauf das es sich lohnt
mehrere Hundert Euro in Hardware und hunderte Stunden Arbeit
zu investieren?
holger schrieb:> Mal ne ganz blöde Frage:>> Was ist auf dem Display eigentlich drauf das es sich lohnt> mehrere Hundert Euro in Hardware und hunderte Stunden Arbeit> zu investieren?
Szenario ist, dass das Display sicherheitsrelevante Informationen in
einer x-beliebigen Situtation für einen Nutzer darstellt. Um nun bei der
Entwicklung solch eines sicherheitsrelevanten Stücks Hardware schon in
der Entwicklungsphase Fehler zu finden und zu beheben, soll durch
automatisierte Tests die Hardware in diverse definierte
(Fehler-)Zustände gebracht werden, und die Ausgabe auf dem Display
kontrolliert werden. Damit sich nicht jemande 24h am Tag hinsetzen muss,
um sich das Display anzuschauen, soll das Bild abgefasst werden und per
Mustererkennung/OCR oder sonstwelche Bildverarbeitung die Information
ausgewertet und mit dem definierten Zustand verglichen werden.
In unseren Köpfen jedenfalls klingt das Prinzip dieses
"RGB-zu-USB-Wandlers", natürlich an die in anderen Umfängeund und
Umgebungen, also nach einer interessanten und evtl. auch mal sich
lohnenden Angelegenheit :)
Allerdings treibt uns zur Zeit in erster Linie an, mal solch ein Projekt
umzusetzen und ein Display, welches mit den Erzeugniss eines anderen
Projektes betrieben wird, so abzugreifen.
Thomas schrieb:> @holger: sorry, ganz vergessen: das Bild muss nicht in Echtzeit> durchgereich werden, es werden eher so zw. 4-10 Bilder/sec oder eine Art> "on Demand". Auf das (statische) Bild soll dann eine Mustererkennung> und/oder OCR angewand werden.
Wenn es nicht Echtzeit sein muss, mach doch folgendes:
- Implementiere einen Zeilen und Spaltenzähler auf dem FPGA
- Sende vom PC die Nummer der zu lesenden Zeile
- auf dem FPGA: Wenn die zu lesende Zeile da ist, ins interne RAM lesen;
dafür sollte auch das Blockram reichen. Dann Signal an den PC und die
gegrabbte Zeile zum PC senden.
- PC sendet die nächste zu lesende Zeile - das sollte dann nicht die
folgende sein, sondern n+4 oder so, je nachdem, wie schnell die
Übertragung ist. Bei n+1 müsstest Du sonst immer den nächsten Frame
abwarten und bräuchtest bei 240 Zeilen 240 Frames, d.h. 4 Sekunden,
wobei das meiste Wartezeit ist.
Mit dieser Methode sollte das ganze leistungsmäßig unkritisch werden und
die Hardware-Anforderungen gering halten.
fchk
>Szenario ist, dass das Display sicherheitsrelevante Informationen in>einer x-beliebigen Situtation für einen Nutzer darstellt.
Sowas dachte ich mir schon.
>Um nun bei der>Entwicklung solch eines sicherheitsrelevanten Stücks Hardware schon in>der Entwicklungsphase Fehler zu finden und zu beheben, soll durch>automatisierte Tests die Hardware in diverse definierte>(Fehler-)Zustände gebracht werden, und die Ausgabe auf dem Display>kontrolliert werden.
Und woher weiss du dann das das was du an das Display sendest
auch ankommt? Du kannst mitsniffen am LCD Port, aber woher weisst
du das das Display auch noch was anzeigt? Nimm ne Kamera.
Was spricht dagegen, das Display mit einer einfachen USB-Kamera zu
filmen? Bei der geringen Auflösung dürfte kaum Information verloren
gehen, so eine Kamera kostet praktisch nichts und
Bildauswertungssoftware, die Bewegtbilder solcher Kameras auswertet,
existiert auch.
Wie gesagt, zur Zeit arbeiten wir mit Kameras, haben schon diverse
ausprobiert, Leihgaben vom Institut.
Das Problem ist aber, dass wir für die verschiedenen
Szenarien/Tests/Hardware immer gleiche Bedingungen schaffen wollen und
das ganze evtl. auch im Feld eingesetzt werden soll. Eine Kamera
bedeutet da einen recht hohen Konfigurationsaufwand und eine zu starke
Abhängigkeit von der Umgebung (idealerweise immer dunkel, farb-und
geometsiche Verzeichnung durch die Linsen etc.).
Außerdem soll es auch möglich sein, Pictogramme oder Bilder, die teil
der sicherheitsrelevanten Information sind, pixelgenau zu suchen bzw. zu
vergleichen.
Und Kameras, die so hochauflösend genug sind, damit auch bei etwas
Entfernung noch nahezu Pixelgenaue Bilder zustande kommen, mit
Objektive, die nahezu keine Störing mit reinbringen, kosten eine ganzen
Batzen Geld.
Wir WOLLEN gerade eine Alternative zu Kameras finden.
Ich werd mich heute mal mit dem VNC2-Zeux auseinandersetzen und wenn das
nicht das Richtige ist, mal zusehen, dass ich irgendo nen günstigen
FGPA-USB-Aufbau herbekomme, oder nen Entwicklerboard. Wenn noch jemand
dazu nen Ideechen hat, immer her damit :)
Christian R. schrieb:> Boards mit FPGA und USB 2.0 gibts beispielsweise hier:> http://www.ztex.de/usb-fpga-1/index.d.html erhältlich glaub bei Trenz.> Der VNC2 von FTDI ist doch ein Host Controller, oder?
Zum VNC2 FTDI: ganz ehrlich ... ich weiß nicht wirklich was das Ding ist
und was es kann bzw. ob es geeignet ist, sah nur interessant aus (und
günstig). Wird, bei deine Reaktion, aber anscheinend nicht das Richtige
sein.
Danke für den Hinweise zu ZTEX, diese
(http://www.ztex.de/usb-fpga-1/usb-fpga-1.11.d.html) Board sieht recht
interressant aus, hat aber leider einen kleinen Haken: es benötigt eine
externe Stromversorgung und kann nicht einfach per USB betrieben werden.
Man kann zwar ein zusätzliches Versorgerboard basteln, aber trotzdem
wäre dann eine extra z.B. 5V Versorgung für diese nötig. Das schränkt
den Einsatz der Gerätschaft wieder etwas ein. Oder irre ich?
Aber für einen Prototyp evtl. sogar ein Kandidat.
Christian R. schrieb:> Ah, der VNC-II kann auch Device. Naja, aber mit FullSpeed kommst du> nicht weit.>> Wegen USB-powered Board schau mal hier:> http://www.cesys.com/fpga/spartan/efm01_de.html
Danke, das sieht genau richtig aus. Werde mir das mal genauer anschauen
und evtl. damit einen Prototypen basteln.
Ich würde das dann so machen, dass der PC über USB den FPGA veranlasst,
ein komplettes Bild in den FIFO zu laden. Halt ein Startsignal und dann
wartet der FPGA auf das nächste Data Enable Signal, speichert alle Pixel
ab, bis es wieder weg geht. Dann hast du ein komplettes Bild im
Speicher. Musst aber eben schon sofort nach dem Startsignal anfangen mit
auslesen, sonst ist der Speicher voll. 320x240x2 wären 150 BlockRAM
Blöcke zu je 1k*16. Der S3500 hat aber nur 28 oder sowas.
Ja, siehst du richtig. Damit gehts natürlich genauso. Mit dem Cypress
FX2 kann man aber natürlich auch mit einer DLL sprechen. Der FT2232H hat
gegenüber den Cypress den Vorteil, dass man keine Firmware auf den USB
Controller bringen muss. Das Board wäre also noch besser geeignet um
schnell ans Ziel zu kommen.
Christian R. schrieb:> Ja, siehst du richtig. Damit gehts natürlich genauso. Mit dem Cypress> FX2 kann man aber natürlich auch mit einer DLL sprechen. Der FT2232H hat> gegenüber den Cypress den Vorteil, dass man keine Firmware auf den USB> Controller bringen muss. Das Board wäre also noch besser geeignet um> schnell ans Ziel zu kommen.
Sehr gut, dann wird es wohl dieser. Vielen Dank für dein hilfreichen
Beiträge.
Gruß
Thomas