-
Viele
elektronische Geräte
und Systeme erfordern zum Betrieb mehrere Taktgabevorrichtungen. Beispielsweise
ist es bei vielen automatisierten System notwendig, Takte an mehreren
Positionen vorzusehen, damit verschiedene Komponenten des Systems
ordnungsgemäß funktionieren.
Oft ist die Synchronisierung dieser Takte für die Genauigkeit und Leistungsfähigkeit
von wesentlicher Bedeutung.
-
Ein
Verfahren zum Bereitstellen einer Taktsynchronisierung wird gemäß dem IEEE
Standard 1588, oft als Präzisionszeitprotokoll
(PTP – Precision Time
Protocol) des IEEE-Standards
bezeichnet, beschrieben. Unter diesem Protokoll kommuniziert ein Haupttakt
bzw. Master-Takt mit einem oder mehreren Nebentakten bzw. Slave-Takten über eine
Netzwerkverknüpfung
wie z.B. eine Ethernet-Verknüpfung.
Periodisch sendet der Haupttakt seine Zeit an die Nebentakte, die
ihre Taktwerte an die Haupttaktzeit anpassen, einschließlich eines
Berücksichtigens
von Ausbreitungsverzögerungswerten
zwischen dem Haupttakt und den jeweiligen Nebentakten.
-
Gleichzeitig
stützen
sich das Protokoll IEEE 1588 und andere bekannte Synchronisierungsstandards
auf eine Frequenzeinrastung des Haupt- und der Nebentakte. Insbesondere
sind die Haupt- und Nebentaktsignale digitale Signale, die eine
Taktfunktion über
Zähler
liefern. Wenn die Zähler
des Haupttaktes und eines Nebentaktes denselben Wert aufweisen,
werden die Takte als synchronisiert erachtet, und es wird keine
Anpassung vorgenommen. Falls die Zähler des Nebentaktes und des
Haupttaktes um einen Zählwert
differieren, wird an dem Nebenzähler eine
Anpassung vorgenommen, um die Takte zur Synchronisierung zurückzubringen.
Somit wird eine Anpassung erst dann vorgenommen, wenn sich der Haupt-
und die Nebentakte um einen Zählwert
in Bezug auf die Zeit unterscheiden. Dies wird oft als Grenzzyklus
bezeichnet.
-
Während eine
Frequenzeinrastung bei der Taktsynchronisierung vom Haupt- und Nebentakten sinnvoll
ist, liefert der Grenzzyklus auf Grund eines Phasenversatzes zwischen
den Takten eine systemeigene Ungenauigkeit. Wenn beispielsweise
ein Haupt- und ein Nebentakt bei derselben Frequenz arbeiten, jedoch
um 180 Grad phasenverschoben wären,
hätten
sie für
eine halbe Taktperiode jedes Taktzyklus denselben Zählwert (d.h.
wären synchronisiert),
und würden
sich für
eine halbe Taktperiode jedes Taktzyklus um einen Zählwert unterscheiden (d.h.
wären nicht
synchronisiert). Da die Weitergabe der Haupttaktzeit zwischen dem
Haupttakt und Nebentakten relativ selten (in der Größenordnung
von 1,0 Hz) erfolgt, kann eine beträchtliche Anzahl an Taktzyklen
bei Hochgeschwindigkeitsanwendungen (z.B. 10 MHz) erfolgen, bei
denen die Takte nicht synchronisiert sind. Bei vielen Anwendungen
sind derartige Synchronisierungsfehler inakzeptabel.
-
Somit
besteht ein Erfordernis eines Verfahrens und einer Vorrichtung zum
Synchronisieren von Takten, das bzw. die zumindest die Unzulänglichkeiten
bekannter Taktsynchronisierungsarchitekturen überwindet.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, eine Vorrichtung,
ein Netzwerk sowie ein Verfahren mit verbesserten Charakteristika
zu liefern.
-
Diese
Aufgabe wird durch eine Vorrichtung gemäß Anspruch 1, ein Netzwerk
gemäß Anspruch
8 oder durch ein Verfahren gemäß Anspruch
15 gelöst.
-
Gemäß einem
veranschaulichenden Ausführungsbeispiel
umfasst eine Vorrichtung einen Haupttaktzähler; eine Servosteuerung;
und einen Nebentaktzähler.
Die Vorrichtung umfasst ferner: einen Fehlerdetektorblock, der dahin
gehend wirksam ist, eine Zeitdifferenz zwischen dem Nebentaktzähler und
dem Haupttaktzähler
zu bestimmen, einschließlich
einer relativen Phase der Haupt- und Nebentaktzähler. Außerdem umfasst die Vorrichtung
einen Akkumulator, der einen Deltaverzögerungswert von der Servosteuerung
auf der Basis einer vorhandenen Zeitdifferenz und vorheriger Zeitdifferenzen
empfängt.
Der Akkumulator ist dahin gehend angepasst, einen Inkrementwert
und einen Partialwert auszugeben. Ferner umfasst die Vorrichtung
einen Variable-Verzögerung-Block,
der den Inkrementwert und den Partialwert empfängt und dahin gehend wirksam ist,
den Nebentaktzähler
auf der Basis des Inkrementwerts und des Partialwerts anzupassen.
-
Gemäß einem
weiteren veranschaulichenden Ausführungsbeispiel umfasst ein
Netzwerk eine Mehrzahl von Knoten, wobei einer der Mehrzahl von Knoten
einen Haupttaktzähler
umfasst und jeder der anderen Knoten einen Nebentaktzähler umfasst.
Das Netzwerk umfasst ferner eine Taktsynchronisierungsvorrichtung,
die einen Fehlerdetektorblock umfasst, der dahin gehend wirksam
ist, eine Zeitdifferenz zwischen dem Nebentaktzähler und dem Haupttaktzähler zu
bestimmen, einschließlich
einer relativen Phase zwischen den Haupt- und Nebentaktzählern. Außerdem umfasst
die Taktsynchronisierungsvorrichtung einen Akkumulator, der einen
Deltaverzögerungswert
von der Servosteuerung auf der Basis einer vorliegenden Zeitdifferenz
und vorheriger Zeitdifferenzen empfängt. Der Akkumulator ist dahin
gehend angepasst, einen Inkrementwert und einen Partialwert auszugeben.
Außerdem
umfasst die Taktsynchronisierungsvorrichtung einen Variable-Verzögerung-Block,
der den Inkrementwert und den Partialwert empfängt und dahin gehend wirksam
ist, jeden Nebentaktzähler
auf der Basis des Inkrementwerts und den Partialwerts anzupassen.
-
Gemäß einem
wieder anderen veranschaulichenden Ausführungsbeispiel umfasst ein
Verfahren zum Synchronisieren von Takten: Bestimmen einer Zählwertdifferenz
und einer Partialverzögerung
zwischen einem Haupttakt und einem Nebentakt; und Anpassen einer
Taktflanke, die einen Nebentaktzähler
taktet, um einen Betrag, der gleich der Partialverzögerung ist,
um den Haupttakt mit dem Nebentakt zu synchronisieren.
-
Die
veranschaulichenden Ausführungsbeispiele
sind aus der folgenden ausführlichen
Beschreibung am besten verständlich,
wenn dieselbe mit den beiliegenden Zeichnungsfiguren gelesen wird.
Es wird betont, dass die verschiedenen Merkmale nicht unbedingt
maßstabsgetreu
gezeichnet sind. In der Tat können
die Abmessungen der Übersichtlichkeit
der Erläuterung
halber willkürlich
vergrößert oder
verkleinert sein. Überall
dort, wo dies anwendbar und praktisch ist, beziehen sich gleiche
Bezugszeichen auf gleiche Elemente.
-
1 ist
ein konzeptionelles Diagramm eines Netzwerks, das Haupt- und Nebentakte
gemäß einem
veranschaulichenden Ausführungsbeispiel umfasst.
-
2 ist
ein vereinfachtes Blockdiagramm einer Haupt/Nebentakt-Synchronisierungsvorrichtung
gemäß einem
veranschaulichen Ausführungsbeispiel.
-
3A und 3B sind
Zeitgebungsdiagramme, die eine Haupttaktzeit, eine Nebentaktzeit und
eine erforderliche Korrektur zur Synchronisierung gemäß einem
veranschaulichenden Ausführungsbeispiel
zeigen.
-
4 ist
ein vereinfachtes Blockdiagramm einer Haupt/Nebentakt-Synchronisierungsvorrichtung
gemäß einem
veranschaulichenden Ausführungsbeispiel.
-
5 ist
ein vereinfachtes schematisches Diagramm eines Variable-Verzögerung-Elements
gemäß einem
veranschaulichenden Ausführungsbeispiel.
-
6 ist
ein vereinfachtes schematisches Diagramm eines Variable-Verzögerung-Elements
gemäß einem
veranschaulichenden Ausführungsbeispiel.
-
7 ist
ein Flussdiagramm eines Verfahrens zum Synchronisieren von Takten
gemäß einem veranschaulichenden
Ausführungsbeispiel.
-
In
der folgenden ausführlichen
Beschreibung sind zu Zwecken der Erläuterung und nicht der Einschränkung spezifische
Einzelheiten dargelegt, um ein gründliches Verständnis von
veranschaulichenden Ausführungsbeispielen
gemäß den vorliegenden Lehren
zu vermitteln. Jedoch wird es Fachleuten, die den Vorteil der Lektüre der vorliegenden
Offenbarung haben, einleuchten, dass andere Ausführungsbeispiele gemäß den vorliegenden
Lehren, die von den hierin offenbarten spezifischen Einzelheiten
abweichen, im Schutzumfang der beigefügten Patentansprüche verbleiben. Überdies
können
Beschreibungen hinreichend bekannter Vorrichtungen und Verfahren
weggelassen werden, um die Beschreibung der veranschaulichenden
Ausführungsbeispiele
nicht zu verschleiern. Solche Verfahren und Vorrichtungen fallen
deutlich in den Schutzumfang der vorliegenden Lehren.
-
1 ist
ein konzeptionelles Diagramm eines Netzwerks 100 gemäß einem
veranschaulichenden Ausführungsbeispiel.
Bei einem Ausführungsbeispiel
ist das Netzwerk 100 ein lokales Netzwerk (LAN – local
area network) und umfasst eine Mehrzahl von Knoten 101–103.
Die Knoten können
Komponenten eines Messsystems oder eines Steuersystems oder beides
sein. Das Netzwerk 100 kann der Typ sein, der seitens des
IEEE 1588 ins Auge gefasst wird. Das Netzwerk 100 kann
unter bekannten Protokollen wie z.B. dem Ethernet-Protokoll (IEEE
802.3) arbeiten. Außerdem
kann das Netzwerk 100 ein drahtloses Netzwerk sein, das
unter einem drahtlosen Protokoll/Drahtlos-Protokoll wie z.B. IEEE
802.11 oder 802.15 arbeitet. Außerdem
kann das Netzwerk 100 ein zentralisiertes drahtloses Netzwerk
oder ein dezentralisiertes drahtloses Netzwerk sein. Es wird betont,
dass die aufgeführten
Protokolle und Netzwerke lediglich veranschaulichend sind und dass
andere Protokolle in Betracht gezogen werden.
-
Ungeachtet
des Typs des eingesetzten Netzwerks erfordern die Takte der Knoten 101–103 eine Synchronisierung.
Gemäß hierin
beschriebenen veranschaulichenden Ausführungsbeispielen erfolgt eine
Taktsynchronisierung zwischen einem Haupttakt und Nebentakten. Der
Haupttakt kann sich in einem der Knoten (z.B. Knoten 101)
befinden, und ein Nebentakt kann sich in jedem der anderen Knoten
(z.B. Knoten 102, 103) befinden.
-
Während eines
normalen Betriebs und gemäß dem ausgewählten Protokoll
des Netzwerks 100 sendet der Knoten des Haupttakts gelegentlich
eine Hauptzeit zum Empfang durch die Nebentakte. Diese Übertragung
kann ein Bestandteil einer Leitübertragung
seitens des Knotens sein, oder sie kann in routinemäßigen Kommunikationen
von dem Knoten mit dem Haupttakt an die anderen Knoten des Netzwerks bereitgestellt
werden. Ungeachtet dessen empfangen die Knoten die Haupttaktzeit
und messen außerdem
die relative Phase zwischen einem bekannten vordefinierten Merkmal
an der ankommenden Hauptzeitnachricht und der ansteigenden (oder
abfallenden) Flanke eines Lokaltaktoszillators. Zusammen mit der
zuvor geschätzten
Pfadlängenverzögerung werden
diese Informationen dazu verwendet, die Nebenzeit innerhalb einer
Fehlermessschwelle auf die Haupttaktzeit zu synchronisieren. Eine
Korrektur der Pfadlängenverzögerung ist
in dem Standard IEEE 1588 beschrieben.
-
Durch
Hinzufügen
der zusätzlichen
Phaseninformationen zu den Haupttaktzeitinformationen wird die Lokalservoschleife
statt zu einer einfachen frequenzverriegelten Schleife zu echten
Phasenverriegelungsschleife. Wie hierin ausführlicher beschrieben wird,
ist diese Fehlermessschwelle der kleinste Teil einer Taktperiode
(Phase), den das lokale System zu messen in der Lage ist. Dies liefert
im Vergleich zu bekannten Frequenzverriegelungsschleifensystemen,
die eine Genauigkeit von lediglich ± 1 Taktperiode oder Zähl wert liefern,
eine beträchtliche Verbesserung
der Genauigkeit.
-
2 ist
ein vereinfachtes Blockdiagramm einer Vorrichtung 200,
die dahin gehend angepasst ist, einen Haupttakt gemäß einem
veranschaulichenden Ausführungsbeispiel
auf einen Nebentakt zu synchronisieren. Die Vorrichtung 200 kann
sich in einem der Knoten 101–103 des Netzwerks 100 befinden,
mit der Ausnahme eines Haupttaktzählers 201, der sich
an dem Knoten mit dem Haupttakt befindet und durch einen Hauptoszillator 213 getrieben
wird. Die Vorrichtung 200 ist als eine Reihe von Funktionsblöcken beschrieben,
die entweder in einer zweckgebundenen Hardware oder Software, die
auf einem Mikroprozessor abläuft,
implementiert sein können. Mit
Ausnahme des Ankunftszeitnachrichtphasendetektors und eines Variable-Verzögerung-Elements (das
nachstehend ausführlich
beschrieben werden soll) umfasst die Vorrichtung 200 bekannte
Digitalsignalverarbeitungselemente (DSP-Elemente, DSP = digital-signal-processing)
wie z.B. Zähler,
Addierer und Multiplizierer.
-
Der
Haupttaktzähler 201 liefert
in vordefinierten Intervallen über
eine Netzwerknachricht einen Haupttaktzählwert (oder eine Hauptzeit)
an einen Fehlerdetektorblock 202 in einem entfernten Knoten. Der
Fehlerdetektorblock 202 empfängt auch den Nebentaktzählwert von
einem Nebentaktzähler 212 und berechnet
die Differenz zwischen der Haupttaktzeit und der lokalen (oder Neben-)Taktzeit.
Diese Differenz stellt den Ganzzahlabschnitt des Nebenzeitfehlers
dar.
-
Zusätzlich zu
dem Ganzzahlfehler misst der Fehlerdetektorblock 202 auch
die relative Phase zwischen einer Flanke des lokalen Takts (ansteigend oder
abfallend) und einem vordefinierten Merkmal in der Ankunftshauptzeitnachricht
(z.B. eine ansteigende oder abfallende Flanke einer oder mehrerer
der Datenübergänge). Der
Fehlerdetektorblock 202 fügt diesen Partialabschnitt
des Fehlers anschließend
zu dem an früherer
Stelle beschriebenen Ganzzahlabschnitt hinzu. Der Partialzeitfehler
ist als Zeitfehler weniger als eine Haupttaktperiode definiert.
Vorteilhafterweise sehen die vorliegenden Lehren die Messung eines
Partialzeitfehlers vor, was nicht durch den Zeitprotokollstandard
der IEEE 1588 geliefert wird.
-
Die
Ganzzahl- und Partialfehlerwerte 203 werden an eine Servosteuerung 204 gesendet.
Die Servosteuerung 204 verwendet die ankommenden Ganzzahl-
und Partialfehlerinformationen, um den Inhalt eines Deltaverzögerungswertregisters 205 anzupassen.
Unter Verwendung von Servosteuerungsentwurfstechniken, die Fachleuten
auf dem Gebiet von Steuersystemen bekannt sind, können viele
Variationen der Servosteuerung 204 implementiert werden. Ungeachtet
des Servosteuerungsentwurfs ist es sinnvoll, dass die Servosteuerung 204 den
vorherigen Deltaverzögerungswert
beibehält,
falls der ankommende Fehler null ist. Besonders muss die Servosteuerung 204 einen
Integral-Term enthalten. Eine Proportional-Integral-Steuerung (PI-Steuerung)
oder eine Proportional-Integral-Differential-Steuerung (PID-Steuerung)
sind übliche
Steuerungen, die den Anforderungen gerecht würden.
-
Vorteilhafterweise
ist das Deltaverzögerungswertregister 205 dahin
gehend angepasst, die Deltaverzögerung
mit ausreichender Präzision
darzustellen, um nicht beträchtliche
Fehler auf Grund eines Digitalwortabschneidens hinzuzufügen. Nachdem
die Servoschleife verriegelt ist, spiegelt der Deltaverzögerungswert
den Frequenzfehler des lokalen Oszillators 207 im Vergleich
zu dem des Hauptoszillators 213 wider. Wenn beispielsweise
der Hauptoszillator eine Periode von 100 ns aufweist, während der
lokale Nebenoszillator eine Periode von 99 ns (wobei der Slave schnell
läuft)
aufweist, nähert
sich der Deltaverzögerungswert
an einen Wert von 99/100 der Haupttaktperiode (100 ns) oder 99 ns
an.
-
Der
Akkumulatorblock 206 fügt
den in dem Deltaverzögerungsregister 205 enthaltenen
Wert bei jeder ansteigenden Flanke des lokalen Takts, der durch
den lokalen Oszillator 207 getrieben wird, zu dem vorherigen
Wert des Akkumulators 206 hinzu. Die Ganzzahländerung 208 und
der Partialwert 209 des Akkumulatorregisters werden an
einen Variable-Verzögerung-Block 210 weitergeleitet.
Wenn diese Hinzufügung
zu einer Veränderung
des Ganzzahlabschnitts des Akkumulatorregisters führt, erzeugt
der Variable-Verzögerung-Block 210 eine
oder mehrere korrigierte Taktflanken. Die Ganzzahländerung 208 stellt
die Anzahl korrigierter Taktflanken dar, die durch den Variable-Verzögerung-Block 210 erzeugt
werden müssen.
Der Partialabschnitt 209 der Akkumulatorausgabe wird dazu
verwendet, die Verzögerung (oder
Phasenverschiebung) zwischen einer (ansteigenden oder abfallenden)
Flanke des lokalen Takts und der korrigierten Taktflanke 211 zu
steuern. Verfahren zum Implementieren eines Variable-Verzögerung-Blocks werden an
späterer
Stelle in dem vörliegenden
Dokument beschrieben.
-
Die
korrigierten Taktflanken 211 werden dazu verwendet, den
Nebentaktzähler 212 zu
treiben. Der Wert des Nebentaktzählers 212 ist
die tatsächliche
Nebenzeit, die jegliche lokalen Elemente, die eine Zeitkenntnis
erfordern, verwenden. Während die
Servoschleife arbeitet, wird die Nebenzeit dahin gehend getrieben,
im Wesentlichen mit der Haupttaktzeit übereinzustimmen. Der Hauptoszillator 213 und
der lokale Oszillator 207 werden mit ausreichender Stabilität ausgewählt; und
die Rundsenderate der Haupttaktzeit ist ausreichend, so dass die
Vorrichtung 200 als phasenverriegelte Schleife (statt einer frequenzverriegelten
Schleife) arbeitet. Somit verringert die Vorrichtung 200 den
Lokalzeitfehler auf einen Wert, der +/- die Auflösung des Fehlerblocks 202 beträgt. Vorteilhafterweise
liefern die veranschaulichenden Ausführungsbeispiele die Fähigkeit,
Partialzeitfehler zu messen, was es der Schleife ermöglicht,
rascher auf Zeitgebungsdrifts zu reagieren als ein unter IEEE 1588
arbeitendes bekanntes System, das keine Fehler registriert, bis
der Fehler einen Ganzzahlwert übersteigt.
Als solches liefern Systeme gemäß den vorliegenden
Lehren im Vergleich zu IEEE 1588 PTP eine verbesserte Genauigkeit.
-
Bekanntermaßen erfolgt
die Übertragung des
Haupttaktzeitwerts relativ selten (z.B. bei 2 Hz bei dem PTP des
IEEE1588-Standards). Dies wird oft als Korrekturzyklus bezeichnet.
Demgemäß wird auch
die Bestimmung des Fehlers zwischen den Takten ziemlich selten gemessen.
Vorteilhafterweise synchronisieren die Verfahren, Vorrichtungen
und Systeme der veranschaulichenden Ausführungsbeispiele auf vorteilhafte
Weise die Takte, und abgesehen von bestimmten ungewöhnlichen
Ereignissen erhalten sie zumindest die Synchronisation des Ganzzahlwertes
der Takte aufrecht. Wie erwähnt,
kann der Fehler bei einem Ausführungsbeispiel
auf (+/-) die Auflösung
des Partialzeitfehlerdetektors verringert werden. Wenn beispielsweise
der Fehlerblock 202 Zeitgebungsfehler von +/- 10 ns messen
kann und der Hauptoszillator 213 eine Periode von 100 ns
aufweist, so ermöglichen
das Verfahren und die Vorrichtung eines veranschaulichenden Ausführungsbeispiels
Fehler von +/- 10 ns im Vergleich zu +/- 100 ns für ein auf
IEEE 1588 beruhendes System. Nachdem die Synchronisierung erzielt
wurde, ist die Lokalzeit immer verfügbar und kann dazu verwendet
werden, lokale Auslöser
zu erzeugen oder lokale Ereignisse mit einem Zeitstempel zu versehen.
-
3A ist
ein vereinfachtes Zeitgebungsdiagramm, das eine Haupttaktzeit, eine
Nebentaktzeit und eine erforderliche Korrektur zur Synchronisierung
gemäß einem
veranschaulichenden Ausführungsbeispiel
zeigt. Bei dem vorliegenden Beispiel sind die Haupttaktzeit 301 und
die rohe oder unkorrigierte Nebentaktzeit 302 nicht synchronisiert.
Im Einzelnen läuft
der Nebentakt im Vergleich zum Haupttakt langsam. Bei diesem Beispiel
geht man davon aus, dass die Servoschleife ausreichend lange Zeit gelaufen
ist, damit sich der Deltaverzögerungswert annähert.
-
Bei
jeder ansteigenden Taktflanke des lokalen Nebenoszillators 207 wird
der Akkumulatorwert 303 um den Betrag des Deltaverzögerungswerts,
der durch den Fehlerdetektor 203 und die Servosteuerung 204 ermittelt
wird, erhöht.
Anfänglich
beträgt
der Akkumulatorwert 303 null. Bei jeder Nebentaktflanke inkrementiert
der Akkumulator 206 mit dem entsprechenden Deltaverzögerungswert.
Wenn der Ganzzahlwert des Ausgangs des Akkumulators 206 inkrementiert,
wird ein Inkrementsignal erzeugt, und der Variable-Verzögerung-Block
erzeugt eine oder mehrere korrigierte Ausgangstaktflanken. Bei diesem Beispiel
beträgt
der Deltaverzögerungswert
1,25 (Zeiteinheiten), was darauf hinweist, dass der Nebenoszillator 207 im
Vergleich zu dem Hauptoszillator 213 langsam läuft. Dies
schlägt
sich in einer erforderlichen Korrektur von –0,25 Zeiteinheiten für jede lokale
Taktperiode nieder, die durch den Variable-Verzögerung-Block erfordert werden
kann, wie beschrieben ist. Für
den Fall, dass die Korrektur angewendet wurde, würde der Fehler null betragen,
und der Prozess würde
fortgesetzt, bis in einem anschließenden Korrekturzyklus ein
Fehler ermittelt würde,
was dann den Deltaverzögerungswert 205 ändern würde.
-
Wenn
keine Korrektur erforderlich wäre,
würden
die Takte weiterhin zeitlich auseinander driften, was zu einem Fehler
bezüglich
des Zählwerts
oder des Ganzzahlwerts der Zeit und der Phase oder des Partialwerts
der Zeit führen
würde.
Als solches nimmt der Akkumulatorwert bei jeder Taktflanke um 1,25
zu, und die benötigte
Phasenkorrektur nimmt um –0,25 Zeiteinheiten
zu. Man betrachte eine Taktflanke 304. Zu diesem Zeitpunkt
registriert der Akkumulator 5,0 Zeiteinheiten, während sein vorheriger Wert
3,75 Zeiteinheiten betrug. In diesem Fall beträgt die Ganzzahländerung 208 des
Akkumulators 206 ausgehend von der vorherigen Nebentaktflanke
zwei Zeiteinheiten, so dass der Variable-Verzögerung-Block 210 ein Paar
von Taktpulsen ausgeben muss, um die Synchronisierung des Master-
und der Nebentakte aufrechtzuerhalten. Da der Partialteil des Akkumulatorausgangs
null beträgt,
wird keine zusätzliche
Phasenver schiebung benötigt,
und die erste korrigierte Taktflanke richtet sich mit der lokalen
Taktflanke aus, und die zweite wird eine Zeiteinheit nach der ersten erzeugt.
-
Bei
der Taktflanke 305 werden der Ganzzahlteil 208 und
der Partialteil 209 des Akkumulatorausgangs benötigt. Der
Ganzzahlteil 208 schiebt den Nebentakt vor, indem er für jede Ganzzahlerhöhung ausgehend
von dem vorherigen Akkumulatorwert einen Taktpuls liefert, und das
Partialbit korrigiert die Fehler, die geringer sind als eine Taktperiode,
indem es die Phase um –0,25
Zeiteinheiten verschiebt.
-
Aus
dem obigen Beispiel, bei dem der lokale (Neben-)Oszillator 207 bezüglich des
Hauptoszillators 213 langsam läuft, kann man erkennen, dass jede
ansteigende Flanke ausgehend von dem rohen Nebentakt einen oder
mehrere korrigierte Nebenpulse erzeugen muss.
-
3B ist
ein Zeitgebungsdiagramm, das dem der 3A ähnelt, mit
der Ausnahme, dass der Nebentakt im Vergleich zu dem Haupttakt schnell läuft. Wie
in dem vorherigen Fall wird eine korrigierte Nebenflanke erzeugt,
wenn der Akkumulatorganzzahlabschnitt 208 inkrementiert.
Beispielsweise beträgt
der Akkumulatorwert bei der Nebenflanke 306 1,5 Zeiteinheiten,
und der vorherige Wert betrug 0,75 Zeiteinheiten. Da sich der Ganzzahlabschnitt 208 um eins
geändert
hat, muss der Variable-Verzögerung-Block 210 eine
korrigierte Flanke erzeugen. Da der Partialabschnitt 0,5 Zeiteinheiten
beträgt,
kann der Nebentakt über
die Partialkorrektur von –0,50 Zeiteinheiten
korrigiert werden. Diese Korrektur erfolgt über die Partialverzögerung 209 der
variablen Verzögerung 210.
Jedoch inkrementiert die Akkumulatorganzzahl an der Taktflanke 307 von
2,25 Zeiteinheiten auf 3,00 Zeiteinheiten. In diesem Fall muss eine
korrigierte Flanke erzeugt werden, es ist jedoch keine Phasen- oder
Partialzeitkorrektur erforderlich. Als solches wird eine korrigierte
Nebenflanke dem Nebentaktzähler 212 ohne
jegliche Phasenänderung bezüglich des
lokalen Takts 207 bereit gestellt, um die Zählwerte
des Haupt- und der Nebentakte zu synchronisieren.
-
4 ist
ein vereinfachtes schematisches Diagramm einer Vorrichtung 400 gemäß einem
anderen veranschaulichenden Ausführungsbeispiel.
Die Vorrichtung 400 umfasst viele Merkmale, die sie mit der
zuvor beschriebenen Vorrichtung 200 gemein hat. Derartige
gemeinsame Merkmale werden nicht wiederholt, um ein Verschleiern
der Beschreibung des vorliegenden Ausführungsbeispiels zu vermeiden.
-
Die
Vorrichtung 400 umfasst einen zweiten Akkumulator 401,
um einen anderen Ausgangstakt mit einer programmierbaren Frequenz
zu erzeugen. Der derzeitige Wert des Deltaverzögerungswertregisters 205 wird
in einen Summierungsblock 402 eingegeben. Ein benutzerprogrammierbarer
Deltaverzögerungsversatzwert
von einem programmierbaren Deltaverzögerungsversatzregister 403 wird
dem Block 402 als zweiter Eingang geliefert. Der Block 402 summiert
die zwei Eingangswerte und liefert einen inkrementalen Abschnitt
und einen Partialabschnitt, um einen anderen Deltaverzögerungswert
zu erzeugen, um einen zweiten Variable-Verzögerung-Block 404 zu
treiben. Wie man erkennen wird, wird der Deltaverzögerungswert
aus dem Register 205 durch die Rückkopplungsschleife, die zwischen dem
Haupttaktzählwert 201 und
dem Nebentaktzähler 212 arbeitet,
angepasst. Bei einer funktionierenden Rückkopplung korrigiert der Deltaverzögerungswert
den Frequenz- und Phasenfehler ausgehend von dem lokalen Oszillator 207.
Der Deltaverzögerungswert
stellt das Zeitintervall zwischen Lokaloszillator-Taktpulsen, wie
sie durch den Haupttakt 201 gemessen werden, dar. Dadurch,
dass der Deltaverzögerungswert
versetzt wird und der zweite Akkumulator 401 und ein zweiter
Variable-Verzögerung-Block 404 verwendet
werden, kann eventuell eine willkürliche (und programmierbare)
Frequenz erzeugt werden. Diese Frequenz kann höher oder niedriger sein als
die Haupttaktfrequenz. Höhere
Frequenzausgaben erfordern, dass der Variable-Verzögerung- Takt in der Lage
ist, zwei oder mehr Taktpulse pro roher Nebentaktflanke zu erzeugen.
-
Die
zuvor beschriebenen Variable-Verzögerung-Blöcke 210, 404 können auf
verschiedene Weise in einer programmierbaren Logik implementiert sein.
Vorliegend werden zwei veranschaulichende Ausführungsbeispiele beschrieben.
Es wird betont, dass die vorliegenden Lehren für diese Funktion andere Schaltungen
in Betracht ziehen.
-
5 ist
ein vereinfachtes schematisches Diagramm einer Variable-Verzögerung-Schaltung 500 gemäß einem
veranschaulichenden Ausführungsbeispiel.
Die Schaltung 500 umfasst eine Serie von D-Flipflops 501–504,
die an einen 4:1-Multiplexer (MUX) 505,
wie gezeigt, ausgegeben werden. An einem Eingang 506 wird
der inkrementale Wert von dem Akkumulator 206 geliefert.
An dem anderen Eingang 507 wird ein höherfrequenter Takt geliefert,
der bei diesem Beispiel das Vierfache (4-fache) der Frequenz des
lokalen Oszillators 207 beträgt. Die Ausgaben aus jedem
der Flipflops 501–504 werden
an jeder Taktflanke des Hochgeschwindigkeits-Takteingangs 507 dem MUX 505 bereitgestellt.
Diese inkrementalen Werte werden mit einem Partialverzögerungswerteingang 508,
der durch den Akkumulator 206 bereitgestellt wird, multiplexiert.
Der MUX 505 gibt anschließend eine korrigierte Taktflanke 509 aus, um
den Nebenzähler 212 zu
inkrementieren. Bei dem Ausführungsbeispiel
der 2 ist die Ausgabe 509 dieselbe wie die
korrigierte Flanke 211.
-
Bei
dem vorliegenden Ausführungsbeispiel, das
vier (4) D-Flipflops
umfasst, weist der Takteingang 507 eine Frequenz auf, die
das Vierfache der Neben- und Hauptoszillatoren (z.B. Oszillatoren 207 bzw. 213)
beträgt.
Dies ermöglicht
ein Erzeugen einer korrigierten Flanke mit einem Fehler von weniger als
einem Viertel einer Nebentaktperiode. Eine Kette von getakteten
D-Flipflops wird verwendet, um die Lokaltaktoszillatorflanke auszubreiten,
wobei die Flanke bei jeder Flanke des Hochgeschwindigkeits-Takteingangs 507 ein Flipflop
weiterschaltet. Es wird betont, dass an dem Eingang 507 andere
Taktgeschwindigkeiten eingesetzt werden können, um die Leistungsfähigkeit
weiter zu verbessern.
-
6 ist
ein vereinfachtes schematisches Diagramm einer Variable-Taktverzögerung-Schaltung 600 gemäß einem
wieder anderen veranschaulichenden Ausführungsbeispiel. Das vorliegende Ausführungsbeispiel
umfasst eine Kette von Logikgattern 601–607, die dazu verwendet
werden, einen Verzögerungspfad
für ein
ankommendes Zeitgebungsmerkmal 608 zu erzeugen. Jedes Logikgatter 601–607 liefert
eine inkrementale Verzögerung.
Es muss eine ausreichende Anzahl von Logikgattern vorliegen, um
eine Gesamtverzögerung
zu erzeugen, die höher
ist als die Lokaltaktperiode. Wie bei dem vorherigen Beispiel wird
der MUX 609 dazu verwendet, einen Punkt entlang der Verzögerungskette
auszuwählen,
an dem der Puls zu dem Ausgang 612 geleitet wird, was die
korrigierte Taktflanke ist, die zum Inkrementieren des Nebenzählers (z.B.
des Zählers 212)
verwendet wird. Wie einleuchten wird, liefert dies ein Variable-Verzögerung-Element.
-
Das
vorliegende Ausführungsbeispiel
zeigt auch die Verwendung einer Nachschlagtabelle 611, die
einen Partialverzögerungswert 610 von
dem Akkumulator empfängt
und ein Abbilden von Partialzeitverzögerungswerten in die entsprechende
MUX-Einstellung
ermöglicht.
Die Hinzufügung
der Nachschlagtabelle 611 ermöglicht, dass das System kalibriert
wird, indem die durch jedes Logikgatter erzeugte tatsächliche
Verzögerung
gemessen wird und indem der beste MUX-Steuerwert für jeden
Partialverzögerungswert
abgebildet wird.
-
7 ist
ein Flussdiagramm eines Verfahrens zum Synchronisieren von Takten 700 in
einem Netzwerk gemäß einem
veranschaulichenden Ausführungsbeispiel.
Das Verfahren wird unter Verwendung von Komponenten implementiert,
die zuvor in Verbindung mit veranschaulichenden Ausführungsbeispielen
beschrieben wurden. Die Einzelheiten dieser Komponenten und deren
Funktion werden nicht wiederholt, um ein Verschleiern der Beschreibung des
vorliegenden Ausführungsbeispiels
zu vermeiden.
-
Bei
Schritt 701 werden eine Zählwertdifferenz und eine Partialverzögerung durch
den Fehlererfassungsblock 202 ermittelt, wenn der lokale
Knoten über
eine Netzwerknachricht den Hauptzeitwert empfängt. Die Zählwertdifferenz liefert den
Ganzzahlabschnitt, und die Partialverzögerung liefert den Partialabschnitt
des Fehlers 203. Bei Schritt 702 werden der Ganzzahl-
und der Partialabschnitt des Fehlers 203 durch die Servosteuerung 204 dazu
verwendet, den Deltaverzögerungswert 205 zu
berechnen. Wie zuvor ausführlich
beschrieben wurde, wird der Deltaverzögerungswert in das Register 205 aktualisiert,
und an jeder ansteigenden Flanke des lokalen Oszillators 207 fügt der Akkumulator
den aktuellen Registerwert zu dem aktuellen Akkumulatorwert hinzu.
-
Bei
Schritt 703, wenn sich der Ganzzahlabschnitt des Akkumulatorausgangs 208 von
seinem vorherigen Wert an der ansteigenden Taktflanke des lokalen
Oszillators verändert,
weist dies darauf hin, dass der Variable-Verzögerung-Block 210 dieselbe Anzahl
von korrigierten Taktpulsen wie der Wert der Veränderung in dem Ganzzahlabschnitt
des Akkumulatorausgangs erzeugen muss.
-
Bei
Schritt 704 werden die Taktflanken, die den Nebentaktzähler takten
werden, durch den Partialverzögerungswert 209 zeitlich
angepasst. Insbesondere wird die Partialverzögerung 209 dem Variable-Verzögerung-Block 210 bereitgestellt,
der wiederum eine oder mehrere korrigierte Taktflanken mit der gewünschten
zeitlichen Verzögerung
(oder Phasenverschiebung) ausgibt. Der Partialabschnitt verschiebt
die Nebentaktflanke, damit sie mit der Haupttaktflanke phasengleich
ist. Die Flankenausrichtung kann lediglich bis zu der Ebene der
Auflösung
des Variable-Verzögerung-Blocks 210 erreicht
werden.
-
Gemäß veranschaulichenden
Ausführungsbeispielen
sind eine Vorrichtung und ein Verfahren zum Synchronisieren von
Takten beschrieben. Die Vorrichtung und das Verfahren können in
einem Netzwerk, z.B. einem lokalen Netzwerk (LAN) verwendet werden.
Fachleute erkennen, dass viele Variationen, die im Einklang mit
den vorliegenden Lehren sind, möglich
sind und in dem Schutzumfang der angehängten Patentansprüche verbleiben.
Diese und andere Variationen würden
Fachleuten nach einer Prüfung
der Spezifikation, der Zeichnungen und Patentansprüche in dem
vorliegenden Dokument einleuchten. Die Erfindung soll deshalb nicht
eingeschränkt
sein, mit der Ausnahme dessen, dass sie innerhalb der Wesensart
und des Schutzumfangs der angehängten
Patentansprüche
liegt.