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
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
> 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
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 ;)
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.