-
Hintergrund
-
Die vorliegende Erfindung betrifft die Steuerung eines Ausgangssignals mit Frequenz und Phase, die in genauer Weise mit der Frequenz und Phase eines Eingangs-„Referenz”-Signals in Beziehung stehen, und betrifft insbesondere eine Phasenregelungsschleife-(PLL)Steuerung.
-
PLL-Steuerschaltungen werden häufig verwendet in Funkanwendungen, Telekommunikationsanwendungen, Computeranwendungen und anderen elektronischen Anwendungen. Diese Schaltungen erzeugen stabile Frequenzen, Stellen ein Signal aus einem verrauschten Kommunikationskanal wieder her oder verteilen die Taktimpulse in digitalen Logikschaltungen, etwa in Mikroprozessoren. Herkömmlicher Weise ist die PLL-Schaltung als ein analoger Block bereitgestellt worden, der die grundlegenden Komponenten enthält: einen spannungsgesteuerten Oszillator (VCO), einen Phasen- und Frequenzdetektor (PFD), eine Ladungspumpe, einen Tiefpassfilter (LPF) und einen Rückkopplungsweg. Jedoch weisen derartige analoge PLL-Schaltungen viele Kondensatoren auf, die einen beträchtlichen Anteil an Chipfläche erfordern. Ferner sind diese Schaltungen sehr empfindlich im Hinblick auf Rauschen in der Leistungsversorgung.
-
In jüngerer Zeit wurden PLL-Schaltungsgestaltungen für eine effizientere Anwendung in der digitalen Steuerung entwickelt. Die erste Generation digitaler PLL-Schaltungen verwendet ein einzelnes externes Hochfrequenztaktsignal, um den Referenztakt abzutasten, woraufhin dann der Ausgangstakt erzeugt wird, indem entsprechend den Erfordernissen durch eine gewisse Zahl geteilt oder mit einer gewissen Zahl multipliziert wird. Die Frequenz eines externen Taktsignals, das eine Genauigkeit aufweist, die von einer derartigen PLL-Schaltung benötigt wird, ist im Hinblick auf die Möglichkeit zur Verwendung einer Abtastrate beschränkt, die für Hochfrequenzreferenztaktsignale geeignet ist. Da diese Schaltungsart lediglich in Niederfrequenzanwendungen verwendet werden kann, wurde eine Hybridschaltungstopologie aus analogen und digitalen Elemente weiter verfolgt. Mit einer derartigen Vorgehensweise wird die Problematik hinsichtlich der Chipfläche nicht wesentlich vereinfacht, während das Leistungsverhalten wesentlich beeinträchtigt wird.
-
Es ist daher eine Aufgabe, eine digitale PLL-Schaltung anzugeben, die nicht die Einschränkungen bestehender PLL-Strukturen aufweist. Leistungseigenschaften, etwa ein hoher DCO-Frequenzbereich, eine Langzeitjitter-Steuerung, eine geringe Leistungsaufnahme und eine geringe Einschwingzeit sind wünschenswerte Eigenschaften. Eine derartige digitale PLL-Schaltung sollte auch nur eine geringe Chipfläche einnehmen und ein gutes Leistungsverhalten aufweisen.
-
Die zuvor beschriebenen Anforderungen werden zumindest teilweise erfüllt durch die Verwendung eines Phasenregelschleifensystems mit einem digitalen gesteuerten Ringoszillator, der in Reaktion auf den Vergleich des Oszillatorausgangssignals mit einem zu einem Referenztaktsignal in Beziehung stehenden Signal gesteuert ist, wobei ein digitaler Phasen- und Frequenzdetektor verwendet wird. Die Ringoszillatorfrequenz kann über eine Kombination aus dem Variieren der Anzahl der Verzögerungszellen, die mit der Schleife gekoppelt sind, und dem Betrag der Last der Zellen eingestellt werden. Die Phaseneinstellung kann erreicht werden, indem selektiv die Oszillatorlast während jedes Taktzyklus gesteuert wird, wodurch eine hohe Genauigkeit bei der Einstellung der Oszillatorausgangsfrequenz erreicht wird. In einer Ausführungsform ist die grundlegende Ringoszillatorschaltung aus NAND-Gattern aufgebaut, wodurch es möglich ist, dass der Oszillatorausgang innerhalb kurzer Zeit zurückgesetzt werden kann und somit die Auswirkungen umgangen werden, die mit einer Abweichung des Ausgangtaktsignals verknüpft sind.
-
Kurze Beschreibung der Zeichnungen
-
Es werden nun diverse anschauliche Ausführungsformen beispielhaft und nicht beschränkend in den Figuren und den begleitenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen und in denen:
-
1 eine Blockansicht eines PLL-Systems gemäß einer anschaulichen Ausführungsform der vorliegenden Erfindung ist;
-
2 eine schematische Darstellung eines anschaulichen digitalen gesteuerten Oszillators für das PLL-System aus 1 ist;
-
3a und 3b Darstellungen von Logikzellen einer anschaulichen Inverter-Ring-Oszillator-Architektur bzw. einer anschaulichen NAND-Ringoszillatorarchitektur sind;
-
4 eine Blockansicht eines digitalen Phasen- und Frequenzdetektors, der in 1 dargestellt ist, zeigt;
-
5 ein Flussdiagramm für Logikdaten zur Festlegung von Steuersignalen, die in den 1 und 2 gezeigt sind, ist;
-
6 ein Diagramm zur Signalformdarstellung ist, wobei die PLL-Funktionsweise erläutert ist;
-
7a und 7b Signalformdarstellungen sind, die die Jitter-Steuerung darstellen, wenn die PLL-Schaltung im verriegelten bzw. eingeschwungenen Betrieb ist;
-
8 eine schematische Darstellung eines Schiebegenerators ist, der als „Postc-Generator” in 4 dargestellt ist; und
-
9 eine graphische Darstellung ist, die den DCO-Ausgangsfrequenzbereich in diversen Betriebsbedingungen zeigt.
-
Detaillierte Beschreibung
-
Ein digitaler gesteuerter Oszillator wird in Reaktion auf den Vergleich des Oszillatorausgangssignals mit einem Signal, das mit einem Referenztaktsignal in Beziehung steht, gesteuert mittels der Verwendung eines digitalen Phasen- und Frequenzdetektors. Die Schwingungsrate des Oszillatorausgangssignals wird gezählt, der Zählwert wird nach einer vorgegebenen Anzahl an Zyklen zurückgesetzt und die zurückgesetzte Frequenz wird mit dem Signal, das mit dem Referenztaktsignal in Beziehung steht, verglichen.
-
Es wird ein Ausgangsteiler mit dem Referenztaktsignaleingang gekoppelt, um das Referenztaktsignal durch eine von mehreren vorgegebenen Teilerraten zu teilen. Ein Ausgangsteiler ist mit dem Osziallatorausgang verbunden, um das Oszillatorausgangssignal durch eine von mehreren vorgegebenen Teilerraten zu teilen. Jeder der Teiler besitzt einen Steuereingang, um eine entsprechende Teilerrate auszuwählen.
-
Der digitale gesteuerte Oszillator umfasst mehrere Logikzellen bzw. Dekodierlogikzellen. Eine erste Gruppe der Logikverzögerungszellen liefert eine relativ große Signalverzögerung; eine zweite Gruppe der Logikverzögerungszellen liefert eine relativ kleine Verzögerung. Die grundlegende Verzögerungszelle dieses Ringoszillators umfasst NAND-Gatter, die den DCO in einem sehr kurzen Impuls vollständig zurücksetzen können. Logische Lastelemente, die Steuereingänge aufweisen, sind in dem Oszillator zur genauen Abstimmung des Oszillatorausgangs enthalten.
-
Der digitale Phasen- und Frequenzdetektor umfasst einen Steuersignalgenerator, der mehrere binäre Steuersignale erzeugen kann, die jeweils zu den mehreren Logikzellen des Oszillators ausgegeben werden. Der Steuersignalgenerator reagiert auf das herabgeteilte Referenztaktsignal. Ein erster Komparatoreingang ist mit dem Eingangsteiler verbunden, ein zweiter Komparatoreingang ist mit dem Zähler verbunden, und der Ausgang des Komparators ist mit dem Steuersignalgenerator verbunden. Ein erster Eingang des Schiebegenerators ist mit dem Eingangsteiler verbunden und ein zweiter Eingang des Schiebegenerators ist mit dem Komparatorausgang verbunden. Der Schiebegenerator stellt weitere Steuersignale für den Oszillator bereit. Der Schiebegenerator umfasst mehrere Flip-Flops, die in Reihe geschaltet sind, wobei jedes Flip-Flop einen Ausgang aufweist, der mit einem entsprechenden Steuereingang des Oszillators verbunden ist.
-
Der digitale Phasen- und Frequenzdetektor umfasst ferner einen asynchronen Zyklensteuergenerator bzw. Schwingsteuergenerator mit einem Eingang, der mit dem Oszillatorausgang verbunden ist, und einem weiteren Eingang, der mit dem geteilten Referenztaktsignal verbunden ist. Die binären Ausgangssteuersignale des Steuersignalgenerators sind festgelegt, so dass die Frequenz des Referenztaktsignals eingefangen wird und der asynchrone Zyklensteuergenerator auf die Phase des Oszillatorausgangssignals relativ zu dem geteilten Referenzsignal reagiert.
-
Anfänglich kann eine binäre Suche während des Vergleichs des heruntergeteilten Referenztaktsignals und der Oszillatorrückkopplung ausgeführt werden, um die Zustände der diversen binären Steuersignale für die Logikverzögerungszellen und die Logiklastelemente zu bestimmen. Diese binären Steuersignale stellen die Frequenz und die Phase des Oszillatorausgangs ein. Es werden die Zyklen bzw. Schwingungen des Oszillatorausgangssignals gezählt, und die Schwingungszahl wird nach einer vorbestimmten Anzahl an Zyklen bzw. Schwingungen zurückgesetzt. Der Vergleich des Oszillatorausgangssignals mit dem heruntergeteilten Referenztaktsignal wird bei jeder Rücksetzung der Anzahl durchgeführt. Ein Verriegelungsdetektor reagiert auf die Teilerraten des Eingangsteilers und des Ausgangsteilers, um ein Verriegelungsausgangssignal zu erzeugen. Wenn eine Änderung in den Teilerraten des Eingangsteilers oder des Ausgangsteilers erkannt wird, gibt ein Entriegelungsgenerator ein Rücksetzsignal aus, um die binäre Suche wieder zu starten.
-
Das PLL-System, das in Blockansicht in 1 gezeigt ist, empfängt ein Referenztakteingangssignal „clkin” und erzeugt ein Ausgangssignal „clkout”. Die PLL-Schaltung umfasst Module, die ausschließlich aus Logikkomponenten aufgebaut sind, so dass keine Kondensatoren, Widerstände oder andere analoge Komponenten vorhanden sind. Ein Teiler 12 empfängt das Eingangstaktsignal „clkin” und teil dessen Frequenz durch 2DR, um ein Ausgangstaktsignal „clk2r” mit einem Tastgrad von 50% zu erzeugen. In 1 liegt der Wert von DR zwischen 1 bis 15, wie dies durch den Eingang DR festgelegt ist. Das Ausgangstaktsignal „clk2r” wird einem Eingang eines digitalen Phasen- und Frequenzdetektors (DPFD) 14 zugeleitet. Der DPFD 14 erzeugt binäre Steuersignale, die von einem digitalen gesteuerten Oszillators (DCO) 16 empfangen werden. Ein optionaler Ausgangstaktteiler 18 kann verwendet werden, um das DCO-Ausgangssignal „dco_out” zu empfangen und ein Ausgangstaktsignal mit einer kleineren Frequenz zu erzeugen. Der Ausgangsteilerwert kann beispielsweise auf 1, 2, 4, 8 mittels DP festgelegt werden. Ein Eingang eines Zählers 20 ist mit dem Ausgang des DCO 16 verbunden. Das Ausgangssignal „clkf” des Zählers 20 wird dem DPFD 14 zugeleitet. Das DCO-Ausgangssignal „dco_out” wird ebenfalls auf einen weiteren Eingang des DPFD 14 gelegt. Der Teiler 12 erzeugt ebenfalls ein Freigabesignal „dco_en” für das DCO-Ausgangssignal „dco_out”, wobei das Freigabesignal verwendet wird, um den DCO und Zähler (F) zu Beginn des clk2r-Zyklus bzw. der Periode clk2r zurückzusetzen.
-
Während des Betriebs erkennt der DPFD 14, ob die Ausgangstaktfrequenz des dco_out größer oder kleiner ist als erwartet, indem das clk2r-Signal mit einem clkf-Ausgangssignal aus dem Zähler 20 verglichen wird. Wenn das DCO-Ausgangstaktsignal dco_out nicht innerhalb eines zulässigen Bereichs liegt, erzeugt der DPFD 14 digitale Steuersignale c, asc und postc, die verwendet werden, um die DCO-Ausgangstaktfrequenz zu erhöhen oder zu verringern. Die Steuersignale c, asc und postc sind in Form von Binärzahlen vorgesehen. In der anschaulichen Ausführungsform aus 1 besteht c aus 14 Binärzeichen c[0] bis c[13], asc besteht aus einem einzelnen Binärzeichen, während postc aus 6 Zeichen postc0 bis postc5 besteht. DCO: digitaler Steueroszillator. Ein Ringoszillator kann eingestellt werden, indem digital die Verzögerung der Ringoszillatorschleife auf der Grundlage der Werte c, asc und postc verändert wird, so dass sich die DCO-Ausgangstaktfrequenz entsprechend einstellt.
-
Wenn ein Eingangssignal „pll_en” auf hohen Pegel geht, beginnt das PLL-System in 1 zu schwingen. Der Teiler 12 teilt das Eingangstaktsignal clkin durch 2DR, um das Ausgangssignaltaktsignal clk2r mit einem Tastgrad von 50% zu erzeugen. Das Taktsignal clk2r wird dem DPFD 14 zugespeist. Das dco_en-Signal, das von dem Teiler 12 erzeugt wird, ist ein sehr kurzer Puls (beispielsweise ungefähr 200 ps), das vor der ansteigenden Flanke von clk2r auftritt. Das dco_en-Signal wird verwendet, um den DCO 16 und den Zähler 20 zu Beginn jeder Periode clk2r zurückzusetzen.
-
Das DCO-Ausgangssignal dco_out ist ein Hochfrequenzsignal, das als das Taktsignal des Zählers 20 verwendet wird. Der Zähler 20 beginnt bei Null zu Beginn jedes clk2r-Zyklus zu zählen. Wenn der Zähler den Wert DF[7:0] erreicht, geht der Ausgang des Zählers clkf auf hohen Pegel über. DF[7:] ist eine anwenderdefinierte Binärzahl mit 8 Zeichen. Wie in 6 gezeigt ist, setzt das Ausgangssignal dco_en aus dem Teiler 12 das Signal clkf auf einen niedrigen Pegel bei der ansteigenden Flanke eines clk2r-Taktsignals zurück.
-
Bei jeder abfallenden Flanke von „clk2r” erkennt der DPFD 14, ob clkf hochpegelig oder tiefpegelig ist. Wenn clkf hochpegelig ist, bedeutet dies, dass die DCO-Ausgangstaktfrequenz höher als erwartet ist. Wenn clkf tiefpegelig ist, bedeutet dies, dass die DCO-Ausgangstaktfrequenz niedriger als erwartet ist. Wenn die DCO-Ausgangstaktfrequenz niedriger oder höher als erwartet ist, stellt der DPFD 14 die digitalen Steuerbits c[13:0], asc, postc[5:0] entsprechend ein, so dass sich die DCO-Ausgangsfrequenz ändert bis in einem gewissen Zyklus clk2r die fallende Flanke clk2r und die ansteigende Flanke clkf genau übereinstimmen. Unter dieser Bedingung ist die Frequenz des DCO-Ausgangstaktsignals dco_out genau gleich zu DF/DR mal der Frequenz von clkin. Die Frequenz des Taktausgangs des Ausgangsteilers 18 „pll_clk” ist gleich zu (DF/DR)/2DP mal der Frequenz von „clkin”. Das PLL-Ausgangssignal „clkout” wird von einen Multiplexer 22 erzeugt. Ein „Bypass-Signal bzw. Umgehungssignal” wird verwendet, um den Multiplexer 22 anzusteuern, so dass ausgewählt wird, ob das pll_clk-Eingangssignal oder sein clkin-Eingangssignal als das pll-Ausgangssignal clkout bereitgestellt werden.
-
2 ist eine detaillierte schematische Darstellung eines DCO 16, der in der PLL-Schaltung aus 1 verwendet wird. Der DCO 16 ist ein Ringoszillator, der verwendet wird, um das frequenzeinstellbare Ausgangstaktsignal zu erzeugen. Obwohl dieser DCO vollständig aus Logikzellen aufgebaut ist, ist er so gestaltet, dass einige der Transistorparameter eingestellt werden können. Im Allgemeinen kann die Frequenz des DCO eingestellt werden, indem die Anzahl der Verzögerungszellen eingestellt wird, die in dem Ringoszillator enthalten sind, und indem die Größe der Verzögerungszellenlast variiert wird. Eine derartige Gestaltung ermöglicht es, einen breiten Frequenzbereich und eine höhere Auflösung zu erreichen. Die Werte von C[13:10] von dem Steuersignal C werden verwendet, um die Anzahl der Verzögerungszellen zu ändern, die in dem Ringoszillator enthalten sind, während die Werte von C[9:0] aus dem c-Steuersignal verwendet werden, um die Last der Verzögerungszellen zu ändern.
-
Es werden NAND-Gatter 30 (wovon nur einige durch Bezugszeichen in den Zeichnungen benannt sind) als die grundlegenden Verzögerungszellen für den Ringoszillator verwendet. In 2 ist eine ungerade Anzahl an NAND-Basisverzögerungszellen verwendet, um den grundlegenden Ringoszillatoraufbau bereitzustellen. Insbesondere wenn alle c[13:10] 0 sind bilden 0, N1, N2, N3, N4, N8, N9, N13 den Ringoszillator (siehe die Dicke der Linie in 2). Ein Vorteil der Verwendung von NAND-Gattern als grundlegende Verzögerungszellen besteht darin, dass dadurch ermöglicht wird, dass der DCO innerhalb einer sehr kurzen Zeit deaktiviert und zurückgesetzt wird. Dies verhindert, dass sich der Jitter zum nächsten clk2r-Zyklus hin akkumuliert, so dass der Langzeit-Jitter wesentlich verringert wird. Beispielsweise kann ein sehr kurzer negativer Impuls (ungefähr 2 ps) am Beginn der Periode clk2r auf „dco_en” dazu führen, dass der DCO vollständig auf einen bekannten Zustand (W1 = 1, W2 = 0, W3 = 1, W4 = 0, W8 = 1, W9 = 0, W13 = 1) zurückgesetzt wird, so dass kein Jitter sich für den nächsten clk2r-Zyklus aufbauen kann. Wenn andererseits Inverter als die grundlegende Verzögerungszelle verwendet würden, müsste der „EN”-Puls länger sein als die gesamte Schleifenverzögerung, ansonsten könnte der Ringoszillator nicht aus einem bekannten Zustand nach einem „EN”-Puls starten, wie dies in den 3a und 3b gezeigt ist. Die 3a und 3b sind Diagramme der Logikzellen für eine Ringosziallatorarchitektur mit Inverter bzw. für eine Ringoszillatorarchitektur mit NAND-Gatter.
-
Es gibt 3 LDC's (große Verzögerungszellen) 32 in dem DCO, die ausgewählt werden können, so dass sie in dem Ring enthalten sind. Die Steuerungssignale c[13:12] steuern, wie viele LDC's in dem Ring enthalten sind. Abhängig von der Kombination der c[13:12] (2'b00:0, 2'b01:1, 2'b10:2, 2'b11:3) können ein oder mehrere der LDC's in dem Ring enthalten sein, oder es können alle drei LDC's ausgeschlossen sein. Der DCO umfasst ferner drei SDC's (kleinere Verzögerungszellen) 34, die ausgewählt werden können, so dass sie in dem Ring aktiv enthalten sind. Die Steuersignale c[11:10] steuern, wie viele SDC's in dem Ring enthalten sind. Abhängig von der Kombination c[11:10] (2'b00:0, 2'b01:1, 2'b10:2, 2'b11:3), können eine oder mehrere der SDC's in dem Ring enthalten sein, oder es können alle drei SDC's ausgeschlossen sein. Mittels unterschiedlicher Anzahlen von LDC's und SDC's in dem Ring kann die Periode des Ringoszillatorausgangssignals entsprechend geändert werden.
-
Der DCO in 2 umfasst ferner Lastzellen, die verwendet werden, um die Größe der Last an den NAND-Gattern N1, N2, N3, N8 und N13 zu ändern. Am Ausgang der NAND-Gatter N1, N2, N3 gibt es Lastzellen (DL9, DL8, DL7, DL6), die entsprechend den Steuersignalen c[9:6] angeschlossen sind. Für jede Lastzelle stellt sich mit jedem Einschalten des Steuersignals oder Ausschalten die Last von N1, N2, N3 auf einen gewissen Wert ein, so dass sich ebenfalls die Periode bzw. die Schwingdauer des Ringoszillatorausgangtaktsignals entsprechend ändert. Am Ausgang des NAND-Gatters N8 gibt es Lastzellen (DL5, DL4, DL3, DL2), die entsprechend den Steuersignalen c[5:2] angeschlossen sind. Das Einschalten oder Ausschalten von c[5:2] in separater Weise ändert die Last von N8, so dass die Periode des Ringoszillatorausgangtaktsignals geändert wird. An dem Ausgang des NAND-Gatters N14 sind Lastzellen (DL1, DL0, DLA) vorgesehen, die entsprechend den Steuersignalen c[1:0], postc [5:0], asc angeschlossen werden. Das Einschalten oder Ausschalten von c[1:0], postc [5:0], acs ändert die Last an N13, so dass sich auch dementsprechend die Periode des Ringoszillatorausgangstaktsignals ändert.
-
Von c[13] bis c[0] wird die Gewichtung bzw. der Einfluss auf die Änderung der Taktsignalperiode des DCO-Ausgangssignals immer kleiner. Um das Erfordernis einer binären Suche zu erfüllen, wird das Gewicht für c[13] genau eingestellt. Die Steuereingänge „postc[5:0]” und „asc” sind ebenfalls Steueranschlüsse für die Last der Verzögerungszellen. Der Steueranschluss asc wird für die Zyklussteuerung verwendet, und postc[5:0] wird für die Takt-Jitter-Toleranz verwendet, nachdem die PLL-Schaltung eingeschwungen bzw. verriegelt ist.
-
Die 6 UND-Zellen 36, die in 2 in dem Kreis enthalten sind, werden verwendet, um nicht verwendete Zellen abzuschalten, so dass eine unnötige Leistungsaufnahme vermieden wird, wenn der DCO in Betrieb ist. Diese Zellen dienen dazu, eine Verschiebung zu vermeiden und sicherzustellen, dass die gesamte Schleife beim Starten des Schwingens des DCO nicht blockiert ist. Es werden zwei Signale „dco_en_w” und „dco_en_n” durch die UND-Zellen 36 aus dem Signal dco_en erzeugt. Das Signal dco_en_w ist ein Pulssignal und geht auf niedrigen Pegel bevor dco_en_n auf tiefen Pegel geht und geht in den hohen Pegel über, nachdem das Signal dco_en_n hochpegelig geworden ist. Das Signal dco_en_w ist mit dem NAND-Gatter N1 verbunden, während das Signal dco_en_n mit anderen NAND-Gattern in der Schleife verbunden ist. Somit kann dessen Anfangstaktsignalstörung verhindert werden, um sicherzustellen, dass, wenn der DCO zu schwingen beginnt, die gesamte Schleife nicht blockiert ist.
-
4 ist eine detaillierte schematische Ansicht eines DPFD, der in der PLL-Schaltung aus 1 verwendet wird. Der DPFD empfängt als Eingangssignale dco_out von der Komponente 16, clk2r von dem Teiler 12r, clkf von dem Zähler 20 und rstn. Diese Signale sind gekoppelt mit den folgenden Schaltungsmodulen in dem DPFD 14 oder stehen in Wechselwirkung mit diesen Schaltungsmodulen.
-
Ein plus_num-Generator 40 erzeugt das Signal plus_num [3:0], das dabei hilft, für alle 12 dco_out-Zyklen zu bestimmen, wie viele dco_out-Zyklen asc auf einen Logikzustand 1 festzulegen sind. Ein asc-Generator 42 erzeugt das Ausgangssignal „asc” für den DCO 16. Ein c-Generator 44 erzeugt das Ausgangssignal c[13:0] für den DCO16. Ein postc-Generator 46 erzeugt das Ausgangssignal postc[5:0] für den DCO16. Ein ud-Generator 48 erzeugt die Signale uda und ud_postc, die angeben, ob der DCO16 schneller oder langsamer schwingen soll. Ein Verriegelungsdetektor 50 erkennt, ob die PLL verriegelt ist. Ein Entriegelungsdetektor 52 erkennt, ob die Verriegelung der PLL-Schaltung verloren ging oder nicht.
-
Das Modul des ud-Generators 48 überprüft, ob clkf hochpegelig oder auf tiefem Pegel liegt, wobei dies bei jeder abfallenden Flanke des Signals clk2r erfolgt. Wenn clkf hochpegelig ist, ist das Ausgangssignal uda des ud-Generators 48 auf einem Logikzustand „1”, ansonsten liegt uda auf einem Logikzustand „0”. Das uda-Signal wird dem c-Generator 44 zugeleitet, der Werte für die binäre Ausgabezeichenfolge c[13:0] erzeugt auf der Grundlage des uda-Werts bei jedem clk2r-Zyklus, nachdem pll_en aktiviert ist (auf hohen Pegel geschaltet ist).
-
Die Funktionsweise ist detaillierter mit Bezug zu dem Flussdiagramm für Daten aus 5 und die Signalformen, die in 6 gezeigt sind, erläutert. Der c-Generator 44 verwendet eine binäre Suche, um die Wert für c[13:0] zu bestimmen und um eine schnelle Verriegelung zu erreichen. Wenn die binäre Suche initiiert wird, werden sowohl c[13:0] und c_ready auf einen Logikzustand 0 im Schritt 100 in 4 gesetzt. Diese Zustände sind in der Signalformdarstellung aus 5 gezeigt. Bei der nächsten ansteigenden Flanke von clk2r wird c[13] in den Logikzustand 1 im Schritt 102 versetzt. Bei der abfallenden Flanke von clk2r aktualisiert der uda-Generator 48 seinen Wert. Der Schritt 104 ist ein logischer Entscheidungsblock für den Wert von uda. Bei der nächsten ansteigenden Flanke von clk2r wird, wenn uda im Logikzustand 1 ist, das Signal c[13] auf den Logikzustand 1 festgelegt. Wenn nicht, wird c[13] im Schritt 106 auf den Logikzustand 0 festgelegt. Gleichzeitig wird das Signal c[12] auf den Logikzustand 1 gesetzt. Der Schritt 108 ist ein logischer Verkleidungsblock, um zu bestimmen, ob N gleich 0 ist, wodurch angezeigt wird, dass die Suche über alle c-Signaleinstellungen erfolgt ist. Wenn nicht, wird n im Schritt 110 um 1 herabgesetzt, und der Ablauf kehrt zum Schritt 102 zurückt. Die Schritte werden wiederholt, um den Wert für c[12] und die verbleibenden c[11:0] festzulegen bis c[0] bestimmt ist, wie dies im Schritt 108 festgelegt wird. Zu diesem Zeitpunkt wird c_ready von dem c-Generator 44 im Schritt 112 auf hohen Pegel gelegt. Von c[13] bis c[0] besitzt jeder Steueranschluss einen unterschiedlichen Gewichtungsfaktor zum Einstellen der Periode des DCO-Ausgangstaktsignals, wobei c[13] das größte Gewicht und c[0] das kleinste Gewicht besitzt. Der Schritt 114 ist ein logischer Entscheidungsblock, um zu bestimmen, ob die PLL für die Werte aus c, die aus der binären Suche gewonnen wurden, verriegelt ist. Wenn das System nicht verriegelt ist, kehrt der Ablauf zum Schritt 108 zurück. Wenn eine Entscheidung dahingehend getroffen wird, dass das System nicht verriegelt ist, gibt der Entriegelungsdetektor 52 ein Rückgabesignal aus, um im Ablauf zum Schritt 100 zurückzukehren.
-
Theoretisch sollte das Gewicht des Signals c[12] gleich 50% des Gewichts des Signals c[13] sein, das Gewicht des Signals c[11] sollte 50% jenes des Signals c[12] betragen, usw., so dass das Gewicht des Signals c[0] gleich ist zu ½13 von c[13], was ungefähr 0,012% sind. Dadurch würde eine extreme Genauigkeit bereitgestellt. Wenn man jedoch berücksichtigt, dass es Prozessschwankungen gibt, Temperaturschwankungen und Spannungsschwankungen, wird das tatsächliche Verhältnis nicht exakt 50% sein. Das Verhältnis kann geringfügig höher eingestellt werden, um sicherzustellen, dass gewisse Schwankungen nicht negativ sind. Die folgende Tabelle zeigt mögliche unterschiedliche Gewichtungswerte für c[13] bis c[0] (Einheiten: ps): c[13] – 640, c[12] – 321, c[11] – 185, c[10] – 94,7, c[9] – 49,3, c[8] – 29,3, c[7] – 18,4, c[6] – 11,2, c[5] – 7,86, c[4] – 5,66, c[3] – 4,14, c[2] – 2,69, c[1] – 2,13, c[0] – 1,41.
-
Nachdem der Wert von „c[13:0]” festgelegt ist, wird eine grobe Festlegung der erwarteten Frequenz erreicht. Jedoch ist diese Frequenz nicht ausreichend genau und es muss eine weitere Feineinstellung vorgenommen werden. Obwohl der DCO so gestaltet sein kann, dass eine Änderung des Wertes von „c[0]” eine Einstellung mit einer geringen Größe von 1,4 ps möglich macht, die auf die Periode des DCO-Ausgangstaktsignals angewendet wird, ist eine Feineinstellungsgenauigkeit, die durch das c-Steuersignal bereitgestellt wird, von 1,4 ps dennoch nicht ausreichend. Dies liegt daran, dass der Jitter nach dem Durchlaufen des Rückkopplungszählers, d. h. des Zählers (F), sich aufsummieren kann, so dass ein Jitter von 2·DF·1,4 ps am letzten dco_out-Zyklus innerhalb einer clk2r-Periode auftreten kann. Ein Jitter von 2·DF·1,4 ps ist jedoch äußerst signifikant.
-
Um den Jitter des DCO-Ausgangstaktsignals zu reduzieren oder zu eliminieren, wird eine Zyklensteuerung in der folgenden Weise bewirkt. Wenn die pll-Schaltung verriegelt ist, ist eine Periode Tclk2r des Signals clk2r gleich 2·DF mal jeder dco_out-Periode, die als Tdco bezeichnet wird. Unter der Annahme, dass c[0] ausgeschaltet ist, – d. h., der zugehörige DLO ist, wie in dem DCO aus 2 gezeigt ist, deaktiviert und belastet den DCO-Ring-Oszillator nicht, – weisen die ersten 2·DF – 1 dco_out-Zyklen jeweils eine Periode von Tdco – 1‚4 ps auf. Da das Signal dco_en das Signal dco_out auf „0” an seiner abfallenden Flanke und der ansteigenden Flanke von clk2r (siehe [1] 7a) setzt, müssen zwei Mal DF-Zyklen des Signals dco_out in eine einzelne Periode von clk2r eingepasst werden. Daher ergibt sich die Periode des letzten Zyklus des Signal dco_out, das durch das Bezugszeichen „1” benannt ist Tlcd = Tclk2r – (2·DF – 1)(Tdco – 1,4 ps)
-
Wie in 7a gezeigt ist, ist die Periode dieses letzten dco_out-Zyklus länger als die anderen 2·DF·–1 Zyklen davor und die Differenz entspricht einem Jitter von 2·DF·1,4 ps. Tlcd – (Tdco – 1,4 ps) = Tclk2r – (2·DF – 1)(Tdco – 1.4 ps) – (Tdco – 1.4 ps)
= 2·DF·Tdco – (2·DF – 1)(Tdco – 1.4 ps) – (Tdco – 1.4 ps)
= 2·DF·1.4 ps
-
Wenn in ähnlicher Weise c[0] eingeschaltet ist, ist ebenfalls ein akkumulierter Jitter von 2·DF·1,4 ps in dem letzten Zyklus des Signals dco_out vorhanden, aber die Periode dieses letzten Zyklus ist kürzer als die der anderen 2·DF – 1 Zyklen davor. Da die mit c[0] verknüpfte Lastzelle in ihrer Größe sehr klein ist, gibt es kaum Platz für eine Genauigkeitsverbesserung durch eine Reduzierung der Größe des Bauelements und somit müssen derartige alternative Verfahren zur Behebung des Jitter-Problems eingesetzt werden.
-
Es wird ein neues Verfahren, das als Zyklensteuerung bezeichnet wird, angewendet, um den Jitter des DCO-Ausgangstaktsignals zu reduzieren. Allgemein gesagt, in der Zyklensteuerung wird die Einstellung der „dco_out”-Zeitperiode für einige Zyklen innerhalb einer einzelnen clk2r-Periode in Reaktion auf eine Rückkopplung von dem „du-Generator” im Hinblick darauf vorgenommen, ob die dco_out-Frequenz größer oder kleiner ist als der Sollwert. Anders als die c[13:0]-Steuersignale, die von dem „c-Generator” erzeugt werden, wobei die Einstellungen innerhalb eines einzelnen clk2r-Zyklus nicht modifiziert werden, werden die Lasteinstellungen, die auf den DCO angewendet werden, innerhalb einer clk2r-Periode variiert, indem das „asc”-Signal unterschiedliche Werte innerhalb eines einzelnen clk2r-Zyklus annimmt. Dies ermöglicht eine größere Präzision bei der Feineinstellung des DCO im Hinblick auf die erforderliche Frequenz.
-
Das Signal, das für die Reduzierung des „Verriegelungsjitters” des Ausgangssignals des DCO ist, ist das Ausgangssignal asc, das von dem asc-Generatormodul 42 erzeugt wird, das in 4 gezeigt ist. Das Signal asc folgt dem Takt des dco_out-Signal, das im Vergleich zu der Frequenz von clk2r eine höhere Frequenz besitzt, wobei clk2r wiederum c[13] bis c[0] folgt. Auf diese Weise können viele Änderungen in dem asc-Wert innerhalb einer einzelnen clk2r-Periode vorgenommen werden. Wenn asc eingeschaltet wird, wird die Periode jedes dco-Ausgangstaktzyklus um einen festgelegten Wert, beispielsweise 2 ps erhöht, wenn die DLA-Last, die mit dem asc-Signal verknüpft ist, aktiviert wird, so dass der Ringoszillator langsamer gemacht wird. Wenn andererseits asc abgeschaltet ist, ist die DLA deaktiviert und es wird keine Einstellung vorgenommen. In einem einzelnen clk2r-Zyklus gibt es 2·DF-Zyklen des Signals dco_out, wenn asc auf „1” in einem gewissen Prozentsatz der dco_out-Zylken gesetzt wird, und es wird asc auf „0” in anderen dco_out-Zyklen gesetzt, so dass dann der akkumulierte Jitter in einem einzelnen clk2r-Zyklus deutlich verringert ist.
-
Die dco_out-Zyklen innerhalb einer clk2r-Periode werden in Teilgruppen zusammengefasst, die jeweils 12 dco_out-Zyklen aufweisen (wobei auch eine andere Anzahl geeignet ist). Der Wert des Eingangssignals plus_num[3:0] (das eine binäre Zeichenfolge ist) bestimmt die Anzahl der dco_out-Zyklen innerhalb jeder Teilgruppe aus 12, für die das Signal asc hochpegelig ist. Das plus_num-Generatormodul 40 in 4 erzeugt das plus_num[3:0] Signal bei der ansteigenden Flanke des Signals clk2r. Wenn uda gleich „1” bei der ansteigenden Flanke von clk2r ist, erhöht sich plus_num[3:0] um 1, was bedeutet, dass asc für einen zusätzlichen dco_out-Zyklus innerhalb jeder Teilgruppe aus 12 gleich „1” ist, während ansonsten plus_num[3:0] in jeder Teilgruppe aus 12 um 1 abnimmt. Wie zuvor erläutert ist, zeigt ein uda-Wert von „1” an, dass das Taktsignal dco_out schnell ist, während ein uda-Wert von Null anzeigt, dass es langsam ist. Daher beruht die asc-Einstellung auf der ud-Generatorangabe, ob dco_out schnell oder langsam ist.
-
Es sei nun auf das Beispiel in der 7b verwiesen; dort ist die Anwendung einer Zyklensteuerung gezeigt, wobei uda bei der ansteigenden Flanke des ersten Zyklus von clk2r von links gleich Null ist, so dass der asc für 6 dco_out-Zyklen hochpegelig ist. Mittlerweile ist uda an der ansteigenden Flanke des zweiten Zyklus von clk2r gleich 1, so dass asc für 7 dco_out-Zyklen hochpegelig ist.
-
Unter der Annahme, dass die dco_out-Zyklen innerhalb einer clk2r-Periode in Teilgruppen mit 12 dco_out-Zyklen jeweils aufgeteilt sind und eine Einstellung auf einen dco_out-Zyklus 2 ps beträgt, kann der maximale Jitter auf (2·DF/12)·2 ps unter Anwendung der Zyklensteuerung verringert werden. Dies liegt daran, dass der dco_out-Zyklus 2·DF/12 mal innerhalb einer clk2r-Periode eingestellt wird, wenn sich der plus_num-Wert ändert. Der maximale Jitter von dco_out tritt bei dem letzten dco_out-Zyklus jeder clk2r-Periode auf.
-
Nach der binären Suche sind der Wert c[13:0] festgelegt (d. h. verriegelt) und die Zyklensteuerungsprozedur ist initiiert. Der Verriegelungsdetektor 50 erkennt dann, ob das uda-Signal zwischen den Logikzuständen (0–> 1 oder 1–> 0) sich in jedem Zyklus von clk2r ändert. Wenn sich das Signal uda auf den entgegengesetzten Wert für drei zusammenhängende clk2r-Zyklen ändert, erzeugt der Verriegelungsdetektor 52 ein logisch hochpegeliges Verriegelungssignal, das anzeigt, dass das PLL-System verriegelt bzw. eingeschwungen ist. Wenn sich danach die Referenzeingangstaktsignalfrequenz, die Eingangsteilerrate DR oder die Ausgangsteilerrate DP ändern, erkennt der Entriegelungsdetektor 52, ob die Verschiebung von clk2r und clkf größer als die Schwellwertverzögerung ist. Wenn dies der Fall ist, wird ein kurzer positiver Puls unlockt_rst erzeugt, um das PLL-System zurückzusetzen. Das Verriegelungssignal kehrt in den Zustand mit tiefem logischen Pegel zurück und das PLL-System startet die Prozedur für die binäre Suche erneut, um wieder die Signale c[13:0] festzulegen. Das System kann den verriegelten Zustand wieder nach maximal 25 unterteilten Referenztaktzyklen (clk2r) erreichen.
-
Wenn das PLL-System in dem verriegelten Zustand ist, funktioniert der postc-Generator 46 so, dass die Eingangstaktsignal-Jitter-Toleranz vergrößert wird. Die Funktion des postc-Generatormoduls besteht darin, die Toleranz des PLL-Systems für den Eingangstaktjitter zu erhöhen, indem ein binäres Ausgangssignal postc [5:0] erzeugt wird, das dem DCO eingespeist und verwendet werden kann, um kleine Änderungen an der DCO-Frequenz so vorzunehmen, dass die Frequenz der Eingangstaktsignalfrequenz clkin folgt.
-
In der vorliegenden beschriebenen Ausführungsform ist postc [5:0] eine binäre Zeichenfolge mit 6 Zeichen. Wie in der DCO-Darstellung in 2 gezeigt ist, ist die Digitalzahl in der binären Zeichenfolge postc[5:0] mit einer entsprechenden digitalen Last DL0 verknüpft. Ein Wert „0” deaktiviert die zugehörige Lastzelle, während ein Wert „1” die Lastzelle aktiviert. Der Wert des postc-Signals kann auf der Grundlage des Wertes des Signals ud_postc[1:0], das dem postc-Generator von dem du-Generator zugeleitet ist, geändert werden. Der Wert des Signals ud_postc[1:0] variiert wiederum auf der Grundlage der Kombination von plus_num[3:0] und uda. Wenn plus_num[3:0] gleich 4·b1011 ist und uda ”0” ist, dann ist ud_postc[1:0] 2·b01. Wenn plus_num[3:0] gleich 4'b0000 ist und „uda” gleich „1” ist, dann wird „ud_postc[1:0]” zu 2'b10, ansonsten ist „ud_postc[1:0]” gleich 2·b00. Daher ist es möglich, die Last für den DCO-Ringoszillator zu variieren und somit die Frequenz dco_out in Reaktion auf einen Jitter des Eingangstaktsignals oder in Reaktion auf eine geringe Frequenzänderung einzustellen.
-
8 ist eine schematische Ansicht eines postc-Generators gemäß einer Ausführungsform der Erfindung. Der postc-Generator ist eine bidirektionale Schiebekette, wobei ud_postc[1:0] verwendet wird, um zu steuern, ob die Schiebekette nach rechts oder nach links schiebt. Wenn beispielsweise ud_postc[1:0] = 2·b01, wird die Kette aus postc[0] bis postc[5] nach rechts verschoben und der äußerst linke Ausgangswert in 8 postc[0] wird auf 1 gesetzt. Während daher postc[0:5] anfänglich einen Rücksetzwert von 111000 besitzt, führt ud_postc[1:0] = 2·b01 zu einem neuen Wert postc[0:5] von 111100, wenn andererseits ud_postc = 2'b10, dann wird die Kette aus postc[0] bis postc[5] nach links verschoben und der äußerste rechte Ausgangswert in 8 postc[5] wird auf 0 gesetzt. Daher ändert sich ein postc[0:5] mit einem Anfangswert von 111000 auf 110000. Wenn ud_postc = 2·b00 oder 2·b11, dann ergibt sich keine Änderung in postc[0:5].
-
9 ist eine graphische Darstellung, in der der Frequenzbereich des DCO-Ausgangstaktsignals für einen typischen Fall, für den besten Fall und für den schlimmsten Fall bei der DCO-Frequenzeinstellung für alle PVD-Grenzen gezeigt ist: 0,885 GHz ungefähr 1,869 GHz. Im besten Fall ergibt sich den PVT-Bereich: –40C/1.1 V/FF. Der typische Fall für die PVT-Grenze: 25C/1.0 V/TT. Die PVT-Grenze für den schlechtesten Fall: 125C/0,9 V/SS.
-
Es gilt also: Das offenbarte digitale PLL-System erreicht ein gutes Leistungsverhalten, wobei lediglich eine geringe Chipfläche eingenommen wird. Es werden eine Einstellung der Anzahl der Verzögerungszellen, eine Einstellung der Last der Verzögerungszellen und eine Zyklensteuerung durchgeführt, um in digitaler Weise die DCO-Frequenz zu steuern, so dass ein weiter Frequenzbereich mit einem geringen Jitter im Vergleich zu bestehenden PLL-Anordnungen abgedeckt wird. Die binäre Suche wird angewendet, um schnellst mögliche Verriegelung zu erreichen. Nachdem die PLL-Schaltung verriegelt ist, kann eine Schiebeabtastkette verwendet werden, um die Frequenzänderung der Referenz zu überwachen, so dass eine bessere Toleranz gegenüber dem Eingangstaktsignal-Jitter erreicht wird. In dem vorliegenden PLL-System werden NAND-Gatter als die grundlegenden Verzögerungszellen verwendet, die den DCO in sehr kurzer Zeit vollständig deaktivieren und zurücksetzen können, wodurch eine Jitter-Akkumulation zum nächsten Referenztaktsignalzyklus hin vermieden wird. Es wird eine stabile DCO-Schwingung erreicht. Beispielsweise wird in einer Ausführungsform das PLL-System unter Anwendung eines 65 nmG-Prozesses von Global Foundries eingerichtet, wobei für die PLL 5255 μm2 (oder 3% eines PLL-Chipbereichs) eingenommen werden. Der DCO-Frequenzbereich liegt etwa innerhalb der Werte von 900 MHz bis 1.8 GHZ für alle PVT-Grenzen. Wenn die DCO-Frequenz bei 1,8 GHz liegt, ist ein Arbeitsstrom von ungefähr 1,0 mA bei einer Versorgungsspannung von lediglich 1,0 Volt erforderlich. Diese PLL-Schaltung kann sehr schnell innerhalb von 50 geteilten Referenztaktzyklen (5 μs bei 10 MHz geteiltem Referenztakt) einschwingen, und der Ausgangstaktsignaljitter ist kleiner als 40 ps.
-
In dieser Offenbarung sind nur bevorzugte Ausführungsformen der Erfindung gezeigt und beschrieben, und es sind auch nur einige Beispiele der vielfältigen Implementierungsmöglichkeiten gezeigt. Zu beachten ist, dass die Erfindung in diversen Kombinationen und Umgebungen eingesetzt werden kann, und dass Änderungen oder Modifizierungen innerhalb des Schutzbereichs des erfindungsgemäßen Konzepts, wie es hierin ausgedrückt ist, vorgenommen werden können. Beispielsweise liegt es im Rahmen der Erfindung, dass äquivalente Logikelemente statt der zuvor beschriebenen Logikelemente verwendet werden können.