Konzept für CCD Kamera<=>VGA interfacing mit FPGA

OP #3888213
Lesenswert?
• ▲
▼
Hallo.
 Ich besitze ein DE1-SOC FPGA  Board, und will damit  ein analoges 
CCD-Kamera auslesen  und das Bild auf dem VGA Display zeigen.
DE1-SoC hat ADV7180 video decoder, und damit will ich die CCD Kamera 
auslesen.
Ich habe so was noch nie gemacht, und bin ein wenig verwirrt was die 
Clock an verschiedenen Komponenten angeht.

 Der decoder selbst liefert  die Daten mit 27MHz. Diesen Takt will ich 
auch in den FPGA Benutzen. Zuerst gehen die Daten in 4-Byte Buffer, dort 
werden stop/start Signale erkannt  und auch  dort geschieht die 
Konvertierung  zwischen YCrCb =>RGB
Die RGB Daten werden im 2 Kbyte Buffer abgespeichert.
Diese 2Kbyte kommen dadurch zustande, dass  der SDRAM  alle 85ms  8K 
Takten für "refreshing" braucht.
 Der SDRAM selbst wird mit 166 MHz getaktet. D.h. Der 2K Buffer wird mit 
27Mhz gefüllt, und mit 166 MHz geleert.
Je nach dem ob Read/Write Prozess abläuft will ich zwischen den Takten 
für den Buffer umschalten (27 oder 166 Mhz), so sollte keine 
Clock-Konflikte entstehen.

Sobald das Bild vollständig im SDRAM gespeichert ist, gehen die Daten in 
den "Double Buffer" für VGA. Dieser besteht aus (2x) 3x752 Byte. jeweils 
für eine Zeile.

Anbei noch  das Blockdiagramm.
Ich will einfach den Rat holen, ob ich alles richtig geplant habe, nicht 
dass ich am Ende  irgendwelche  Jitter und Asynchonyzation Probleme 
kriege.
Vielen dank für  Feedback:)

PS
Darf ich  ganz einfach in VHDL zwischen den Takten umschalten, (zB . mit 
with/select ), oder  gibt es dafür ein spezielles Modul in Qsys?
Angehängte Dateien:
Gast #3888412
Lesenswert?
• ▲
▼
Böser Kommunist schrieb:
> Darf ich  ganz einfach in VHDL zwischen den Takten umschalten, (zB . mit
> with/select ), oder  gibt es dafür ein spezielles Modul in Qsys?
Du darfst, aber es kann auch echt schiefgehen.
Besser man verwendet die Clock-Muxe des Herstellers.
Der Vorteil ist, das der Ausgang direkt auf ein globales Netz/Taktnetz 
geht.

Bei Xilinx heißen die Clock-Multiplexer BUFGMUX und bei Lattice DCMA. 
Wobei erstere auch glichtfrei umschalten können, wenn ich das richtig 
verstanden habe.
Schau mal in den Library-Guide von Altera, da solltest Du fündig werden.

Duke
Gast #3889178
Lesenswert?
• ▲
▼
Dein Blockschaltbild sieht schon mal richtig aus.

Damit Du nicht zwischen den Takten "hin und her" schalten musst, mach 
einfach je ein FIFO rein. Du brauchst 3 Komponenten: Input, Framebuffer, 
Output.

Input -> FIFO -> Framebuffer -> FIFO -> Output

Input läuft mit 27 MHz und schreibt die Daten immer in den Framebuffer, 
der intern z.B. mit 100 Mhz läuft. Output liest immer Daten aus dem 
Framebuffer und läuft mit 50 MHz (?) Welche Auflösung soll das sein?
Wahrscheinlich wirst Du tripple-buffer brauchen, falls Eingang und 
Ausgang asynchron laufen.


Kest
Gast #3891275
Lesenswert?
• ▲
▼
Ich habe nicht dein DE1, sondern das NEEK. Wenn ich ohne
I2C-Init. auf den AD7180 zugreifen will, dann bekomme ich
kein Bild.

Alternativ zu I2C-Init kann man auch ein Video-Demo laden
und dann das eigene Design laufen lassen. Die Initialisierung
des Demos wird dann einfach übernommen.
Gast #3891302
Lesenswert?
• ▲
▼
Hab nochmal kurz ins Datasheet geschaut: Mit den
Default-Registerwerten kannst du recht haben.

Aber: Du musst nach PowerUp ein Reset durchführen
(mind. 5ms), entweder per Reset-Leitung oder per
Register-Zugriff, d.h. per I2C.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.