Forum: Mikrocontroller und Digitale Elektronik Digitales Video Signal (640x480 16 bit 60 Hz) verarbeiten?


von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo,
ich frag mich grad ob es eine einfache Möglichkeit gibt ein digitales 
Videosignal, seriell mit ca. 35 MB/s zu digitalisieren. Das Signal 
versorgt eigentlich einen TFT und ich würde es gern abzweigen, 
digitalisieren und über einen kleine Webserver zugänglich machen. Die 
35MB/s sind ganz schön viel, allerdings brauch ich nicht 60 Bilder pro 
Sekunde man könnte das Signal also stak unterabtasten, 1 Bild pro 
Sekunde wär schon super, sogar 0.1 Bild/s wär OK.

Damit käme man so langsam in Bereich in dem auch ein kleiner 8bit µC die 
Daten verarbeiten könnte nur wie könnte man die Abtastung realisieren? 
Das genau Format des Signal weiß ich noch nicht, aber das kann man 
rausbekommen. Was die physikalische Übertragung des Signals angeht its 
auch nicht ganz einfach, das Signal wird mittels ethernet transformer 
eine eine twisted pair Leitung übertragen, die müsste ich belauschen.

Was fällt euch dazu so ein?

Grüße
flo

von holger (Gast)


Lesenswert?

>Was fällt euch dazu so ein?

Kauf dir ne Webcam. Kostet doch nix mehr.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da es bereits ein digitales Signal ist, muss es natürlich nicht mehr 
digitalisiert werden. Das vereinfacht die Angelegenheit.

Üblicherweise gibt es ein Bündel Datenleitungen, und drei Taktsignale, 
einen Pixel-, einen Zeilen- und einen Bildtakt.

Mit einem Zähler, einem Binärkomparator und einem Latch kannst Du Dir 
eine Vorrichtung bauen, mit der Du den Wert jedes beliebigen Pixels 
bestimmen kannst.

Der Zähler zählt den Pixeltakt und wird mit dem Bildtakt zurückgesetzt, 
der zu erwartende Zählbereich wird irgendwo jenseits der 640x480 liegen, 
19 Bit sollten genügen.

Der Komparator vergleicht den Zählerstand mit einem von Deinem µC 
angelegten Wert, der die gewünschte Pixelposition angibt. Sind beide 
Werte gleich, wird mit dem Vergleichssignal ein Latch angesteuert, das 
den Wert der zum Display führenden Datenleitungen abgreift und Deinem µC 
zur Verfügung stellt.

Bei einem Pixeltakt von 35 MHz ist das mit etwas Geschick noch "diskret" 
mit einer Handvoll 74xx-Bausteine konstruierbar, besser ist natürlich 
ein FPGA oder CPLD.

Statt eines Zählers, der alle Pixel des Bildes durchzählt, kannst Du 
natürlich auch zwei Zähler (und Komparatorstufen) verwenden, die 
zeilenweise arbeiten. Das reduziert die Größe des Zählumfanges, der 
"suche ein Pixel in einer Zeile"-Zähler braucht nur 10 Bit (640 < 1024) 
und der "suche eine Zeile"-Zähler braucht sogar nur 9 Bit (480 < 512).

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo Rufus

> Üblicherweise gibt es ein Bündel Datenleitungen, und drei Taktsignale,
> einen Pixel-, einen Zeilen- und einen Bildtakt.

Ja, in meinem Fall leider nicht. Ich hab einen einzigen seriellen 
Bitstrom, keine Takt- oder sonstigen Steuersignale. Und ich weiß zwar 
was übertragen wird (steht im Datenblatt des Grafikprozessors) ich weiß 
aber gar nicht wie (fällt mir gerade auf). Das erledigt nämlich ein GAL 
und was da drin ist weiß ich nicht.

> Mit einem Zähler, einem Binärkomparator und einem Latch kannst Du Dir
> eine Vorrichtung bauen, mit der Du den Wert jedes beliebigen Pixels
> bestimmen kannst.
>
> Der Zähler zählt den Pixeltakt und wird mit dem Bildtakt zurückgesetzt,
> der zu erwartende Zählbereich wird irgendwo jenseits der 640x480 liegen,
> 19 Bit sollten genügen.

Das Prinzip klingt einfach. Ich müsste eben noch den Takt aus dem Signal 
gewinnen.

> Bei einem Pixeltakt von 35 MHz ist das mit etwas Geschick noch "diskret"
> mit einer Handvoll 74xx-Bausteine konstruierbar, besser ist natürlich
> ein FPGA oder CPLD.

Tja, das hätt ich mir gern gespart, allerdings wärs eh Zeit sich mal mit 
FPGA zu beschäftigen.

@holger
> Kauf dir ne Webcam.

Hmm, ja das stimmt schon, nur ist das nicht gerade praktisch, es 
behindert die direkte Sicht auf den Monitor und ist störanfällig.


Grüße
Florian

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Florian Rist schrieb:
>> Üblicherweise gibt es ein Bündel Datenleitungen, und drei Taktsignale,
>> einen Pixel-, einen Zeilen- und einen Bildtakt.
>
> Ja, in meinem Fall leider nicht. Ich hab einen einzigen seriellen
> Bitstrom, keine Takt- oder sonstigen Steuersignale.

Was soll denn das für ein Display sein?

von Florian R. (Firma: TU Wien) (frist)


Lesenswert?

Hallo Rufus

> Was soll denn das für ein Display sein?

Ist ein Display an einem Industrieroboter von Kuka - nur zwei Drähte, 
über diese Ethernet Transformatoren galvanisch getrennt.

Flo

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tja, da wirst Du wohl erst mal herausfinden müssen, was da für ein 
Zweidrahtprotokoll verwendet wird. Ist denn überhaupt sichergestellt, 
daß das die gesamte Videoinformation ist, oder könnte es sein, daß das 
Display über "Eigenintelligenz" verfügt und ihm über die 
Zweidrahtschnittstelle nur mitgeteilt wird, was es darstellen soll?

von frist (Gast)


Lesenswert?

Hallo
also, ich hab die Signalquelle nochmal unter die Lupe genommen:

Es wird ein Fast Ethernet Transceiver ML6671CQ und ein Ethernet 
Transformator verwendet.

Zum Protokoll weiß ich immer noch nix, nur, dass die seriellen Daten für 
den Ethernet Tranciever von einem AM7968 (Transparent Asynchronous 
Xmitter-Receiver Interface) erzeugt werden.

Und diese wiederum bekommt seine Daten aus einem programmierten GAL mit 
unbekanntem Programm, das sich die Pixel-Daten (3x 6bit oder so) und den 
Pixel-Takt parallel vom Grafikprozessor holt. Zwischen GAL und GCPU 
hängen noch ein paar FlipFlops (F574 von Texas Instruments). Scheint so, 
als würden die Pixel-Daten puffern und wohl dem GAL I/O Pins sparen.

Tja. Und nun?

Ich müsste wohl im Prinzip die Kette aus Ethernet Transformer, Ethernet 
Transceiver und Receiver Interface nachbauen. Dann könnte man versuchen 
die Zähler/Latch Idee umzusetzen und schön langsam immer mal einen Pixel 
zu lesen.


Eine ganz andere Möglichkeit wäre ein ganz normales analoges VGA Signal 
zu digitalisieren, das gäb's auch noch und es zeigt das gleiche Bild. 
Das scheint mir jetzt fast einfacher, oder?

Grüße
Flo

von ??? (Gast)


Lesenswert?

frist schrieb:
> Eine ganz andere Möglichkeit wäre ein ganz normales analoges VGA Signal
> zu digitalisieren, das gäb's auch noch und es zeigt das gleiche Bild.
> Das scheint mir jetzt fast einfacher, oder?
Eindeutig, ein AVR ist da aber überfordert. Wenn dein "Webserver" ein PC 
ist einfach eine billige Videokarte von 321 oder so nehmen.

von frist (Gast)


Lesenswert?

Hallo

> Eindeutig, ein AVR ist da aber überfordert.

Könnte sein....

> Wenn dein "Webserver" ein PC ist einfach eine billige
> Videokarte von 321 oder so nehmen.

Hmm, ich hätte gern eine kleine Lösung, zum dazwischen stecken, die 
wenig Strom braucht, so dass man sie aus dem vorhandenen 24V speisen 
kann.

Was schon eher was ist sind diese VGA to Ethernet Boxen:

http://www.epiphan.com/products/frame-grabbers/vga2ethernet/ (>1000 EUR)

Oder die billig Version von ebay: 320720903625 (100 EUR)

Grüße
Florian

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.