DE102013222369A1 - Ein Matrix-Phasendetektor - Google Patents

Ein Matrix-Phasendetektor Download PDF

Info

Publication number
DE102013222369A1
DE102013222369A1 DE102013222369.2A DE102013222369A DE102013222369A1 DE 102013222369 A1 DE102013222369 A1 DE 102013222369A1 DE 102013222369 A DE102013222369 A DE 102013222369A DE 102013222369 A1 DE102013222369 A1 DE 102013222369A1
Authority
DE
Germany
Prior art keywords
phase
clk
period
clock
clock signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE102013222369.2A
Other languages
English (en)
Other versions
DE102013222369B4 (de
DE102013222369A9 (de
Inventor
William J. Dally
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US13/681,929 external-priority patent/US8760204B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013222369A1 publication Critical patent/DE102013222369A1/de
Publication of DE102013222369A9 publication Critical patent/DE102013222369A9/de
Application granted granted Critical
Publication of DE102013222369B4 publication Critical patent/DE102013222369B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/10Distribution of clock signals, e.g. skew
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03LAUTOMATIC CONTROL, STARTING, SYNCHRONISATION OR STABILISATION OF GENERATORS OF ELECTRONIC OSCILLATIONS OR PULSES
    • H03L7/00Automatic control of frequency or phase; Synchronisation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • H03K2005/00013Delay, i.e. output pulse is delayed after input pulse and pulse length of output pulse is dependent on pulse length of input pulse
    • H03K2005/00078Fixed delay
    • H03K2005/00097Avoiding variations of delay using feedback, e.g. controlled by a PLL
    • H03K2005/00104Avoiding variations of delay using feedback, e.g. controlled by a PLL using a reference signal, e.g. a reference clock
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K5/00Manipulating of pulses not covered by one of the other main groups of this subclass
    • H03K2005/00013Delay, i.e. output pulse is delayed after input pulse and pulse length of output pulse is dependent on pulse length of input pulse
    • H03K2005/0015Layout of the delay element
    • H03K2005/00234Layout of the delay element using circuits having two logic levels
    • H03K2005/00241Layout of the delay element using circuits having two logic levels using shift registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

Ein Verfahren und ein System sind für Taktphasendetektion bereitgestellt. Ein erster Satz von verzögerten Versionen eines ersten Taktsignals wird erzeugt und ein zweiter Satz von verzögerten Versionen eines zweiten Taktsignals wird erzeugt. Der zweite Satz von verzögerten Versionen des zweiten Taktsignals wird unter Verwendung des ersten Satzes von verzögerten Versionen des ersten Taktsignals gesampelt, um ein Array von Taktsamples in einer Domain zu produzieren, die dem ersten Taktsignal entspricht. Zumindest eine Flankenindikation wird innerhalb des Arrays von Taktsamples lokalisiert.

Description

  • INANSPRUCHNAHME VON PRIORITÄT
  • Diese Anmeldung ist eine Continuation-In-Part der US-Anmeldung mit der Nummer 13/681,929 (Vertreter-Aktenzeichen NVIDP738), die am 20. November 2012 eingereicht wurde und deren Inhalte durch Bezugnahme hierin inkorporiert werden.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich auf Schaltkreise und spezifischer auf Taktphasendetektion.
  • HINTERGRUND
  • Viele digitale Systeme haben mehrere Taktdomains. Folglich müssen Signale synchronisiert werden, wenn sie sich von einer Taktdomain zu einer anderen bewegen, um Metastabilität und Synchronisationsfehler zu vermeiden. Falls die zwei Takte feste Frequenzen haben, ist das Phasenverhältnis zwischen den zwei Takten periodisch, an der Schwebungsfrequenz der zwei Takte. Durch Nutzen des Vorteils dieses periodischen Phasenverhältnisses kann ein periodischer Synchronisator einfacher sein, geringere Latenz und eine geringere Wahrscheinlichkeit des Ausfalls haben als ein Synchronisator, der kreuzende Taktdomains handhaben muss, wobei zumindest ein der Takte bei einer variablen Frequenz arbeitet.
  • Wenn zumindest ein der Takte bei einer variablen Frequenz arbeitet, ist das Entwerfen des Synchronisators komplizierter. Typisch werden Signale, die zwischen Taktdomains passieren, mit einem periodischen Takt unter Verwendung von asynchronen Zuerst-Hinein-Zuerst-Hinaus-Schaltungen (FIFOs) synchronisiert. Ein wesentlicher Flächenaufwand tritt für den FIFO-Speicher auf. Die FIFOs fügen auch mehrere Zyklen von Verzögerung hinzu, da die Gray-codierten Eingangs- und Ausgangszeiger des FIFO durch mehrere Flip-Flops synchronisiert werden müssen, um die Signale querüber Taktdomains zuverlässig zu übermitteln.
  • Es besteht folglich ein Bedürfnis, sich mit diesen und/oder anderen mit dem Stand der Technik assoziierten Problemen zu befassen.
  • ZUSAMMENFASSUNG
  • Ein Verfahren und ein System werden für Taktphasendetektion bereitgestellt. Ein erster Satz von verzögerten Versionen eines ersten Taktsignals wird erzeugt und ein zweiter Satz von verzögerten Versionen eines zweiten Taktsignals wird erzeugt. Der zweite Satz von verzögerten Versionen des zweiten Taktsignals wird unter Verwendung des ersten Satzes von verzögerten Versionen des ersten Taktsignals gesampelt, um ein Array von Taktsamples in einer Domain zu produzieren, die dem ersten Taktsignal entspricht. Zumindest eine Flankenindikation wird innerhalb des Arrays von Taktsamples lokalisiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die 1A stellt ein Flussdiagramm von einem Verfahren zur Lokalisierung einer Flankenindikation innerhalb einer Sequenz von Taktsignalsamples dar, gemäß einer Ausführungsform.
  • Die 1B stellt ein Flussdiagramm von einem Verfahren zur Verwendung der Flankenindikation zum Detektieren einer Phase dar, gemäß einer Ausführungsform.
  • Die 2A stellt einen Phasendetektor mit hoher Auflösung dar, gemäß einer Ausführungsform.
  • Die 2B stellt eine Taktverzögerungseinheit von 2A dar, gemäß einer Ausführungsform.
  • Die 2C stellt eine Taktsampleeinheit von 2A dar, gemäß einer Ausführungsform.
  • Die 2D stellt eine Flankendetektionseinheit von 2A dar, gemäß einer Ausführungsform.
  • Die 2E stellt eine Phaseneinheit von 2A dar, gemäß einer Ausführungsform.
  • Die 2F stellt eine Periodeneinheit von 2A dar, gemäß einer Ausführungsform.
  • Die 2G stellt Wellenformen von zwei Taktsignalen dar, gemäß einer Ausführungsform.
  • Die 2H stellt andere Wellenformen von zwei Taktsignalen dar, gemäß einer Ausführungsform.
  • Die 2I stellt ein Flussdiagramm von einem Verfahren zur Bestimmung einer Phase und einer Periode dar, gemäß einer Ausführungsform.
  • Die 3A stellt einen weiteren Phasendetektor mit hoher Auflösung dar, gemäß einer Ausführungsform.
  • Die 3B stellt eine open-loop Taktverzögerungseinheit von 3A dar, gemäß einer Ausführungsform.
  • Die 3C stellt eine Taktsampleeinheit von 3A dar, gemäß einer Ausführungsform.
  • Die 3D stellt eine Periodenberechnungseinheit von 3A dar, gemäß einer Ausführungsform.
  • Die 3E stellt eine Phaseneinheit von 3A dar, gemäß einer Ausführungsform.
  • Die 3F stellt eine Periodeneinheit von 3A dar, gemäß einer Ausführungsform.
  • Die 3G stellt ein weiteres Flussdiagram von einem Verfahren zur Bestimmung einer Phase und einer Periode dar, gemäß einer Ausführungsform.
  • Die 4A stellt ein Flussdiagramm von einem weiteren Verfahren zur Lokalisierung einer Flankenindikation innerhalb einer Sequenz von Taktsignalsamples dar, gemäß einer Ausführungsform.
  • Die 4B stellt ein Flussdiagramm von einem Verfahren zur Verwendung der Flankenindikation zum Detektieren einer Phase und einer Periode dar, gemäß einer Ausführungsform.
  • Die 4C stellt einen Matrix-Phasendetektor mit hoher Auflösung dar, gemäß einer Ausführungsform.
  • Die 4D stellt eine Taktsamplearrayerzeugungseinheit von 4C dar, gemäß einer Ausführungsform.
  • Die 4E stellt eine Flankendetektionseinheit von 4C dar, gemäß einer Ausführungsform.
  • Die 4F stellt eine Phaseneinheit von 4C dar, gemäß einer Ausführungsform.
  • Die 4G stellt eine Periodeneinheit von 4C dar, gemäß einer Ausführungsform.
  • Die 4H stellt ein weiteres Flussdiagramm von einem Verfahren zur Bestimmung einer Phase und einer Periode dar, gemäß einer Ausführungsform.
  • Die 5A stellt einen weiteren Matrix-Phasendetektor dar, gemäß einer Ausführungsform.
  • Die 5B stellt eine Flankendetektionseinheit von 5A dar, gemäß einer Ausführungsform.
  • Die 5C stellt eine Phaseneinheit von 5A dar, gemäß einer Ausführungsform.
  • Die 5D stellt eine Periodeneinheit von 5A dar, gemäß einer Ausführungsform.
  • Die 5E stellt ein weiteres Flussdiagramm von einem Verfahren zur Bestimmung einer Phase und einer Periode dar, gemäß einer Ausführungsform.
  • Die 6A stellt einen beispielhaften integrierten Schaltkreis dar, in welchem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorhergehenden Ausführungsformen implementiert werden mögen.
  • Die 6B stellt ein Flussdiagramm von einem Verfahren zur Synchronisierung von Signalen dar, gemäß einer Ausführungsform.
  • Die 6C stellt Wellenformen von zwei Taktsignalen dar, gemäß einer Ausführungsform.
  • Die 6D stellt andere Wellenformen von zwei Taktsignalen dar, gemäß einer Ausführungsform.
  • Die 7A stellt einen variationstoleranten periodischen Synchronisator dar, gemäß einer Ausführungsform.
  • Die 7B stellt die Registrierte-Signale-Einheit von 7A dar, gemäß einer Ausführungsform.
  • Die 7C stellt ein weiteres Flussdiagramm von einem Verfahren zur Synchronisierung von Signalen dar, gemäß einer Ausführungsform.
  • Die 8A stellt Wellenformen von zwei Taktsignalen und eine Reihe von extrapolierten Phasenintervallen dar, gemäß einer Ausführungsform.
  • Die 8B stellt ein Flussdiagramm von einem Verfahren zur spekulativen Synchronisierung von Signalen dar, gemäß einer Ausführungsform.
  • Die 8C stellt Wellenformen von zwei Taktsignalen und eine spekulative Reihe von extrapolierten Phasenintervallen dar, gemäß einer Ausführungsform.
  • Die 8D stellt einen spekulativen periodischen Synchronisator dar, gemäß einer Ausführungsform.
  • Die 8E stellt ein weiteres Flussdiagramm von einem Verfahren zur spekulativen Synchronisierung von Signalen dar, gemäß einer Ausführungsform.
  • Die 9A stellt einen weiteren spekulativen periodischen Synchronisator dar, gemäß einer Ausführungsform.
  • Die 9B stellt ein weiteres Flussdiagramm von einem Verfahren zur spekulativen Synchronisierung von Signalen dar, gemäß einer Ausführungsform.
  • Die 9C stellt einen weiteren spekulativen periodischen Synchronisator dar, gemäß einer Ausführungsform.
  • Die 9D stellt ein weiteres Flussdiagramm von einem Verfahren zur spekulativen Synchronisierung von Signalen dar, gemäß einer Ausführungsform.
  • Die 10 stellt ein beispielhaftes System dar, in welchem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorhergehenden Ausführungsformen implementiert werden mögen.
  • DETAILLIERTE BESCHREIBUNG
  • Prozessoren, die in Smartphones, Tablets, Laptops und anderen mobilen Geräten verwendet werden, reduzieren gelegentlich die Versorgungsspannung, die für einen oder mehrere integrierten Schaltkreisvorrichtungen bereitgestellt wird, um den Energieverbrauch zu reduzieren und um die Zeit zwischen Aufladungen einer Batterie zu verlängern. Die integrierten Schaltkreisvorrichtungen mögen auch die Levels der Versorgungsspannung an verschiedene Schaltkreise innerhalb der Vorrichtung basierend auf verschiedenen Betriebsmodi variieren. Versorgungsspannungen mögen sich auch verändern aufgrund von Transienten in dem Versorgungsstrom, der von einem Bauteil gezogen wird. Während ein Level der Versorgungsspannung reduziert ist, mögen jegliche Taktsignale, die von dem jeweiligen Level der Versorgungsspannung abhängig sind, bei einer niedrigeren Frequenz arbeiten. Wenn der Level der Versorgungsspannung ansteigt, steigt die Frequenz des Taktsignals auch an. Da die Taktfrequenzen als eine Funktion von den Levels der Versorgungsspannung variieren mögen, kann nicht auf konventionellen Synchronisierungstechniken, die sich auf ein festes Verhältnis zwischen verschiedenen Taktdomains verlassen, gesetzt werden, um Signale zwischen Taktdomains zu übertragen, wenn zumindest einer der Takte eine variable Frequenz hat.
  • Auch wenn Taktfrequenzen als Reaktion auf variierende Levels der Versorgungsspannung variieren mögen, mögen die hierin beschriebenen Techniken auch in Situationen eingesetzt werden, für welche die Taktfrequenzen aus anderen Gründen variieren. Die Taktfrequenzen mögen zum Beispiel mit variierenden Temperaturen variieren oder Sie mögen als Folge von Programmierung variieren.
  • Was der vorliegenden Beschreibung anbelangt ist eine erste Taktdomain eine Taktdomain von einer jeden Art von System, aus welchem ein Signal gesampelt werden mag. Die erste Taktdomain könnte zum Beispiel eine Taktdomain von einer zentralen Verarbeitungseinheit (CPU), einer Grafikverarbeitungseinheit (GPU), einer Speichersteuerung und/oder eines jeden anderen Systems mit einer Taktdomain. Die erste Taktdomain mag ein erstes Taktsignal aufweisen, das eine bestimmte Frequenz hat oder eine Frequenz hat, die variieren mag. Eine zweite Taktdomain mag ein zweites Taktsignal aufweisen, das eine bestimmte Frequenz hat oder eine Frequenz hat, die variieren mag. Signale, die von der zweiten Domain an die erste Domain übertragen werden, werden zu der ersten Taktdomain synchronisiert.
  • Statt einen konventionellen Synchronisator bzw. Synchronisierer zu verwenden, der Signale zwischen Taktdomains unter Verwendung asynchroner Zuerst-Hinein-Zuerst-Hinaus Puffer (FIFOs) weitergeben, mag ein Synchronisierer mit niedriger Latenz entworfen werden, der die relative Phase zwischen den Taktdomains verwendet. Angenommen, dass das erste Taktsignal sich in einer empfangenden Taktdomain befindet und das zweite Taktsignal sich in einer sendenden Taktdomain befindet, wird die relative Phase verwendet zum Bestimmen, wann Signale in der sendenden Taktdomain in der empfangenden Taktdomain gesampelt werden mögen. Ein Phasendetektor mit hoher Auflösung, welcher hierin weiter beschrieben wird, mag konfiguriert sein zum Verfolgen von Frequenztransienten und zum Erzeugen der relativen Phase und Periode zwischen den zwei Taktdomains, wenn das eine oder beide Taktsignale variierende Frequenzen haben. Der Phasendetektor mit hoher Auflösung verwendet das erste Taktsignal, das der lokale oder empfangende Takt (clkr) ist, und akzeptiert das zweite Taktsignal von der sendenden Taktdomain (clkt). Der Phasendetektor mit hoher Auflösung gibt zwei Signale aus, die folgendes enkodieren: einen Phasenwert (Phase) und einen Periodenwert (Periode). Der Wert von Phase repräsentiert die Zeit, in c/kr-Einheitsintervallen (UI), von dem letzten Übergang auf clkt bis zu dem letzten Übergang auf clkr. Der Wert von Periode repräsentiert die Zeit, in clkr-UI, zwischen den zwei letzten Übergängen auf clkt.
  • Die 1A illustriert ein Flussdiagramm von einem Verfahren 100 zur Lokalisierung einer Flankenindikation innerhalb einer Sequenz von Taktsignalsamples, gemäß einer Ausführungsform. Bei Schritt 105 wird ein Satz von verzögerten Versionen des ersten Taktsignals erzeugt. Jede verzögerte Version des ersten Taktsignals ist eine unterschiedliche Phase des ersten Taktsignals. Bei Schritt 110 wird das zweite Taktsignal unter Verwendung des Satzes von verzögerten Versionen des ersten Taktsignals gesampelt, um eine Sequenz von Samples in der ersten Taktdomain zu erzeugen. Dann, bei Schritt 115, wird zumindest eine Flankenindikation innerhalb der Sequenz von Samples lokalisiert. Die Flankenindikation ist ein ansteigender oder abfallender Übergang eines Samples der Sequenz von Samples. Die zumindest eine Flankenindikation mag zum Berechnen des Phasenwertes und des Periodenwertes verwendet werden.
  • Die 1B illustriert ein Flussdiagramm von einem Verfahren 130 zur Verwendung der Flankenindikation zum Detektieren einer Phase, gemäß einer Ausführungsform. Die Schritte 105, 110 und 115 werden durchgeführt, um zumindest eine Flankenindikation bereitzustellen. Bei Schritt 120 wird die neueste Flankenindikation verarbeitet, um einen Phasenwert zu berechnen, der eine Phase des zweiten Taktsignals relativ zu dem ersten Taktsignal repräsentiert. Bei Schritt 125 werden die zwei neuesten Flankenindikationen verarbeitet, um einen Periodenwert zu berechnen, der eine relative Periode zwischen dem zweiten Taktsignal und dem ersten Taktsignal repräsentiert.
  • Die 2A illustriert einen Phasendetektor 200 mit hoher Auflösung, gemäß einer Ausführungsform. Der Phasendetektor 200 mit hoher Auflösung weist eine Taktverzögerungseinheit 210, eine Taktsampleeinheit 220, eine Flankendetektionseinheit 230, eine Phaseneinheit 240 und eine Periodeneinheit 250 auf. Der Phasendetektor 200 mit hoher Auflösung erhält ein erstes Taktsignal, Clk 201, und ein zweites Taktsignal, Clk 202, und erzeugt zwei Werte, eine Phase 203 und eine Periode 204. Die Werte der Phase 203 und Periode 204 werden jeweils mit Multi-Bit-Signalen enkodiert. Der Wert der Phase 203 repräsentiert eine Phase des zweiten Takts relativ zu dem ersten Takt. Der Wert der Periode 204 repräsentiert eine relative Periode zwischen dem zweiten Takt und dem ersten Takt. Zumindest einer von dem ersten Takt und dem zweiten Takt mag über Zeit variieren. Der Phasendetektor 200 mit hoher Auflösung ist dafür konzipiert, die Phase und Periode kontinuierlich zu messen, während die Frequenz des ersten Taktes und/oder des zweiten Taktes variiert.
  • Die 2B illustriert die Taktverzögerungseinheit 210 von 2A, gemäß einer Ausführungsform. Eine Reihe von N Verzögerungselementen 211 erzeugen N unterschiedliche gleichmäßig beabstandete Taktphasen, verzögerte Versionen des Clk 201, spezifisch Clk_d0, Clk_d1, Clk_d2, Clk_d3, ... Clk_dN. Ein Phasenkomparator 215 konfiguriert die Verzögerung, mit welcher die Verzögerungselemente 211 die jeweilige Eingabesignale (Clk 201 und verzögerte Versionen von Clk 201) verzögern, um sicherzustellen, dass die Taktphasen sich über eine Periode des Clk 201 erstrecken, das heißt so dass Clk 201 = Clk_d0 die gleiche Phase wie Clk_dN hat. Da der Phasenkomparator 215 die Verzögerung steuert, die von den Verzögerungselementen 211 eingeführt wird, ist die Taktverzögerungseinheit 210 ein closed-loop Verzögerungsschaltkreis. Die Auflösung des Phasendetektors 200 mit hoher Auflösung mag erhöht werden durch Erhöhen der Anzahl von verzögerten Versionen von Clk 201, die von der Takterzeugungseinheit 210 erzeugt werden. In einer alternativen Ausführungsform mag der Phasenkomparator 215 ausgelassen sein und die Taktverzögerungsreihe mag in einer open-loop-mäßigen Art und Weise betrieben werden.
  • Die 2C illustriert die Taktsampleeinheit 220 von 2A, gemäß einer Ausführungsform. Die Taktsampleeinheit 220 weist eine Mehrzahl von Flip-Flops 222 und eine entsprechende Mehrzahl von Synchronisierern 224 auf. Die Taktsampleeinheit 220 erhält die von der Takterzeugungseinheit 210 erzeugten verzögerten Versionen von Clk 201 und erzeugt eine Sequenz von Samples von dem zweiten Taktsignal, Clk 202, in der Domain von Clk 201. Jede verzögerte Version vom Clk 201, Clk_d0, Clk_d1, ... Clk_dN wird zum Sampeln des Clk 202 verwendet, wobei die Sequenz von Samples 225 an den Ausgängen der Flip-Flops 222 produziert wird. Die Samples 225 werden dann erneut getimt (engl. „retimed”) (um die Samples 225 mit Clk 201 auszurichten) und synchronisiert (weil der Clk 202 ein asynchrones Signal ist) von den Synchronisierern 224, um die Sequenz von Samples von Clk 202, Clk_s0, Clk_s1, Clk_s2, Clk_s3, ... Clk_sN zu produzieren. Die Synchronisierer 224 weisen typisch einen oder mehrere Flip-Flops auf, eine Menge, die groß genug ist, um eine niedrige Wahrscheinlichkeit von Synchronisationsverfehlen zu erreichen. Zum Beispiel ergeben 4 oder 5 Flip-Flops in Reihe eine Wahrscheinlichkeit des Verfehlens von weniger als 10–40 Die 2D illustriert die Flankendetektionseinheit 230 von 2A, gemäß einer Ausführungsform. Die Flankendetektionseinheit 230 weist ein Array von UND-Gattern 231, eine Flankenidentifikationseinheit 232 und eine Mehrzahl von Encodern 234 auf. Die Flankendetektionseinheit 230 erhält die von der Taktsampleeinheit 220 produzierte Sequenz von Samples Clk_s0, Clk_s1, ... Clk_sN. Die Sequenz von Samples Clk_s0, Clk_s1, ... Clk_sN wird zu einem Array von UND-Gattern 231 eingegeben, um Flankenindikationen zu lokalisieren, zum Beispiel ansteigende Übergänge innerhalb der Sequenz von Samples. Mit anderen Worten detektiert das Array von UND-Gattern 231 ansteigende Flanken des zweiten Taktsignals Clk 202, das von dem ersten Taktsignal Clk 201 gesampelt worden ist. In einer Ausführungsform mag die Flankendetektionseinheit 230 zum Lokalisieren von Flankenindikationen konfiguriert sein, die abfallende oder sowohl abfallende als auch ansteigende Übergänge sind.
  • Ein oder mehrere Bits der Übergangssignale 233, ti = Clk_si & ~Clk_si-1 sind wahr, wenn eine ansteigende Flanke des Clk 202 zwischen verzögerten Versionen des Clk 201 aufgetreten ist, Clk_di-1 und Clk_di, wobei i sich von 0 bis N erstreckt. Wenn zum Beispiel eine ansteigende Flanke des Clk 202 zwischen Clk_d3 und Clk_d4 auftritt und eine abfallende Flanke des Clk 202 zwischen Clk_d7 und Clk_d8 auftritt, dann sind die Clk_si-Signale 000011110 und die Übergangssignale 233 enkodieren den Wert 000010000 für i von 0 bis N = 8. Die Übergangssignale 233, ti, werden zu einer Flankenidentifikationseinheit 232 eingegeben, die (beginnend von tN) das erste Bit, das wahr ist, und das zweite Bit, das wahr ist, in der Sequenz von Übergangssignalen findet – wenn irgendeines der Bits wahr ist. Eine One-Hot-Enkodierung des ersten Bits, das wahr ist, und des zweiten Bits, das wahr ist, wird auf den Signalen First_oh und Second_oh ausgegeben, welche dann durch die Encoder 234 in die m = log2(N)-Bit binäre Signale First 235 und Second 237 enkodiert werden. Die Übergangssignale 233 und/oder die Signale First_oh und Second_oh mögen als Flankenindikationen erachtet werden. Die Werte von First 235 und Second 237 werden als Signale enkodiert und geben die Positionen der Flankenindikationen als eine Anzahl von Bitpositionen von tN an, wo die erste und zweite Übergänge jeweils aufgetreten sind. Wenn zum Beispiel die Übergangssignale 233 den Wert 000100010 enkodieren, sind die Werte von First_oh und Second_oh jeweils 000000010 und 000100000. In diesem Falle sind die Werte von First 235 und Second 237 jeweils 1/8 und 5/8. Da es in diesem Beispiel acht Bitpositionen gibt, gibt eine in Position i detektierte Flanke eine Flanke an, die i/8 eines Zyklus vor der neusten Flanke des Clk 201 aufgetreten ist. Signale enkodieren die Werte First_v 236 und Second_v 238, die auch von den Encodern 234 produziert werden, um anzugeben, ob jeweils ein erster und zweiter Übergang gefunden wurden.
  • Die 2E illustriert die Phaseneinheit 240 von 2A, gemäß einer Ausführungsform. Die Phaseneinheit 240 erhält die Werte von First 235 und First_v 236 von der Flankendetektionseinheit 230 und erzeugt den Wert der Phase 203. Die Phaseneinheit 240 weist ein Phasenregister 244, einen Inkrementierer 242 und einen Multiplexer 246 auf. Falls ein Übergang detektiert wird, zum Beispiel First_v 236 aktiviert (engl. „asserted”) ist (wahr ist) und First 235 gleich dem Wert der Phase ist. First 235 ist ein Maß (in Einheiten von Zeit) von der ansteigenden Flanke des Clk 201 bis zu dem neuesten Übergang des Clk 202. Wenn First_v aktiviert ist, wählt der Multiplexer 246 den Wert First 235 als die Ausgabe, nächste Phase. Falls kein Übergang detektiert wird, First_v 236 ist zum Beispiel nicht aktiviert und der Multiplexer 246 wählt die inkrementierte Phase 245 als die nächste Phase aus. Der Wert der inkrementierten Phase 245 wird von dem Inkrementierer 242 berechnet als die Phase 203 inkrementiert mit ONE. Die Konstante ONE repräsentiert eine Periode des Clk 201. In dem vorhergehenden Beispiel – in welchem der Wert Phase 203 in Achteln einer UI repräsentiert ist, hat die Konstante ONE den binären Wert 01000 – repräsentierend 8/8.
  • Der Wert von Next_Phase (nächste Phase) wird zu dem Phasenregister 244 eingegeben, das das Signal Phase 203 ausgibt. Der folgende Verilog mag übersetzt werden, um zumindest einen Teil der Logik zu erzeugen, die in der Phaseneinheit 240 gezeigt ist, insbesondere um eine Eingabe (Next_Phase) für das Phasenregister 244 bereitzustellen: assign next_phase = first_v ? first : phase + 'ONE;
  • Die 2F illustriert die Periodeneinheit 250 von 2A, gemäß einer Ausführungsform. Die Periodeneinheit 250 weist ein Periodenregister 254, einen Subtrahierer 252 und zwei Multiplexer 256 und 258 auf. Die Periodeneinheit 250 erhält First 235, First_v 236, Second 237 und Second_v 238 von der Flankendetektionseinheit 230 und die inkrementierte Phase 245 von der Phaseneinheit 240 und erzeugt das Ausgangssignal Periode 204. Falls kein Übergang detektiert wird, zum Beispiel sind weder First_v 236 noch Second_v 238 aktiviert, wird Next_Period (nächste Periode) (und Periode 204) nicht geändert. Anderenfalls, wenn zwei Übergänge detektiert werden, zum Beispiel sind sowohl First_v 236 als auch Second_v 238 aktiviert, wird Next_Period berechnet durch Subtrahieren First 235 von der Phase des vorhergehenden Übergangs, Second 237. Falls nur ein Übergang detektiert wird, zum Beispiel ist First_v 236 aktiviert, wird Next_Period berechnet durch Subtrahieren First 235 von der Phase des vorhergehenden Übergangs, die inkrementierte Phase 245. Mit anderen Worten wird die gegenwärtige Phase, First 235, von der Phase des letzten Übergangs subtrahiert – entweder Second 237, wenn ein zweiter Übergang in der gleichen Periode des Clk 201 detektiert ist, oder anderenfalls die inkrementierte Phase 245.
  • Wenn ein zweiter Übergang detektiert wird, wird ein erster Übergang auch detektiert. Wenn Second_v 238 aktiviert ist, wählt der Multiplexer 256 den Wert Second 237 als die Eingabe zu dem Subtrahierer 252 aus. Wenn kein zweiter Übergang detektiert wird, wählt der Multiplexer 256 die inkrementierte Phase 245 als die Eingabe zu dem Subtrahierer 252 aus. Der Subtrahierer subtrahiert den Wert First 235 von der Eingabe, um eine Ausgabe zu erzeugen. Wenn ein erster Übergang detektiert wird, wählt der Multiplexer 258 die Ausgabe des Subtrahierers 252 als die nächste Periode aus.
  • Anderenfalls wählt der multiplexer 258 die Ausgabe von dem Periodenregister 254 als die nächste Periode aus und der Wert Periode 204 ist unverändert.
  • Der folgende Verilog mag übersetzt werden, um zumindest einen Teil der Logik zu erzeugen, die in der Periodeneinheit 250 gezeigt ist, insbesondere um eine Eingabe (Next_Period) für das Periodenregister 254 bereitzustellen:
    Figure DE102013222369A1_0002
  • Der Wert Next_Period wird zu dem Periodenregister 254 eingegeben, welches das Signal Period 204 ausgibt.
  • In einer Ausführungsform, wenn Clk 201 1 GHz ist und die Verzögerungselemente 211 über Prozess-Spannung-Temperatur-Variationen (PVT) auf 62,5 ns getrimmt werden können, N = 16 und m = 4 und die Konstante ONE ist gleich 010000. Wenn der Wert von N eine Zweierpotenz ist, werden die von der Flankendetektionseinheit 230 durchgeführten Berechnungen simplifiziert. Die Phase 203 und Periode 204 sind in einer Festkommanotation mit m Bits rechts des binären Kommas repräsentiert. Das Phasenregister 244 und Periodenregister 254 müssen eine ausreichende Anzahl von Bits enthalten, um die größtmögliche Periode von Clk 202 enkodieren zu können. Wenn zum Beispiel der langsamst mögliche Clk 202 eine Periode hat, die fünfmal so lang ist wie die Periode des Clk 201, dann werden drei Bits links des binären Kommas benötigt.
  • Aufgrund der zum Re-Timing und zur Synchronisierung benötigte Verzögerung geben die Werte von Phase 203 und Periode 204 die Phase und Periode des Clk 201 eine feste Anzahl von Zyklen des Clk 201 in der Vergangenheit wieder. Wenn zum Beispiel die Synchronisierer 224 eine Verzögerung von vier Zyklen haben und eine Re-Timing-Verzögerung von einem Zyklus von den Flip-Flops 222 eingeführt wird, repräsentieren die Werte Phase 203 und Period 204 den Zustand des Clk 202 fünf Zyklen des Clk 201 zurück in die Vergangenheit. Ein schnelles Synchronisierer-Design, das die Periode 204 (und eventuell Ableitungen der Periode 204) verwendet, um die Phase des Clk 202 auf dem nächsten Zyklus von Clk 201 vorherzusagen, sagt sechs Zyklen des Clk 201 vorher.
  • Die 2G illustriert Wellenformen von zwei Taktsignalen, Clk 201 und Clk 202, gemäß einer Ausführungsform. Die Frequenz des zweiten Taktes, Clk 202, ist schneller als die Frequenz des ersten Taktes, Clk 201. Signale werden aus einer zweiten Taktdomain, die dem Takt Clk 202 entspricht, zu einer ersten Taktdomain übertragen, die dem Takt Clk 201 entspricht. Die Periode 262 des Clk 202 ist, wie gezeigt, kürzer als die Periode 261 des Clk 201. Folglich sollte von der Flankendetektionseinheit 230 zumindest ein Flankenindikation für den Clk 202 innerhalb jeder Taktperiode 261 detektiert werden. Wie gezeigt, treten zwei Flanken des Clk 202 innerhalb der Periode 261 auf. An der neusten Flanke 265 des Taktes 201 wird der Wert First 235 entsprechend einer ersten Flankenindikation innerhalb der Periode 261 von der Flankendetektionseinheit 230 berechnet. An der neusten Flanke 265 des Taktes 201 wird auch der Wert Second 237 entsprechend einer zweiten Flankenindikation innerhalb der Periode 261 von der Flankendetektionseinheit 230 berechnet.
  • In einer Ausführungsform ist die Flankendetektionseinheit 230 konfiguriert zum Berechnen eines dritten Wertes, der einer dritten Flankenindikation entspricht. Der dritte Wert mag verwendet werden, um eine Steigung der relativen Periode zu berechnen, wenn zumindest ein von Clk 201 und Clk 202 sich sanft verändert. Die Steigung mag von einer Synkronisierungseinheit verwendet werden, um einen präziseren Wert der zukünftigen Phase und der zukünftigen Periode vorherzusagen. Das Vorhersagen der Werte von Phase 203 und Periode 204 um einen oder mehrere Takte im Voraus ist nützlich, da die gegenwärtige Phase 203 und Periode 204 wegen der Latenz des Phasendetektors 200 mit hoher Auflösung für mehrere Taktzyklen des Clk 201 zurück in der Vergangenheit gültig sind.
  • Die 2H illustriert ein weiteres Beispiel von Wellenformen der zwei Taktsignale, Clk 201 und Clk 202, gemäß einer Ausführungsform. Die Frequenz des sendenden Taktes, Clk 202, ist langsamer als die Frequenz des empfangenden Taktes, Clk 201. Die Periode 272 des Clk 202 ist, wie gezeigt, länger als die Periode 271 des Clk 201. Während einiger Perioden des Clk 201 mag eine Flankenindikation für den Takt 202 folglich nicht von der Flankendetektionseinheit 230 detektiert werden.
  • An einer ältesten Flanke 273 wird der Wert First 235, der einer ersten Flankenindikation am Anfang der Periode 272 entspricht, von der Flankendetektionseinheit lokalisiert, und der Wert First 235-B wird von der Flankendetektionseinheit 230 berechnet. Nehme an, dass der Wert First 235-B in diesem Beispiel gleich 7 Einheiten von der Verzögerung 211 ist. Folglich wird die nächste Phase von der Phaseneinheit 240 auf 7 gesetzt und die nächste Periode wird als die Differenz zwischen Phase 203, die mit N = 16 summiert wird, und First 235 berechnet. Die Phase 203 und Periode 204 werden an der Taktflanke 274 aktualisiert. An einer nächsten Flanke 274 wird keine Flankenindikation von der Flankendetektionseinheit 230 detektiert und die nächste Phase wird von der Phaseneinheit 240 aktualisiert als die Phase 203, die mit N = 16 erhöht wird, so dass die Phase 203 auf 7 + 16 = 23 aktualisiert wird. Die Periode 204 wird nicht geändert.
  • An einer neusten Flanke 275 wird der Wert First 235-A, der einer anderen ersten Flankenindikation am Ende der Periode 272 entspricht, von der Flankendetektionseinheit 230 lokalisiert und der Wert First 235-A wird von der Flankendetektionseinheit 230 berechnet. Nehme in diesem Beispiel an, dass dieser zusätzlicher Wert First 235-A gleich 6 Einheiten von der Verzögerung 211 ist. Folglich wird die nächste Phase von der Phaseneinheit 240 auf 6 gesetzt und die nächste Periode wird als die Differenz zwischen Phase 203, die mit N = 16 summiert wird, und First 235-A berechnet, das heißt 23 + 16 – 6 = 33. Die Phase 203 und Periode 204 werden an der Taktflanke 275 aktualisiert.
  • Die 21 illustriert ein Flussdiagramm von einem Verfahren 280 zur Bestimmung der Phase 203 und Periode 204, gemäß einer Ausführungsform. Bei Schritt 282 wird ein Satz von verzögerten Versionen des Clk 201 von der Taktverzögerungseinheit 210 erzeugt. Bei Schritt 284 wird der Clk 202 von der Taktsampleeinheit 220 unter Verwendung des Satzes von verzögerten Versionen des Clk 201 gesampelt, um die Sequenz von Samples 225 in der Domain des Clk 201 zu produzieren. Dann, bei Schritt 285, lokalisiert die Flankendetektionseinheit 230 jegliche Flanken, zum Beispiel ansteigende, abfallende oder ansteigende und abfallende, innerhalb der Sequenz von Samples 225.
  • Bei Schritt 286 bestimmt die Phaseneinheit 240, ob eine erste Flankenindikation von der Flankendetektionseinheit 230 detektiert wurde, und, wenn nicht, wird die Phase 203 bei Schritt 288 aktualisiert zu der Phase 203 mit einer Periode des Clk 201 erhöht, zum Beispiel Phase + ONE. Wenn keine erste Flankenindikation von der Flankendetektionseinheit 230 detektiert wird, wird die Periode 204 nicht geändert. Anderenfalls, wenn eine erste Flankenindikation detektiert wird, setzt die Phaseneinheit 240 bei Schritt 290 die Phase 203 gleich dem von der Flankendetektionseinheit 230 erzeugten Signal First 235. Bei Schritt 295 bestimmt die Periodeneinheit 250, ob eine zweite Flankenindikation von der Flankendetektionseinheit 230 detektiert wurde, und, wenn dies der Fall ist, dann setzt die Periodeneinheit 250 bei Schritt 295 die Periode 204 gleich der Differenz zwischen dem Signal Second 237 und dem Signal First 235. Anderenfalls aktualisiert die Periodeneinheit bei Schritt 298 die Periode 204 zu der Differenz zwischen der Summe der Phase 203 und einer Periode des Clk 201 und dem Signal First 235.
  • Die 3A illustriert einen Phasendetektor 300 mit hoher Auflösung, gemäß einer Ausführungsform. Der Phasendetektor 300 mit hoher Auflösung wiest eine open-loop Taktverzögerungseinheit 310, die Taktsampleeinheit 220, eine Taktsampleeinheit 320, die Flankendetektionseinheit 230, eine Periodenberechnungseinheit 330, eine Phaseneinheit 340 und eine Periodeneinheit 350 auf. Der Phasendetektor 300 mit hoher Auflösung erhält einen ersten Takt, Clk 201, und einen zweiten Takt, Clk 202, und erzeugt zwei Werte, eine Phase 303 und eine Periode 304.
  • Die 3B illustriert die open-loop Taktverzögerungseinheit 310 von 3A, gemäß einer Ausführungsform. Die open-loop Taktverzögerungseinheit 310 ersetzt die Taktverzögerungseinheit 210 in dem Phasendetektor 300 mit hoher Auflösung in Vergleich mit dem Phasendetektor 200 mit hoher Auflösung. Eine Reihe von N Verzögerungselementen 311 erzeugt N Taktphasen, zum Beispiel verzögerte Versionen des Clk 201, spezifisch Clk_d0, Clk_d1, Clk_d2, Clk_d3, ... Clk_dN. Anders als bei der Taktverzögerungseinheit 210 erstrecken sich die N Taktphasen nicht notwendigerweise über exakt einen Taktzyklus, da die open-loop Taktverzögerungseinheit 320 keinen Phasenkomparator 215 aufweist, um den Betrag zu steuern, mit welchem jede der Verzögerungselemente 311 den Clk 201 verzögert, um die verzögerte Versionen des Clk 201 zu erzeugen. Die Anzahl der Verzögerungselemente 311 sollte groß genug sein, so dass zumindest eine Periode des Clk 201 gesampelt wird.
  • Die 3C illustriert die Taktsampleeinheit 320 von 3A, gemäß einer Ausführungsform. Die Taktsampleeinheit 320 weist eine Mehrzahl von Flip-Flops 322 auf. Die Taktsampleeinheit 320 erhält die von der Takterzeugungseinheit 210 erzeugten verzögerten Versionen von Clk 201 und erzeugt eine Sequenz von Samples von dem ersten Taktsignal, Clk 201. Das Sampeln des ersten Taktsignals wird durchgeführt, um die Periode des Clk 201 in Einheiten der Verzögerung zu berechnen, die von einer Verzögerungselement 311 eingeführt wird. Jede Taktphase Clk_d0, Clk_d1, ... Clk_dN wird zum Sampeln des Clk 201 verwendet, wobei die Sequenz von ersten Taktsamples an den Ausgängen der Flip-Flops 322 produziert wird, zum Beispiel Clk_p1, Clk_p2, Clk_p3, ... Clk_pN.
  • Die 3D illustriert die Periodenberechnungseinheit 330 von 3A, gemäß einer Ausführungsform. Die Periodenberechnungseinheit 330 weist ein Array von UND-Gattern 331, eine Flankenidentifikationseinheit 332 und einen Encoder 334 auf. Die Periodenberechnungseinheit 330 erhält die Sequenz von ersten Taktsamples Clk_p1, Clk_p2, ... Clk_pN, die von der Taktsampleeinheit 320 produziert ist. Die Sequenz von ersten Taktsamples Clk_p1, Clk_p2, ... Clk_pN wird zu dem Array von UND-Gattern 331 eingegeben, um ansteigende Übergänge, zum Beispiel Flanken, innerhalb der Sequenz von ersten Taktsamples zu lokalisieren. Mit anderen Worten detektieren die UND-Gattern 331 ansteigende Flanken des ersten Taktsignals 201, das von den verzögerten Versionen des ersten Taktsignals 201 gesampelt ist. Die UND-Gatter 331 erzeugen Übergangssignale 333, die zum Berechnen der Periode von Clk 201 verwendet werden mögen. Die UND-Gatter 331, die zumindest eins von Clk_p1 und Clk_p2 erhalten mögen von der Flankenidentifikationseinheit 332 ignoriert werden, um sicherzustellen, dass metastabile Signale nicht gesampelt werden. In einer Ausführungsform mag die Periodenberechnungseinheit 330 zum Lokalisieren von abfallenden Übergängen oder von sowohl abfallenden als auch ansteigenden Übergängen konfiguriert sein.
  • Ein oder mehrere Bits von den Übergangssignalen 333, ti = Clk_pi & ~Clk_pi-1 sind wahr, wenn eine ansteigende Flanke des Clk 201 zwischen verzögerten Versionen des Clk 201 aufgetreten ist, Clk_di-1 und Clk_di, wobei i sich von 0 bis N erstreckt. Die Übergangssignale 333, t1, werden zu der Flankenidentifikationseinheit 332 eingegeben, die die erste Eins (wobei Eins ein Bit ist, das Wahr ist) in der Sequenz von Übergangssignalen 333 findet. Die binäre Encodierung von der Position, an welcher die erste Flanke detektiert wird, ist rperiod 335 – die Periode von Clk 301 in Einheiten der Verzögerung einer Verzögerung 311.
  • Die 3E illustriert die Phaseneinheit 340 von 3A, gemäß einer Ausführungsform. Die Phaseneinheit 340 weist ein Phasenregister 344, einen Addierer 342, einen Multiplexer 346 und einen Phasenteiler 348 auf. Die Phaseneinheit 340 erhält First 235 und First_v 236 von der Flankendetektionseinheit 230 und rperiod 335 von der Periodenberechnungseinheit 330 und erzeugt das Ausgangssignal Phase 303. Der Wert rperiod 335 wird in der Phaseneinheit 340 anstelle der Konstante ONE in der Phaseneinheit 240 verwendet. Der Wert von Phase, der von der Phaseneinheit 340 produziert wird, wird auch durch rperiod 335 zur Verwendung von einem schnellen periodischen Synchronisierer geteilt.
  • First 235 ist ein Maß (in Einheiten von Zeit) von der ansteigenden Flanke des Clk 201 bis zu dem neuesten Übergang des Clk 202. Falls ein Übergang detektiert wird, zum Beispiel wenn First_v 236 aktiviert ist, gibt First 235 den Phasenwert. Wenn First_v 236 aktiviert ist, wählt der Multiplexer 346 den Wert First 235 als die Ausgabe, nächste Phase. Falls keinen Übergang detektiert wird, zum Beispiel wenn First_v 236 nicht aktiviert ist, wählt der Multiplexer 346 die inkrementierte Phase 345 als die nächste Phase aus. Der Wert der inkrementierten Phase 345 wird von dem Addierer 342 berechnet als die prä-Teiler-Phase (engl. „pre-divider Phase”) 343 inkrementiert mit rperiod 335.
  • Der Wert Next_Phase wird zu dem Phasenregister 344 eingegeben, das den Wert der prä-Teiler-Phase 343 ausgibt. Der folgende Verilog mag übersetzt werden, um zumindest einen Teil der Logik zu erzeugen, die in der Phaseneinheit 230 gezeigt ist, insbesondere um eine Eingabe (Next_Phase) zu dem Phasenregister 344 bereitzustellen:
    Figure DE102013222369A1_0003
  • Die Ausgabe des Phasenregister 344, zum Beispiel prä-Teiler-Phase 343, wird innerhalb des Phasenteilers 348 durch rperiod 335 geteilt, um den Wert Phase 303 zu produzieren.
  • Die 3F illustriert die Periodeneinheit 350 von 3A, gemäß einer Ausführungsform. Die Periodeneinheit 350 weist ein Periodenregister 354, einen Subtrahierer 357, Multiplexer 356, Multiplexer 358 und einen Teiler 358 auf. Die Periodeneinheit 350 erhält First 235, First_v 236, Second 237 und Second_v 238 von der Flankendetektionseinheit 230, rperiod 335 von der Periodenberechnungseinheit 330 und die inkrementierte Phase 345 von der Phaseneinheit 340 und erzeugt das Ausgangssignal Periode 304.
  • Falls kein Übergang detektiert wird, zum Beispiel sind weder First_v 236 noch Second_v 238 aktiviert, wird Next_Period (und Periode 204) nicht geändert. Anderenfalls, falls zwei Übergänge detektiert werden, zum Beispiel sind sowohl First_v 236 als auch Second_v 238 aktiviert, wird Next_Period berechnet durch Subtrahieren First 235 von der Phase des vorhergehenden Übergangs, Second 237. Falls nur ein Übergang detektiert wird, zum Beispiel ist First_v 236 aktiviert, wird Next_Period berechnet durch Subtrahieren First 235 von der Phase des vorhergehenden Übergangs, die inkrementierte Phase 545. Mit anderen Worten wird die gegenwärtige Phase, First 235, von der Phase des letzten Übergangs subtrahiert – entweder Second 237, wenn ein zweiter Übergang in der gleichen Periode des Clk 201 detektiert wird, oder anderenfalls der inkrementierten Phase 345. Die Anzahl der Bits für die Teiler 348 und 352 wird durch die Anzahl von Bits in reperiod 335 bestimmt, zum Beispiel 4 Bits, wenn N = 16. Bemerke, dass N jeglicher ganzzahlige Wert sein mag und dass N keine Zweierpotenz sein muss.
  • Wenn ein zweiter Übergang detektiert wird, wird ein erster Übergang auch detektiert. Wenn Second_v 238 aktiviert ist, wählt der Multiplexer 356 den Wert Second 237 als die Eingabe zu dem Subtrahierer 357 aus. Wenn kein zweiter Übergang detektiert wird, wählt der Multiplexer 256 die inkrementierte Phase 245 als die Eingabe zu dem Subtrahierer 357 aus. Der Subtrahierer subtrahiert den Wert First 235 von der Eingabe, um eine Ausgabe zu erzeugen. Wenn ein erster Übergang detektiert wird, wählt der Multiplexer 358 die Ausgabe des Subtrahierers 352 als die nächste Periode. Anderenfalls wählt der multiplexer 358 die Ausgabe von dem Periodenregister 354 als die nächste Periode aus und der Wert Period 204 ist unverändert.
  • Der folgende Verilog mag übersetzt werden, um zumindest einen Teil der Logik zu erzeugen, die in der Periodeneinheit 250 gezeigt ist, insbesondere um eine Eingabe (Next_Period) für das Periodenregister 254 bereitzustellen:
    Figure DE102013222369A1_0004
  • Der Wert Next_Period wird zu dem Periodenregister 354 eingegeben. Die Ausgabe von dem Periodenregister 354, zum Beispiel prä-Teiler-Periode, wird durch rperiod 335 innerhalb des Periodenteilers 352 geteilt, um den Wert Periode 304 zu produzieren.
  • Die 3G illustriert ein weiteres Flussdiagram von einem Verfahren 360 zur Bestimmung der Phase 503 und Periode 504 unter Verwendung des open-loop Phasendetektors 300 mit hoher Auflösung, gemäß einer Ausführungsform. Bei Schritt 365 wird ein Satz von verzögerten Versionen des Clk 201 von der offenen-Schleife-Taktverzögerungseinheit 510 erzeugt. Bei Schritt 370 wird der Clk 202 von der Taktsampleeinheit 220 unter Verwendung des Satzes von verzögerten Versionen des Clk 201 gesampelt, um die Sequenz von Samples 225 in der Domain des Clk 201 zu produzieren. Dann, bei Schritt 375, lokalisiert die Flankendetektionseinheit 230 jegliche Flanken, zum Beispiel ansteigende, abfallende oder ansteigende und abfallende, innerhalb der Sequenz von Samples 225.
  • Bei Schritt 372 wird der Clk 201 unter Verwendung des Satzes von verzögerten Versionen des Clk 201 von der Taktsampleeinheit 320 gesampelt, um die Sequenz von ersten Taktsamples 325 in der Domain des Clk 201. Dann bei Schritt 374 lokalisiert die Periodenberechnungseinheit 330 eine Flanke, zum Beispiel ansteigende, abfallende oder ansteigende und abfallende, innerhalb der Sequenz von ersten Taktsamples 325 und bestimmt den rperiod 335, zum Beispiel die Periode des Clk 201. Ein oder mehrere der Schritte 372 und 374 mögen parallel mit einem oder mehreren der Schritte 370 und 375 durchgeführt werden.
  • Bei Schritt 380 bestimmt die Phaseneinheit 340, ob eine erste Flankenindikation von der Flankendetektionseinheit 230 detektiert wurde, und, wenn nicht, wird die nächste Phase bei Schritt 385 als die Summe der prä-Teiler-Phase 343 erhöht durch eine Periode des Clk 201 (rperiod 335) berechnet. Die nächste Phase wird dann durch eine Periode des Clk 201 geteilt, um den Wert Phase 303 zu erzeugen, zum Beispiel (pre-divider_phase + rperiod)/reperiod. Wenn keine erste Flankenindikation von der Flankendetektionseinheit 230 detektiert wird, wird die Periode 304 nicht geändert. Anderenfalls, wenn eine erste Flankenindikation detektiert wird, setzt die Phaseneinheit 340 bei Schritt 390 die nächste Phase gleich dem von der Flankendetektionseinheit 230 erzeugten Signal First 235. Die nächste Phase wird dann durch rperiod 335 geteilt, um den Wert Phase 303 zu erzeugen. Bei Schritt 395 bestimmt die Periodeneinheit 350, ob eine zweite Flankenindikation von der Flankendetektionseinheit 230 detektiert wurde, und, wenn dies der Fall ist, dann setzt die Periodeneinheit 250 bei Schritt 398 die Periode 304 gleich der Differenz zwischen dem Wert Second 237 und dem Wert First 235 geteilt durch rperiod 335. Anderenfalls aktualisiert die Periodeneinheit 550 bei Schritt 298 die Periode 304 zu der Differenz zwischen der Summe der prä-Teiler-Phase 303 und einer Periode des Clk 201 (inkrementierter Phase 342) und dem Signal First 235 geteilt durch eine Periode des Clk 201 (das heißt rperiod 335).
  • EIN MATRIX-PHASENDETEKTOR
  • Die Phasendetektoren 200 und 300 mit hoher Auflösung verwenden Subphasen (das heißt verzögerte Versionen) des Clk 201, um die relative Phase des Clk 202 an jedem Übergang des Clk 202 zu erfassen. Während die Verfolgungsfähigkeit (engl. „tracking ability”) eines periodischen Synchronisierers unter Verwendung des Phasendetektors 200 oder 300 entworfen werden mag, wenn der Clk 202 ein Takt mit niedriger Frequenz ist, sind Aktualisierungen der Periode 204 und Phase 203 verzögert und die Verfolgungsleistung ist reduziert. Ein Matrix-Phasendetektor misst gleichmäßig verteilte Subphasen des Clk 202, um die Verfolgungsleistung zu verbessern, wenn die Frequenz des Clk 202 niedrig ist. Eine Matrix von Flip-Flops wird zum Messen der Phase des Clk 202 relativ zu dem Clk 201 verwendet. Um jede Reihe eines Arrays von Samples durch eine Reihe von Flip-Flops in der Matrix zu erzeugen, wird eine Sequenz von verzögerten Versionen des Clk 202 zu den verschiedenen Reihen von Flip-Flops eingegeben und jede Reihe von Flip-Flops wird von einer unterschiedlichen Subphase des Clk 201 getaktet. Die Ausgaben von den Flip-Flops werden synchronisiert, erneut getimt und dann zum Berechnen der Periode und Phase von dem Sendetakt relativ zu dem Empfangstakt verwendet.
  • Die 4A illustriert ein Flussdiagramm von einem Verfahren 401 zur Lokalisierung von zumindest zwei Flankenindikationen innerhalb eines Arrays von Taktsignalsamples, gemäß einer Ausführungsform. Bei Schritt 402 wird ein erster Satz von verzögerten Versionen des ersten Taktsignals erzeugt. Jede verzögerte Version des ersten Taktsignals ist eine unterschiedliche Phase des ersten Taktsignals. Bei Schritt 405 wird ein zweiter Satz von verzögerten Versionen des zweiten Taktsignals erzeugt. Jede verzögerte Version des zweiten Taktsignals ist eine unterschiedliche Phase des zweiten Taktsignals. Bei Schritt 406 wird der zweite Satz von verzögerten Versionen des zweiten Taktsignals unter Verwendung des ersten Satzes von verzögerten Versionen des ersten Taktsignals gesampelt, um ein Array von Samples in der ersten Taktdomain zu erzeugen. Dann, bei Schritt 407, werden zumindest zwei Flankenindikationen innerhalb des Arrays von Samples lokalisiert. Die zumindest zwei Flankenindikationen sind beide ein ansteigender oder abfallender Übergang von einem Sample des Array von Samples. Die zumindest zwei Flankenindikationen mögen zum Berechnen der Werte von Phase und Periode verwendet werden.
  • Die 4B illustriert ein Flussdiagramm von einem Verfahren 415 zur Verwendung von zumindest zwei Flankenindikationen zum Detektieren einer Phase und einer Periode, gemäß einer Ausführungsform. Die Schritte 402, 405, 406 und 407 wurden abgeschlossen, um zumindest zwei Flankenindikationen bereitzustellen. Bei Schritt 408 werden die zumindest zwei Flankenindikationen verarbeitet, um einen Phasenwert zu berechnen, der eine Phase des zweiten Taktsignals relativ zu dem ersten Taktsignal repräsentiert. Bei Schritt 409 werden die zumindest zwei Flankenindikationen verarbeitet, um einen Periodenwert zu berechnen, der eine relative Periode zwischen dem zweiten Taktsignal und dem ersten Taktsignal repräsentiert.
  • Die 4C illustriert einen Matrix-Phasendetektor 400 mit hoher Auflösung, gemäß einer Ausführungsform. Der Phasendetektor 400 mit hoher Auflösung weist zwei Taktverzögerungseinheiten 210, eine Taktsamplearrayerzeugungseinheit 412, eine Flankendetektionseinheit 430, eine Phaseneinheit 440 und eine Periodeneinheit 450 auf. Der Phasendetektor 400 mit hoher Auflösung erhält ein erstes Taktsignal, Clk 201, und ein zweites Taktsignal, Clk 202, und erzeugt zwei Werte, eine Phase 403 und eine Periode 404. Die Werte Phase 403 und Periode 404 werden jeweils mit Multi-Bit-Signalen enkodiert. Der Wert der Phase 403 repräsentiert eine Phase des zweiten Taktsignals (Clk 202) relativ zu dem ersten Taktsignal (Clk 201). Der Wert der Periode 404 repräsentiert eine relative Periode zwischen dem zweiten Taktsignal 202 und dem ersten Taktsignal (Clk 201). Zumindest einer von dem ersten Taktsignal (Clk 201) und dem zweiten Taktsignal (Clk 202) mag über Zeit variieren. Der Phasendetektor 400 mit hoher Auflösung ist dafür konzipiert, die Phase und Periode kontinuierlich zu messen, während die Frequenz des ersten Taktsignals (Clk 201) und/oder des zweiten Taktsignals (Clk 202) variiert.
  • Eine erste Taktverzögerungseinheit 210 ist ein geschlossener Verzögerungsschleifenschaltkreis, der N unterschiedliche gleichmäßig beabstandete Taktphasen des ersten Taktsignals (Clk 201) produziert (das heißt verzögerte Versionen von Clk 201), spezifisch Clk_rd0, Clk_rd1, Clk_rd2, Clk_rd3, ... Clk_rdN, die sich über eine Periode von Clk 201 erstrecken, das heißt so, dass Clk 201 = Clk_rd0, die die gleiche Phase wie Clk_rdN hat. Eine zweite Taktverzögerungseinheit 210 produziert N unterschiedliche gleichmäßig beabstandete Taktphasen des zweiten Taktsignals (Clk 202) (das heißt verzögerte Versionen von Clk 202), spezifisch Clk_td0, Clk_td1, Clk_td2, Clk_td3, ... Clk_tdN, die sich über eine Periode von Clk 202 erstrecken, das heißt so, dass Clk 202 = Clk_td0, die die gleiche Phase wie Clk_tdN hat. Die verzögerten Versionen vom Clk 201 und die verzögerten Versionen vom Clk 202 werden von der Taktsamplearrayerzeugungseinheit 412 erhalten.
  • In einer Ausführungsform ist die erste Taktverzögerungseinheit 210 zum Verfolgen von Variation in der Periode des Clk 201 wegen Spannung, Temperatur und anderer Wirkungen ausgelegt, und die zweite Taktverzögerungseinheit 210 ist zum Verfolgen von Variation in der Periode des Clk 202 wegen Spannung, Temperatur und anderer Wirkungen ausgelegt. Mit diesem Ansatz sind die verzögerten Versionen von jedem Takt keine einfache Extrapolationen der letzten Taktflanke, sondern vielmehr Signalvariationen in Frequenz und Phase vor der nächsten Flanke des Taktes verfügbar ist. Ein Ansatz ist, die Subphasen jedes Taktes von dem Oszillator zu erzeugen, der selbst den Takt erzeugt.
  • Die 4D illustriert eine Taktsamplearrayerzeugungseinheit 412 von 4C, gemäß einer Ausführungsform. Die Taktsamplearrayerzeugungseinheit 412 weist eine Mehrzahl von Taktsampleeinheiten 220 auf (zum Beispiel die Taktsampleeinheiten 220-0, 220-1, ... 220-N). Wie vorher beschrieben, weist jede Taktsampleeinheit 220 Flip-Flops 222 und eine entsprechende Mehrzahl von Synchronisierern 224 auf und erzeugt eine Sequenz von Samples von einer unterschiedlichen verzögerten Version des zweiten Taktsignals, Clk 202, in der Domain des Clk 201. Jede verzögerte Version des Clk 201, Clk_rd0, Clk_rd1, ... Clk_rdM, wird zu einer unterschiedlichen Taktsampleeinheit 220 eingegeben, um das Array von Taktsamples 414 Clk_s(i, j) zu erzeugen, wobei i sich von 0 bis zu M erstreckt und j sich von 0 bis zu N erstreckt.
  • Die 4E illustriert die Flankendetektionseinheit 430 von 2A, gemäß einer Ausführungsform. Die Flankendetektionseinheit 430 weist ein Array von AND-Gattern 231, eine Auswicklungseinheit (engl. „unwrap unit”) 424 und eine Flankenidentifikationseinheit 426 auf. Die Flankendetektionseinheit 430 erhält das Array von Taktsamples 414, das von der Taktsamplearrayerzeugungseinheit 412 produziert ist. Das Array von Taktsamples 414 wird zu einem Array von UND-Gattern 231 eingegeben, um Flankenindikationen zu lokalisieren, zum Beispiel ansteigende Übergänge innerhalb des Arrays von Taktsamples. Mit anderen Worten detektiert das Array von UND-Gattern 231 ansteigende Flanken von jeder Subphase des Taktsignals, Clk 202, das durch die Subphasen des ersten Taktsignals, Clk 201, gesampelt ist. In einer Ausführungsform mag die Flankendetektionseinheit 230 konfiguriert sein zum Lokalisieren von Indikationen, die abfallende Übergänge oder sowohl abfallende als auch ansteigende Übergänge sind. Um ansteigende Flanken zu detektieren, werden Taktsamples in einer Spalte des Arrays von Taktsamples 414, das heißt vertikal benachbarte Taktsamples, verglichen, um ein Übergangssignalarray 421 zu berechnen, m(i, j) = ~Clk_s(i, j) & Clk_s(i + 1, j).
  • Das Übergangssignalarray 421 enthält eine Flankenindikation (zum Beispiel den Wert eins oder WAHR) für jede Subphase des Clk 202, für die eine ansteigende Flanke während eines neuesten Zyklus des Clk 201 detektiert wurde. Eine Flankenindikation tritt in der Spalte (j), die der Subphase des Clk 202 entspricht, und in der Zeile (i), die der Subphase des Clk 201 entspricht, während deren dieses Subphase des Clk 202 einen Übergang hatte, auf. Die Linie, die durch Verbinden zumindest zweier Flankenindikationen in dem Übergangssignalarray 421 gebildet wird, gibt sowohl die relative Periode als auch die Phase der Signale Clk 202 und Clk 201 an. Die Steigung der Linie gibt die relative Periode 404 an und der Schnittpunkt der Linie mit einer vertikalen Achse gibt die relative Phase 403 an.
  • Wenn das Signal Clk 202 langsamer als das Signal Clk 201 ist, werden nicht alle Subphasen des Signals Clk 202 für jeden Zyklus des Signals Clk 201 detektiert werden. Für einige Subphasen des Clk 201 werden auch keine Übergänge von Subphasen des Clk 201 detektiert werden. Folglich mag die Steigung einer Linie, die zwei Flankenübergänge verbindet, größer als eins sein. Die TABELLE 1 unten illustriert das Übergangssignalarray 421 für einen Zustand, wo eine Periode des Signals Clk 202 gleich 7/3 der Periode einer Periode des Signals Clk 201 ist, das heißt, die Periode 404 ist gleich 7/3 und die Phase 403 des Signals Clk 202 relativ zu dem Signal Clk 201 ist gleich –7/8 UI. Basierend auf der Periode 404 und der Phase 403 kann es vorhergesagt werden, dass zukünftige Übergänge der primären Phase des Signals Clk 202 bei (–7/8 + 7N/3) für ganzzahlige N auftreten werden. Beachte, dass die vertikale Achse, wie es in der TABELLE 1 gezeigt ist, im Vergleich mit einem konventionellen kartesischen Koordinatensystem invertiert ist, das heißt, dass der Wert von i bei Bewegung nach unten entlang der vertikalen Achse von i = 0 bis i = 7 zunimmt und dass der Wert von j bei Bewegung von links nach rechts entlang der horizontalen Achse zunimmt.
  • TABELLE 1 Phase = –7/8 UI und relative Periode = 7/3
    Figure DE102013222369A1_0005
  • Wie in der TABELLE 2 gezeigt, wenn das Signal Clk 202 schneller als das Signal Clk 201 ist, dann ist die Steigung einer Linie, die von zumindest zwei Flankenindikationen (Einser) gebildet ist, kleiner als eins. Folglich mögen mehrere Subphasen des Signals Clk 202 von der gleichen Subphase des Signals Clk 201 detektiert werden. Einige Subphasen des Signals Clk 202 mögen auch von mehreren Subphasen des Signals Clk 201 detektiert werden.
  • Die TABELLE 2 illustriert das Übergangssignalarray 421 für einen Zustand, wo die relative Periode, die Periode 404, gleich 7/11 ist und die Phase 403 gleich 1/4 und 7/8 UI (das heißt, dass zwei unterschiedliche Linien, die Flankenindikationen verbinden, Schnittpunkte bei 1/4 und 7/8 von den Subphasen des Signals Clk 202 relativ zu den Subphasen des Signals Clk 201 haben). Basierend auf der Periode 404 und der Phase 403, die in der TABELLE 2 gezeigt sind, kann es vorhergesagt werden, dass zukünftige Übergänge der primären Phase des Signals Clk 202 bei (7/8 + 7N/11) für ganzzahlige N auftreten werden. TABELLE 2 Phase = 1/4 und 7/8 UI und relative Periode = 7/11
    Figure DE102013222369A1_0006
  • Um die Periode 404 und die Phase 403 aus den in TABELLE 1 und TABELLE 2 gezeigten Übergangssignalarrays 421 zu berechnen, wird das Übergangssignalarray 421 erst ausgewickelt (engl. „unwrapped”), so dass es höchstens eine einzige Flankenindikation (Eins) pro Spalte gibt und so dass keine Flankenindikation eine andere Flankenindikation in einer Zeile nach oben und in einer Spalte nach rechts hat. Das Auswickeln kann durch Führen eines Wickelzählers (engl. „wrap count”) w(i) für die i-te Zeile, zum Beispiel Zeile r(i), realisiert werden. Der Wickelzähler ist die Anzahl von Flankenindikationen in Spalte 7 auf Zeilen über Zeile r(i). Für die TABELLE 2 sind die Wickelzähler w(i) für i = 0 bis 7 zum Beispiel 0, 0, 1, 1, 1, 1, 1, 2. Nach Berechnung des Wickelzählers wird jede Zeile in dem Übergangssignalarray 421 um (N + 1)w(i) Spalten nach rechts verschoben, zum Beispiel werden die Zeilen 0 bis 7 um 0, 0, 8, 8, 8, 8, 8, 16 Spalten verschoben. Anders ausgedrückt mag in dem Falle, wo N = 7, und für m(i, j) Einträge des Übergangssignalarrays 421 jeder Eintrag des ausgewickelten Übergangssignalarrays 423 berechnet werden als: u(i, j) = m(i, j(mod 8)) & (w(i) == (j >> 3)).
  • Kurz gesagt wird der Wickelzähler zum Demultiplexen jeder Zeile in eine jeweilige ausgewickelte Position hinein verwendet. Beachte, dass wenn keine der Zeilen in dem Übergangssignalarray 421 mehr als eine Flankenindikation enthält, das Übergangssignalarray 421 gleich dem ausgewickelten Übergangssignalarray 423 ist. Die Ausgewickelte Version von TABELLE 2 ist in TABELLE 3 gezeigt. TABELLE 3 Phase = 1 7/8 UI und relative Periode = 7/11
    Figure DE102013222369A1_0007
  • Die Auswicklungseinheit 424 ist dazu konfiguriert, das ausgewickelte Übergangssignalarray 423 aus dem Übergangssignalarray 421 zu erzeugen. Wenn das Übergangssignalarray 421 ausgewickelt ist, mögen die Periode 404 und die Phase 403 basierend auf den Signalen in Bezug auf die Steigung 422, den Schnittpunkt 428 und die Aktualisierung 425, die von der Flankendetektionseinheit 430 ausgegeben werden, berechnet werden. Die Flankenidentifikationseinheit 426 mag die Steigung 422 und den vertikale Schnittpunkt 428 (den Schnittpunkt mit der i-Achse) von einer Linie berechnen, die von zumindest zwei Flankenindikationen in dem ausgewickelten Übergangssignalarray 423 spezifiziert ist. Die Flankenidentifikationseinheit 426 ist konfiguriert zum Berechnen der Steigung und des Schnittpunktes 428 basierend auf dem ausgewickelten Übergangssignalarray 423. Wenn weniger als zwei Flankenindikationen in dem Übergangssignalarray 421 vorhanden sind, negiert die Flankenidentifikationseinheit 426 ein Aktualisierungssignal 425. Wenn das Signal Aktualisierung 425 aktiviert ist, werden die Werte von Steigung 422 und Schnittpunkt 428 zum Aktualisieren der Werte von Phase 403 und Periode 404 verwendet.
  • Mehrere Techniken können verwendet werden, um eine Liniengleichung zu bestimmen, dabei Berechnen der Steigung 422 und des vertikalen Schnittpunktes 428. In einer Ausführungsform wird die Position jeder Flankenindikation in dem ausgewickelten Übergangssignalarray 423 in eine lineare Regression eingegeben. In einer weiteren Ausführungsform werden zwei Flankenindikationen lokalisiert, zum Beispiel jegliche Kombination von einer obersten Flankenindikation und einer untersten Flankenindikation, und eine Linie wird durch die zwei Flankenindikationen gezogen. Information aus vorhergehenden Zyklen vom Clk 201 und/oder vom Clk 202 können in die Steigungs- und Schnittpunktberechnungen inkorporiert werden, um die Genauigkeit des berechneten Schnittpunktes 428 und der berechneten Steigung 428 zu verbessern.
  • Zum Beispiel sind die zwei Flankenindikationen, die zum Bestimmen einer Zeile in TABELLE 1 lokalisiert sind, die Flankenindikationen bei u(0,3) und u(7,6). Die Steigung 422 wird als Δi/Δj berechnet, was 7/3 für die Periode 404 ergibt. Verwenden der Liniengleichung, i = 7/3(j) + b, wobei b der Schnittpunkt 428 ist, der als –7 berechnet ist, was –7/8 UI für die Phase 403 entspricht. In einem weiteren Beispiel sind die zwei Flankenindikationen, die zum Bestimmen einer Zeile in TABELLE 3 lokalisiert sind, die Flankenindikationen bei u(0,6) und u(7,17). Die Steigung 422 wird als Δi/Δj berechnet, was 7/11 für die Periode 404 ergibt. Verwenden der Liniengleichung, i = 7/11(j) + b, wird der Schnittpunkt 428 (b) als –42/11 berechnet, was –21/44 UI entspricht. Aufgrund des Wickelns ist der Schnittpunkt auch 1/4 und 7/8. Der Schnittpunkt kann direkt detektiert werden durch das Vorliegen einer Flankenindikation in einer Spalte, die ein Vielfaches von N + 1 (das heißt gleich Null mod (N + 1)) ist. Wenn die Flankenindikationen bei u(0,5) und u(7,17) aus TABELLE 3 verwendet werden, wird die Steigung 422 als Δi/Δj berechnet, was 7/12 für die Periode 404 ergibt. Verwenden der Liniengleichung, i = 7/11(j) + b, wird der Schnittpunkt 428 (b) als –42/12 berechnet, was –7/16 UI entspricht.
  • Die 4F illustriert eine Phaseneinheit 440 von 4C, gemäß einer Ausführungsform. Die Phaseneinheit 440 erhält die Werte Schnittpunkt 235 und Aktualisierung 425 von der Flankendetektionseinheit 430 und erzeugt den Wert Phase 403. Die Phaseneinheit 440 weist ein Phasenregister 444, einen Inkrementierer 442 und einen Multiplexer 446 auf. Falls zumindest zwei Übergänge detektiert werden (zum Beispiel ist Aktualisierung 425 aktiviert), dann wählt der Multiplexer 446 den Wert Schnittpunkt 428 (engl. „intercept”) als die Ausgabe aus, nächste Phase. Wenn zumindest zwei Flankenindikationen nicht detektiert werden (zum Beispiel ist Aktualisierung 425 nicht aktiviert), dann wählt der Multiplexer 446 die inkrementierte Phase 445 als die nächste Phase aus. Der Wert der inkrementierten Phase 445 wird von dem Inkrementierer 442 berechnet als die Phase 403 inkrementiert mit ONE. Die Konstante ONE repräsentiert eine Periode des Clk 201. In dem vorhergehenden Beispiel – in welchem der Wert Phase 403 in Achteln von einer UI repräsentiert ist, hat die Konstante ONE den binären Wert 01000 – repräsentierend 8/8.
  • Der Wert Next_Phase wird zu dem Phasenregister 444 eingegeben, das das Signal Phase 403 ausgibt. Der folgende Verflog mag übersetzt werden, um zumindest einen Teil der Logik zu erzeugen, die in der Phaseneinheit 440 gezeigt ist, insbesondere um eine Eingabe (Next_Phase) für das Phasenregister 444 bereitzustellen:
    Figure DE102013222369A1_0008
  • Die 4G illustriert eine Periodeneinheit 450 von 4C, gemäß einer Ausführungsform. Die Periodeneinheit 450 weist ein Periodenregister 454 und einen Multiplexer 458 auf. Die Periodeneinheit 450 erhält die Steigung 422 und Aktualisierung 425 von der Flankendetektionseinheit 430 und erzeugt das Ausgangssignal Periode 404. Falls zwei oder mehr Indikationen nicht detektiert werden (Aktualisierung 425 ist zum Beispiel nicht aktiviert), dann verbleibt die Next_Period (und Periode 404) unverändert. Anderenfalls, wenn zumindest zwei Flankenindikationen detektiert werden (Aktualisierung 425 ist zum Beispiel aktiviert), dann wird die Next_Period zu der Steigung 422 gesetzt. Der Multiplexer 458 wählt die Steigung 422 aus, wenn die Aktualisierung 425 aktiviert ist. Anderenfalls wählt der Multiplexer 458 die Ausgabe des Periodenregisters 454, die Prä-Teiler_Periode (engl. „pre-divider period”), als die nächste Periode aus. Der Wert Next_Period wird zu dem Periodenregister 454 eingegeben.
  • Die 4H illustriert ein weiteres Flussdiagramm von einem Verfahren 460 zur Bestimmung einer Phase 403 und einer Periode 404, gemäß einer Ausführungsform. Die Schritte 402, 405 und 406 werden von dem Phasendetektor 400 mit hoher Auflösung durchgeführt, um das Übergangssignalarray 421 zu erzeugen. Bei Schritt 455 lokalisiert die Flankendetektionseinheit 430 jegliche Indikationen innerhalb des Übergangssignalarrays 421. Bei Schritt 462 bestimmt die Flankendetektionseinheit 430, ob keine Indikationen lokalisiert wurden, und, wenn dies so ist, wird das Signal Aktualisierung 425 negiert, so dass die Phase 403 unter Verwendung einer vorhergehenden Phase nach vorne extrapoliert wird, und die Periode 404 wird nicht aktualisiert.
  • Anderenfalls, wenn zumindest eine Flankenindikation lokalisiert ist, dann bestimmt die Flankendetektionseinheit 430 bei Schritt 466, ob das Übergangssignal Array 421 ausgewickelt werden sollte, und, wenn dem so ist, wickelt die Flankendetektionseinheit 430 bei Schritt 468 das Übergangssignalarray 421 aus, um das ausgewickelte Übergangssignalarray 423 zu erzeugen. Wenn Auswickeln nicht benötigt wird, ist das ausgewickelte Übergangssignalarray 423 gleich dem Übergangssignalarray 421. Bei Schritt 475 werden zumindest zwei Flankenindikationen von der Flankendetektionseinheit 430 verarbeitet, um den Schnittpunkt 428 zu berechnen, welcher der Phase 403 gleich ist. Bei Schritt 480 werden die zumindest zwei Flankenindikationen von der Flankendetektionseinheit 430 verarbeitet, um die Steigung 422 zu berechnen, welche der Periode 404 gleich ist. Wenn nur eine Flankenindikation in dem gegenwärtigen ausgewickelten Übergangssignalarray 423 detektiert wird, wird die neueste Flankenindikation, die für ein neuestes ausgewickeltes Übergangssignalarray 423 detektiert wurde, als die zweite Flankenindikation verwendet, um die Steigung 422 und den Schnittpunkt 428 zu berechnen. Weniger als zwei Flankenindikationen sollte nur vorkommen, wenn das Signal Clk 202 viel langsamer ist, das heißt, die Periode des Signals Clk 202 ist N mal länger als die Periode des Signals Clk 201.
  • Die 5A illustriert einen weiteren Matrix-Phasendetektor, Phasendetektor 500 mit hoher Auflösung, gemäß einer Ausführungsform. Der Phasendetektor 500 mit hoher Auflösung weist zwei open-loop Taktverzögerungseinheiten 310, zwei Taktsampleeinheiten 320, zwei Periodenberechnungseinheiten 330, eine Taktsamplearrayerzeugungseinheit 412, eine Flankendetektionseinheit 530, eine Phaseneinheit 540 und eine Periodeneinheit 550 auf. Der Phasendetektor 500 mit hoher Auflösung erhält ein erstes Taktsignal, Clk 201, und ein zweites Taktsignal, Clk 202, und erzeugt zwei Werte, eine Phase 503 und eine Periode 504. Die Werte Phase 503 und Periode 504 werden jeweils mit Multi-Bit-Signalen enkodiert. Der Wert der Phase 503 repräsentiert eine Phase des zweiten Taktsignals (Clk 202) relativ zu dem ersten Taktsignal (Clk 201). Der Wert der Periode 504 repräsentiert eine relative Periode zwischen dem zweiten Taktsignal (Clk 202) und dem ersten Taktsignal (Clk 201). Zumindest einer von dem ersten Taktsignal (Clk 201) und dem zweiten Taktsignal (Clk 202) mag über Zeit variieren. Der Phasendetektor 500 mit hoher Auflösung ist dafür konzipiert, die Phase und Periode kontinuierlich zu messen, während die Frequenz des ersten Taktes und/oder des zweiten Taktes variiert.
  • Die open-loop Taktverzögerungseinheit 310 ersetzt die Taktverzögerungseinheit 210 in dem Phasendetektor 500 mit hoher Auflösung in Vergleich mit dem Phasendetektor 400 mit hoher Auflösung. Wie früher im Zusammenhang mit 3B erläutert, erstrecken sich die von der open-loop Taktverzögerungseinheit 310 produzierten N Taktphasen, anders als bei der Taktverzögerungseinheit 210, nicht notwendigerweise über exakt einen Taktzyklus, da die open-loop Taktverzögerungseinheit 320 keinen Phasenkomparator 215 aufweist, um den Betrag zu steuern, mit welchem jede der Verzögerungselemente 311 den Clk 201 verzögert, um die verzögerte Versionen des Clk 201 zu erzeugen. Die Anzahl der Verzögerungselemente 311 sollte groß genug sein, so dass zumindest eine Periode des Clk 201 gesampelt wird.
  • Wie mit dem closed-loop Design, das die Taktverzögerungseinheit 210 verwendet, sollte die mit dem Signal Clk 201 assoziierte Taktverzögerungseinheit 310 in einer bevorzugten Ausführungsform eine Verzögerung haben, die Variationen in der Periode des Signals Clk 201 wegen Spannung, Temperatur und anderer Wirkungen verfolgt, und die mit dem Signal Clk 202 assoziierte Taktverzögerungseinheit 210 sollte eine Verzögerung haben, die Variationen in der Periode des Signals Clk 202 wegen Spannung, Temperatur und anderer Wirkungen verfolgt.
  • Die Taktsampleeinheiten 320 weisen beide eine Mehrzahl von Flip-Flops 322 auf. Eine erste Taktsampleeinheit 320 erhält die von der ersten Taktverzögerungseinheit 310 erzeugten verzögerten Versionen des Clk 201 und produziert eine erste Sequenz von Samples von dem ersten Taktsignal, Clk 201. Das Sampeln des ersten Taktsignals (Clk 201) wird durchgeführt, um die Periode des Clk 201 in Einheiten der Verzögerung, die von einer Verzögerungselement 311 eingeführt wird, zu berechnen. Die erste Periodenberechnungseinheit 330 erhält die erste Sequenz von Samples und berechnet eine Periode von dem Clk 201, rperiod, wie es früher in Zusammenhang mit der 3D beschrieben wurde. Der rperiod wird von der ersten Periodenberechnungseinheit 330 zu der Phaseneinheit 540 ausgegeben. Die Periodenberechnungseinheit 330 erzeugt auch eine erste Taktmaske, die angibt, welche Zeilen von dem Übergangssignalarray innerhalb einer einzigen Periode des Clk 201 enthalten sind.
  • Eine zweite Taktsampleeinheit 320 erhält die von der zweiten Taktverzögerungseinheit 310 erzeugten verzögerten Versionen des Clk 202 und produziert eine zweite Sequenz von Samples von dem zweiten Taktsignal, Clk 202. Das Sampeln des zweiten Taktsignals wird durchgeführt, um die Periode des Clk 202 in Einheiten der Verzögerung, die von einer Verzögerungselement 311 eingeführt wird, zu berechnen. Die zweite Periodenberechnungseinheit 330 erhält die zweite Sequenz von Samples und erzeugt eine zweite Taktmaske, die angibt, welche Zeilen von dem Übergangssignalarray innerhalb einer einzigen Periode des Clk 202 enthalten sind. Die erste Taktmaske und die zweite Taktmaske werden von der Flankendetektionseinheit 530 auf das Übergangssignalarray appliziert, um sicherzustellen, dass Übergänge innerhalb der Perioden der Clk 201 und 202 detektiert werden.
  • Die 5B illustriert eine Flankendetektionseinheit 530 von 5A, gemäß einer Ausführungsform. Die Flankendetektionseinheit 530 weist ein Array von UND-Gattern 231, eine Auswicklungseinheit 524, eine Periodenmaskierungseinheit 526 und eine Flankenidentifikationseinheit 526 auf. Die Flankendetektionseinheit 530 erhält das Array von Taktsamples 414, das von der Taktsamplearrayerzeugungseinheit 412 produziert ist. Das Array von Taktsamples 414 wird zu einem Array von UND-Gattern 231 eingegeben, um Flankenindikationen zu lokalisieren, zum Beispiel ansteigende Übergänge innerhalb des Arrays von Taktsamples. Mit anderen Worten detektiert das Array von UND-Gattern 231 ansteigende Flanken von jeder Subphase des Taktsignals, Clk 202, das durch die Subphasen des ersten Taktsignals, Clk 201, gesampelt ist. In einer Ausführungsform mag die Flankendetektionseinheit 530 konfiguriert sein zum Lokalisieren von Indikationen, die abfallende Übergänge sind (zum Beispiel durch Wechseln der Eingänge von den UND-Gattern 231) oder sowohl abfallende als auch ansteigende Übergänge sind (zum Beispiel durch Ersetzen der UND-Gatter durch XOR-Gatter). Um ansteigende Flanken zu detektieren, werden Taktsamples in einer Spalte des Arrays von Taktsamples 414, das heißt vertikal benachbarte Taktsamples, verglichen, um ein Übergangssignalarray 521 zu berechnen, m(i, j) = ~Clk_s(i, j) & Clk_s(i + 1, j).
  • Das Übergangssignalarray 521 wird von dem Auswicklungseinheit 524 erhalten und das ausgewickelte Übergangssignalarray 523 wird erzeugt. Das Übergangssignalarray 521 und das ausgewickelte Übergangssignalarray 523 enthalten eine Flankenindikation (zum Beispiel den Wert eins oder WAHR) für jede Subphase des Clk 202, für die eine ansteigende Flanke während zumindest eines Zyklus des Clk 201 detektiert wurde. Die Periodenmaskierungseinheit 526 erhält das ausgewickelte Übergangssignalarray 523 und die Taktmaske 536 und erzeugt das maskierte Übergangssignalarray 527. Da die open-loop Taktverzögerungseinheiten 310 sich nicht notwendigerweise über exakt einen Taktzyklus erstrecken, werden eine Zeile-Taktmaske und eine Spalte-Taktmaske als die Taktmaske 536 bereitgestellt, die zu der Flankendetektionseinheit 530 eingegeben wird. Flankenindikationen innerhalb des ausgewickelten Übergangssignalarrays 523, die außerhalb einer einzigen Periode von dem Clk 201 und dem Clk 202 sind liegen, werden von der Taktmaske 536 ausgenullt (engl. „zeroed out”), um das maskierte Übergangssignalarray 527 zu erzeugen.
  • Eine Flankenindikation tritt in der Spalte (j), die der Subphase des Clk 202 entspricht, und in der Zeile (i), die der Subphase des Clk 201 entspricht, während deren diese Subphase des Clk 202 einen Übergang hatte, auf. Die Linie, die durch Verbinden zumindest zweier Flankenindikationen in dem maskierten Übergangssignalarray 527 gebildet wird, gibt sowohl die relative Periode als auch die Phase der Signale Clk 202 und Clk 201 an. Die Steigung der Linie gibt die relative Periode 504 an und der Schnittpunkt der Linie mit einer vertikalen Achse gibt die relative Phase 503 an. Die Flankenidentifikationseinheit 526 erzeugt die Signale Steigung 522, Schnittpunkt 528 und Aktualisierung 525, wie es früher in Zusammenhang mit der 4E beschrieben wurde, basierend auf dem maskierten Übergangssignalarray 527.
  • Wie in den 5A und 5B gezeigt, wird die open-loop Taktverzögerungseinheit 310 zum Erzeugen der Subphasen von sowohl dem Clk 201 als auch dem Clk 202 verwendet. In einer weiteren Ausführungsform mag die open-loop Taktverzögerungseinheit 310 zum Erzeugen der Subphasen von entweder dem Clk 201 oder dem Clk 202 verwendet werden und die closed-loop Taktverzögerungseinheit 310 mag zum Erzeugen der Subphasen von dem anderen Taktsignal verwendet werden.
  • Die 5E illustriert eine Phaseneinheit 540 von 5A, gemäß einer Ausführungsform. Die Phaseneinheit 540 erhält die Werte Schnittpunkt (intercept) 528 und Aktualisierung (update) 525 von der Flankendetektionseinheit 530 und erzeugt den Wert Phase 503. Die Phaseneinheit 540 weist ein Phasenregister 544, einen Inkrementierer 542, einen Multiplexer 546 und einen Phasenteiler 548 auf. Falls zumindest zwei Flankenindikationen detektiert werden (Aktualisierung 525 ist zum Beispiel aktiviert), dann wählt der Multiplexer 546 den Wert Schnittpunkt 528 als die Ausgabe, nächste Phase (next phase), aus. Falls zumindest zwei Flankenindikationen nicht detektiert werden (Aktualisierung 425 ist zum Beispiel nicht aktiviert), dann wählt der Multiplexer 546 die inkrementierte Phase 545 als die nächste Phase aus. Der Wert der inkrementierten Phase 545 wird von dem Addierer 542 als die mit rperiod 535 inkrementierten Prä-Teiler-Phase (pre-divider phase) 543 berechnet.
  • Der Wert next_phase wird zu dem Phasenregister 544 eingegeben, das den Wert Prä-Teiler-Phase 543 ausgibt. Die Ausgabe des Phasenreigsters 544, zum Beispiel Prä-Teiler-Phase 543, wird innerhalb des Phasenteilers 548 durch rperiod 535 geteilt, um den Wert Phase 503 zu produzieren. Der folgende Verilog mag übersetzt werden, um zumindest einen Teil der Logik zu erzeugen, die in der Phaseneinheit 540 gezeigt ist, insbesondere um eine Eingabe (next_phase) zu dem Phasenregister 544 bereitzustellen:
    Figure DE102013222369A1_0009
  • Die 5D illustriert eine Periodeneinheit 550 von 5A, gemäß einer Ausführungsform. Die Periodeneinheit 550 weist ein Periodenregister 554, einen Multiplexer 558 und einen Teiler 558 auf. Die Periodeneinheit 550 erhält die Werte Steigung 522 und Aktualisierung 525 von der Flankendetektionseinheit 530 und den rperiod 535 von der ersten Periodenberechnungseinheit 330 und erzeugt das Ausgangssignal Periode 504. Falls zwei oder mehr Indikationen nicht detektiert werden (Aktualisierung 525 ist zum Beispiel nicht aktiviert), dann verbleibt next_period (und Periode 504) unverändert. Anderenfalls, wenn zumindest zwei Flankenindikationen detektiert werden (Aktualisierung 525 ist zum Beispiel aktiviert), dann wird next_period zu der Steigung 522 gesetzt. Mit anderen Worten wählt der Multiplexer 558 die Steigung 522 aus, wenn die Aktualisierung 525 aktiviert ist. Anderenfalls wählt der Multiplexer 558 die Ausgabe des Periodenregisters 554, die Prä-Teiler-Periode als die nächste Periode aus. Der Wert next_period wird zu dem Periodenregister 554 eingegeben. Die Ausgabe von dem Periodenregister 554 (das heißt Prä-Teiler-Periode) wird innerhalb des Periodenteilers 552 durch rperiod 535 geteilt, um den Wert Periode (period) 504 zu produzieren.
  • Die 5E illustriert ein weiteres Flussdiagramm von einem Verfahren 560 zur Bestimmung einer Phase 503 und einer Periode 504, gemäß einer Ausführungsform. Bei Schritt 502 erzeugt eine erste Taktverzögerungseinheit 210 einen ersten Satz von verzögerten Versionen von dem ersten Taktsignal, Clk 201. Bei Schritt 505 erzeugt eine zweite Taktverzögerungseinheit 210 einen ersten Satz von verzögerten Versionen von dem zweiten Taktsignal, Clk 202. Bei Schritt 506 sampelt die Taktsamplearrayerzeugungseinheit 412 den zweiten Satz von verzögerten Versionen des zweiten Takts unter Verwendung des ersten Satzes von verzögerten Versionen, um ein Array von Taktsamples in der dem Clk 201 entsprechenden ersten Taktdomain zu produzieren.
  • Bei Schritt 501 sampelt die erste Taktsampleeinheit 220 das erste Taktsignal unter Verwendung des ersten Satzes von verzögerten Versionen des ersten Taktsignals. Bei Schritt 508 berechnet die erste Periodenberechnungseinheit 230 die Periode des ersten Taktes, rperiod 535, und erzeugt eine erste Taktmaske, die einer einzigen Periode des ersten Taktes entspricht. Bei Schritt 509 sampelt die Taktsampleeinheit 220 das zweite Taktsignal unter Verwendung des zweiten Satzes von verzögerten Versionen des zweiten Taktsignals. Bei Schritt 510 berechnet die zweite Periodenberechnungseinheit 230 die Periode des zweiten Taktes und erzeugt eine zweite Taktmaske, die einer einzigen Periode des zweiten Taktes entspricht.
  • Bei Schritt 566 bestimmt die Flankendetektionseinheit 430, ob das Übergangssignalarray 521 ausgewickelt werden sollte, und, wenn dem so ist, wickelt die Flankendetektionseinheit 530 bei Schritt 568 das Übergangssignalarray 521 aus, um das ausgewickelte Übergangssignalarray 523 zu erzeugen. Wenn Auswickeln nicht benötigt wird, ist das ausgewickelte Übergangssignalarray 523 gleich dem Übergangssignalarray 521. Bei Schritt 572 werden die erste und die zweite Taktmaske auf das ausgewickelte Übergangssignalarray 523 appliziert, um das maskierte Übergangssignalarray 527 zu erzeugen. Bei Schritt 507 lokalisiert die Flankendetektionseinheit 530 jegliche Flankenindikation innerhalb des maskierten Übergangssignalarray 527. Bei Schritt 562 bestimmt die Flankendetektionseinheit, ob keine Indikationen lokalisiert wurden, und, wenn dem so ist, wird das Signal Aktualisierung 525 bei Schritt 565 negiert, so dass die Phase 503 unter Verwendung einer vorhergehenden Phase nach vorne extrapoliert wird, und die Periode 504 wird nicht aktualisiert.
  • Anderenfalls, wenn zumindest zwei Flankenindikationen lokalisiert werden, dann werden bei Schritt 575 zumindest zwei Flankenindikationen, die in dem maskierten Übergangssignalarray 527 lokalisiert wurden, von der Flankendetektionseinheit 530 verarbeitet, um den Schnittpunkt 528 zu berechnen, welcher der Phase 503 gleich ist. Bei Schritt 580 werden die zumindest zwei Flankenindikationen, die in dem maskierten Übergangssignalarray 527 lokalisiert wurden, von der Flankendetektionseinheit 530 verarbeitet, um die Steigung 522 zu berechnen, welche der Periode 504 gleich ist. Wenn nur eine Flankenindikation in dem gegenwärtigen maskierten Übergangssignalarray 527 detektiert wird, wird die neueste Flankenindikation, die für ein neuestes maskiertes Übergangssignalarray 527 detektiert wurde, als die zweite Flankenindikation verwendet, um die Steigung 522 und den Schnittpunkt 528 zu berechnen. Weniger als zwei Flankenindikationen sollte nur vorkommen, wenn das Signal Clk 202 viel langsamer ist, das heißt, die Periode des Signals Clk 202 ist N mal länger als die Periode des Signals Clk 201.
  • Die 6A illustriert eine beispielhafte integrierte Schaltkreisvorrichtung 650, in welcher die verschiedene Architektur und/oder Funktionalität der verschiedenen vorhergehenden Ausführungsformen implementiert werden mögen. Die integrierte Schaltkreisvorrichtung 650 weist eine Logikeinheit 655, einen Synchronisierer 660 und eine Logikeinheit 665 auf. Die Logikeinheit 655 erhält den Takt 202 und erzeugt Ausgaben, die synchron mit dem Takt 202 sind. Die Ausgaben werden von dem Synchronisierer 660 erhalten und sie werden von der Taktdomain des Taktes 202 zu der Taktdomain des Taktes 201 unter Verwendung der Phasen- und Periodenwerte übertragen, Phase 203, 303, 403 und 503 und Periode 204, 304, 404 und 504, die von dem Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 berechnet wurden. Die übertragenen Ausgaben, die zu der Taktdomain des Taktes 201 synchronisiert sind, werden von der Logikeinheit 665 empfangen.
  • EIN VARIATONSTOLERANTER SYNCHRONISIERER
  • Wenn er mit den Werten Phase 203 und Periode 204 versorgt wird, mag ein variationstoleranter Synchronisierer konfiguriert werden zum Synchronisieren von Signalen, die von einer zweiten Taktdomain, die dem ersten Taktsignal, Clk 202, entspricht, gesendet und in einer ersten Taktdomain, die dem zweiten Taktsignal, Clk 201, entspricht, empfangen wurden. Der variationstolerante Synchronisierer kann schnelle Änderungen in den Taktperioden des ersten und/oder zweiten Taktsignals tolerieren – in Abhängigkeit einer maximalen Variation in Phase pro Zyklus des ersten Taktsignals relativ zu dem zweiten Taktsignal. Folglich kann der variationstolerante Synchronisierer in integrierten Schaltkreisvorrichtungen verwendet werden, die sich spannungsverfolgender Taktgeneratoren (engl. „voltage-tracking clock generators) bedienen. Der variationstolerante Synchronisierer mag auch Signale mit niedriger Latenz während Leistungszustandsübergänge (engl. „power state transitions”) synchronisieren, wenn das erste und/oder zweite Taktsignal Frequenz ändern kann bzw. können.
  • Der Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 mag, wie vorher beschrieben, konfiguriert sein zum Messen der nächsten Phase und der nächsten Periode vom Clk 202 und zum Aktualisieren der Werte von Phase 203 und Periode 204 am Ende jedes Zyklus vom Clk 201, zum Beispiel an der ansteigenden Flanke vom Clk 201. Die Phase gibt die Zeit von dem letzten Übergang des Clk 202 bis zu dem letzten Übergang des Clk 201 an. Die Periode ist die Zeit zwischen zwei Übergängen des Clk 202.
  • Um Synchronisierung mit niedriger Latenz auszuführen, sampelt der variationstolerante Synchronisierer die Signale, die synchronisiert werden sollen, bei verschiedenen Übergängen vom Clk 202. In einer Ausführungsform werden zwei Register verwendet, um „gerade” und „ungerade” Übergänge separat zu sampeln. Mit anderen Worten sampelt und speichert ein „gerades” Register in jedem zweiten Zyklus vom Clk 202 die Signale, die synchronisiert werden sollen. Ein „ungerades” Register sampelt und speichert auf den nicht geraden Zyklen (ungeraden Zyklen) vom Clk 202 die Signale, die synchronisiert werden sollen. Jeder Wert von Phase 203 ist mit einer Indikation davon assoziiert, ob die gemessene Phase einer geraden oder ungeraden Flanke vom Clk 202 entspricht. Wenn zwei oder mehr Register die Signale, die synchronisiert werden sollen, sampeln und speichern, spezifiziert die Indikation die jeweiligen periodischen Übergänge, zum Beispiel erste Flanke, zweite Flanke, dritte Flanke etc. von dem Clk 202.
  • Aufgrund von Re-Timing- und Synchronisierungs-Verzögerungen geben die Werte von Phase 203 und Periode 204 den Zustand des Clk 202D Zyklen vom Clk 201 in die Vergangenheit zurück wieder. Um eine Ausgabe von dem richtigen Register (gerade/ungerade oder erste/zweite/dritte Flanke etc.), das die zu synchronisierende Signale sampelt, werden ein oder mehrere Werte der Phase 203 in den zukünftigen Zyklen des Clk 201 extrapoliert. Spezifischer wird die Phase 203 zu S = D + 1 Zyklen in der Zukunft von den gegenwärtigen Werte der Phase 203 und Periode 204 extrapoliert. Dazwischenliegende zukünftige Werte der Phase 203 werden auch extrapoliert, wenn D größer als null ist. Eine Reihe von Phasenwerten, die die extrapolierten Werte der Phase 203 enthält, wird durchsucht, um das Register zu identifizieren, das die zu synchronisierenden Signale sampelt und das jüngst beschriebene Register ist, das sicher auszuwählen ist, um synchronisierte Signale in der ersten Taktdomain zu erzeugen, die dem Clk 201 entspricht.
  • Um die Latenz zu reduzieren, die von den Signalen verursacht wird, die durch den variationstoleranten Synchronisierer geschickt werden, wird die Flanke vom Clk 202, die kurz vor der nächsten Flanke vom Clk 201 auftritt, basierend auf der Reihe von Phasenwerten identifiziert. Die Flanke, die identifiziert wird, muss eine ausreichende Timingmarge (engl. „timing margin”) haben, so das die gesampelte Signale stabil sind. Das mit der identifizierten Flanke (gerade/ungerade oder erste/zweite/dritte Flanke) assoziierte Register, wird zur Ausgabe von dem variationstoleranten Synchronisierer ausgewählt, um die synchronisierten Signale zu produzieren.
  • Die 6B illustriert ein Flussdiagramm von einem Verfahren zur Synchronisierung von Signalen, gemäß einer Ausführungsform. Bei Schritt 605 wird ein Phasenwert, der eine Phase eines zweiten Taktsignals relativ zu einem ersten Taktsignal repräsentiert, von dem variationstoleranten Synchronisierer erhalten. Bei Schritt 610 wird ein Periodenwert, der eine relative Periode zwischen dem zweiten Taktsignal dem ersten Taktsignal repräsentiert, von dem variationstoleranten Synchronisierer erhalten. Bei Schritt 615 wird ein extrapolierter Phasenwert des zweiten Taktsignals relativ zu dem ersten Taktsignal entsprechend einem nächsten Übergang des ersten Taktsignals basierend auf dem Phasenwert und dem Periodenwert berechnet.
  • Weitere illustrative Informationen in Bezug auf verschiedene optionale Architekturen und Merkmale von einem variationstoleranten Synchronisierer werden jetzt dargelegt. Es sollte dringend beachtet werden, dass die folgenden Informationen zu illustrativen Zwecken dargelegt werden und in keiner Weise als einschränkend ausgelegt werden sollte. Jedes der folgenden Merkmale mag optional inkorporiert werden mit oder ohne Ausschließung anderer beschriebenen Merkmale.
  • Gegeben den Wert Phase 203 (phase) und den Wert Periode 204 (period) mögen extrapolierte Phasenwerte wie folgt berechnet werden: pi = phase + S – i·period für i = [0,X] und S in UI. Wobei X ausgewählt ist, um sicherzustellen, dass zumindest ein extrapolierter Phasenwert größer als eins ist. Größer als eins heißt, dass der extrapolierte Phasenwert nach der gegenwärtigen Flanke vom Clk 201 auftritt, das heißt in der Zukunft. Jeder extrapolierte Phasenwert pi ist die Zeit vom Übergang i des Clk 202 bis zum nächsten Übergang vom Clk 201.
  • Die 6C illustriert Wellenforme zweier Taktsignale, des Clk 201 und des Clk 202, gemäß einer Ausführungsform. In dem Beispiel, das in der 6C gezeigt ist, ist die Frequenz vom Clk 201 gleich 1 GHz (1000 ps Periode) und die Frequenz vom Clk 202 ist gleich 621 MHz (1610 ps Periode). Der Wert Phase 203 ist eine 8 (vier Bits rechts des binären Kommas, Phase = 0,5). Der Wert Phase 203 ist mit einer Indikation einer geraden Flanke assoziiert. Der Wert Periode 204 ist gleich 26 (1,61 in Festkommaformat mit vier Bits rechts des binären Kommas). Die Werte Phase 203 und Periode 204 geben den Zustand des Clk 202 bei D = 3 Zyklen von Clk 201 zurück in der Vergangenheit, so S = 4.
  • Wie in der 6C gezeigt, entspricht der Wert Phase 203, der zum Zeitpunkt t = 0 erhalten wird, dem Zustand des Clk 201 und des Clk 202 zum t = –4, vier Zyklen vom Clk 201 früher als t = 0. Zum t = 0 wählt der variationstolerante Synchronisierer entweder das gerade oder das ungerade Register zum Sampeln der zu synchronisierende Signale aus. Wie früher erläutert, berechnet der variationstolerante Synchronisierer erst extrapolierte Phasenwerte, um eine Reihe von extrapolierten Phasen basierend auf dem Wert der Phase 203 und dem Wert der Periode 204 zu erzeugen.
  • Eine ansteigende Flanke des Clk 202 trat zum Zeitpunkt t = –4 auf, das heißt halbwegs zwischen zwei ansteigende Flanken des Clk 201. Angenommen, dass der Phasendetektor mit hoher Auflösung 200 oder 500 jeweils N = 16 Verzögerungselemente 211 oder 511 aufweist, ist der Wert der Periode 203 gleich 26, gemessen in Einheiten von 1/16-tel von der Periode des Clk 201 oder 1/16 UI. S in Einheiten von 1/16 UI ist 4·N, so S = 64/16 UI. Der variationstolerante Synchronisierer berechnet dann eine Reihe von extrapolierten Phasenwerten pi in Einheiten von 1/16 UI als: p0 = 8 + 64 = –72 (gerade) p1 = 8 + 64 – 26 = –46 (ungerade) p2 = 8 + 64 – 2·26 = –20 (gerade) p3 = 8 + 64 – 3·26 = 6 (ungerade) p4 = 8 + 64 – 4·26 = 32 (gerade)
  • Der variationstolerante Synchronisierer durchsucht die Reihe von extrapolierten Phasenwerten, um die zwei extrapolierte Werte zu finden, die den Übergang des Clk 201 zum Zeitpunkt t = 0 überbrücken (engl. „straddle”). Die zwei extrapolierte Werte, die den Zeitpunkt t = 0 überbrücken, stellen das Timing von den zwei Übergängen des Clk 202 bereit, die am nächsten an dem nächsten Übergang des Clk 201 sind, der bei t = 0 stattfindet. Einer der Übergänge des Clk 202 ist eine gerade Flanke und der andere ist eine ungerade Flanke. Um die größtmögliche Timingmarge zu sichern, mag der variationstolerante Synchronisierer zum Auswählen des extrapolierten Phasenwerts, der die größere Marge hat, konfiguriert sein. Alternativ, um Latent zu minimieren, kann der Synchronisierer zum Auswählen des kleinsten negativen extrapolierten Phasenwert konfiguriert sein, der eine adäquate Margin für sicheres Sampeln von Eingabesignalen in der mit dem Clk 202 assoziierten Taktdomain bereitstellt. Der kleinste negative Phasenwert ist der jüngste extrapolierte Phasenwert, der am nächsten an dem nächsten Übergang des Clk 201 ist
  • Wie in der 6C gezeigt, sind die zwei extrapolierte Phasenwerte, die die Flanke des Clk 201 bei t = 0 überbrücken, p2 = –20 (gerade) und p3 = 6 (ungerade). Mit anderen Worten tritt eine gerade Flanke des Clk 202 16/20 von einem Zyklus des Clk 201 vor der nächsten Flanke des Clk 201 (zum Zeitpunkt t = 0) auf und eine ungerade Flanke des Clk 202 tritt 6/16 von einem Zyklus des Clk 201 nach der nächsten Flanke des Clk 201 auf. Der variationstolerante Synchronisierer ist dazu konfiguriert, den extrapolierten Phasenwert p2 = –20 als den sicheren extrapolierten Phasenwert zu identifizieren und das „gerade” Register auszuwählen, das dem extrapolierten Phasenwert p2 entspricht. Auswählen des extrapolierten Phasenwertes p2 stellt 20/16 von einem Zyklus des Clk 201 bereit, das heißt 1375 ps Timingmarge. In einer Ausführungsform wird die minimale Timingmarge zu jeder extrapolierten Phase addiert, um Latenz zu reduzieren, und der variationstolerante Synchronisierer ist dazu konfiguriert, den negativen extrapolierten Phasenwert auszuwählen, der am nächsten am t = 0 ist.
  • Falls die Periode vom Clk 201 und/oder vom Clk 202 während einer Spannungstransiente sanft variiert, mag die Genauigkeit der extrapolierten Werte durch Hinzufügen eines Terms zweiter Ordnung (engl. „second Order term”) zu der extrapolierten Phasenwertgleichung verbessert werden. Der Term zweiter Ordnung berücksichtigt die Steigung von einer Reihe von Werten der Periode 204. Immer wenn der Wert der Periode 204 aktualisiert wird, mag ein Differenzwert, dperiod, für jeden aufeinanderfolgenden Wert der Periode 204 berechnet werden: dperiod = new_period – old_period. (dperiod = neue_periode – alte_periode)
  • Die Gleichung zur Berechnung extrapolierter Phasenwerte unter Verwendung des Terms zweiter Ordnung ist: pi = phase + S – i·period – i2·dperiod
  • Da die Werte der Periode 204 aber den Zustand vom Clk 201 und Clk 202 in der Vergangenheit wiedergeben, ist der Wert von dperiod auch verzögert und die extrapolierten Phasenwerte werden auch verzögert sein und die sich ändernde Periode nicht für D Zyklen des Clk 201 berücksichtigen.
  • Die 6D illustriert andere Wellenforme der zwei Taktsignale, Clk 201 und Clk 202, gemäß einer Ausführungsform. Zum Zeitpunkt t = –4 trat eine ansteigende Flanke vom Clk 202 mitten im Empfängerauge (engl. „receiver eye”) des Clk 201, das heißt halbwegs zwischen zwei ansteigenden Flanken des Clk 201. Angenommen, dass die Phasendetektoren mit hoher Auflösung 200, 300, 400 und 500 16 Verzögerungselemente aufweisen, ist der Wert der Periode 203 gleich 26/16 und dperiod wird als –2/3 berechnet. Der variationstolerante Synchronisierer berechnet dann eine Reihe von extrapolierten Phasenwerten pi in Einheiten von einem 1/16-tel der Periode des Clk 201 als: p0 = 8 + 64 = –72 (gerade) p1 = 8 + 64 – 26 + (2/3) = –47 (ungerade) p2 = 8 + 64 – 2·26 + 4·(2/3) = –22 2/3 (gerade) p3 = 8 + 64 – 3·26 + 9·(2/3) = 0 (ungerade) p4 = 8 + 64 – 4·26 + 16·(2/3) = 21 1/3 (gerade)
  • Der variationstolerante Synchronisierer durchsucht die Reihe von extrapolierten Phasenwerten, um die zwei extrapolierte Werte zu finden, die den Übergang des Clk 201 zum Zeitpunkt t = 0 überbrücken. Die zwei extrapolierten Werte, die den Zeitpunkt t = 0 überbrücken, stellen das Timing von den zwei Übergängen des Clk 202 bereit, die am nächsten an dem nächsten Übergang des Clk 201 sind. Einer der Übergänge des Clk 202 ist eine gerade Flanke und der andere ist eine ungerade Flanke. Um die größtmögliche Timingmarge zu sichern, mag der variationstolerante Synchronisierer zum Auswählen des extrapolierten Phasenwerts, der die größere Marge hat, konfiguriert sein. Alternativ mag der variationstolerante Synchronisierer zum Auswählen des kleinsten negativen extrapolierten Phasenwert mit einer sicheren Marge konfiguriert sein.
  • Wie in der 6C gezeigt, sind die zwei extrapolierte Phasenwerte, die die Flanke des Clk 201 bei t = 0 überbrücken, p2 = –22 2/3 (gerade) und p3 = 0 (ungerade). Der variationstolerante Synchronisierer ist dazu konfiguriert, den extrapolierten Phasenwert p2 = –22 2/3 als den sicheren extrapolierten Phasenwert zu identifizieren und das „gerade” Register auszuwählen, das dem extrapolierten Phasenwert p2 entspricht. Die extrapolierte Phase p3 = 0 sollte nicht ausgewählt werden, da die Timingmarge gleich 0 ist und die Flanken vom Clk 201 und vom Clk 202 zusammenfallend sein mögen.
  • Das Worst-Case-Timing, was das Auswählen eines sicheren extrapolierten Phasenwertes anbelangt, tritt auf, wenn die geraden und ungeraden extrapolierten Phasenwerte äquidistant vom t = 0 (dem gegenwärtigen Übergang des Clk 201) sind, weil die Timingmarge gleich der Hälfte der Periode vom Clk 201 ist, Tt/2. Die Timingmarge muss die Fehler in den gemessenen Werten der Phase 203 und Periode 204 akkommodieren. Fehler in der Messung von dem Wert der Phase 203 weisen Quantisierungsfehler von ½ LSB (1/32 von der Periode des Clk 201 im vorhergehenden Beispiel) plus jeden systematischen Fehler in dem Phasendetektor mit hoher Auflösung 200, 300, 400 und 500. Fehler in der Messung von dem Wert der Periode 204 weisen Quantisierung plus systematischen Fehler multipliziert mit i. Der Maximale Wert von i ist Sft/fr, wobei ft und fr die jeweiligen Frequenzen vom Clk 202 und Clk 201. Die Timingmarge muss Fehler aufgrund Variationen von den Perioden vom Clk 201 und/oder vom Clk 202 aufgrund von Spannungstransienten, die über i Zyklen integriert werden, akkommodieren.
  • Nehme zum Beispiel an, dass der Messfehler von dem Wert der Phase 203 und von dem Wert der Periode 204 auf 1/32 von der Periode des Clk 201 (31 ps) begrenzt ist, dass die Periode des Clk 202 mindestens 1000 ps ist, dass imax = 6 und dass der Freihaltebereich (engl. „keepout region”) 50 ps weit ist. Der Freihaltebereich ist ein Schwellenwert von Zeit auf beiden Seiten von einer Flanke des Clk 201, während dessen einer extrapolierter Phasenwert nicht als sicher angesehen wird. Der Messfehler ist insgesamt 7·31 ps = 217 ps. Wenn der Messfehler und der Freihaltebereich von der Periode des Clk 202 subtrahiert wird, 1000 ps – 217 ps = 733 ps verbleiben, innerhalb deren eine Periodenvariation über 6 Zyklen toleriert werden muss. 733 ps über 6 Zyklen ergeben in Durchschnitt mehr als 120 ps/Zyklus, oder annehmend eine lineare Variation, einen Schwung von 0 ps/Zyklus am Anfang des Intervalls bis zu 240 ps/Zyklus am Ende des Intervalls.
  • Falls benötigt, mag die Timingmarge durch Verwenden mehrerer Register in dem Synchronisierer erhöht werden. Statt Flanken in gerade und ungerade einzuteilen, mögen zum Beispiel drei Register verwendet werden, die Flanken als erste, zweite und dritte kennzeichnen. Verwenden von drei separaten Registern stellt einen vollen Zyklus des Clk 202 als Timingmarge bereit. Verwenden von zwei Registern ergibt eine Timingmarge von 1/2 einer Periode des Clk 202. Verwenden von drei Registern ergibt eine Timingmarge von einer Periode des Clk 202 und Verwenden von vier Registern ergibt eine Timingmarge von zwei Perioden des Clk 202. Der extrapolierte Phasenwert, der am nächsten an der gegenwärtigen Flanke des Clk 201 Flanke ist, ist der neueste extrapolierte Phasenwert und wenn der neueste extrapolierte Phasenwert die Timingmargeanforderung einhält, wird er als der sicheren extrapolierten Phasenwert angesehen. Das Register, das dem sicheren extrapolierten Phasenwert entsprich, wird zum Erzeugen der synchronisierten Signale ausgewählt.
  • Die 7A illustriert einen variationstoleranten periodischen Synchronisierer 700, gemäß einer Ausführungsform. Der variationstolerante periodische Synchronisierer 700 weist eine Registrierte-Signale-Einheit 710, eine Phasenreihe-Extrapolationseinheit 705 und eine Auswahleinheit 715 auf. Ein Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 mag an den variationstoleranten Synchronisierer 700 gekoppelt sein, um den Wert der Phase 203 und den Wert der Periode 204 bereitzustellen. Der variationstolerante periodische Synchronisierer 700 erhält die Eingabesignale 701, die zu dem Clk 202 synchronisiert sind, den Clk 201, den Clk 202, den Wert der Phase 203 und den Wert der Periode 204 und produziert die Ausgabesignale 711, die zu dem Clk 201 synchronisiert sind.
  • Die Registrierte-Signale-Einheit 710 erhält die Eingabesignale 701, die zu dem Clk 202 synchronisiert sind, sampelt die Eingabesignale 701 an verschiedenen Zyklen des Clk 202 (gerade/ungerade oder erste/zweite/dritte Flanken etc.) und speichert die gesampelten Eingabesignale für die verschiedenen Zyklen des Clk 202 in separaten Registern. Die Phasenreihe-Extrapolationseinheit 705 erhält die Werte der Phase 203 und der Periode 204 und berechnet eine Reihe von extrapolierten Phasenwerten, die zu der Auswahleinheit 715 bereitgestellt wird. Die Auswahleinheit 715 identifiziert einen sicheren extrapolierten Phasenwert aus der Reihe von extrapolierten Phasenwerten, der dem gegenwärtigen Übergang vom Clk 201 am nächsten ist, während sie eine adäquate Timingmarge bereitstellt.
  • Wenn ein sicherer extrapolierter Phasenwert nicht gefunden werden kann, gibt die Auswahleinheit 715 durch Negieren eines Freigabesignals (engl. „enable signal”) an, dass kein sicherer extrapolierter Phasenwert gefunden wurde, und Aktualisierung der Ausgabesignale 711 wird für den gegenwärtigen Zyklus des Clk 201 deaktiviert. Wenn ein sichererer extrapolierter Phasenwert von der Auswahleinheit 715 identifiziert wird, konfiguriert die Auswahleinheit 715 die Registrierte-Signale-Einheit 710 zum Auswählen des Registers, das dem sicheren extrapolierten Phasenwert entspricht, um die Ausgabesignale 711 zu erzeugen. Wenn eine adäquate Timingmarge für zumindest einen der extrapolierten Phasenwerte existiert, sollte das Freigabesignal aktiviert werden, so dass eine der separat registrierten Versionen der Eingabesignale 701 zur Ausgabe als die synchronisierte Ausgabesignale 711 ausgewählt wird. Zusammengefasst wählt der variationstolerante periodische Synchronisierer 700 eine gesampelte Version der Eingabesignale 701, die dem sicheren extrapolierten Phasenwert entspricht, als die Ausgabesignale 711 aus, die zu dem Clk 201 synchronisiert sind.
  • Die 7B illustriert die Registrierte-Signale-Einheit 710 von 7A, gemäß einer Ausführungsform. Die Registrierte-Signale-Einheit 710 erhält die Eingabesignale 701, den Clk 201, den Clk 202, eine Auswahl (select) 717 und eine Freigabe (enable) 718. Die Auswahl 717 und Freigabe 718 werden von der Auswahleinheit basierend auf der Reihe von extrapolierten Phasenwerten erzeugt. Ein gerades Register 702 sampelt die Eingabesignale 701 bei „geraden” Übergängen des Clk 202 und ein ungerades Register 703 sampelt die Eingabesignale 701 bei „ungeraden” Übergängen des Clk 202. Die Auswahl 717 wählt die Ausgabe von entweder dem geraden Register 702 oder dem ungeraden Register 703 aus. Wenn die Freigabe 718 aktiviert ist, wird die ausgewählte Ausgabe der Register 702 und 703 bei dem Übergang des Clk 201 gesampelt und von einem Register 708 als die Ausgabesignale 711 ausgegeben. Wenn die Freigabe 718 negiert ist, werden die Ausgabesignale 711 von dem Register 708 aufrechterhalten und nicht aktualisiert beim Übergang des Clk 201.
  • Die 7C illustriert ein weiteres Flussdiagramm von einem Verfahren 750 zur Synchronisierung von Signalen, gemäß einer Ausführungsform. Bei Schritt 755 wird ein Wert einer Phase 203, der eine Phase eines zweiten Taktsignals, zum Beispiel des Clk 202, relativ zu einem ersten Taktsignal, dem Clk 201, repräsentiert, von dem variationstoleranten Synchronisierer 700 erhalten. Bei Schritt 760 wird ein Wert einer Periode 204, der eine relative Periode zwischen dem zweiten Taktsignal und dem ersten Taktsignal repräsentiert, von dem variationstoleranten Synchronisierer 700 erhalten. Bei Schritt 765 bestimmt der variationstolerante Synchronisierer 700, ob die Periode 204 variiert, und, wenn dem so ist, wird eine Reihe von extrapolierten Phasenwerte berechnet unter Verwendung des Wertes der Phase 203, des Wertes der Periode 204 und des variierenden Periodenwertes, das heißt der Steigung des Wertes der Periode 204.
  • Falls der variationstolerante Synchronisierer 700 beim Schritt 765 bestimmt, dass der Wert der Periode 204 nicht variiert, dann wird bei Schritt 775 eine Reihe von extrapolierten Phasenwerten, die einem nächsten Übergang des ersten Taktsignals entspricht, basierend auf dem Wert der Phase 203 und dem Wert der Periode 204 berechnet. Beachte, dass die Steigung des Wertes der Periode 204 für den Schritt 775 gleich null ist, so dass die Schritte 770 und 775 in einer Ausführungsform kombiniert werden mögen. Bei Schritt 780 bestimmt der variationstolerante Synchronisierer 700 eine Timingmarge basierend auf dem Messfehler des Wertes der Phase 203 und des Wertes der Periode 204 sowie auf Fehlern aufgrund von Variationen des Wertes der Periode 204 wegen Spannungs- und/oder Stromtransienten.
  • Bei Schritt 785 identifiziert der variationstolerante Synchronisierer 700, bei einem Übergang des ersten Taktes, basierend auf der Timingmarge einen neusten extrapolierten Phasenwerte in der Reihe von extrapolierten Phasenwerten, der auch ein sicherer extrapolierter Phasenwert ist. Wenn der extrapolierte Phasenwert, der am nächsten an dem Übergang des Clk 201 ist, die Timingmarge nicht erfüllt, mag ein nächster extrapolierter Phasenwert, der die Timingmarge erfüllt, als der sichere extrapolierte Phasenwert ausgewählt werden. Bei Schritt 790 bestimmt der variationstolerante Synchronisierer 700, ob ein sicherer extrapolierter Phasenwert identifiziert ist, und, wenn dem nicht so ist, hält der variationstolerante Synchronisierer 700 bei Schritt 794 die gegenwärtigen Ausgabesignale 711 aufrecht. Anderenfalls wählt der variationstolerante Synchronisierer 700 bei Schritt 792 die Signale aus, die von dem Register ausgegeben werden, das dem sicheren extrapolierten Phasenwert entspricht, um die Ausgabesignale 711 zu erzeugen.
  • EIN SPEKULATIVER PERIODISCHER SYNCHRONISIERER
  • Wenn die Timingmarge appliziert wird, wird jeder extrapolierter Phasenwert ein extrapoliertes Phasenwertintervall oder ein extrapolierter Phasenbereich, zum Beispiel [pi-, pi+], eher als ein einzelner Wert pi. Als die Timingmarge zunimmt, nimmt die Größe der extrapolierten Phasenwertintervalle auch zu, und es mag schwieriger werden, einen sicheren Phasenwert für die nächste Flanke des Clk 201 zu identifizieren. Das neueste extrapolierte Phasenwertintervall mag den nächsten Übergang des Clk 201 enthalten. Das nächste neueste extrapolierte Phasenwertintervall mag auch den nächsten Übergang des Clk 201 enthalten. Falls ein sicheres extrapoliertes Phasenwertintervall identifiziert werden kann, mag die mit dem sicheren extrapolierten Phasenwertintervall assoziierte Latenz mehrere Zyklen größer als die mit dem neuesten extrapolierten Phasenwertintervall assoziierte Latenz sein.
  • Die 8A illustriert Wellenformen von zwei Taktsignalen, dem Clk 201 und dem Clk 202, und eine Reihe von extrapolierten Phasenintervallen [pi–, pi+], gemäß einer Ausführungsform. Als i zunimmt, nimmt auch die Timingmarge zu, so dass der Umfang von jedem sukzessiven extrapolierten Phasenwertintervall von p0 bis zu p4 zunimmt. Wie in der 8A gezeigt, überbrückt das Paar extrapolierter Phasenwerte p3 und p4 den nächsten Übergang des Clk 201 zum t = 0 und der extrapolierte Phasenwert p3 ist der neuste extrapolierte Phasenwert. Das extrapolierte Phasenintervall [p3–, p3+] für p3 enthält aber t = 0. Folglich ist das registrierte Signal, das dem extrapolierten Phasenwert p3 entspricht, kein sicherer Phasenwert, da adäquate Timingmarge nicht bereitgestellt ist. Falls t = 0 nicht innerhalb des extrapolierten Phasenintervalls [p3–, p3+] enthalten wäre, würde der extrapolierte Phasenwert p3 ein sicherer extrapolierter Phasenwert sein. Für das in der 8A gezeigte Beispiel ist der extrapolierte Phasenwert p2 der sichere extrapolierte Phasenwert. Die Latenz von einem variationstoleranten Synchronisierer nimmt zu, wenn das „ältere” registrierte Signal, das dem extrapolierten Phasenwert p2 entspricht, anstelle von dem neusten registrierten Signal ausgewählt wird, das dem extrapolierten Phasenwert p3 entspricht.
  • Wie vorher erläutert, mag die Timingmarge reduziert werden durch Erhöhen der Anzahl von Registern, die die Eingabesignale für verschiedene Übergänge des Clk 202 sampelt. Wenn der Umfang der extrapolierten Phasenwertintervalle sehr groß ist, mag es notwendig werden, die Anzahl der Register, die die Eingabesignale sampelt, zu erhöhen, um einen extrapolierten Phasenwert zu finden, der sicher ist. Reduzieren der Timingmarge und des Umfangs der extrapolierten Phasenwertintervalle reduziert die Latenz des variationstoleranten Synchronisierers. Ein drittes Register mag zum Beispiel in der Registrierte-Signale-Einheit 710 enthalten sein, die in der 7B gezeigt ist, so dass statt auf geraden und ungeraden Zyklen des Clk 202 zu sampeln, die Eingabesignale 701 jeder erste, zweite und dritte Zyklus des Clk 202 gesampelt werden. Eine andere Technik, die zum Ausführen von Synchronisierung mit niedriger Latenz verwendet werden mag, ist es, eine reduzierte Timingmarge zu verwenden und die Eingabesignale unter Verwendung reduzierter extrapolierter Phasenwertintervalle spekulativ zu synchronisieren.
  • Wenn er spekulativ arbeitet, arbeitet ein spekulativer periodischer Synchronisierer unter Verwendung von Timingmargen, die zum Handhaben einiger aber nicht aller Variationen der Taktperioden des Clk 201 und/oder des Clk 202 adäquat sind. Die reduzierten Timingmargen mögen zum Beispiel zum Handhaben von Timingvariation während normales Arbeiten adäquat sein, aber nicht zum Handhaben seltener Fälle von extremer Energieversorgungsvariation, die extreme Variationen in den Taktperioden des Clk 201 und/oder des Clk 202 produzieren, ausreichend sein. Die reduzierten Timingmargen bewirken, dass der spekulative periodische Synchronisierer gesampelte Eingabesignale auswählt, die niedrigere Latenz in Vergleich mit einem periodischen Synchronisierer hat, der nicht reduzierte Timingmargen verwendet. Da die reduzierte Timingmargen aber spekulativ sind, prüft der spekulative periodische Synchronisierer jede Synchronisierung S Zyklen des Clk 202 später, wenn der gemessene Phasenwert präziser bekannt ist. Wenn der gemessene Phasenwert sich von dem extrapolierten Phasenwert unterscheidet, so dass der tatsächliche Phasenwert die Timingmarge nicht erfüllt, das heißt, nicht sicher ist, dann wird die Synchronisierung, die sich von dem extrapolierten Phasenwert ergibt, widerrufen oder annulliert. In einer Ausführungsform werden jegliche dazwischenkommenden Synchronisierungen auch widerrufen. In einer alternativen Ausführungsform wird nur die unsichere Synchronisierung widerrufen. Folglich ist die Verwendung des spekulativen periodischen Synchronisierers zu Fällen begrenzt, in denen die von der spekulativen Synchronisierung erzeugten Signale mehrere Zyklen, nachdem die Ausgabesignale erzeugt werden, widerrufen werden können. Wenn das Ergebnis von spekulativen Synchronisierungen zum Beispiel Speicherleseoperationen initiiert, können die Operationen widerrufen bzw. annulliert werden oder das Ergebnis des Lesens einfach ignoriert werden und kein permanenter Zustand wird modifiziert. Das Ergebnis einer spekulativen Synchronisierung sollte aber nicht zum Initiieren einer Speicherschreibeoperation verwendet werden, die unwiderruflich einen permanenten Zustand modifizieren mag.
  • Die 8B illustriert ein Flussdiagramm von einem Verfahren 800 zur spekulativen Synchronisierung von Signalen, gemäß einer Ausführungsform. Bei Schritt 801 wird eine Phase eines zweitens Taktsignals relativ zu einer Phase eines ersten Taktsignals erhalten, die zumindest ein Zyklus des zweiten Taktsignals früher gemessen wurde. Beim Schritt 801 wird eine Periode des zweitens Taktsignals relativ zu dem ersten Taktsignal erhalten, die auch zumindest ein Zyklus des zweiten Taktsignals früher gemessen wurde. Bei Schritt 805 wird eine reduzierte Timingmarge basierend auf der Phase und der Periode bestimmt. Bei Schritt 808 wird ein spekulatives synchronisiertes Ausgabesignal basierend auf der reduzierten Timingmarge erzeugt. In einer Ausführungsform wird ein registriertes Eingabesignal basierend auf der reduzierten Timingmarge ausgewählt, um das spekulative synchronisierte Ausgabesignal zu erzeugen.
  • Weitere illustrative Informationen in Bezug auf verschiedene optionale Architekturen und Merkmale von einem spekulativen periodischen Synchronisierer werden jetzt dargelegt. Es sollte dringend beachtet werden, dass die folgenden Informationen zu illustrativen Zwecken dargelegt werden und in keiner Weise als einschränkend ausgelegt werden sollte. Jedes der folgenden Merkmale mag optional inkorporiert werden mit oder ohne Ausschließung anderer beschriebenen Merkmale.
  • Die Werte der Phase und Periode werden für jeden Übergang des Clk 202 gemessen und bei jedem Zyklus des Clk 201 aktualisiert. Re-Timing und Synchronisierung innerhalb des Phasendetektors mit hoher Auflösung 200, 300, 400 und/oder 500 introduziert eine Verzögerung von S Zyklen in der Verfügbarkeit der gemessenen Werte der Phase 203 (303, 403 und/oder 503) und der Periode 204 (304, 404 und/oder 504), die von dem Phasendetektor mit hoher Auflösung 200, 300, 400 und/oder 500 ausgegeben werden. Die verzögerten Messungen der Werte der Phase 203 und Periode 204 (aus S Zyklen zurück in der Vergangenheit), produziert die Reihe von extrapolierten Phasenwerten, die vorhergesagte Phasen des Clk 202 relativ zu dem nächsten Übergang des Clk 201 sind. In einer Ausführungsform mag eine Ableitung der gemessen Werte der Periode 204 auch zum Produzieren der Reihe von extrapolierten Phasenwerten verwendet werden.
  • Wenn Timingmargen auf die Reihe von extrapolierten Phasenwerten appliziert werden, wird jeder pi von einer unteren extrapolierten Phasenintervallgrenze pi– und einer oberen extrapolierten Phasenintervallgrenze pi+ begrenzt: pi ∊ [pi–, pi+] = [θ – Δθ + S – iT – 0.5(i2 + i)ΔT, θ + Δθ + S – iT + 0.5(i2 + i)ΔT], wobei θ der Wert der Phase 203 und T der Wert der Periode 204 ist. Die Timingmargen berücksichtigen Messunsicherheit und Variationen in dem Wert der Periode 204. Eine Δθ-Variation ist die Unsicherheit in dem gemessenen Phasenwert. Die ΔT-Variation hat zwei separate Komponenten, eine systematische Komponente ΔTS und einer Messkomponente ΔTM, so dass ΔT = ΔTS + ΔTM. ΔTS ist die Variation in dem Periodenwert aufgrund von einer Variation in der Periode des Clk 201 und/der des Clk 202 und ΔTM ist die Unsicherheit des gemessenen Periodenwertes.
  • Wenn zwei Register zum Sampeln der Eingabesignale (gerade/ungerade) verwendet werden, wird die Reihe von extrapolierten Phasenwertintervallen durchgesucht, um das Paar extrapolierter Phasenwertintervalle zu finden, das um zwei beabstandet ist und t = 0 überbrückt. Mit anderen Worten wird die Reihe von extrapolierten Phasenwertintervallen durchgesucht, um den größten i zu finden, der die folgende Bedingung erfüllt pi+ < 0 < pi+2–.
  • Der größte i, der die Bedingung erfüllt, entspricht einem geraden oder ungeraden Taktzyklus und das entsprechende gerade oder ungerade Register wird zum Erzeugen des synchronisierten Ausgabesignal ausgewählt. Wenn drei Register zum Sampeln der Eingabesignale (zum Beispiel erste/zweite/dritte) verwendet werden, wird die Reihe von extrapolierten Phasenwertintervallen durchgesucht, um das Paar extrapolierter Phasenwertintervalle zu finden, das um drei beabstandet ist und t = 0 überbrückt. Wenn die Anzahl von Registern, die die Eingabesignale sampeln, erhöht wird, erhöht sich die Spanne zwischen den extrapolierten Phasenwertintervallen, die durchgesucht werden, (zum Beispiel wird i bei drei Registern mit i + 3 gepaart) und Identifikation eines Paares extrapolierter Phasenwertintervalle, das die Bedingung erfüllt, ist wahrscheinlicher.
  • Wie früher erläutert, wenn ein oder mehrere von den extrapolierten Phasenwertintervallen, die aus ΔT und/oder Δθ resultieren, den Übergang vom Clk 201 bei t = 0 enthält, mag es nicht möglich sein, ein Paar extrapolierter Phasenwertintervalle zu identifizieren, das die Bedingung erfüllt. Wenn ein Paar extrapolierter Phasenwertintervalle, das die Bedingung erfüllt, nicht identifiziert wird, wird das synchronisierte Ausgabesignal nicht aktualisiert und die von der Synchronisierung verursachte Latenz nimmt effektiv zu. Spekulative Synchronisierung mag zum Reduzieren der Latenz verwendet werden, die während der meisten Taktzyklen für Synchronisierung durch Verwendung reduzierter Timingmargen verursacht wird. Für diejenige Taktzyklen, wenn spekulative Synchronisierung nicht zuverlässig verwendet werden kann, das heißt, wenn die gesampelten Eingabesignale metastabil sein mögen, mögen die spekulativ synchronisierten Signalen widerrufen (oder annulliert) werden und dann basierend auf nicht reduzierten Timingmargen synchronisiert werden, wie es hierin weiter beschrieben wird.
  • In der vorhergehenden Analyse wird die Variation in der Periode T als eine Steigung ΔT charakterisiert. Im Laufe der S Zyklus Zeitdauer von dem Zeitpunkt, zu dem die Periode gemessen wird, bis zu dem Zeitpunkt, zu dem die Periode zum Berechnen der Reihe von extrapolierten Phasenwerte verwendet wird, kann die Periode sich insgesamt mit SΔT ändern. Eine absolute Grenze δT mag als die Variation von T appliziert werden, wobei es der ganzen δT Variation erlaubt wird, in einem einzigen Zyklus stattzufinden. In diesem Falle wird die Formel für die untere extrapolierte Phasenintervallgrenze pi– und die obere extrapolierte Phasenintervallgrenze pi+: pi ∊ [pi–, pi+] = [θ – Δθ + S – iT – iδT, θ + Δθ + S – iT + iδT].
  • Ein niedrigerer Wert für ΔT oder δT mag verwendet werden, um eine reduzierte Timingmarge zu berechnen, die auf die Reihe von extrapolierten Phasenwertintervallen appliziert wird, um die spekulative Reihe von extrapolierten Phasenwertintervallen zu berechnen. Das neueste sichere spekulative extrapolierte Phasenwertintervall wird identifiziert, um ein spekulativ synchronisiertes Ausgabesignal zu erzeugen, und Ausgabesignale, die spekulativ synchronisiert sind, werden als spekulative markiert. Nachgeschaltete Logik, die die spekulativ synchronisierten Ausgabesignale erhält, sollte irreversible Operationen vermeiden, die von den spekulativ synchronisierten Signalen abhängen. Nachdem spekulativ synchronisierte Ausgabesignale als sicher bestimmt wurden (und nicht widerrufen werden), mögen irreversible Operationen unter Verwendung der spekulativ synchronisierten Ausgabesignale durchgeführt werden.
  • Der tatsächliche (gemessene) Phasenwert, der als der Phasenwert 203 5 Zyklen später erhalten wird, wird mit dem früher identifizierten spekulativen extrapolierten Phasenwertintervall verglichen, um festzustellen, ob das früher identifizierte spekulative extrapolierte Phasenwertintervall sicher war. Falls die Synchronisierung in Zyklus k durchgeführt wird, dann gibt der Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 auf Zyklus k + S den gemessenen Wert der Phase 203, θk in Zyklus k, aus. Ein Zyklus später, auf Zyklus k + S + 1, gibt der Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 θk+1 aus. Die Synchronisierung im Zyklus k war sicher θk > Δθ + tm and θk+1 > 1 oder θk+1 < 1 – Δθ – tm. wobei tm gleich der Timingmarge ist.
  • Falls, nach dem Machen der Messungen θk und θk+1, die Synchronisierung als sicher empfunden wird, wird ein Validierungssignal gesendet, um die spekulativ synchronisierten Ausgabesignale als nicht spekulativ zu markieren. Auf der anderen Seite, wenn die Synchronisierung als unsicher empfunden wird, wird ein Widerrufsignal gesendet, um die spekulativ synchronisierten Ausgabesignale zu wiederrufen. Abhängig von der Struktur des spekulativen periodischen Synchronisierers mögen nicht spekulativ synchronisierte Ausgangsignale, die basierend auf einer Reihe von extrapolierten Phasenwertintervallen erzeugt werden, dann mit größerer Latenz erzeugt werden.
  • In einer alternativen Ausführungsform muss der Synchronisierer nicht bis zum Zyklus k + S warten, um die spekulative Synchronisierung zu validieren. In jedem Zyklus nach der ursprünglichen Synchronisierung, für welchen eine neue Phasenmessung verfügbar ist, wird das mit der Synchronisierung assoziierten Phasenintervall voller Marge eingeschränkt. Die 8C illustriert Wellenformen der Taktsignale 201 und 202 und eine spekulative Reihe von extrapolierten Phasenintervallen, gemäß einer Ausführungsform. Die spekulative Reihe von extrapolierten Phasenintervallen wird unter Verwendung der Reihe von extrapolierten Phasenintervallen, die in der 8A gezeigt ist, und reduzierter Timingmargen erzeugt. Wie in der 8A gezeigt, ist der Phasenwert p2 der letzte extrapolierte Phasenwert, der ein Phasenwertintervall hat, das den Übergang des Clk 202 zum t = 0 enthält. Folglich würde der extrapolierte Phasenwert p2 als der sichere Phasenwert ausgewählt werden. Wie in der 8C gezeigt, wird eine reduzierte Timingmarge appliziert und das extrapolierte Phasenwertintervall [p3–, p3+], das in der 8A gezeigt ist, wird reduziert, um das spekulative extrapolierte Phasenwertintervall [p3–, p3+] zu erzeugen, das in der 8C gezeigt ist. Wie in der 8C gezeigt, tritt der Übergang der Clk 202 zum t = 0 nach dem spekulativen extrapolierten Phasenwertintervall auf und ist nicht innerhalb des spekulativen extrapolierten Phasenwertintervalls enthalten. Folglich wird der extrapolierte Phasenwert p3 für die spekulative Synchronisierung ausgewählt.
  • Nach einem Zyklus des Clk 201 (bei k + 1) ist der gemessene Phasenwert p1 noch nicht bekannt, da die ansteigen Flanke des Clk 202 nach t = –4 auftritt. Nach noch einem Zyklus des Clk 201 (bei k + 2) ist der gemessene Phasenwert p1 bekannt und das entsprechende Intervall [p1–, p1+] wird eingeschränkt, so dass p1– = p1 – dθ und p1+ = p1 + Δθ, was gleich dem (nicht spekulativen) extrapolierten Phasenwertintervall für p1 ist. Falls die ursprüngliche Synchronisierung die Phase p1 als der Phasenwert identifiziert hatte, der für die spekulative Synchronisierung verwendet wurde, und das eingeschränkte Intervall [p1–, p1+] vor t = 0 auftritt und t = 0 (jetzt t = –2) nicht enthält, dann mag die Synchronisierung als nicht spekulativ markiert werden. p3 wurde aber als der Phasenwert für die spekulative Synchronisierung identifiziert und der gemessene Phasenwert p3 ist noch nicht bekannt.
  • Wenn das spekulative extrapolierte Phasenwertintervall für p1 eingeschränkt wird, um gleich dem spekulativen extrapolierten Phasenwertintervall für p1 zu sein, mögen die anderen Intervalle in der Reihe von extrapolierten Phasenwertintervallen auch aktualisiert und eingeschränkt werden. Spezifisch wird das extrapolierte Phasenwertintervall des p3, nachdem zwei Zyklen des Clk 201 zum t = 2 sich ereignet haben, unter Verwendung von i = 2 anstelle von i = 3, als er zum t = 0 verwendet wurde, berechnet. Wenn das aktualisierte Intervall [p3–, p3+] vor t = 0 (jetzt t = –2) auftritt und t = 0 (jetzt t = –2) nicht enthält, dann mag die spekulative Synchronisierung als nicht spekulativ markiert werden.
  • Nachdem vier Zyklen des Clk 201 sich zum t = 4 (k + 4) ereignet haben und das extrapolierte Phasenwertintervall vom p3 wird berechnet unter Verwendung von i = 1 anstelle von i = 3. Wenn das aktualisierte Intervall [p3–, p3+] t = 0 (jetzt t = –4) nicht enthält, wie in der 8C gezeigt, dann mag die spekulative Synchronisierung als nicht spekulativ markiert werden. Falls die spekulative Synchronisierung nicht bei k + 4 nicht spekulativ markiert werden könnte, dann, nach fünf Zyklen des Clk 201, ist der gemessene Phasenwert p3, der zum t = 0 genommen wurde, bekannt und das extrapolierte Phasenwertintervall [p3–, p3+] wird zu [p3 – dθ, p3 + dθ] aktualisiert. Falls das aktualisierte Intervall vor t = 0 (jetzt t = –5) und t = 0 (jetzt t = –5) enthielt, dann würde die spekulative Synchronisierung widerrufen werden. Eine spekulative Synchronisierung mag sobald als Zyklus k + 1 als nicht spekulativ markiert werden. Eine spekulative Synchronisierung mag nicht bis zum k = S widerrufen werden.
  • Die 8D illustriert einen spekulativen periodischen Synchronisierer 850, gemäß einer Ausführungsform. Der spekulative periodische Synchronisierer 850 ist an einen Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 gekoppelt, der den Wert der Phase 203 und den Wert der Periode 204 erzeugt. Der spekulative periodische Synchronisierer 850 weist eine Phasenreihe-Extrapolationseinheit 855, eine spekulative Registrierte-Signale-Einheit 860 und eine spekulative Auswahleinheit 865 auf. Die Phasenreihe-Extrapolationseinheit 855 erhält den Wert der Phase 203 und den Wert der Periode 204S Zyklen nachdem, die Phase und Periode gemessen wurden, und erzeugt eine Reihe von extrapolierten Phasenwerten. Die spekulative Auswahleinheit 865 erhält den Wert der Phase 203 und die Reihe von extrapolierten Phasenwerten und appliziert eine reduzierte Timingmarge, um eine spekulative Reihe von extrapolierten Phasenwertintervallen zu berechnen, aus welcher ein neuestes spekulatives extrapoliertes Phasenwertintervall, das den Übergang des Clk 201 zum t = 0 nicht enthält, identifiziert wird. Die spekulative Auswahleinheit 865 wählt die registrierten Eingabesignale 851 aus, die dem identifizierten neuesten spekulativen extrapolierten Phasenwertintervall entspricht, um die spekulativ synchronisierten Ausgabesignalen, spekulative Ausgabesignale 861, zu erzeugen. Wenn die spekulative Auswahleinheit 865 kein spekulatives extrapoliertes Phasenwertintervall identifiziert, werden die spekulativen Ausgabesignale 861 nicht aktualisiert. Die spekulative Auswahleinheit produziert auch eine Indikation in Bezug darauf, ob das erzeugte Ausgabesignal spekulativ oder nicht spekulativ ist, zum Beispiel ein Validierungssignal 868.
  • Die spekulative Auswahleinheit 865 verfolgt die spekulativen Ausgangsignale 861, die ausgegeben werden, und erzeugt ein Widerrufsignal 866 oder ein Validierungssignal 868, als benötigt. Das Widerrufsignal 866 wird zum Widerrufen spekulativer Ausgabesignale 861, die früher ausgegeben wurden, basierend auf dem entsprechenden Wert der Phase 203, der von der spekulativen Auswahleinheit 865 S Zyklen später erhalten wird, verwendet. Widerrufene spekulative Ausgabesignale 861 werden von der empfangenden Logik verworfen. Das Validierungssignal 868 wird verwendet zum Angeben, dass es bestimmt worden ist, dass ein früher spekulatives Ausgangsignal nicht spekulativ ist und folglich ohne Gefahr in einer irreversiblen Operation verwendet werden kann. Das Validierungssignal 868 mag so spät wie S Zyklen, nachdem spekulative Ausgabesignale erzeugt wurden, aktiviert werden. Die spekulative Registrierte-Signale-Einheit 860 mag zwei oder mehr Register aufweisen, wobei jedes Register zum Sampeln der Eingabesignale 851 auf einen unterschiedlichen Übergang des Clk 202 konfiguriert ist.
  • Die 8E illustriert ein weiteres Flussdiagramm von einem Verfahren 820 zur spekulativen Synchronisierung von Signalen, gemäß einer Ausführungsform. Bei Schritt 801 berechnet die Phasenreihe-Extrapolationseinheit 855 eine Reihe von extrapolierten Phasenwerten basierend auf dem Wert der Phase 203 und dem Wert der Periode 204, die von dem Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 bereitgestellt wurden. Bei Schritt 805 appliziert die spekulative Auswahleinheit 865 eine reduzierte Timingmarge, zum Beispiel eine reduzierte Variation in ΔT oderr δT, auf die Reihe von extrapolierten Phasenwerten, um eine spekulative Reihe von extrapolierten Phasenwertintervallen zu produzieren. Bei Schritt 806 identifiziert die spekulative Auswahleinheit 865 ein neuestes spekulatives extrapoliertes Phasenwertintervall, das keinen Übergang des Clk 201 zum t = 0 enthält. Bei Schritt 811 konfiguriert die spekulative Auswahleinheit 865 die spekulative Registrierte-Signale-Einheit 860 zum Auswählen eines registrierten Eingabesignals, das dem neusten spekulativen extrapolierten Phasenwertintervall entspricht, um die spekulativen Ausgabesignale 861 zu erzeugen. Falls die spekulativen Ausgabesignale 861 nicht spekulativ sind, das heißt, ein extrapoliertes Phasenwertintervall ist sicher ohne die reduzierten Timingmargen, dann wird das Validierungssignal 868 aktiviert.
  • Falls, bei Schritt 812, die spekulative Auswahleinheit 865 bestimmt, dass das neueste spekulative extrapolierte Phasenwertintervall sicher war, dann wird das Validierungssignal bei Schritt 822 aktiviert und das Synchronisieren der Eingabesignale 851 wird fortgesetzt. Anderenfalls bestimmt die spekulative Auswahleinheit 865 bei Schritt 816, ob S Zyklen des Clk 201 aufgetreten sind, seitdem die spekulativen Ausgabesignale 861 erzeugt wurden, und wenn dem so ist, widerruft die spekulative Auswahleinheit 865 die spekulativen Ausgabesignale 861, die S Zyklen früher erzeugt wurden.
  • Anderenfalls wartet die spekulative Auswahleinheit 865 bei Schritt 818 darauf, dass ein anderer Zyklus des Clk 201 möglicherweise einen Wert der Phase 203 erlangt, der einem extrapolierten Phasenwert entspricht. Bei dem nächsten Zyklus des Clk 201 wird die Reihe von extrapolierten Phasenwertintervallen aktualisiert, wenn ein neuer Wert der Phase 203 bekannt ist. Wie früher in Zusammenhang mit der 8C erläutert, schränkt das Aktualisieren der Reihe von extrapolierten Phasenwerteintervallen, wenn eine neue Phase 203 erhalten wird, die Phasenwertintervallen ein. Beim Schritt 812 werden die eingeschränkten extrapolierten Phasenwertintervalle geprüft, um zu sehen, ob die spekulative Synchronisierung als nicht spekulativ markiert werden kann. Beachte, dass die spekulative Auswahleinheit 865 dazu konfiguriert werden mag, die spekulativen Ausgabesignale 861 zu erzeugen, während sie gleichzeitig einen oder mehrere von den Schritten 812, 816, 818, 822 und 820 ausführt.
  • In einer Ausführungsform mag der spekulative periodische Synchronisierer 850 dazu konfiguriert sein, sowohl eine aggressive Synchronisierung als auch eine sichere Synchronisierung durchzuführen. Die sichere Synchronisierung hat eine höher Latenz in Vergleich mit der aggressiven Synchronisierung, so dass aggressiv synchronisierte Signale ein oder mehrere Zyklen vor die Signale auftreten, die sicher synchronisiert werden. Die Latenz, die verursacht wird, wenn ein Widerruf benötigt wird, wird reduziert, da die sicher synchronisierten Signale die widerrufenen aggressiv synchronisierten Signale innerhalb einer kleinen Anzahl von Taktzyklen ersetzen können. Ausgabesignale, die aggressiv synchronisiert wurden, werden als spekulative markiert und irreversible Operationen unter Verwendung der spekulativen Ausgabesignale sollten nicht durchgeführt werden, bevor die Ausgabesignale als nicht spekulative (validierte) markiert werden. Wenn ein sicher synchronisiertes Ausgabesignal verfügbar ist, das einem früher ausgegebenen spekulativen Ausgabesignal entspricht, wird das sicher synchronisierte Ausgabesignal mit dem früher ausgegebenen spekulativen Ausgabesignal verglichen. Wenn die Signale übereinstimmen, wird das spekulative Ausgabesignal als nicht spekulativ markiert und das sicher synchronisierte Ausgabesignal wird verworfen. Wenn die Signale nicht übereinstimmen, wird das früher ausgegebene spekulative Ausgabesignal widerrufen und durch das sicher synchronisierte Ausgabesignal ersetzt.
  • Ersetzen eines widerrufenen spekulativen Ausgabesignals 811 mag eine Wiederholung von reversibler Arbeit erfordern, die von dem Zeitpunkt, zu dem das spekulative Ausgabesignal 811 von dem spekulativen periodischen Synchronisierer 850 erhalten wurde, bis zu dem Zeitpunkt gemacht wurde, zu dem das sicher synchronisierte Ausgabesignal von dem spekulativen periodischen Synchronisierer 850 erhalten wird. In einem gepipelineten (engl. „pipelined”) Schaltkreis, der die spekulativen Ausgabesignale 811 erhält, mag es notwendig sein, mehrere Pipelinestufen zu leeren (engl. „flush”), und die Sequenz von Eingaben, beginnend mit dem sicher synchronisierten Ausgabesignal, mag erneut abgespielt werden müssen.
  • Die 9A illustriert einen spekulativen periodischen Synchronisierer 900 gemäß einer Ausführungsform. Der spekulative periodische Synchronisierer 900 ist an einen Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 gekoppelt, der den Wert der Phase 203 und den Wert der Periode 204 erzeugt. Der spekulative periodische Synchronisierer 900 weist eine Phasenserie-Extrapolationseinheit 908, eine sichere Registrierte-Signale-Einheit 904, eine spekulative Registrierte-Signale-Einheit 905 und eine spekulative Auswahleinheit 910 auf. Die Phasenserie-Extrapolationseinheit 908 erhält den Wert der Phase 203 und den Wert der Periode 204, S Zyklen nachdem die Phase und Periode gemessen wurden, und erzeugt eine Reihe von extrapolierten Phasenwerten. Die spekulative Auswahleinheit 910 erhält den Wert der Phase 203 und die Reihe von extrapolierten Phasenwerten und appliziert eine reduzierte Timingmarge, um eine spekulative Reihe von extrapolierten Phasenwertintervallen zu berechnen, aus welcher ein neuestes spekulatives extrapoliertes Phasenwertintervall, das keinen Übergang des Clk 201 zum t = 0 enthält, identifiziert wird. Die spekulative Auswahleinheit 910 konfiguriert die spekulative Registrierte-Signale-Einheit 905 dazu, die registrierten Eingabesignale 901 auszuwählen, die dem identifizierten neuesten spekulativen extrapolierten Phasenwertintervall entsprechen, um die spekulativen Ausgabesignale 911 zu erzeugen. Wenn die spekulative Auswahleinheit 910 kein sicheres spekulatives extrapoliertes Phasenwertintervall identifiziert, werden die spekulativen Ausgabesignale 911 nicht aktualisiert und das Validierungssignal 928 wird aktiviert.
  • Die spekulative Auswahleinheit 910 appliziert auch eine nicht reduzierte Timingmarge auf die Reihe von extrapolierten Phasenwerten, um eine sichere Reihe von extrapolierten Phasenwertintervallen zu berechnen, aus welcher ein neuestes sicheres extrapoliertes Phasenwertintervall identifiziert wird. Die spekulative Auswahleinheit 910 konfiguriert die sichere Registrierte-Signale-Einheit 904 dazu, die registrierten Eingabesignale 901 auszuwählen, die dem identifizierten neuesten extrapolierten Phasenwertintervall entsprechen, um die sicheren Ausgabesignale 921 zu erzeugen. Wenn die spekulative Auswahleinheit 910 kein extrapoliertes Phasenwertintervall identifiziert, werden die sicheren Ausgabesignale 921 nicht aktualisiert.
  • Die spekulative Auswahleinheit 910 verfolgt die spekulativen Ausgabesignale 911, die ausgegeben werden, und erzeugt ein Widerrufsignal 906, wenn benötigt, um früher ausgegebene spekulative Ausgabesignale 911 zu widerrufen, wenn die früher ausgegebenen spekulativen Ausgabesignale 911 nicht mit den entsprechenden sicheren Ausgabesignalen 921 übereinstimmen, die ein oder mehr Zyklen später von der spekulativen Auswahleinheit 910 erhalten werden. Widerrufene spekulative Ausgabesignale 911 werden durch die entsprechenden sicheren Ausgabesignale 921 von der empfangenden Logik ersetzt. Das Validierungssignal 928 mag aktiviert werden, bis zum S Zyklen nachdem spekulative Ausgabesignale 911 erzeugt werden. Die sichere Registrierte-Signale-Einheit 904 und die spekulative Registrierte-Signale-Einheit 905 mögen zwei oder mehr Register enthalten, wobei jedes Register dazu konfiguriert ist, die Eingabesignale 901 auf einen unterschiedlichen Übergang des Clk 202 zu sampeln. In einer Ausführungsform wird zumindest einen Teil der zwei oder mehr Register von der sicheren Registrierte-Signale-Einheit 904 und der spekulativen Registrierte-Signale-Einheit 905 gemeinsam genutzt.
  • Die 9B illustriert ein Flussdiagramm 920 von einem weiteren Verfahren zur spekulativen Synchronisierung von Signalen, gemäß einer Ausführungsform. Bei Schritt 922 berechnet die Phasenreihe-Extrapolationseinheit 908 eine Reihe von extrapolierten Phasenwerten basierend auf dem Wert der Phase 203 und dem Wert der Perioden 204, die von dem Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 bereitgestellt werden. Bei Schritt 925 appliziert die spekulative Auswahleinheit 910 eine reduzierte Timingmarge, zum Beispiel eine reduzierte Variation in ΔT oder δT, auf die Reihe von extrapolierten Phasenwerten, um eine spekulative Reihe von extrapolierten Phasenwertintervalle zu produzieren. Bei Schritt 926 identifiziert die spekulative Auswahleinheit 910 ein neuestes spekulatives extrapoliertes Phasenwertintervall. Bei Schritt 928 konfiguriert die spekulative Auswahleinheit 910 die spekulative Registrierte-Signale-Einheit 905 dazu, ein registriertes Eingabesignal auszuwählen, das dem identifizierten neuesten spekulativen extrapolierten Phasenwertintervall entspricht, um spekulative Ausgabesignale 911 zu erzeugen.
  • Bei Schritt 923 appliziert die spekulative Auswahleinheit 910 eine nicht reduzierte Timingmarge auf die Reihe von extrapolierten Phasenwerten, um eine (sichere) Reihe von extrapolierten Phasenwertintervallen zu erzeugen. Bei Schritt 927 identifiziert die spekulative Auswahleinheit 910 ein neuestes sicheres extrapoliertes Phasenwertintervall. Bei Schritt 929 konfiguriert die spekulative Auswahleinheit 910 die sichere Registrierte-Signale-Einheit 904 dazu, ein registriertes Eingabesignal auszuwählen, das dem identifizierten neuesten sicheren extrapolierten Phasenwertintervall entspricht, um sichere Ausgabesignale 921 zu erzeugen. Einer oder mehrere von den Schritten 923, 927 und 929 mögen parallel oder in Reihe mit den Schritten 925, 926 und 928 durchgeführt werden.
  • Bei Schritt 930 bestimmt die spekulative Auswahleinheit 910, ob die sicheren Ausgabesignale 921 mit den entsprechenden früher ausgegebenen spekulativen Ausgabesignalen 911 übereinstimmen. Wenn die spekulative Auswahleinheit 910 beim Schritt 930 bestimmt, dass die sicheren Ausgabesignale 921 mit den entsprechenden früher ausgegebenen spekulativen Ausgabesignalen 911 übereinstimmen, dann sind die früher ausgegebenen spekulativen Ausgabesignalen 911 sicher und das Validierungssignal 918 wird bei Schritt 934 aktiviert und die Synchronisierung der Eingabesignale 851 wird fortgesetzt. Mit anderen Worten werden die früher ausgegebenen spekulativen Ausgabesignalen 911 als nicht spekulativ markiert. Anderenfalls, wenn die sicheren Ausgabesignale 921 nicht mit den entsprechenden früher ausgegebenen spekulativen Ausgabesignalen 911 bei Schritt 931 übereinstimmen, dann bestimmt die spekulative Auswahleinheit 910, ob S Zyklen des Clk 201 aufgetreten sind, seitdem die spekulativen Ausgabesignale 911 erzeugt wurden, und wenn dem so ist, widerruft die spekulative Auswahleinheit 910 bei Schritt 936 die spekulativen Ausgabesignale 911, die den sicheren Ausgabesignalen 921 entsprechen, und die spekulativen Ausgabesignale 911 werden durch die sicheren Ausgabesignale 921 ersetzt.
  • Anderenfalls warten die spekulative Auswahleinheit 900 bei Schritt 932 darauf, dass ein anderer Zyklus des Clk 201 möglicherweise einen Wert der Phase 203 erlangt, der einem extrapolierten Phasenwert entspricht. Bei dem nächsten Zyklus des Clk 201 wird die Reihe von extrapolierten Phasenwertintervallen aktualisiert, wenn ein neuer Wert der Phase 203 bekannt ist. Wie früher in Zusammenhang mit der 8C erläutert, schränkt das Aktualisieren der Reihe von extrapolierten Phasenwertintervallen, wenn eine neue Phase 203 erhalten wird, die Phasenwertintervalle ein. Bei Schritt 930 werden die eingeschränkten extrapolierten Phasenwertintervalle mit den entsprechenden früher ausgegebenen spekulativen Ausgabesignalen 911 verglichen, um zu sehen, ob die spekulative Synchronisierung als nicht spekulativ markiert werden kann. Beachte, dass die spekulative Auswahleinheit 910 dazu konfiguriert sein mag, spekulative Ausgabesignale 911 auszugeben, während sie gleichzeitig einer oder mehrere von den Schritten 930, 931, 932, 934 und 936 durchführt.
  • In einem üblichen Anwendungsfall mag der spekulative periodische Synchronisierer 950 dazu verwendet werden, Beginnzeiger und Endzeiger eines Zuerst-Hinein-Zuerst-Hinaus-(FIFO)-Puffers zwischen den mit dem Clk 201 und dem Clk 202 assoziierten Taktdomains zu übertragen. Anders als bei konventionellen Synchronisierern müssen die Beginnzeiger und Endzeiger nicht Gray-kodiert sein, wenn der spekulative periodische Synchronisierer 950 verwendet wird. Nicht spekulative oder sicher synchronisierte Zeigerwerte sollte verwendet werden, um für den Zustand FIFO voll zu prüfen – um Überschreibungen zu vermeiden. Spekulativ synchronisierte Zeigerwerte mögen verwendet werden, um für FIFO leer Zustände zu prüfen – um Latenz zu reduzieren. Wenn der FIFO von dem leeren zu dem nicht leeren Zustand geht, werden spekulativ synchronisierte Beginn- und Endzeigerwerte von dem spekulativen periodischen Synchronisierer 950 mit niedriger Latenz erzeugt. Sicher synchronisierte Beginn- und Endzeigerwerte werden von dem spekulativen periodischen Synchronisierer 950 in dem gleichen Zyklus oder ein oder mehr Zyklen später erzeugt. Beachte, dass der spekulative periodische Synchronisierer 950 dazu konfiguriert ist, sowohl die spekulativ synchronisierten Beginn- und Endzeigerwerte als auch die sicher synchronisierten Beginn- und Endzeigerwerte bereitzustellen, zum Beispiel spekulative Ausgabesignale 911 und sichere Ausgabesignale 921.
  • Verglichen mit einem konventionellen FIFO weist der FIFO-Synchronisierer einige duplizierte Schaltkreise zusätzlich zu spekulativen periodischen Synchronisierern 950 auf, um die Beginn- und Endzeigerwerte zu synchronisieren. Insbesondere sind die Zeigerregister und Zeigervergleichslogik dupliziert. Es ist wichtig, dass die Speicherelemente innerhalb des FIFO, die der Hauptteil der Kosten für den FIFO-Synchronisierer sind, nicht dupliziert sind.
  • Unter einigen Umständen mögen Zeiten detektiert werden, während deren die Taktsignale Clk 201 und Clk 202 stabil sind, und andere Zeiten mögen detektiert werden, während deren der Periodenwert T als Folge der Variationen in dem Signal Clk 201 und/oder dem Signal Clk 202 variieren mag. In einem System, das dynamische Spannungs- und Frequenzskalierung (DVFS) verwendet, ist der Periodenwert zum Beispiel während langer Zeitdauer stabil und variiert dann sanft in einem kurzen Intervall. Unter einem anderen Umstand variiert das Signal Clk 201 und/oder das Signal Clk 202 in Frequenz, um Variationen in Versorgungsspannung zu verfolgen, und eine Variation in der Periodenwert, T, kann antizipiert werden durch Verwendung eines Spannungssensors oder durch Korrelation mit einem logischen Ereignis, das bekannterweise Spannungsvariation verursacht.
  • Unter jeglichen Umständen, bei denen Änderungen zwischen einem stabilen Periodenwert und einem variablen Periodenwert detektiert oder antizipiert werden kann, mögen verschiedene Werte für die Grenzen für die Periodenvariation ΔT oder δT verwendet werden, um Synchronisierungsperformance zu verbessern. Wenn der Wert der Periode 204 stabil ist, mag ein niedriger Wert von ΔT oder δT verwendet werden, um die während Synchronisierung verursachte Latenz zu reduzieren. Wenn der Wert der Periode 204 variabel ist, mag ein höherer Wert von ΔT oder δT verwendet werden, was höhere Latenz aber sichere Synchronisierung gibt. Falls verschiedene Graden von Variation in dem Wert der Periode 204 und/oder in der Frequenz von entweder dem Signal Clk 201 oder dem Signal Clk 202 (durch einen Spannungssensor oder durch Korrelation) detektiert werden können, können verschiedene Werte von ΔT oder δT in Abhängigkeit von dem detektierten Ausmaß an Variation ausgewählt werden. Spezifischer mögen unterschiedliche Werte von ΔT oder δT von der spekulativen periodischen Synchronisierer-Einheit 850 und/oder 900 ausgewählt und verwendet werden, um die reduzierten Timingmargen zu berechnen.
  • Die 9C illustriert einen spekulativen periodischen Synchronisierer 950, gemäß einer Ausführungsform. Der spekulative periodische Synchronisierer 950 ist an einen Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 gekoppelt, der den Wert der Phase 203 und den Wert der Periode 204 erzeugt. Der spekulative periodische Synchronisierer 950 weist eine Phasenserie-Extrapolationseinheit 955, eine spekulative Registrierte-Signale-Einheit 960 und eine spekulative Auswahleinheit 965 auf. Die Phasenserie-Extrapolationseinheit 955 erhält den Wert der Phase 203 und den Wert der Periode 204, S Zyklen nachdem die Phase und Periode gemessen wurden, und erzeugt eine Reihe von extrapolierten Phasenwerten.
  • Die spekulative Auswahleinheit 965 erhält Systeminformationen 952, die angegeben, ob die Frequenz des Clk 201 und/der des Clk 202 stabil oder variierend ist. In einer Ausführungsform gibt die Systeminformationen 952 einen Ausmaß an, mit dem die Frequenz des Clk 201 und/der des Clk 202 variieren mag. Die spekulative Auswahleinheit 965 mag die Systeminformationen 952 verwenden, um die reduzierte Timingmarge zu berechnen. In einer Ausführungsform mag die spekulative Auswahleinheit 965 eine nicht reduzierte Timingmarge verwende, wenn die Systeminformationen 952 hohe Variationen in dem Clk 201 und/oder dem Clk 202 angeben. Beachte, dass der spekulative periodische Synchronisierer 900 auch dazu konfiguriert sein mag, die Systeminformationen 952 zu erhalten und die reduzierte Timingmarge basierend auf den Systeminformationen zu berechnen.
  • Die spekulative Auswahleinheit 965 erhält den Wert der Phase 203 und die Reihe von extrapolierten Phasenwerten und appliziert die berechnete reduzierte Timingmarge, um eine spekulative Reihe von extrapolierten Phasenwertintervallen zu berechnen, aus welcher ein neuestes spekulatives extrapoliertes Phasenwertintervall identifiziert wird, das keinen Übergang des Clk 201 zum t = 0 enthält. Die spekulative Auswahleinheit 965 konfiguriert die spekulative Registrierte-Signale-Einheit 960 dazu, die registrierte Eingabesignale 951 auszuwählen, die dem identifizierten neuesten spekulativen extrapolierten Phasenwertintervall entspricht, um die spekulative Ausgabesignale 961 zu erzeugen. Wenn die spekulative Auswahleinheit 965 kein spekulatives extrapoliertes Phasenwertintervall identifiziert, werden die spekulativen Ausgabesignale 961 nicht aktualisiert und das Validierungssignal 928.
  • Die spekulative Auswahleinheit 965 verfolgt die spekulativen Ausgabesignale 961, die ausgegeben werden, und erzeugt ein Widerrufsignal 966, wie benötigt, um spekulative Ausgabesignale 961, die früher ausgegeben wurden, basierend auf dem entsprechenden Wert der Phase 203 zu wiederrufen, der, S Zyklen nachdem der Phasenwert gemessen wird, von der spekulativen Auswahleinheit 965 erhalten wird. Widerrufene spekulative Ausgabesignale 961 werden von der empfangenden Logik verworfen. Das Validierungssignal 968 mag, bis zum S Zyklen nachdem spekulative Ausgabesignale 961 erzeugt werden, aktiviert werden. Die spekulative Registrierte-Signale-Einheit 960 mag zwei oder mehr Register enthalten, wobei jedes Register dazu konfiguriert ist, die Eingabesignale 951 auf verschiedenen Übergängen des Clk 202 zu sampeln.
  • Die 9D illustriert ein weiteres Flussdiagramm von einem Verfahren 970 zur spekulativen Synchronisierung von Signalen, gemäß einer Ausführungsform. Bei Schritt 971 berechnet die Phasenserie-Extrapolationseinheit 955 eine Reihe von extrapolierten Phasenwerten basierend auf dem Wert der Phase 203 und dem Wert der Periode 204, die von dem Phasendetektor mit hoher Auflösung 200, 300, 400 oder 500 bereitgestellt wird. Bei Schritt 972 justiert die spekulative Auswahleinheit 965 eine Timingmarge-Komponente, zum Beispiel ΔTS or δT, basierend auf den Systeminformationen 952 und berechnet eine reduzierte Timingmarge.
  • Bei Schritt 975 appliziert die spekulative Auswahleinheit 965 die berechnete reduzierte Timingmarge auf die Reihe von extrapolierten Phasenwerten, um eine spekulative Reihe von extrapolierten Phasenwertintervallen zu produzieren. Bei Schritt 976 identifiziert die spekulative Auswahleinheit 965 ein neuestes spekulatives extrapoliertes Phasenwertintervall, das keinen Übergang des Clk 201 zum t = 0 enthält. Bei Schritt 978 konfiguriert die spekulative Auswahleinheit 965 die spekulative Registrierte-Signale-Einheit 960 dazu, ein registriertes Eingabesignal auszuwählen, das dem neuesten spekulativen extrapolierten Phasenwertintervall entspricht, um die spekulativen Ausgabesignale 961 zu erzeugen.
  • Bei Schritt 980 bestimmt die spekulative Auswahleinheit 965, ob das identifizierte neueste spekulative extrapolierte Phasenwertintervall sicher war. Falls die spekulative Auswahleinheit 965 beim Schritt 980 bestimmt, dass das identifizierte neueste spekulative extrapolierte Phasenwertintervall sicher war, dann wird das Validierungssignal 968 bei Schritt 984 aktiviert und die Synchronisierung der Eingabesignale 951 wird fortgesetzt. Anderenfalls bestimmt die die spekulative Auswahleinheit 965 bei Schritt 985, ob S Zyklen des Clk 201 aufgetreten sind, seitdem die spekulativen Ausgabesignale 961 erzeugt wurden, und wenn dem so ist, widerruft die spekulative Auswahleinheit 965 die spekulativen Ausgabesignale 961, die S Zyklen früher erzeugt wurden.
  • Falls, beim Schritt 985, S Zyklen nicht aufgetreten sind, seitdem die spekulativen Ausgabesignale 961 erzeugt wurden, dann wartet die spekulative Auswahleinheit 965 darauf, dass ein anderer Zyklus des Clk 201 möglicherweise einen Wert der Phase 203 erlangt, der einem extrapolierten Phasenwert entspricht. Bei dem nächsten Zyklus des Clk 201 wird die Reihe von extrapolierten Phasenwertintervallen aktualisiert, wenn ein neuer Wert der Phase 203 bekannt wird. Wie früher in Zusammenhang mit der 8C erläutert, schränkt das Aktualisieren der Reihe von extrapolierten Phasenwertintervallen, wenn eine neue Phase 203 erhalten wird, die Phasenwertintervallen ein. Bei Schritt 989 werden die eingeschränkten extrapolierten Phasenwertintervallen geprüft, um zu sehen, ob die spekulative Synchronisierung als nicht spekulativ markiert werden kann. Beachte, dass die spekulative Auswahleinheit 965 dazu konfiguriert sein mag, die spekulativen Ausgabesignale 961 zu erzeugen, während sie gleichzeitig ein oder mehrere von den Schritten 980, 984, 985, 986 und 988 durchführt.
  • Die 10 stellt ein beispielhaftes System 1000 dar, in welchem die verschiedenen Architektur und/oder Funktionalität der verschiedenen vorhergehenden Ausführungsformen von dem spekulativen periodischen Synchronisator 850, dem spekulativen periodischen Synchronisator 900 oder dem spekulativen periodischen Synchronisator 950 implementiert werden mögen. Wie gezeigt, wird das System 1000 bereitgestellt, das zumindest einen zentralen Prozessor 1001 aufweist, der mit einem Kommunikationsbus 1002 verbunden ist. Der Kommunikationsbus 1002 mag unter Verwendung jedes geeigneten Protokolls implementiert sein, wie zum Beispiel PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphichs Port), HyperTransport oder jede andere Bus- oder Punkt-zu-Punkt-Protokoll(e). Das System 1000 weist auch einen Hauptspeicher 1004 auf. Steuerungslogik (Software) und Daten sind in dem Hauptspeicher 1004 gespeichert, der die Form eines Speichers mit direktem Zugriff (RAM) annehmen mag.
  • Das System 1000 weist auch Eingabevorrichtungen 1012, einen Grafikprozessor 1006 und ein Display 1008 auf, das heißt ein konventionelles CRT (Kathodenstrahlröhre), LCD (Flüssigkristalldisplay), LED (Licht emittierende Diode), Plasmadisplay oder ähnliches. Benutzereingaben mögen von den Eingabevorrichtungen 1012 empfangen werden, zum Beispiel Tastatur, Maus, Touchpad, Mikrofon und ähnliches. In einer Ausführungsform mag der Grafikprozessor 1006 eine Mehrzahl von Shader-Modulen (engl. „shader modules”), ein Rasterisierungsmodul (engl. „rasterization module”) etc. aufweisen. Jedes der vorhergehenden Module mag sich sogar auf einer einzigen Halbleiterplattform befinden, um eine Grafikverarbeitungseinheit (GPU) zu bilden.
  • In der vorliegenden Beschreibung mag eine einzige Halbleiterplattform auf einen alleinigen einheitlichen halbleiterbasierten integrierten Schaltkreis oder Chip verweisen. Es sollte beachtet werden, dass der Begriff einzige Halbleiterplattform auch auf Mehrchipmodule mit erhöhter Konnektivität, die Auf-dem-Chip-Operation (engl. „on-chip Operation”) simuliert, verweisen mag und erhebliche Verbesserungen gegenüber der Verwendung einer konventionellen Implementierung mit zentralem Verarbeitungseinheit (CPU) und Bus erzielen mag. Die verschiedenen Module mögen selbstverständlich auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers angeordnet werden. Ein oder mehrere von den in der 10 gezeigten integrierten Schaltkreisen mögen den spekulativen periodischen Synchronisator 850, den spekulativen periodischen Synchronisator 900 oder den spekulativen periodischen Synchronisator 950 aufweisen, um Signale zwischen verschiedenen Taktdomains zu übermitteln.
  • Das System 1000 mag auch einen sekundären Speicher 1010 aufweisen. Der Sekundäre Speicher 1010 weist zum Beispiel einen Festplattenlaufwerk und/oder einen entfernbaren Speicherlaufwerk (engl. „removable storage drive”), darstellend einen Floppy-Disk-Laufwerk, einen Magnetbandlaufwerk, einen Compact-Disk-Laufwerk, einen Digital-Versatile-Disk-(DVD)-Laufwerk, ein Aufnahmegerät, einen Universal-Serial-Bus-(USB)-Flashspeicher auf. Der entfernbare Speicherlaufwerk liest von und/oder schreibt zu einer entfernbaren Speichereinheit in einer wohlbekannten Art und Weise.
  • Computerprogramme oder Computersteuerungsalgorithmen mögen in dem Hauptspeicher 1004 und/oder in dem sekundären Speicher 1010 gespeichert sein. Solche Computerprogramme machen es, wenn sie ausgeführt werden, für das System 1000 möglich, verschiedene Funktionen durchzuführen. Der Speicher 1004, der Speicher 1010 und/oder jeglicher andere Speicher sind mögliche Beispiele von computerlesbaren Medien.
  • In einer Ausführungsform mag die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren im Kontext des zentralen Prozessors 1001, des Grafikprozessors 1006, eines integrierten Schaltkreises (nicht gezeigt), der zu zumindest einen Teil der Fähigkeiten von sowohl dem Hostprozessor 1001 als auch dem Grafikprozessor 1006 aufweist, eines Chipsatzes (das heißt, eine Gruppe von integrierten Schaltkreisen, die zum Arbeiten konzipiert sind und als eine Einheit zum Ausführen verwandter Funktionen verkauft werden) und/oder übrigens auch irgendeines anderen integrierten Schaltkreises implementiert werden.
  • Die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren mögen aber auch in dem Kontext eines generellen bzw. allgemeinen Computersystems, eines Leiterplattensystems, eines Spielkonsolsystems, das für Unterhaltungszwecke dediziert ist, eines anwendungsspezifischen Systems und/oder jegliches anderen gewünschten Systems implementiert werden. Zum Beispiel, mag das System 1000 die Form eines Desktopcomputers, eines Laptopcomputers, eines Servers, einer Arbeitsstation, Spielkonsolen, eingebettetes Systems und/oder jeglicher anderen Art von Logik annehmen. Das System 1000 mag aber auch die Form verschiedener anderen Vorrichtungen annehmen, einschließlich einer persönlichen digitalen Assistenten-Vorrichtung (PDA), einer Mobiltelefon-Vorrichtung, eines Fernsehers etc., ohne auf diese begrenzt zu sein.
  • Das System 1000 mag ferner, obwohl dies nicht gezeigt ist, an ein Netzwerk (zum Beispiel ein Telekommunikationsnetzwerk, ein lokales Netzwerk (LAN), ein drahtloses Netzwerk, ein Weitverkehrsnetz (WAN), wie das Internetz, ein Peer-to-Peer-Netzwerk, ein Kabelnetzwerk oder ähnliches) zu Kommunikationszwecken gekoppelt sein.
  • Während verschiedene Ausführungsformen oben beschrieben worden sind, sollte es verstanden werden, dass diese nur beispielhaft und nicht einschränkend dargestellt worden sind. Folglich sollte die Weite und der Umfang einer bevorzugten Ausführungsform nicht von einer jeglichen der oben beschriebenen Ausführungsformen begrenzt werden, sondern nur in Übereinstimmung mit den nachfolgenden Ansprüchen und deren Äquivalenten definiert werden.

Claims (20)

  1. Ein Verfahren aufweisend: Erzeugen eines ersten Satzes von verzögerten Versionen eines ersten Taktsignals; Erzeugen eines zweiten Satzes von verzögerten Versionen eines zweiten Taktsignals; Sampeln des zweiten Satzes unter Verwendung des ersten Satzes, um ein Array von Taktsamples in einer Domain zu produzieren, die dem ersten Taktsignal entspricht; und Lokalisieren zumindest einer Flankenindikation innerhalb des Arrays von Taktsamples.
  2. Das Verfahren gemäß Anspruch 1, wobei ein Abstand des ersten Satzes von verzögerten Versionen des ersten Taktsignals einer Periode des ersten Taktsignals verfolgt.
  3. Das Verfahren gemäß Anspruch 1, wobei ein Abstand des zweiten Satzes von verzögerten Versionen des zweiten Taktsignals einer Periode des zweiten Taktsignals verfolgt.
  4. Das Verfahren gemäß Anspruch 1, ferner aufweisend: Sampeln des ersten Taktsignals unter Verwendung des ersten Satzes von verzögerten Versionen des ersten Taktsignals, um eine Sequenz von ersten Taktsamples in der Domain zu produzieren, die dem ersten Taktsignal entspricht; und Lokalisieren einer ersten Flankenindikation innerhalb der Sequenz von ersten Taktsamples.
  5. Das Verfahren gemäß Anspruch 4, ferner aufweisend: Erzeugen einer Maske basierend auf der ersten Flankenindikation innerhalb der Sequenz von ersten Taktsamples; und Applizieren der Maske auf das Array von Taktsamples.
  6. Das Verfahren gemäß Anspruch 1, wobei das Lokalisieren der zumindest einen Flankenindikation ein Lokalisieren einer ersten Flankenindikation und ein Lokalisieren einer zweiten Flankenindikation aufweist, und ferner aufweisend: Berechnen einer Steigung einer Linie, die von der ersten Flankenindikation und der zweiten Flankenindikation gebildet ist; und Berechnen eines Schnittpunktes der Linie mit einer Achse.
  7. Das Verfahren gemäß Anspruch 6, wobei die Steigung einen relativen Periodenwert basierend auf dem zweiten Taktsignal und dem ersten Taktsignal repräsentiert.
  8. Das Verfahren gemäß Anspruch 6, wobei der Schnittpunkt einen relativen Phasenwert basierend auf dem zweiten Taktsignal und dem ersten Taktsignal repräsentiert.
  9. Das Verfahren Gemäß Anspruch 1, ferner aufweisend: Feststellen, dass zwei Flankenindikationen der zumindest einen Flankenindikation sich in einer einzigen Spalte des Arrays von Taktsamples befindet; und Auswickeln des Arrays von Taktsamples.
  10. Das Verfahren Gemäß Anspruch 1, wobei der erste Satz von verzögerten Versionen des ersten Taktsignals unter Verwendung eines closed-loop Verzögerungsschaltkreises erzeugt wird.
  11. Das Verfahren Gemäß Anspruch 1, ferner aufweisend ein Verarbeiten einer ersten Flankenindikation und einer zweiten Flankenindikation, um einen Periodenwert zu berechnen, der eine relative Periode zwischen dem zweiten Taktsignal und dem ersten Taktsignal repräsentiert.
  12. Das Verfahren Gemäß Anspruch 1, ferner aufweisend ein Verarbeiten einer ersten Flankenindikation und einer zweiten Flankenindikation, um einen Phasenwert zu berechnen, der eine Phase des zweiten Taktsignals relativ zu dem ersten Taktsignal repräsentiert.
  13. Das Verfahren Gemäß Anspruch 1, wobei eine Frequenz des ersten Taktsignals über Zeit variiert.
  14. Das Verfahren Gemäß Anspruch 1, wobei die Frequenz des ersten Taktsignals als Reaktion auf Variationen in einer Versorgungsspannung variiert.
  15. Das Verfahren Gemäß Anspruch 1, wobei eine Frequenz des zweiten Taktsignals über Zeit variiert.
  16. Ein integrierter Schaltkreis aufweisend: einen ersten Schaltkreis, der in einer ersten Taktdomain arbeitet, die einem ersten Taktsignal entspricht; einen zweiten Schaltkreis, der in einer zweiten Taktdomain arbeitet, die einem zweiten Taktsignal entspricht; und einen Phasendetektor, der konfiguriert ist zum: Erzeugen eines ersten Satzes von verzögerten Versionen des ersten Taktsignals; Erzeugen eines zweiten Satzes von verzögerten Versionen des zweiten Taktsignals; Sampeln des zweiten Satzes unter Verwendung des ersten Satzes, um ein Array von Taktsamples in einer Domain zu produzieren, die dem ersten Taktsignal entspricht; und Lokalisieren zumindest einer Flankenindikation innerhalb des Arrays von Taktsamples.
  17. Der integrierte Schaltkreis gemäß Anspruch 16, wobei der Phasendetektor einen open-loop Verzögerungsschaltkreis aufweist, der zum Erzeugen des ersten Satzes von verzögerten Versionen des ersten Taktsignals konfiguriert ist.
  18. Der integrierte Schaltkreis gemäß Anspruch 16, wobei der Phasendetektor ferner konfiguriert ist zum Verarbeiten der zumindest einen Flankenindikation, um einen Phasenwert zu berechnen, der eine Phase des zweiten Taktsignals relativ zu dem ersten Taktsignal repräsentiert.
  19. Der integrierte Schaltkreis gemäß Anspruch 16, wobei der Phasendetektor ferner konfiguriert ist zum Verarbeiten der zumindest einen Flankenindikation, um einen Periodenwert zu berechnen, der eine relative Periode zwischen dem zweiten Taktsignal und dem ersten Taktsignal repräsentiert.
  20. Der integrierte Schaltkreis gemäß Anspruch 16, wobei der Phasendetektor einen closed-loop Verzögerungsschaltkreis aufweist, der zum Erzeugen des ersten Satzes von verzögerten Versionen des ersten Taktsignals konfiguriert ist.
DE102013222369.2A 2012-11-20 2013-11-04 Ein Matrix-Phasendetektor Active DE102013222369B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US13/681,929 US8760204B2 (en) 2012-11-20 2012-11-20 Variation-tolerant periodic synchronizer
US13/681,929 2012-11-20
US13/688,175 2012-11-28
US13/688,175 US8866511B2 (en) 2012-11-20 2012-11-28 Matrix phase detector

Publications (3)

Publication Number Publication Date
DE102013222369A1 true DE102013222369A1 (de) 2014-05-22
DE102013222369A9 DE102013222369A9 (de) 2014-07-24
DE102013222369B4 DE102013222369B4 (de) 2019-01-24

Family

ID=50625778

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013222369.2A Active DE102013222369B4 (de) 2012-11-20 2013-11-04 Ein Matrix-Phasendetektor

Country Status (4)

Country Link
US (1) US8866511B2 (de)
CN (1) CN103840802A (de)
DE (1) DE102013222369B4 (de)
TW (1) TWI559684B (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9164134B2 (en) 2012-11-13 2015-10-20 Nvidia Corporation High-resolution phase detector
US9471091B2 (en) 2012-11-28 2016-10-18 Nvidia Corporation Periodic synchronizer using a reduced timing margin to generate a speculative synchronized output signal that is either validated or recalled
GB2519181B (en) * 2014-03-31 2015-09-09 Imagination Tech Ltd Clock verification
US9467150B2 (en) * 2015-03-02 2016-10-11 Sandisk Technologies Llc Dynamic clock rate control for power reduction
US9753522B2 (en) 2015-03-02 2017-09-05 Sandisk Technologies Llc Dynamic clock rate control for power reduction
US11417370B2 (en) 2020-08-12 2022-08-16 Taiwan Semiconductor Manufacturing Company, Ltd. Memory device

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5511100A (en) 1993-12-13 1996-04-23 Motorola, Inc. Method and apparatus for performing frequency detection
US5694377A (en) * 1996-04-16 1997-12-02 Ltx Corporation Differential time interpolator
US6194938B1 (en) 1998-09-28 2001-02-27 Texas Instruments Incorporated Synchronous integrated clock circuit
US6294940B1 (en) * 2000-06-21 2001-09-25 Infineon Technologies North America Corp. Symmetric clock receiver for differential input signals
US7126396B1 (en) * 2003-07-16 2006-10-24 National Semiconductor Corporation System for clock duty cycle stabilization
US6947493B2 (en) * 2003-10-10 2005-09-20 Atmel Corporation Dual phase pulse modulation decoder circuit
US7236555B2 (en) * 2004-01-23 2007-06-26 Sunrise Telecom Incorporated Method and apparatus for measuring jitter
US7599457B2 (en) * 2005-08-08 2009-10-06 Lattice Semiconductor Corporation Clock-and-data-recovery system having a multi-phase clock generator for one or more channel circuits
JP4850473B2 (ja) * 2005-10-13 2012-01-11 富士通セミコンダクター株式会社 デジタル位相検出器
TWI332322B (en) * 2006-12-12 2010-10-21 Realtek Semiconductor Corp Sample circuit and sample method thereof
US7804344B2 (en) 2007-04-20 2010-09-28 Micron Technology, Inc. Periodic signal synchronization apparatus, systems, and methods
US7667549B2 (en) * 2007-04-26 2010-02-23 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device and driving method thereof
KR101082415B1 (ko) * 2007-07-24 2011-11-11 고려대학교 산학협력단 계층구조 위상 디지털 변환기
US7816960B2 (en) * 2007-08-09 2010-10-19 Qualcomm Incorporated Circuit device and method of measuring clock jitter
JP2010021686A (ja) * 2008-07-09 2010-01-28 Toshiba Corp デジタル位相検出器及びデジタル位相同期回路
JP5321864B2 (ja) * 2009-03-10 2013-10-23 日本電気株式会社 デジタル位相比較器
US8098085B2 (en) * 2009-03-30 2012-01-17 Qualcomm Incorporated Time-to-digital converter (TDC) with improved resolution
WO2010150304A1 (ja) * 2009-06-22 2010-12-29 株式会社アドバンテスト 位相検出装置、試験装置および調整方法
JP2012070087A (ja) * 2010-09-21 2012-04-05 Toshiba Corp デジタル位相比較器及びデジタル位相同期回路
US9164134B2 (en) 2012-11-13 2015-10-20 Nvidia Corporation High-resolution phase detector
US8760204B2 (en) 2012-11-20 2014-06-24 Nvidia Corporation Variation-tolerant periodic synchronizer
US9471091B2 (en) 2012-11-28 2016-10-18 Nvidia Corporation Periodic synchronizer using a reduced timing margin to generate a speculative synchronized output signal that is either validated or recalled

Also Published As

Publication number Publication date
US20140139276A1 (en) 2014-05-22
TWI559684B (zh) 2016-11-21
TW201433090A (zh) 2014-08-16
DE102013222369B4 (de) 2019-01-24
DE102013222369A9 (de) 2014-07-24
US8866511B2 (en) 2014-10-21
CN103840802A (zh) 2014-06-04

Similar Documents

Publication Publication Date Title
DE102013222669B4 (de) Ein variationstoleranter periodischer Synchronisator
DE102013222682B4 (de) Spekulativer periodischer Synchronisierer
DE102013222369B4 (de) Ein Matrix-Phasendetektor
TWI475416B (zh) 多電源領域靜態時序分析
DE102013221028B4 (de) Hoch-Auflösung-Phasen-Detektor
DE112016005671T5 (de) Zeitbasissynchronisierung
US9166773B2 (en) System timing margin improvement of high speed I/O interconnect links by using fine training of phase interpolator
DE112017004922T5 (de) Techniken für Zeitstempel mit geringem Stromverbrauch und hoher Genauigkeit
Kinniment et al. Measuring deep metastability and its effect on synchronizer performance
US20110283131A1 (en) Computer-readable recording medium, method, and apparatus for calculating power consumption information
Su et al. A general method to make multi-clock system deterministic
US9143315B2 (en) Predictive periodic synchronization using phase-locked loop digital ratio updates
US11552777B2 (en) Time domains synchronization in a system on chip
US8959398B2 (en) Multiple clock domain debug capability
Polzer et al. Refined metastability characterization using a time-to-digital converter
US9184752B2 (en) Low power digital fractional divider with glitchless output
US8957704B1 (en) High speed phase selector with a glitchless output used in phase locked loop applications
Cheng Design and optimization of asynchronous FIFO based on Verilog HDL
Balasubramanian et al. Deterministic low-latency data transfer across non-integral ratio clock domains
CN116991227A (zh) 一种获取高精度信号的装置、SoC芯片以及电子设备
CN108780385A (zh) Ad结果读出电路
Wang New method of SOC clock design based on hierarchical mode
DE102015120321A1 (de) Pausierbarer bisynchroner FIFO

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final