Forum: FPGA, VHDL & Co. Konzept für CCD Kamera<=>VGA interfacing mit FPGA


von GS (chromosoma)


Angehängte Dateien:

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?

: Bearbeitet durch User
von Duke Scarring (Gast)


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

von Kest (Gast)


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

von Sigi (Gast)


Lesenswert?

Was du noch vergessen hast: Du brauchst für die Initialisierung
des AD7180 noch einen I2C-Controller, um z.B. die Beispielscripts
für die Register aus dem Datasheet zu verwenden.

von GS (chromosoma)


Lesenswert?

Hi, danke für die Antworten.
So wie ich es verstanden habe, ist die I2C-Kommunikation nicht nötig, da 
die Default Einstellungen  auch gut sind.

Mal sehen.

von Sigi (Gast)


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.

von Sigi (Gast)


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.

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.