Guten Tag. Vor etwa 3 Monaten habe ich meine FPGA DE1 Board gekauft und nach der VHDL-Einführung direkt mit dem ersten Projekt angefangen. An sich nichts besonderes: Eine CCD-Kamera wird angeschlossen und ausgelesen.Anschließend wird das Bild auf dem Monitor ausgegeben (Via VGA schnittschtelle). Danach werde ich an der Mustererkennung arbeiten, aber das kommt erst später. Im moment stecke ich fest, deswegen schreibe ich diesen Beitrag. Stand der Sache: Die S/W CCD-Kamera (500x582,420 TV Linien, CCIR) wird an den AD-Wandler (THS1031 30MSPS) Angeschlossen. AD-Wandler liefert 4 Bit (DE1 hat nur 4 BIT pro Farbe) an die DE1. An sich nichts besonderes. Es hat mir aber viele schlaflose Nächte gekostet, bis ich rausgefunden habe, wie ich das Vidosignal richtig aufnehme( erst nach dem ich den Voltcraft 1062D gekauft habe). Außerdem liefert die Kamera PAL-Video, d.h zuerst werden die geraden Zeilen gesendet, und danach die ungeraden. Das Bild besteht also aus zwei Aufnahmen. Und hier steckt mein Problem, ich kriege die beiden Aufhnahmen nicht perfekt übereinander.Diese sind immer um 2-3 Pixel verschoben, deswegen sieht das Bild sch.... aus (s. Bild). Um das Videosignal an der richtiger Stelle zu triggern habe ich eine Mustererkennung realisiert. Dabei wird die Dauer des High-Zustandes(Pulsdauer) gemessen. So erkenne ich die vertikale Synchronistation (für geraden und ungeraden Linien) Wie man auf dem Bild sieht gibt es ein art Jitter, d.h. die Triggerung erfolgt nicht immer gleich schnell. Dies könnte die Ursache für die falsche Überlagerung sein, obwohl das sind nur 90 ns, bei Samplerate von 9 MHz soll diese Zeit keine Rolle spielen. ich habe wirklich versucht diesen Jitter zu beheben, leider ohne Erfolg. Ich denke, das Problem liegt ehe an synchronisation zwischen verschiedenen Komponenten in VHDL-Code. Kann mir da jemand bitte Helfen. Ich weiss, das ist eine umfangreiche Frage, aber ich habe extra mein Code für sie kommentiert :D Jetzt kurze Kommentage zu den Bildern: Bild1:Blau-Videosignal, Gelb- Triggerung für die Aufnahme Bild2:Wie man sieht, wird nicht immer gleich getriggert, dt=90 ns Bild3:hier sieht man sehr gut, dass die zeilen immer im 1-2 Pixel verschoben werden.Liegt das an diesen 90 ns? Bild4: Bild gesamt...Paulander=) Bild5 und 6: Versuchsaufbau Anbei das Projekt. PS Da ich ein Anfänger bin, bin ich auch für alle sinnvolle Kommentare bezüglich meinem Programmierstil sehr dankbar. Vielen dank fürs lesen:)
Hi Anton, deinen Code habe ich mir nicht genauer angesehen (Tip: Mit Tab-Einrückungen arbeiten). Weitere Tips geben dir bestimmt noch einige Syntax-Gurus hier. Aber: Klingt so, als ob Du Dir die Antwort schon selbst gegeben hast -- für mich sehen die zerfransten Ränder sehr nach Aliasing von zwei Frequenzen aus. Die Einsynchronisation sollte auf jeden Fall mit dem Pixelclock erfolgen, nicht mit dem Systemclock. Dann die Geschichte mit dem PAL-Format: Die ungeraden/geraden Linien sind vertikal immer etwas versetzt, dein Bild wird in der VGA-Übersetzung also immer etwas wackeln, ausser du baust einen "deinterlacer" ein. Da kommst Du ohne ganzen Frame-Buffer nicht aus (ins Block-RAM wird der wohl grade nicht reinpassen). Aber Du meintest wohl vor allem das horizontale Problem. Also mein Tip wäre -- wenn das eine Option ist: Einen Progressiv-Scan-sensor besorgen (es gibt da günstige Modülchen mit Omnivision-Sensoren), da ist das Interlacing-Problem weg, und der Umweg über analog auch. Auf ibäh kriegt man auch Aptina-Kameramodule ab 13€. Gruss, - Strubi
Kann mich Strubi nur anschliessen, kauf dir aber besser ein OV-basiertes Kameramodul (MicronOmnivision's Module wollen VCC<=3.1V, OV dagegen 3.3V), 1.3MPixel kosten gerade mal 8Euro. Falls doch analog: Schau mal nach LM1881, dass ist ein VideoSyncSeparator, der erledigt für dich das Auffinden von Bild/Zeilenanfang und Halbbilderkennung.
Danke für die Antworten. Ich denke, wenn mir hier keiner mit diesem Alising hilft, werde ich doch ein progressive-scan Modul besorgen. Leider habe ich nichts billigeres im Netz gefunden (<50 Euro). Für inen Link wäre ich dankbar;) Ah ja, es gibt ein Grund wieso ich eine analoge Kamera bevorzugte, für ADC brauhe ich nur noch 10 Pins auf dem FPGA Board. Alle fortgeschrittene Kameramodule verlangen Ü30 Ein/ausgängen. Ich wollte aber die GPIO auf dem Board einwenig sparen, da ich die später gebrauchen kann. Anton
Die Aptina Module kann man über serielles LVDS auslesen, die sind sehr FPGA freundlich. Analog findet man auch komplette Kameras von JAI oder Sony als gebrauchte Teile aus Industrie oder Überwachungskamera Einsätzen: http://www.ebay.de/itm/JAI-CV-M77-Camera-/130868235338?pt=DE_Haus_Garten_Heimwerker_Sicherheitstechnik&hash=item1e785acc4a Da muss man ein bischen suchen, für viele Teile wollen die Händler noch Traumpreise (such nach Jai oder Sony in 'Business & Industrie'). Vorteil an diesen Kameras ist das du da einfach ordentliche C-Mount Optiken drauf bekommst. Progressive scan wird übrigends erst recht nötig wenn du bewegte Objekte hast, dann hauen die Kammeffekte richtig rein.
Cool! Danke für den Tipp, die Kamera werde ich verfolgen:) Interesant sind die vielseitige Einstelungen und richtige optik:D Progressive scan will ich wegen einfachere Auslesung. Somit wird der oben genannter Alising effekt verschwinden. Außerdem ist die Auflösung um einiges höher...hm dafür werde ich vll. einen schnelleren ADC brauchen, oder geben solche Kameras das Signal digital aus?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.