Projekt: Kamera

Ansteuerung eines CCD Kamera Chips

 

  1. Projektbeschreibung:
  2. 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.

  3. Aufbau:
  4. 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.

     

     

     

     

     

  5. Mögliche Erweiterung:
  6. 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.

  7. Aufgetretene Probleme (etc.):
  8. 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.

  9. Projekt-Dateien:

vga_cam.bit

vga_cam.ucf

vga_cam.vhd

Datenblatt des Kameramoduls

Manual des Kameramoduls

all_files