DE60036777T2 - Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen - Google Patents

Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen Download PDF

Info

Publication number
DE60036777T2
DE60036777T2 DE60036777T DE60036777T DE60036777T2 DE 60036777 T2 DE60036777 T2 DE 60036777T2 DE 60036777 T DE60036777 T DE 60036777T DE 60036777 T DE60036777 T DE 60036777T DE 60036777 T2 DE60036777 T2 DE 60036777T2
Authority
DE
Germany
Prior art keywords
input
output
clock
read
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60036777T
Other languages
English (en)
Other versions
DE60036777D1 (de
Inventor
Iain Robertson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Texas Instruments Inc filed Critical Texas Instruments Inc
Application granted granted Critical
Publication of DE60036777D1 publication Critical patent/DE60036777D1/de
Publication of DE60036777T2 publication Critical patent/DE60036777T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/10Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor having a sequence of storage locations each being individually accessible for both enqueue and dequeue operations, e.g. using random access memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)
  • Stabilization Of Oscillater, Synchronisation, Frequency Synthesizers (AREA)

Description

  • TECHNISCHES GEBIET DER ERFINDUNG
  • Das technische Gebiet dieser Erfindung sind die Funktionsblöcke digitaler Vorrichtungen, die im Allgemeinen auf dem Gebiet der Mikroprozessor-Konstruktion und genauer auf dem Gebiet digitaler Signalprozessorvorrichtungen verwendet werden.
  • HINTERGRUND DER ERFINDUNG
  • Ein Übertragungs-Controller mit Hub und Ports ist eine signifikante grundlegende Verbesserung der Datenübertragungstechniken in komplexen digitalen Systemen. Dieser Übertragungs-Controller erlaubt die einheitliche Implementierung der Port-Schnittstellen an der Peripherie derartiger Systeme. Einige dieser Ports können langsam sein, wobei sie einen relativ niedrigen Datendurchsatz besitzen. Andere können relativ schnell sein, wobei sie den Durchsatz und die Geschwindigkeit der Zentraleinheit besitzen. Diese zwei Abschnitte der Vorrichtung werden oft durch zwei separate Taktsignale angesteuert. Das erste Taktsignal besitzt eine höhere Frequenz und wird als der Kern- oder Hauptprozessortakt bezeichnet. Das zweite Taktsignal wird als der Peripherievorrichtungstakt bezeichnet.
  • Die Synchronisation in der Schnittstelle zu den externen Ports ist erforderlich, um eine Hochgeschwindigkeits-Kernvorrichtung an eine relativ langsame Peripherievorrichtung anzuschließen. Der typische bekannte Stand der Technik für das Synchronisieren von Anforderungen, Daten oder irgendeiner Mehrbitgröße besteht darin, die Informationen in ein Register zu schreiben und dann ein einzelnes Signal in der anderen Domäne zu synchronisieren, um anzugeben, dass die Daten gültig und stabil sind. Dann können die Daten in der anderen Taktdomäne gelesen werden. Es ist nicht erwünscht, alle Bits der Daten einzeln zu synchronisieren. Dies kann dazu führen, dass die Daten verfälscht werden. Falls die Daten an dem Punkt, an dem die Synchronisierer die Daten abtasten, in die Synchronisierer eingespeist werden, können einige der Daten in diesem Zyklus abgetastet werden, während einige Daten einen Zyklus später abgetastet werden können. Wenn irgendeine verallgemeinerte Taktfrequenzbeziehung erlaubt ist, ist es außerdem notwendig, in beiden Richtungen zu synchronisieren.
  • US-Patent Nr. 4.525.849 beschreibt eine Anordnung, die verwendet werden kann, um eindeutige logische Schaltzustände in einem Daten- und Steuerweg bei der Übertragung vom Taktsystem eines ausgebenden Datenverarbeitungssystems in ein unabhängiges asynchrones Taktsystem eines annehmenden Datenverarbeitungssystems zu vermeiden, worin ein kontinuierlicher Datenfluss am Ausgang eines Pufferspeichers zu garantieren ist. Ein Steuersignal, das das Vorhandensein eines zwischengespeicherten Datenwortes angibt, wird über eine Synchronisationsschaltung zum Weiterleiten von Datenwörtern aus dem Pufferspeicher in ein Weiterleitungs-Taktungsmuster des annehmenden Systems synchronisiert. Ein Weiterleitungs-Synchronisationssteuersignal wird durch die Synchronisationsschaltung erzeugt. Zum Steuern des Zuflusses in den Pufferspeicher wird ein Steuersignal, das vom Weiterleitungs-Taktungsmuster des annehmenden Systems abhängig ist, über eine weitere Synchronisationsschaltung in das Taktungsmuster des ausgebenden Systems synchronisiert.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegenden Lehren offenbaren eine Datensynchronvorrichtung für die Synchronisation zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne, die zur ersten Taktdomäne asynchron ist. Die hierin offenbarten Lehren sind im Allgemeinen auf jede digitale Vorrichtung anwendbar, die in separaten Abschnitten der Vorrichtung zwei Takte verwendet. Sie sind besonders nützlich für die Datenübertragungen zwischen einer relativ hohen Geschwindigkeit und einer relativ niedrigen Geschwindigkeit. Normalerweise ist der Hochgeschwindigkeitsabschnitt der Prozessorkern, während der Abschnitt mit der relativ niedrigen Geschwindigkeit die Eingabe-/Ausgabevorrichtungen (E/A-Vorrichtungen) sind.
  • Es wird eine Datenübertragungsvorrichtung geschaffen, wie sie in den Ansprüchen dargelegt ist.
  • KURZBESCHREIBUNG DER ZEICHNUNG
  • Diese und andere Aspekte dieser Erfindung sind in der Zeichnung veranschaulicht, worin:
  • 1 einen Blockschaltplan der grundlegenden Hauptmerkmale eines Übertragungs-Controllers mit einer Hub- und Ports-Architektur veranschaulicht, für den diese Erfindung nützlich ist;
  • 2 die Grundverbindungen der Hub-Schnittstellen-Einheit mit dem Synchronisierer und der Anwendungseinheit an einem der Ports veranschaulicht;
  • 3 die Verbindung der funktionalen Systembausteine einer Stufe des bidirektionalen Synchronisierers dieser Erfindung veranschaulicht;
  • 4 das logische Schaltbild auf Gatter-Ebene des Synchronisierer-Logikblocks nach 3 veranschaulicht;
  • 5 das logische Schaltbild auf Gatter-Ebene des asynchronen Flankendetektorblocks nach 3 veranschaulicht;
  • 6 den funktionalen Blockschaltplan des mehrstufigen Pipeline-Synchronisierers dieser Erfindung veranschaulicht, wobei sie die bidirektionalen Synchronisiererstufen, die FIFO-Datenwegregister, die Zeiger-/Decodierlogik und den Fluss der Takt- und Steuersignale in dem mehrstufigen Pipeline-Synchronisierer zeigt;
  • 7 den Ablaufplan des Prinzips des mehrstufigen Pipeline-Synchronisierers dieser Erfindung veranschaulicht, wobei die Betonung zuerst auf dem Schreibzyklus liegt, der für ein synchronisiertes Lesen nach einer abgeschlossenen Schreiboperation sorgt; und
  • 8 einen Ablaufplan des mehrstufigen Pipeline-Synchronisierers dieser Erfindung veranschaulicht, wobei die Betonung zuerst auf dem Lesezyklus liegt, der für ein synchronisiertes Schreiben nach einer abgeschlossenen Leseoperation sorgt.
  • AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Diese Erfindung präsentiert Techniken, die erlauben, dass die folgenden Signale zwischen einem Übertragungs-Controller-Hub und seinen externen Ports weitergeleitet werden: Anforderungen/Schreibdaten, die vom Hub zu den Ports gesendet werden; und Lesedaten, die von den Ports zum Hub gesendet werden. In jedem Fall ist eine Lösung, die eine völlig beliebige Frequenzbeziehung zwischen dem Hub-Takt und dem Port-Takt erlaubt, unerlässlich. Im normalen Betrieb gibt es normalerweise wenigstens eine irgendwie eingeschränkte Frequenzbeziehung zwischen diesen zwei Takten. Die Erfindung sorgt jedoch für die Mög lichkeit, dass einige Anwendungen wünschen, einen Port potentiell um irgendeinen Betrag zu verlangsamen. Außerdem wird eine Emulation in der Schaltung, während der der Hub bei einer sehr niedrigen Frequenz arbeiten kann, während er mit den Ports verbunden ist, die bei der normalen Geschwindigkeit arbeiten, vorweggenommen.
  • Unter Anwendung der Konstruktionsphilosophie, die für die Entwicklung des Übertragungs-Controllers mit der Hub- und Ports-Architektur üblich ist, ist es die Absicht dieser Erfindung, sicherzustellen, dass die Hub-Bandbreite niemals verschwendet wird. Infolgedessen ist es wichtig, zu erlauben, dass die Anforderungswarteschlange in einem Port mit der maximal möglichen Hub-Rate gefüllt wird, selbst wenn sie durch den Port nur viel langsamer geleert werden könnte. In dieser Weise wird ein anfänglicher Burst von Anforderungen, der am Anfang des Prozesses erzeugt wird, erwartet, anschließend gefolgt von der Anforderungserzeugung mit der Rate, mit der der Port normalerweise die Anforderungen verarbeitet. Dies stellt sicher, dass die Hub-Bandbreite für andere Anforderungen mit niedriger Priorität so früh wie möglich in einer Betriebsperiode verfügbar gemacht wird. Das wichtige Ergebnis ist, dass der Hub die Anforderungen mit der Rate von einer pro Zyklus erzeugt, wobei er Synchronisierer besitzt, die sie in die Ports übertragen, die den Bedarf an der Rundfunksendung dieser Lese-/Schreibbefehle mit einer annehmbaren Rate angemessen decken können.
  • 1 veranschaulicht einen Blockschaltplan der Hauptmerkmale des Übertragungs-Controllers mit Hub und Ports. Die Übertragungs-Controller mit Hub und Ports ist im Wesentlichen ein Datenübertragungs-Controller, der an seinem Font-End-Abschnitt einen Anforderungswarteschlangen-Manager 100 besitzt, der die Daten in der Form von Übertragungsanforderungspaketen empfängt, priorisiert und abfertigt. Der Anforderungswarteschlangen-Manager 100 ist in der Hub-Einheit 110 mit den Kanalregistern 120 verbunden, die die Datenübertragungs-Anforderungspakete empfangen, und verarbeitet sie, indem er sie zuerst priorisiert und sie einem der N Kanäle zuordnet, von denen jeder ein Prioritätsniveau darstellt. Diese Kanalregister sind an die Quellsteuerpipeline 130 und die Zielsteuerpipeline 140 angeschlossen, die effektiv die Adressenberechnungseinheiten für die Quell-(Lese-) und Zieloperationen (Schreiboperationen) sind.
  • Die Ausgaben aus diesen Pipelines werden zu den M Ports gesendet. In 1 sind sechs derartige Ports 150 bis 155 veranschaulicht. Diese werden entweder mit der Hauptprozessor-Taktfrequenz oder mit einer niedrigeren Taktfrequenz der externen Vorrichtungen getaktet. Die Lesedaten von einem Port, z. B. dem Port 150, die eine Zielschreibadresse des Ports 153 besitzen, werden über die Weiterleitungseinheit 160 zur Hub-Zielsteuerpipeline 140 zurückgeschickt.
  • Jeder Port kann in zwei Abschnitte unterteilt sein. Die anwendungsspezifische Konstruktion wird als die Anwendungseinheit oder AU bezeichnet. Dies kann eine Host-Port-Schnittstelle (HPI) oder eine Schnittstelle zum externen Speicher (EMIF) sein. Zwischen der Anwendungseinheit und dem Hub befindet sich das Modul, das als eine Hub-Schnittstellen-Einheit oder HIU bekannt ist.
  • Die Hub-Schnittstellen-Einheit dient mehreren Funktionen. Die Hub-Schnittstellen-Einheit richtet einen Betrag der Pufferung für die Lese- und Schreibdaten ein, um die Schreibansteuerungsverarbeitung zu unterstützen. Die Hub-Schnittstellen-Einheit priorisiert die Lese- und Schreibbefehle von der Quellsteuerpipeline 130 und der Zielsteuerpipeline 140 des Übertragungs-Controllers so, dass der Port eine einzige Schnittstelle sieht, wobei beide Zugriffstypen vereinigt sind. Eine letzte Funktion der Hub-Schnittstellen-Einheit besteht darin, die Taktdomäne der externen Port-Schnittstelle von der Kernprozessor-Taktdomäne zu entkoppeln.
  • 2 veranschaulicht einen Blockschaltplan auf hoher Ebene einer Hub-Schnittstellen-Einheit mit den Synchronisierern 200, die die Zeiger 625 und 635 und die FIFO-Registerstufen 601 bis 605 enthalten, und ihre Schnittstelle zu einer Anwendungseinheit 208. Die Kern-Funktionsblöcke der Hub-Schnittstellen-Einheit enthalten die Steuerlogik 207 der Hub-Schnittstellen-Einheit, die Lesewarteschlange 205 der Hub-Schnittstellen-Einheit, Schreibanforderungswarteschlange 206 der Hub-Schnittstellen-Einheit und die Leseantwortwarteschlange 203 der Hub-Schnittstellen-Einheit. Die Eingaben 649 der Quellsteuerpipeline und die Eingaben 659 der Zielsteuerpipeline werden von der Hub-Einheit 110 zur Lesewarteschlange 205 bzw. zur Schreibanforderungswarteschlange 206 der Hub-Schnittstellen-Einheit gesendet. Die Steuerlogik 207 der Hub-Schnittstellen-Einheit verarbeitet diese Wörter, die Befehle, Adressen und Schreibdaten enthalten. Die Hub-Schnittstellen-Einheit erzeugt die Befehlsignale, wie z. B. das Schreibanforderungssignal 321, die an die Synchronisierer 202 gesendet werden. Die Hub-Schnittstellen-Einheit erzeugt außerdem die Zustandsignale, wie z. B. ein Nicht-leer-Signal 332, die zusammen mit den Schreibdaten 660 zur Anwendungseinheit gesendet werden. Für die Leseoperationen leitet die Anwendungseinheit ihre Lesedaten 690 zur Hub-Schnittstellen-Einheit weiter.
  • Diese Kern-Funktionsblöcke der Hub-Schnittstellen-Einheit leiten die Schreibdaten 650, die von der Zielsteuerpipeline 140 kommen, durch die FIFO-Registerstufen 601 bis 605 der Hub-Schnittstellen-Einheit zu den Schreibdaten 660 und von dort zur Anwendungseinheit 208. Ähnlich werden die von der Anwendungseinheit 208 zurückkehrenden Lesedaten 680 durch die FIFO-Registerstufen 601 bis 605 der Hub-Schnittstellen-Einheit als die Lesedaten 690 zur Leseantwortwarteschlange 203 der Hub-Schnittstellen-Einheit geleitet. Sie werden dann als die Lesedaten zur Weiterleitungseinheit 679 geleitet. Es wird angegeben, dass zwei Instantiierungen der in 6 veranschaulichten Logik (die im Folgenden beschrieben ist) in den FIFO-Registerstufen 601 bis 605 nach 2 enthalten sind. Die Erste überträgt die Daten von der Hub-Schnittstellen-Einheit als die Schreibdaten 650 und die Schreibdaten 660 zur Anwendungseinheit. Die Zweite überträgt die Daten von der Anwendungseinheit als die Lesedaten 690 und die Lesedaten 680 zurück zur Hub-Schnittstellen-Einheit.
  • In der bevorzugten Ausführungsform dieser Erfindung arbeitet die Hub-Schnittstellen-Einheit in einer Taktdomäne A, dem Hauptprozessortakt. Die Anwendungseinheit arbeitet in einer Taktdomäne B, dem Anwendungseinheitstakt. Der Takt A besitzt normalerweise eine höhere Frequenz als der Takt B, dies ist aber nicht notwendigerweise der Fall. In jedem Fall erfordert der richtige Betrieb dieser zwei Funktionseinheiten in zwei separaten Taktdomänen die Synchronisierer/Zeiger-FIFO-Register 202. Diese Synchronisation ist der Gegenstand dieser Erfindung.
  • Hinsichtlich der Synchronisationsverzögerung wird das Folgende betrachtet. Es wird angegeben, dass ein Signal in der Taktdomäne A in der Taktdomäne B synchronisiert werden kann, indem es durch zwei Flipflops in der Domäne B geleitet wird. Dies wird später unter Bezugnahme auf 4 weiter erklärt. In Abhängigkeit von der Phasenbeziehung zwischen den zwei Domänen dauert es zwischen einem Bruchteil, der größer als ein B-Taktzyklus ist, und einem Bruch teil, der kleiner als zwei B-Taktzyklen ist, bis das Signal der Domäne A in der Domäne B erkannt wird. Außerdem muss das Signal der Domäne A die Ausgabe eines Flipflops der Domäne A sein. Wenn es statt dessen die Ausgabe der Kombinationslogik wäre, könnten die Übergangszustände des Signals, wie es ausgewertet worden ist, in die Domäne B abgetastet und als der gültige Zustand des Signals interpretiert werden. Das Signal der Domäne A muss lang genug gültig sein, um sicherzustellen, dass es durch eine Taktflanke der Domäne B eingefangen wird. Folglich sind typischerweise drei Flipflops und im schlimmsten Fall ein A-Taktzyklus plus zwei B-Taktzyklen erforderlich, um das Signal zwischen den Domänen weiterzuleiten. Es wird angenommen, dass diese erforderliche Zeit als T bezeichnet wird. Wenn das Intervall zwischen den Ereignissen in der Domäne A, die synchronisiert werden, ein wenig größer als T ist, dann könnte ein generischer FIFO mit einfachen Eingang-bereit- und Ausgang-bereit-Steuerungen verwendet werden.
  • Eine allgemeinere Lösung ohne Einschränkungen an T ist durch diese Erfindung durch die Verwendung eines zirkulären FIFO verwirklicht. Die elementaren Operationen der Synchronisiereraufgabe können zuerst wie folgt dargelegt werden. Die Domäne A gibt der Domäne B an, dass sie Daten besitzt, die bereit für die Übertragung sind. Die Domäne B antwortet der Domäne A, wenn sie die Daten empfangen hat, so dass die Domäne A zusätzliche Daten senden kann.
  • 3 zeigt diese Anordnung für eine Stufe eines derartigen bidirektionalen Synchronisierers, der dazu dient, der begleitenden FIFO-Stufe einen synchronisierten Takt und eine synchronisierte Steuerung bereitzustellen. Jede Stufe des bidirektionalen Synchronisierers wird durch eine FIFO-Stufe begleitet, wie später gezeigt wird. In 3 enthält der untere Abschnitt der Figur die Domäne A. Der Schreibtakt 320 der Domäne A arbeitet, um die Daten in den Eingang der begleitenden FIFO-Stufe zu schreiben. Der obere Abschnitt der 3 enthält die Domäne B. Der Lesetakt 330 der Domäne B arbeitet, um die Daten vom Ausgang der begleitenden FIFO-Stufe zu lesen.
  • Das Schreibfreigabesignal 624 wird aktiv, um ein Schreiben in die FIFO-Registerstufen 601 bis 605 des Synchronisierer-Datenwegs anzufordern. Falls das Schreibvollbitsignal 626 aktiv wird, wird diese Schreibanforderung abgelehnt. Der FIFO ist voll, was eine sofortige Schreiboperation verhindert.
  • Ähnlich wird das Lesefreigabesignal 634 aktiv, um ein Lesen aus den FIFO-Registerstufen 601 bis 605 des Synchronisierer-Datenwegs anzufordern. Falls das Lesevollbitsignal 636 aktiv wird, wird diese Leseanforderung angenommen. Das Lesevollbitsignal 636 gibt an, dass es zusätzliche gültige Lesedaten im FIFO gibt.
  • 4 veranschaulicht die Synchronisationslogikblöcke 302 und 312 nach 3 ausführlich. Im Synchronisationslogikblock 302 wird der Lesetakt 330 der Domäne B zu zwei Flipflops 401 und 402 geliefert. Es wird angenommen, dass sich im Ergebnis eines vorhergehenden Eintrags von Daten in diese FIFO-Stufe diese Flipflops 401 und 402 in einem hohen Zustand befinden. Dann werden die Flipflops 401 und 402 beim nächsten Lesetakt 330 der Domäne B synchron gelöscht. Es wird angegeben, dass 4 die Anwendung des (in 3 veranschaulichten) Synchronisationsblock-Löschsignals 352 über die invertierenden Eingänge der UND-Gatter auf seinen eigenen Löscheingang veranschaulicht.
  • In 3 wird, nachdem der asynchrone Flankendetektor 301 ein neues Schreibfreigabesignal erfasst hat, sein Ausgang hoch. Folglich wird der Eingang 351 in den Synchronisationslogikblock 302 abermals hoch. Dies führt dazu, dass die Flipflops 401 und 402 das Hoch nach weiteren zwei Lesetaktsignalen 330 der Domäne B einfangen. Das Ergebnis ist, dass der Synchronisationslogikblock 302, der auf ein in der Domäne A eingeleitetes Schreibfreigabesignal einwirkt, es mit den Leseoperationen der Domäne B synchronisiert.
  • 4 veranschaulicht außerdem den Synchronisationslogikblock 312 der Domäne A ausführlich. Im Synchronisationslogikblock 312 wird der Schreibtakt 320 an die zwei Flipflops 411 und 412 geliefert. Es wird angenommen, dass sich im Ergebnis eines vorhergehenden Lesens der Daten in dieser FIFO-Stufe die Flipflops 411 und 412 in einem hohen Zustand befinden. Dann werden die Flipflops 411 und 412 beim nächsten Taktsignal 320 der Domäne A synchron gelöscht.
  • In 3 wird, nachdem der asynchrone Flankendetektor 311 ein neues Lesefreigabesignal erfasst, sein Ausgang hoch. Folglich wird der Eingang des Synchronisationslogikblocks 312 abermals hoch. Dies führt dazu, dass die Flipflops 411 und 412 das Hoch nach zwei weiteren Schreibtaktsignalen 320 der Domäne A einfangen. Das Ergebnis ist, dass der Synchronisationslogikblock 312, der auf ein in der Domäne B eingeleitetes Schreibfreigabesignal einwirkt, es mit den Schreiboperationen in der Domäne A synchronisiert.
  • 5 veranschaulicht die Einzelheiten der Konstruktion der in 3 veranschaulichten asynchronen Flankendetektoren 301 und 311. In 5 wird im asynchronen Flankendetektor 301 der Domäne B der Lesetakt 330 der Domäne B an die zwei Flipflops 501 und 502 geliefert. Das Synchronisationsblock-Löschsignal 352 für diese Flipflops ist synchron und aktiv hoch. Folglich werden, wenn das Eingangssignal 371 hoch ist und mit dem Inverter 542 zwischen dem Synchronisationsblock-Löschsignal 352 und den D-Eingängen 544 und 545 der entsprechenden Flipflops 501 und 502, die Q-Ausgänge beider Flipflops 501 und 502 bei der Anstiegsflanke des Lesetakts 330 der Domäne B tief. Die aktiv tiefen Setzeingänge 546 und 548 der entsprechenden Flipflops 501 und 502 sind asynchron. Wenn diese Setzeingänge 546 und 548 tief werden, werden die entsprechenden Q-Ausgänge 550 und 351 der Flipflops 501 und 502 hoch.
  • Der asynchrone Flankendetektor 301 führt die folgende Folge aus. Das synchrone Blocklöschsignal 352 vom synchronen Logikblock 302 wird hoch und steuert die Eingänge 544 und 545 über den Inverter 542 tief. Nach einer positiven Flanke des Lesetaktsignals 330 der Domäne B werden die Q-Ausgänge beider Flipflops 501 und 502 tief gesteuert. Dann setzt das Eingangssignal 371, das während eines kurzen Zeitintervalls von vielleicht einigen Nanosekunden tief wird, das Flipflop 501 sofort asynchron hoch. Wenn das Eingangssignal 371 in den hohen Zustand zurückkehrt, wird das Flipflop 502 asynchron hoch gesetzt. Das Flipflop 502, das hoch wird, gibt an, dass das Eingangssignal 371 nun hoch ist und tief war. Der asynchrone Flankendetektor 301 hat auf diese Weise eine Anstiegsflanke erfasst.
  • Ähnlich wird im asynchronen Flankendetektor 311 der Domäne A der Schreibtakt 320 der Domäne an die zwei Flipflops 511 und 512 geliefert. Das Synchronisationsblock-Löschsignal 362 für diese Flipflops ist synchron und aktiv hoch. Folglich werden, wenn das Eingangssignal 381 hoch ist und mit dem Inverter 542 zwischen dem Synchronisationsblock-Löschsignal 362 und den D-Eingängen 544 und 545 der entsprechenden Flipflops 511 und 512, die Q-Ausgänge beider Flipflops 511 und 512 bei der Anstiegsflanke des Schreibtakts 320 der Domäne A tief. Die aktiv tiefen Setzeingänge 546 und 548 der entsprechen den Flipflops 511 und 512 sind asynchron. Wenn diese Setzeingänge 546 und 548 tief werden, werden die entsprechenden Q-Ausgänge 550 und 361 der Flipflops 511 und 512 hoch.
  • Der asynchrone Flankendetektor 311 führt die folgende Folge aus. Das synchrone Blocklöschsignal 362 vom synchronen Logikblock 312 wird hoch und steuert die Eingänge 544 und 545 über den Inverter 542 tief. Nach einer positiven Flanke des Schreibtaktsignals 320 der Domäne A werden die Q-Ausgänge beider Flipflops 511 und 512 tief gesteuert. Dann setzt das Eingangssignal 381, das während eines kurzen Zeitintervalls von vielleicht einigen Nanosekunden tief wird, das Flipflop 511 sofort asynchron hoch. Wenn das Eingangssignal 381 in den hohen Zustand zurückkehrt, wird das Flipflop 512 asynchron hoch gesetzt. Das Flipflop 512, das hoch wird, gibt an, dass das Eingangssignal 381 nun hoch ist und tief war. Der asynchrone Flankendetektor 311 hat auf diese Weise eine Anstiegsflanke erfasst.
  • 6 veranschaulicht die FIFO-Registerstufen 601 bis 605, die mehrstufigen bidirektionalen Synchronisierer 611 bis 615, den Schreibzeiger/Decodierer 625 und den Lesezeiger/Decodierer 635 der Synchronisierer/Zeiger-FIFO-Register 202 nach 2. Die FIFO-Registerstufen sind als 601, 602, 603, 604 und 605 bezeichnet. Die bidirektionale Synchronisiererblöcke 611, 612, 613, 614 und 615 enthalten die ganze Logik, die in den 3, 4 und 5 beschrieben ist. Das Leseanforderungssignal 331, das Nicht-leer-Signal 332, das Schreibanforderungssignal 321 und das Vollsignal 322 leiten die Steuerinformationen, die das Schreiben der Daten in eine einzelne FIFO-Stufe oder das Lesen der Daten aus dem FIFO in Abhängigkeit von dem Zustand dieser Signale und den Schreib- und Lesezeigern steuern, in beiden Richtungen weiter.
  • Die Schreibvorgänge gehen von der Stufe 601 bis zur Stufe 605 in aufsteigender Reihenfolge weiter, wobei sie dann bei 601 fortgesetzt werden. Folglich steuert der FIFO-Schreibzeiger/Decodierer 625 die Funktion des zirkulären FIFO. Ähnlich gehen die Lesevorgänge von der Stufe 601 bis zur Stufe 605 in aufsteigender Reihenfolge weiter, wobei sie dann bei der Stufe 601 fortgesetzt werden. Folglich steuert der FIFO-Lesezeiger/Decodierer 635 außerdem die Funktion des zirkulären FIFO.
  • Die Funktion des Synchronisierers stellt sicher, dass die Schreibvorgänge nur bei der Registerstufe auftreten können, die eine Eingabe eines aktiven Schreibfreigabesignals 624 in diese Stufe empfängt. Die aktive Stufe muss außerdem leer sein, entweder auf Grund keines vorhergehenden Eintrags oder weil der letzte Eintrag in diese Stufe gelesen worden ist, wie durch das entsprechende Schreibvollbitsignal 626 angegeben wird. Die Schreibdaten 650 werden parallel zu allen Registerstufen geliefert, wobei jedoch nur eine Registerstufe durch die Schreibfreigabesignale 624 für das Schreiben ausgewählt wird. Ähnlich stellt die Funktion des Synchronisierers sicher, dass die Lesevorgänge nur von einer Registerstufe auftreten, die eine Eingabe eines aktiven Lesefreigabesignals 634 in diese Stufe empfängt. Die aktive Registerstufe hat vorher einen Eintrag empfangen. Die Schreibdaten 660 werden durch den Multiplexer 685 entsprechend dem Multiplexerauswahlsignal 637, das dem Lesezeiger entspricht, für die Ausgabe ausgewählt.
  • Es wird angegeben, dass zwei Instantiierungen der in 6 veranschaulichten Logik in der FIFO-Registerstufe 601 bis 605 nach 2 enthalten sind. Wird eine Ansicht auf hoher Ebene des Prozesses gewählt, wie in 2 gezeigt ist, überträgt die Erste die Schreibdaten von der Hub-Schnittstellen-Einheit über die Schreibdaten 650 und die Schreibdaten 660 zur Anwendungseinheit. Die Zweite überträgt die Lesedaten von der Anwendungseinheit über die Lesedaten 690 und die Lesedaten 680 zurück zur Hub-Schnittstellen-Einheit.
  • 7 veranschaulicht das Prinzip der Funktion des Synchronisierers in der Form eines Ablaufplans. Eine Schreiboperation von einer Hub-Schnittstelle zu einer Anwendungseinheit ist wie folgt. Das Schreibanforderungssignal 321 wird bei einer aktiven Flanke des Schreibtaktsignals 320 der Domäne A (Block 701) aktiv (Block 702). Die Daten werden unter Verwendung das Schreibtakts der Domäne A und des Schreibfreigabesignals 624, das während eines Zyklus gültig ist, in einen FIFO-Registerzustand 601 bis 605 geschrieben (Block 703). Der Schreibzeiger 625 wird inkrementiert (Block 704). Dies setzt über das Schreibvollbitsignal 626 einen Setz-Rücksetz-Zwischenspeicher 313, was angibt, dass das Register voll ist, (Block 705). Die Anstiegsflanke des Schreibvollbitsignals 626 wird durch den asynchronen Flankendetektor 301 eingefangen (Block 706). Die Ausgabe des asynchronen Flankendetektors 301 wird zum Synchronisationslogikblock 302 geleitet (Block 707). Die Ausgabe des Synchronisationslogik blocks 302 setzt über das Lesevollbitsignal 636 den Setz-Rücksetz-Zwischenspeicher 303 in der Domäne B, was angibt, dass das Register voll ist, (Block 708). Die Ausgabe des Synchronisationslogikblocks 302 setzt den asynchronen Flankendetektor 301 und den Synchronisationslogikblock 302 zurück (Block 709). Dies stellt sicher, dass der Synchronisiererausgang nur während eines Zyklus hoch ist.
  • 8 veranschaulicht einen exakt äquivalenten Prozess in der entgegengesetzten Richtung. 8 veranschaulicht eine Leseoperation von der Anwendungseinheit zur Hub-Schnittstellen-Einheit. Das Leseanforderungssignal 331 wird bei einer aktiven Flanke des Lesetaktsignals 330 der Domäne B (Block 801) aktiv (Block 802). Die Daten werden unter Verwendung das Lesetakts 330 der Domäne B und des Lesefreigabesignals 634, das während eines Zyklus gültig ist, aus einem FIFO-Registerzustand 601 bis 605 gelesen (Block 803). Der Lesezeiger 635 wird inkrementiert (Block 804). Dies setzt über das Lesevollbitsignal 636 einen Setz-Rücksetz-Zwischenspeicher 303 zurück, was angibt, dass das Register voll ist, (Block 805). Die Abfallflanke des durch den Inverter 334 gelieferten Nicht-leer-Signals 332 wird durch den asynchronen Flankendetektor 311 eingefangen (Block 806). Die Ausgabe des asynchronen Flankendetektors 311 wird zum Synchronisationslogikblock 312 geleitet (Block 807). Die Ausgabe des Synchronisationslogikblocks 312 löscht über das Schreibvollbitsignal 626 den Setz-Rücksetz-Zwischenspeicher 313 in der Domäne A, was angibt, dass das Register nicht voll ist, (Block 808). Die Ausgabe des Synchronisationslogikblocks 312 setzt den asynchronen Flankendetektor 311 und den Synchronisationslogikblock 312 zurück (Block 809). Dies stellt sicher, dass der Synchronisiererausgang nur während eines Zyklus hoch ist.
  • Die gezeigten Setz-Rücksetz-Zwischenspeicher 303 und 313 könnten in einer weiteren Ausführungsform durch ausgelöste Flipflops ersetzt sein, wobei die Setz- und Löschbegriffe in der Logik, die den D-Eingang steuert, berücksichtigt sind.
  • Die Neuheit der Erfindung kommt aus dem mehrmaligen Kopieren der Inhalte nach 6 in jeder Stufe, die einen bidirektionale Synchronisierer und eine zugeordnete FIFO-Registerstufe besitzt. Dies schafft die Pipelineverarbeitung der Synchronisationsprozesse, was erlaubt, dass sich mehrere Signale in verschie denen Stufen der Synchronisation befinden. Folglich können in jedem Zyklus neue Daten synchronisiert werden, selbst wenn die Synchronisationsverzögerung viel größer als dieser ist. Der Schreibzeiger 625 und der Lesezeiger 635 werden verwendet, um zu bestimmen, welche Register-/Synchronisiererkombination in jedem gegebenen Zyklus zu verwenden ist. Diese sind als einfachere Inkrementierer implementiert, die zurück auf null springen, nachdem auf die Register-/Synchronisiererkombination mit der höchsten Nummer zugegriffen worden ist. Der Schreibzeiger 625 wird in der Domäne A jedesmal inkrementiert, wenn ein Eintrag geschrieben wird. Folglich bestimmt beim folgenden Zyklus der Wert des vollen Zwischenspeichers für den nächsten Eintrag, ob der nächsten Eintrag geschrieben werden kann. Ähnlich wird der Lesezeiger 635 in der Domäne B jedesmal inkrementiert, wenn ein Eintrag entfernt wird. Dies kann insgesamt als ein zirkulärer FIFO betrachtet werden.
  • Die Anzahl der benötigten Einträge im FIFO hängt von einer Anzahl von Faktoren ab. Wenn es ernsthaft keine Einschränkungen an die Taktbeziehungen gibt, dann ist die Bedingung, die die Anzahl der erforderlichen Einträge bestimmt, jene, die sich ergibt, wenn die Slave-Domäne (die Domäne B in diesem Fall) bei der gleichen Frequenz wie die Master-Domäne (die Domäne A in diesem Beispiel) arbeitet. Wenn die Domäne A in jedem Zyklus einen neuen Eintrag schreiben kann und die Domäne B in jedem Zyklus einen neuen Eintrag lesen kann, dann ist die Anzahl der Einträge durch die maximale Zeit bestimmt, die zwischen dem Setzen des Setz-Rücksetz-Zwischenspeichers 313 in der Domäne A und seinem anschließenden Löschen erforderlich ist. Wenn dies N Zyklen der Domäne A sind, dann muss es wenigstens N Einträge im FIFO geben, damit die Domäne A unbegrenzt in jedem Zyklus einen neuen Eintrag schreiben kann. Kleiner als N bedeutet, dass, wenn der Schreibzeiger zu einem Eintrag umläuft, dieser Eintrag nach dem vorhergehenden Schreiben in ihn noch nicht als leer markiert worden ist, wobei deshalb die Domäne A anhalten muss. Im Allgemeinen umfasst die Umlaufzeit eine Mischung der Zyklen der Domäne A und der Domäne B, wobei sie auf die nächste ganze Zahl von Zyklen der Domäne A aufgerundet werden muss.
  • In Abhängigkeit von den Anforderungen der Anwendung könnte die Anzahl der erforderlichen Einträge kleiner als die oben beschriebene Anzahl sein. Wenn z. B. die Domäne B immer langsamer als die Domäne A ist oder wenn die Do mäne B nicht in jedem Zyklus einen Eintrag lesen kann, dann können weniger Einträge verwendet werden, ohne die Systemleistung zu beeinflussen. Die Domäne A würde trotzdem anhalten müssen, selbst wenn die Synchronisierertiefe größer wäre.
  • Eine alternative Anwendung ist eine Ersetzung für einen abwärts dribbelnden Puffer (Dribble-Down-Puffer) in einer Netzvorrichtung. In diesem Fall kommen die Daten in jedem Zyklus während irgendeiner maximalen Zeitdauer, gefolgt von einer Pause an. Ein Beispiel ist ein Ethernet-Rahmen gefolgt von einer Zwischenrahmenlücke. In diesem Fall besitzen die Domänen A und B typischerweise die gleiche Nennfrequenz, aber mit einer zulässigen kleinen Toleranz, wie z. B. einer ±1-%-Abweichung. Wenn die Domäne B langsamer als die Domäne A ist, dann wird während der Dauer eines Rahmens der FIFO voller. In diesem Fall muss die Anzahl der Einträge ausreichend sein, um sicherzustellen, dass der FIFO bis zum Ende eines Rahmens mit maximaler Größe mit einer Toleranz für den schlimmsten Fall nicht vollständig gefüllt ist. Die Lücke zwischen den Rahmen wird dann verwendet, um das Gleichgewicht wiederherzustellen. Effektiv würde die Lücke in der Domäne B ein wenig kleiner als in der Domäne A sein.

Claims (3)

  1. Datenübertragungsvorrichtung zum Übertragen von Daten aus einer ersten Taktdomäne, die mit einem ersten Taktsignal auf einer ersten Taktleitung (320) synchron ist, an eine zweite Taktdomäne, die mit einem zweiten Taktsignal auf einer zweiten Taktleitung (330) synchron ist, wobei das erste Taktsignal (320) zu dem zweiten Taktsignal (330) asynchron ist, wobei die Datenübertragungsvorrichtung umfasst: mehrere Datenregisterstufen (601605), wovon jede parallel zu anderen Datenregisterstufen (601605) mit dem Dateneingang (650) der Vorrichtung verbunden ist, um in diese die Daten synchron mit dem ersten Taktsignal zu schreiben, und wovon jede einen Datenausgang besitzt, um Daten hiervon synchron mit dem zweiten Taktsignal abzurufen; eine Synchronisiererstufe (611615), die jeder Datenregisterstufe (601605) entspricht und einen mit der ersten Taktleitung (320) verbundenen ersten Takteingang, einen mit der zweiten Taktleitung (330) verbundenen zweiten Takteingang, einen mit einer entsprechenden Schreibfreigabeleitung (624) verbundenen ersten Eingang und einen Ausgang zum Liefern eines Signals auf einer entsprechenden Lesevollbitleitung (636), das einen Zustand hat, der durch ein Schreibfreigabesignal auf der Schreibfreigabeleitung (624) bedingt ist, und das mit dem zweiten Taktsignal auf der zweiten Taktleitung (330) synchron ist, enthält; einen Schreibzeiger (625) zum Halten einer Bezeichnung einer der mehreren Datenregisterstufen (601605) als eine Schreibstufe und zum Freigeben der Schreibstufe, um bei Empfang des Schreibfreigabesignals (624) Daten (650) zu schreiben, und zum anschließenden Inkrementieren der gespeicherten Bezeichnung der Schreibstufe, um eine nächste Datenregisterstufe in einer zirkulären Folge der mehreren Registerstufen (601-605) anzugeben, wobei der Schreibzeiger (625) mit der Schreibfreigabeleitung (624) jedes Synchronisierers verbunden ist; einen Lesezeiger (635) zum Halten einer Bezeichnung einer der mehreren Datenregisterstufen (601605) als eine Lesestufe und zum Freigeben der Lesestufe, um darin gespeicherte Daten synchron mit dem zweiten Taktsignal (330) abzurufen, und zum anschließenden Inkrementieren der gespeicherten Angabe der Lesestufe, um die nächste Datenregisterstufe in der zirkulären Folge der mehreren Datenregisterstufen (601605) anzugeben, wobei der Lesezeiger (635) mit der Lesefreigabeleitung (634) jedes Synchronisierers verbunden ist; und einem Multiplexer (685), der mit dem Lesezeiger (635) verbunden ist und mehrere Eingänge besitzt, wovon jeder mit dem Datenausgang einer entsprechenden der mehreren Datenregisterstufen (601605) verbunden ist, und einen Datenausgang besitzt, wobei der Multiplexer so beschaffen ist, dass er an dem Datenausgang Daten von einem der mehreren Eingänge, der der gespeicherten Bezeichnung des Lesezeigers (635) entspricht, auswählt, wobei jede der mehreren Synchronisiererstufen (611615) so beschaffen ist, dass sie ein Signal auf einer Schreibvollbitleitung (626) erzeugt, das angibt, ob Daten, die in der entsprechenden Datenregisterstufe (601605) gespeichert sind, gelesen worden sind, und ein Signal auf einer Lesevollbitleitung (636) erzeugt, das mit einem ersten Zustand angibt, ob keine Daten in der entsprechenden Datenregisterstufe gespeichert sind, oder ob Daten, die in der entsprechenden Datenregisterstufe gespeichert sind, gelesen worden sind; wobei der Schreibzeiger (625) so beschaffen ist, dass er in Reaktion auf ein Schreibanforderungssignal auf einem Schreibanforderungseingang (321) ein Schreibfreigabesignal auf der Schreibfreigabeleitung (624) erzeugt, die mit der Synchronisiererstufe (611615) verbunden ist, die der Schreibstufe entspricht, und ein Vollsignal auf einem Vollsignalausgang (322) erzeugt, das einen Zustand besitzt, der zum Anhalten einer Schreibvorrichtung geeignet ist, falls die Synchronisiererstufe (611615), die der Schreibstufe entspricht, ein Schreibvollbitsignal auf der entsprechenden Schreibvollbitleitung (626) erzeugt, das angibt, dass Daten, die in der entsprechenden Datenregisterstufe (601605) gespeichert sind, nicht gelesen worden sind; wobei der Lesezeiger (635) so beschaffen ist, dass er in Reaktion auf ein Leseanforderungssignal auf dem Leseanforderungseingang (331) ein Lesefreigabesignal auf der Lesefreigabeleitung (634) erzeugt, die mit der Synchronisiererstufe verbunden ist, die der Lesestufe entspricht, und ein Nicht-leer-Signal auf einer Nicht-leer-Leitung (332) erzeugt, falls die Synchronisiererstufe, die der Lesestufe entspricht, ein Lesevollbitsignal auf der entsprechenden Lesevollbitleitung (636) erzeugt, das angibt, dass Daten, die in der entsprechenden der Datenregisterstufen (601605) gespeichert sind, nicht gelesen worden sind; und jede der Datenregisterstufen (601605) so beschaffen ist, dass sie ein einzelnes Datenwort speichert; jede der Synchronisierstufen (611615) enthält: ein Schreib-Setz/Rücksetz-Flipflop (313) mit einem mit der Schreibfreigabeleitung (624) verbundenen Setzeingang, einem Rücksetzeingang und einem Schreibvollbitausgang (626) zum Liefern eines Schreibvollbitsignals, der bei Empfang eines ersten Zustands eines Schreibfreigabesignals auf der Schreibfreigabeleitung (624) gesetzt wird, ein Lese-Setz/Rücksetz-Flipflop (303) mit einem Setzeingang, einem mit der Lesefreigabeleitung (634) verbundenen Rücksetzeingang und einem Lesevollbitausgang (636) zum Liefern eines Lesevollbitsignals, der bei Empfang eines ersten Zustands der Lesefreigabeleitung (634) zurückgesetzt wird, einen Synchronisiererschaltungsinverter (334) mit einem Eingang, der mit dem Ausgang des Lese-Setz/Rücksetz-Flipflops verbunden ist, und einem Ausgang, einen ersten asynchronen Flankendetektor (311) mit einem Eingang, der mit dem Ausgang des Inverters verbunden ist, einem Takteingang, der mit der ersten Taktleitung (320) verbunden ist, einem Löscheingang und einem Ausgang zum Erzeugen eines Flankenerfassungssignals auf einem Ausgang (361) in einem ersten Zustand, der angibt, dass der Eingang einen vorgegebenen Logikzustand-Übergang ausgeführt hat, einen ersten synchronen Logikblock (312) mit einem Eingang, der mit dem Ausgang (361) des ersten asynchronen Flankendetektors (311) verbunden ist, einem Takteingang, der mit der ersten Taktleitung (320) verbunden ist, einem Löscheingang und einem Ausgang (362), der mit dem Löscheingang, dem Rücksetzeingang des Schreib-Setz/Rücksetz-Flipflops (313) und dem Löscheingang des ersten asynchronen Flankendetektors (311) verbunden ist, wobei der Ausgang bei Erfassung eines Eingangssignals in einem ersten Zustand von dem ersten asynchronen Flankendetektor (311) ein synchrones Blocklöschsignal in einem ersten Zustand synchron mit dem ersten Taktsignal erzeugt, einen zweiten asynchronen Flankendetektor (301) mit einem Eingang, der mit dem Ausgang des Schreib-Setz/Rücksetz-Flipflops (313) verbunden ist, einem Takteingang, der mit der zweiten Taktleitung (330) verbunden ist, einem Löscheingang und einem Ausgang (351) zum Erzeugen eines Flankenerfassungssignals mit einem ersten Zustand, der angibt, dass der Eingang einen vorgegebenen Logikzustand-Übergang ausgeführt hat, einen zweiten synchronen Logikblock (302) mit einem Eingang, der mit dem Ausgang (351) des zweiten asynchronen Flankendetektors (301) verbunden ist, einem Takteingang, der mit der zweiten Taktleitung (330) verbunden ist, einem Löscheingang und einem Ausgang (352), der mit dem Löscheingang, dem Setzeingang des Lese-Setz/Rücksetz-Flipflops (303) und mit dem Löscheingang des zweiten asynchronen Flankendetektors (301) verbunden ist, wobei der Ausgang (352) bei Erfassung eines Eingangssignals in einem ersten Zustand von dem zweiten asynchronen Flankendetektor (301) ein synchrones Blocklöschsignal in einem ersten Zustand synchron mit dem zweiten Taktsignal (330) erzeugt.
  2. Datenübertragungsvorrichtung nach Anspruch 1, bei der: sowohl der erste als auch der zweite asynchrone Flankendetektor (311, 301) umfasst: ein erstes D-Flipflop (501) mit einem inversen Setzeingang (546), der mit dem Eingang des asynchronen Flankendetektors verbunden ist, einem Takteingang, der mit der entsprechenden Taktleitung verbunden ist, einem D-Eingang und einem Ausgang, ein NAND-Gatter mit einem ersten Eingang, der mit dem Eingang des asynchronen Flankendetektors verbunden ist, einem zweiten Eingang, der mit dem Ausgang des ersten D-Flipflops (501) verbunden ist, einem dritten Eingang und einem Ausgang; ein zweites D-Flipflop (502) mit einem inversen Setzeingang (548), der mit dem Ausgang des NAND-Gatters verbunden ist, einem Takteingang, der mit der entsprechenden Taktleitung verbunden ist, einem D-Eingang und einem Ausgang, der mit dem Ausgang des asynchronen Flankendetektors verbunden ist, und einen asynchronen Flankendetektorinverter (542) mit einem Eingang, der mit dem Löscheingang des asynchronen Flankendetektors verbunden ist, und einem Ausgang, der mit dem D-Eingang des ersten D-Flipflops (501), mit dem dritten Eingang des NAND-Gatters und mit dem D-Eingang des zweiten D-Flipflops (502) verbunden ist.
  3. Datenübertragungsvorrichtung nach Anspruch 1, bei der: sowohl der erste als auch der zweite synchrone Logikblock umfasst: ein erstes UND-Gatter mit einem nicht invertierenden Eingang, der mit dem Eingang des synchronen Logikblocks verbunden ist, einem invertierenden Eingang und einem Ausgang; ein erstes D-Flipflop (401) mit einem Takteingang, der mit der entsprechenden Taktleitung verbunden ist, einem D-Eingang, der mit dem Ausgang des ersten UND-Gatters verbunden ist, und einem Ausgang, ein zweites UND-Gatter mit einem nicht invertierenden Eingang, der mit dem Ausgang des ersten D-Flipflops (401) verbunden ist, einem invertierenden Eingang und einen Ausgang; und ein zweites D-Flipflop (402) mit einem Takteingang, der mit der entsprechenden Taktleitung verbunden ist, einem D-Eingang, der mit dem Ausgang des zweiten UND-Gatters verbunden ist, und einem Ausgang, der mit dem invertierenden Eingang des ersten UND-Gatters, mit dem invertierenden Eingang des zweiten UND-Gatters und mit dem Ausgang des synchronen Logikblocks verbunden ist.
DE60036777T 2000-02-09 2000-02-09 Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen Expired - Lifetime DE60036777T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP00301293A EP1124179B1 (de) 2000-02-09 2000-02-09 Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen

Publications (2)

Publication Number Publication Date
DE60036777D1 DE60036777D1 (de) 2007-11-29
DE60036777T2 true DE60036777T2 (de) 2008-07-24

Family

ID=8172719

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60036777T Expired - Lifetime DE60036777T2 (de) 2000-02-09 2000-02-09 Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen

Country Status (5)

Country Link
US (1) US6493818B2 (de)
EP (1) EP1124179B1 (de)
JP (1) JP2001265715A (de)
AT (1) ATE376211T1 (de)
DE (1) DE60036777T2 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040057548A1 (en) * 1994-03-18 2004-03-25 Silicon Integrated System Corp. Quasi-synchronous multi-stage event synchronization apparatus
DE60036777T2 (de) * 2000-02-09 2008-07-24 Texas Instruments Inc., Dallas Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen
US7027447B2 (en) * 2000-02-29 2006-04-11 Texas Instruments Incorporated Communications interface between clock domains with minimal latency
EP1276028A1 (de) * 2001-07-09 2003-01-15 Telefonaktiebolaget L M Ericsson (Publ) Einrichtung und Verfahren zum Detektieren von Statusindikationen
US7352836B1 (en) 2001-08-22 2008-04-01 Nortel Networks Limited System and method of cross-clock domain rate matching
DE10152195A1 (de) * 2001-10-23 2003-04-30 Koninkl Philips Electronics Nv Schaltungsanordnung
US7161999B2 (en) * 2002-01-02 2007-01-09 Intel Corporation Synchronizing data or signal transfer across clocked logic domains
US6922112B2 (en) * 2002-06-25 2005-07-26 Intel Corporation Clock signal generation and distribution via ring oscillators
US7149916B1 (en) * 2003-03-17 2006-12-12 Network Equipment Technologies, Inc. Method for time-domain synchronization across a bit-sliced data path design
US20040193931A1 (en) * 2003-03-26 2004-09-30 Akkerman Ryan L. System and method for transferring data from a first clock domain to a second clock domain
US7035983B1 (en) * 2003-04-25 2006-04-25 Advanced Micro Devices, Inc. System and method for facilitating communication across an asynchronous clock boundary
EP1625503A1 (de) 2003-05-09 2006-02-15 Koninklijke Philips Electronics N.V. Verfahren zur datensignalübertragung zwischen unterschiedlichen taktbereichen
US7242737B2 (en) 2003-07-09 2007-07-10 International Business Machines Corporation System and method for data phase realignment
US7822105B2 (en) * 2003-09-02 2010-10-26 Sirf Technology, Inc. Cross-correlation removal of carrier wave jamming signals
EP1680686A1 (de) 2003-09-02 2006-07-19 Sirf Technology, Inc. Signalverarbeitungssystem für satellitenpositionierungssignale
WO2005088889A1 (en) * 2004-03-01 2005-09-22 Koninklijke Philips Electronics N.V. Circuit comprising mutually asynchronous circuit modules
EP1601131B1 (de) * 2004-05-24 2007-07-11 STMicroelectronics Limited Asynchrones Mehrfachtaktsystem
MY137746A (en) * 2004-12-06 2009-03-31 Intel Corp System, apparatus, and method to increase information transfer across clock domains
JP4730051B2 (ja) * 2005-10-13 2011-07-20 日本電気株式会社 半導体ディジタル回路、fifoバッファ回路及びそれらに用いるデータ受け渡し方法
WO2008001285A1 (en) * 2006-06-30 2008-01-03 Nxp B.V. Asynchronous data fifo that provides uninterrupted data flow
JP4758311B2 (ja) * 2006-09-14 2011-08-24 Okiセミコンダクタ株式会社 非同期データ保持回路
KR100888597B1 (ko) * 2006-09-20 2009-03-16 삼성전자주식회사 메모리 인터페이스 제어 장치 및 제어 방법
US8131967B2 (en) * 2007-01-11 2012-03-06 International Business Machines Corporation Asynchronous data interface
US7966435B2 (en) * 2007-01-11 2011-06-21 International Business Machines Corporation Integrated circuit design structure for an asychronous data interface
US20080170649A1 (en) * 2007-01-11 2008-07-17 Harper Marcellus C Programmable Synchronizer/Terminator Method and Apparatus
WO2008129364A1 (en) * 2007-04-23 2008-10-30 Nokia Corporation Transferring data between asynchronous clock domains
US7934113B2 (en) * 2007-05-21 2011-04-26 Texas Instruments Incorporated Self-clearing asynchronous interrupt edge detect latching register
US7945875B2 (en) * 2007-06-14 2011-05-17 Texas Instruments Incorporated Methodology for hierarchy separation at asynchronous clock domain boundaries for multi-voltage optimization using design compiler
US7958285B1 (en) * 2007-07-12 2011-06-07 Oracle America, Inc. System and method to facilitate deterministic testing of data transfers between independent clock domains on a chip
ITMI20072450A1 (it) 2007-12-31 2009-07-01 St Microelectronics Srl Sistema di comunicazione tra un primo ed un secondo dispositivo sincroni temporalmente non correlati.
US8151075B2 (en) * 2010-01-22 2012-04-03 Freescale Semiconductor, Inc. Multiple access type memory and method of operation
US9135168B2 (en) 2010-07-07 2015-09-15 Marvell World Trade Ltd. Apparatus and method for generating descriptors to reaccess a non-volatile semiconductor memory of a storage drive due to an error
US9141538B2 (en) 2010-07-07 2015-09-22 Marvell World Trade Ltd. Apparatus and method for generating descriptors to transfer data to and from non-volatile semiconductor memory of a storage drive
US8868852B2 (en) 2010-07-07 2014-10-21 Marvell World Trade Ltd. Interface management control systems and methods for non-volatile semiconductor memory
KR101849702B1 (ko) 2011-07-25 2018-04-17 삼성전자주식회사 외부 인트린직 인터페이스
WO2013100976A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Data transfer between asynchronous clock domains
GB2503472A (en) * 2012-06-27 2014-01-01 Nordic Semiconductor Asa Data transfer between clock domains following clock transition in destination domain
GB2505002B (en) * 2012-08-17 2014-09-24 Broadcom Corp Method and apparatus for transferring data from a first domain to a second domain
CN105610532B (zh) * 2014-11-11 2019-05-24 中兴通讯股份有限公司 信号的传输处理方法及装置、设备
US9680459B2 (en) 2014-12-11 2017-06-13 Intel Corporation Edge-aware synchronization of a data signal
CN111262655B (zh) * 2020-01-15 2023-05-12 江苏方天电力技术有限公司 基于异步时钟的fpga万兆以太网数据高速发送方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3213345C2 (de) * 1982-04-08 1984-11-22 Siemens Ag, 1000 Berlin Und 8000 Muenchen Datenübertragungseinrichtung zwischen zwei asynchron gesteuerten Datenverarbeitungssystemen
US4873703A (en) * 1985-09-27 1989-10-10 Hewlett-Packard Company Synchronizing system
US4805198A (en) * 1987-05-19 1989-02-14 Crystal Semiconductor Corporation Clock multiplier/jitter attenuator
US6128715A (en) * 1997-05-30 2000-10-03 3Com Corporation Asynchronous transmit packet buffer
DE60036777T2 (de) * 2000-02-09 2008-07-24 Texas Instruments Inc., Dallas Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen

Also Published As

Publication number Publication date
EP1124179A1 (de) 2001-08-16
ATE376211T1 (de) 2007-11-15
EP1124179B1 (de) 2007-10-17
US20010042219A1 (en) 2001-11-15
JP2001265715A (ja) 2001-09-28
US6493818B2 (en) 2002-12-10
DE60036777D1 (de) 2007-11-29

Similar Documents

Publication Publication Date Title
DE60036777T2 (de) Gerät zur Signalsynchronisierung zwischen zwei Taktbereichen
EP0091657B1 (de) Datenübertragungseinrichtung zwischen zwei asynchron gesteuerten Datenverarbeitungssystemen mit einem Pufferspeicher
DE102005051478B4 (de) Flashdatenspeichervorrichtung
DE2854485C2 (de) Datenverarbeitungsanlage
DE60037065T2 (de) Übertragungsteuerung mit Naben- und Torachitektur
DE2162806C2 (de) Speichersteuereinheit zur vereinfachter Pufferung von Anforderungen der Ein- Ausgabekanäle
EP0428771B1 (de) Zweiwege-Datenübergabe-Einrichtung
DE69819648T2 (de) Zweitorpuffer
EP1590727B1 (de) Asynchrone hüllschaltung für eine global asynchrone, lokal synchrone (gals) schaltung
EP0574598A1 (de) Datenpufferspeicher
DE2647241A1 (de) Anordnung fuer eine digitale datenuebertragung
DE2855673C2 (de)
EP0893755B1 (de) Pufferspeicheranordnung
DE60130039T2 (de) Fifo-schaltungen mit geringer latenz für gemischte asynchrone und synchrone systeme
DE69828980T2 (de) System und verfahren zur flusskontrolle für ein hochgeschwindigkeitsbus
DE19900251B4 (de) Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals
DE69924081T2 (de) Vorrichtung, System und Verfahren zur Verringerung von Buszugriffskonflikten während aufeinanderfolgenden Lese-Schreib-Operationen
DE60217408T2 (de) Informationsaustausch zwischen lokal synchronen schaltungen
DE2610428C3 (de) Anordnung zur Steuerung der Zwischenspeicherung von zwischen zwei Funktionseinheiten zu übertragenden Daten in einem Pufferspeicher
DE60203019T2 (de) Datensynchronisation auf einem peripheriebus
DE102006036823B4 (de) Datensynchronisier- und -pufferschaltung zur Synchronisation von seriell empfangenen Datensignalen
DE2749884A1 (de) Einrichtung zum automatischen neuformatieren von daten in einem dv-system
DE69910172T2 (de) Schaltkreis mit pseudo-mehrport-speicher
DE2718593C2 (de)
EP0576711B1 (de) Datenverarbeitungssystem mit mehreren Taktfrequenzen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition