Halli hallo ,
ich wollte mich bevor ich mit der Uni fertig bin mit FPGAs und
Mikrocontrollern beschäftigen, da in dem Unternehmen in dem ich anfangen
will sowas sehr gut angesehn ist.
Ich habe auch etwas gefunden was ich sogar privat gerne realisieren
würde.
Folgendes will ich basteln :
Ich möchte gerne das DVI signal einer Grafikarte in einen FPGA
einspeisen,
und dann die Pixelfarben bestimmen, also
A) xy-Positionen auf dem Bildschirm von Pixeln mit bestimmter Farbe
B) Pixelfarben von Pixeln auf bestimmten xy-Positionen rausfinden
Dafür bräuchte ich ja schonmal DVI-in.
C) Idealerweise würde ich das DVI signal noch etwas verändern, geplant
ist ein Overlay "über" das eigentliche Bild zu legen.
Punkt C ist aber kein muss. Dafür bräuchte ich dann wohl DVI-out.
Ansonsten müsste ich wohl einen DVI splitter an die Grafikkarte hängen
und dann ein Kabel zu meinem Device und das andere zum Monitor führen.
Anschließend rechne ich mit den aus A und B gewonnen Infos im FPGA rum
und schicke anschließend auf dem Ergebnis der Rechnerei basierende Maus
und Tastaturbefehle an den PC in dem die Grafikkarte steckt zurück. (bzw
noch ein Overlay auf den DVI out)
Es würde reichen wenn die Pixel 5 mal pro Sekunde ausgelesen werden.
Das wars eigentlich auch schon. Ich weiß, das kann man alles auch
komplett mit Software auf dem PC machen, ist aber zu langsam und ich
möchte gerne nunmal eine externe Lösung haben sodass man den "Device"
nenn ich es mal^^ überall hin mitnehmen kann, ohne dann auf einem
anderen Rechner was installieren zu müssen.
Die entsprechende Programmierung werd ich wohl hinbekommen. Ich bin sehr
gut was neue Programmiersprachen lernen angeht. Allerdings tu ich mich
mit der Hardware schwer. Ich hab jetzt schon viel gesucht und plane
folgendes zu kaufen :
Einmal davon 1 oder 2 als Maus oder Keyboard
https://www.sparkfun.com/products/12640
Da bin ich durch dieses Tutorial drauf gekommen :
https://www.sparkfun.com/tutorials/337
Für die DVI Ein und Ausgabe dieses Daugtherboard das über HSMC Interface
kommuniziert:
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=359
Und als Mainboard hatte ich dieses ins Auge gefasst :
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=830
Grund für das Mainboard sind für mich einmal
# der HSMC Platz,
# die Arduiono analog Pins in der Mitte mit denen ich wie ich glaube
dann meine sparkfun USB devices ansteuern kann,
# die 4 Ziffernanzeigen könnten mir noch sehr nützlich sein
# es ist ein Starterkit und deswegen für mich als Einsteiger bestimmt
ausreichend dokumentiert
# ausserdem würde ich gerne ein Board haben wo ich noch viele andere
Sachen mit machen kann und ich glaube das ist mit diesem möglich (ich
hab schon viel über diese "shields" die man in der mitte aufstecken kann
angeschaut, sehr interessant)
# der Plexiglas Nies-Schutz ist sowieso das Beste ;-)
Geldtechnisch macht es nichts, wenn die Hardware etwas zu teuer ist,
solange es später funktioniert. Meine Eltern unterstützen mich da zum
Glück etwas.
Ich hab allerdings keine Ahnung ob die Hardware die ich mir jetzt
rausgesucht hab so zusammen passen wie ich mir das vorstelle und bitte
deswegen hier jetzt um Hilfe und Beurteilung oder Hinweise. Naja
vielleicht erbarmt sich mir ja jemand von euch lieben Leuten :-)
Okay dann viele Grüße jedenfalls erstmal ^^
Conny
corneliaW schrieb:> Das wars eigentlich auch schon. Ich weiß, das kann man alles auch> komplett mit Software auf dem PC machen, ist aber zu langsam> Es würde reichen wenn die Pixel 5 mal pro Sekunde ausgelesen werden.
Dann ist eine Softwarelösung mit Prozessor garantiert nicht zu
langsam. So lausig schlecht kann man einen Prozessor gar nicht
programmieren...
corneliaW schrieb:> ich wollte mich bevor ich mit der Uni fertig bin
Idealerweise hättest du damit vor der Uni schon angefangen...
> mit FPGAs und Mikrocontrollern beschäftigen,
Du solltest dich genauer festlegen. Es gibt Leute, die leben vom Einen
und Leute, die leben vom Anderen. Und eines dürfte klar sein: in einem
(halben?) Jahr lernst du garantiert nicht Beides!
corneliaW schrieb:> Ich bin sehr gut was neue Programmiersprachen lernen angeht. Allerdings> tu ich mich mit der Hardware schwer.
Aufpassen: VHDL und Verilog sind KEINE Programmiersprachen.
Es sind HDL = HardwareBESCHREIBUNGSsprachen. Und um etwas beschreiben zu
können, musst du dir selber ein Bild davon machen können.
Auch deine sonstige Terminologie deutet darauf hin, dass du mit FPGAs
noch 0 Erfahrung hast. Daher meine Einschätzung: ohne bisherige
Erfahrung mit FPGAs wirst du für dieses Projekt in Teilzeit (so als
Hobby nebenher) mindestens 2 Jahre durchgängige Beschäftigung haben.
Auch am Wochenende...
Mein Tipp: kauf dir das FPGA-Kit und fang einfach an. Mit dem
Blinklicht, dann das Lauflicht, dann ein paar Schnittstellen
(VGA,PS2,RS232). Und dann wird das Gras schon wieder grün...
Dann bist du bereit für dein recht anspruchsvolles Projekt, wo schon das
Timing einiges Kopfzerbrechen machen wird.
corneliaW schrieb:> # die Arduiono analog Pins in der Mitte mit denen ich wie ich glaube> dann meine sparkfun USB devices ansteuern kann
Du träumst! Da steht:
1
board includes hardware such as Arduino Header, on-board USB Blaster
Das bedeutet nur, dass da ein paar Pinreihen mit Arduino-Spacing
angeordnet sind. Und der USB-Blaster ist der Programmer für das
Config-PROM des Boards. Mit dieser USB-Schnitte wirst du aber keine
Verbindung zum PC oder gar als Master zu irgendwelchen Devices aufbauen
können...
corneliaW schrieb:> Anschließend rechne ich mit den aus A und B gewonnen Infos im FPGA rum> und schicke anschließend auf dem Ergebnis der Rechnerei basierende Maus> und Tastaturbefehle an den PC in dem die Grafikkarte steckt zurück. (bzw> noch ein Overlay auf den DVI out)> Es würde reichen wenn die Pixel 5 mal pro Sekunde ausgelesen werden.
Ich weiß nicht, ob es nur mir so geht, aber ich habe den Sinn/die
Funktionsweise deines Projekts nicht ganz nachvollziehen können.
Du willst mittels Bildsignalen eine Maus und eine Tastatur simulieren?
Quasi: Wenn im Cluster X die Farbe rot überwiegt, führe '\r' aus.
So?
Was soll da für ein nachvollziehbares Verhalten rauskommen?
Und welche Aufgabe sollen die Arduino-Boards haben?
Hi Leute
Danke erstmal für die schnellen Antworten!!
Und keine Sorge, ich fühl mich keineswegs irgendwie auf den Schlips
getreten, dass ich mich auf den Boden der Tatsachen zurück holt, das
find ich eher gut!
Lothar Miller schrieb:> Dann ist eine Softwarelösung mit Prozessor garantiert nicht zu> langsam.
Kann sein, dass du recht hast. Allerdings ist je nach Betriebssystem und
anderer Faktoren das nicht immer umbedingt leicht möglich. Und es soll
halt ohne irgendwas installieren zu müssen laufen.
Lothar Miller schrieb:> Auch deine sonstige Terminologie deutet darauf hin, dass du mit FPGAs> noch 0 Erfahrung hast.
Stimmt :-) Aber das werd ich ändern^^
Lothar Miller schrieb:> Mein Tipp: kauf dir das FPGA-Kit und fang einfach an.
Ich werde deinen Rat befolgen und es mir heute bestellen :-)
Lothar Miller schrieb:> Aufpassen: VHDL und Verilog sind KEINE Programmiersprachen.
Macht nix, ich werd das sicher genauso schnell lernen, vielleicht etwas
langsamer^^ Da bin ich sehr optimistisch.
Lothar Miller schrieb:> Du träumst! Da steht:board includes hardware such as Arduino Header,> on-board USB Blaster> Das bedeutet nur, dass da ein paar Pinreihen mit Arduino-Spacing> angeordnet sind.
Also wie ich das verstanden habe sind das trotzdem stink normale analog
Pins die ich ansteuern kann oder ? Das heißt 2 bis 5 Kabel rein in die
Arduino Pinreihen und ab damit zum anfangs erwähnten MicroPro von
Sparkfun der dann die analogsignale vom FPGA board empfängt und dann mit
seinem eigenen MCU über seine eigene USB Schnittstelle die Maus für den
PC emuliert. Müsste doch klappen, oder seh ich das falsch ?
(Sorry ich glaub das hab ich in meinem Anfangspost nicht klar
beschrieben. Das die USB Schnittstelle am FPGA nur der Programmer ist
wusste ich. Deswegen hatte ich mir ja überlegt die MicroPro als
Maus/KeyboardEmulator zu benutzen da ich die schön über die analogen
Arduino Pins ansteuern kann)
Danke erstmal dir Lothar für deine lange antwort! Und jetzt zu Björn.
Björn G. schrieb:> Ich weiß nicht, ob es nur mir so geht, aber ich habe den Sinn/die> Funktionsweise deines Projekts nicht ganz nachvollziehen können.Björn G. schrieb:> Wenn im Cluster X die Farbe rot überwiegt, führe '\r' aus.> So?
Ich glaub wir meinen das selbe :-)
Also für den Anfang würde es reichen wenn ein Pixel mit zb der Farbe
0x123456 gefunden wird sich die Maus dann dahin bewegt. Weiter soll auch
noch sowas passieren wie : Wenn pixel 100,100 rot ist und pixel 200,200
grün , dann schicke die Tastenkombination xyz.
Wenn das erstmal klappt, dann werd ich dem ganzen noch mehr Intelligenz
einhauchen damit es komplexere Strukturen erkennen kann, die nicht nur
aus einem Pixel bestehen.
Björn G. schrieb:> Und welche Aufgabe sollen die Arduino-Boards haben?
Es sind keine Arduino Boards eingeplant. Ich will über die Arduino Pins
allerdings, da die meines wissens analog sind, zwei Sparkfun MicroPro (
https://www.sparkfun.com/products/12640 )ansteuern, die dann als Maus
und Tastatur fungieren.
Oder hab ich da was falsch verstanden und das klappt so nicht?
An dem FPGA Board was ich mir da rausgesucht hab finde ich gleichzeitig
noch gut, dass das Board auch die Arduino Boards unterstützt, da ich
dann mit dem Board auchnoch sonst so viel machen kann, wenn ich denn
möchte.
Sooo, dir auch vielen Dank für deinen Post lieber Björn!
Was ich gerne noch wissen würde ist, ob die Hardware Zusammenstellung
denn die von mir überlegten Aufgaben Lösen kann. Grade auch bei dieser
DVI In Out erweiterung weiß ich auch überhaupt garnicht Bescheid.
Ob das ganze am Ende lange dauert bis das fertig ist, ist halb so wild.
Ich werd dann heute erstmal im Bastelshop bei uns in der Stadt
vorbeischauen und mal sehen was es da so gibt.
Ich hoffe wir lesen uns nochmal!
Grüße, Conny
Björn G. schrieb:> ...> Ich weiß nicht, ob es nur mir so geht, aber ich habe den Sinn/die> Funktionsweise deines Projekts nicht ganz nachvollziehen können.> Du willst mittels Bildsignalen eine Maus und eine Tastatur simulieren?> Quasi: Wenn im Cluster X die Farbe rot überwiegt, führe '\r' aus.> So?>> Was soll da für ein nachvollziehbares Verhalten rauskommen?> ...
Online-Kartenspiele spielen (P-o-k-e-r) oder in Online-Rollenspielen
automatisch Gold schürfen lassen und damit Geld verdienen, so was in der
Art eben.
corneliaW schrieb:> Also wie ich das verstanden habe sind das trotzdem stink normale analog> Pins die ich ansteuern kann oder ?
Es sind sicher keine analogen Pins. Es sind bestenfalls IO-Pins mit
3,3V
> Das heißt 2 bis 5 Kabel rein in die> Arduino Pinreihen und ab damit zum anfangs erwähnten MicroPro von> Sparkfun der dann die analogsignale vom FPGA board empfängt und dann mit> seinem eigenen MCU über seine eigene USB Schnittstelle die Maus für den> PC emuliert. Müsste doch klappen,
Mit ein wenig Programmieraufwand: Ja.
> oder seh ich das falsch ?
Wenn du lange genug studierst, dann schon. Sonst könnte es damit
kollidieren was corneliaW schrieb:>>> bevor ich mit der Uni fertig bin
corneliaW schrieb:> Also wie ich das verstanden habe sind das trotzdem stink normale analog> Pins die ich ansteuern kann oder ?
Im Blockdiagramm auf der "Specification" Seite sieht man das gut: Es
sind acht analoge EINGANGE vorhanden, mit einem ADC von Analog (mit SPI
zum FPGA).
Zusätzlich ist noch ein AD/DA Wandler drauf für die Audio-Schnittstellen
(Kopfhörer/Mikrofon)
> Das heißt 2 bis 5 Kabel rein in die> Arduino Pinreihen und ab damit zum anfangs erwähnten MicroPro von> Sparkfun der dann die analogsignale vom FPGA board empfängt und dann mit> seinem eigenen MCU über seine eigene USB Schnittstelle die Maus für den> PC emuliert. Müsste doch klappen, oder seh ich das falsch ?> (Sorry ich glaub das hab ich in meinem Anfangspost nicht klar> beschrieben. Das die USB Schnittstelle am FPGA nur der Programmer ist> wusste ich. Deswegen hatte ich mir ja überlegt die MicroPro als> Maus/KeyboardEmulator zu benutzen da ich die schön über die analogen> Arduino Pins ansteuern kann)
Ja, der zweite Teil funktioniert prinzipiell, du musst nur die
Informationen vom FPGA mit einem anderen System zum MicroPro bringen (z.
B. SPI). Ein MicroPro kann auch problemlos gleichzeitig Maus UND
Tastatur spielen. Mit den Arduino Libraries bist du da auch schneller
fertig als dir ein VHDL Buch per Post geliefert wird.
Hallo !!
Man das geht ja hier richtig fix mit euren Antworten!!
Gustl Buheitel schrieb:> Keine Ahnung welches Board er genau meint, dieses hier>> http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=830&PartNo=1>> hat auch analoge Pins laut Beschreibung, also wohl einen AD/DA Wandler> mit an Board.
Genau das meine ich! Hatte ich in meinem ersten Post ja verlinkt und
geschrieben das ich das als mein Mainboard nehmen will.
Lothar Miller schrieb:> Mit ein wenig Programmieraufwand: Ja.
Spitze! Das wird das erste sein, was ich ausserhalb von Tutorials, die
ich vorher wohl machen muss, angehen werde!
Lothar Miller schrieb:> corneliaW schrieb:>> Also wie ich das verstanden habe sind das trotzdem stink normale analog>> Pins die ich ansteuern kann oder ?> Es sind sicher keine analogen Pins. Es sind bestenfalls IO-Pins mit> 3,3V
Ich glaub doch. Wenn du auf
https://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&No=830
gehst und auf Spezifikation klickst dann steht da unter Expansion I/O
"Arduino header, including analog pins"
Hi Christoph!
Christoph Z. schrieb:> Es> sind acht analoge EINGANGE vorhanden, mit einem ADC von Analog (mit SPI> zum FPGA).
Hab ich auch grad gefunden! Das steht ja auf der Spezifikationsseite
unter ADC.
"8-Channel Analog Input. Input Range : 0V ~ 4.096V"
Das schließt damit wohl aus, dass ich über diese Pins dann Analog Output
erzeuge, oder ?
Weil weiter oben steht ja unter Expansion I/O "Arduino header, including
analog pins"
Christoph Z. schrieb:> Ein MicroPro kann auch problemlos gleichzeitig Maus UND> Tastatur spielen. Mit den Arduino Libraries bist du da auch schneller> fertig als dir ein VHDL Buch per Post geliefert wird.
Genau deswegen will ich den MicroPro benutzen, weil der das ganze Maus
und Tastatur Konstrukt schon als Demo mitbringt und ich das nur etwas
anpassen brauch :-)
Christoph Z. schrieb:> du musst nur die> Informationen vom FPGA mit einem anderen System zum MicroPro bringen (z.> B. SPI).
Wie kann ich das denn machen? Also die 8 Input Analog Pins sind ja
irgendwie mit dem SPI verbunden denk ich mal, aber Input bringt mir ja
nix.
Ansonsten hab ich noch gesehn, das Board hat auch ein UART to USB-B ,
neben dem USB Blaster zum Proggen. Kann ich damit nicht Notfalls Maus
und Tastatur emulieren ? (Möchte ich nicht so gern, da der MicroPro das
schon total einfach realisieren kann)
Viele Grüße,
Conny
corneliaW schrieb:> Das schließt damit wohl aus, dass ich über diese Pins dann Analog Output> erzeuge, oder ?
Richtig. Ein AD-Wandler macht die umgekehrte Richtung.
corneliaW schrieb:> Ansonsten hab ich noch gesehn, das Board hat auch ein UART to USB-B ,> neben dem USB Blaster zum Proggen. Kann ich damit nicht Notfalls Maus> und Tastatur emulieren ?
Diese Tastatur- und Mausgeschichte wird eines der kleinen Randprobleme
deiner Arbeit sein. Interessanter ist eher, wie du das Bild einliest und
auswertest. Da würde ich anpacken...
BTW: bitte nicht Plenken! Wo lernt man denn sowas? Satzzeichen gehören
direkt ans letzte Wort im Satz.
Hi Lothar
Lothar Miller schrieb:>> Das schließt damit wohl aus, dass ich über diese Pins dann Analog Output>> erzeuge, oder ?> Richtig. Ein AD-Wandler macht die umgekehrte Richtung.
Macht nix, hab grade gesehen, dass der MicroPro auch 12 x Digital I/Os
(5 are PWM capable) hat :-)
Lothar Miller schrieb:> Interessanter ist eher, wie du das Bild einliest und> auswertest. Da würde ich anpacken...
Einlesen wollte ich das Bildsignal hiermit :
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=39&No=359&PartNo=2#section
Auswerten? Also ich wollte ja quasi nur die position eines Pixels
bestimmter Farbe finden oder Farbe eines Pixels an bestimmter Position.
Also beim VGA Signal wär es ja so, das pro 1Hz Monitor Takt irigend ein
startsignal kommt, dann die RGB Farben vom erste Pixel in Zeile 1
übertragen werden, dann vom zweiten, am Ende der Zeile kommt dann ein
(Horizontal?)VertikalSync Signal, dann beginnt die nächste Zeile. und
wenn alle Zeilen abgearbeitet sind kommt der andere Sync und der Spaß
geht von vorne los. Ich denke mal bei DVI wird das Signal ähnlich
einfach sein.
Zum Vorgehen:
Ich würde quasi nur die Pixel zwischen den Syncs zählen, weiß dadurch
die Auflösung.
Dann Check ich bei jedem pixel ob die Farbe passt und setze nen Zähler
hoch. Sobald die Farbe passt rechne ich durch den Zähler aus wo der
Pixel auf dem Bildschirm ist. Fertig :-)
(Ich bereite mich schonmal auf ein "So einfach ist das nicht" vor^^)
Viele Grüße,
Conny
Zum Thema Signal einlesen kannst du dir ja bei einem hdmi moodlight den
Code klauen. Hdmi und dvi verwenden die selben Signale, nur kann (aber
nicht muss) das hdmi Signal noch verschlüsselt sein.
Hi Max!
Max D. schrieb:> Zum Thema Signal einlesen kannst du dir ja bei einem hdmi moodlight den> Code klauen. Hdmi und dvi verwenden die selben Signale, nur kann (aber> nicht muss) das hdmi Signal noch verschlüsselt sein.
Danke für den Tipp, von diesem ominösen moodlight hab ich schonmal
irgendwo was gelesen wo auch viel Code bei war. Ich schau später mal
wenn ich wieder am richtigen Rechner sitze ob ichs noch in der Chronik
finde.
Lothar Miller schrieb:> Es wird tatsächlich klappen, einfach ab den> Syncimpulsen mitzuzählen...
Hi Lothar, freu :-)
Na dann hat meine Einkaufsliste wohl schon so gepasst wa? Dann werd ich
mal einkaufen^^ Vielen Dank für deine Hilfe jedenfalls!
Viele Grüße,
Conny
>Hdmi und dvi verwenden die selben Signale, nur kann (aber>nicht muss) das hdmi Signal noch verschlüsselt sein.
Für DVI gibt es HDCP, dass sollte doch wohl auch eine Art
Verschlüsselung sein? Macht DVI also (in dieser Hinsicht) nicht zwingend
so viel leichter...
Hallo liebe Leute,
ich wollte mich nochmal bei euch allen für die super Hilfe bedanken!
Hab Montag das FPGA Cyclone 5 Starterkit bekommen, hab nen Buch über
FPGAs verschlungen und hab viel gegoogelt und seit Montag kaum
geschlafen :)
Hab das Board jetzt so weit, das es DVI Signale vom PC einließt, an den
Monitor weitergibt, und ich kann wie gewünscht Pixelfarben auslesen von
Koordinaten oder Pixel mit bestimmten Farben aufspüren.
Hab sogar schon soweit programmiert, dass das Board erste Strukturen in
den Pixeln erkennen kann.
Was noch nicht klappt ist die richtige Farbdarstellung auf dem Monitor,
irgendwie ist da noch ein Fehler beim Transmitten drinne, aber das ist
eher was optisches und hindert die Funktionsweise nicht.
Die Maus und Keyboard Emulation hab ich noch nicht angefangen, da ich
noch auf ein Päckchen warte, aber das wird Pups einfach denk ich^^
Ganz ganz lieben Dank an euch alle jedenfalls nochmal!!
@Lothar Falls ich nochmal Hilfe bräuchte bei meinem Code, dann mach ich
besser nen neuen Post, oder ?
Grüße,
Conny
corneliaW schrieb:> Hab das Board jetzt so weit
Herzlichen Glühstrumpf!
> @Lothar Falls ich nochmal Hilfe bräuchte bei meinem Code, dann mach ich> besser nen neuen Post, oder ?
Richtig, besser is das...