Projekt: Kamera
Ansteuerung eines CCD Kamera Chips
Wir haben ein OV320-Board mit einem OV7620AA-Modul von Omnivision zur Verfügung. Diese soll nun an unsere Experimentierplatine XS-40 (XESS Corp.) angeschlossen werden. Hierzu haben wir eine Adapterplatine gebaut, mit der man das Kameramodul an unsere Platine anschließen kann. Die Kamera hat eine Auflösung von 640 x 480 Pixel in Farbe. Als Basisprojekt wurde nur eine Bildübertragung in Schwarzweiß gewählt. Das Modul liefert einen Takt und bei jeder Taktflanke 8-Bit Daten. Außerdem werden HSYNC und VSYNC Signale geliefert. Die Daten bestehen in der Standardeinstellung aus 8-Bit Y Helligkeit.
Als Aufbauprojekt wird eine Bildübertragung in Farbe gewählt. Hierbei liefert das Kameramodul auch einen Takt und bei jeder Taktflanke 16-Bit Daten. Dabei werden auch HSYNC und VSYNC Signale geliefert. Die 16-Bit-Daten bestehen hierbei aus 8-Bit Y Helligkeit und 4+4-Bit UV Farbinformationen.

Aufbau:Das Kameramodul von Omnivision.
Typ: OV7620A
Input-Signale:
Pclk: Vorgesehen war, dass der Takt des Kameramoduls benutzt wird. Da dies vorerst mit
Schwierigkeiten verbunden war, haben wir das interne Taktsignal der XESS-Platine benutzt; 12,5 MHz Taktfrequenz. Dies liegt näherungsweise an dem Taktsignal des Kameramoduls.
8-Bit-Y-Vektor: Das Ziel ist es, 8-Bit-Y-Signale einzulesen, jedoch genügt es, vorerst 2-Bit-Y-Signale einzulesen, somit bekommt man eine Schwarz-Weiß-Darstellung, die es ermöglicht die Kamera zu konfigurieren.
4+4-Bit-UV: Die UV-Signale sind zur Darstellung der Farben notwendig, das heißt, man benötigt hierbei eine
Gleichung, zur Berechnung der Farben für das Bild. Diese Gleichung berechnet dann die genaue Codierung in den einzelnen Kombinationen aus Y- und UV-Signalen.
Y= 0,59*G+0,31*R+0,11*B
U=R-Y
V=B-Y
v_sync: Das Kameramodul sendet ein eigenes v_sync-Signal. Wenn dieses Signal ´1´ ist, dann wird der
Elektronenstrahl wieder an die linkeste erste Position gesetzt, und somit wird ein neues Bild aufgebaut.
h_ref: Das href-Signal ist grob gesehen das h_sync-Signal was an den Monitor gesendet wird. In
meinem Projekt war es vorausgesetzt, musste aber nicht mit implementiert werden. Das Prinzip sieht so aus, dass das h_sync-Signal mit der doppelten Frequenz von h_ref erzeugt wird.
reset: Das Signal reset versetzt über den Pin D0 mit dem Programm xsport die Schaltung in den
Ursprungszustand. Allerdings ist dieses Signal nur zusätzlich mit implementiert und daher nicht für die Schaltung notwendig.
Output-Signale:
rgb: Die RGB-Signale werden direkt an den Monitor ausgegeben. In diesem 6-Bit-Vektor ist die Farb-
bzw. Schwarz-Weiß-Codierung implementiert. In meinem Projekt ist eine Codierung aus drei gleichen 2-Bit-Vektoren implementiert.
v_sync: Das v_sync-Signal wird an den Monitor ausgegeben, dieses kennzeichnet den Beginn eines
neuen Bildes. Das Signal wird nur zwei Zeilen lang geschickt. Somit kann ganz genau die Größe des Bildes zusammen mit dem h_sync-Signal dargestellt werden.
h_sync: Das h_sync-Signal wird auch direkt an den Monitor ausgegeben. Es kennzeichnet den Beginn
einer neuen Zeile.
In meinem Projekt habe ich vorerst eine Konfiguration gewählt, mit der man die Basics der Kamera testen kann, um dann weiter die Farb-Konfiguration implementieren zu können. Für die Schwarz-Weiß-Konfiguration waren nur die Daten der Y-Signale wichtig. Hiermit konnte ich nun ein Schwarz-Weiß-Bild erkennen und das Bild relativ gut stabilisieren. Das größte Problem war genau herauszufinden, in welchem Bildbereich der vertikale und horizontale Zähler laufen soll. Das v_sync- und das h_ref-Signal des Kameramoduls habe ich bei dieser Konfiguration nicht benötigt.
Projektdetails:


Das Original-Nummernschild Das angezeigte Nummernschild auf dem Bildschirm

Das ist der komplette Aufbau des Projekts.
A: XILINX FPGA XC4000XL: Typ 4010XL
B: Selbstgebaute Platine zum Anschluss des Kameramoduls an die XESS-Platine
C: Kameramodul Omnivision OV7620A
D: RGB-Anschluss an den Monitor
E: Parallel-Anschluss an den Computer zur Programmierung des FPGA

Der Aufbau von unten; die Platine ist für die Grundkonfiguration ausreichend, wobei für eine weitere Implementierung der Farb-Konfiguration wäre es notwendig, die Verbindungsplatine zwischen dem FPGA und des Kameramoduls etwas anders zu erstellen.
Das Projekt ist sehr vielfältig, daher wäre die nächste Stufe der Implementierung die Farb-Darstellung. Hierzu ist es wichtig erst einmal eine genaue Farbtabelle mit den errechneten Werten zu erstellen. Weiterhin müßte man dann auch das v_sync- und das h_ref-Signal des Kameramoduls mit implementieren.
Die meisten Probleme sind nur bei der Verkabelung aufgetreten. Es war sehr wichtig, an welchem Port an unserer Experimentierplatine der Port der Kamera angeschlossen war. Diese waren teilweise sehr zeitraubend.
Zusätzlich war es sehr wichtig, die Verdrahtung der Bildsignalkabel genau zu kontrollieren, so dass keine Bildverzerrungen auftreten konnten.
vga_cam.bit
vga_cam.ucf
vga_cam.vhd
Datenblatt des Kameramoduls
Manual des Kameramoduls
all_files