Ich möchte eine Phasenverriegelung in einem FPGA implementieren, ohne externe Komponenten (außer dem ADC) zu verwenden. Der Einfachheit halber ist das Sperren auf einen einfachen Binärimpuls ausreichend. Die Frequenz der Signale beträgt ~ 0,1-1% des Takts. Ich kann die integrierten Uhr-PLLs nicht verwenden, da sie normalerweise:
- Nicht konfigurierbar (während der Synthese eingestellt).
- Nervös.
- Unterstütze nicht die Frequenz, die ich brauche.
Ich habe die Literatur durchsucht und ein paar binäre Phasenregelkreise gefunden. Am bemerkenswertesten ist ein "Puls Steal" -Design, zu dem ich auf Wunsch einen Link posten kann. Ich habe mit einigem Erfolg implementiert und synthetisiert, aber der Jitter- und Lock-Bereich war nicht so gut wie angekündigt. Ich hatte auch Erfolg mit einem externen DVCO, aber ich würde es vorziehen, wenn ich alles auf dem Chip implementieren kann.
Ein digitales Schaltungsdesign oder sogar ein Hinweis in die richtige Richtung wäre hilfreich (ich habe eine Weile meinen Kopf dagegen geschlagen), eine bewährte FPGA-Implementierung wäre wunderbar, aber nicht zu erwarten.
HINZUGEFÜGT 27.10.2010
Das tatsächliche DPLL-Design, das ich verwendet habe, hat einen "Random Walk Filter" als Schleifenfilter (nicht den zuvor beschriebenen "Puls Steal", der meine Notizen durchläuft, die nicht gut funktionierten), der dann die Taktimpulse zum DCO treibt . Der Sperrbereich wird über den Teiler im DCO eingestellt. Die Empfindlichkeit der Schleife wird durch Variieren der Länge des zufälligen Gehens festgelegt.
Das Papier, in dem dies gefunden wird, wird am Ende dieses Beitrags zitiert. Nachdem ich Teile davon selbst implementiert hatte, stellte ich fest, dass es tatsächlich bereits auf OpenCores implementiert war. Es stellte sich jedoch heraus, dass das Projekt in den letzten Monaten gelöscht wurde, aber ich habe die Verilog-Dateien gespeichert, wenn jemand sie möchte.
Yamamoto, H.; Mori, S.; "Performance of Binary Quantized All Digital Phase-Locked Loop mit einer neuen Klasse von sequentiellen Filtern", Communications, IEEE Transactions on, Band 26, Nr. 1, S. 35-45, Januar 1978
doi: 10.1109 / TCOM.1978.1093972
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1093972&isnumber=23895
Antworten:
Können Sie weitere Details zu Zielfrequenz, Jitter und Schleifenbandbreite (erforderliche Einschwingzeit) veröffentlichen? Welche Art von Oszillator möchten Sie verwenden (extern mit einem DAC, mit / ohne Dithering?, Einem digitalen Zähler / Akkumulator auf dem Chip)?
Wenn Sie mit einem digitalen "Oszillator" (dh einem überfüllten Akkumulator) und dessen Jitter zufrieden sind, kann der Rest der Schaltung ziemlich einfach sein:
Wenn die Schleifenbandbreite nicht durch Einschwingzeit erzwungen wird, entscheiden Sie sie basierend auf den Rauschbeiträgen aller Komponenten.
Wenn das Referenzsignal phasen- oder frequenzmoduliert ist, verwenden Sie eine Schleifenbandbreite, die niedriger ist als die kleinste Frequenz des Signals, das die Referenz moduliert.
Schwierigere Techniken werden verwendet, wenn die Ausgangsfrequenz nahe oder gleich der Taktfrequenz ist und / oder wenn der niedrige Jitter oder der sehr schnelle Verriegelungsbereich erforderlich ist. In Ihrem Fall werden sie möglicherweise nicht benötigt, außerdem sind sie möglicherweise nicht für eine FPGA-Implementierung geeignet.
quelle
Wenn Sie ein bisschen Jitter tolerieren können, aber meistens nur eine präzise Taktung gegen eine schnelle Uhr für die Datenwiederherstellung benötigen, möchten Sie möglicherweise etwas wie die CAN-Standard- PLL implementieren (ab Seite 67 dieser PDF-Datei). Dies funktioniert basierend auf einem Überlaufzähler, der nominell korrekt eingestellt werden sollte, aber bis zu Flanken im eingehenden Impulsstrom synchronisiert.
quelle