Forum: FPGA, VHDL & Co. MIPI an Cyclone 10 GX


von dommynik (Gast)


Lesenswert?

Hi Leute,
ich entwickle zurzeit ein Hardware-Design, um mehrere Kameras per 
MIPI/CSI2 an einen Cyclone 10 GX anzuschließen, um in einem zweiten 
Schritt die Daten auszuwerten bzw. an eine CPU komprimiert 
weiterzuleiten. Der FPGA hat an sich kein MIPI-Interface, 
dementsprechend wird ein Widerstands-Netzwerk an den Pins 
davorgeschaltet, um die High-Speed Signale von den Low-Power Signalen zu 
trennen (drei Widerstände je differentielles Paar). Der FPGA ist dann im 
Stande, die High-Speed Signale als LVDS zu interpretieren, was ideal 
ist, um den internen SERDES zu füttern. Die MIPI Clock (DDR, 596 MHz) 
geht an eine PLL, welche den SERDES ansteuert (1188 MHz bei 
verschiedenen Phasen, 148.5 MHz für paralleles Auslesen) und erkennt 
automatisch, welche Phase die beste ist - soweit so gut. Nun habe ich ja 
das Problem, dass die Clock nicht dauerhaft an ist, und die IO-PLL laut 
Datenblatt bis zu 1ms braucht für den Lock. Die Clock vom Transmitter 
(Kamera) geht aus dem Low-Power-Modus in den aktiven Modus erst dann, 
wenn Daten angefordert wurden, und die Datenleitung ist nach wenigen 
hundert ns aktiv (laut MIPI-Spec). Das passt nicht zu der 1ms für die 
PLL lock.

Seht ihr da einen Denkfehler? Habt ihr Ideen, was ich vergessen haben 
könnte? Die ersten Testplatinen sind erst in zwei Monaten geplant, bis 
dahin wollte ich schonmal abgeklärt haben, ob es überhaupt gehen kann.

Viele Grüße, dommynik

von Duke Scarring (Gast)


Lesenswert?

Ich habe mit MIPI noch nichts gemacht und kenne den Standard nicht.
Wenn ich Dich richtig verstanden habe, braucht die PLL zu lange um 
einzurasten.
Ich sehe da auf Anhieb drei Möglichkeiten:

1. eine externe PLL, die schneller einrastet (mit einem schmalbandigem 
VCO)
2. die ersten Daten nach dem Wakeup verwerfen (wenn das standardkonform 
ist)
3. der internen PLL einen Hilfstakt zuführen und diesen nutzen, solange 
der externe Takt fehlt.

Duke

von dommynik (Gast)


Lesenswert?

> 1. eine externe PLL, die schneller einrastet (mit einem schmalbandigem
> VCO)

Damit habe ich keine Erfahrung, aber behalte ich im Hinterkopf.

> 2. die ersten Daten nach dem Wakeup verwerfen (wenn das standardkonform
> ist)

Könnte unter Umständen direkt zu Problemen führen, da ich damit die 
Synchronisations-Präambel verpasse, und ich das Bit/Byte-Alignment nicht 
korrekt durchführe.

> 3. der internen PLL einen Hilfstakt zuführen und diesen nutzen, solange
> der externe Takt fehlt.

Interessante Idee, ich würde also in einer anderen PLL die 594 MHz 
erzeugen, und per Mux-Buffer die Clocks switchen. Ist bekannt, wie lange 
eine generische PLL ihre Lock behält, nachdem die Referenz-Clock aus 
ist? (Im Falle, dass die externe Clock noch nicht stabil ist, und ich 
dann aber schon darauf switche).

Viele Grüße, dommynik

von dommynik (Gast)


Lesenswert?

Update: Das Reference Design von Lattice (RD1146) informiert darüber, 
dass viele MIPI-Bildsensoren so konfiguriert werden können, dass die 
Clock nicht in den Low-Power-Modus geht, sondern durchgängig 
durchtaktet. Ideal, um die PLL zu versorgen! Der Bildsensor, den wir 
verwenden, kann das auch (versteckt in einem Addendum), hoffentlich ist 
das Problem damit gelöst!

> 3. der internen PLL einen Hilfstakt zuführen und diesen nutzen, solange
> der externe Takt fehlt.

Zusätzlich dazu habe ich überprüft, ob der FPGA dies unterstützt, und 
tatsächlich hilft die PLL hier sehr stark, indem sie zwei Input Clocks 
unterstützt, für jede Clock ein "clkbad"-Signal ausgibt, und einen 
automatischen oder manuellen Switchover nutzen kann! Nette Geschichte ;)

von Duke Scarring (Gast)


Lesenswert?

dommynik schrieb:
> Ist bekannt, wie lange
> eine generische PLL ihre Lock behält, nachdem die Referenz-Clock aus
> ist?
Mir ist nicht. Das hängt ja von der Dimensionierung des Loop-Filters und 
der Art des Phasendiskriminators ab. Beim UKW-Rundfunk nimmt man ja 
einen Phasendiskriminator, der keine Steuerimpulse abgibt, wenn das 
Eingangssignal weg ist. Damit läuft - theoretisch - die Frequenz nicht 
weg.
Im konkreten Fall hilft wahrscheinlich nur ausmessen und einen 
Sicherheitsaufschlag zu addieren.

dommynik schrieb:
> dass die
> Clock nicht in den Low-Power-Modus geht, sondern durchgängig
> durchtaktet.
Problem gelöst, oder?! :)

Duke

von dommynik (Gast)


Lesenswert?

> Problem gelöst, oder?! :)
>
> Duke

Sehe ich, wenn ich das Eval-Board in meinen Händen halte, und das Design 
draufspiele! ;)

> Das hängt ja von der Dimensionierung des Loop-Filters und
> der Art des Phasendiskriminators ab. Beim UKW-Rundfunk nimmt man ja
> einen Phasendiskriminator, der keine Steuerimpulse abgibt, wenn das
> Eingangssignal weg ist. Damit läuft - theoretisch - die Frequenz nicht
> weg.

PLLs sind für mich magische Konstrukte mit Kristallkugelkern und kleinen 
Gnomen, die für den nötigen Schwung sorgen :P

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.