DE102004014201B4 - Steuerungsanordnung für einen programmierbaren Taktsynchronisierer und Computersystem mit einer solchen Anordnung - Google Patents

Steuerungsanordnung für einen programmierbaren Taktsynchronisierer und Computersystem mit einer solchen Anordnung Download PDF

Info

Publication number
DE102004014201B4
DE102004014201B4 DE102004014201A DE102004014201A DE102004014201B4 DE 102004014201 B4 DE102004014201 B4 DE 102004014201B4 DE 102004014201 A DE102004014201 A DE 102004014201A DE 102004014201 A DE102004014201 A DE 102004014201A DE 102004014201 B4 DE102004014201 B4 DE 102004014201B4
Authority
DE
Germany
Prior art keywords
clock
core
bus
synchronizer
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.)
Expired - Fee Related
Application number
DE102004014201A
Other languages
English (en)
Other versions
DE102004014201A1 (de
Inventor
Richard W. Dallas Adkisson
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
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
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102004014201A1 publication Critical patent/DE102004014201A1/de
Application granted granted Critical
Publication of DE102004014201B4 publication Critical patent/DE102004014201B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

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/12Synchronisation of different clock signals provided by a plurality of clock generators

Abstract

Eine Steuerungsanordnung (122, 124) zum Bewirken einer versatztoleranten Datenübertragung zwischen einem Kerntaktbereich und einem Bustaktbereich, wobei der Kerntaktbereich mit einem Kerntaktsignal (106) wirksam ist und der Bustaktbereich mit einem Bustaktsignal (108) wirksam ist, wobei das Kern- und Bus-Taktsignal (10b, 108) ein Verhältnis aufweisen, und die folgende Merkmale aufweist:
einen Bustakt-Synchronisierer-Steuerungsabschnitt (600), der wirksam ist, um einen Satz von Taktbeziehungs-Steuersignalen (614, 616, 618) und einen ersten Satz von Steuersignalen zu erzeugen, die als ein Satz von Busbereich-Synchronisierer-Steuersignalen (314, 316, 318) an einem Bus-zu-Kern-Synchronisierer (105B) und einem Kern-zu-Bus-Synchronisierer (105A) bereitgestellt sind; und
einen Kerntakt-Synchronisierer-Steuerungsabschnitt (700), der wirksam ist, um einen zweiten Satz von Steuersignalen zu erzeugen, die bei dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A) als ein Satz von Kernbereich-Synchronisierer-Steuersignalen (308, 310, 312) bereitgestellt sind, wobei der Kerntakt-Synchronisierer-Steuerungsabschnitt (700) teilweise durch die Taktbeziehungs-Steuersignale (614, 616, 618), die durch den Bustakt-Synchronisierer-Steuerungsabschnitt geliefert werden, und durch Konfigurations-Informationen gesteuert ist, die unterschiedliche Versatztoleranzen...

Description

  • Die Anmeldung betrifft eine Steuerungsanordnung für einen programmierbaren Taktsynchronisierer sowie ein Computersystem mit einer solchen Anordnung.
  • Digitale elektronische Systeme, z. B. Computersysteme, müssen häufig unter Verwendung unterschiedlicher Schnittstellen kommunizieren, die jeweils bei einer optimierten Geschwindigkeit für verbessertes Verhalten betrieben werden. Üblicherweise werden Mehrfachtastsignale mit unterschiedlichen Frequenzen zum Liefern einer geeigneten Zeitgebung für die Schnittstellen verwendet. Ferner beziehen sich die Frequenzen solcher Taktsignale allgemein auf eine vorbestimmte Weise aufeinander. Zum Beispiel kann ein Kern- oder System-Takt, der bei einer bestimmten Frequenz (Fc) läuft, als Haupttakt in einem typischen Computersystem verwendet werden, zum Bereitstellen einer Zeitbasis im Hinblick auf einen spezifischen Abschnitt seiner digitalen Schaltungsanordnung. Andere Abschnitte der digitalen Schaltungsanordnung des Computersystems (wie z. B. ein Bussegment und die logische Schaltungsanordnung, die auf demselben angeordnet ist), können unter Verwendung von Zeitgebungssignalen getaktet werden, die aus dem Haupttakt hergeleitet werden, wobei die hergeleiteten Frequenzen (FD) folgender Beziehung folgen: Fc/FD ≥ 1.
  • Aufgrund der asynchronen – aber verwandten – Eigenschaft der zugehörigen digitalen Schaltungsabschnitte, wird die Synchronisiererschaltungsanordnung häufig in Computersystemen verwendet, um Datenübertragungsoperationen über eine Taktbereichsgrenze zu synchronisieren, um zeitgebungsbezogene Datenfehler zu vermeiden. Es ist üblicherweise erforderlich, daß eine solche Synchronisiererschaltungsanordnung eine niedrige Latenzzeit besitzt (was eine präzise Steuerung der asynchronen Takte erfordert, die jeweils die Schaltungsabschnitte in zwei unterschiedlichen Taktbereichen takten). Ferner, da Phasenregelschleifen (PLLs; PLL = Phase-Locked Loop), die bei herkömmlichen Anordnungen verwendet werden, um Takte unterschiedlicher aber verwandter Frequenzen zu erzeugen, einen großen Betrag an Eingangs-/Ausgangs-(I/O-)Jitter aufweisen können, ist es wesentlich, daß die Synchronisiererschaltungsanordnung in der Lage ist, beträchtliche Beträge einer Niederfrequenzphasendifferenz (oder eines Versatzes) zwischen den dadurch erzeugten Takten zu tolerieren.
  • Aus der US 2002/0199124 A1 ist bereits ein System zum Synchronisieren der Datenübertragung über eine Grenze zwischen zwei Taktsystemen bekannt, welches mit einer Taktsynchronisationssteuerung arbeitet, welche zusammen mit einer phasengerasteten Regelschleife zusammenwirkt.
  • Aus der US 2002/0196886 A1 ist eine Taktsynchronisationssteuerung mit einer Synchronisationspulskompensation bekannt.
  • Der Erfindung liegt die Aufgabe zugrunde, eine Steuerungsanordnung sowie ein Computersystem zu schaffen, welche in der Lage sind, erhebliche Phasendifferenzen zwischen einem Kerntaktbereich und einem Bustaktbereich zu tolerieren.
  • Diese Aufgabe wird durch eine Steuerungsanordnung gemäß Anspruch 1 sowie durch ein Computersystem gemäß Anspruch 10 gelöst.
  • Eine Synchronisierersteuerungsanordnung wird geschaffen, zum Bewirken einer Datenübertragung über eine Taktgrenze zwischen einem Kerntaktbereich und einem Bustaktbereich, wobei der Kerntaktbereich mit einem Kerntaktsignal wirksam ist und der Bustaktbereich mit einem Bustaktsignal wirksam ist. Ein Bustakt-Synchronisierer-Steuerungsabschnitt ist wirksam, um einen Satz von Taktbeziehungs-Steuersignalen zu erzeugen, wobei zumindest ein Abschnitt der Signale beim Erzeugen eines Satzes von Busbereich-Synchronisierer-Steuersignalen verwendet wird, hin zu Bus-zu-Kern- und Kern-zu-Bus-Synchronisierern. Ein Kerntakt-Synchronisierer-Steuerungsabschnitt wird geschaffen, zum Erzeugen eines Satzes von Kernbereich-Synchronisierer-Steuersignalen hin zu den Synchronisierern. Der Kerntaktsynchronisierer-Steuerungsabschnitt ist wirksam, ansprechend auf die Taktbeziehungs-Steuersignale, sowie auf Konfigurations-Informationssignale, die unterschiedliche Versatztoleranzen und Latenzzeitwerte anzeigen, die den Taktsignalen zugeordnet sind.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 ein Blockdiagramm eines Ausführungsbeispiels eines programmierbaren Synchronisierersystems zum Bewirken einer Datenübertragung über eine Taktgrenze;
  • 2 ein Zeitgebungsdiagramm von zwei Taktbereichen mit einem 5:4-Frequenzverhältnis, wobei das programmierbare Synchronisierersystem aus 1 zum Bewirken einer Datenübertragung über die Taktgrenze verwendet werden kann;
  • 3 ein Zeitgebungsdiagramm der verschiedenen Steuersignale, die dem programmierbaren Synchronisie rersystem zum Übertragen von Daten zwischen zwei Taktbereichen mit einem 5:4-Frequenzverhältnis zugeordnet sind;
  • 4A ein Blockdiagramm eines Ausführungsbeispiels einer Synchronisiererschaltung zum Übertragen von Daten von einem ersten Taktbereich (d. h. „schneller Taktbereich" oder „Kerntaktbereich") zu einem zweiten Taktbereich (d. h. „langsamer Taktbereich" oder „Bustaktbereich"), wobei die Taktbereiche ein 5:4-Frequenzverhältnis aufweisen;
  • 4B ein Zeitgebungsdiagramm, das der Synchronisierer-Schaltung zugeordnet ist, die in 4A gezeigt ist;
  • 5A ein Blockdiagramm eines Ausführungsbeispiels einer Synchronisierer-Schaltung zum Übertragen von Daten von dem zweiten Taktbereich (d. h. „langsamer Taktbereich" oder „Bustaktbereich") zu dem ersten Taktbereich (d. h. „schneller Taktbereich" oder „Kerntaktbereich"), wobei die Taktbereiche ein 5:4-Frequenzverhältnis aufweisen;
  • 5B ein Zeitgebungsdiagramm, das der Synchronisierer-Schaltung zugeordnet ist, die in 4B gezeigt ist;
  • 6 ein Blockdiagramm eines Ausführungsbeispiels einer Bustaktsynchronisierersteuerung zum Steuern einer Bus-zu-Kern-Synchronisiererschaltung, die in 5A gezeigt ist;
  • 7 ein Blockdiagramm eines Ausführungsbeispiels einer Kerntaktsynchronisierersteuerung zum Steuern einer Kern-zu-Bus-Synchronisiererschaltung, die in 4A gezeigt ist;
  • 8A ein Blockdiagramm eines Ausführungsbeispiels eines SYNC-Abtastlogikblocks;
  • 8B ein Blockdiagramm eines Ausführungsbeispiels eines Synchronisierungsverhältnis-Abtastblocks, bereitgestellt als Teil der Kerntaktsynchronisierersteuerung, die in 7 gezeigt ist;
  • 8C ein Blockdiagramm eines Ausführungsbeispiels eines Sequenzabtastblocks, der als Teil der Kerntaktsynchronisierersteuerung vorgesehen ist, die in 7 gezeigt ist;
  • 8D ein Blockdiagramm eines Ausführungsbeispiels eines syncb0-Abtastblocks, bereitgestellt als Teil der Kerntaktsynchronisierersteuerung, die in 7 gezeigt ist;
  • 8E ein Blockdiagramm eines Ausführungsbeispiels eines Synchronisierungspulserfassungsblocks, bereitgestellt als Teil der Kerntakt-Synchronisierer-Steuerung, die in 7 gezeigt ist;
  • 9 ein Flußdiagramm der verschiedenen Operationen eines Ausführungsbeispiels eines Synchronisierersteuerungsverfahrens der vorliegenden Erfindung.
  • In den Zeichnungen werden gleiche oder ähnliche Elemente mit identischen Bezugszeichen in den verschiedenen Ansichten derselben bezeichnet, und die verschiedenen gezeigten Elemente sind nicht notwendiger Weise maßstabsgetreu gezeichnet. Bezug nehmend nun auf 1 ist dort ein Ausführungsbeispiel eines programmierbaren Synchronisierersystems 100 zum Bewirken einer Datenübertragung über eine Taktgrenze zwischen einem ersten Taktbereich (d. h. „schneller Taktbereich"), der N Taktsignale aufweist, und einen zweiten Taktbereich (d. h. „langsamer Taktbereich"), der M Taktzyklen aufweist, derart gezeigt, daß N/M > 1. Üblicherweise gilt M = (N – 1), und mittels einer exemplarischen Implementierung kann das Synchronisierersystem 100 als Teil eines Computersystems vorgesehen sein, zum Übertragen von Daten zwischen einem schnelleren Kerntaktbereich (der z. B. mit einem Kerntaktsignal von 250 MHz arbeitet) und einem langsameren Bustaktbereich (der z. B. mit einem Bustaktsignal von 200 MHz arbeitet), mit einem 5:4-Frequenzverhältnis. Dementsprechend, zu Zwecken dieser vorliegenden Patentanmeldung, werden die Ausdrücke „erster Takt" und „Kerntakt" als Synonyme im Hinblick auf einen schnellen Taktbereich verwendet; auf ähnliche Weise werden die Ausdrücke „zweiter Takt" und „Bustakt" im Hinblick auf einen langsamen Taktbereich verwendet.
  • Eine Phasenregelschleifenschaltung (PLL-Schaltung) 104 ist wirksam, um einen SYNC-Puls 110 und ein Bustakt-(d. h. zweites Takt-)Signal 108 (bezeichnet als bus_clock) basierend auf einem Kerntakt-(d. h. erstes Takt-)Signal 106 (bezeichnet als core_clock) zu erzeugen, das zu derselben geliefert wird. Wie nachfolgend ersichtlich ist, stellt der SYNC-Puls 110 einen Referenzpunkt zum Koordinieren von Datenübertragungsoperationen bereit und wird HOCH-getrieben, wenn die Signale bus_clock und core_clock zusammenfallende ansteigende Flanken aufweisen. Die zwei Taktsignale 106, 108 und der SYNC-Puls 110 werden zu einem Synchronisierer-/Steuerungs-Block 102 geliefert, der die Taktgrenze zwischen einem ersten Taktbereich (d. h. Kerntaktbereich) und einem zweiten Taktbereich (d. h. Bustaktbereich) zum Bewirken einer Datenübertragung über die Grenze spreizt. Bezugszeichen 103A und 103B beziehen sich auf eine Schaltungsanordnung, die in dem ersten bzw. zweiten Taktbereich angeordnet ist, z. B. Kerntaktbereichlogik und Bustaktbereichlogik, die Daten zwischen denselben senden und empfangen, wie es über die Synchronisierer 105A und 105B ermöglicht wird, die nachfolgend hierin detaillierter beschrieben werden.
  • Jedes der Signale core_clock und bus_clock 106 und 108 wird zuerst zu einem jeweiligen Taktverteilungsbaumblock geliefert, zum Erzeugen eines verteilten Taktsignals, das zu verschiedenen Teilen des Synchronisierer-/Steuerungs-Blocks 102 geliefert wird. Das Bezugszeichen 112 bezieht sich auf den Taktverteilungsbaum, der mit dem core_clock-Signal 106 wirksam ist, um das verteilte core_clock-Signal zu erzeugen, das als „c" etikettiert ist und mit dem Bezugszeichen 106' in 1 gezeigt ist. Auf ähnliche Weise bezieht sich das Bezugszeichen 114 auf den Taktverteilungsbaum 114, der mit dem bus_clock-Signal 108 wirksam ist, um das verteilte bus_clock-Signal zu erzeugen, das als „b" etikettiert ist und mit dem Bezugszeichen 108' in 1 gezeigt ist. Wie ein Fachmann auf dem Gebiet ohne weiteres erkennen sollte, sind die verteilten Taktsignale im wesentlichen die gleichen wie die Eingangstaktsignale. Dementsprechend werden das core_clock-Signal 106 und sein verteiltes Gegenstück c 106' hierin nachfolgend gleich behandelt. Ferner werden das bus_clock-Signal 108 und sein verteiltes Gegenstück b 108' auf ähnliche Weise als äquivalent behandelt.
  • Ein SYNC-Abtastlogikblock 116 ist wirksam ansprechend auf die verteilten Taktsignale 106', 108' und das SYNC-Pulssignal 110, um ein Paar von abgetasteten SYNC-Pulsen zu erzeugen, die zu einer geeigneten Synchronisierersteuerungsschaltungsanordnung weitergeleitet werden. Wie in weiteren Einzelheiten Bezug nehmend auf 8A gezeigt ist, werden die abgetasteten SYNC-Pulse bei einem Ausführungsbeispiel wie folgt hergestellt. Der SYNC-Puls 110 wird zweimal durch zwei Flip-Flop-(FF-)Elemente abgetastet, die an der ansteigenden Flanke des verteilten core_clock, c 106', getaktet werden. Wie offensichtlich ist, ist das Abtasten durch zwei FF-Elemente beim Beseitigen von Metastabilität wirksam, die dem SYNC-Puls 110 zugeordnet ist (die möglicherweise aufgrund des Versatzes zwischen dem Eingangssignal, core_clock 106, und dem Ausgangssignal, SYNC 110, entsteht). Der zweifach abgetastete SYNC-Puls wird als „sync"-Signal 118 in 1 bezeichnet, das zu einer ersten Synchronisierer-Steuerung (oder einer Kerntaktsynchronisierer-Steuerung) 124 geliefert wird, die in dem ersten Taktbereich arbeitet.
  • Bezug nehmend auf den zweiten Taktbereich (d. h. Bustaktbereich) wird der SYNC-Puls 110 in dem SYNC-Abtastlogikblock 116 durch ein einzelnes FF-Element abgetastet (gezeigt in 8A), das an der ansteigenden Flanke des verteilten bus_clock, b 108', getaktet wird. Um anzudeuten, daß die Abtastung unter Verwendung von bus_clock durchgeführt wird, wird der abgetastete SYNC-Puls als „sync_B"-Signal 120 bezeichnet, das zu einer zweiten Synchronisierersteuerung 122 geliefert wird, die in dem zweiten Taktbereich arbeitet, ebenfalls bezeichnet als die Bustaktsynchronisierer-Steuerung in 1.
  • Die Bustaktsynchronisierer-Steuerung 122 ist ansprechend auf das verteilte bus_clock, b 108', und den abgetasteten sync_B-Puls 120 wirksam, um eine Mehrzahl von Synchronisierersteuersignalen zu erzeugen, wobei ein Abschnitt der Signale zu einer ersten Synchronisiererschaltungseinrichtung 105A geleitet wird, die arbeitet, um eine Datenübertragung von der ersten Schaltungsanordnung 103A (d. h. der Kerntaktbereichslogik) zu der zweiten Schaltungsanordnung 103B (d. h. der Bustaktbereichslogik) zu steuern. Das Bezugszeichen 132 bezieht sich auf den Signalweg dieses Abschnitts des Steuersignals, ausgehend von der Bustaktsynchronisierersteuerung 122. Ein anderer Abschnitt des Synchronisierersteuersignals, erzeugt durch die Bustaktsynchronisierersteuerung 122, wird (über den Signalweg 134) zu einer zweiten Synchronisiererschaltungseinrichtung 105B geleitet, die wirkt, um eine Datenübertragung von einer zweiten Schaltungsanordnung 103B zu einer ersten Schaltungsanordnung 103A zu steuern. Gemäß der Nomenklatur, die bei der vorliegenden Patentanmeldung verwendet wird, können die erste und die zweite Synchronisiererschaltung ebenfalls als Kern-zu-Bus-Synchronisierer- bzw. Bus-zu-Kern-Synchronisierer-Schaltungen bezeichnet werden. Zusätzlich dazu erzeugt die Bustakt-Synchronisierer-Steuerung 122 ferner einen Satz von Zwischensteuerungs-Steuersignalen, die zu der ersten Synchronisierersteuerung 124 (d. h. der Kerntaktsynchronisierersteuerung) derart geliefert werden, daß beide Steuerungen zusammenarbeiten können. Das Bezugszeichen 128 bezieht sich auf den Signalweg des einen oder der mehreren Zwischensteuerungs-Taktbeziehungs-Steuersignale, die zu der Kerntakt-Synchronisierer-Steuerung 124 geliefert werden. Wie nachfolgend zusätzlich detaillierter ersichtlich ist, ist ein Teil der Funktionalität der Zwischensteuerungs-Steuersignale, Taktbeziehungsinformationen zu der Kerntakt-Synchronisierer-Steuerung 124 zu liefern, so daß dieselbe ihre Synchronisierer-Steuersignale zu einer geeigneten Zeit im Hinblick auf die Bus- und Kern-Taktsignale erzeugen kann.
  • Ähnlich zu der Operation der Bustakt-Synchronisierer-Steuerung 122 ist die Kerntakt-Synchronisierer-Steuerung 124 ansprechend auf die verteilten core_clock, c 106', Zwischensteuerungs-Steuersignale und den abgetasteten sync-Puls 118 wirksam, um eine Mehrzahl von Synchronisierer-Steuersignalen zu erzeugen, wobei ein Abschnitt der Signale zu der ersten Synchronisierer-Schaltungseinrichtung 105A geleitet wird, und wobei ein anderer Abschnitt der Signale zu der zweiten Synchronisiererschaltungseinrichtung 105B geleitet wird. Die Bezugszeichen 138 und 140 beziehen sich auf die jeweiligen Signalwege, die sich auf diese Steuersignale beziehen. Die Kerntakt-Synchronisierer-Steuerung 124 erzeugt ferner Daten-Sende-/Empfangs-Steuersignale, die zu der Kerntaktbereichslogik 103A über einen Signalweg 136 geliefert werden, so daß die Kerntaktbereichslogik 103A weiß, wann dieselbe Daten zu der Bustaktbereichslogik 103b (d. h. pilzige TX-Operationen) senden kann, und wann sie Daten von der Bustaktbereichslogik 103b empfangen kann (d. h. gültige RX-Operationen).
  • Alle Steuersignale von der Bustakt-Synchronisierer-Steuerung 122 zu dem ersten und zweiten Synchronisierer 105A, 105B werden durch eines oder mehrere FF-Elemente stufenweise verarbeitet, die mit dem verteilten bus_clock b 108' getaktet werden. Auf ähnliche Weise werden die Steuersignale von der Kerntakt-Synchronisierer-Steuerung 124 durch eine Anzahl von FF-Elementen stufenweise verarbeitet, die mit dem Abtast-core_clock, c 106', getaktet werden, bevor sie zu den verschiedenen Teilen des Synchronisierersystems 100 geliefert werden. Entsprechend, wie nachfolgend detaillierter gezeigt wird, können die verschiedenen Steuersignale, die dem Synchronisierersystem 100 zugeordnet sind, durch ein Signaletikett bezeichnet werden, das mit einem „_ff" oder „_ff_B"-Suffix verkettet ist, um den Registrierungsprozeß durch das verteilte core_clock oder das verteilte bus_clock anzuzeigen.
  • Ein Phasendetektor 130 erfaßt Phasendifferenzen (d. h. Versatz) zwischen den zwei Taktsignalen, durch Arbeiten ansprechend auf die abgetasteten Signale bus_clock und core_clock. Diese Informationen werden zu der Kerntakt-Synchronisierer-Steuerung 124 geliefert, die den Versatz kompensieren kann oder geeignete Zeiten zum koordinieren mit der Bustakt-Synchronisierer-Steuerung 122 bestimmen kann.
  • Wenn das Bustaktsignal stabil im Hinblick auf den SYNC-Puls ist, werden die Zwischensteuerungs-Taktbeziehungs-Steuersignale durch die Bustakt-Synchronisierer-Steuerung 122 erzeugt, die Informationen über das Frequenzverhältnis des ersten und zweiten Taktsignals, Taktsequenzinformationen und SYNC-Verzögerung liefern, die zu der Kerntakt-Synchronisierer-Steuerung 124 gesendet werden, zum Synchronisieren ihres Kerntaktsignals gemäß denselben, wie nachfolgend detaillierter ersichtlich wird. Andererseits, wenn das Kerntaktsignal stabil im Hinblick auf den SYNC-Puls ist, können die Zwischensteuerungs-Taktbeziehungs-Steuersignale durch die Kerntakt-Synchronisierer-Steuerung 124 erzeugt werden, zum Senden zu der Bustakt-Synchronisierer-Steuerung 122, so daß beide Synchronisierersteuerungen geeignet synchronisiert werden können. Ferner wird eine Konfigurationsschnittstelle 126, etikettiert als SYNC_Config in 1, als Teil des programmierbaren Synchronisierersystems 100 bereitgestellt, zum Konfigurieren der Kerntakt-Synchronisierer-Steuerung 124, so daß sie für unterschiedliche Versatztoleranzen, Latenzzeiten und Operationsmodi programmiert werden kann. Bei einem Ausführungsbeispiel kann die Konfigurationsschnittstelle 126 als ein Register implementiert sein, das eine Mehrzahl von Bits aufweist. Bei einem anderen Ausführungsbeispiel kann eine Speicher-basierte Einstellung, z. B. EPROM-gespeicherte Einstellungen, als eine SYNC-Konfigurationsschnittstelle vorgesehen sein.
  • Wie vorangehend ausgeführt wurde, kann das Synchronisierersystem 100 für unterschiedliche Versatztoleranzen und Latenzzeiten programmiert sein, so daß eine Datenübertragung bei hohen Geschwindigkeiten ordnungsgemäß ablaufen kann, sogar wenn ein großer Versatz oder eine Anforderung nach niedriger Latenzzeit vorliegt. Ferner kann das Synchronisierersystem 100 mit beliebigen zwei Taktbereichen arbeiten, die ein Verhältnis von N ersten Taktzyklen zu M zweiten Taktzyklen aufweisen, wobei N/M ≥ 1. Zu Zwecken der Darstellung ist die Operation eines Ausführungsbeispiels des programmierbaren Synchronisierersystems 100 und seiner Steuerungsanordnung (d. h. der Bustakt-Synchronisierer-Steuerungsabschnitt 122 und der Kerntakt-Synchronisierer-Steuerungsabschnitt 124) nachfolgend für Taktbereiche mit einem 5:4-Frequenzverhältnis detailliert ausgeführt.
  • Bezug nehmend nun auf 2 ist hier ein Zeitgebungsdiagramm 200 gezeigt, das zwei Taktbereichen zugeordnet ist, die ein 5:4-Frequenzverhältnis aufweisen. Beispielsweise ist das core_clock-Signal 106 als der schnelle Takt vorgesehen und das bus_clock-Signal 108 ist als der langsame Takt vorgesehen. Entsprechend sind für jeweils fünf Ticks des core_clock, vier Ticks des bus_clock vorhanden. Wie vorangehend angemerkt wurde, wird der SYNC-Puls 110 erzeugt, wenn eine ansteigende Flanke des core_clock-Signals 106 mit einer ansteigenden Flanke des bus_clock-Signals 108 zusammenfällt, was ein Zeitgebungssequenzfenster 204 für die Übertragung von Daten einleitet, das k Bit breite Daten (k ≥ 1) aufweisen kann, von einem Taktbereich zu dem anderen Taktbereich. Eine Zykluszählung 202 bezieht sich auf die Numerierung der core_clock-Zyklen in einer bestimmten Zeitgebungssequenz 204.
  • Wie oben herausgestellt wurde, wird der SYNC-Puls 110 bei zusammenfallenden ansteigenden Flanken der Taktsignale HOCH-getrieben und die Datenübertragungsoperationen über die Taktgrenze zwischen den zwei Taktbereichen werden zeitlich Bezug nehmend auf den SYNC-Puls abgestimmt. In einem normalen Zustand, in dem kein Versatz (oder Jitter, wie er manchmal bezeichnet wird) zwischen den Taktsignalen vorliegt, treten die zusammenfallenden Flanken an den ansteigenden Flanken des ersten Zyklus auf (Zyklus 0), wie in 2 gezeigt ist. Da fünf core_clock-Zyklen und nur vier bus_clock-Zyklen vorliegen, kann die erste Taktbereichsschaltungsanordnung während eines Zyklus keine Daten versenden, was zu einem Ereignis führt, das als „toter Tick" bezeichnet wird, da die zweite Taktbereichsschaltungsanordnung keinen entsprechenden Zeitschlitz zum Empfangen desselben aufweist. Üblicherweise ist der Zyklus, der am wenigsten versatztolerant ist, der, bei dem keine Daten gesendet werden. Auf ähnliche Weise, aufgrund eines zusätzlichen Zyklus (wo die Daten unbestimmt und/oder ungültig sind), kann die erste Taktbereichschaltungsanordnung während eines Zyklus keine Daten empfangen. Dies ist wiederum der Zyklus mit der geringsten Versatztoleranz, während dem keine Daten durch die erste Taktbereichsschaltungsanordnung empfangen werden.
  • Ein Versatz zwischen den Taktsignalen kann z. B. eine Abweichung bei der Positionierung des SYNC-Pulses verursachen, was die Datenübertragungsoperationen zwischen den zwei Bereichen beeinträchtigt. Bei dem exemplarischen 5:4-Frequenzverhältnisszenario, das oben ausgeführt ist, wenn das bus_clock 108 dem core_clock 106 z. B. um einen Viertel Zyklus vorauseilt, dann fallen die Flanken bei dem Start von Zyklus 1 zusammen, anstatt bei dem Start von Zyklus 0 zusammenzufallen. Auf ähnliche Weise, wenn das bus_clock-Signal dem core_clock-Signal um einen Viertel Zyklus nacheilt, fallen die Flanken bei dem Start des letzten Zyklus zusammen (d. h. Zyklus 4). Unabhängig von dem Versatz zwischen den Taktzyklen liegt jedoch ein Zyklus vor, bei dem keine Daten gesendet werden können, und ein Zyklus, bei dem keine Daten empfangen werden können, aus der Perspektive der Kerntaktbereichs-Schaltungsanordnung.
  • 3 zeigt ein Zeitgebungsdiagramm 300 der verschiedenen Steuersignale, die einem Ausführungsbeispiel des programmierbaren Synchronisierersystems 100 zum Übertragen von Daten zwischen zwei Taktbereichen zugeordnet sind, die ein 5:4-Frequenzverhältnis aufweisen. Die Taktzyklen 106, 108 und der SYNC-Puls 110 sind wiederum gezeigt, zum Zeigen der zeitlichen Beziehung zwischen den Steuersignalen. Das Bezugszeichen 302 bezieht sich auf ein b2c_valid_ff-Signal (aktiv HOCH), das durch die Kerntakt-Synchronisierer-Steuerung 124 erzeugt wird, zum Spezifizieren von einem der fünf Zyklen während dem die Kerntaktbereichs-Schaltungsanordnung 103A keine Daten empfangen kann, die durch die Bustaktbereichs-Schaltungsanordnung 103B geliefert werden. Wie dargestellt ist, können Daten von der Bustaktbereich-Schaltungsanordnung 103B in den Zyklen 1–4 empfangen werden, aber nicht in Zyklus 0. Auf ähnliche Weise, da ein toter Tick zwischen den Kern- und Bus-Takten vorliegt, liefert die Kerntakt-Synchronisierer-Steuerung 124 ferner ein c2b_valid_ff-Signal 304, um anzuzeigen, wann die Kerntaktbereichs-Schaltungsanordnung 103A Daten gültig zu der Bustaktbereichs-Schaltungsanordnung 103B übermitteln kann. Ferner ist eine Reihe von „Vorwarn"-Signalen (wobei jedes aktiv HOCH ist) c2b_valid_m_ff[4:1] 306A306D bereitgestellt, zum Anzeigen einer Anzahl von vorauseilenden Zyklen, bezüglich einer Zeit, wenn der tote Zyklus zwischen dem ersten und dem zweiten Taktsignal auftritt, während dem die Kerntaktbereichs-Schaltungsanordnung 103A keine Daten übermitteln kann. Zum Beispiel wird c2b_valid_ff 304 in Zyklus 4 LOW (NIEDRIG) aktiviert, was anzeigt, daß die Kerntaktbereichs-Schaltungsanordnung 103A keine Daten in diesem bestimmten Zyklus senden kann. Kerntaktbereichsdaten während dieses Zyklus müssen möglicherweise entsprechend gepuffert werden, bevor sie in einem nachfolgenden Zyklus übertragen werden. Eine Vorauswarnung über das Auftreten eines toten Zyklus kann um einen Zyklus, (d. h. bei Zyklus 3, wie durch c2b_valid_m_ff[1] 306A angezeigt ist, das in Zyklus 3 LOW (NIEDRIG) aktiviert ist), um zwei Zyklen (d. h. in Zyklus 2, wie angezeigt ist durch c2b_valid_m_ff[2] 306B, das in Zyklus 2 LOW aktiviert ist), um drei Zyklen (d. h. in Zyklus 1, wie durch c2b_valid_m_ff[3] 306C angezeigt ist, das in Zyklus 1 LOW aktiviert ist), und um vier Zyklen (d. h. in Zyklus 0, wie durch c2b_valid_m_ff[4] 306D angezeigt ist, das in Zyklus 0 LOW aktiviert ist) im Voraus gegeben werden.
  • Da das b2C_valid- und das c2b_valid-Steuersignal wirksam sind, um anzuzeigen, wann eine gültige Datenübertragung auftreten kann, können diese Signale kollektiv als „Übertragungssteuer"-Signale bezeichnet werden, die durch die Kerntakt-Synchronisierersteuerung 124 geliefert werden. Ferner, wie nachfolgend in weiteren Einzelheiten ersichtlich ist, erzeugt die Kerntakt-Synchronisierer-Steuerung 124 ferner einen anderen Satz von Steuersignalen, d. h. die Synchronisierer-Steuersignale, stufenweise verarbeitet durch Flip-Flops (c0_sel_ff 308, c1_sel_ff 310 und core_sel_ff 312), die die Datenlade- und Datenerfassungsschaltungsanordnung der Synchronisierer 105A, 1055 steuern. Auf ähnliche Weise erzeugt die Bustakt-Synchronisierer-Steuerung 122 einen anderen Satz von Synchronisierer-Steuersignalen (dargestellt als b0_sel_ff 314, b1_sel_ff 316 und bus_sel_ff 318 nach der Registrierung), die ferner die Datenlade- und Datenerfassungsschaltungsanordnung der Synchronisierer 105A, 105B steuern, die nachfolgend beschrieben werden.
  • 4A zeigt ein Blockdiagramm eines Ausführungsbeispiels einer Synchronisiererschaltung 400 zum Übertragen von Daten von einem ersten Taktbereich zu einem zweiten Taktbereich, wobei die Taktbereiche ein 5:4-Frequenzverhältnis aufweisen. Es sollte offensichtlich sein, daß die Synchronisiererschaltung 400 ein bestimmtes Ausführungsbeispiel des ersten Synchronisierers (d. h. des Kern-zu-Bus-Synchronisierers) 105A ist, der in 1 gezeigt ist, der angepaßt ist, um mit den verschiedenen Steuersignalen zu arbeiten, die hierin vorangehend beschrieben sind. Daten 402 von dem ersten Taktbereich (d. h. Kerndaten von der Kerntaktbereichslogik) werden auf einem k Bit breiten Datenweg zu der Eingangsseite der Synchronisiererschaltung 400 geliefert, die im wesentlichen einen ersten TRANSMIT-Multiplexer-Register-(MUXREG-)Block 408A und einen zweiten TRANSMIT-MUXREG-Block 408B aufweist. Jeder der TRANS-MIT-MUXREG-Blöcke umfaßt einen 2:1-MUX, der mit einem Register gekoppelt ist, das durch das erste Taktsignal getaktet wird (d. h. das verteilte core_clock, c 106'), wobei die k Bit breiten Daten zu dem Eingang des 2:1-MUX geliefert werden, der ausgewählt wird, wenn ein MUX-Steuersignal HOCH-(HIGH-)getrieben wird. Der andere Eingang des 2:1-MUX ist über einen Rückkopplungsweg mit dem Ausgang des Registers gekoppelt, das demselben zugeordnet ist. Bei dem Ausführungsbeispiel, das in 4A gezeigt ist, bilden das Register 412A und der zugeordnete 2:1-MUX 410A den ersten TRANSMIT-MUXREG-Block 408A, wobei der 2:1-MUX 410A durch c0_sel_ff 308 (erzeugt durch die Kerntakt-Synchronisierer-Steuerung 124) gesteuert wird, das durch das FF 404 stufenweise verarbeitet wird. Auf ähnliche Weise bilden das Register 412B und der zugeordnete 2:1-MUX 110B den zweiten TRANSMIT-MUXREG-Block 408B, wobei der 2:1-MUX 410B durch c1_sel_ff 310 (ebenfalls erzeugt durch die Kerntakt-Synchronisierer-Steuerung 124) gesteuert wird, stufenweise verarbeitet durch das FF 406. Jedes der FF-Elemente 404 und 406 wird durch den verteilten core_clock, c 106', getaktet.
  • Jeder der Ausgänge der zwei TRANSMIT-MUXREG-Blöcke 408A, 408B, d. h. c0_ff 414A und c1_ff 414B, wird zu einem RECEIVE-MUXREG-Block 416 (receive = empfangen) an der Ausgangsseite der Synchronisiererschaltung 400 geliefert, die einen 2:1-MUX 420 und ein Register 418 umfaßt, das durch das zweite Taktsignal getaktet wird (d. h. das verteilte bus_clock, b 108'). Die MUX-Steuerung wird durch bus_ sel_B geliefert, das durch die Bustakt-Synchronisierer-Steuerung 122 erzeugt wird und durch FF 424 als bus_sel_ff 318 stufenweise verarbeitet wird. Das Ausgangssignal des RECEIVE-MUXREG-Blocks 416 (d. h. bus_ff) sind die k Bit breiten Daten, die in der Bustaktbereichslogik als Busdaten 422 empfangen werden.
  • Es sollte offensichtlich sein, daß obwohl einzelne Instanzen der verschiedenen MUXREG-Blöcke in 4A gezeigt sind, tatsächlich k solcher Blöcke in dem Datenweg durch den Kern-zu-Bus-Synchronisierer 400 vorliegen, um die Übertragung aller k Datensignale (der k Bit breiten Daten, k ≥ 1) von der Kerntaktbereichslogik zu der Bustaktbereichslogik zu synchronisieren. 4B zeigt ein Zeitgebungsdiagramm, das dem Kern-zu-Bus-Synchronisierer-Ausführungsbeispiel 400 zugeordnet ist, das die zeitliche Beziehung der verschiedenen Steuersignale darstellt, die demselben zugeordnet sind, und die Wirkung unterschiedlicher Versatztoleranzen und Latenzzeiten. Zwei Sequenzen von Kerndaten 402 [A, B, C, D, E] und [A2, B2, C2, D2, E2] werden exemplarisch dargestellt, wobei jeder Datenblock k Bit breit ist und für einen bestimmten Taktzyklus, 0 bis 4, verfügbar ist. Unterschiedliche Versatztoleranzen und Latenzzeitfaktoren können programmiert werden, durch Steuern, was der RECEIVE-MUXREG-Block 416 aus c0_ff 414A oder c1_ff 414B lädt. In dem Feld A 450A ist eine Datenübertragung von der Kernbereichschaltungsanordnung zu der Busbereichschaltungsanordnung gezeigt, wo ein Zustand, der eine Versatztoleranz von 0,25 (von einer Kerntaktperiode) und eine hinzugefügte Latenzzeit von 0,75 (von einer Kerntakt periode) umfaßt, programmiert ist. Unter diesen Bedingungen erzeugt die Kerntakt-Synchronisierer-Steuerung 124 das Signal c2b_valid_ff 304 derart, daß keine gültige TX-Operation an dem Zyklus 4 (d. h. dem fünften Zyklus) vorliegt. Entsprechend laden die TRANSMIT-MUXREG-Blöcke 408A bzw. 408B die Datenabschnitte [B, D] und [A, C] in jeder Sequenz, wie durch c0_sel_ff 308 und c1_sel_ff 310 gesteuert wird. Der Datenabschnitt im Zyklus 4, [E], wird nicht gesendet, derselbe kann gepuffert und/oder nachfolgend auf einem separaten Datenweg übermittelt werden. Der RECEIVE-MUXREG-Block 416 lädt alternativ aus c0_ff 414A (für den Abschnitt [B, D]) und c1_ff 414B (für den Abschnitt [A, C]) unter der Steuerung von bus_sel_ff 318 aus der Bustakt-Synchronisierer-Steuerung 122. Die Daten aus den RECEIVE-MUXREG-Block 416 werden unter Verwendung des verteilten bus_clock, b 108', ausgetaktet, als bus_ff 422 (d. h. Busdaten), wobei die Sequenzen [A, B, C, D] und [A2, B2, C2, D2] sind.
  • Auf ähnliche Weise sind in den Feldern 450B und 450C Datenübertragungen gezeigt, die jeweils eine Versatztoleranz von 0,5 und eine hinzugefügte Latenzzeit von 1,0 bzw. eine Versatztoleranz von 0,75 und eine hinzugefügte Latenzzeit von 1,25 umfassen. Unter diesen Bedingungen bestimmt die Kerntakt-Synchronisierer-Steuerung 124, daß Datenübertragungsoperationen in Zyklus 0 bzw. Zyklus 1 ungültig sind. Dementsprechend werden Signale c2b_valid_ff 304, die in Zyklus 0 und in Zyklus 1 LOW aktiviert sind, durch die Kerntakt-Synchronisierer-Steuerung geliefert, um anzuzeigen, daß ein Datenabschnitt [A] und ein Datenabschnitt [B] nicht übertragen werden können. Folglich sind die übertragenen Busdatensequenzen [B, C, D, E]/[B2, C2, D2, E2] bzw. [A, C, D, E]/[A2, C2, D2, E2], gemäß den zwei dargestellten Sätzen von Versatz-/Latenz-Kombinationen ausgeführt.
  • Bezug nehmend nun auf 5A ist hierin ein Blockdiagramm eines Ausführungsbeispiels einer Synchronisiererschaltung 500 zum Übertragen von Daten von einem Bustaktbereich zu einem Kerntaktbereich gezeigt, wobei der Kern- und Bus-Taktbereich ein 5:4-Frequenzverhältnis aufweisen. Fachleute auf dem Gebiet werden wiederum erkennen, daß die Synchronisiererschaltung 500 ein bestimmtes Ausführungsbeispiel des zweiten Synchronisierers (d. h. Bus-zu-Kern-Synchronisierer) 105B ist, der in 1 gezeigt ist, der angepaßt ist, um mit verschiedenen Steuersignalen zu arbeiten, die hierin vorangehend unter besonderer Bezugnahme auf 3 beschrieben wurden. Ferner sollte offensichtlich sein, daß die physische Schaltungsanordnung des Bus-zu-Kern-Synchronisierers 500 im wesentlichen ähnlich zu der des Kern-zu-Bus-Synchronisierers 400 ist, der oben detailliert ausgeführt ist, außer daß dieselbe mit unterschiedlichen Steuersignalen verdrahtet ist, die geeignet durch die Synchronisierersteuerungen erzeugt werden.
  • Daten 502 aus dem zweiten Taktbereich (d. h. Busdaten aus der Bustaktbereichslogik) werden auf einem k Bit breiten Datenweg zu der Eingangsseite der Synchronisiererschaltung 500 geliefert, die ein Paar von TRANSMIT-MUXREG-Blöcken 508A, 508B aufweist, die in dem Bustaktbereich angeordnet sind. Jeder der TRANSMIT-MUXREG-Blöcke umfaßt einen 2:1-MUX, der mit einem Register gekoppelt ist, das durch das zweite Taktsignal getaktet wird (d. h. das verteilte bus_clock, b 108') wobei die k Bit breiten Busdaten 502 zu dem Eingang des 2:1-MUX geliefert werden, der ausgewählt wird, wenn ein MUX-Steuersignal HOCH (HIGH) getrieben wird. Der andere Eingang des 2:1-MUX ist über einen Rückkopplungsweg mit dem Ausgang des Registers gekoppelt, das demselben zugeordnet ist. Bei dem Ausführungsbeispiel, das in 5A gezeigt ist, bilden das Register 512A und der zugeordnete 2:1-MUX 510A den ersten TRANSMIT-MUXREG-Block 508A, der in dem zweiten Taktbereich angeordnet ist, wobei der 2:1-MUX 510A durch das b0_sel_B gesteuert wird (erzeugt durch die Bustakt-Synchronisierer-Steuerung 122, wie nachfolgend detaillierter beschrieben wird), das durch FF 504 als b0_sel_ff 314 stufenweise verarbeitet wird. Auf ähnliche Weise bilden das Register 512B und der zugeordnete 2:1- MUX 510B den zweiten TRANSMIT-MUXREG-Block 508B, der in dem zweiten Taktbereich angeordnet ist, wobei der 2:1-MUX 510B durch das b1_sel_B gesteuert wird (ebenfalls erzeugt durch die Bustakt-Synchronisierer-Steuerung 122), das durch das FF 506 als b1_sel_ff 316 stufenweise verarbeitet wird. Jedes FF 504, 506 ist getaktet durch das verteilte bus_clock, b 108'.
  • Die Ausgangssignale der zwei TRANSMIT-MUXREG-Blöcke 508A, 508B, d. h. b0_ff 514A bzw. b1_ff 514B, werden zu einem RECEIVE-MUXREG-Block 516 an der Ausgangsseite der Synchronisiererschaltung 500 geliefert (d. h. angeordnet in dem ersten Taktbereich), die einen 2:1-MUX 520 und ein Register 518 umfaßt, das durch das erste Taktsignal (d. h. das verteilte core_clock, c 106') getaktet wird. Die MUX-Steuerung wird durch den core_sel_ff 312 geliefert, der durch die Kerntakt-Synchronisierer-Steuerung 124 als core_sel erzeugt und durch FF 524 stufenweise verarbeitet wird. Die Ausgangssignale des RECEIVE-MUXREG-Blocks 516 (d. h. core_ff) sind die k Bit breiten Daten, die in der Kerntaktbereichslogik als Kerndaten 522 empfangen werden.
  • Es wird wiederum darauf hingewiesen, daß bei einer tatsächlichen Implementierung das Synchronisierer-Ausführungsbeispiel 500, das in 5A gezeigt ist, mehrere Instanzen der verschiedenen MUXREG-Blöcke umfassen kann, um die Übertragung aller k-Datensignale (der k Bit breiten Busdaten, k ≥ 1) von der Bustaktbereichslogik zu der Kerntaktbereichslogik zu übertragen. 5B zeigt ein Zeitgebungsdiagramm, das dem Bus-zu-Kern-Synchronisierer-Ausführungsbeispiel 500 zugeordnet ist, das die zeitliche Beziehung der verschiedenen Steuersignale zeigt, die demselben zugeordnet sind, und die Wirkung von unterschiedlichen Versatztoleranzen und Latenzzeiten. Zwei Sequenzen von Busdaten 502, [A, B, C, D] und [A2, B2, C2, D2] werden exemplarisch gezeigt, wobei jeder Block k Bit breit ist und für einen bestimmten Taktzyklus verfügbar ist, 0 bis 3. Unterschiedliche Versatztoleranzen und Latenzzeitfaktoren können programmiert werden, durch Steuern, wann der RECEIVE-MUXREG-Block 516 von b0_ff 514A oder b1_ff 514B lädt. Im 5:4-Modus lädt der RECEIVE-MUXREG-Block 516 z. B. fünf Mal, aber da nur vier Datenübertragungen von dem Busbereich kommen können, werden nur vier verwendet (der zusätzliche Zyklus, der einen unbenutzten Datenabschnitt aufweist, ist markiert mit einem X in den Feldern 550A550C). Wie in 5B gezeigt ist, sind die Busdaten 502 in den TRANSMIT-MUXREG-Blöcken gespeichert, wo jeder abwechselnd lädt, unter der Steuerung von b0_sel_ff 314 und b1_sel_ff 316, bei jedem zweiten bus_clock. Ferner hält jeder TRANSMIT-MUXREG-Block die Daten für zwei Bustakte. Entsprechend ist der erste Datenblock [A] in TRANSMIT-MUXREG 512B gespeichert, der zweite Datenblock [B] in TRANSMIT-MUXREG 512A, der dritte Datenblock [C] in TRANSMIT-MUXREG 512B und schließlich der vierte Datenblock [D] in TRANSMIT-MUXREG 512A. Das Ausgangssignal der zwei TRANSMIT-MUXREG-Blöcke 512A und 512B weist daher Datenabschnitte [B, D] als b0_ff 514A und [A, C] als b1_ff 514B auf.
  • In Feld A 550A ist die Datenübertragung von der Busbereich-Schaltungsanordnung zu der Kernbereich-Schaltungsanordnung gezeigt, wo eine Bedingung, die eine Versatztoleranz von 0,25 und eine hinzugefügte Latenzzeit von 0,625 umfaßt, programmiert ist. Eine Versatztoleranz, die in diesem Fall in Kerntaktzyklen gemessen wird, ist als die minimale Distanz zwischen einem Datenabtastwert (d. h. core_ff) und einem sich ändernden Dateneingangssignal (d. h. b0_ff oder b1_ff) definiert. Eine zusätzliche Latenzzeit wird ebenfalls in Kerntaktzyklen gemessen, erhalten durch Mittelwertbildung der Werte, die den vier Datenblöcken zugeordnet sind (vom Start des Dateneingangssignals, d. h. b0_ff oder b1_ff zu core_ff). Die tatsächliche Latenzzeit wird bestimmt als ein bus_clock-Zyklus plus die hinzugefügte Latenzzeit, die im 5:4-Modus in 1,25 core_clock-Zyklen plus der hinzugefügte Latenzzeit übersetzt wird.
  • Wie in Feld A 550A gezeigt ist, das die beste Latenzzeitbedingung exemplarisch zeigt, jedoch mit der schlechtesten Versatztoleranz, erzeugt die Kerntakt-Synchronisierer-Steuerung 124 das Signal b2c_valid_ff 302 derart, daß keine gültige RX-Operation bei dem Zyklus 0 des core_clock (d. h. des ersten Zyklus) vorliegt. Das Ausgangssignal des RECEIVE-MUXREG 516, d. h. core_ff 522, lädt zuerst den Datenblock [A] aus b1_ff 514B, dann den Datenblock [B] aus b0_ff 514A, dann den Datenblock [C] aus b1_ff 514B und dann den Datenblock [C] wieder (bei Zyklus 0 der zweiten Sequenz von core_clock, was der unbenutzte zusätzliche Zyklus ist, wodurch der ungültige C- oder XC-Datenblock hervorgerufen wird), und schließlich Datenblock [D] aus b0_ff 514A. Da der gültige [C] Block aus b1_ff 514B in core_ff 522 geladen wurde, 0,25 core_clock-Zyklen nachdem b1_ff 514B denselben geladen hat, beträgt die Versatztoleranz 0,25 core_clock-Zyklen.
  • Das Feld B 550B aus 5B zeigt exemplarisch den Programmierungsmodus mit der zweitbesten Latenzzeitbedingung (hinzugefügte Latenzzeit = 0,875), der die zweitbeste Versatztoleranz (= 0,5 core_clock-Zyklen) aufweist. Unter diesen Bedingungen erzeugt die Kerntakt-Synchronisierer-Steuerung 124 b2c_valid_ff 302 derart, daß es LOW-(NIEDRIG-)getrieben wird, in dem fünften core_clock-Zyklus (d. h. Zyklus 4). Das Ausgangssignal des RECEIVE-MUXREG 516, d. h. core_ff 522, lädt zuerst den Datenblock [A] aus b1_ff 514B, dann den Datenblock [B] aus b0_ff 514A und wiederum den Datenblock [B], der nicht verwendet wird (bei Zyklus 4 der ersten Sequenz von core_clock, der der nicht verwendete zusätzliche Zyklus ist, was somit den ungültigen B- oder XB-Datenblock verursacht), dann den Datenblock [C] aus b1_ff 514B und schließlich den Datenblock [D] aus b0_ff 514A. Da der gültige [B] Block in core_ff 522 aus b0_ff 514A geladen wurde, 0,5 core_clock-Zyklen nachdem er an b0_ff 514A aufgetreten ist, beträgt die Versatztoleranz 0,5 core_clock-Zyklen.
  • Der Programmierungsmodus mit der schlechtesten Latenzzeit (= 1,125) und der besten Versatztoleranz (= 0,75 der core_clock-Zyklen) ist in Feld C 550C aus 5B gezeigt. Die Kerntakt-Synchronisierer-Steuerung 124 erzeugt b2c_valid_ff 302 derart, daß es in dem vierten core_clock-Zyklus (d. h. Zyklus 3) LOW-getrieben wird. Das Ausgangssignal des RECEIVE-MUXREG 516, d. h. core_ff 522, lädt zuerst den Datenblock [A] aus b1_ff 514B (in Zyklus 2 der ersten Sequenz von core_clock), und wieder Datenblock [A], der nicht verwendet wird (in Zyklus 3 der ersten Sequenz von core_clock, was der zusätzliche nichtverwendete Zyklus ist, was somit den ungültigen A- oder XA-Datenblock verursacht), und dann Datenblock [B] aus b0_ff 514A, und dann Datenblock [C] aus b1_ff 514B, und schließlich Datenblock [D] aus b0_ff 514A. Da der gültige [A] Block in core_ff 522 aus b1_ff 514A geladen wurde, 0,75 core_clock-Zyklen, nachdem er an b1_ff 514A aufgetreten ist, ist die Versatztoleranz 0,75 core_clock-Zyklen. Wie vorangehend herausgestellt wurde, ist die hinzugefügte Latenzzeit der Durchschnitt der Zeit (in core_clock-Zyklen) von b0_ff oder b1_ff zu core_ff für alle verwendeten Daten. Dementsprechend ist kein Latenzzeitwert in einem Datenabschnitt mit einem X gezeigt.
  • Wie aus der obigen Erörterung ersichtlich ist, wird die Programmierbarkeit des Synchronisierersystems beeinträchtigt durch das Erzeugen verschiedener Synchronisierersteuersignale und Übertragungssteuersignale, die durch die Kerntakt-Synchronisierer-Steuerung für unterschiedliche Versatztoleranzen und Latenzzeitwerte konfigurierbar sind, wobei die Kerntakt-Synchronisierer-Steuerung ihrerseits von Taktbeziehungs-Steuersignalen abhängt, die durch den Bustakt-Synchronisierer-Steuerungsabschnitt unter anderen Signalen geliefert werden. Die kooperative Funktionalität beider Synchronisierer-Steuerungsabschnitte wird nun direkt nachfolgend detaillierter ausgeführt.
  • 6 zeigt ein Blockdiagramm eines Ausführungsbeispiels eines Bustakt-Synchronisierer-Steuerungsabschnitts 600, der als Synchronisierer-Steuerung 122 wirksam ist. Wie dargestellt ist, werden verschiedene Funktionsblöcke, die unter Verwendung einer Kombination einer Logikschaltungsanordnung implementiert sein können, als Teil des Bustakt-Synchronisierer-Steuerungsabschnitts 600 bereitgestellt, zum Erzeugen einer Anzahl von Taktbeziehungs-Steuersignalen, wobei ein Teil derselben intern verwendet wird, um einen Satz von Busbereich-Synchronisierer-Steuersignalen zu erzeugen, hin zu den Bus-zu-Kern- und Kern-zu-Bus-Synchronisierern. Ein Sync-Zählerblock 602 ist ansprechend auf das abgetastete SYNC wirksam, d. h. sync_B 120, sowie das verteilte bus_clock, B 108' (in dieser Figur nicht gezeigt), zum Erzeugen eines M-Bit breiten Signals, das eine Zählung von SYNC-Pulsen anzeigt. Im allgemeinen gilt, M = log2 (N + 1), wobei N die Anzahl von Zyklen in dem langsamen Taktbereich ist. Zum Beispiel, wenn ein Taktverhältnis von [8:7] verwendet wird, gilt, M = log2 (7 + 1) = 3, d. h. ein 3-Bit breites Signal wird erzeugt. Ein Verhältnisdetektorblock 604 wirkt ansprechend auf das M-Bit breite Signal sowie das sync_B-Signal 120 und b 108', um das Verhältnis der Takte zu bestimmen, die in dem Synchronisierersystem 100 verwendet werden, und ein Taktbeziehungs-Steuersignal zu erzeugen, bezeichnet als sync_ratio_B 614. Wie nachfolgend gezeigt ist, werden dieses und andere Taktbeziehungs-Steuersignale zu dem Kerntakt-Synchronisierer-Steuerungsabschnitt geliefert, zum Bewirken der gesamten programmierbaren Steuerungsfunktionalität im Hinblick auf das Synchronisierersystem 100.
  • Ein Zykluserzeugerblock 606 ist wirksam, ansprechend auf das sync_ratio_B-Signal 614, sowie das sync_B-Signal 120 und b 108', zum Erzeugen eines Zyklusinformationssignals 607, das einen aktuellen Bustaktzyklus anzeigt. Ein Sequenzerzeugerblock 608 ist bereitgestellt, zum Erzeugen eines anderen Zwischensteuerungs-Taktbeziehungs-Steuersignals, sequence_B 616, ansprechend auf das sync_ratio_B-Signal 614 sowie das sync_B-Signal 120 und b 108'. Fachleute auf dem Gebiet sollten erkennen, daß die Zyklusinforma tionen und sequence_B-Signale wirksam sind, um unterschiedliche Bustakte in dem Synchronisierersystem 100 eindeutig zu identifizieren. Ein Synchronisierungs-Verzögerungsblock 612 ist verantwortlich für das Erzeugen eines anderen Taktbeziehungs-Steuersignals, syncb0_B 618, hin zu dem Kerntakt-Synchronisierer-Steuerungsabschnitt der Steuerungsanordnung.
  • Ein Busbereich-Synchronisierer-Steuersignal-Erzeugerblock 610 ist wirksam, ansprechend auf das Zyklusinformationssignal (das jeden Bustaktzyklus numeriert), das sequence_B-Signal (das eine Sequenz von Bustakten numeriert) und das Signal sync_ratio_B 614 zum Erzeugen eines Satzes von Busbereich-Synchronisierer-Steuersignalen, nämlich der Signale b0_sel_B und b1_sel_B hin zu dem Bus-zu-Kern-Synchronisierer 105B und des Signals bus_sel_B hin zu dem Kern-zu-Bus-Synchronisierer 105A, die funktionieren, wie in der vorangehenden Beschreibung beschrieben ist. Der Busbereich-Synchronisierer-Steuersignal-Erzeugerblock 610 wirkt im wesentlichen, um eine feste Struktur an diesen Steuersignalen für jeden unterschiedlichen Bustakt zu erzeugen (basierend auf dem Zyklus-, dem Sequenz- und dem Taktverhältnis-Eingangssignal).
  • Wie hierin vorangehend angemerkt wurde, können die Busbereich-Synchronisierer-Steuersignale, b0_sel_B, b1_sel_B und bus_sel_B eines oder mehrere Male registriert werden, aus Gründen der Zeitgebung, bevor sie durch die jeweiligen Synchronisierer verwendet werden als b0_sel_ff 314, b1_sel_ff 316 bzw. bus_sel_ff 318. Dementsprechend können die Originalsignale und ihre registrierten Gegenstücke als Entsprechungen behandelt werden, zu Zwecken der allgemeinen Operation der Steuerungsanordnung. Wenn die Steuersignale schließlich verwendet werden, ist b0_sel_ff 314 „0" bei Zyklus 0, Sequenz 0 und alterniert zu „1", dann zu „0" usw. Die Signale b1_sel_ff 316 und bus_sel_ff 318 sind die Umkehrungen von b0_sel_ff (d. h. „1" bei Zyklus 0, Sequenz 0, usw.), wie in 3 gezeigt ist. Diese Synchronisierer- Steuersignale ändern sich nicht für unterschiedliche Taktverhältnisse oder Modi.
  • Bezug nehmend nun auf 7 ist hier ein Blockdiagramm eines Ausführungsbeispiels eines Kerntakt-Synchronisierer-Steuerungsabschnitts 700 gezeigt, wirksam als eine Synchronisierersteuerung 124 des programmierbaren Synchronisierersystems 100, das oben ausgeführt ist. Verschiedene Funktionsblöcke sind dargestellt zum prägnanten Erfassen der Gesamtfunktionalität des Kerntakt-Synchronisierer-Steuerungsabschnitts 700, der im wesentlichen wirksam ist, um einen Satz von Kernbereich-Synchronisierer-Steuersignalen hin zu den jeweiligen Synchronisierern 105A, 105B zu erzeugen, ansprechend auf den abgetasteten Sync-Puls 118, die Zwischensteuerungs-Taktbeziehungs-Steuersignale 614, 616, 618 und Konfigurationsinformationen, die über die SYNC-Konfigurationsschnittstelle 126 geliefert werden. Wie in 7 dargestellt ist, sind die Konfigurationsinformationen als ein sync_config-Signal veranschaulicht, das zu verschiedenen Funktionsblöcken des Kerntakt-Synchronisierer-Steuerungsabschnitt 700 geliefert wird, die zusätzliche interne Signale zum Bewirken der Synchronisierer-Steuerungsfunktionalität liefern. Wiederum, wie bei den Funktionsblöcken der Bustakt-Synchronisierer-Steuerung, können die verschiedenen Funktionsblöcke des Kerntakt-Synchronisierer-Steuerungsabschnitts 700 ferner unter Verwendung einer Kombination einer Logikschaltungsanordnung implementiert sein.
  • Ein Sync-Verhältnis-Abtastblock 702 empfängt das M-Bit breite sync_ratio_B 614 von dem Bustakt-Synchronisierer-Steuerungsabschnitt 600, um ein sync_ratio-Signal zu erzeugen, das in dem Kerntaktbereich abgetastet wird, unter Verwendung des verteilten Kerntakts c 106'. 8B zeigt ein exemplarisches Ausführungsbeispiel des Sync-Verhältnis-Abtastblocks (Sync Ratio Sampling Block) 702. Auf ähnliche Weise werden die anderen zwei Taktbeziehungs-Steuersignale, die durch den Bustakt-Synchronisierer-Steuerungsabschnitt bereitgestellt werden, abgetastet, bevor sie intern verwendet werden. Ein Sequenzabtastblock 704 wirkt ansprechend auf sequence_B 616, um die Signale sequence_cr (Abtasten an der ansteigenden Flanke des c-Takts) und sequence_cf (Abtasten an der abfallenden Flanke des c-Takts) zu erzeugen, die durch einen Präzisionssequenz-Detektorblock 706 verwendet werden. Ein syncb0_B-Abtastblock 708 arbeitet ansprechend auf syncb0_B 618, um die Signale syncb0_dr und syncb0_cf zu erzeugen. 8C bzw. 8D zeigen die Ausführungsbeispiele des Sequenzabtastblocks 704 und des syncb0_B-Abtastblocks 708.
  • Der Sync-Puls (bzw. Synchronisierungspuls) 118, der durch die SYNC-Abtastlogik 116 bereitgestellt wird, wird durch einen Sync-Puls-Erfassungsblock 710 erfaßt, um ein internes Sync-Signal zu erzeugen, sync_redge. 8E zeigt ein Ausführungsbeispiel des Sync-Puls-Erfassungsblocks 710 zum Erfassen einer „010"-Sequenz an dem Sync-Puls, die einen zuverlässigen Sync-Puls anzeigt (ansonsten könnte zuviel Taktversatz vorliegen).
  • Ein Stabilzustand-Detektorblock 712 ist wirksam, um ein mehrere Bit breites internes Signal zu erzeugen, stable_state, um anzuzeigen, wenn die Versatzzustandsbeziehung zwischen den zwei Taktsignalen stabilisiert wurde. Ferner wird ein externes Signal erzeugt, synchronizer_stable-Signal, um den Synchronisierern anzuzeigen, daß ein stabiler Zustand zwischen denselben existiert. Ein Zyklus- und Sequenz-Erzeugerblock 714 ist wirksam, ansprechend auf verschiedene interne Steuersignale, zum Erzeugen geeigneter Zyklus- und Sequenz-Signale, die für den Kerntaktbereich gültig sind, die unterschiedliche Kerntaktzyklen eindeutig identifizieren. Ein Versatzzustandsdetektor 716 wird bereitgestellt, zum Erzeugen eines Versatzzustands-Steuersignals, eines Phasenerfassungssignals (pd_z), und eines sync_locked-Signals, die zu verschiedenen Funktionsblöcken geliefert werden, die oben zum Erzeugen anderer interner Steuersignale beschrieben wurden.
  • Ein Kernbereich-Synchronisierer-Steuersignalerzeuger 718 ist wirksam, ansprechend auf das skew_state-Steuersignal (anzeigend für eine aktuelle Versatzbeziehung zwischen dem Bustakt- und Kerntakt-Signal), auf Konfigurationsinformationen (über das Signal sync_config), und die internen Steuersignale, d. h. Takt- und Sequenz-Signale und das abgetastete Signal sync_ratio (anzeigend für das Taktverhältnis, z. B. 5:4 oder 4:3 oder 1:1 etc.), zum Erzeugen eines Satzes von Kernbereich-Synchronisierer-Steuersignalen hin zu den jeweiligen Synchronisierern 105A, 105B. Wie hierin vorangehend im Hinblick auf die 5:4-Verhältnisimplementierung erklärt wurde, weisen diese Signale c0_sel, c1_sel (beide geliefert zu dem Kern-zu-Bus-Synchronisierer) und core_sel (geliefert zu dem Bus-zu-Kern-Synchronisierer) auf. Ferner wird ebenfalls ein Satz von Übertragungssteuersignalen, Signale b2c_valid, c2b_valid, und Vorauswarnsignalen, d. h. c2b_valid_m-Signale, durch den Kernbereich-Synchronisierer-Steuersignal-Erzeugerblock 718 zu der Kerntaktbereich-Logikschaltungsanordnung 103A geliefert. Wie bei den Steuersignalen, die durch den Bustakt-Synchronisierer-Steuerungsabschnitt erzeugt werden, können diese verschiedenen Signale ebenfalls für Zeitgebungszwecke registriert werden. Dementsprechend können die Steuersignale aus dem Kerntakt-Synchronisierer-Steuerungsabschnitt als ihre registrierten Entsprechungen bezeichnet werden, die die Bezeichnung „_ff" aufweisen.
  • Wie vorangehend herausgestellt wurde, zeigt das Signal sync_config, das zu dem Kernbereich-Synchronisierer-Steuersignal-Erzeugerblock 718 geliefert wird, demselben an, welche Versatztoleranz und Latenzzeitwert verwendet werden sollen. Basierend darauf können die verschiedenen Kernbereich-Synchronisierer-Steuersignale und die Übertragungs-Steuersignale für unterschiedliche Latenzzeiten und Versatztoleranzen programmiert werden. Die Wirkung des Programmierens unterschiedlicher Werte wird nachfolgend beschrieben, in Verbindung mit den Zeitgebungsdiagrammen (gezeigt in 3, 4B und 5B), die oben beschrieben wurden.
  • Unter besonderer Bezugnahme auf 5B ist in derselben gezeigt, wie die Signale core_sel_ff 312 und b2c_valid_ff 302 für unterschiedliche Latenzzeiten und Versatztoleranzen programmiert werden können. Wie vorangehend beschrieben wurde, können b0_sel_B und b1_sel_B (erzeugt durch den Bustakt-Synchronisierer-Steuerungsabschnitt 600 und die eines oder mehrere Male registriert sein können) eine feste und bekannte Struktur aufweisen. Dementsprechend werden die Signale core_sel_ff 312 und b2c_valid_ff 302 für unterschiedliche Bedingungen verändert (wobei berücksichtigt wird, daß b2c_valid_ff dasselbe ist wie b2c_valid, registriert für Zeitgebungszwecke).
  • In dem Feld 550A, das den Zustand der niedrigsten Versatztoleranz (0,25 Kerntaktzykluen) und der niedrigsten Latenzzeit (0,625 hinzugefügte Kerntaktzyklen) veranschaulicht, ist core_sel_ff 312 programmiert, um b1_ff 514B derart abzutasten, daß ein Datenabschnitt A in core_ff 522 bei Zyklus 2 registriert wird, b0_ff 514A wird als nächstes abgetastet und der Datenabschnitt B wird in core_ff 522 bei Zyklus 3 registriert, der Datenabschnitt C bei Zyklus 4, der Datenabschnitt C wiederum bei Zyklus 0 (aber nicht verwendet, aufgrund der XC-Anmerkung), und der Datenabschnitt D bei Zyklus 1 (nächste Sequenz). Das Übertragungs-Steuersignal b2c_valid_ff 302 ist derart programmiert, daß die Kerntaktbereichslogik den zusätzlichen Datenabschnitt C (d. h. XC-Block) bei Zyklus 0 nicht verwendet.
  • Die mittlere Versatztoleranz (0,5 Kerntaktzyklen) und Latenzzeit (0,875 hinzugefügte Kerntaktzyklen), gezeigt in Feld 550B, wird erreicht durch Programmieren von core_sel_ff 312, um einen Datenabschnitt A bei Zyklus 2 zu erfassen, einen Datenabschnitt B bei Zyklus 3, zusätzliche Daten B wiederum bei Zyklus 4, einen Datenabschnitt C bei Zyklus 0 (Beginn der nachfolgenden Sequenz), und einen Datenabschnitt D bei Zyklus 1. Das Übertragungs-Steuersignal b2c_valid_ff 302 ist derart programmiert, daß die Kerntaktbereichslogik den zusätzlichen Datenabschnitt B (d. h. XB-Block) in Zyklus 4 nicht verwendet.
  • Die höchste Versatztoleranz (0,75 Kerntaktzyklen) und Latenzzeit (1,125 hinzugefügte Kerntaktzyklen), die in Feld 550C aus 5B gezeigt sind, wird erreicht durch Programmieren von core_sel_ff 312, um einen Datenabschnitt A bei Zyklus 2, zusätzliche Daten A wiederum bei Zyklus 3, Daten B bei Zyklus 4, einen Datenabschnitt C bei Zyklus 0 (Beginn der nachfolgenden Sequenz) und einen Datenabschnitt D bei Zyklus 1 zu erfassen. Das Übertragungs-Steuersignal b2c_valid_ff 302 ist derart programmiert, daß die Kerntaktbereichslogik den zusätzlichen Datenabschnitt A (d. h. XA-Block) bei Zyklus 3 nicht verwendet.
  • Jede der obigen drei unterschiedlichen Versatztoleranzen und Latenzzeiteinstellungen werden erreicht durch Verwenden von drei unterschiedlichen Werten des Signals sync_config, das über die SYNC-Konfigurationsschnittstelle 126 (gezeigt in 1) geliefert wird. Eine unterschiedliche Struktur kann für andere Taktverhältnisse erzeugt werden (wie durch das Signal sync_ratio angezeigt), wie ein Fachmann auf dem Gebiet erkennen sollte.
  • Bezug nehmend nun auf 4B ist hierin gezeigt, wie die Signale c0_sel_ff 308, c1_sel_ff 310 und c2b_valid_ff 304 für unterschiedliche Latenzzeiten und Versatztoleranzen programmiert werden können. Wie vorangehend beschrieben wurde, zeigt c2b_valid_ff 304 der Kerntaktbereich-Logikschaltungsanordnung an, keine Daten zu übertragen. Es sollte wiederum berücksichtigt werden, daß c2b_valid_ff dasselbe ist wie c2b_valid, das zu Zeitgebungszwecken registriert ist. Die Vorwarnsignale, c2b_valid_m_ff[1:4] 306A306B (gezeigt in 3) stellen das Signal c2b_valid dar, das vorteilhaft einen, zwei, drei oder mehr Zyklen zu früh gesendet wird, für eine Verhaltensoptimierung bei der Kerntaktbereich-Logikschaltungsanordnung.
  • Da alle Kernbereich-Synchronisierer-Steuersignale und die Übertragungs-Steuersignale aus Zyklus- und Sequenz-Signalen decodiert werden (durch den Synchronisierer-Steuererzeuger-Block 718, der in 7 gezeigt ist), um Signale verfrüht zu erzeugen, wird einfach aus einem früheren Zyklus und/oder einer Sequenz decodiert. Es sollte ferner darauf hingewiesen werden, daß niedrige, mittlere und hohe Versatztoleranzen für alle [N + 1:N]-Verhältnisse programmiert werden können. Wenn ein Taktverhältnis von 1:1 anwendbar ist, können eine normale Latenzzeit (1 Takt hinzugefügte Latenzzeit) und eine niedrige Latenzzeit (0,5 Takte hinzugefügt, wenn die Bus- und Kern-Takte umgekehrt sind) programmiert werden.
  • 9 zeigt ein Flußdiagramm der verschiedenen Operationen eines Ausführungsbeispiels eines Synchronisierer-Steuerungsverfahrens der vorliegenden Erfindung. Wie in Block 902 ausgeführt ist, bestimmt der Bustakt-Synchronisierer-Steuerungsabschnitt zuerst anwendbare Synchronisierungsverhältnis-, Zyklus- und Sequenz-Informationen für ein gegebenes Taktverhältnis, basierend auf dem abgetasteten Synchronisierungspuls. Diese Informationen werden verwendet, um Busbereich-Synchronisierer-Steuersignale zu erzeugen. Ferner werden die Synchronisierungsverhältnis-, Zyklus-/Sequenz-Informationen und Synchronisierungsverzögerungsinformation als Zwischensteuerungs-Taktbeziehungs-Steuersignale zu dem Kerntakt-Synchronisierer-Steuerungsabschnitt geliefert (Block 904). Ansprechend darauf und auf den Synchronisierungspuls werden Zyklus- und Sequenz-Informationen des Kerntaktbereichs durch die Kerntakt-Synchronisierer-Steuerung erzeugt (Block 906). Basierend auf einer Versatzzustandsbestimmung werden Zyklus- und Sequenz-Informationen, Synchronisierungsverhältnis-Informationen und Synchronisierungs-Konfigurations-Informationen, Synchronisierer-Steuersignale sowie Übertragungs-Steuersignale erzeugt, zum Steuern der Datenübertragungsoperationen über Bus-zu-Kern- und Kern-zu-Bus-Synchronisiererabschnitte (Block 908).
  • Basierend auf der vorangehenden detaillierten Beschreibung sollte darauf hingewiesen werden, daß das Steuerungsanordndungs-Ausführungsbeispiel, das hierin ausgeführt wurde, für unterschiedliche Latenzzeiten und Versatztoleranzen programmiert sein kann, zum Übertragen von Daten über eine Taktgrenze zwischen beliebigen zwei Taktbereichen, die ein bekanntes N:M-Verhältnis aufweisen (z. B., M = N – 1). Entsprechend, wenn die PLL- oder Takt-Verteilung, die bei einem Synchronisierersystem verwendet wird, mehr Versatz aufweist als vorhergesehen, kann die Versatztoleranz erhöht werden (mit dem Kompromiß einer größeren Latenzzeit), ohne eine unterschiedliche Steuerung entwerfen zu müssen.

Claims (18)

  1. Eine Steuerungsanordnung (122, 124) zum Bewirken einer versatztoleranten Datenübertragung zwischen einem Kerntaktbereich und einem Bustaktbereich, wobei der Kerntaktbereich mit einem Kerntaktsignal (106) wirksam ist und der Bustaktbereich mit einem Bustaktsignal (108) wirksam ist, wobei das Kern- und Bus-Taktsignal (10b, 108) ein Verhältnis aufweisen, und die folgende Merkmale aufweist: einen Bustakt-Synchronisierer-Steuerungsabschnitt (600), der wirksam ist, um einen Satz von Taktbeziehungs-Steuersignalen (614, 616, 618) und einen ersten Satz von Steuersignalen zu erzeugen, die als ein Satz von Busbereich-Synchronisierer-Steuersignalen (314, 316, 318) an einem Bus-zu-Kern-Synchronisierer (105B) und einem Kern-zu-Bus-Synchronisierer (105A) bereitgestellt sind; und einen Kerntakt-Synchronisierer-Steuerungsabschnitt (700), der wirksam ist, um einen zweiten Satz von Steuersignalen zu erzeugen, die bei dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A) als ein Satz von Kernbereich-Synchronisierer-Steuersignalen (308, 310, 312) bereitgestellt sind, wobei der Kerntakt-Synchronisierer-Steuerungsabschnitt (700) teilweise durch die Taktbeziehungs-Steuersignale (614, 616, 618), die durch den Bustakt-Synchronisierer-Steuerungsabschnitt geliefert werden, und durch Konfigurations-Informationen gesteuert ist, die unterschiedliche Versatztoleranzen und Latenzzeitwerte anzeigen, die zumindest entweder dem Bustakt- oder Kerntakt-Signal (106, 108) zugeordnet sind.
  2. Steuerungsanordnung gemäß Anspruch 1, bei der der Bustakt-Synchronisierer-Steuerungsabschnitt (122) wirksam ist, ansprechend auf einen SYNC-Puls, der in dem Bustaktbereich durch das Bustaktsignal abgetastet wird.
  3. Steuerungsanordnung gemäß Anspruch 2, bei der der SYNC-Puls durch eine Phasenregelschleife (PLL) erzeugt wird, wenn eine ansteigende Flanke in dem Kerntaktsignal zumindest teilweise mit einer ansteigenden Flanke in dem Bustaktsignal zusammenfällt.
  4. Steuerungsanordnung gemäß Anspruch 2 oder 3, bei der der Kerntakt-Synchronisierer-Steuerungsabschnitt (124) wirksam ist, ansprechend auf den SYNC-Puls, der in dem Kerntaktbereich durch das Kerntaktsignal abgetastet wird.
  5. Steuerungsanordnung gemäß Anspruch 4, bei der der Bustakt-Synchronisierer-Steuerungsabschnitt (122) folgende Merkmale aufweist: einen Synchronisierungszähler (602) und einen Verhältnisdetektor (604), die ansprechend auf den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam sind, zum Bestimmen eines sync_ratio-Signals; einen Zykluserzeuger (606), der ansprechend auf das sync_ratio-Signal und den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam ist, zum Erzeugen eines Zyklus-Informationssignals, das einen aktuellen Taktzyklus anzeigt; einen Sequenzerzeuger (608), der ansprechend auf das sync_ratio-Signal und den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam ist, zum Erzeugen eines Sequenzsignals; und einen Busbereich-Synchronisierer-Steuersignal-Erzeugerblock (610), der ansprechend auf das sync_ratio-Signal wirksam ist, wobei das Sequenzsignal und das Zyklusinformationssignal zum Erzeugen des Satzes von Busbereich-Synchronisierer-Steuersignalen hin zu dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A) wirksam sind, wobei das sync_ratio-Signal und das Sequenzsignal als ein Satz von Taktbeziehungs-Steuersignalen zu dem Kerntakt-Synchronisierer-Steuerungsabschnitt (124) geliefert werden.
  6. Steuerungsanordnung gemäß Anspruch 5, bei der der Kerntakt-Synchronisierer-Steuerungsabschnitt (124) einen Kernbereich-Synchronisierer-Steuersignal-Erzeugerblock aufweist, der ansprechend auf die Konfigurations-Informationen und eine Mehrzahl von internen Taktsignalen wirksam ist, hergestellt basierend auf dem Satz von Taktbeziehungs-Steuersignalen, die durch den Bustakt-Synchronisierer-Steuerungsabschnitt (122) geliefert werden, zum Erzeugen des Satzes von Kernbereichsynchronisierer-Steuersignalen hin zu dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A).
  7. Steuerungsanordnung gemäß Anspruch 6, bei der der Kerntakt-Synchronisierer-Steuerungsabschnitt (124) ferner wirksam ist, um einen Satz von Übertragungs-Steuersignalen zu erzeugen, die anzeigen, wann eine gültige Datenübertragung zwischen der Schaltungsanordnung des Bustaktbereichs und der Schaltungsanordnung des Kerntaktbereichs auftreten kann.
  8. Steuerungsanordnung gemäß Anspruch 6 oder 7, bei der der Kerntakt-Synchronisierer-Steuerungsabschnitt (124) ferner einen Versatzzustandsdetektor (116) aufweist, zum Erzeugen eines skew_state-Steuersignals, das eine aktuelle Versatzbeziehung zwischen dem Bustakt- und Kerntakt-Signal anzeigt, wobei das skew_state-Steuersignal zu dem Kernbereich-Synchronisierer-Steuersignal-Erzeugerblock geliefert wird, zum Erzeugen des Satzes von Kernbereich-Synchronisierer-Steuersignalen hin zu dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A).
  9. Steuerungsanordnung gemäß einem der Ansprüche 6 bis 8, bei der der Bustakt-Synchronisierer-Steuerungsabschnitt (122) ferner einen Synchronisierungs-Verzögerungsblock (612) aufweist, der ansprechend auf das sync_ratio-Signal und den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam ist, zum Erzeugen eines syncb0-Signals, wobei das syncb0-Signal als Teil des Satzes von Taktbeziehungs-Steuersignalen zu dem Kerntakt-Synchronisierer-Steuerungsabschnitt (124) geliefert wird.
  10. Ein Computersystem, das folgende Merkmale aufweist: eine Kernlogikschaltungsanordnung (103A), die in einem Kerntaktbereich angeordnet ist und mit einem Kerntaktsignal (106) wirksam ist; eine Buslogikschaltungsanordnung (103B), die in einem Bustaktbereich angeordnet ist und mit einem Bustaktsignal (108) wirksam ist, wobei das Kern- und Bus-Taktsignal ein Verhältnis von N Kerntaktzyklen zu M Bustaktzyklen aufweisen, wobei N/M ≥ 1; eine Synchronisierervorrichtung zum Bewirken einer Datenübertragung zwischen der Kernlogikschaltungsanordnung und der Buslogikschaltungsanordnung, wobei die Synchronisierervorrichtung einen Bus-zu-Kern-Synchronisierer (105B) und einen Kern-zu-Bus-Synchronisierer (105A) aufweist; einen Bustakt-Synchronisierer-Steuerungsabschnitt (600), der wirksam ist, um einen Satz von Taktbeziehungs-Steuersignalen (614, 616, 618) und einen ersten Satz von Steuersignalen zu erzeugen, die als ein Satz von Busbereich-Synchronisierer-Steuersignalen (314, 316, 318) an dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A) bereitgestellt sind; und einen Kerntakt-Synchronisierer-Steuerungsabschnitt (700), der wirksam ist, um einen zweiten Satz von Steuersignalen zu erzeugen, die bei dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A) als ein Satz von Kernbereich-Synchronisierer-Steuersignalen (308, 310, 312) bereitgestellt sind, wobei der Kerntakt-Synchronisierer-Steuerungsabschnitt (700) teilweise durch die Taktbeziehungs-Steuersignale (614, 616, 618), die durch den Bustakt-Synchronisierer-Steuerungsabschnitt geliefert werden, und durch Konfigurations-Informationen gesteuert ist, die unterschiedliche Versatztoleranzen und Latenzzeitwerte anzeigen, die zumindest entweder dem Bustakt- oder Kerntakt-Signal (106, 108) zugeordnet sind.
  11. Computersystem gemäß Anspruch 10, bei dem der Bustakt-Synchronisierer-Steuerungsabschnitt ansprechend auf einen SYNC-Puls wirksam ist, der in dem Bustaktbereich durch das Bustaktsignal abgetastet wird.
  12. Computersystem gemäß Anspruch 11, bei dem der SYNC-Puls durch eine Phasenregelschleife (PLL) erzeugt wird, wenn eine ansteigende Flanke des Kerntaktsignals zumindest im wesentlichen mit einer ansteigenden Flanke des Bustaktsignals zusammenfällt.
  13. Computersystem gemäß Anspruch 11 oder 12, bei dem der Kerntakt-Synchronisierer-Steuerungsabschnitt anspre chend auf den SYNC-Puls wirksam ist, der in dem Kerntaktbereich durch das Kerntaktsignal abgetastet wird.
  14. Computersystem gemäß Anspruch 13, bei dem der Bustaktsynchronisierer-Steuerungsabschnitt folgende Merkmale aufweist: einen Synchronisierungszähler (602) und einen Verhältnisdetektor (604), die ansprechend auf den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam sind, zum Bestimmen eines sync_ratio-Signals; einen Zykluserzeuger (606), der ansprechend auf das sync_ratio-Signal und den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam ist, zum Erzeugen eines Zyklus-Informationssignals, das einen aktuellen Taktzyklus anzeigt; einen Sequenzerzeuger (608), der ansprechend auf das sync_ratio-Signal und den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam ist, zum Erzeugen eines Sequenzsignals; und einen Busbereich-Synchronisierer-Steuersignal-Erzeugerblock (610), der ansprechend auf das sync_ratio-Signal wirksam ist, wobei das Sequenzsignal und das Zyklusinformationssignal zum Erzeugen des Satzes von Busbereich-Synchronisierer-Steuersignalen hin zu dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A) wirksam sind, wobei das sync_ratio-Signal und das Sequenzsignal als ein Satz von Taktbeziehungs-Steuersignalen zu dem Kerntakt-Synchronisierer-Steuerungsabschnitt (124) geliefert werden.
  15. Computersystem gemäß Anspruch 14, bei dem der Kerntakt-Synchronisierer-Steuerungsabschnitt (124) einen Kernbereich-Synchronisierer-Steuersignal-Erzeugerblock aufweist, der ansprechend auf die Konfigurations-Informationen und eine Mehrzahl von internen Steuersignalen wirksam ist, hergestellt basierend auf dem Satz von Taktbeziehungs-Steuersignalen, die durch den Bustakt-Synchronisierer-Steuerungsabschnitt (122) geliefert werden, zum Erzeugen des Satzes von Kernbereich-Synchronisierer-Steuersignalen hin zu dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A).
  16. Computersystem gemäß Anspruch 15, bei dem der Kerntakt-Synchronisierer-Steuerungsabschnitt ferner wirksam ist, um einen Satz von Übertragungs-Steuersignalen zu erzeugen, die anzeigen, wann eine gültige Datenübertragung zwischen der Schaltungsanordnung des Bustaktbereichs und der Schaltungsanordnung des Kerntaktbereichs auftreten kann.
  17. Computersystem gemäß Anspruch 14 oder 15, bei dem der Kerntakt-Synchronisierer-Steuerungsabschnitt ferner einen Versatzzustandsdetektor (116) aufweist, zum Erzeugen eines skew_state-Steuersignals, das eine aktuelle Versatzbeziehung zwischen dem Bustakt- und Kerntakt-Signal anzeigt, wobei das skew_state-Steuersignal zu dem Kernbereich-Synchronisierer-Steuersignal-Erzeugerblock geliefert wird, zum Erzeugen des Satzes von Kernbereich-Synchronisierer-Steuersignalen hin zu dem Bus-zu-Kern-Synchronisierer (105B) und dem Kern-zu-Bus-Synchronisierer (105A).
  18. Computersystem gemäß einem der Ansprüche 15 bis 18, bei der der Bustakt-Synchronisierer-Steuerungsabschnitt (122) ferner einen Synchronisierungs-Verzögerungsblock (612) aufweist, der ansprechend auf das sync_ratio-Signal und den abgetasteten SYNC-Puls in dem Bustaktbereich wirksam ist, zum Erzeugen eines syncb0-Signals, wobei das syncb0-Signal als Teil des Satzes von Taktbeziehungs-Steuersignalen zu dem Kern takt-Synchronisierer-Steuerungsabschnitt (124) geliefert wird.
DE102004014201A 2003-07-30 2004-03-23 Steuerungsanordnung für einen programmierbaren Taktsynchronisierer und Computersystem mit einer solchen Anordnung Expired - Fee Related DE102004014201B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/630,182 US7100065B2 (en) 2003-05-09 2003-07-30 Controller arrangement for synchronizer data transfer between a core clock domain and bus clock domain each having its own individual synchronizing controller
US10/630182 2003-07-30

Publications (2)

Publication Number Publication Date
DE102004014201A1 DE102004014201A1 (de) 2005-03-03
DE102004014201B4 true DE102004014201B4 (de) 2008-08-21

Family

ID=34115754

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004014201A Expired - Fee Related DE102004014201B4 (de) 2003-07-30 2004-03-23 Steuerungsanordnung für einen programmierbaren Taktsynchronisierer und Computersystem mit einer solchen Anordnung

Country Status (2)

Country Link
US (1) US7100065B2 (de)
DE (1) DE102004014201B4 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7296174B2 (en) * 2002-10-11 2007-11-13 Broadcom Corporation Apparatus and method to interface two different clock domains
US7301971B2 (en) * 2003-08-11 2007-11-27 Eastman Kodak Company Method and apparatus for continuous synchronization of a plurality of asynchronous data sources
US20050190193A1 (en) * 2004-03-01 2005-09-01 Freker David E. Apparatus and a method to adjust signal timing on a memory interface
US7340631B2 (en) * 2004-07-23 2008-03-04 Hewlett-Packard Development Company, L.P. Drift-tolerant sync pulse circuit in a sync pulse generator
US20060146967A1 (en) * 2004-12-31 2006-07-06 Adarsh Panikkar Keep-out asynchronous clock alignment scheme
US7346795B2 (en) * 2004-12-31 2008-03-18 Intel Corporation Delaying lanes in order to align all lanes crossing between two clock domains
US7464284B2 (en) * 2005-03-22 2008-12-09 Hewlett-Packard Development Company, L.P. Systems and methods for driving data over a bus where the systems employ a bus clock that is derived from a system clock and a data clock designed to lead the bus clock
EP1729199B1 (de) * 2005-05-31 2010-05-19 STMicroelectronics Srl Verfahren für effizientere Datenübertragung bei integrierten Schaltungen mit halbsynchronen Taktbereichen bei einem beliebigen M/N-Taktverhältnis
US7500044B2 (en) * 2005-07-07 2009-03-03 P.A. Semi, Inc. Digital phase relationship lock loop
JP2012181724A (ja) * 2011-03-02 2012-09-20 Renesas Electronics Corp クロック同期化回路及び半導体集積回路
KR102079630B1 (ko) 2013-03-13 2020-04-07 삼성전자주식회사 지연동기회로를 가지는 동기 반도체 메모리 장치 및 파워 세이빙을 위한 지연동기회로 블록 구동 제어 방법

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020199124A1 (en) * 2001-06-22 2002-12-26 Adkisson Richard W. System and method for synchronizing data transfer across a clock domain boundary
US20020196886A1 (en) * 2001-06-22 2002-12-26 Adkisson Richard W. SYNC pulse compensation and regeneration in a clock synchronizer controller

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4519037A (en) * 1979-07-05 1985-05-21 Jacques Brodeur Computer assisted symmetrical analysis for hair stylists
US5256912A (en) * 1991-12-19 1993-10-26 Sun Microsystems, Inc. Synchronizer apparatus for system having at least two clock domains
US5347559A (en) 1992-12-30 1994-09-13 Digital Equipment Corporation Apparatus and method of data transfer between systems using different clocks
US5570397A (en) * 1993-12-23 1996-10-29 Unisys Corporation Redundant synchronized clock controller
US5721886A (en) 1995-11-30 1998-02-24 Ncr Corporation Synchronizer circuit which controls switching of clocks based upon synchronicity, asynchronicity, or change in frequency
US5884100A (en) * 1996-06-06 1999-03-16 Sun Microsystems, Inc. Low-latency, high-throughput, integrated cache coherent I/O system for a single-chip processor
US6084934A (en) 1997-03-06 2000-07-04 International Business Machines Corporation Natural throttling of data transfer across asynchronous boundaries
US6175603B1 (en) 1997-08-07 2001-01-16 Cisco Technology, Inc. System for managing signals in different clock domains and a programmable digital filter
GB9720811D0 (en) * 1997-09-30 1997-12-03 Sgs Thomson Microelectronics Dual port buffer
US6075832A (en) 1997-10-07 2000-06-13 Intel Corporation Method and apparatus for deskewing clock signals
US6037809A (en) 1998-06-02 2000-03-14 General Electric Company Apparatus and method for a high frequency clocked comparator and apparatus for multi-phase programmable clock generator
US6166963A (en) 1998-09-17 2000-12-26 National Semiconductor Corporation Dual port memory with synchronized read and write pointers
US6369624B1 (en) 1998-11-03 2002-04-09 Altera Corporation Programmable phase shift circuitry
US6448820B1 (en) 1998-11-04 2002-09-10 Altera Corporation Fast locking phase frequency detector
US6114915A (en) 1998-11-05 2000-09-05 Altera Corporation Programmable wide-range frequency synthesizer
JP2001051747A (ja) 1999-08-12 2001-02-23 Fujitsu Ltd クロック制御回路
JP3919990B2 (ja) 1999-11-10 2007-05-30 富士通株式会社 タイミング同期システム、そのシステムに用いられる装置およびタイミング同期方法
DE10048590B4 (de) 2000-09-30 2008-02-28 Infineon Technologies Ag Phasenregelkreis
US6327207B1 (en) * 2001-04-09 2001-12-04 Lsi Logic Corporation Synchronizing data operations across a synchronization boundary between different clock domains using two-hot encoding
US7194650B2 (en) * 2003-05-09 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for synchronizing multiple synchronizer controllers
US7219251B2 (en) * 2003-05-09 2007-05-15 Hewlett-Packard Development Company, L.P. Programmable clock synchronizer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020199124A1 (en) * 2001-06-22 2002-12-26 Adkisson Richard W. System and method for synchronizing data transfer across a clock domain boundary
US20020196886A1 (en) * 2001-06-22 2002-12-26 Adkisson Richard W. SYNC pulse compensation and regeneration in a clock synchronizer controller

Also Published As

Publication number Publication date
US20040225910A1 (en) 2004-11-11
US7100065B2 (en) 2006-08-29
DE102004014201A1 (de) 2005-03-03

Similar Documents

Publication Publication Date Title
DE60216811T2 (de) Störungsfreie taktauswahlschaltung
DE69733407T2 (de) Schnittstelle zur datenübertragung zwischen zwei taktbereichen
DE69727355T2 (de) Anordnung und Verfahren zur Taktsequenzierung in einem Datenverarbeitungssystem
DE60002567T2 (de) Dynamische wellenpipelineschnittstellenanordnung und verfahren dafür
DE102007021619A1 (de) Taktsynchronisierungsverfahren und -vorrichtung
DE102004014201B4 (de) Steuerungsanordnung für einen programmierbaren Taktsynchronisierer und Computersystem mit einer solchen Anordnung
DE102015102760B4 (de) Taktlose serielle Slave-Vorrichtung
DE4018505A1 (de) Mikrocomputersystem mit mikroprozessorruecksetzschaltung
DE102005016299A1 (de) Tastverhältniskorrektur
DE19849779C2 (de) Taktgenerator und Takterzeugungsverfahren, die in der Lage sind, eine Taktfrequenz ohne Erhöhen der Anzahl von Verzögerungselementen zu ändern
DE60013950T2 (de) Netzwerk-Synchronisiersystem und Netzwerk-Synchronisierverfahren
DE60211244T2 (de) Halbleiterbauelement
DE19852457C2 (de) Verfahren und Vorrichtung zur Phasendrehung in einem Phasenregelkreis
DE60211822T2 (de) Verfahren und Vorrichtung zur Synchronisierung eines mehrstufigen Multiplexers
EP1039660A2 (de) Drahtloses Netzwerk mit einer Anwendertaktsynchronisation
DE102018129189B4 (de) Verfahren zum betreiben eines netzwerkteilnehmers in einem automatisierungskommunikationsnetzwerk
DE60032966T2 (de) Steuerungsschaltung mit einer Taktssteuerungseinheit
DE60210013T2 (de) Verfahren und Vorrichtung zum Synchronisieren eines Slave-Netzknotens auf einem Master-Netzknoten
DE112015003343B4 (de) Netzwerksystem, Zeit-Master-Station und Zeit-Slave-Station
DE102005019568A1 (de) Speichereinrichtung, Verwendung derselben und Verfahren zur Synchronisation eines Datenwortes
DE60214379T2 (de) Verfahren und vorrichtung für eine taktschaltung
DE60203019T2 (de) Datensynchronisation auf einem peripheriebus
EP1721407A1 (de) Schnittstellenvorrichtung und verfahren zur synchronisation von daten
EP1094610A1 (de) Digitaler Phasenregelkreis
EP1263161B1 (de) Synchronisierschaltungsanordnung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20121002