Technisches Gebiet der Erfindung
-
Die vorliegende Erfindung betrifft im allgemeinen
Datenübertragung mit Geschwindigkeiten der Größenordnung
einiger Gigabits/s zwischen zwei Taktdomänen, von denen jede
beispielsweise aus einer CPU besteht, einem Teil eines ATM-
Vermittlungsknotens oder anderer Einrichtungen, die Daten
senden und empfangen. ATM erlaubt die Übertragung großer
Datenmengen über beliebige Media unter Verwendung von
Datenpaketen mit einer vorgeschrieben Länge und einem
geringen Zusatz (Overhead).
-
Insbesondere betrifft die Erfindung ein
Datenübertragungssystem, in dem Datenströme mit hoher
Geschwindigkeit zwischen einer sendenden Taktdomäne und einer
empfangenden Taktdomäne übertragen werden, die mit zueinander
unterschiedlichen Taktgeschwindigkeiten arbeiten.
Beschreibung des Standes der Technik
-
In zwei Datenübertragungssystemen, die mit näherungsweise
derselben Taktfrequenz arbeiten, die von zwei separaten
Oszillatoren generiert werden, einem in jedem System, und die
miteinander zu verbinden sind und Daten zueinander
übertragen, mag eine gewisse Abweichung zwischen den
Frequenzen auftreten. Deswegen muss ein Puffer eingefügt
werden zwischen den beiden Systemen, der Daten schneller
abgeben kann, als er sie empfängt oder vice versa abhängig
davon, welches System die größere Taktfrequenz hat.
-
In dem US-Patent 5,305,253 wird ein Speicher mit separaten
Lese- und Schreibbussen beschrieben, zwei Adressringzählern,
einen für Schreib- und einen für Leseoperationen und einem
Alarm, der erfasst, wenn der Puffer leer oder voll ist. Da es
sehr schwierig ist, Speicher herzustellen mit einer
Reaktionszeit kürzer als 7 ns ohne Umsortieren für die
Verwendung von GA, ist diese Lösung nicht nutzbar bei
Frequenzen der Größenordnung von Gigabits/s.
-
In dem US-Patent 4,819,201 ist eine asynchrone FIFO-Schaltung
gezeigt, die aufeinanderfolgende Datenspeicherregister
einschließt, die ankommende Daten weitergeben, wenn das
folgende Register leer ist. Wenn die FIFO-Schaltung leer ist,
werden Daten entsprechend durchgelassen vom Anfang des
Registerstapels zu seinem Ende. Dies kann das Risiko der
Verschlechterung von Daten mit sich führen und ist darüber
hinaus eine langsame Lösung.
-
Aus anderen Veröffentlichungen, die denselben Gegenstand
betreffen, mögen die folgenden erwähnt werden.
-
US-Patent 5,319,597 "FIFO memory and line buffer", US-Patent
5,084,837 "FIFO buffer with folded data transmission path
permitting selective bypass of storage", US 4,803,654
"Circular first-in, first-out buffer system for generating
input and output addresses for read/write memory
independently".
Zusammenfassung
-
Ein Anliegen der vorliegenden Erfindung ist das Bereitstellen
eines schnellen, kleinen und einfachen Datenpuffers zwischen
den beiden Taktdomänen in dem Datenübertragungssystem, das
oben durch seine Einführung festgelegt worden ist.
-
Dies wird erfindungsgemäß erreicht durch ein
Datenübertragungssystem, wie es im Anspruch 1 definiert ist,
das einen Datenpuffer umfasst, der eine Anzahl von
Datenspeicherelementen einschließt, eine Baumstruktur von
Multiplexerelementen, einen Schreibadressgenerator und einen
Leseadressgenerator. Die Datenspeicherelemente haben
Dateneingänge, die parallel zu einem Eingang für einen
Datenstrom von der sendenden Taktdomäne verbunden sind. Die
Baumstruktur von Multiplexerelementen ist angeordnet, um
Daten von den Datenspeicherelementen zu empfangen und an
einem Ausgang einen Datenstrom auszugeben zu der empfangenden
Taktdomäne. Der Schreibadressgenerator generiert gesteuert
von einem Schreibtaktsignal von dem Takt der sendenden
Taktdomäne Leseadressen zum Eingeben von Daten von der
sendenden Taktdomäne in die Datenspeicherelemente, eine nach
der anderen. Der Leseadressgenerator generiert gesteuert von
einem Lesetaktsignal von dem Taktgenerator der empfangenden
Taktdomäne Leseadressen zum Auslesen von Daten von den
Datenspeicherelementen in derselben Reihenfolge, wie sie
eingegeben worden sind.
-
Die Baumstruktur kann eine erste Ebene von
Multiplexerelementen haben, die verbunden sind, um Daten
parallel von jedem einer Anzahl von Datenspeicherelementen zu
empfangen. Eine Anzahl von folgenden Ebenen von
Speicherelementen ist verbunden, um Daten von einer Anzahl
von Multiplexerelementen der vorangegangenen Ebene zu
empfangen. Eine letzte Ebene schließt ein Multiplexerelement
ein, an dessen Ausgang ein Datenstrom ausgegeben wird zu der
empfangenden Taktdomäne.
-
Insbesondere können die Multiplexerelemente der ersten Ebene
jeweils verbunden sein zum Empfangen von Daten von mindestens
zwei der Datenspeicherelemente und jedes der
Multiplexerelemente der folgenden Ebenen kann verbunden sein,
um Daten von mindestens zwei Multiplexerelementen der
vorangegangenen Ebene zu empfangen.
Kurzbeschreibung der Zeichnungen
-
Ausgestaltungen der Erfindung werden nun näher beschrieben
unter Bezugnahme auf die beigeschlossenen Zeichnungen, in
denen zeigt:
-
Fig. 1 ein Prinzipschaubild eines
Datenübertragungssystems;
-
Fig. 2 eine erste Ausgestaltung des
Datenübertragungssystems nach der Erfindung;
-
Fig. 3 eine detailliertere Ausgestaltung des
Datenübertragungssystems nach Fig. 2;
-
Fig. 4 einen Adressgenerator, der in der Ausgestaltung
nach Fig. 3 enthalten ist und
-
Fig. 5 Signale, die in der Schaltung nach den Fig. 3 und 4
auftreten.
Detaillierte Beschreibung der Ausgestaltungen
-
In Fig. 1 kennzeichnen 102 und 104 jeweils eine Taktdomäne.
Die Taktdomänen 102 und 104 können beispielsweise jeweils
eine CPU sein, ein Teil eines ATM-Vermittlungsknotens oder
andere Anordnungen, die Daten senden bzw. empfangen. Die
Taktdomäne 102 hat einen internen Taktoszillator, der mit
einer ersten Taktgeschwindigkeit arbeitet und die Taktdomäne
104 hat einen internen Taktoszillator, der mit einer zweiten
Taktgeschwindigkeit arbeitet, die von der ersten
Taktgeschwindigkeit abweicht. Daten sollen von der Taktdomäne
102 zu der Taktdomäne 104 übertragen werden. Wegen der
unterschiedlichen Taktgeschwindigkeiten der beiden
Taktdomänen muss ein Puffer 106 in der Übertragungsstufe
vorhanden sein, der serielle Daten d1, die die erste
Taktdomäne 102 mit der ersten Taktgeschwindigkeit verlassen,
veranlasst, in die zweite Taktdomäne 104 in der Form
serieller Daten d2 mit der zweiten Taktgeschwindigkeit
einzutreten. Die Schaltung 106 hat einen Steuereingang 110
für ein Taktsignal c1 von der sendenden Taktdomäne 102 und
einen Steuereingang 112 für ein Taktsignal c2 von der
empfangenden Taktdomäne 104. Eine entsprechende Anordnung
kann in umgekehrter Richtung vorgesehen sein, d. h. von der
Taktdomäne 104 zu der Taktdomäne 102.
-
Die Schaltung in Fig. 2 entspricht dem Puffer 106 in Fig. 1.
Sie enthält eine Anzahl von Datenspeicherelementen
202&sub1;..202n, die parallel über je einen Dateneingang
204&sub1;...204n zu dem Dateneingang d1 verbunden sind, der einen
seriellen Datenstrom von der sendenden Taktdomäne 102
empfängt. Datenspeicherelemente 202&sub1;...202n haben darüber
hinaus jeweils einen Steuereingang 208&sub1;... 208n. Die
Steuereingänge 208&sub1;...208n sind mit einem
Schreibadressgenerator 210 verbunden, der, gesteuert von dem
Taktsignal, das an dem Steuereingang 212 von dem Takt der
sendenden Taktdomäne 102 ankommt, die Datenspeicherelemente
202&sub1;...202n eine nach der anderen adressiert, um darin an
dem Dateneingang d1 ankommende Daten einzugeben.
-
Die Datenspeicherelemente 202&sub1;...202n haben jeweils einen
Datenausgang 214&sub1;...214n und sind paarweise verbunden mit
einem jeweiligen Datenausgang 214&sub1;...214n an einen
Multiplexer in einer ersten Ebene von Multiplexern
216&sub1;...216n/2. Die Multiplexer 216&sub1;...216n/2 bilden die
oberste Ebene in einer Baumstruktur von Multiplexern, die
durch einen Pfeil 218 gekennzeichnet ist und die endet bei
einem Ausgangsmultiplexer 220, von dessen Datenausgang 222
der serielle Datenstrom d2 bereitgestellt wird für die
Empfängertaktdomäne 104.
-
Ein Leseadressgenerator 224 ist angeordnet, um gesteuert
durch das Taktsignal c2, das an einem Steuereingang 226 von
dem Taktgenerator der empfangenden Taktdomäne 104 erscheint,
die Multiplexer in der Baumstruktur 218 in derselben
Reihenfolge zu lesen, wie Daten in die Datenspeicherelemente
202&sub1;...202n eingegeben worden sind, zum Auslesen der Daten
aus dem Puffer 106.
-
Die Datenspeicherelemente können aus Daten-Flip-Flops
bestehen, aus Auffangregistern (Latch) oder anderen Elementen
mit Speicherfunktionalität. Wie der Fachmann sicher weiß,
gibt ein Daten-Flip-Flop beispielsweise bei positiven oder
negativen Flanken eines Steuersignals Daten ein und speichert
sie. Wie auch bekannt ist, ist ein "Latch" transparent auf
einer ersten logischen Ebene am Eingang, d. h., Daten am
Eingang sind vom Ausgang her erkennbar nach einer gewissen
Zeitverzögerung und dieser Dateninhalt wird gespeichert in
einer zweiten Ebene, d. h. er wird unempfindlich bezüglich
Änderungen am Eingang.
-
Soweit es die oben erwähnten Multiplexer betrifft, können
hier auch Schaltungen in Frage kommen von einem dem Fachmann
wohlbekannten Typ. Als Beispiel können Schaltungen vom Flip-
Flop-Typ erwähnt werden, bei denen eine Dateneinheit an einem
Eingang eingegeben wird oder an einem anderen zu einer
steigenden bzw. fallenden Flanke eines Steuersignals, oder
Schaltungen vom Kanalwählertyp. Schaltungen des letzten Typs
können beispielsweise zwei Eingänge bereitstellen und aus
zwei NAND-Gattern hergestellt werden, die derart verbunden
werden, dass Daten an einem Eingang oder dem anderen
durchgereicht werden im Falle beispielsweise einer 1 bzw. 0
eines Steuersignals.
-
Eine detailliertere Ausgestaltung einer in Fig. 2 gezeigten
allgemeinen Ausgestaltung der Erfindung ist in Fig. 3
gezeigt.
-
Die Schaltung in Fig. 3 enthält vier Datenspeicherelemente
302, 304, 306 und 308, die den Datenspeicherelementen
202&sub1;...202n entsprechen, Die Datenspeicherelemente 302, 304,
306 und 308 sind hier angenommen als aus flankengetriggerten
Daten-Flip-Flops bestehend.
-
Die Daten-Flip-Flops 302, 304, 306 und 308 haben jeweils
einen Dateneingang und einen Steuereingang, die auf dieselbe
Weise wie in Fig. 2 verbunden sind. Demnach sind die
Dateneingänge in derselben Weise wie in Fig. 2 parallel
verbunden zu dem Dateneingang d1, der verbunden ist, um den
seriellen Datenstrom d1 von der sendenden Taktdomäne zu
empfangen und die Steuereingänge sind in einer Weise, die
nachstehend näher zu beschreiben ist, verbunden mit einem
Leseadressgenerator. Die Steuereingänge der Daten-Flip-Flops
304 und 308 sind invertiert.
-
Die Baumstruktur in Fig. 3, die der Baumstruktur 218 in Fig.
2 entspricht, enthält in diesem Fall nur zwei Ebenen von
Multiplexern, von denen in diesem Falle angenommen wird, dass
sie aus Schaltungen vom Kanalwählertyp der oben erwähnten Art
bestehen. Die erste Ebene schließt Multiplexer 310 und 312
ein, die mit ihren jeweiligen zwei Eingängen verbunden sind,
um Daten von den Flip-Flops 302, 304, 306 bzw. 308 zu
empfangen. Die jeweiligen Datenausgänge der Multiplexer 310
und 312 sind an je einen der beiden Eingänge eines
Ausgangsmultiplexers 314 in der Ausgangsebene verbunden. An
dem Datenausgang des Multiplexers 314 wird der resultierende
serielle Datenstrom d2 zu der empfangenden Taktdomäne 104
ausgegeben.
-
In Fig. 3 ist der Leseadressgenerator mit 316 gekennzeichnet
und der Schreibadressgenerator mit 318. Ein Beispiel einer
Realisierung des Leseadressgenerators ist detaillierter in
Fig. 4 gezeigt.
-
Der Leseadressgenerator gemäß Fig. 4 schließt eine
Vierphasentaktaufteilungsschaltung ein mit zwei Flip-Flops
402 bzw. 404. Die Flip-Flops 402 und 404 empfangen jeweils an
einem jeweiligen Steuereingang 406 bzw. 408 das Taktsignal c1
über einen Eingang c1. Die Flip-Flops 402 und 404 haben
außerdem jeweils zwei Taktausgänge co0 und co2 bzw. co1 und
co3. Der Taktausgang co3 des Schalters 404 ist verbunden mit
einem zusätzlichen Steuereingang 410 des Schalters 402 und
der Taktausgang co0 des Schalters 402 ist verbunden mit einem
zusätzlichen Steuereingang 412 des Schalters 404.
-
Die Betriebsweise einer Schaltung der in Fig. 4 gezeigten Art
ist Fachleuten wohl bekannt und bedarf daher hier keiner
näheren Erläuterung. Sie wird jedoch teilweise und indirekt
in der folgenden Beschreibung der Signalgenerierung der
Schaltung in Fig. 3 erscheinen.
-
Die Taktausgänge co0, co1, co2 und co3 sind mit jedem der
Steuereingänge der Daten-Flip-Flops 302, 304, 306 bzw. 308
verbunden, die mit 320, 322, 324 bzw. 326 gekennzeichnet
sind.
-
Der Leseadressgenerator 318 kann in derselben Weise
implementiert werden wie der oben beschriebene
Schreibadressgenerator 316 und dieselbe Beschreibung braucht
hier daher nicht wiederholt zu werden. Er empfängt an seinem
Steuereingang das Taktsignal c2 und seine Taktausgänge co1,
co2 und co3 sind verbunden mit je einem Steuereingang 328,
330 bzw. 332 der Multiplexer 310, 314 bzw. 312.
-
In Fig. 5 sind die in den Fig. 3 und 4 auftretenden Signale
gezeigt, wobei dieselben Bezeichnungen dieser Signale in den
Fig. 3 und 4 benutzt worden sind. Die an den Steuereingängen
320, 322, 324 bzw. 326 empfangenen Taktsignale der Daten-
Flip-Flops 302, 304, 306 bzw. 308 sind mit c10, c12 bzw.
c13 gekennzeichnet. Die Datensignale der Daten-Flip-Flops 302
und 304, die an den beiden Dateneingängen des Multiplexers
310 empfangen werden, sind mit ds0 bzw. ds1 gekennzeichnet
und die Datensignale, die von den Daten-Flip-Flops 306 und
308 an den beiden Dateneingängen des Multiplexers 310
empfangen werden, sind mit ds2 bzw. ds3 gekennzeichnet. Die
Ausgangsdatensignale der Multiplexer 310 und 312 an den
beiden Dateneingängen des Ausgangsmultiplexers 314 sind mit
m0 bzw. ml gekennzeichnet. Die Taktsignale von den
Taktausgängen co1, co2 und co3 des Leseadressgenerators sind
mit c21, c22 bzw. c23 gekennzeichnet.
-
In der ersten Zeile zeigt Fig. 5 das Taktsignal c1 der
sendenden Taktdomäne 102 an dem Steuereingang c1 des
Schreibadressgenerators 316. Danach folgt in der zweiten
Zeile das vier Bits einschließende Datensignal 502 von der
sendenden Taktdomäne 102 an dem Dateneingang der Daten-Flip-
Flops 302, 304, 306 bzw. 308.
-
Wenn das System in Fig. 3 von 0 startet, wird das erste
Ausgangstaktsignal mit einer steigenden Flanke c10 sein,
woraufhin c11, c12 bzw. c13 in der erwähnten Reihenfolge
folgen. Jede steigende Flanke von c10-c13 wird erscheinen an
jeder steigenden Flanke des Taktsignals c1 der sendenden
Taktdomäne. Das angegebene erscheint in Fig. 5 von den
Pfeilen 504, 506, 508 und 510, die von den steigenden Flanken
jedes einer Folge von vier aufeinanderfolgenden Impulsen des
Taktsignals c1 führen bis zu den steigenden Flanken jedes von
aufeinanderfolgenden Impulsen der Taktsignale c10, c11, ci2
bzw. c13. Es ist außerdem durch jeweilige zusätzliche Pfeile
von den fallenden Flanken der erwähnten Folge von vier
Impulsen des Taktsignals c1 angezeigt, dass diese fallenden
Flanken ebenfalls dazu dienen, die jeweiligen vorangegangenen
Impulse c12, c13, c10 bzw. c11 zu beenden, vergleiche
beispielsweise Pfeil 511 der steigenden Flanke des vierten c1
Impulses zu der fallenden Flanke des ersten c11-Impulses. Mit
anderen Worten, jede Änderung der Signale c10-c13 tritt, an
der steigenden Flanke eines c1-Impulses auf. Dies ist eine
Folge der Rückkoppelschleife, die zu den Steuereingängen 408
und 410 in Fig. 4 führt.
-
Aus Fig. 5 ist auch erkennbar, dass die Frequenz der Signale
c10-c13 ein Viertel der Frequenz des Taktsignals c1 bildet.
-
Wie durch Pfeile 512, 514, 516 und 518 angezeigt, erscheinen
aufeinanderfolgende Impulse der Datensignale ds0, ds1, ds2
bzw. ds3 an der steigenden Flanke aufeinanderfolgender
Impulse der Taktsignale c10, c11, c12 bzw. c13.
-
Das Datensignal m0 setzt sich zusammen aus den Datensignalen
ds1 und ds0 und das Datensignal ml setzt sich zusammen aus
den Datensignalen ds3 und ds2. Pfeile 520, 522 und 524 zeigen
an, dass ds1 und ds0 gewählt werden, wenn das Taktsignal c21
niedrig bzw. hoch ist. In ähnlicher Weise zeigen Pfeile 526,
528 und 530 an, dass ds2 und ds3 gewählt werden, wenn das
Taktsignal c23 hoch bzw. niedrig ist.
-
Aus Fig. 5 ist letztendlich auch ersichtlich, wie das
Datensignal d2 zusammengesetzt wird aus den Datensignalen m0
und ml, was erreicht wird durch den Multiplexer 314, der von
dem Taktsignal c22 gesteuert wird.