-
Im
Zusammenhang mit einer digitalen Signalisierung ist „Synchronisation” der Prozess
eines Zwischenspeicherns eines Signals zwischen einem ersten und
einem zweiten nichtausgerichteten Taktbereich. Bei nichtvorhandenen
ordnungsgemäßen Steuerungen
kann das Ergebnis dieses Zwischenspeicherns etwas unvorhersagbar
sein. Es gibt drei Szenarios: ein Signal, das zwischengespeichert
werden soll, kann gefangen werden, ein Signal, das zwischengespeichert
werden soll, kann an der nächsten Taktflanke
gefangen werden, oder ein Signal, das zwischengespeichert werden
soll, kann teilweise gefangen werden. Das letzte Szenario ist das schlimmste,
da ein „metastabiler” Wert (d.
h. ein Wert, der weder eine „1” noch eine „0” ist) zwischengespeichert
werden kann. Ein Zwischenspeicher, der sich in einem meterstabilen
Zustand befindet, kann eine lange Zeitdauer in diesem Zustand bleiben,
besonders falls der Zwischenspeicher einen geringen Gewinn (oder
eine geringe Rückkopplung)
aufweist. Der Zwischenspeicher kann dann den meterstabilen Wert
desselben zu anderen Schaltungen ausbreiten, was unzulässige Zustände und
andere Probleme bewirken kann.
-
Um
das Zwischenspeichern eines meterstabilen Zustands zu verhindern,
wird typischerweise ein spezieller Zwischenspeicher (Latch) mit
hohem Gewinn verwendet. Dieser Zwischenspeicher wird ein „Auflösungszwischenspeicher” genannt.
Zusätzlich
wird dem Zwischenspeicher genügend
Zeit zum Auflösen
gegeben, derart, dass irgendein meterstabiler Wert zu einer „0” oder einer „1” gezwungen
wurde, bevor derselbe zu anderen Schaltungen gesendet wird. Selbst
bei diesen Techniken treten jedoch theoretisch meterstabile Ereignisse
auf, falls genügend Zeit
gegeben ist (vielleicht 10000 Jahre).
-
Eine
Synchronisation wird durch einen „Synchronisierer” erzielt.
Herkömmlicherweise
wartet ein Synchronisierer darauf, dass eingehende Daten ankommen,
und synchronisiert dann die Daten in den neuen Taktbereich. Die
Auflösungszeit
des Synchronisierers ist typischerweise ein Vielfaches oder ein Bruchteil
von Zyklen des neuen Taktbereichs (z. B. 1/2, 1, 1½ , 2 ...).
Diese Granularität
kann häufig schwierige
Entscheidungen und/oder Entwurfsanforderungen erzwingen. Zum Beispiel
kann ein Entwerfen eines aggressiveren Auflösungszwischenspeichers eventuell
1/2 Zyklen einer Latenz wiedergewinnen, aber bei erhöhten Kosten
und unter Verwendung von mehr Chipfläche.
-
Die
US 6,425,088 B1 beschreibt
ein Verfahren zur Datenübertragung
und einen Datenübertragungsapparat,
der eine einfache Hardware einsetzt, um Daten zwischen zwei Schaltungen,
die bei unterschiedlichen Taktfrequenzen arbeiten, mit verringertem
Daten-Übertragungs-Überhang
zu übertragen, um
eine Übertragungs-Verzögerungszeit
zu verkürzen.
-
Das
Verfahren zur Datenübertragung
und der Apparat erzeugen ein Datenübertragungsreferenzsignal,
das einen Puls aufweist, der innerhalb eines Zyklus einer niedrigeren
der Taktfrequenzen ist, und der mit einem Puls einer höheren der
Taktfrequenzen synchronisiert ist. Sei der Übertragung von Daten zwischen
den zwei Schaltungen verwendet eine der Schaltungen, die als Quellenschaltung
dient, das Datenübertragungsreferenzsignal,
um zu bestimmen, ob die andere Schaltung, die als Bestimmungs-Schaltung
dient, Daten, die von der Quellenschaltung übertragen wurden, vollständig empfangen hat.
-
Die
WO 98/13768 A2 beschreibt
eine Schnittstelle zur Übertragung
von Daten zwischen Taktbereichen. Die Schnittstelle zwischen zwei
Taktbereichen überträgt Daten
zwischen den zwei Taktbereichen ohne Veränderung oder Verlust von Daten. Jeder
Taktbereich hat einen jeweiligen Takt. Eine Synchronisationsschaltung
stellt sicher, dass die zwei Takte ein festes Frequenzverhältnis A:B
aufweisen und erzeugt zwei Synchronisationssignale, die anfängliche
Zyklen der Takte in zugrunde liegenden Zyklen von A und B Taktzyklen
der zwei Takte identifizieren. Ein Datensignal wird in einer Mehrzahl
von Registern in dem ersten Taktbereich gespeichert. Jedes Register
gibt ein spezifisches Ausgangssignal aus, wobei eines der Ausgangssignale
durch einen Multiplexer in dem zweiten Taktbereich ausgewählt wird,
um an ein Ausgangsregister ausgegeben zu werden. Das Ausgangsregister
gibt die Daten dann synchron mit dem zweiten Takt aus. Eine Auswahl der
Taktzyklen, in denen das Lesen und Schreiben eines Registers stattfindet,
wird durch die Synchronisationssignale gesteuert, so dass eine minimale
Verzögerung
zwischen dem Lesen und dem Schreiben selbst dann besteht, wenn eine
Zeitverschiebung zwischen den zwei Takten vorliegt.
-
Es
ist die Aufgabe der vorliegenden Erfindung, ein Verfahren zum Reduzieren
von Synchronisiererschatten, eine Vorrichtung zum Reduzieren von Synchronisiererschatten
und eine Vorrichtung mit verbesserten Charakteristika zu schaffen.
-
Diese
Aufgabe wird durch ein Verfahren gemäß Anspruch 1 und eine Vorrichtung
gemäß Anspruch
7 und Anspruch 20 gelöst.
-
Darstellende
Ausführungsbeispiele
der Erfindung sind in den Zeichnungen dargestellt.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
exemplarisches Verfahren zum Reduzieren von Synchronisiererschatten;
-
2 eine
Ansicht auf hoher Ebene einer exemplarischen Vorrichtung zum Reduzieren
von Synchronisiererschatten;
-
3 exemplarische
Daten- und Steuersignale, die durch die Steuerlogik der Vorrichtung
von 2 empfangen werden;
-
4 exemplarische
Zeitverläufe
von Signalen für
die in 2, 3 und 5–9 gezeigte Vorrichtung;
-
5 ein
exemplarisches Ausführungsbeispiel
eines Abschnitts der in 2 gezeigten Steuerlogik;
-
6 ein
exemplarisches Ausführungsbeispiel
eines Stücks
des in 2 gezeigten Synchronisierers;
-
7 eine
exemplarische Anordnung einer Mehrzahl der in 6 gezeigten
Synchronisiererstücke;
-
8 eine
exemplarische Logik zum Freigeben eines Stammdaten-Gültig-Signals
(Masterdaten-Gültig-Signals);
-
9 ein
exemplarisches Ausführungsbeispiel
der in 2 gezeigten Datenwarteschlange; und
-
10 & 11 unterschiedliche
Signalzeitverläufe
für die
in 2 gezeigte Vorrichtung, abhängig davon, ob empfangene Daten
den Datentyp Vollständig-Gepuffert-DIMM (FBD
= Fully Buffered DIMM) aufweisen.
-
Bei
einem Synchronisierer warten die Daten, die die Synchronisierergrenze überschreiten,
darauf, dass das Gültig-Signal desselben
in den nächsten Taktbereich
aufgelöst
wird. Diese Wartezeit wird als der „Synchronisiererschatten” bezeichnet.
-
Herkömmlicherweise
wartet ein Synchronisierer darauf, dass eingehende Daten ankommen, und
synchronisiert dann die Daten in einem neuen Taktbereich. Bei dem
Verfahren und der Vorrichtung jedoch, die hierin offenbart sind,
wird die Dauer des Synchronisiererschattens durch ein Beginnen,
ein Gültig-Signal
für eingehende
Daten aufzulösen,
bevor alle eingehenden Daten empfangen sind, reduziert. Das Verfahren
und die Vorrichtung, die hierin offenbart sind, sind deshalb besonders
vorteilhaft, wenn der Taktbereich, in den eingehende Daten synchronisiert
werden, viel langsamer als der Taktbereich der eingehenden Daten
ist.
-
Unter
jetziger Bezugnahme auf 1 ist ein exemplarisches Verfahren 100 zum
Reduzieren von Synchronisiererschatten gezeigt. Das Verfahren 100 weist
ein Empfangen und Deserialisieren 102 einer serialisierten
Gruppe von Datenbits (Data Flit) bekannter Länge unter einer Steuerung eines
ersten Taktbereichs auf (d. h. eines Taktbereichs, mit dem die serialisierte
Gruppe von Datenbits während
einer Übertragung
ausgerichtet ist). Wie es hierin definiert ist, ist eine „serialisierte
Gruppe von Datenbits” einfach
eine serialisierte Gruppe von Datenbits.
-
Vor
einem Empfangen der ganzen serialisierten Gruppe von Datenbits wird
in einem zweiten Taktbereich (d. h. einem Taktbereich, in dem die
deserialisierte Gruppe von Datenbits auf einen Empfang hin ausgerichtet
ist) die Auflösung
eines Gültig-Signals
für die
deserialisierte Gruppe von Datenbits begonnen 104. Dann
wird auf ein Empfangen und Deserialisieren der ganzen serialisierten
Gruppe von Datenbits hin die deserialisierte Gruppe von Datenbits
unter einer Steuerung des ersten Taktbereichs zwischengespeichert 106.
-
Nach
einem Zwischenspeichern der deserialisierten Gruppe von Datenbits
unter einer Steuerung des ersten Taktbereichs und einer vorbestimmten Anzahl
von Taktflanken des zweiten Taktbereichs nach einem Beginnen eines
Auflösens
des Gültig-Signals
wird das Gültig-Signal
aufgelöst 108 und
wird die zwischengespeicherte Gruppe von Datenbits ansprechend auf
das Gültig-Signal
in den zweiten Taktbereich übertragen 108.
-
Unter
Verwendung des Verfahrens 100 von 1 kann die
Dauer eines Synchronisiererschattens drastisch reduziert werden,
ohne eine Zuverlässigkeit
eines Synchronisierers zu verringern. Ferner oder alternativ können die
Entwurfsanforderungen eines Synchronisierers und von Zwischenspeicherschaltungen
eines Empfängers
erheblich gelockert werden.
-
Bei
einigen Ausführungsbeispielen
des Verfahrens 100 kann die Zeit, bei der das Gültig-Signal beginnt,
sich aufzulösen,
ansprechend auf einen Datentyp einer Gruppe von Datenbits eingestellt
werden. In einigen Fällen
kann ein Empfänger
beispielsweise zum Empfangen von Datentypen in der Lage sein, wie
beispielsweise:
- – FBD (Vollständig-Gepuffert-DIMM)
für eine Kommunikation
mit Speicherchips;
- – SP2
und CSI, die Intel-Standards für
eine Kommunikation zwischen zentralen Verarbeitungseinheiten (CPUs
= Central Processing Units) und Chipsätzen sind;
- – WJF,
das das proprietäre
Chipverbindungsprotokoll von Hewlett-Packard Company ist; und
- – 8b10b,
das eine spezielle Codierung von WJF für eine
- Übertragung über Faseroptiken
ist
-
Abhängig davon,
welcher von diesen Datentypen empfangen wird, einschließlich der
Länge irgendeiner
entsprechenden Gruppe von Datenbits, kann es notwenig (oder zumindest
möglich)
sein, ein Auflösen
eines Gültig-Signals
einer Gruppe von Datenbits früher
oder später
zu beginnen.
-
Bei
den gleichen oder unterschiedlichen Ausführungsbeispielen des Verfahrens 100 kann
es ferner nützlich
sein, die Anzahl von Taktflanken zwischen 1) einem Beginnen eines
Auflösens
des Gültig-Signals
und 2) einem Auflösen
des Gültig-Signals einzustellen.
Bei einem Empfänger,
der zum Empfangen der oben aufgelisteten Datentypen in der Lage ist,
können
beispielsweise bestimmte Datentypen zu einem Ermöglichen einer früheren Auflösung als
andere kompatibel sein. Wie es später in dieser Beschreibung
detaillierter erläutert
wird, kann die Anzahl von Taktflanken, über die ein Gültig-Signal
ausgelöst
wird, ansprechend auf ein Versatzsignal entsprechend einer Gruppe
von Datenbits gesetzt werden.
-
2 stellt
ein exemplarisches Ausführungsbeispiel
einer Vorrichtung 200 dar, die verwendet werden kann, um
das Verfahren 100 und andere Verfahren zu implementieren.
Im Allgemeinen weist die Vorrichtung eine Steuerlogik 202,
eine Deserialisierer 204, einen Synchronisierer 206 und
eine Datenwarteschlage 208 auf. Die Steuerlogik 202 ist
gekoppelt, um Takt-, Daten- und Steuersignale von einer Datenverbindung
(oder einem Bus) 210 zu empfangen; und die Datenwarteschlagen
ist gekoppelt, um Gültig-Daten
zu einem Vorrichtungskern 212 zu liefern.
-
Es
ist zu beachten, dass die Steuerlogik 202 und der Deserialisierer 204 unter
dem Taktbereich der Verbindung 210 (d. h. unter Takten
RxCKP und RxCKN) wirksam sind und der Synchronisierer 206 und
die Datenwarteschlange 208 teilweise unter dem Taktbereich
der Verbindung 210 und teilweise unter dem Taktbereich
(CK) des Vorrichtungskerns 212 wirksam sind.
-
3 stellt
ein exemplarisches Ausführungsbeispiel
eines Abschnitts der Steuerlogik 202 dar. Wie es gezeigt
ist, empfängt
die Steuerlogik 202 eine serialisierte Gruppe von Datenbits
(z. B. RxDP[5:0] und RxDN[5:0]) sowie einen entsprechenden Takt
oder entsprechende Takte (z. B. RxCKP und RxCKN). Wie es beispielsweise
gezeigt ist, empfängt die
Steuerlogik 202 die serialisierte Gruppe von Datenbits
als einen seriellen Zwei-Bit-Datenstrom (RxDP/RxDN) der mit zwei
um 180° außerphasigen Takten
(RxCKP/RxCKN) synchronisiert ist. Die Steuerlogik 202 puffert
dann diese Signale und/oder wandelt dieselben um und gibt die Takte
SET1 und SET2 sowie die serialisierte Gruppe von Datenbits Data[11:0]
aus. Bei einigen Ausführungsbeispielen
kann die Steuerlogik 202 beginnend mit einem Bit des RxDP-Stroms
oder beginnend mit einem Bit des RxDN-Stroms einen Datentausch (Data
Swapping) durchführen
(d. h. dieselbe kann die Datenströme (RxDP/RxDN) spleißen). Bei
anderen Ausführungsbeispielen
könnte
die Steuerlogik 202 entworfen sein, um lediglich einen
einzigen Datenstrom und einen einzigen Takt zu empfangen.
-
Die
Länge jedes
Datenstroms (RxDP und RxDN), der durch die Steuerlogik 202 empfangen wird,
ist beispielsweise als sechs Bit gezeigt. Bei einigen Ausführungsbeispielen
jedoch kann die Steuerlogik 202 konfiguriert sein, um Datenströme mit vier,
fünf oder
sechs Bit zu empfangen, die die Vorrichtung 200 dann in
einen 8 (WJF), 10 (8b10b) oder 12 (FBD) Bit breiten Bus umwandelt,
der mit dem Taktbereich des Vorrichtungskerns 212 synchronisiert
ist. Weil die Länge
einer serialisierten Gruppe von Datenbits sich verändern kann,
wird die Vorrichtung 200 über die Längen von serialisierten Gruppen von
Datenbits über
verschiedene Steuersignale (z. B. über Datentypindikatoren) informiert,
wie es unten erörtert
wird.
-
Die
Steuerlogik 202 kann ferner eine Mehrzahl von Steuersignalen
empfangen. Eines dieser Steuersignale (RxReset) kann die Steuerlogik 202 initialisieren,
um die Ankunft einer serialisierten Gruppe von Datenbits (oder einer
Mehrzahl von serialisierten Gruppen von Datenbits) anzugeben. Dieses
Signal (RxReset) kann gepuffert oder gekennzeichnet und dann als
das „Rücksetz”-Signal
ausgegeben werden.
-
Andere
Steuersignale (RxMode_8b10b und RxMode_FBD), die durch die Steuerlogik 202 empfangen
werden, können
einen „Datentyp” einer
Gruppe von Datenbits angeben. Diese Datentyp-Steuersignale, sowie
andere Steuersignale können
gepuffert und/oder kombiniert und als eines oder mehrere Signale
Data_Type[x:0] ausgegeben werden.
-
Ein
anderer Satz von Signalen (RxMargin_First_Wrq[1:0]), die durch die
Steuerlogik 202 empfangen werden, kann eine Verzögerungsspanne
angeben. Die Signale RxMargin_First_Wrq[1:0] können gepuffert und/oder gekennzeichnet
und als Signale Margin[1:0] ausgegeben werden. Die Verwendung dieser
Spanne wird später
in dieser Beschreibung detaillierter beschrieben.
-
Noch
ein anderer Satz von Signalen (RxValid_Data_Offset[2:0]), die durch
die Steuerlogik 202 empfangen werden, kann einen Versatz
angeben, der zwischen 1) einem Beginnen eines Auflösens eines
Gültig-Signals
einer Gruppe von Datenbits und 2) einem Empfangen der serialisierten
Gruppe von Datenbits beibehalten sein sollte. Das 3-Bit-RxValid_Data_Offset[2:0]-Signal
kann decodiert werden, um die Offset[7:0]-Signale mit einem logisch
hohen Zustand (One-High-Offset[7:0]-Signale) zu ergeben.
-
Die
Signale, die durch die Steuerlogik 202 empfangen und ausgegeben
werden, sind wiederum bloß exemplarisch
und einige Ausführungsbeispiele der
Steuerlogik 202 können
mehr oder weniger Daten- und Steuersignale empfangen und/oder ausgeben.
Die Signale, die durch die Steuerlogik 202 empfangen und
ausgegeben werden, können
auch anderen Zwecken dienen, von denen einige lediglich entfernt
mit dem Verfahren und der Vorrichtung zum Reduzieren eines Synchronisiererschattens
verwandt sind, die hierin offenbart sind. Folglich werden die Steuersignale,
die durch die Steuerlogik 202 empfangen werden, lediglich
bis zu dem Ausmaß beschrieben,
zu dem dieselben eine Auswirkung auf ein Reduzieren eines Synchronisiererschattens
aufweisen.
-
Unter
jetziger Bezugnahme auf 4 ist der Zeitverlauf verschiedener
Signale der Vorrichtung 200 dargestellt. An dem oberen
Ende befindet sich ein Vergleich des Signals CK (des Taktbereichs
des Vorrichtungskerns 212) mit dem Signal RxCKP (das der
(den) serialisierten Gruppe(n) von Datenbits entspricht, die durch
die Vorrichtung 200 empfangen wird (werden)). Es ist beispielsweise
gezeigt, dass der Takt RxCKP eine Betriebsfrequenz aufweist, die etwa
dreimal die Frequenz des Takts CK beträgt. Vorausgesetzt jedoch, dass
die Takte RxCKP und CK nichtausgerichtet sind, könnte sich diese Entsprechung
verändern.
Das Zeitdiagramm von 4 nimmt ferner beispielsweise
an, dass eine empfangene Gruppe von Datenbits 12 Datenbits
aufweist, die über
eine Periode von sechs Zyklen des Takts RxCKP (in 4 mit
0, 1, 2, 3, 4, 5 nummeriert) empfangen werden. Es ist ferner zu
beachten, dass 4 den Empfang der letzten drei
Datenzyklen einer ersten serialisierten Gruppe von Datenbits (d.
h. Zyklen 3, 4, 5) und die Signale (Wrq[0], Wrd[1], Hold[0], Resolve[0],
Valid[0] und Sel[0]) zeigt, die verwendet werden, um dieselben zu
synchronisieren und in den Taktbereich des Vorrichtungskerns 212 zu übertragen. 4 zeigt
ferner den Empfang einer ganzen zweiten serialisierten Gruppe von
Datenbits und den Empfang eines Teils einer dritten serialisierten
Gruppe von Datenbits. 4 zeigt jedoch nicht alle der
Signale, die verwendet werden, um die zweite und die dritte Gruppe
von Datenbits zu synchronisieren und in den Taktbereich des Vorrichtungskerns 212 zu übertragen.
-
Der
Zeitverlauf der Signale, der in 4 gezeigt
ist, wird unten in dem Kontext von Beschreibungen von Abschnitten
der Vorrichtung 200, die dieselben erzeugen, detaillierter
beschrieben.
-
5 stellt
ein exemplarisches Ausführungsbeispiel
eines Front-End-Logikabschnitts 500 des Synchronisierers 206 (2)
dar. Wie es gezeigt ist, weist die Schaltung 500 eine Verzögerungskette 502 (d.
h. eine Reihenkette von Verzögerungselementen)
auf. Die Elemente der Verzögerungskette sind
unter einer Steuerung des RxCK-Taktbereichs getaktet und sind bei
einem Ausführungsbeispiel über die
abwechselnden Takte SET1 und SET2 (wie gezeigt) getaktet.
-
Die
Eingabe zu der Verzögerungskette
ist das „Rücksetz”-Signal, das die Ankunft
einer neuen serialisierten Gruppe von Datenbits angibt. Das „Rücksetz”-Signal
lädt die
Verzögerungskette
mit vier, fünf
oder sechs logischen „1”en, wobei
die Anzahl von „1”en von
dem Modus (oder von Datentyp-Signalen) abhängt, der (die) durch die Steuerlogik 202 während einer
Initialisierung der Steuerlogik 202 empfangen wird (werden).
Diese Einsen können dann
mit den ankommenden Gruppen von Datenbits ausgerichtet die Verzögerungskette
in einer Schleife durchlaufen.
-
Wie
es gezeigt ist, werden die Ausgaben einer ersten Mehrzahl von Verzögerungselementen
zu einem ersten Multiplexer 504 geliefert und werden die
Ausgaben einer zweiten Mehrzahl von Verzögerungselementen zu einem zweiten
Multiplexer 506 geliefert. Gemäß einer oder mehr Data_Type[x:0]-Variablen gibt der
erste Multiplexer 504 ein Signal Wrq[x] aus, das als ein
Synchronisierersteuersignal dient; und gemäß einem oder mehreren Versatzsignalen,
Offset[7:0], gibt der zweite Multiplexer 506 ein Signal
Wrd[x] aus, das als ein Warteschlangensteuersignal dient. In einigen
Fällen
kann das Wrq[x]-Signal durch die Synchronisierersteuerlogik 508 modifiziert
oder freigegeben (z. B. durch das „Rücksetz”-Signal rückgesetzt) werden. Auf ähnliche
Weise kann das Wrd[x]-Signal durch eine Schreibsteuerlogik 510 modifiziert
oder freigegeben werden.
-
Die
Verzögerungskette 502 liefert
zwei primäre
Funktionen. Erstens liefert dieselbe das Wrd[x]-Signal auf einen
vollständigen
Empfang einer Gruppe von Datenbits hin, wodurch eine Aufnahme (d.
h. ein Zwischenspeichern) der Gruppe von Datenbits in der Datenwarteschlage 208 (2)
freigegeben wird. Zweitens liefert dieselbe das Wrq[x]-Signal zu
einer vorbestimmten Zeit vor einem vollständigen Empfang der Gruppe von
Datenbits. Auf diese Weise, und wie es später in dieser Beschreibung
detaillierter erläutert
wird, ermöglicht
das Wrq[x]-Signal, dass der Synchronisierer 206 ein Auflösen eines
Gültig-Signals
für die
Gruppe von Datenbits beginnt, bevor die Gruppe von Datenbits vollständig empfangen ist,
wodurch die Dauer des „Schattens” des Synchronisierers
verringert wird.
-
Falls
die Verzögerungskette 502 programmierbar
gemacht ist (wie es gezeigt ist), dann kann das Wrd[x]-Signal programmiert
sein, um an dem Ende von Gruppen von Datenbits unterschiedlicher Länge anzusteigen,
und/oder das Wrq[x]-Signal kann programmiert sein, um eine vorbestimmte
Anzahl von R×CKP-Zyklen
(oder Bruchteile derselben) vor dem Wrd[x]-Signal aufzutreten. Bei der in 6 gezeigten
Schaltung ist die zeitliche Trennung zwischen Wrq[x] und Wrd[x]
zum Teil durch den Satz mit einem logisch hohen Zustand von Steuerleitungen
Offset[7:0] gesteuert.
-
Bei
einigen Ausführungsbeispielen
kann eine Instanz der Schaltung für jeden Satz des Wrd[x]- und
des Wrq[x]-Signals vorgesehen sein (d. h. Wrd[0] und Wrq[0], etc.).
Bei anderen Ausführungsbeispielen
kann eine Schaltungsanordnung vorgesehen sein, um das Wrd[x]- und
das Wrq[x]-Signal sequentiell mit Entsprechenden der Wrd[7:0]- und Wrq[7:0]-Signale zu koppeln.
-
Es
ist zu beachten, dass das Wrq[x]- und das Wrd[x]-Signal beide in
dem Taktbereich der Verbindung 210 (d. h. dem RxCKP/N-Taktbereich)
erzeugt werden. Unter erneuter Bezugnahme auf 4 ist ein
exemplarischer Zeitverlauf des Wrq[0]- und des Wrd[0]-Signals gezeigt,
wobei das Wrq[0]-Signal
drei RxCKP-Zyklen vor einem vollständigen Empfang einer Gruppe
von Datenbits erzeugt wird und das Wrd[0] erzeugt wird, unmittelbar
nachdem die Gruppe von Datenbits empfangen ist. Zu einem Vergleich mit
dem Signal Wrq[0] ist der Zeitverlauf des Signals Wrq[1] entsprechend
einer nächsten
empfangenen Gruppe von Datenbits ebenfalls in 4 gezeigt.
-
6 stellt
ein exemplarisches Ausführungsbeispiel
eines Stücks 600 des
Synchronisierers 206 (2) dar.
Wie es in 7 gezeigt ist, kann der Synchronisierer 206 für jeden
Eintrag in der Datenwarteschlange 208 ein Stück 600 aufweisen.
-
Das
Synchronisiererstück 600 wird
anfänglich
durch einen Empfang des Signals Wrq[x] ausgelöst, was einen Puls in dem RxCKP/N-Taktbereich
liefert, der bewirkt, dass die Logik 602 ein „Hold[x]”-Signal
zwischenspeichert und ausgibt. Es ist zu beachten, dass der Zeitverlauf
des „Hold[x]”-Signals
und der meisten Signale, die in diesem Absatz erwähnt sind,
in 4 zu sehen ist. Nach einer Ausgabe des „Hold[x]”-Signals und auf eine
ansteigende Flanke des Takts CK hin erzeugt die Logik 604, 606 ein „Resolve[x]”-Signal
in dem CK-Bereich. Bei der nächsten ansteigenden
Flanke des Takts CK erzeugt die Logik 608 ein „Valid[x]”-Signal.
Auf eine Freigabe der Logik 610 hin erzeugt dieses „Gültig”-Signal
dann synchron ein „Sel[x]”-Signal,
das verwendet werden kann, um Daten auszuwählen, die aus der Datenwarteschlage 208 (und
in den Taktbereich des Vorrichtungskerns 212) ausgelesen
werden sollen, wie es später
in dieser Beschreibung detaillierter erläutert wird. Auf einen Anstieg
des „Sel[x]”-Signals
hin oder auf einen Empfang eines „Rücksetz”-Signals hin wird bewirkt, dass
die Logik 602 das „Hold[x]”-Signal
erneut sperrt (z. B. niedrig treibt), wodurch das Synchronisiererstück 600 rückgesetzt
wird. Exemplarische Zeitverläufe
der Signale Hold[0], Resolve[0], Valid[0] und Sel[0] sind in 4 gezeigt.
-
Mittels
des Synchronisiererstücks 600 beginnt
ein „Gültig”-Signal einer Gruppe
von Datenbits sich aufzulösen,
bevor die Gruppe von Datenbits vollständig empfangen ist, wodurch
eine Reduzierung eines Synchronisiererschattens ermöglicht ist,
wie es in 4 angemerkt ist. Ferner ist
dem „Gül tig”-Signal der
Gruppe von Datenbits ein vollständiger
Taktzyklus des Vorrichtungskerns 212 zum Auflösen gegeben,
wodurch eine erhebliche Zeitperiode für das „Gültig”-Signal zum Auflösen gegeben
ist und ein Lockern der Entwurfsanforderungen des Synchronisierers 206 und
der Datenwarteschlage 208 (2) ermöglicht ist.
-
7 zeigt
eine exemplarische Anordnung einer Mehrzahl von Stücken 600a–f des Synchronisierers 206 (2).
Jedes Stück 600a–f empfängt eines
der Wrq[5:0]-Signale und erzeugt ein Entsprechendes der Sel[5:0]-Signale.
Jedes Stück 600a–f liefert
ferner ein Enable_Next_Sel[x]-Signal zu dem nächsten sequentiellen Synchronisiererstück und liefert
ferner das Sel[x]-Signal desselben zu dem vorhergehenden Synchronisiererstück. Auf
diese Weise sind die Sel[5:0]-Signale
in einer sequentiellen und sich wiederholenden Reihenfolge zu einer
Freigabe gezwungen.
-
Unter
erneuter Bezugnahme auf 6 ist dort eine exemplarische
Logik zum Zwingen der Signale Sel[5:0] zu einer Freigabe in sequentieller
und sich wiederholender Reihenfolge. Die Logik weist eine Freigabelogik 614,
die daraufhin, dass das „Rücksetz”- und das
nächste
Sequentielle der Auswahlsignale (Next_Sel[x]) sich beide in einem
niedrigen Zustand befinden, das nächste Sequentielle der Auswahlsignale
freigibt, um bei einer ansteigenden Flanke des Takts CK aktiviert
zu werden (z. B. über eine
Logik 616 und 618 und über das Ausgangssignal „Enable_Next_Sel[x]”). Jedes
der „Enable_Next_Sel[x]”-Signale
wird dann in das nächste
sequentielle Synchronisiererstück
als das Signal „Previous_Sel[x]” (siehe 6)
empfangen und gibt auf eine ansteigende Flanke des Takts CK hin
die Logik 620 frei, um die Logik 610 freizugeben.
-
8 stellt
eine exemplarische Logik 800, 802, 804 zum
Erzeugen (oder Freigeben) eines Stammdaten-Gültig-Signals (RxValid) dar.
Das Stammdaten-Gültig-Signal
wird auf ein Auflösen
eines Gültig-Signals
für irgendeinen
der Einträge der Datenwarteschlange 208 (2)
hin freigegeben. Wie es später
in dieser Beschreibung erörtert
wird, kann die Logik 500 (5) entworfen
sein, um das Stammdaten-Gültig-Signal über den
Empfang einer Mehrzahl von sequentiell empfangenen Gruppen von Datenbits
kontinuierlich in einem hohen Zustand zu halten. Dies kann bei einem
Empfangen von Daten besonders vorteilhaft sein, die erwarten, über eine synchrone
Schnittstelle gesendet zu werden (wie beispielsweise FBD-Daten).
-
Auf
ein Deserialisieren einer serialisierten Gruppe von Datenbits unter
einer Steuerung eines ersten Taktbereichs über den Deserialisierer 204 (2)
hin werden dann Daten ansprechend auf eines oder mehrere der Warteschlangensteuersignale Wrd[x]
in einen oder mehrere Einträge
einer Datenwarteschlange 208 zwischengespeichert. Wie es
in 9 gezeigt ist und bei einem exemplarischen Ausführungsbeispiel,
kann jedes Bit (Data[x]) einer deserialisierten Gruppe von Datenbits
ansprechend auf ein Entsprechendes der Schreibsignale Wrd[5:0] in einen
Eintrag (d. h. einen von q[5:0]) der Datenwarteschlange 208 zwischengespeichert
werden. Somit kann beispielsweise auf einen Empfang einer ersten Gruppe
von Datenbits hin Data[x] in einen Warteschlangeneintrag q[0] zwischengespeichert
werden; kann auf einen Empfang einer zweiten Gruppe von Datenbits
hin Data[x] in einen Warteschlangeneintrag q[1] zwischengespeichert
werden; usw. Auf etwas ähnliche
Weise werden Daten aus der Datenwarteschlange 208 über einen
Multiplexer 900 übertragen (und
möglicherweise
durch einen Puffer 902 gepuffert). Das heißt, Dateneingaben
des Multiplexers 900 sind mit entsprechenden Einträgen q[5:0]
der Datenwarteschlange 208 gekoppelt und Steuereingaben des
Multiplexers 900 sind mit Entsprechenden der Auswahlsignale
Sel[5:0] gekoppelt. Wenn dann jedes der Auswahlsignale Sel[5:0]
aktiviert ist, werden Daten d[5:0] von einem Entsprechenden der
Warteschlangeneinträge
q[5:0] von dem Taktbereich der Verbindung 210 zu dem Taktbereich
des Vorrichtungskerns 212 übertragen.
-
Wie
es nach einem Lesen der obigen Beschreibung ersichtlich sein sollte,
liefern das Verfahren 100 und die Vorrichtung 200 eine
Einrichtung zum Reduzieren von Synchronisiererschatten. Wie es durch
die exemplarischen Signalzeitverläufe von 4 gezeigt
ist, kann ein Synchronisiererschatten um mehr als die Hälfte reduziert
werden. Abhängig von
dem Typ von Daten, die empfangen werden, und dem gewählten Versatz
(d. h. Offset[7:0]) kann ein Synchronisiererschatten (und üblicherweise
eine Latenz) tatsächlich
manchmal auf etwa einen Zyklus des Verbindungstaktbereichs reduziert
werden (d. h. einen Zyklus des Takts RxCKP oder RxCKN). Je größer der
Versatz, desto geringer die Latenz. Falls jedoch der Versatz zu
groß ist,
können
Datenkollisionen auftreten.
-
Das
Verfahren 100 und die Vorrichtung 200, die hierin
offenbart sind, können
auch konfiguriert sein, um zu ermöglichen, dass asynchrone Schnittstellenschaltungen
mit Verbindungsprotokollen (z. B. FBD) verwendet werden können, die
eine synchrone Schnittstelle erwarten. Wie es unten beschrieben
ist, kann dies unter Verwendung einer einfachen digitalen Steuerlogik
anstelle komplexer analoger Taktausrichtungsschaltungen erzielt
werden.
-
In
einem FBD-Modus sind der Verbindungs- und der Kerntakt von dem gleichen
Referenztakt abgeleitet und weisen angepasste Bandbreiten auf, aber
es gibt keine Ausrichtung zwischen den Taktbereichen. Dies erzeugt
eine pseudosynchrone Taktgrenze zwischen dem Deserialisierer 204 (2) und
den FBD-Daten. Ein Problem ist jedoch, dass der Verbindungs- und
der Kerntakt sich ausrichten können,
derart, dass die Synchronisation derselben nicht vohersagbar ist.
Falls dies auftritt, könnte
RxValid (8) zu irgendeiner Zeit zu einem
niedrigen Zustand übergehen
und bewirken, dass die FBD-Verbindungssteuerung ausfällt.
-
Um
sicherzustellen, dass die oben beschriebene Situation nicht auftritt,
kann der erste Schreibvorgang in die Datenwarteschlange 208 (2)
verzögert
sein. Siehe beispiels weise den Puls 1100 (11)
der verglichen mit dem Puls 1000 (10) um
1/2 RxCKP-Zyklus verzögert
ist. Dies zwingt das RxValid-Signal, einen zusätzlichen Zyklus am Anfang der
Zeit in einem niedrigen Zustand zu bleiben, doch danach kontinuierlich
gültig
zu bleiben – wodurch
dafür gesorgt
ist, dass es der FBD-Verbindungssteuerung so erscheint, dass de
RxCKP/N- und der CK-Taktbereich synchronisiert und ausgerichtet
sind, wenn dieselben es tatsächlich
nicht sind. Die „verpassten” Daten
werden „gefangen” und einen
CK-Zyklus später
in die Datenwarteschlange 208 geschrieben (und aus derselben übertragen).
Es ist zu beachten, dass diese Lösung
lediglich eine Latenz hinzufügt,
wenn es eine minimale Spanne gibt, so dass es schwer zu sagen ist,
ob dieselbe tatsächlich
eine Latenz hinzufügt.
Die Größe einer
Verzögerung,
die zu der ersten Synchronisation hinzugefügt wird, ist durch das RxMargin_First_Wrq[1:0]-Signal
(3) bestimmt, das die Steuerlogik 202 zu
dem Data_Type[x:0]-Signal kombinieren kann, das dazu dient, den
Multiplexer 504 in 5 zu steuern.
Eine geringere Spanne bedeutet, dass es eine geringere Wahrscheinlichkeit
eines Hinzufügens
einer unnötigen
Latenz gibt. Im Grunde tauscht diese Lösung Taktausrichtungsschaltungen,
die typischerweise analoge Entwürfe
sind, die viel Fläche,
Leistung, Risiko etc. verbrauchen, gegen eine geringe Sychronisationseinbuße (1/2
bis 1 RxCKP/N-Zyklus) ein. Diese Einbuße kann jedoch beispielsweise
durch ein Reduzieren von Synchronisiererschatten unter Verwendung
des Verfahrens 100 oder der Vorrichtung 200 ausgeglichen
werden.