Forum: FPGA, VHDL & Co. Ein Bug im FPGA-Projekt macht mich verrückt.


von GS (chromosoma)


Lesenswert?

Ich versuche es mal kurz zu erklären.

Gegeben ist ein rel. einfaches FPGA Projekt  auf dem DE1-SoC board von 
Terasic.
Die CCD kamera mird mithilfe von ADV1780 ausgelesen, und auf dem VGA 
Bildschirm angezeigt (dazwischen  auch  auf dem ADRAM gespeichert).
Hier war ich sogar halbwegs  damit fertig.
Beitrag "Komische Balken am Rande des Bildes"

Nun, habe ich viele Bugs gefunden und   eliminiert, und alles sollte 
wunderschön aussehen. Doch jetzt kommt es...

Anstatt vom Bild bekomme ich zwei breite Streifen, schwarz und grau, die 
leicht auf die Beleuchtung der CCD Kamera reagieren.
Nach langer Simulation habe ich schließlich herausgefunden, dass mein 
VHDL design so wie es sein soll funktioniert.
Das angezeigte Bild  entspricht tatsächlich dem, was ADV liefert.

Irgendwelche Interferenzen oder Rauschen sind ausgeschlossen,laut 
SignalTap werden die wichtigen Datensequenzen für  StartActiveVideo, 
EndActiveVideo, VertBlanking etc.  richtig gesendet und erkannt. Selbst 
die ActiveVideo Daten  werden richtig  in YCrCb Format übermittelt.
Also  das Problem liegt anscheinend   an ADV7180 selbst?

Wenn ich aber mein altes Design mit vielen Bugs  hochlade, dann liefert 
ADV richtiges Bild! Obwohl ich in den beiden Fällen den ADV7180 bei 
default Einstellungen benutze!
Ich verstehe nicht wie sowas möglich ist. Wieso bei einem Design  der 
ADV irgendwelchen Schrott liefert, und bei anderen nicht?
Die I2C kommunication mit dem  ADV wird nicht mal benutzt.


Kann mir bitte jemand helfen?! Ich rufe  besonders mächtigen 
FPGA-Druiden zur Hilfe!

: Bearbeitet durch User
von lutz (Gast)


Lesenswert?

> Nach langer Simulation habe ich schließlich herausgefunden, dass mein
> VHDL design so wie es sein soll funktioniert.

Ich bin leider kein großer FPGA-Druide, aber ist es nicht so, dass die 
Simulation das tatsächliche Timing nicht abdeckt? Vielleicht liegt der 
Hund in den Timing-Constraints begraben? Ev. ist irgendein Delay zu groß 
oder so.

von GS (chromosoma)


Lesenswert?

lutz schrieb:
>> Nach langer Simulation habe ich schließlich herausgefunden, dass mein
>> VHDL design so wie es sein soll funktioniert.
>
> Ich bin leider kein großer FPGA-Druide, aber ist es nicht so, dass die
> Simulation das tatsächliche Timing nicht abdeckt? Vielleicht liegt der
> Hund in den Timing-Constraints begraben? Ev. ist irgendein Delay zu groß
> oder so.


Ja, aber  der(das?) SignalTap  von Quartus zeigt, dass der ADV 
tatsächtlich was falsches liefert.

von Fpgakuechle K. (Gast)


Lesenswert?

Böser Kommunist schrieb:
> Ich versuche es mal kurz zu erklären.
>
> Gegeben ist ein rel. einfaches FPGA Projekt  auf dem DE1-SoC board von
> Terasic.
> Die CCD kamera mird mithilfe von ADV1780 ausgelesen, und auf dem VGA
> Bildschirm angezeigt (dazwischen  auch  auf dem ADRAM gespeichert).
> Hier war ich sogar halbwegs  damit fertig.
> Beitrag "Komische Balken am Rande des Bildes"

> Wenn ich aber mein altes Design mit vielen Bugs  hochlade, dann liefert
> ADV richtiges Bild! Obwohl ich in den beiden Fällen den ADV7180 bei
> default Einstellungen benutze!
> Ich verstehe nicht wie sowas möglich ist. Wieso bei einem Design  der
> ADV irgendwelchen Schrott liefert, und bei anderen nicht?
> Die I2C kommunication mit dem  ADV wird nicht mal benutzt.
>
>
> Kann mir bitte jemand helfen?! Ich rufe  besonders mächtigen
> FPGA-Druiden zur Hilfe!

Vielleicht brauchst du einen videospezialisten, vielleicht ist die 
parametrisierung des Video -ADU nicht korrekt. Bei CCD sensoren schickt 
der sensor auch black pixel auf die sich der ad-wandler "kalibriet. man 
muss aber dem wandler sagen das jetzt diese Pixel kommen. Und wie schaut 
der sampleclock aus den du an den ad-wandler schickst? Allerdings kenne 
ich den ADV7180 nicht wirklich. Wenn möglich per scope alle signale am 
wandler messen wenn er bild liefert und wenn nicht.


Die spannungen am sensor bspw beim Zeilen schieben sollten auch gecheckt 
werden.

MfG

PS Schick mal link zum datenblatt unter adv7180 find ich nix.

von GS (chromosoma)


Lesenswert?

Hier ist der ADV7180
http://www.analog.com/media/en/technical-documentation/data-sheets/ADV7180.pdf


Fallst die Kalibrierung falsch ist, wieso funktioniert er bei dem 
anderen Projekt.

: Bearbeitet durch User
von Sigi (Gast)


Lesenswert?

Böser Kommunist schrieb:
> Wenn ich aber mein altes Design mit vielen Bugs  hochlade, dann liefert
> ADV richtiges Bild! Obwohl ich in den beiden Fällen den ADV7180 bei
> default Einstellungen benutze!
> Ich verstehe nicht wie sowas möglich ist. Wieso bei einem Design  der
> ADV irgendwelchen Schrott liefert, und bei anderen nicht?
> Die I2C kommunication mit dem  ADV wird nicht mal benutzt.

Also ich bin kein Videospezialist, aber Dein Problem kann z.B. folgende
Ursache haben: Falls auf Deinem Board ein Design mit dem ADC korrekt
zusammenarbeitet und Du darauf ein anders Design drauflädst, dann
verwendet das neue Design ja die Registerkonfig des alten Designs,
ein solcher Fehler passiert jedem mal bei SPI/I2C/etc.

Beim ADC7180 kommst Du also um eine I2C-Initialisierung nicht herum,
im Datasheet stehen je nach Pinzahl und Videoanschluss diverse
Register-Werte-Sequenzen, mit denen man erfolgreich arbeiten kann.
Hab ich bei meinem NEEK-Board von Altera (ebenfalls mit ADV7180)
erfolgreich gemacht, ist recht einfach. Einen einfachen I2C-Master,
der Dir die Sequenz runterlädt, findest Du z.B. bei Digilent bei
einem der AddOn-Boards, ich glaube das mit der Stereokamera.
Ist die Sequenz abgelaufen, dann kannst du einfach mit SignalTAP-II
die einlaufenden Farbwerte checken.

von Fpgakuechle K. (Gast)


Lesenswert?

Böser Kommunist schrieb:
> Hier ist der ADV7180
> http://www.analog.com/media/en/technical-documentation/data-sheets/ADV7180.pdf
>
>
> Fallst die Kalibrierung falsch ist, wieso funktioniert er bei dem
> anderen Projekt.

Hm, vielleicht weil das signal was du nicht überprüfst hast sich anders 
verhält?

Also auf die schnelle kann ich im datenblatt nix kritisches finden. Ein 
bißchen klingt das geschilderete nach automatic gain problemen (s. 36), 
würde aber nicht die Streifen erklären. Dann könnte es an den Takten für 
den CCD-Sensor liegen. Wie werden die erzeugt, ist da der FPGA 
involviert?

Hilfreiche Info könnte in den Registern stecken, das sind aber eine 
ganze Menge. Wielleicht schlägt autodetect der Videonorm fehl?

Polaritätsfehler übersieht man gern, also wenn der sync-pulse zwar kommt 
aber eben ein H statt ein L-Pulse.
Kannst du das Signal vom ADV nit einem passenden Moni/fernseher direkt 
verbinden? Foto machen und mal einen Fernsehtechniker fragen, vielleicht 
im Forum Analogtechnik posten. Manche Scopes haben einen Videotrigger 
vielleicht verrät der was?

MfG,

von GS (chromosoma)


Angehängte Dateien:

Lesenswert?

Hi, ich benutze in den beiden Fällen (funktionierendes und nicht 
funktionierendes Projekt) DE1-SoC Board
Es ist somit unmöglich, den ADV direkt an einen Monitor anzuschließen.
 ADV1780 bekommt eigenen Takt aus eigenem on Board 28Mhz Oszillator.
Aus dem ADV geht dann TD_CLK27 direkt in FPGA und steuert einen Prozess 
mit  Dekodierung etc.
Der TD_reset_n ist immer 1, wobei ich diesen manuell auf 0 ziehen kann ( 
mit einem Taster)

Die CCD kamera ist: Sony  CCRIR XC-150E
https://pro.sony.com/bbsc/ssr/cat-recmedia/cat-recmediadtwo/product-XCEI50/

: Bearbeitet durch User
von berndl (Gast)


Lesenswert?

naja, du schreibst, du hast einen Design, der funktioniert. Und dein 
anderer Design funktioniert nicht.

Also scheint sich an deinem peripheren Chip nix geaendert zu haben.
Also hast du:
* Entweder in deinem Interface was geaendert
* Oder dein Design ist so katastrophal (wieviele Takte, Constraints?, 
...)
dass das ganze halt mehr oder weniger Zufall ist wenn's denn mal 
funktioniert.

Mit deinen Angaben hier wird jeder Versuch, in der Glaskugel zu lesen, 
zum scheitern verurteilt sein...

sorry...

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.