Es wird ein Hochgeschwindigkeitsdatenstrom von einer Quel
lenumgebung, z. B. einer faseroptischen Verbindung, die ei
ne Bitdatenrate von 12,5 GHz aufweist, betrachtet, wobei
diese Daten zu einer Zielumgebung geliefert und dann auf
eine bestimmte Art und Weise in Echtzeit mit dieser Rate
verarbeitet werden sollen. Eine Art, auf die dies durchge
führt wird, besteht darin, den Hochgeschwindigkeitsdaten
strom an einen Serialisierer/Deserialisierer-Wandler
(SERDES; SERDES = Serializer/Deserializer) anzulegen, der
die Daten in beispielsweise vier benachbarte Ströme von pa
rallelen 10-Bit-Daten bei einer Wortrate von 312,5 MHz
trennt. Zum Zeitpunkt ihrer Entstehung sind die vier Daten
ströme (auf die hierin im folgenden als Spuren bzw. Bahnen
Bezug genommen wird) in synchroner Ausrichtung, wobei die
selben alle in einer einzigen gemeinsamen Umgebung gemäß
einem gemeinsamen Taktsignal erzeugt werden. Es sind folg
lich die Spuren von parallelen Daten, die von der Quellen
umgebung (den SERDES) zu einer Zielumgebung (möglicherweise
einer Medienzugriffssteuerung oder MAC (MAC = Media Access
Controller)) gesendet werden. Variationen der effektiven
Länge einer Spur- oder der Ausbreitungskonstanten derselben
können verursachen, daß die Wörter, die in ihre jeweiligen
Spuren zur gleichen Zeit gesendet wurden, aus denselben zu
unterschiedlichen Zeitpunkten herauskommen. Dieses Problem
wird Wortausrichtung genannt. Fehlausgerichtete Wörter müs
sen schließlich korrekt neu ausgerichtet werden, oder die
wiederhergestellten Daten sind sonst verstümmelt. Bekannte
Verfahren zum Durchführen einer Wortausrichtung betreffen
die Verwendung von Hochgeschwindigkeitstakten und Verfahren
zum "Dehnen" und "Verdichten" bzw. "Zusammendrücken" der
elektrischen Wellenformen für die Wörter. Dies ist wahrhaf
tig ein häßliches Geschäft, das mit vielen Schwierigkeiten
behaftet ist, wie z. B. dem Phasenverriegeln von Hochge
schwindigkeitstakten und einem Servosystem, das eine ziem
lich komplizierte Logik aufweist.
Es wäre wünschenswert, wenn es eine einfache und zuverläs
sige Art zum Durchführen einer Wortausrichtung gäbe, die
nicht die Verwendung von Hochgeschwindigkeitstakten und die
verzerrte Wiederherstellung einer elektrischen Wellenform
für ein Datenwort umfaßt.
Ein weiteres Problem, das die SERDES/MAC-Umgebung, die oben
beschrieben ist, umgibt, besteht in der Ratenanpassung. Um
dieses Problem richtig beurteilen zu können, sei bemerkt,
daß die Wörter in Zuerst-Hinein-Zuerst-Hinaus-Register
strukturen (FIFOs) gespeichert sind. Im Stand der Technik
werden die Wörter ausgerichtet, bevor dieselben gespeichert
werden; wo sie in einer FIFO gespeichert werden, wird durch
einen Schreibzeiger (WP; WP = Write Pointer) bestimmt. Jede
der vier Datenspuren (die einzeln mit den Suffixen "0" bis
"3" versehen sind) weist ihre eigene FIFO auf, so daß die
Sammlung von FIFOs FIFO_1 bis FIFO_3 ist, und die jeweili
gen Wortzeiger derselben WP_0 bis WP_3 sind. Die einzelnen
WP_i werden aus Kreiszählern erzeugt, die durch einzelne
Spurtakte, die aus selbsttaktenden Daten in den jeweiligen
Spuren wiederhergestellt werden, inkrementiert werden. Es
gibt eine Sammlung von Lesezeigern (RP_i; RP = Read Poin
ter), die den WP_i entsprechen, und dieselben entstehen aus
einem Kreiszähler, der durch eine Takt in der Zielumgebung
getrieben wird. Es gibt keine Vorrichtung, die vorgesehen
ist, um die WP_i und die RP_i zu zwingen, mit exakt der
gleichen Rate zu inkrementieren; Es ist möglich, daß sich
dieselben aufgrund einer Drift, von Toleranzen etc., leicht
unterscheiden. Diese Entscheidung wurde auf der Ebene des
Systementwurfs gemacht und wird durch verschiedene ge
schriebene Standards von Standardfestsetzungsbehörden
durchgesetzt. Als eine Konsequenz muß es eine Möglichkeit
geben, eine Datenverstümmelung zu verhindern, wenn entweder
der Lese- oder der Schreib-Zeiger den anderen überholt. Die
verschiedenen Standardprotokolle für solche Systeme, die
erörtert wurden (die Ethernet, HARI und FIBRE (FASER) etc.
umfassen), sehen eine Vorrichtung zur Ratenanpassung vor,
so daß die Quellenumgebungs- und die Zielumgebungs-Takte
nicht exakt mit der gleichen Rate laufen müssen. Das Haup
telement dieser Vorrichtungen ist die Existenz von Zwi
schenpaketlücken (IPGs; IFG = Inter-Packet Gap), die spezi
elle Leerzeichen ("K" und "R") enthalten, die garantiert
nie in den Daten ordnungsgemäß auftreten. (Dieses magische
Bit zwingt den gesendeten Daten nicht die Begrenzung auf,
bestimmte Bitstrukturen bzw. Bitmuster zu vermeiden. Viel
mehr ist dasselbe statt dessen mit einer Erweiterung der
Zahl von Bits verbunden, die verwendet werden, um die Daten
auszudrücken, so daß es nicht verwendete Codes in der er
weiterten Version gibt. K und R gehören zu diesen nicht
verwendeten Codes bei dem erweiterten Codieren. Die Legende
"8B10B" ist die Bezeichnung eines solchen Erweiterungssche
mas, das von IBM entwickelt wurde, bei dem 8-Bit-Bytes als
10-Bit-Bytes neu codiert werden.) Da K und R nie in den
tatsächlichen Daten erscheinen, zeigt ihre Anwesenheit das
Auftreten einer IFG und ermöglicht folglich die Hochge
schwindigkeitserfassung einer IFG in Echtzeit. Die ver
schiedenen Protokollstandards spezifizieren keine spezielle
Größe für eine IFG mit der Ausnahme, daß dieselbe minde
stens eine bestimmte minimale Größe aufweist. Die Größe ei
ner IFG kann ferner während der Übertragung eingestellt
werden. Folglich wird eine effektive Datenratenanpassung
durch Hinzufügen oder Löschen der Zeichen K und R zu und
von den IPGs für alle Spuren immer dann erreicht, wenn die
Lese- und Schreib-Zeiger für eine Spur zu nahe zueinander
geraten. Nun, und dies ist ein geschickter Trick, existie
ren die zu modifizierenden IPGs als Folgen von Leerzeichen
in den FIFOs. Die übliche Art, um eine Ratenanpassung
durchzuführen, besteht einfach darin, einen Lesezeiger vor
zustoßen, um ein Zeichen zu löschen, oder denselben zurück
zustoßen, um ein Zeichen durch Wiederholen desselben einzu
fügen. Die Zeichenströme, die durch ein solches Lesen des
Inhalts des FIFO übertragen werden, sehen exakt wie das Lö
schen oder das Einfügen von Zeichen aus, obwohl sich in den
FIFOs tatsächlich keine Zeichen ändern. Dieses Einstellen
(wie benötigt) der effektiven Größe der IPGs ermöglicht es,
daß die echten Daten mit (kontinuierlichen) leicht fehlan
gepaßten Raten ohne eine Verstümmelung gesendet werden.
Dies ist eine etablierte Vorrichtung, und es wäre besonders
wünschenswert, wenn dieselbe intakt bliebe oder noch besser
mit einer verbesserten Art zum Durchführen der Wortausrich
tung zusammenarbeiten könnte, so daß eine Vorrichtung eine
Doppelaufgabe durchführt.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein
Verfahren zum Ausrichten von Daten in Spuren zu schaffen,
das eine einfache und zuverlässige Art zum Durchführen ei
ner Wortausrichtung ermöglicht, die nicht die Verwendung
von Hochgeschwindigkeitstakten und die verzerrte Wiederher
stellung einer elektrischen Wellenform für ein Datenwort
umfaßt.
Diese Aufgabe wird durch ein Verfahren zum Ausrichten von
Daten in Spuren gemäß Anspruch 1 gelöst.
Eine Lösung des Wortausrichtungsproblems, das oben be
schrieben ist, besteht darin, daß man für jede Spur einen
wiederhergestellten Takt, einen Schreibzeigerzähler und ei
ne FIFO besitzt. Fehlausgerichtete Wörter werden einfach in
ihren FIFOs gemäß den jeweiligen wiederhergestellten Takten
und den einfachen Inkrementen der verschiedenen Schreibzei
ger WP_i gespeichert. Eine der Spuren wird als ein Bezug
ausgewählt, und der Inhalt der anderen FIFOs wird unter
sucht, um die Natur ihrer Fehlausrichtung, wenn vorhanden,
zu bestimmen. Dann werden die Werte von den Lesezeigerzäh
lern RP_i einzeln durch entsprechende Beträge, um die Feh
lausrichtung zu kompensieren, versetzt, so daß, wenn Daten
gelesen werden, dieselben tatsächlich ausgerichtet sind.
Diese Versätze um entsprechende Beträge sind für die ver
schiedenen Lesezeiger einfach individuell pro Spureinstel
lung und wirken mit den Einstellungen dieser Lesezeiger für
eine Ratenanpassung zusammen.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beigefügten
Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein vereinfachtes Blockdiagramm eines elasti
schen Puffers für eine SERDES/MAC-Umgebung, in
der die Erfindung praktiziert werden kann;
Fig. 2 ein vereinfachtes Blockdiagramm eines Ratenan
passungskreiszählers, der bei dem Blockdiagramm
von Fig. 1 verwendet wird;
Fig. 3 ein Blockdiagramm einer Wortfehlausrichtungsde
tektorschaltung, die in dem Blockdiagramm von
Fig. 1 verwendet wird;
Fig. 4 ein Blockdiagramm einer Zwischenpaketlücken-
(IPG-) Detektorschaltung, die in dem Blockdia
gramm von Fig. 1 verwendet wird; und
Fig. 5 ein vereinfachtes Blockdiagramm ähnlich zu dem
selben von Fig. 1, jedoch modifiziert, um die
programmierbare Auswahl der Bezugsspur zu ermög
lichen.
Nun bezugnehmend auf Fig. 1, in der ein vereinfachtes
Blockdiagramm 1 eines elastischen Puffers gezeigt ist, der
eine Wortausrichtung und eine Ratenanpassung in einer Bei
spiel-SERDES/MAC-Umgebung durchführt. Der elastische Puffer
ist als eine integrierte Schaltung implementiert. Die Figur
zeigt vier Spuren, die mit SPUR 0 bis SPUR 3 bezeichnet
sind, und die bei dem elastischen Puffer von einer bestimm
ten Quellenumgebung 2 (nicht speziell gezeigt), z. B. einem
SERDES, eintreffen, und die nach einer Wortausrichtung und
einer Ratenanpassung zu einer Zielumgebung 3 (nicht spezi
ell gezeigt) gesendet werden, die eine MAC sein kann. Jede
Spur umfaßt ein 10-Bit-(Parallelform) Datenwort (D_IN_0[0-
9] bis D_IN_3[0-9] (8-11)) und einen zugeordneten wieder
hergestellten Takt (RCLK_0 bis RCLK_3 (12-15)). Jede Spur
weist ferner eine FIFO (25-28) auf, deren Dateneingang
mit dem 10-Bit-Datenwort (8-11) für diese Spur gekoppelt
ist. Die wiederhergestellten Takte (12-15) werden verwen
det, um jeweils zugeordnete Kreiszähler (17-20) zu inkre
mentieren, deren jeweilige Ausgangssignale (22-24) als
die Schreibzeiger WP_0 bis WP_3 (21-24) für die Spur der
FIFOs 25-28 verwendet werden. Eingangsdaten einer Spur
werden in einer Position in der FIFO derselben gespeichert,
wie es durch den Wert des Schreibzeigers dieser FIFO ge
zeigt ist. Die Vorderflanke bzw. Anstiegsflanke eines wie
derhergestellten Taktsignals wird verwendet, um den zuge
ordneten Kreiszähler zu inkrementieren, während die Hinter
flanke bzw. die Abfallflanke verwendet wird, um die Ein
gangsdaten in die FIFO bei der inkrementierten Adresse zu
takten. Bei einem Ausführungsbeispiel wiesen die FIFOs 16
Positionen auf, und die Schreibzeiger besitzen vier Bits.
Die Kreiszähler (17-21) werden anfangs gemeinsam beim In
betriebnehmen durch ein Signal WP_RESET 16 neu eingestellt
bzw. zurückgesetzt (reset). Dieselben beginnen daher
Schreibzeiger zu erzeugen, die anfangs den gleichen Wert
aufweisen, deren einzelne Werte jedoch schließlich etwas
willkürlich aufgrund eines Spurphänomens, das eine Fehlaus
richtung in der ersten Stelle erzeugt, in Bezug zueinander
werden. Auf der anderen Seite ist es nicht der Fall, daß
die Wortfehlausrichtung wie ein stationäres Zustandsdriften
für lange Zeitdauern ist. Es sei daran erinnert, daß die
wiederhergestellten Takte für die verschiedenen Spuren ei
nem gemeinsamen Takt entspringen, so daß die Durchschnitts
frequenz derselben immer gleich über eine bedeutende Zeit
dauer ist. Der Grad der Wortfehlausrichtung wird entweder
statisch sein oder langsam innerhalb eines bestimmten Be
reichs von Werten variieren. Es ist an diesem Punkt daher
offensichtlich, daß die FIFOs als unabhängige Kreispuffer
funktionieren, die bei diesem Beispiel 16 Positionen, je
weils mit einer Breite von 10 Bit, aufweisen.
Vor dem Fortfahren sei bemerkt, daß die SPUR_0 (4) als eine
Bezugsspur verwendet wird. Dies bedeutet, daß die Fehlaus
richtung der anderen drei Spuren (5-7) bezüglich der SPUR
0 konstruiert wird. Im Prinzip kann jede Spur die Bezugs
spur sein, und eine Änderung dahingehend welche Spur als
Bezug genommen wird kann dadurch bewirkt werden, indem ge
ändert wird, welche tatsächliche Spurhardware mit der Vor
richtung des elastischen Puffers 1 verbunden ist. Im Licht
einer solchen Dauerhaftigkeit betrachtet, ist die Aussage,
daß die SPUR_0 die Bezugsspur ist, lediglich eine Bezeich
nungskonvention, obwohl man erkennen sollte, daß sich die
Hardware der SPUR_0 auf eine bestimmte Art und Weise unter
scheidet, die es derselben ermöglicht, als Bezugskapazität
zu funktionieren, oder unterscheidet, da einige Objekte
nicht benötigt werden. Um kurz das vorweg zu nehmen, was
folgt, wird ein allgemeinerer Fall in Verbindung mit einer
späteren Figur umrissen, bei dem die Auswahl des Bezugska
nals programmierbar ist, ohne tatsächlich die Eingangs- und
Ausgangsverbindungen auszuwechseln. Ein Vergleich der zwei
Figuren wird zeigen, daß das Blockdiagramm 1 von Fig. 1 ei
ne geringfügige zusätzliche Vereinfachung genießt, die aus
dem festen Verdrahten der SPUR_0 als die Bezugsspur ent
steht: ein Addierer (ala 38-40) und ein Wortversatzsignal
(ala W_OFF_1 bis W_OFF_3 (42-44)) fehlen. Um den allge
meinen Fall zu erzeugen, werden diese Dinge hinein zurück
gestellt und mehrere Blöcke in dem Diagramm werden über
MUXs mit mehreren Spuren verbunden. Es gibt jedoch nichts
falsches in dem Blockdiagramm 1 von Fig. 1 und dasselbe ist
ein ausgezeichneter Ort, um die Prinzipien dieser Erfindung
in einer Umgebung einzuschätzen, die, wie man sagen kann,
durch eine zusätzliche Schicht der Verallgemeinerung nicht
verworren ist.
Um fortzufahren, muß es dann eine Vorrichtung geben, um Da
ten aus den FIFOs zu lesen, und diese gibt es tatsächlich.
Jede FIFO weist einen jeweiligen Lesezeiger (RP_0 bis RP_3
(33-36)) auf, dessen 4-Bit-Wert anfangs von einem Raten
anpassungskreiszähler 45 ausgeht. Wie zu sehen ist, tut
dieser Zähler 45 mehr als zählen: er muß den Zählwert des
selben durch vorausgewählte Beträge immer dann erhöhen oder
verkleinern, wenn die Notwendigkeit, dies zu tun, auftritt.
Mit dieser Aussage ist erkennbar, daß als ein Zähler die
Funktion desselben für den Lesezeiger ähnlich zu derselben
der Zähler 17-20 für die Schreibzeiger ist: die verschie
denen 10 Bit breiten Datenausgangssignale für die FIFOs
(D_OUT_0[0-9] bis D_OUT_3[0-9] (29-32)) werden aus Posi
tionen gelesen, die durch die Werte der verschiedenen Lese
zeiger (33-36) identifiziert sind. In dieser Eigenschaft
wird der Ratenanpassungskreiszähler 46 durch die Vorder
flanke eines Signals Zielbezugstakt (DEST_REF_CLK) 46 ge
taktet (gestuft). Dasselbe geht von der Zielumgebung 3 aus
und regelt die Rate, mit der die Zielumgebung Daten von dem
elastischen Puffer 1 verbraucht oder aufnimmt. Die Hinter
flanke von DEST_REF_CLK taktet die Daten für den inkremen
tierten oder anders geänderten Zählwert aus den FIFOs. Es
ist offensichtlich, daß die Notwendigkeit für eine Ratenan
passung aus der Tatsache entsteht, daß DEST_REF_CLK 46
nicht immer die gleiche Frequenz wie die verschiedenen wie
derhergestellten Takte RCLK_0 bis RCLK_3 (12-15) auf
weist. Das 9-Bit-Ausgangssignal des Zählers 45 wird BASE_RP
(Basislesezeiger) genannt und wird direkt an die FIFO_25
der SPUR 0 als der Lesezeiger RP_0 (33) derselben angelegt.
Die FIFOs (26-28) für die anderen Spuren weisen Lesezei
ger auf, die durch jeweilige Addierer (38-40) erzeugt
werden, die BASE_RP 37 mit Wortversätzen (42-44) kombi
nieren, die jeweils jeder Spur zugeordnet sind. Diese Wort
versätze sind die Signale W_OFF_1 bis W_OFF_3 und werden
durch einen Wortfehlausrichtungsdetektor 41 erzeugt, der
seinerseits mit den Datenausgängen (29-32) von den FIFOs
verbunden ist. Die Signale W_OFF_1 bis W_OFF_3 zeigen die
Fehlausrichtung ihrer jeweiligen Spuren 1-3 (5-7) rela
tiv zu der SPUR 0. Da dieselbe der Bezug ist, ist die SPUR
0 (4) nie mit sich selbst fehlausgerichtet. Wenn es ein Si
gnal W_OFF_0 gibt, ist der Wert desselben in diesem Block
diagramm immer Null. Folglich können dasselbe und der zuge
ordnete Addierer (für die FIFO_0 25) unterdrückt werden.
(Das Signal W_OFF_0 und der zugeordnete Addierer erscheinen
als notwendige Objekte wieder, wenn die Bezugskanalauswahl
programmierbar ist.)
Es gibt einen weiteren Block in dem Blockdiagramm 1 von
Fig. 1. Das ist der IPG-Detektor 47. Derselbe ist mit so
wohl den Daten (8), die in die FIFO_0 (25) für die SPUR 0
(4) geschrieben werden, als auch denselben (29), die aus
derselben gelesen werden, gekoppelt. Derselbe ist ferner
mit dem wiederhergestellten Takt der Bezugsspur der Quel
lenumgebung und mit dem Takt DEST_REF_CLK der Zielumgebung
gekoppelt. Die Funktion desselben ist im wesentlichen, das
Auftreten der speziellen IPG-Leerzeichen K und R zu erfas
sen. Eine solche Erfassung ist die Bedingung, die die Ein
stellung des Zählwerts in dem Ratenanpassungskreiszähler 45
ermöglicht. Ein einfacher ITG-Detektor kann lediglich mit
den Bezugsspurausgangsdaten 29 gekoppelt sein und kann ein
einziges Signal Lesezeigeränderungsfreigabe erzeugen. Dies
funktioniert jedoch auf Kosten des Auferlegens einer ver
steckten zusätzlichen minimalen Längenerfordernis für die
IPG. Dies ist detaillierter im folgenden erörtert, jedoch
kurz ausgedrückt, ermöglicht die Anordnung, die hier ge
zeigt ist, die Erzeugung von zwei Freigabesignalen: Lese
zeiger-Erhöhen-Freigabe (RP_ADV_EN) 48 und Lesezeiger-
Verkleinern-Freigabe (RP_RET_EN) 49. Mit getrennten Freiga
besignalen zum Erhöhen und Verkleinern des Zählers 45 gibt
es keine zugeordnete erhöhte minimale Größenerfordernis für
eine IPG (d. h. wie viele K und R dieselbe enthalten muß).
Es wird nun von einer Beschreibung, von dem, was sich in
dem Blockdiagramm des elastischen Puffers 1 befindet, zu
einer Erörterung darüber gewechselt, wie derselbe funktio
niert. Es wird mit dem Gesamtbetrieb gefolgt von einer de
taillierteren Betrachtung der einzelnen Themen der Wortaus
richtung, der IPG-Erfassung und der Ratenanpassung begon
nen. Schließlich werden kurz einige Alternativen unter
sucht.
Die vier Spuren der ankommenden Daten (8-11) werden je
weils in einer jeweiligen FIFO (25-28) gespeichert. Es
wird kein Versuch unternommen, eine Datenfehlausrichtung zu
erfassen oder handzuhaben, sowie dieselben gespeichert wer
den. Bei einem bevorzugten Ausführungsbeispiel ist es
zweckmäßig, obwohl nicht prinzipiell notwendig, sich darauf
zu verlassen, daß die Spurfehlausrichtung relativ zu einer
Bezugsspur nie größer als ein Wort ist. Wenn eine solch
große Fehlausrichtung auftreten sollte, liegen die Daten
außerhalb der Spezifikationen des zugeordneten Standards
derselben. (Es wird ferner angenommen, daß für jede Spur
der SERDES 10 Bits von Daten zugeführt hat, die ordnungsge
mäß zusammenpassen, und nicht beispielsweise 2 Bits von ei
nem Wort, die mit 8 Bits eines anderen Worts verbunden
sind.) Ein Wort kann ein Datenzeichen D (z. B. alles, was
ursprünglich in 8 Bits ausdrückbar ist) oder eines der spe
ziellen Nicht-Daten-Leerzeichen K und R sein. Ein Paket be
steht aus einer großen Zahl von Wörtern, möglicherweise ei
ner Potenz von 2, wie z. B. 210, oder sogar größer. Da die
FIFOs jeweils 16 Zeichen halten, ist, wenn ein Fehlausrich
tungsereignis, das in der Mitte eines großen Pakets auf
tritt, vorkommt, dasselbe durch lediglich eine Untersuchung
des FIFO-Inhalts nicht erfaßbar, da derselbe zu einem Zeit
punkt des Fehlausrichtungsereignisses erschien. Die Daten
in den FIFOs sind willkürlich, und es gibt keine Möglich
keit, lediglich durch Betrachten einer "Mittelscheibe"' ei
nes Pakets (wie es in den FIFOs gespeichert ist) auszusa
gen, daß dasselbe nicht so ist, wie es sein sollte. Feh
lausrichtungsereignisse sind jedoch allgemein nicht abrupt.
Es ist häufiger der Fall, daß sich eine Fehlausrichtung
über die Zeit allmählich stärker ausprägt, und daß, wenn
dieselbe zur IPG-Zeit erkannt und gehandhabt werden kann,
dies ausreicht. Das heißt, es wird angenommen, daß nie eine
Fehlausrichtung gehandhabt werden muß, die kommt und dann,
während sich dieselbe in der Mitte eines Pakets befindet,
wieder verschwindet. Daher muß eine Fehlausrichtung ledig
lich während einer IPG überprüft werden.
Es ist nun einfach, zu erkennen, daß eine IPG durch den
elastischen Puffer läuft: dieselbe wird die speziellen Zei
chen K und R (dies ist der Grund, warum dieselben vorhanden
sind) zeigen, und kein anderer Teil eines Pakets wird ent
weder K oder R enthalten. Außerdem ist ein Teil der Art,
mit der der SERDES arbeitet, daß jede Spur mit einem
gleichzeitigen und identischen Muster von K und R während
einer IPG beginnt. Es sei dann angenommen, daß ein K oder
ein R aus der FIFO 25 für die Bezugs-SPUR_0 (4) gelesen
wird. Wenn keine Fehlausrichtung aufgetreten ist, dann ist
sicher, daß die entsprechende Leseoperation für die anderen
FIFOs das gleiche Symbol erzeugt. Da ferner bekannt ist,
daß die Fehlausrichtung entweder statisch ist oder sehr
langsam fortschreitet, und daß dieselbe behoben wird, bevor
dieselbe größer als ein Wort wird, kann trotzdem das Argu
ment umgedreht werden und gesagt werden, daß, wenn die Sym
bole, die gerade aus der Bezugs-FIFO und einer anderen FIFO
gelesen wurden, beide K oder R sind, es dann keine Fehlaus
richtung zwischen der Bezugsspur und dieser anderen Spur
gibt. So weit so gut. Aber was ist mit den Fällen, bei de
nen eine Fehlausrichtung auftritt?
Es wird nun angenommen, daß die SPUR_1 etwas früh im Ver
gleich zu dem Bezug (SPUR_0) eintrifft. Ein kurzes Nachden
ken wird den Leser zufriedenstellen, daß, obwohl dieselbe
die Zeitfolge ändert, in der Dinge passieren (ein R für die
FIFO_1 wird etwas früher als das R für die FIFO_0 gespei
chert), dies nicht die relativen Positionen dieser zwei Rs
verändert. Jedes ist die "nächste" Position. Wenn dieselben
folglich mit einem gemeinsamen Wert für den Lesezeiger (was
das ist, was man tun wird, wenn man keinen Hang hat, etwas
anderes zu tun) gelesen werden, werden diese zwei R jeweils
als die normalen Daten für ihre jeweiligen FIFOs erschei
nen, als ob es keine Fehlausrichtung gab! Das heißt, es muß
nichts zusätzlich getan werden, um den Fall zu beheben, bei
dem eine Spur von bis zu einem Wort früher relativ zu der
Bezugsspur fehlausgerichtet ist. Das beschriebene Hinein-
und Hinaus-Takten der FIFOs hat dies bereits behoben.
Es wird nun der andere Fall betrachtet, bei dem die SPUR_1
bezüglich der SPUR_0 spät ist. Bei diesem Fall wird der
Schreibzeiger WP_1 für die SPUR_1 vor seinen ankommenden
FIFO-Daten (d. h. beispielsweise vor R) gespeichert. Wenn
nun der Lesezeiger RP_0 für FIFO_0 zu einem Wert fort
schreitet, der das entsprechende R liest, erzeugt das Lesen
von FIFO_1 nicht, daß R für RP_1 gleich RP_0 ist. Wenn er
zwungen wird, daß die IPG-Daten wiederholte Zeichen (der
HARI-Standard verwendet KRKR. . .) vermeiden, dann ist garan
tiert, daß die zwei speziellen Zeichen ungleich sind, und
dies kann als eine Anzeige verwendet werden, daß die SPUR_1
um ein Wort später relativ zu der SPUR_0 fehlausgerichtet
ist. Bei diesem Fall möchte man W_OFF_ 1 auf 1 einstellen,
um einen Ein-Wort-Versatz in RP_1 einzuführen. Dies hebt
die Ein-Wort-Fehlausrichtung der SPUR_1 relativ zu der
SPUR_0 auf, so weit es das Lesen der Daten betrifft. Und
dies ist auch alles, worum sich die Zielumgebung kümmert.
Wenn jedoch W_OFF_1 durch eine Stationärzustand-Gleichheit
oder -Ungleichheit zwischen Leerzeichen direkt gesteuert
werden muß, gibt es ein Problem. Es ist ein Oszillator.
Wenn das Einstellen von W_OFF_1 auf Wahr die Fehlausrich
tung löscht, verschwindet der Unterschied, was W_OFF_1 weg
nimmt und die Fehlausrichtung wiederherstellt, was W_OFF_1
zurück zu WAHR bringt etc. Statt dessen wird W_OFF_1 jedes
mal umgeschaltet, wenn ein Unterschied zwischen der SPUR_1
und der Bezugsspur auftritt. Wenn W_OFF_1 zu einem Wert ge
bracht wird, der die Fehlausrichtung behebt, gibt es keine
ungleichen Leerzeichen, und W_OFF_1 verbleibt lediglich bei
diesem behebenden Wert und die Spur bleibt ausgerichtet.
Wenn derselbe (den anderen Weg zurück!) driftet, um feh
lausgerichtet zu sein, dann wird W_OFF_1 wiederum umge
schaltet, und dies sollte dies beheben.
Es gibt einige Haushaltsführungssorgen, die sich darauf be
ziehen, wie der Wortfehlausrichtungsdetektor 41 arbeiten
sollte. Das beschriebene Verfahren wird funktionieren, vor
ausgesetzt, daß entweder ein spezielles Zeichen K oder ein
R das letzte Zeichen ist, das gerade für jede Spur gelesen
wurde. Das heißt, übliche Datenzeichen, die in einer Spur
an der Grenze einer IPG erscheinen können, sollen vor dem
Beeinflussen des Resultats ausgeschlossen werden. Das Ein
stellen der W_OFF_i und die Antwort auf die Wertänderungen
derselben müssen alle in einen Zyklus fallen. Vorausge
setzt, daß diese Bedingungen erfüllt werden (alle Leerzei
chen und keine Latenzzeit), wird dann jedes aktuelle Zei
chen einer Nicht-Bezugsspur mit dem aktuellen Zeichen der
Bezugsspur verglichen, um zu bestimmen, ob dieselben gleich
oder unterschiedlich sind. Die Gleichheit für eine Spur
zeigt die Ausrichtung während des Lesens an. Der Unter
schied für eine Spur zeigt an, daß die Spur spät ist und
daß der Lesezeiger für die FIFO der Spur einen umgeschalte
ten Versatz von 1 aufweisen muß. Da das anpassende K oder R
spät gespeichert wurde, wird sich dasselbe in dem nächsten
FIFO-Eintrag befinden, und wenn auf diesen Eintrag statt
dessen zugegriffen wird, wird sich dieses Zeichen korrekt
anpassen. Daher muß der Versatz den Lesezeiger für die FIFO
dieser Spur inkrementieren. Ein umgeschalteter Versatz von
1 kann dies erledigen. Sobald dies durchgeführt ist, wird
die Fehlausrichtung für diese Spur so lange als verschwun
den erscheinen, bis eine weitere Änderung des Verhaltens
der Spur auftritt.
Es wird sich nun der Frage der Ratenanpassung zugewandt.
Wiederum müssen die Handlungen beschränkt werden, die vor
genommen werden, um die Ratenanpassung an das Innere einer
IPG zu bewirken. Es wird daher eine IPG-Erfassung benötigt.
Die Spuren werden jedoch ausgerichtet sein, so daß es aus
reichend ist, die aktuellen Zeichen für die FIFO der Be
zugsspur zu untersuchen, um zu sehen, ob dieselben K oder R
sind. Man kann lediglich das Zeichen verwenden, das aktuell
eingegeben wird, oder lediglich jenes, das zuletzt ausgele
sen wurde. Es ist jedoch zweckmäßig, sich über beide bewußt
zu sein, da dies kürzere IPGs ermöglichen wird.
Der Leser wird sich erinnern, daß eine Ratenanpassung durch
Verändern der Länge der IPG erreicht wird. Es sei angenom
men, daß DEST_REF_CLK für die Zielumgebung schnell läuft.
Da es nicht möglich ist, denselben zu verlangsamen, müssen
demselben mehr (harmlose) zu lesende Zeichen gegeben wer
den. Das Verfahren besteht darin, denselben einige der IPG-
Zeichen durch Einführen einer dauerhaften Verzögerung in
den Wert des Lesezeigers (BASE_RP), der ein üblicher Wert
ist, der durch jede der FIFOs verwendet wird, wieder lesen
zu lassen. (Der tatsächliche Wortzeigerwert jeder einzelnen
FIFO ist BASE_RP, wie er durch jedes Stationärzustandsin
krement eingestellt ist, das benötigt wird, um eine Aus
richtung zu erzeugen, diese Tatsache stört jedoch nicht die
Logik des vorhergehenden Satzes.) Und bei dem Fall, bei dem
DEST_REF_CLK langsam läuft, muß es möglich sein, das Lesen
von einigen IPG-Zeichen durch Erhöhen des Werts von
DEST_REF_CLK auszulassen.
Dieses Erhöhen und Verkleinern muß, wie benötigt, auf einer
fortlaufenden Basis auftreten und kann sich über eine lange
Zeitdauer zu einer gewaltigen Zahl von Zählwerten summie
ren. Daher muß man einfach hinein gelangen und den Wert des
Zählers auf einer Bedarfsbasis handhaben und nicht den Wert
des Ratenanpassungskreiszählers mit einem äußeren Zähler
versetzen. Die Fragen sind nun: Wann wird dies durchge
führt, mit wieviel und wie?
Es soll immer dann durchgeführt werden, wenn der elastische
Puffer eine PG überträgt und es scheint, daß die Lese- und
Schreib-Zeiger für eine Behaglichkeit zu nahe zueinander
kommen. Es wird bevorzugt, daß dieselben einen halben
Zählzyklus (acht Zählwerte) bezüglich des Werts auseinander
bleiben. Es muß daher klarerweise die Differenz zwischen
WP_0 und RP_0 genommen werden. Es gibt nichts außergewöhn
liches über die benötigte Arithmetik, es gibt jedoch eine
Komplikation, die angegangen werden muß. Die Schwierigkeit
fällt in eine Kategorie, die Zeitbereichskreuzungen genannt
wird, und betrifft die häßliche Aussicht einer Metastabili
tät. Die Situation ist folgende. WP_0 wird durch die Quel
lenumgebung 2 getaktet, während RP_0 durch die Zielumgebung
3 getaktet wird. Der Unterschied wird durch ein Verfahren
verwendet, das durch die Zielumgebung getaktet ist, es wird
daher gewählt, den Wert von WP_0 in die Zielumgebung zu
bringen und alle weiteren Operationen dort durchzuführen.
(Das Herüberbringen ist der tatsächliche Zeitbereichskreu
zungsteil.)
WP_0 ist ein 4-Bit-Zählwert. Um WP_0 herüber zu bringen,
wird derselbe an zwei kaskadierte 4-Bit-Latchs angelegt,
die durch DEST_REF_CLK getaktet sind. Diese Latchs sind
noch nicht sichtbar; dieselben sind in dem Ratenanpassungs
kreiszähler 45 positioniert. Die Verwendung von solchen
Latchs bei der Zeitbereichskreuzung ist gut verstanden.
Dies ist jedoch nicht alles, was getan werden muß. Das Me
tastabilitätsproblem haftet an jedem Bit, das sich von ei
nem Zählwert zu dem nächsten Zählwert ändern kann, sowie
der Zählwert von einem Zeitbereich zu einem anderen läuft.
Eine andere Weise, dies zu beschreiben, besteht darin, zu
sagen, daß jedes Bit, das sich von einem Zählwert zu dem
nächsten ändern kann, einer Unsicherheit ausgesetzt ist.
Das übliche Binärsystem weist oftmals viele Bits auf, die
von einem Zählwert zu dem nächsten übergehen. Das Resultat
besteht darin, daß selbst bei kaskadierten Latchs eine
Mehr-Bit-Unsicherheit auftritt. Dies wird nie funktionie
ren. Die Lösung ist für Fachleute in solchen Dingen be
kannt. Der Wert, der über die Zeitbereichsgrenze gesendet
wird, wird in einen Gray-Code umgewandelt, bevor derselbe
gesendet wird. Ein Gray-Code hat immer nur lediglich ein
Bit, das sich von einem Zählwert zu dem nächsten ändert.
Dies begrenzt den Schaden auf eine Unsicherheit von ledig
lich einem Zählwert, mit der man leben muß. Dementsprechend
wird WP_0 21 an den Binär-zu-Gray-Code-Wandler 50 angelegt,
dessen Ausgangssignal GC_WP_0 (Gray-codierter Schreibzeiger
Null) 51 dann an den Ratenanpassungskreiszähler 45 angelegt
wird. Darin sind die kaskadierten 4-Bit-Latchs der Zeitbe
reichskreuzung positioniert und die notwendige Subtraktion
wird anschließend durchgeführt. Ein letztes Detailstück
wird benötigt, um dieses Schema funktionieren zu lassen.
Der Gray-codierte Wert GC_WP_0 (der Minuend in der Subtrak
tion) wird um zwei Taktzeiten verzögert, bevor derselbe für
eine Subtraktion verfügbar ist (ein Resultat der Metastabi
litätsreparatur). Man ist nun verpflichtet, den Subtrahen
den (RP_0) um ähnliche zwei Taktzyklen zu verzögern, damit
die Subtraktion nicht die Wahrheit ergibt. Als nächstes
wird ein Standardbinärwert von einem Gray-codierten Wert
subtrahiert. Die Wahlmöglichkeiten bestehen entweder darin,
denselben zurück umzuwandeln (möglicherweise Verzögerung,
Extra-Silizium und ist möglicherweise redundant) oder wei
ter zu gehen und das übliche Zweierkomplement und eine Ad
dition durchzuführen, jedoch die Wahrheitstabelle des Ad
dierers zu ändern, um den Gray-Code innen aufzunehmen
(rückgängig zu machen) und jedenfalls die richtige Antwort
zu erzeugen. Es wird bevorzugt, das letztere zu tun.
Mit den obigen Betrachtungen im Kopf wird fortgefahren, um
die Differenz zwischen WP_0 und RP_0 zu bilden, und wenn
diese etwa 8 ist, dann muß nichts weiteres zu diesem Zeit
punkt getan werden. Nun sind WP_0 und RP_0 vorzeichenlose
Ganzzahlwerte in dem Bereich von 0 bis 15. Man möchte, daß
WP_0 vor RP_0 mit etwa 8 bleibt. Es wird daher WP_0 minus
RP_0 gebildet und die Differenz wird mit einem Bereich,
z. B. 6 bis 10, verglichen. Wenn es dieser Bereich ist,
dann wird dieselbe als nahe genug zu 8 betrachtet und es
wird nichts getan. Jene, die die Komplement-Arithmetik von
Modulo-Zwei kennen, werden einschätzen können, daß dieses
Resultat trotz einem Umwickeln (Wrap Around) in den Werten,
während dieselben über die Zeit inkrementiert werden, z. B.
das WO_0 von 15 zu 0 und dann zu 1 geht, während RP_0 von
beispielsweise 7 zu 8 zu 9 geht, erhalten wird. (1-9
mod16 ist gleich 8.)
Es sei nun angenommen, daß RP_0 schneller als WP_0 inkre
mentiert wird. Sobald sich dieselben annähern, ungeachtet
dessen, wo sich dieselben in dem Zählzyklus befinden, wird
die Differenz derselben kleiner. Wenn dieselbe in den Be
reich von 1 bis 5 gelangt, verspürt man einen bestimmten
Drang, den Wert des Lesezeigers um 4 zu dekrementieren, um
vier zusätzliche IPG-Zeichen einzufügen. Dies kann sicher
(d. h. ohne eine Angst des Störens von benachbarten Nicht-
IPG-Daten) durchgeführt werden, wenn die vier Zeichen, die
zuletzt aus der Bezugs-FIFO gelesen wurden, vier aufeinan
derfolgende spezielle Zeichen waren. Dies ist die Bedeutung
des Signals Lesezeiger-Verkleinern-Freigabe (RE_RET_EN) 49,
das durch den IPG-Detektor 47 erzeugt wird. Die Wahl der
vier zuletzt gelesenen speziellen Zeichen tritt aus diesem
Grund auf. Wenn der Wert des Zählwerts für RP_0 verkleinert
wird, muß sicher sein, daß derselbe schließlich zu einem
weiteren speziellen Zeichen zeigt. Derselbe wird auf alles
zeigen, was gerade vier Takte vorher (d. h. dem Beginn der
verlangten vier gerade gelesenen speziellen Zeichen) gele
sen wurde, und weder derselbe noch die drei, die demselben
folgen, werden durch die Eingangsseite überschrieben sein,
da der Schreibzeiger den Lesezeiger nicht überholt.
Es wird nun der Fall betrachtet, wenn RP_0 langsamer als
WP_0 inkrementiert wird. Schließlich wird die Differenz ei
ne große Zahl in dem Bereich von 11 bis 15 werden. Bei die
sem Fall muß man den Wert des Lesezeigers um 4 erhöhen (so
daß die Zeigerwerte ordnungsgemäß voneinander wieder beab
standet sind). Dies durchzuführen, bedeutet, nicht so viele
Zeichen lesen zu müssen, was die Art ist, mit der das Auf
holen durchgeführt wird. Dieser Fall ist komplizierter und
die Regel lautet wie folgt: Wenn für sechs aufeinanderfol
gende spezielle IPG-Leerzeichen beobachtet wurde, daß die
selben zu der FIFO für die Bezugsspur geschrieben wurden,
und das Ausgangssignal der Bezugs-FIFO ebenfalls ein spezi
elles IPG-Leerzeichen ist, dann wird das Signal Lesezeiger-
Erhöhen-Freigabe (RP_ADV_EN) 48 erzeugt. Das heißt, in Ver
bindung mit einer Differenz in dem Bereich von 11 bis 15
wird der Wert des Ratenanpassungszählers 45 sicher um vier
Zählwerte erhöht. Die sechs aufeinanderfolgenden speziel
len Zeichen können auf diese Art und Weise erklärt werden.
Vier derselben werden benötigt, um die Positionen darzu
stellen, die beim Erhöhen des Lesezeigers ausgelassen wer
den sollen. Dies dient dazu, um zu verhindern, daß Daten
durcheinander gebracht werden. Die verbleibenden zwei der
selben werden für die Sicherheit benötigt, um es zu ermög
lichen, daß eine Unsicherheit von zwei Zeichen durch die
Verzögerung von zwei Zyklen der kaskadierten Latchs durch
die Zeitbereichskreuzung verwendet wird.
Die Differenz von WP_0 minus RP_0 wird immer innerhalb des
Zählers 45 cebildet, der WP_0 über eine Zeitbereichsgrenze,
wie im vorhergehenden erklärt, für den Zweck des Erzeugens
der Differenz erhält (derselbe besitzt bereits RP_0, da
derselbe die Quelle für diesen Zählwert ist). Die Differenz
wird mit der Drei-Bereichs-Teilung von 1 zu 5, 6 zu 10 und
11 zu 15 verglichen. Das Resultat dieses Vergleichs wird
mit den Lesezeiger-Erhöhen- und Verkleinern-Freigabe-
Signalen (4E, 49) gegattert, um zu entscheiden, wann der
Zähler 45 einzuleiten ist, um sich selbst zu erhöhen oder
zu verkleinern.
Es wird nun auf Fig. 2 Bezug genommen, die ein vereinfach
tes Blockdiagramm des Ratenanpassungskreiszählers 45 ist.
Es sind bereits die Funktionseigenschaften des Ratenanpas
sungskreiszählers 45 beschrieben, so daß angenommen wird,
daß das Blockdiagramm von Fig. 2 ohne eine ausgedehnte Er
örterung beurteilt werden kann. Daher sind kurz beschrieben
die Haupteingangssignale desselben GC_W_0 (die Gray
codierte Version von WP_0) 51 und die Ratenanpassungs-
Freigabe-Signale RP_ADV_EN 48 und RP_RET_EN 49. Derselbe
nimmt ferner das Taktsignal DEST_REF_CLK 46 auf, das die
Zielseite der Zeitbereichskreuzung ist. Die Gray-codierte
Version von WP_0 51 wird an die zwei kaskadierten 4-Bit-
Latchs 52 und 53 angelegt, die jeweils durch DEST_REF_CLK
46 getaktet sind. Das Ausgangssignal des Latch 53 wird um
zwei Taktzyklen verzögert und ist ein Wert, der in den
Zielzeitbereich gekreuzt hat und wird dann, immer noch im
Gray-Code (obwohl dasselbe hier zurück zu binär, wenn ge
wünscht, umgewandelt werden könnte), an einen Eingang eines
Addierers 54 angelegt. Das andere Eingangssignal des Addie
rers 54 ist das Zweierkomplement des Werts, der von WP_0
subtrahiert werden soll, nämlich BASE RP 37 (das als RP_0
verwendet wird), nachdem dasselbe ebenfalls um zwei Taktzy
klen in der. Latchs 56 und 57 verzögert wurde. Die Wahr
heitstabelle (nicht gezeigt) des Addierers 54 ist einge
stellt, um die Effekte des Gray-Codes für das Eingangs
signal WP_0 rückgängig zu machen. Das Ausgangssignal des
Addierers 54 ist ein Differenzsignal Δ 58, das seinerseits
an einen Bereichsdetektor 59 angelegt ist. Derselbe be
stimmt, ob sich Δ in dem Bereich von 1 bis 5 (Signal 60)
oder in dem Bereich von 11 bis 15 (Signal 61) befindet. Der
6-bis-10-Bereich ist im Prinzip interessant, da derselbe
jedoch keine spezifische Handlung verursacht, kann derselbe
durch Minimierung eliminiert werden.
Das Signal 60 für Δ gleich 1 bis 5 wird durch ein UND-
Gatter 62 mit dem Signal RP_RET_EN 49 UND-verknüpft, das
von dem IPG-Detektor 47 ausgeht. Wenn dieselben beide WAHR
sind, dann ist das Signal INS (Einfügen von speziellen Zei
chen) ebenfalls wahr. Dasselbe wird als ein Eingangssignal
an eine Zustandsmaschine 64 angelegt. Auf ähnliche Art und
Weise wird das Signal 61 für Δ gleich 11 bis 15 durch ein
UND-Gatter 63 mit RP_ADV_EN UND-verknüpft, das ebenfalls
von dem IFG-Detektor 47 ausgeht. Das Ausgangssignal des
UND-Gatters 63 ist ein Signal DEL (Löschen von speziellen
Zeichen), das ebenfalls ein Eingangssignal zu der Zustands
maschine 64 ist. Das Endeingangssignal zu der Zustandsma
schine 64 ist der aktuelle Wert von BASE RP 37. Die Zu
standsmaschine 64 weist die Eigenschaften eines 4-Bit-
Kreiszählers auf, der durch die Fähigkeit verbessert wird,
den Wert derselben um 4 bei der Aktivierung von DEL bzw.
INS zu inkrementieren oder zu dekrementieren. Siehe die
Wahrheitstabelle 66. Das 4-Bit-Latch 65 erfaßt den nächsten
Wert von BASE_RP 37, von wo derselbe zu den verschiedenen
Positionen, bei denen derselbe verwendet wird, gesendet
wird.
Es wird nun auf Fig. 3 Bezug genommen, die ein Blockdia
gramm des Wortfehlausrichtungsdetektors 41 ist. Wie es ohne
weiteres zu sehen ist, umfaßt derselbe drei Komparatoren 89-91,
die Einsen als Ausgangssignale immer dann erzeugen,
wenn die Eingangssignale derselben nicht gleich sind. Jeder
Komparator vergleicht das Datenwort, das gerade aus der Be
zugsspur (SPUR_0) gelesen wird, mit dem Datenwort, das ge
rade aus jeder anderen Spur gelesen wird, und die jeweili
gen Ausgangssignale derselben werden in eine Sammlung von
Umschalt-Flip-Flops (Toggle-Flip-Flops) 97-99 zwischenge
speichert bzw. verriegelt. Die Umschalt-Flip-Flops werden
durch ein Signal 96, für das ohne weiteres erkennbar ist,
daß dasselbe darstellt, daß jede Spur ein Leerzeichen K
oder R zeigt, freigegeben bzw. aktiviert. Jede Spur speist
beispielsweise Komparatoren (z. B. 92 und 93), die jeweils
K und R erfassen. Die Erfassungen werden miteinander ODER
verknüpft (94), so daß jedes Leerzeichen aufgenommen wird,
und dann werden die Ausgangssignale von dem gesamten ODER-
Gatter mit dem UND-Gatter 95 UND-verknüpft. Wenn das Aus
gangssignal 96 von dem UND-Gatter 95 WAHR ist, bedeutet
dies, daß jede Spur ein Leerzeichen zeigt. Dies ist dann
der Zeitpunkt, zu dem die Umschalt-Flip-Flops freigegeben
werden. Nun wird jedesmal während einer IPG, wenn sich eine
Spur von ausgerichtet zu fehlausgerichtet ändert, das zuge
ordnete Umschalt-Flip-Flop derselben den Zustand ändern. Es
sei daran erinnert, daß, wenn eine Spur bezüglich der Be
zugsspur früh ist, keine Fehlausrichtung vorhanden ist, ei
ne Fehlausrichtung tritt lediglich auf, wenn eine Spur spät
ist. Jedesmal, wenn eine Spur spät ist, wird der zugeordne
te Komparator 89-91 derselben ein Ausgangssignal erzeu
gen. Es wird angenommen, daß man sich in einer IPG befin
det, die das zugeordnete Umschalt-Flip-Flop umschaltet. Ein
erstes Umschalten, um die Fehlausrichtung während des Inbe
triebnehmens zu korrigieren, kann fehlschlagen, das nächste
Umschalten wird dieselbe jedoch korrigieren, so daß sich
das System innerhalb eines Zyklusses oder einem zweimaligen
Umschalten synchronisiert. Sobald eine Spur synchronisiert
ist, ändert sich das Umschalt-Flip-Flop derselben ledig
lich, um die neuen Fehlausrichtungsereignisse zu verfolgen.
Es wird nun auf Fig. 4 Bezug genommen, die ein Blockdia
gramm des IPG-Detektors 47 ist. Es wird nun betrachtet, wie
derselbe RP_RET_EN 49 durch Erfassen von vier aufeinander
folgenden Leerzeichen in D_OUT_0 29 erzeugt. Ein Komparator
76 identifiziert K oder R und erzeugt K_R_OUT. Wenn dies
passiert, entfernt derselbe das Neueinstellsignal bzw.
Rücksetzsignal von einem 2-Bit-Zähler 77, der durch
DEST_REF_CLK 46 getaktet ist. Wenn dieser Zähler zu einem
Zählwert vor. 3 gelangt, wird ein Ausgangssignal von dem
Komparator 78 erzeugt. Das bedeutet, daß drei Leerzeichen,
jedoch nach einer Verzögerung, um durch die Zähler zu ge
langen, aufgetreten sind. Wenn K_R_OUT zu diesem gleichen
Zeitpunkt ebenfalls wahr ist, dann ist das der vierte Fall
eines Leerzeichens, der vor der Verzögerung des Erhaltens
des Hinaufzählens erkannt wird. Jedenfalls erkennt das UND-
Gatter 79 diese Bedingung (vier Leerzeichen) und erzeugt
RP_RET_EN 49. Dieses Ausgangssignal wird zu falsch in einem
weiteren Zählwert des Zählers 77 zurückgehen, dasselbe wird
jedoch ausreichend lang WAHR sein, um effektiv zu sein.
Der Betrieb des Rests des IPG-Detektors ist etwas kompli
zierter. Die Idee besteht darin, sechs aufeinanderfolgende
Leerzeichen auf der Schreibseite der Bezugs-FIFO zu erken
nen, und dann RP_ADV_EN zu erzeugen. In diesem Fall gibt es
zwei Zeitbereichskreuzungen. Eine tritt auf, da das benö
tigte Signal sich auf der Leseseite befindet, und erklärt,
warum kaskadierte Latchs 84 und 85 in dem Weg zu dem UND-
Gatter 86 vorhanden sind, das RP_ADV_EN erzeugt. Die andere
Kreuzung geht den anderen Weg (Latchs 87 und 88) zurück, da
der Zustand von RP_ADV EN in der Neueinstellregel für einen
sättigenden Zähler verwendet wird, der bei dem Hinaufzählen
zu 6 verwendet wird. Der Zähler 82 zählt lediglich während
K_R_IN WAHR ist und wird auf zwei Zyklen, nachdem RP_ADV_EN
aktiviert ist, neu eingestellt.
Schließlich wird das Blockdiagramm 67 von Fig. 5 betrach
tet. Es zeigt auf eine allgemeine Art und Weise welche Än
derungen notwendig sind, daß die Vorrichtung des elasti
schen Puffers, die oben beschrieben ist, eine programmier
bare Bezugsspur aufweist. In dieser Figur besitzen Elemen
te, die nicht verändert sind oder allgemein sehr ähnlich
sind, die gleichen Bezugszeichen, die auch in Fig. 1 zuge
wiesen sind. Es wird dann kurz angenommen, daß ein 2-Bit-
Code REF_SEL 73 irgendwo (nicht gezeigt) erzeugt wurde und
daß derselbe durch den Binärwert desselben anzeigt, welche
der Spuren von SPUR_0 bis SPUR 3 als die Bezugsspur funk
tionieren soll. REF_SEL 73 geht zu mehreren Stellen. Diese
sind zu einem leicht modifizierten Wortfehlausrichtungsde
tektor 68, einem leicht modifizierten IFG-Detektor 70 und
einem leicht modifizierten Binär-zu-Gray-Code-Wandler 74.
Allgemein gesprochen sind diese Schaltungen auf eine ähnli
che Art und Weise dahingehend modifiziert, daß MUXs (nicht
gezeigt) hinzugefügt sind, um es zu ermöglichen, daß ein
Eingangs- oder Ausgangs-Wort, das der Spur zugeordnet ist,
die durch REF_SEL identifiziert ist, anstelle eines Worts
verwendet wird, das dauerhaft der SPUR 0 zugeordnet ist.
Diese MUXs können aus 3-Zustands-Treibern gefertigt werden,
um eine Einfachheit und einen niedrigen Leistungsverbrauch
zu fördern.
Es gibt ein paar andere bemerkenswerte Änderungen, die er
wähnt werden sollten. In keiner speziellen Reihenfolge sei
dann bemerkt, daß der Wortausrichtungsdetektor ebenfalls
erweitert ist, um das Signal 72 W_OFF_0 zu erzeugen, das in
Fig. 1 nicht benötigt wird. Ähnlicherweise ist nun ein Ad
dierer 71 vorhanden, der W_OFF_0 mit BASE RP kombiniert, um
RP_0 zu erzeugen, wie es auch für die anderen Spuren durch
geführt wird. Der IFG-Detektor 70 erhält nun alle Datenein
gangswörter 8-11 und Datenausgangswörter 29-32 für jede
der FIFOs sowie alle der wiederhergestellten Takte 12-15.
Dieses Geschäft mit den Takten ist so, daß dasselbe weiter
Signale 48 und 49 erzeugt, die eine Zeitbereichskreuzungs
verzögerungsanpassung für den Ratenanpassungskreiszähler,
ungeachtet welche Spur die Bezugsspur ist, aufweisen.
In der in der Figur gezeigten Anordnung entkommt der Raten
anpassungskreiszähler 45 einer Modifikation, da der Binär
zu-Gray-Code-Wandler statt dessen modifiziert ist. Derselbe
erhält nun alle Schreibzeiger und verwendet REF_SEL, um den
Korrekten zum Umwandeln hineinzumultiplexieren. Dann wird
der Name des Ausgangssignals zu GC_REF_WP 75 geändert und
derselbe wird zu dem Ratenanpassungskreiszähler 45 anstelle
dessen gesendet, was WP_0 war. Der Zähler 45 kennt keinen
Unterschied. Selbst die 2-Zustands-Verzögerung, die der
Zeitbereichskreuzung zugeordnet ist, wird automatisch ein
gestellt, da der einzige tatsächliche Takt, der verwendet
wird, um es zu erreichen, DEST_REF_CLK ist. Der wiederher
gestellte Takt für die Bezugsspur erscheint lediglich indi
rekt als zeitliche Abstimmung der Flanken des Schreibzei
gerzählwerts der Bezugsspur (GC_REF_WP), der zu dem Raten
anpassungskreiszähler gesendet wird.
Es gibt ein anderes erwähnenswertes Detail. Ungeachtet des
sen, ob das Ausführungsbeispiel das von Fig. 1 oder das von
Fig. 5 ist, sollte die anfängliche Freigabe des RESET-
Signals 16 mit einer Anfangsflanke von dem wiederherge
stellten Taktsignal der Taktsignale 12-15 synchronisiert
sein, das der Bezugsspur zugeordnet ist. Dies wird zum Vor
teil des Wortfehlausrichtungsdetektors 41/68 durchgeführt.