DE102015120321A1 - Pausible bisynchronous FIFO - Google Patents

Pausible bisynchronous FIFO Download PDF

Info

Publication number
DE102015120321A1
DE102015120321A1 DE102015120321.9A DE102015120321A DE102015120321A1 DE 102015120321 A1 DE102015120321 A1 DE 102015120321A1 DE 102015120321 A DE102015120321 A DE 102015120321A DE 102015120321 A1 DE102015120321 A1 DE 102015120321A1
Authority
DE
Germany
Prior art keywords
clock
signal
domain
increment
clock domain
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.)
Pending
Application number
DE102015120321.9A
Other languages
German (de)
Inventor
Benjamin Andrew Keller
Matthew Rudolph Fojtik
Brucek Kurdo Khailany
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.)
Nvidia Corp
Original Assignee
Nvidia Corp
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
Priority claimed from US14/948,175 external-priority patent/US9672008B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102015120321A1 publication Critical patent/DE102015120321A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators

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)

Abstract

Es werden ein System, ein Verfahren und ein Computer-Programm-Produkt für einen pausierbaren FIFO bereitgestellt. Die Daten werden synchron mit einem ersten Takt-Signal einer ersten Takt-Domäne in einen Eintrag eines Dual-Port-Speicher-Arrays geschrieben, und ein Inkrement-Signal wird in der ersten Takt-Domäne erzeugt. Das Inkrement-Signal ist bestimmt, in der Nähe einer Flanke eines zweiten Takt-Signals zu wechseln, wobei das zweite Takt-Signal ein pausierbares Takt-Signal ist. Eine nächste Flanke des zweiten Takt-Signals der zweiten Takt-Domäne wird verzögert, und das Inkrement-Signal wird an die zweite Takt-Domäne übertragen.A system, method, and computer program product for a pausible FIFO are provided. The data is written into an entry of a dual-port memory array synchronously with a first clock signal of a first clock domain, and an increment signal is generated in the first clock domain. The increment signal is destined to switch in the vicinity of an edge of a second clock signal, the second clock signal being a pausible clock signal. A next edge of the second clock signal of the second clock domain is delayed, and the increment signal is transmitted to the second clock domain.

Description

Diese Erfindung wurde mit der Unterstützung der Regierung gemäß der Vereinbarung Nr. HR0011-13-3-0001, erteilt durch DARPA, und gemäß dem Untervertrag B599861, erteilt durch DOE, gemacht. Die Regierung hat bestimmte Rechte auf diese Erfindung.This invention was made with government support under Agreement No. HR0011-13-3-0001 issued by DARPA and Subcontract B599861 issued by DOE. The government has certain rights to this invention.

Prioritätsanspruchpriority claim

Diese Anmeldung beruft sich auf die vorläufige U.S.-Anmeldung Nr. 62/083,845 mit dem Titel „Pausierbarer bisynchroner FIFO”, eingereicht am 24. November 2014, deren gesamter Inhalt hierin durch Bezugnahme aufgenommen ist.This application refers to U.S. Provisional Application No. 62 / 083,845 entitled "Pausible Bis-Synchronous FIFO", filed Nov. 24, 2014, the entire contents of which are incorporated herein by reference.

Gebiet der ErfindungField of the invention

Die vorliegende Erfindung bezieht sich auf das Synchronisieren und insbesondere auf das Synchronisieren unter Verwendung eines pausierbaren Takts.The present invention relates to synchronization, and more particularly to synchronization using a pauseable clock.

Moderne Designs von Ein-Chip-Systemen („System-on-a-Chip” (SOC)), die in tief skalierten Prozessknoten gebaut sind, präsentieren außergewöhnliche Design-Herausforderungen. Langsame Leitungen und Prozess-, Spannungs- und Temperatur-(„process, voltage and temprature” (PVT))-Schwankungen machen die Synchronabstraktion über große Chipflächen, die immense Anstrengungen erfordern, um einen Timing-Abschluss zu erreichen, unhaltbar. Das global asynchrone, lokal synchrone (GALS) Design-Verfahren ist ein Mittel zum Abschwächen des Problems des globalen Timing-Abschlusses. GALS-Design-Flüsse grenzen „synchrone Inseln” der Logik ab, die basierend auf lokalen Takten funktionieren und miteinander asynchron kommunizieren.Modern designs of system-on-a-chip (SOC) systems built in deeply scaled process nodes present extraordinary design challenges. Slow lines and process, voltage and temperature (PVT) fluctuations make synchronous abstraction over large chip areas, which require immense effort to achieve timing completion, unsustainable. The globally asynchronous, locally synchronous (GALS) design method is a means of mitigating the problem of global timing completion. GALS design flows delineate "synchronous islands" of logic that operate based on local clocks and communicate with each other asynchronously.

Einzelne Takt-Domänen in großen kommerziellen Designs überspannen viele Quadratmillimeter, und in GALS-Systemen bestehen so viele der Design-Herausforderungen, die durch einem vollständig synchronen Entwurf aufgeworfen werden. Die umfassenden Vorteile des GALS-Designs können nur dann verwirklicht werden, wenn große SoCs in eine Myriade von kleinen synchronen Blöcken aufgeteilt werden, nicht eine Handvoll von großen Domänen, eine Vorgehensweise, die als feinkörniges GALS bezeichnet wird. Die Industrie hat aus drei Hauptgründen gezögert, die feinkörnige GALS-Vorgehensweise zu verfolgen: die Schwierigkeit, viele lokale Takte zu erzeugen, die Latenz, die durch asynchrone Grenzüberschreitungen („boundary crossings”) entsteht, und die Herausforderung, das GALS-Verfahren in Design-Tool-Flows von Standardanwendungs-spezifischen integrierten Schaltungen (ASIC) zu integrieren. Es besteht somit der Bedarf, diese und/oder andere Aspekte, die mit dem Stand der Technik verbunden sind, zu thematisieren.Single clock domains in large commercial designs span many square millimeters, and in GALS systems there are so many of the design challenges posed by a completely synchronous design. The full benefits of the GALS design can only be realized if large SoCs are split into a myriad of small synchronous blocks, not a handful of large domains, a procedure called fine-grained GALS. The industry has been reluctant to pursue the fine-grained GALS approach for three main reasons: the difficulty of generating many local clocks, the latency created by asynchronous boundary crossings, and the challenge of the GALS method in design Integrate tool flows from standard application-specific integrated circuits (ASIC). There is thus a need to address these and / or other aspects associated with the prior art.

ZusammenfassungSummary

Es werden ein System, ein Verfahren und ein Computerprogrammprodukt für einen pausierbaren bisynchronen First-In First-Out(FIFO)-Puffer bereitgestellt. Daten werden synchron mit einem Takt-Signal einer ersten Takt-Domäne in einen Eintrag eines Dual-Port-Speicher-Arrays geschrieben, und ein Inkrement-Signal wird in der ersten Takt-Domäne erzeugt. Das Inkrement-Signal wechselt in der Nähe einer Flanke eines zweiten Takt-Signals. Eine nächste Flanke des zweiten Takt-Signals der zweiten Takt-Domäne ist verzögert, und das Inkrement-Signal wird an die zweite Takt-Domäne übertragen. Wenn das Inkrement-Signal nicht in der Nähe einer Flanke des zweiten Takt-Signals wechselt, wird das Inkrement-Signal an die zweite Takt-Domäne übertragen, ohne die nächste Flanke des zweiten Takt-Signals zu verzögern.A system, method, and computer program product are provided for a pausible bisynchronous first-in first-out (FIFO) buffer. Data is written into an entry of a dual-port memory array synchronously with a clock signal of a first clock domain, and an increment signal is generated in the first clock domain. The increment signal changes near an edge of a second clock signal. A next edge of the second clock signal of the second clock domain is delayed, and the increment signal is transmitted to the second clock domain. If the increment signal does not change in the vicinity of an edge of the second clock signal, the increment signal is transmitted to the second clock domain without delaying the next edge of the second clock signal.

Kurze Beschreibung der ZeichnungenBrief description of the drawings

1 veranschaulicht ein Verfahren zum Aktualisieren eines Lese-Zeigers eines pausierbaren bisynchronen FIFO gemäß einer Ausführungsform. 1 FIG. 12 illustrates a method for updating a read pointer of a pausible bisynchronous FIFO according to one embodiment.

2A veranschaulicht einen adaptiven Takt-Generator gemäß einer Ausführungsform. 2A illustrates an adaptive clock generator according to an embodiment.

2B veranschaulicht einen pausierbaren Takt-Synchronizer gemäß einer Ausführungsform. 2 B illustrates a pausible clock synchronizer according to one embodiment.

2C veranschaulicht ein Timing-Diagramm gemäß einer Ausführungsform, das eine Übertragung eines Signals zwischen zwei Takt-Domänen zeigt. 2C FIG. 12 illustrates a timing diagram according to an embodiment showing transmission of a signal between two clock domains. FIG.

2D veranschaulicht ein Timing-Diagramm gemäß einer Ausführungsform, das eine verzögerte Übertragung eines Signals zwischen zwei Takt-Domänen zeigt. 2D FIG. 12 illustrates a timing diagram according to an embodiment showing a delayed transmission of a signal between two clock domains. FIG.

2E veranschaulicht ein Timing-Diagramm gemäß einer Ausführungsform, das eine Übertragung eines Signals zwischen zwei Takt-Domänen zeigt, wenn ein Takt-Signal pausiert wird. 2E FIG. 12 illustrates a timing diagram according to an embodiment showing transmission of a signal between two clock domains when a clock signal is paused. FIG.

3A veranschaulicht einen pausierbaren bisynchronen FIFO gemäß einer Ausführungsform. 3A FIG. 12 illustrates a pausible bisynchronous FIFO according to one embodiment. FIG.

3B veranschaulicht einen anderen pausierbaren bisynchronen FIFO gemäß einer Ausführungsform. 3B illustrates another pausible bisynchronous FIFO according to one embodiment.

3C veranschaulicht ein Verfahren zum Aktualisieren des Lese-Zeigers und des Schreib-Zeigers des pausierbaren bisynchronen FIFO gemäß einer Ausführungsform. 3C FIG. 12 illustrates a method of updating the read pointer and the write pointer of the pausible bisynchronous FIFO according to one embodiment.

3D veranschaulicht einen anderen pausierbaren Takt-Synchronizer gemäß einer anderen Ausführungsform. 3D illustrates another pausible clock synchronizer according to another embodiment.

4A veranschaulicht Timing-Pfade des in 2B gezeigten pausierbaren Takt-Synchronizers gemäß einer Ausführungsform. 4A illustrates timing paths of the in 2 B shown pausierbare clock synchronizer according to one embodiment.

4B veranschaulicht eine Takt-Perioden-Timing-Beschränkung des in 2B gezeigten pausierbaren Takt-Synchronizers gemäß einer Ausführungsform. 4B illustrates a clock period timing limitation of the in 2 B shown pausierbare clock synchronizer according to one embodiment.

4C veranschaulicht eine andere Takt-Perioden-Timing-Beschränkung des in 2B gezeigten pausierbaren Takt-Synchronizers gemäß einer Ausführungsform. 4C illustrates another clock period timing restriction of the in 2 B shown pausierbare clock synchronizer according to one embodiment.

4D veranschaulicht eine Setup-Timing-Beschränkung des in 2B gezeigten pausierbaren Takt-Synchronizers gemäß einer gemäß einer Ausführungsform. 4D illustrates a setup timing constraint of the in 2 B The pausible clock synchronizer shown is one according to one embodiment.

5 veranschaulicht einen Effekt einer Einfügungs-Verzögerung auf dem in 2B gezeigten pausierbaren Takt-Synchronizer gemäß einer Ausführungsform. 5 illustrates an effect of an insertion delay on the in 2 B shown pausierbare clock synchronizer according to one embodiment.

6A veranschaulicht ein Block-Diagramm gemäß einer Ausführungsform, das eine physikalische Platzierung eines pausierbaren Taktgebungs-Systems zeigt. 6A FIG. 12 illustrates a block diagram according to an embodiment showing a physical placement of a pausable clocking system. FIG.

6B zeigt ein anderes Block-Diagramm gemäß einer Ausführungsform, das eine physikalische Platzierung eines pausierbaren Taktgebungs-Systems zeigt. 6B FIG. 12 shows another block diagram according to an embodiment showing a physical placement of a pausable clocking system. FIG.

7 veranschaulicht ein beispielhaftes System, in dem die verschiedenen Architekturen und/oder Funktionalitäten der verschiedenen vorherigen Ausführungsformen implementiert werden können. 7 FIG. 3 illustrates an exemplary system in which the various architectures and / or functionalities of the various previous embodiments may be implemented.

Detaillierte BeschreibungDetailed description

Viele der Herausforderungen eines modernen Ein-Chip-Systems („system on a chip”, SoC) können mit den Techniken eines global asynchronen, lokal synchronen (GALS) Designs abgeschwächt oder eliminiert werden. Das Aufteilen eines Designs in viele synchrone Inseln führt eine Myriade von asynchronen Grenzüberschreitungen ein, die typischer Weise eine hohe Latenz auf sich ziehen. Ein pausierbarer bisynchroner First-In First-Out(FIFO)-Puffer kann eine niedrige Schnittstellen-Latenz erreichen, wenn ein pausierbares Taktgebungs-Schema verwendet wird. Während traditionelle Synchronizer eine von Null verschiedene Wahrscheinlichkeit der Metastabilität und Fehler haben, ermöglicht eine pausierbare Taktgebung einen Fehler-freien Betrieb durch das Erlauben sporadischer Verlangsamungen in der Takt-Rate.Many of the challenges of a modern system-on-a-chip (SoC) system can be mitigated or eliminated using the techniques of a globally asynchronous, locally synchronous (GALS) design. Splitting a design into many synchronous islands introduces a myriad of asynchronous boundary crossings, which typically have high latency. A pausible bis-sync First-In First-Out (FIFO) buffer can achieve low interface latency when using a pausible clocking scheme. While traditional synchronizers have a non-zero probability of metastability and errors, pauseable timing allows for error-free operation by allowing sporadic slowdowns in the clock rate.

Asynchrone Grenzüberschreitungen niedriger Latenz können unter Verwendung pausierbarer Takte erreicht werden. In einer Ausführungsform verwendet eine Schnittstelle ein Dual-Port-Speicher-Array, um Daten zu speichern, und synchronisiert Lese- und Schreib-Zeiger unter Verwendung von zwei Phasensignalen, die erlauben, dass die Daten, die in den Dual-Port-Speicher-Array geschrieben werden und aus diesem gelesen werden, die Schnittstelle mit sehr niedriger Latenz durchlaufen.Asynchronous low latency border crossings can be achieved using pausible clocks. In one embodiment, an interface uses a dual-ported memory array to store data, and synchronizes read and write pointers using two phase signals that allow the data stored in the dual-port memory to be stored. Array are written and read from this, the interface with very low latency go through.

Das Dual-Port-Speicher-Array ist als ein bisynchroner Zwei-Port-FIFO konfiguriert, ein Schaltungselement, das sich gut in Standard-Computer-Aided-Design-(CAD)-Tool-Flows einfügt. In einer Ausführungsform kann der pausierbare bisynchrone FIFO eine durchschnittliche Latenz von 1,34 Zyklen durch eine asynchrone Schnittstelle erreichen, während zugleich weniger Energie und Fläche als bei traditionellen Synchronizern verwendet wird. In anderen Ausführungsformen erreicht der pausierbare bisynchrone FIFO verschiedene durchschnittliche Latenzen, wenn die asynchrone Schnittstelle durchlaufen wird. Im Allgemeinen kann die durchschnittliche Latenz bei verschiedenen Prozesstechnologien, Taktraten, Schaltungs-Topologien und ähnlichen variieren.The dual-ported storage array is configured as a bis-ported two-port FIFO, a circuit element that blends well with standard computer-aided design (CAD) tool flows. In one embodiment For example, the pausible bis-synchronous FIFO can achieve an average latency of 1.34 cycles through an asynchronous interface while using less power and area than traditional synchronizers. In other embodiments, the pausible bis-synchronous FIFO achieves different average latencies as the asynchronous interface is traversed. In general, the average latency may vary with different process technologies, clock rates, circuit topologies, and the like.

1 veranschaulicht ein Verfahren 100 zum Aktualisieren eines Lese-Zeigers eines pausierbaren bisynchronen FIFO gemäß einer Ausführungsform. In Schritt 110 werden Daten synchron mit einem ersten Takt-Signal einer ersten Takt-Domäne in einen Eintrag eines Dual-Port-Speichers geschrieben. In dem Kontext der vorliegenden Beschreibung umfasst ein Dual-Port-Speicher-Array einen Schreib-Port und einen Lese-Port, auf die gleichzeitig zugegriffen werden kann. Ein Schreib-Zeiger zeigt den nächsten Eintrag an, in den zu schreiben ist, und ein Lese-Zeiger zeigt einen nächsten Eintrag an, der zu lesen ist. Wenn das Dual-Port-Speicher-Array als ein First-In First-Out Puffer konfiguriert ist, zeigt der Schreib-Zeiger den nächsten Eintrag an, in den die Daten „gepuscht” werden, und der Lese-Zeiger zeigt den nächsten Eintrag an, aus den die Daten abgerufen werden. Die Daten werden aus dem Dual-Port-Speicher mit einem zweiten Takt-Signal einer zweiten Takt-Domäne synchron gelesen. In einer Ausführungsform sind sowohl das erste als auch das zweite Takt-Signal pausierbare Takt-Signale. In einer anderen Ausführungsform ist entweder das erste Takt-Signal oder das zweite Takt-Signal pausierbar, und das andere Takt-Signal ist nicht pausierbar. Das erste Takt-Signal und das zweite Takt-Signal können bei derselben Frequenz oder bei verschiedenen Frequenzen betrieben werden. Im Gegensatz zu einem Takt-Signal mit einer festen Frequenz (und einer festen Periode) weist ein pausierbares Takt-Signal keine feste Frequenz auf, da eine oder mehrere Flanken des pausierbaren Takt-Signals verzögert sein können. 1 illustrates a method 100 for updating a read pointer of a pausible bisynchronous FIFO according to one embodiment. In step 110 Data is written in synchronism with a first clock signal of a first clock domain in an entry of a dual-port memory. In the context of the present description, a dual port memory array includes a write port and a read port that can be accessed simultaneously. A write pointer indicates the next entry to be written to, and a read pointer indicates a next entry to be read. If the dual-ported memory array is configured as a first-in, first-out buffer, the write pointer indicates the next entry into which the data is "pushed" and the read pointer indicates the next entry from which the data is retrieved. The data is synchronously read from the dual-port memory with a second clock signal of a second clock domain. In one embodiment, both the first and second clock signals are pausible clock signals. In another embodiment, either the first clock signal or the second clock signal is pauseable, and the other clock signal is not pauseable. The first clock signal and the second clock signal may be operated at the same frequency or at different frequencies. Unlike a clock signal having a fixed frequency (and a fixed period), a pausible clock signal does not have a fixed frequency because one or more edges of the pausible clock signal may be delayed.

In Schritt 120 wird ein Inkrement-Signal in der ersten Takt-Domäne erzeugt. Das Inkrement-Signal wird in Erwiderung auf ein Schreiben der Daten in den Eintrag erzeugt. In einer Ausführungsform ist das Inkrement-Signal konfiguriert, den Lese-Zeiger zu erhöhen, der in der zweiten Takt-Domäne ist. In dem Kontext der nachfolgenden Beschreibung ist das Inkrement-Signal ein Impuls, der geltend gemacht wird, bis eine Bestätigung, dass das Inkrement-Signal in der zweiten Takt-Domäne empfangen wurde, empfangen wird.In step 120 An increment signal is generated in the first clock domain. The increment signal is generated in response to a writing of the data in the entry. In one embodiment, the increment signal is configured to increment the read pointer that is in the second clock domain. In the context of the following description, the increment signal is a pulse asserted until an acknowledgment that the increment signal was received in the second clock domain is received.

In Schritt 130, falls das Inkrement-Signal in der Nähe einer Flanke des zweiten Takt-Signals wechselt, wird in Schritt 140 das zweite Takt-Signal pausiert, um die nächste Flanke des zweiten Takt-Signals zu verzögern. Ansonsten wird das Inkrement-Signal in Schritt 150 von der ersten Takt-Domäne an die zweite Takt-Domäne übertragen. In einer Ausführungsform ist das Inkrement-Signal dazu bestimmt, in der Nähe der Flanke des zweiten Takt-Signals zu wechseln, falls das Inkrement-Signal wechselt, während das zweite Takt-Signal in einer Niedrig-Phase ist (z. B. ist das zweite Takt-Signal FALSCH („FALSE”)). In einer anderen Ausführungsform ist das Inkrement-Signal dazu bestimmt, in der Nähe der Flanke des zweiten Takt-Signals zu wechseln, falls das Inkrement-Signal wechselt während das zweite Takt-Signal in einer Hoch-Phase ist (z. B. ist das zweite Takt-Signal WAHR („TRUE”)). In Schritt 160 wird ein Lese-Zeiger des Dual-Port-Speicher-Arrays in Erwiderung auf ein Empfangen des Inkrement-Signals erhöht. In einer Ausführungsform wird ein Bestätigungs-Signal von der zweiten Takt-Domäne an die erste Takt-Domäne übertragen, um zu bestätigen, dass das Inkrement-Signal empfangen wurde.In step 130 If the increment signal changes in the vicinity of an edge of the second clock signal, in step 140 the second clock signal is paused to delay the next edge of the second clock signal. Otherwise, the increment signal will be in step 150 from the first clock domain to the second clock domain. In one embodiment, if the increment signal changes while the second clock signal is in a low phase (eg, that is second clock signal FALSE ("FALSE")). In another embodiment, if the increment signal changes while the second clock signal is in a high phase (eg, that is second clock signal TRUE ("TRUE")). In step 160 For example, a read pointer of the dual port memory array is incremented in response to receiving the increment signal. In one embodiment, an acknowledgment signal is transmitted from the second clock domain to the first clock domain to confirm that the increment signal has been received.

Mehr veranschaulichende Information wird nun hinsichtlich verschiedener optionaler Architekturen und Merkmale dargelegt, mit denen das vorangehende Rahmenwerk umgesetzt werden kann oder nicht umgesetzt werden kann, je nach den Wünschen des Benutzers. Es ist mit Nachdruck anzumerken, dass die nachfolgende Information zu veranschaulichenden Zwecken dargelegt wird und nicht als auf irgendeine Weise beschränkend interpretiert werden sollte. Jedes der nachfolgenden Merkmale kann optional mit oder ohne Ausschluss der anderen beschriebenen Merkmale aufgenommen werden.More illustrative information will now be set forth with respect to various optional architectures and features with which the previous framework may or may not be implemented, as the user desires. It is to be understood that the following information is presented for illustrative purposes and should not be construed as limiting in any way. Each of the subsequent features may optionally be included with or without the exclusion of the other features described.

Historisch gesehen wurden die On-Chip-Takt-Signale durch Phasenregelkreis(„Phase-Locked Loop” (PLL))-Schaltungen erzeugt. Die PLL-Schaltungen können eine feste Ziel-Frequenz zuverlässig erzeugen, sie sind jedoch groß, Energie verschlingend und schwer zu gestalten, was sie zu schlechten Kandidaten zum Aufnehmen in eine jede synchrone Insel eines GALS-Systems macht. Im Gegensatz dazu funktioniert ein adaptives Taktgebungs-Schema nicht an einer bestimmten Frequenz und verwendet stattdessen Replik-kritische Pfad-Schaltungen, um kontinuierlich das erzeugte Takt-Signal anzupassen. Die Takt-Periode eines adaptiven Takt-Signals kann temporär variieren, und adaptive Takt-Generatoren bringen nicht die Komplexität von Taktgebungs-Schemen mit sich, die unter Verwendung von PLL-Schaltungen umgesetzt wurden.Historically, the on-chip clock signals have been generated by phase-locked loop (PLL) circuits. The PLL circuits can reliably generate a fixed target frequency, but they are large, energy consuming and difficult to design, making them poor candidates for inclusion in any synchronous island of a GALS system. In contrast, an adaptive timing scheme does not operate on a particular frequency and instead uses replica-critical path circuits to continually adjust the generated clock signal. The clock period of an adaptive clock signal may vary temporarily, and adaptive clock generators do not bring the complexity of timing schemes that have been implemented using PLL circuits.

2A veranschaulicht einen adaptiven Takt-Generator 200 gemäß einer Ausführungsform. Eine einfache adaptive Takt-Schaltung wie zum Beispiel der adaptive Takt-Generator 200 umfasst eine oder mehrere invertierende Verzögerungs-Leitungen, die in den Eingang eines Müller-C-Elements 205 eingeführt sind. Die Verzögerungsleitungen replizieren die verschiedenen kritischen Pfade, die auf der synchronen logischen Insel gefunden wurden; das Müller-C-Element 205 stellt sicher, dass die nächste Takt-Flanke nicht erzeugt werden wird, bis sich der langsamste replizierte kritische Pfad aufgelöst hat. Adaptive Takt-Schaltungen können bereits in vielen GALS-Implementierungen präsent sein, und eine pausierbare Takt-Schaltung kann mit dem adaptiven Takt-Generator 200 kombiniert werden, um die Latenz der Synchronisierung zu reduzieren. 2A illustrates an adaptive clock generator 200 according to one embodiment. A simple adaptive clock circuit such as the adaptive clock generator 200 includes one or more inverting delay lines connected to the input of a Muller C element 205 are introduced. The delay lines replicate the various critical paths found on the synchronous logical island; the Müller-C-element 205 Ensures that the next clock edge will not be generated until the slowest replicated critical path has resolved. Adaptive clock circuits may already be present in many GALS implementations, and a pausible clock circuit may be provided with the adaptive clock generator 200 combined to reduce the latency of the synchronization.

Signale, welche die Grenzen zwischen vollständig asynchronen Takt-Domänen überschreiten, wie zum Beispiel Signale, die zwischen synchronen Inseln in einem GALS-Design laufen, müssen synchronisiert werden, um das Risiko der Metastabilität und der Betriebsstörungen zu minimieren. Diese Synchronisierung wird typischer Weise durch ein Senden solcher Signale durch verschiedene aneinandergereihte Flipflops in der Takt-Domäne des Empfängers erreicht. Die Flipflops verzögern das Signal für einen oder mehr Zyklen, was zusätzlich Zeit für jede zu beseitigende Metastabilität verschafft. Während diese Brute-Force-(BF)-Synchronizer die Möglichkeit der Metastabilität nicht eliminieren, können sie die Wahrscheinlichkeit reduzieren, bis sie geringfügig wird. Die Brute-Force-Synchronizer können mit einem FIFO-Speicher verwendet werden, um einen bisynchronen Brute-Force-FIFO zu konstruieren. Ein bisynchroner Brute-Force-FIFO überträgt sicher Daten zwischen zwei Takt-Domänen, die die Lese- und Schreib-Zeiger mit den BF-Synchronizern synchronisieren. Die Lese- und Schreib-Zeiger müssen Gray-kodiert sein, sodass ein jeder Synchronisierungs-Fehler die Zeiger-Position nicht durch mehr als ein Inkrement stört; die Logik zum Kodieren und Dekodieren der Lese- und Schreib-Zeiger sind Schaltungs-Overhead-Kosten einer bisynchronen Brute-Force-FIFO-Implementierung.Signals crossing the boundaries between fully asynchronous clock domains, such as signals traveling between synchronous islands in a GALS design, must be synchronized to minimize the risk of metastability and operational disturbances. This synchronization is typically achieved by sending such signals through various concatenated flip-flops in the receiver's clock domain. The flip-flops delay the signal for one or more cycles, giving additional time for any metastability to be eliminated. While these brute force (BF) synchronizers do not eliminate the possibility of metastability, they can reduce the likelihood of becoming low. The brute force synchronizers can be used with a FIFO memory to construct a bisynchronous brute-force FIFO. A bisynchronous brute-force FIFO securely transfers data between two clock domains that synchronize the read and write pointers with the BF synchronizers. The read and write pointers must be Gray coded so that each sync error does not disturb the pointer position by more than one increment; the logic for encoding and decoding the read and write pointers are circuit overhead costs of a bisynchronous brute-force FIFO implementation.

Die Brute-Force-Synchronizer fügen gezielt Latenz dem Domänen-Überschreitungspfad hinzu, um jede Metastabilitäts-Zustandszeit zum Beseitigen zu gewähren. Allerdings verlangsamt die hinzugefügte Latenz die Kommunikation zwischen den Takt-Domänen, was eine starke Barriere hinsichtlich des Anpassens eines Chips mit vielen verschiedenen Takt-Domänen erzeugt. Zusätzlich ist es unmöglich, das Potential dafür, dass ein metastabiler Zustand sich verbreitet, vollständig zu entfernen, was diesen Schaltungen eine „durchschnittliche Zeit bis zu einer Störung” verschafft, die sorgfältig betrachtet werden muss.The brute force synchronizers deliberately add latency to the domain overflow path to grant each metastability state time for purging. However, the added latency slows communication between the clock domains, creating a strong barrier to adapting a chip to many different clock domains. In addition, it is impossible to completely remove the potential for a metastable state to dissipate, giving these circuits an "average time to disturbance" that must be carefully considered.

Herkömmliche Vorgehensweisen reduzieren die Latenz des Takt-Domänen-Überschreitens durch Machen von Annahmen über die relative Frequenz oder Phase der zwei Takte. Man kann sich nicht auf die herkömmlichen Vorgehensweisen verlassen, da die Annahmen für eine vollständig asynchrone Schnittstelle nicht gültig sind. Andere Vorgehensweisen verwenden eine vollständig asynchrone Logik, die von Takten unabhängig ist. Allerdings verbraucht eine asynchrone Logik oft mehr Energie als ihr synchrones Äquivalent, und es kann schwierig sein, diese in die Standard-CAD-Flüsse für die Synthese und Nachprüfung einzufügen.Conventional approaches reduce the latency of clock domain crossing by making assumptions about the relative frequency or phase of the two clocks. One can not rely on the traditional approaches because the assumptions for a fully asynchronous interface are not valid. Other approaches use completely asynchronous logic that is independent of clocks. However, asynchronous logic often consumes more energy than its synchronous equivalent, and can be difficult to insert into the standard CAD flows for synthesis and verification.

In einer Ausführungsform nützt ein synchronisierender FIFO den Vorteil einer asynchronen Technik, die auf pausierbare Takte beruht. Die Technik verzögert Datensignale, die in einem unsicheren Fenster eintreffen, um den Takt zu empfangen, sodass die Datensignale zu einer problematischen Zeit nicht abgetastet werden. 2B veranschaulicht einen pausierbaren Takt-Synchronizer 210 gemäß einer Ausführungsform. Ein Element des wechselseitigen Ausschlusses („mutual exclusion element” (Mutex)) 215 ist eine Schaltung, die die Priorität entweder einem eingehenden (nicht-synchronisierten) Anfrage-Signal (Eingang R1) oder der bevorstehenden Takt-Flanke (Eingang R2) erteilt. Der Mutex 215 stellt sicher, dass das asynchrone Anfrage-Signal, das am Eingang R1 empfangen wurde, nicht gleichzeitig mit der steigenden Takt-Flanke umschalten kann. Insbesondere stellt der Mutex 215 sicher, dass der g1-Ausgang nicht umschaltet, während der R2-Eingang in einer hohen Phase ist, was wiederum sicherstellt, dass der g1-Ausgang nicht gleichzeitig mit der steigenden Takt-Flanke umschaltet. In einer anderen Ausführungsform ist die Mutex-Schaltung konfiguriert, sicherzustellen, dass der g1-Ausgang nicht umschaltet, während der R2-Eingang in einer niedrigen Phase ist, was wiederum sicherstellt, dass der g1-Ausgang nicht gleichzeitig mit der fallenden Takt-Flanke umschaltet.In one embodiment, a synchronizing FIFO takes advantage of an asynchronous technique based on pauseable clocks. The technique delays data signals that arrive in an insecure window to receive the clock, so that the data signals are not sampled at a problematic time. 2 B illustrates a pausible clock synchronizer 210 according to one embodiment. An element of mutual exclusion (mutex) 215 is a circuit that gives priority to either an incoming (non-synchronized) request signal (input R1) or the upcoming clock edge (input R2). The mutex 215 ensures that the asynchronous request signal received at input R1 can not switch simultaneously with the rising clock edge. In particular, the mutex represents 215 ensure that the g1 output does not toggle while the R2 input is in a high phase, which in turn ensures that the g1 output does not switch simultaneously with the rising clock edge. In another embodiment, the mutex circuit is configured to ensure that the g1 output does not toggle while the R2 input is in a low phase, which in turn ensures that the g1 output does not switch simultaneously with the falling clock edge ,

Der Mutex 215 wird einer Ringoszillator-Takt-Schaltung hinzugefügt, die als ein adaptiver Takt-Generator implementiert sein kann. Der Takt-Eingang zu dem Mutex sollte eine Priorität für die nächste abzugebende Takt-Flanke haben, und die Priorität wird durch den Mutex 215 erzwungen. Ein Müller-C-Element 205 stellt sicher, dass die nächste Flanke des Takts wartet, bis der Takt-Eingang zu dem Mutex 215 (z. B. R2) eine Priorität erhält. Die Takteingabe ist der empfangende Takt, mit dem das Anfrage-Signal synchronisiert werden wird. Falls ein Anfrage-Signal (z. B. eine steigende Flanke eines Impulses) während einer niedrigen Phase des Takts (bevor ein Wechsel des Anfrage-Signals eine Metastabilität auslösen könnte) ankommt, kann das Anfrage-Signal keine Priorität erhalten und wird um einen Takt-Zyklus verzögert. Das verzögerte Anfrage-Signal wird durch den Mutex 215 als eine synchronisierte Anfrage an einen empfangenden Block ausgegeben. Das an dem R2-Eingang zu dem Mutex 215 (z. B. einem invertierten Takt) empfangene Signal wird als g2 ausgegeben.The mutex 215 is added to a ring oscillator clock circuit which may be implemented as an adaptive clock generator. The clock input to the mutex should have a priority for the next clock edge to be issued, and priority is given by the mutex 215 enforced. A Müller-C-element 205 Make sure the next edge of the clock waits until the clock input to the mutex 215 (eg R2) receives a priority. The clock input is the receiving clock with which the request signal will be synchronized. If a request signal (eg, a rising edge of a pulse) arrives during a low phase of the clock (before a change in the request signal could trigger metastability), the request signal may not receive priority and will increment by one clock Cycle delayed. The delayed request signal is passed through the mutex 215 as a synchronized request to a receiving block. That at the R2 entrance to the mutex 215 (eg, an inverted clock) received signal is output as g2.

2C veranschaulicht ein Timing-Diagramm 220 gemäß einer Ausführungsform, das eine Übertragung eines Signals zwischen zwei Takt-Domänen zeigt. Die Wellenform des Takts ist ein empfangender Takt, und der pausierbare Takt-Synchronizer 210 synchronisiert das Anfrage-Signal mit dem empfangenden Takt, um das synchronisierte Anfrage-Signal zu erzeugen. Wenn der R2-Eingang niedrig ist, ist der Mutex 215 transparent, und das Anfrage-Signal am R1 wird durchgelassen, um das synchronisierte Anfrage-Signal zu erzeugen. 2C illustrates a timing diagram 220 according to an embodiment showing a transmission of a signal between two clock domains. The waveform of the clock is a receiving clock, and the pausible clock synchronizer 210 synchronizes the request signal with the receiving clock to generate the synchronized request signal. When the R2 input is low, the mutex is 215 transparent, and the request signal at R1 is passed to produce the synchronized request signal.

Falls ein Anfrage-Signal während einer Hoch-Phase des Takts ankommt, ist das Anfrage-Signal vor der Metastabilität sicher und wird sofort durch den pausierbaren Takt-Synchronizer 210 als die synchronisierte Anfrage an den empfangenden Block ausgegeben. 2D veranschaulicht ein Timing-Diagramm 220 gemäß einer Ausführungsform, das eine verzögerte Übertragung des Anfrage-Signals zwischen zwei Takt-Domänen zeigt. Wenn der R2-Eingang des Mutex 215 hoch ist, ist der Mutex 215 opak, und das Anfrage-Signal an dem R1-Eingang wird verzögert, bis die Takt-Flanke passiert ist. Das Signal, das an dem R2-Eingang zu dem Mutex 215 (z. B. invertierten Takt) empfangen wurde, wird als g2 ausgegeben. Für den Fall, dass der Mutex 215 metastabil wird, wird die nächste Flanke des Takts einfach verzögert, so ist der pausierbare Takt-Synchronizer 210 hinsichtlich einer mit einer Matastabilität verbundenen Störung immun.If a request signal arrives during a high phase of the clock, the request signal before the metastability is secure and will be immediately asserted by the pausible clock synchronizer 210 as the synchronized request is issued to the receiving block. 2D illustrates a timing diagram 220 according to an embodiment showing a delayed transmission of the request signal between two clock domains. If the R2 input of the mutex 215 is high, is the mutex 215 opaque, and the request signal at the R1 input is delayed until the clock edge has passed. The signal at the R2 input to the mutex 215 (eg inverted clock) is output as g2. In the event that the mutex 215 is metastable, the next edge of the clock is simply delayed, so is the pausible clock synchronizer 210 immune to a disorder associated with maternal stability.

2E veranschaulicht ein Timing-Diagramm 230 gemäß einer Ausführungsform, das eine Übertragung eines Signals zwischen zwei Takt-Domänen zeigt, wenn ein Takt-Signal pausiert wird. Da der Mutex 215 metastabil werden kann, falls die R1- und R2-Eingänge gleichzeitig umschalten, kann der Takt für eine beliebig lange Dauer pausieren (mit einer verschwindend kleinen Wahrscheinlichkeit), falls R1 und R2 zur selben Zeit zu Hoch wechseln. An dem asynchronen Eingang besteht allerdings keine Gefahr der Metastabilität, und ein typischer Schaltungs-Betrieb synchronisiert die Eingangs-Signale mit ungefähr einem Latenz-Zyklus. Wie in 2E gezeigt, wird das Signal, das an dem R2-Eingang zu dem Mutex 215 (z. B. invertierten Takt) empfangen wurde, verzögert und als g2 ausgegeben. 2E illustrates a timing diagram 230 according to an embodiment showing a transmission of a signal between two clock domains when a clock signal is paused. Because the mutex 215 If the R1 and R2 inputs switch simultaneously, the clock can pause for any length of time (with a tiny chance) if R1 and R2 go high at the same time. However, there is no danger of metastability at the asynchronous input, and typical circuit operation synchronizes the input signals with approximately one latency cycle. As in 2E shown, the signal that is at the R2 input to the mutex 215 (eg inverted clock) was received, delayed and output as g2.

Wie zuvor erläutert, erlaubt eine pausierbare Taktgebung eine Niedrig-Latenz-Synchronisierung von Signalen mit einer beliebigen relativen Phase und repräsentiert als solche eine attraktive Option für Grenzüberschreitungen im GALS-Design. In einer Ausführungsform wird eine pausierbare Taktgebung verwendet, um eine Fluss-Kontrolle eines synchronen Zwei-Port-Speicher-Arrays auszuführen, um einen bisynchronen FIFO zu implementieren. Ein „synchroner” FIFO/Speicher ist einer, in dem die Lese-Vorgänge und die Schreib-Vorgänge durch denselben Takt getaktet werden. Ein „bisynchroner” FIFO/Speicher ist einer, in dem die Lese-Vorgänge mit einem Takt synchron sind, und die Schreib-Vorgänge mit einem zweiten Takt synchron sind. Ein „asynchroner” FIFO wird nicht getaktet, sondern wird gelesen und beschrieben gemäß beliebig getakteter Signale (wie zum Beispiel Anfrage- und Bestätigungs-Signale). Ein einfacher „asynchroner” FIFO funktioniert wie ein Schieberegister, in dem sich geschriebene Daten vorwärts in die Richtung des Endes des FIFO bewegen, wann auch immer das Register vor den geschriebenen Daten leer ist, ohne dass es notwendig ist, auf den nächsten Takt-Zyklus zu warten. Asynchrone FIFOs sind für Gewöhnlich Energie verschlingend, da sich die Daten vielmehr durch einen jeden Eintrag in dem FIFO bewegen als an einem Platz zu bleiben (d. h. in dem Eintrag, der beschrieben wurde) und die Lese- und Schreib-Zeiger zu bewegen.As previously discussed, pauseable clocking allows for low-latency synchronization of signals of any relative phase, and as such, represents an attractive option for GALS design boundary violations. In one embodiment, pauseable clocking is used to perform flow control of a two port synchronous memory array to implement a bisynchronous FIFO. A "synchronous" FIFO / memory is one in which the reads and writes are clocked by the same clock. A "bis-synchronous" FIFO / memory is one in which the reads are synchronous with one clock, and the writes are synchronous with a second clock. An "asynchronous" FIFO is not clocked, but is read and written according to arbitrary clocked signals (such as request and acknowledge signals). A simple "asynchronous" FIFO functions like a shift register in which written data moves forward in the direction of the end of the FIFO whenever the register before the written data is empty, without being necessary, to the next clock cycle waiting. Asynchronous FIFOs are usually devouring energy because the data moves through each entry in the FIFO rather than staying in one place (i.e., in the entry that has been described) and moving the read and write pointers.

Herkömmliche asynchrone FIFOs weisen im Vergleich zu synchronen FIFOs verschiedene Nachteile auf. Anstatt die Daten, die in einem Eintrag gespeichert wurden, an einem Platz zu behalten und Lese- und Schreib-Zeiger zu aktualisieren, weil Daten gelesen und geschrieben werden, verbreiten die herkömmlichen asynchronen FIFOs die Daten durch verschiedene Einträge von hinten nach vorne einer Schlange. Das Bewegen der Daten durch die verschiedenen Einträge nimmt eine Strafe auf sich sowohl hinsichtlich der Energie als auch hinsichtlich der Latenz, eine Strafe, die mit der Tiefe der Schlange steigt. Darüber hinaus benötigen viele herkömmliche asynchrone FIFOs einen sorgfältigen Verzögerungs-Abgleich, um die zweiseitigen Timing-Beschränkungen zu erfüllen. Herkömmliche asynchrone FOFOs benötigen zwangsläufig ein sorgfältiges asynchrones Schaltungs-Design, und eine Überprüfung von asynchronen FIFOs ist unzureichend unterstützt durch Standard-Tool-Flows der Very Large Scale Integration (VLSI).Conventional asynchronous FIFOs have several drawbacks compared to synchronous FIFOs. Instead of keeping the data stored in an entry in place and updating read and write pointers because data is being read and written, the traditional asynchronous FIFOs propagate the data through various back-to-front entries of a queue. Moving the data through the various entries is penalized for both energy and latency, a penalty that increases with the depth of the snake. In addition, many conventional asynchronous FIFOs require careful delay alignment to meet the two-sided timing constraints. Traditional asynchronous FOFOs inevitably require careful asynchronous circuit design, and verification of asynchronous FIFOs is insufficiently supported by standard Very Large Scale Integration (VLSI) tool flows.

Eine pausierbare Taktgebungstechnik kann mit einem synchronen Zwei-Port-Speicher-Array verwendet werden, um einen pausierbaren FIFO zu implementieren, der synchron in einer Takt-Domäne beschrieben werden kann und synchron in einer anderen Takt-Domäne gelesen werden kann. Die Daten werden in dem synchronen Zwei-Port-Speicher-Array gespeichert, während die Lese- und Schreib-Zeiger zwischen den Takt-Domänen synchronisiert werden. Im Gegensatz zu einem herkömmlichen bisynchronen FIFO ist das Synchronisieren von den Lese- und Schreib-Zeigern abgeschlossen mit einem pausierbaren Takt-Netzwerk in dem pausierbaren bisynchronen FIFO, nicht mit langsamen (d. h. Hoch-Latenz-)Brute-Force-Synchronizern. Das pausierbare bisynchrone FIFO-Design hat einen Vorteil der Niedrig-Latenz-Synchronisierung, die aus einer pausierbaren Taktgebung folgt, und behält die günstigen Charakteristiken eines Standard-Zwei-Port-FIFOs bei.A pausing clocking technique can be used with a synchronous two-port memory array to implement a pausible FIFO that can be synchronously written in a clock domain and read synchronously in another clock domain. The data is stored in the two-port synchronous memory array while the read and write pointers between the clock domains are synchronized. Unlike a conventional bisynchronous FIFO, this is Synchronizing the read and write pointers terminated with a pausible clock network in the pausible bisynchronous FIFO, not slow (ie, high latency) brute force synchronizers. The pausible bis-synchronous FIFO design has an advantage of low-latency synchronization resulting from pauseable clocking and maintains the favorable characteristics of a standard two-port FIFO.

3A veranschaulicht einen pausierbaren bisynchronen FIFO 300 gemäß einer Ausführungsform. Der Klarheit wegen wird nur ein Pfad der Inkrement-Bestätigungs-Pfade gezeigt; in dem vollständigen System kann jede Inkrement- und Bestätigungs-Leitung unter Verwendung eines dedizierten Mutex 215 und einer Synchronisierungs-Schaltung implementiert werden. Die kennzeichnenden Buchstaben (z. B. A, B, C, D, E, F und G) zeigen die Sequenz, die notwendig ist, um die Daten durch den pausierbaren bisynchronen FIFO 300 zu synchronisieren, und werden hierin im Nachfolgenden beschrieben. Pausierbare Takt-Synchronizer 305 und 310 stellen die Synchronisierung sowohl in den Übertragungs-(TX) als auch in den Empfangs-(RX)-Takt-Domänen bereit. Die Schaltungen, die verwendet werden, um die pausierbaren Takt-Synchronizer 305 und 310 zu implementieren, sind den pausierbaren Takt-Synchronizern 210 ähnlich, einschließlich eines Rückmeldungs-Latches und eines exklusiven ODER-(XOR-)-Gate. Ein Latch wird anstatt eines Flipflops verwendet, um den Overhead zu reduzieren. Das XOR-Gate beendet einen Anfrage-Impuls nach dem Synchronisieren einer Anfrage mit dem Empfangs-Takt. Wie in 3A gezeigt, wird die Anfrage (z. B. ein Zeiger-Inkrement-Signal oder Zeiger-Bestätigungs-Signal) an die zweite Takt-Domäne durch den Rückmeldungs-Latch übertragen, der an einen Flipflop gekoppelt ist. Der Rückmeldungs-Lach kann mit dem Flipflop direkt gekoppelt sein oder durch einen oder mehr Puffer oder andere Schaltungen mit dem Flipflop indirekt gekoppelt sein. 3A illustrates a pausible bisynchronous FIFO 300 according to one embodiment. For clarity, only one path of the increment confirmation paths is shown; In the complete system, each increment and acknowledge line can be made using a dedicated mutex 215 and a synchronization circuit. The characterizing letters (eg, A, B, C, D, E, F, and G) show the sequence necessary to pass the data through the pausible bisynchronous FIFO 300 and are described hereinbelow. Pausable clock synchronizer 305 and 310 provide synchronization in both the transmit (TX) and receive (RX) clock domains. The circuits that are used to make the pausible clock synchronizer 305 and 310 to implement are the pausible clock synchronizers 210 similarly, including a feedback latch and an exclusive OR (XOR) gate. A latch is used instead of a flip-flop to reduce overhead. The XOR gate terminates a request pulse after synchronizing a request with the receive clock. As in 3A 2, the request (eg, a pointer increment signal or pointer acknowledge signal) is transmitted to the second clock domain by the feedback latch coupled to a flip-flop. The feedback salmon may be directly coupled to the flip-flop or indirectly coupled to the flip-flop by one or more buffers or other circuitry.

Es ist anzumerken, dass in einer Ausführungsform jeder der pausierbaren Takt-Synchronizer 305 und 310 auf ein Eingangs-Zeiger-Inkrement oder auf ein Bestätigungs-Signal angewiesen ist, um ein Zwei-Phasen-Anfrage-Bestätigungs-Protokoll zu implementieren. Das Zwei-Phasen-Anfrage-Bestätigungs-Protokoll stellt sicher, dass das nicht synchronisierte Anfrage-Signal nur einmal geltend gemacht wird, und danach sollte eine Bestätigung empfangen werden, bevor das Anfrage-Signal erneut geltend gemacht wird. Das Zwei-Phasen-Anfrage-Bestätigungs-Protokoll verhindert ein zusätzliches Schalten des Anfrage-Signals während einer unsicheren Takt-Phase. Durch das Design verhindert das Zwei-Phasen-Anfrage-Bestätigungs-Protokoll mehrfache Geltend-Machungen innerhalb einer einzelnen Takt-Periode; das Beschränken der Frequenz der Anfragen ist für die Synchronisation der Zeiger-Aktualisierungen jedoch problematisch, da es impliziert, dass jeder Zeiger nur einmal per Zyklus aktualisiert werden kann, was den Durchsatz auf die Langsameren der zwei Takt-Perioden beschränkt.It should be noted that in one embodiment, each of the pausible clock synchronizers 305 and 310 is dependent on an input pointer increment or an acknowledge signal to implement a two phase request acknowledge protocol. The two-phase request acknowledgment protocol ensures that the unsynchronized request signal is asserted only once, and thereafter an acknowledgment should be received before the request signal is reasserted. The two phase request acknowledge protocol prevents additional switching of the request signal during an unsafe clock phase. By design, the two-phase request acknowledgment protocol prevents multiple assertions within a single clock period; however, limiting the frequency of the requests is problematic for the synchronization of the pointer updates, since it implies that each pointer can be updated only once per cycle, limiting the throughput to the slower ones of the two clock periods.

Dementsprechend synchronisiert der pausierbare bisynchrone FIFO 300 die Multi-Bit-Zeiger nicht direkt. Stattdessen signalisieren verschiedene Einzelbit-, Zwei-Phasen-Zeiger-Inkrement-Leitungen eine Aktualisierung an die Lese- oder Schreib-Zeiger, und entsprechende Zeiger-Bestätigungs-Signale werden zurückgegeben, sobald die entsprechende Inkremente synchronisiert worden sind. Mehrfache Zeiger-Inkremente können innerhalb einer einzelnen Takt-Periode nacheinander auftreten, und ein vollständiger Durchsatz ist selbst bei falsch angepassten Takt-Perioden erlaubt. In einer Ausführungsform werden drei Inkrement-Bestätigungs-Paare in jede Richtung implementiert. Zusätzliche Inkrement- und -Bestätigungs-Leitungen können hinzugefügt werden, um einen vollständigen Durchsatz für den Fall extremer Fehlanpassungen zwischen TX- und RX-Takt-Perioden sicherzustellen.Accordingly, the pausible bis-synchronous FIFO synchronizes 300 the multi-bit pointers are not direct. Instead, several single-bit, two-phase pointer increment lines signal an update to the read or write pointers, and corresponding pointer acknowledge signals are returned once the corresponding increments have been synchronized. Multiple pointer increments can occur sequentially within a single clock period, and full throughput is allowed even with mismatched clock periods. In one embodiment, three incremental acknowledgment pairs are implemented in each direction. Additional increment and acknowledge lines may be added to ensure full throughput in the event of extreme mismatches between TX and RX clock periods.

Jedes der Inkrement- und Bestätigungs-Signale wird durch einen dedizierten Mutex 215 in einem entsprechenden pausierbaren Takt-Synchronizer (z. B. in einem TX pausierbaren Synchronizer 305 und in einem RX pausierbaren Synchronizer 310) synchronisiert, der ein entsprechendes pausierbares Takt-Netzwerk aufweist. Die g2-Ausgänge von allen Mutex 215 innerhalb eines jeden pausierbaren Takt-Synchronizers 305 und 310 werden mit UND zusammenverknüpft, und das Ergebnis wird als der synchronisierende Eingang zu dem Müller-C-Element 205 verwendet, dadurch sicherstellend dass die Takt-Flanke nicht generiert wird, bis jeder Mutex 215 eine sichere Phase garantiert. Zusätzliche Schnittstellen (z. B. zu mehrfachen verschiedenen synchronen Inseln) können ebenfalls auf dieselbe Weise aufgenommen werden: die g2-Ausgänge von jeder Schnittstelle können mit UND zusammenverknüpft werden, um sicherzustellen, dass alle Schnittstellen korrekt synchronisieren. Das Synchronisieren mehrfacher Schnittstellen hat nicht den Nebeneffekt, dass eine Takt-Pause von irgendeiner Schnittstelle die gesamte synchrone Domäne verzögern wird.Each of the increment and acknowledge signals is passed through a dedicated mutex 215 in a corresponding pausible clock synchronizer (eg in a TX pauseable synchronizer 305 and in a RX pauseable synchronizer 310 ), which has a corresponding pausable clock network. The g2 outputs of all mutex 215 within each pausible clock synchronizer 305 and 310 are ANDed together, and the result is considered to be the synchronizing input to the Muller C element 205 used, thereby ensuring that the clock edge is not generated until every mutex 215 a safe phase guaranteed. Additional interfaces (eg to multiple different synchronous islands) can also be included in the same way: the g2 outputs from each interface can be ANDed together to ensure that all interfaces are synchronizing correctly. Synchronizing multiple interfaces does not have the side effect that a clock break from any one interface will delay the entire synchronous domain.

In der TX-Domäne speichert die Schreib-Zeiger-Logik 315 den Wert des Schreib-Zeigers, sowie den Wert eines angenäherten Lese-Zeigers (möglicher Weise von der tatsächlichen Lese-Zeiger-Position verzögert, da Aktualisierungen von der RX-Domäne synchronisiert werden). Die Schreib-Zeiger-Logik 315 verwendet die Werte des Schreib-Zeigers und des angenäherten Lese-Zeigers, um zu berechnen, ob der Dual-Port-FIFO 325 voll ist, und um einen Gegendruck entsprechend zu signalisieren. Die Schreib-Zeiger-Logik 315 überträgt auch Schreib-Zeiger-Inkrement-Signale an die Empfangs-Takt-Domäne (RX-Takt) durch das Umschalten einer der Zwei-Phasen-Schreib-Zeiger-Inkrement-Leitungen im Falle eines Schreibens in einen Eintrag des Dual-Port-FIFO 325. Eine Zustands-Maschine innerhalb der Schreib-Zeiger-Logik 315 verfolgt, welche Schreib-Zeiger-Inkrement-Signale im Anflug („inflight”) sind und welche Schreib-Zeiger-Inkrement-Signale bestätigt worden sind und erneut verwendet werden können.The write pointer logic stores in the TX domain 315 the value of the write pointer, as well as the value of an approximated read pointer (possibly delayed from the actual read pointer position because updates are synchronized by the RX domain). The write pointer logic 315 uses the values of the write pointer and the approximated read pointer to calculate whether the dual-port FIFO 325 is full, and to signal a back pressure accordingly. The write pointer logic 315 Also, transfers write pointer increment signals to the receive clock domain (RX clock) by switching one of the two-phase write pointer increment lines in case of writing to an entry of the dual-port FIFO 325 , A state machine within the write pointer logic 315 tracks which write pointer increment signals are "inflight" and which write pointer increment signals have been asserted and can be reused.

In der RX-Domäne speichert die Lese-Zeiger-Logik 320 den Wert des Lese-Zeigers, sowie den Wert eines angenäherten Schreib-Zeigers (möglicher Weise von der tatsächlichen Schreib-Zeiger-Position verzögert, da Aktualisierungen von der TX-Domäne synchronisiert werden). Wenn mehrfache Schreib-Zeiger-Inkrement-Signale in demselben Takt-Zyklus empfangen werden, kombiniert die Lese-Zeiger-Logik 320 die einzelnen Schreib-Zeiger-Inkrement-Signale, sodass der Wert des angenäherten Schreib-Zeigers durch ein, zwei, drei oder mehr in einem einzelnen Takt-Zyklus erhöht wird. Die Lese-Zeiger-Logik 320 verwendet die Werte des Lese-Zeigers und des angenäherten Schreib-Zeigers, um zu berechnen, ob der Dual-Port-FIFO 325 leer ist. Die Lese-Zeiger-Logik 320 überträgt auch Lese-Zeiger-Inkrement-Signale an die Übertragungs-Takt-Domäne (TX-Takt) durch ein Umschalten einer der Zwei-Phasen-Lese-Zeiger-Inkrement-Leitungen im Falle eines Lese-Vorgangs aus einem Eintrag des Dual-Port-FIFO 325. In einer Ausführungsform, wenn mehrfache Lese-Zeiger-Inkrement-Signale durch die Schreib-Zeiger-Logik 315-Logik 315 im denselben Takt-Zyklus empfangen werden, kombiniert die Schreib-Zeiger-Logik 315 die einzelnen Schreib-Zeiger-Inkrement-Signale so, dass der Wert des angenäherten Lese-Zeigers durch eins, zwei, drei oder mehr in einem einzelnen Takt-Zyklus erhöht wird.The read pointer logic stores in the RX domain 320 the value of the read pointer, as well as the value of an approximated write pointer (possibly delayed from the actual write pointer position because updates are synchronized by the TX domain). When multiple write pointer increment signals are received in the same clock cycle, the read pointer logic combines 320 the individual write pointer increment signals so that the value of the approximate write pointer is incremented by one, two, three, or more in a single clock cycle. The read pointer logic 320 uses the values of the read pointer and the approximated write pointer to calculate whether the dual-port FIFO 325 is empty. The read pointer logic 320 Also, transfers read pointer increment signals to the transmit clock domain (TX clock) by switching one of the two-phase read pointer increment lines in the case of a read operation from an entry of the dual port -FIFO 325 , In one embodiment, when multiple read pointer increment signals are provided by the write pointer logic 315 -Logic 315 are received in the same clock cycle, the write pointer logic combines 315 the individual write pointer increment signals so that the value of the approximate read pointer is incremented by one, two, three, or more in a single clock cycle.

Eine Zustands-Maschine innerhalb der Lese-Zeiger-Logik 320 verfolgt, welche Lese-Zeiger-Inkrement-Signale im Anflug („inflight”) sind und welche Lese-Zeiger-Inkrement-Signale bestätigt worden sind und wiederverwendet werden können. In einer Ausführungsform, wenn mehrfache Bestätigungs-Signale im denselben Takt-Zyklus empfangen werden, kombiniert die Lese-Zeiger-Logik 320 die einzelnen Bestätigungs-Signale so, dass die Anzahl der im Anflug befindlichen („inflight”) Lese-Zeiger-Inkrement-Signale durch eins, zwei, drei oder mehr in einem einzelnen Takt-Zyklus aktualisiert werden können. Mit der Kombination der Schreib-Zeiger-Logik 315, der Lese-Zeiger-Logik 320 und der pausierbaren Takt-Synchronizer 305 und 310 kann der pausierbare bisynchrone FIFO 300 neue Eingangs-Daten durchschnittlich in ungefähr einem Zyklus synchronisieren.A state machine within the read pointer logic 320 tracks which read pointer increment signals are "inflight" and which read pointer increment signals have been asserted and can be reused. In one embodiment, when multiple acknowledgment signals are received in the same clock cycle, the read pointer logic combines 320 the individual acknowledgment signals so that the number of "inflight" read pointer increment signals can be updated by one, two, three or more in a single clock cycle. With the combination of the write pointer logic 315 , the read pointer logic 320 and the pausible clock synchronizer 305 and 310 may be the pausible bis-synchronous FIFO 300 synchronize new input data on average in about one cycle.

Der Dual-Port-FIFO 325 wird durch den TX-Takt getaktet und umfasst ein Speicher-Array, das in Form von Flipflops, eines Latch-Arrays oder eines statischen Arbeitsspeichers („static Random Access Memory” (SRAM)) implementiert werden kann. Solche FIFOs sind Standard-Schaltungs-Elemente in modernen Designs, und die zahlreichen Flächen- und Energie-Optimierungen, die für die FIFOs entwickelt sind, können ohne einen zusätzlichen Design-Aufwand wirksam eingesetzt werden. In einer Ausführungsform wird kein Sonder-Design benötigt, um den Dual-Port-FIFO 325 zu implementieren, und Standard-Abtastungs- und Test-Strukturen können einfach implementiert werden.The dual-port FIFO 325 is clocked by the TX clock and includes a memory array that may be implemented in the form of flip-flops, a latch array, or a static random access memory (SRAM). Such FIFOs are standard circuit elements in modern designs, and the numerous area and energy optimizations developed for the FIFOs can be leveraged without additional design effort. In one embodiment, no special design is needed to use the dual-port FIFO 325 and standard sample and test structures can be easily implemented.

3A veranschaulicht einen anderen pausierbaren bisynchronen FIFO 301 gemäß einer Ausführungsform. In dieser Ausführungsform ist der pausierbare bisynchrone FIFO 301 modifiziert, zwischen einer Takt-Domäne mit einer pausierbaren Taktgebung und einer Takt-Domäne mit einer traditionell festgelegten Referenz, wie zum Beispiel einer PLL, zu koppeln. Durch ein Ersetzen des pausierbaren Synchronizers auf der Seite der festgelegten Referenz durch Brute-Force-synchronisierenden Flipflops, um die Inkrement- und Bestätigungs-Zeiger zu synchronisieren, kann eine niedrige Latenz in eine Richtung beibehalten werden. Folglich kann ein System teilweise in ein GALS-Design konvertiert werden, während die Alt-Logik mit der traditionellen Taktgebung dort, wo es angebracht ist, beibehalten wird. Diese Vorteile machen den pausierbaren bisynchronen FIFO 300 und 301 zu einem guten Kandidaten, um die Hürden zu einer umfassenden GALS-Einführung zu überwinden. 3A illustrates another pausible bisynchronous FIFO 301 according to one embodiment. In this embodiment, the pausible bisynchronous FIFO is 301 modified to couple between a clock domain with a pauseable clocking and a clock domain with a traditionally fixed reference, such as a PLL. By replacing the pauseable synchronizer on the page of the designated reference with brute-force synchronizing flip-flops to synchronize the increment and acknowledge pointers, low latency in one direction can be maintained. As a result, a system can be partially converted to a GALS design while retaining legacy logic with traditional timing where appropriate. These advantages make the pausible bisynchronous FIFO 300 and 301 a good candidate to overcome the hurdles to a comprehensive GALS implementation.

Die gekennzeichnete Sequenz in 3A zeigt die Reihen an Schritten, die beim Schreiben eines Daten-Worts in den pausierbaren bisynchronen FIFO 300 einbezogen sind. In einem Beispiel ist der pausierbare bisynchrone FIFO 300 zunächst leer, und alle Zwei-Phasen-Inkrement und -Bestätigungs-Leitungen stehen zur Verwendung zur Verfügung. Bei einer zunehmenden Flanke des TX-Takts werden Daten in den Eintrag geschrieben, der durch die Schreib-Adresse (d. h. entsprechend dem Schreib-Zeiger) spezifiziert ist, und das Signal des gültigen Eingangs wird geltend gemacht (Kennzeichnung A). Alsbald die Daten in den Eintrag geschrieben wurden, stehen die Daten zum Lesen aus dem pausierbaren bisynchronen FIFO 300 zur Verfügung. Die Schreib-Zeiger-Logik 315 erhöht die Schreib-Zeiger für die TX-Domäne und schaltet eine der Zwei-Phasen-Schreib-Zeiger-Inkrement-Leitungen (Kennzeichnung B) um.The marked sequence in 3A Figure 12 shows the series of steps involved in writing a data word into the pausible bisynchronous FIFO 300 are involved. In one example, the pausible bis-synchronous FIFO is 300 initially empty, and all two-phase increment and acknowledge lines are available for use. On an increasing edge of the TX clock, data is written to the entry specified by the write address (ie corresponding to the write pointer) and the valid input signal asserted (flag A). As soon as the data has been written to the entry, the read data is from the pausible bisynchronous FIFO 300 to disposal. The write pointer logic 315 increments the write pointers for the TX domain and toggles one of the two-phase write pointer increment lines (labeled B).

Die Schreib-Zeiger-Inkrement-Leitung wird in die TX-Domäne umgeschaltet. Deswegen ist die Schreib-Zeiger-Inkrement-Leitung zu der RX-Domäne asynchron und sollte durch den RX pausierbaren Synchronizer 310 synchronisiert werden. In Abhängigkeit von der Phase, in der die Schreib-Zeiger-Inkrement-Umschaltung in der RX-Domäne ankommt, kann das Schreib-Zeiger-Inkrement sofort durch den Mutex 214 passieren, bis nach der nächsten RX Takt-Flanke verzögert werden oder (in seltenen Fällen) eine Metastabilität in dem Mutex 215 verursachen und für eine längere Zeit verzögert werden. Das Schreib-Zeiger-Inkrement wird jedoch eventuell in die RX-Domäne synchronisiert werden (Kennzeichnung C), nach der die Lese-Zeiger-Logik 320 die Annäherung des internen Schreib-Zeigers erhöhen kann und ein gültiges Signal an dem Ausgang des pausierbaren bisynchronen FIFO 300 geltend machen kann (Kennzeichnung D). The write pointer increment line is switched to the TX domain. Therefore, the write pointer increment line to the RX domain is asynchronous and should be paused by the RX Synchronizer 310 be synchronized. Depending on the phase in which the Write Pointer Increment switchover arrives in the RX domain, the Write Pointer increment may immediately pass through the Mutex 214 happen until after the next RX clock edge or (in rare cases) metastability in the mutex 215 cause and delay for a longer time. However, the write pointer increment may eventually be synchronized to the RX domain (labeled C), after which the read pointer logic 320 may increase the approximation of the internal write pointer and a valid signal at the output of the pausible bisynchronous FIFO 300 claim (mark D).

Wenn das gültige Signal geltend gemacht ist, können die Daten synchron aus dem Dual-Port-FIFO 325 in der RX-Domäne gelesen werden. Alsbald ein Lese-Vorgang auftritt, schaltet die RX-Zeiger-Logik 320 einen der Lese-Zeiger-Inkrement-Signale um, um die TX-Domäne zu informieren, dass ein Lese-Vorgang aufgetreten ist und dass der Lese-Zeiger aktualisiert worden ist (diese Reihen an Umschaltungen sind in 3A nicht gekennzeichnet). Aus der Perspektive der TX-Domäne jedoch, wenn das gültige Signal durch die Lese-Zeiger-Logik 320 geltend gemacht wurde, ist das Schreib-Zeiger-Inkrement immer noch im Anflug („inflight”), da ein entsprechendes Bestätigungs-Signal noch nicht von der RX-Domäne durch die Schreib-Zeiger-Logik 315 empfangen wurde. Dementsprechend schaltet die RX-Takt-Flanke nach der Synchronisierung der Schreibe-Zeiger-Aktualisierung die entsprechende Bestätigungs-Leitung um (Kennzeichnung E). Da das Umschalten der entsprechenden Bestätigungs-Leitung in der RX-Takt-Domäne auftritt, muss das Zeiger-Bestätigungs-Signal durch den TX pausierbaren Synchronizer 305 synchronisiert werden (Kennzeichnung F). Das synchronisierte Zeiger-Bestätigungs-Signal aktualisiert dann die TX Logik-Zustands-Maschine in der Schreib-Zeiger-Logik 315, was die Schreib-Zeiger-Inkrement-Leitung für eine zukünftige Benutzung freigibt (Kennzeichnung G).If the valid signal is asserted, the data can be synchronous from the dual port FIFO 325 in the RX domain. As soon as a read occurs, the RX pointer logic switches 320 one of the read pointer increment signals to inform the TX domain that a read operation has occurred and that the read pointer has been updated (these rows of switches are in FIG 3A not marked). From the perspective of the TX domain, however, if the valid signal is through the read pointer logic 320 has been asserted, the write pointer increment is still "inflight" because a corresponding acknowledge signal is not yet from the RX domain by the write pointer logic 315 was received. Accordingly, after synchronizing the write pointer update, the RX clock edge switches the corresponding acknowledge line (label E). Since the switching of the corresponding acknowledge line occurs in the RX clock domain, the pointer acknowledge signal must be enabled by the TX pausible synchronizer 305 be synchronized (marking F). The synchronized pointer acknowledge signal then updates the TX logic state machine in the write pointer logic 315 which releases the write pointer increment line for future use (tag G).

Wie zuvor erläutert, wird der pausierbare bisynchrone FIFO 300 in einer Ausführungsform modifiziert, um zwischen einer Takt-Domäne mit einer pausierbaren Taktgebung und einer Takt-Domäne mit einer traditionellen festgelegten Referenz, wie zum Beispiel einer PLL, zu koppeln. Insbesondere können in einer Ausführungsform die Zeiger-Inkrement-Signale, die durch die Lese-Zeiger-Logik 320 erzeugt wurden, unter Verwendung von mehrfachen Flipflops, die unter Verwendung des ersten Takt-Signals getaktet wurden, Brute-Force-synchronisiert werden, anstatt die (Lese-)Zeiger-Inkrement-Signale unter Verwendung eines zweiten RX pausierbaren Synchronizers 310 (nicht gezeigt) zu synchronisieren. Ähnlich kann das entsprechende (Lese-)Zeiger-Bestätigungs-Signal unter Verwendung von mehrfachen Flipflops, die unter Verwendung des zweiten Takt-Signals getaktet wurden, Brute-Force-synchronisiert werden, anstatt das (Lese-)Zeiger-Bestätigungs-Signal unter Verwendung eines zweiten TX pausierbaren Synchronizers 305 (nicht gezeigt) zu synchronisieren. In einer anderen Ausführungsform können die durch die Schreib-Zeiger-Logik 325 erzeugten Zeiger-Inkrement-Signale unter Verwendung multipler Flipflops, die unter Verwendung des zweiten Takt-Signals getaktet wurden, Brute-Force synchronisiert werden, anstatt die (Schreib-)Zeiger-Inkrement-Signale unter Verwendung des RX pausierbaren Synchronizers 310, wie in 3A gezeigt, zu synchronisieren. Ähnlich kann das entsprechende (Schreib-)Zeiger-Bestätigungs-Signal unter Verwendung von mehrfachen Flipflops, die unter Verwendung des ersten Takt-Signals getaktet wurden, Brute-Force-synchronisiert werden, anstatt das (Schreib-)Zeiger-Bestätigungs-Signal unter Verwendung des TX pausierbaren Synchronizers 305, wie in 3A gezeigt, zu synchronisieren.As previously explained, the pausible bis-synchronous FIFO becomes 300 in one embodiment, modified to couple between a clock domain with a pauseable clock and a clock domain with a traditional fixed reference, such as a PLL. In particular, in one embodiment, the pointer increment signals provided by the read pointer logic 320 using multiple flip-flops clocked using the first clock signal, brute-force synchronized rather than the (read) pointer increment signals using a second RX pausable synchronizer 310 (not shown) to synchronize. Similarly, the corresponding (read) pointer acknowledge signal may be brute force synchronized using multiple flip-flops clocked using the second clock signal, rather than using the (read) pointer acknowledge signal using a second TX pauseable synchronizer 305 (not shown) to synchronize. In another embodiment, the write pointer logic 325 generated pointer increment signals using multiple flip-flops clocked using the second clock signal are synchronized brute force rather than the (write) pointer increment signals using the RX pausable synchronizer 310 , as in 3A shown to sync. Similarly, the corresponding (write) pointer acknowledge signal can be brute force synchronized using multiple flip-flops clocked using the first clock signal, rather than using the (write) pointer acknowledge signal using of the TX pausible synchronizer 305 , as in 3A shown to sync.

3C veranschaulicht ein Verfahren 350 zum Aktualisieren des Lese-Zeigers und des Schreib-Zeigers des pausierbaren bisynchronen FIFO gemäß einer Ausführungsform. Obwohl das Verfahren 350 in dem Kontext des pausierbaren bisynchronen FIFO 300 beschrieben ist, kann das Verfahren 350 auch durch eine sonderangefertigte Schaltung oder durch eine Kombination einer oder mehreren sonderangefertigten Schaltungen, eines Software-Treibers und/oder eines Programms ausgeführt werden. Darüber hinaus werden Fachleute erkennen, dass ein jedes System, das das Verfahren 350 ausführt, in den Rahmen und den Geist der Ausführungsformen der vorliegenden Erfindung fällt. 3C illustrates a method 350 for updating the read pointer and the write pointer of the pausible bisynchronous FIFO according to one embodiment. Although the procedure 350 in the context of the pausible bisynchronous FIFO 300 described, the process can 350 also be performed by a custom circuit or by a combination of one or more custom-made circuits, a software driver and / or a program. In addition, professionals will recognize that any system that does the procedure 350 falls within the scope and spirit of the embodiments of the present invention.

In Schritt 302 werden die Daten synchron mit einem ersten Takt-Signal einer ersten Takt-Domäne in einen Eintrag eines Dual-Port-Speichers geschrieben. In einer Ausführungsform ist die erste Takt-Domäne eine TX Takt-Domäne. Die Daten werden synchron mit einem zweiten Takt-Signal einer zweiten Takt-Domäne aus dem Dual-Port-Speicher gelesen. In einer Ausführungsform ist sowohl das erste als auch das zweite Takt-Signal pausierbar. In einer anderen Ausführungsform ist entweder das erste Takt-Signal oder das zweite Takt-Signal pausierbar, und das andere Takt-Signal ist nicht pausierbar. Das erste Takt-Signal und das zweite Takt-Signal können bei derselben Frequenz oder bei verschiedenen Frequenzen funktionieren.In step 302 For example, the data is written into an entry of a dual-port memory synchronously with a first clock signal of a first clock domain. In one embodiment, the first clock domain is a TX clock domain. The data is read from the dual-port memory synchronously with a second clock signal of a second clock domain. In one embodiment, both the first and second clock signals are pauseable. In another embodiment, either the first clock signal or the second clock signal is pauseable, and the other clock signal is not pauseable. The first clock signal and the second clock signal may operate at the same frequency or at different frequencies.

In Schritt 312 wird ein Inkrement-Signal in der ersten Takt-Domäne erzeugt. In Schritt 330 bestimmt der pausierbare Takt-Synchronizer 210, ob das Inkrement-Signal in der Nähe einer Flanke eines zweiten Takt-Signals wechselt, und, wenn ja, dann bestimmt der pausierbare Takt-Synchronizer 210 in Schritt 335, ob das hinsichtlich der zweiten Takt-Domäne synchronisierte Inkrement-Signal metastabil ist. In einer Ausführungsform ist die zweite Takt-Domäne eine RX Takt-Domäne. Falls das hinsichtlich der zweiten Takt-Domäne synchronisierte Inkrement-Signal nicht metastabil ist, wird das Inkrement-Signal in Schritt 345 an die zweite Takt-Domäne als das synchronisierte Inkrement-Signal übertragen. Ansonsten, falls das hinsichtlich der zweiten Takt-Domäne synchronisierte Inkrement-Signal metastabil ist, wird eine nächste Flanke des zweiten Takt-Signals in Schritt 360 verzögert, bevor zum Schritt 335 zurückgekehrt wird. In step 312 An increment signal is generated in the first clock domain. In step 330 determines the pausible clock synchronizer 210 whether the increment signal is changing near an edge of a second clock signal, and if so, then the pausible clock synchronizer determines 210 in step 335 whether the incremental signal synchronized with respect to the second clock domain is metastable. In one embodiment, the second clock domain is an RX clock domain. If the incremental signal synchronized with respect to the second clock domain is not metastable, the increment signal in step 345 transmitted to the second clock domain as the synchronized increment signal. Otherwise, if the incremented clock signal synchronized with respect to the second clock domain is metastable, a next edge of the second clock signal will be in step 360 delayed before to step 335 is returned.

Falls der pausierbare Takt-Synchronizer 210 in Schritt 330 bestimmt, dass das Inkrement-Signal nicht in der Nähe einer Flanke eines zweiten Takt-Signals wechselt, wird das Inkrement-Signal in Schritt 355 als das synchronisierte Inkrement-Signal von der ersten Takt-Domäne an die zweite Takt-Domäne übertragen. In Schritt 365 wird ein Lese-Zeiger des Dual-Port-Speicher-Arrays in Erwiderung auf das Empfangen des Inkrement-Signals erhöht. In einer Ausführungsform wird ein Bestätigungs-Signal von der zweiten Takt-Domäne an die erste Takt-Domäne übertragen, um zu bestätigen, dass das Inkrement-Signal empfangen wurde. In einer Ausführungsform wird in der zweiten Takt-Domäne ein zweites Inkrement-Signal erzeugt, wenn die Daten synchron mit dem zweiten Takt-Signal der zweiten Takt-Domäne gelesen werden. Ein Bestätigungs-Signal kann von der ersten Takt-Domäne an die zweite Takt-Domäne übertragen werden, um zu bestätigen, dass das zweite Inkrement-Signal empfangen wurde.If the pausible clock synchronizer 210 in step 330 determines that the increment signal does not change in the vicinity of an edge of a second clock signal, the increment signal in step 355 as the synchronized increment signal from the first clock domain to the second clock domain. In step 365 For example, a read pointer of the dual-port memory array is incremented in response to receiving the increment signal. In one embodiment, an acknowledgment signal is transmitted from the second clock domain to the first clock domain to confirm that the increment signal has been received. In one embodiment, in the second clock domain, a second increment signal is generated when the data is read in synchronism with the second clock signal of the second clock domain. An acknowledgment signal may be transmitted from the first clock domain to the second clock domain to confirm that the second increment signal has been received.

In echten Systemen wird das Takt-Verteilungs-Netzwerk innerhalb der synchronen Insel einige Einfügungs-Verzögerung tins zwischen dem Erzeugen der Takt-Flanken und der Verbreitung der Takt-Flanken durch das Takt-Netzwerk zu den Register-Endpunkten haben. Die Einfügungs-Verzögerung verstellt die transparente Phase des Mutex, was zu einer Schaltungs-Störung führen kann, wie in Verbindung mit 5 beschrieben. Das Handhaben großer Einfügungs-Verzögerungen ist eine fundamentale Herausforderung pausierbarer Taktgebungs-Schemen. Eine bekannte Technik zum Erlauben größerer Einfügungs-Verzögerungen platziert alle Flipflops angrenzend an die Schnittstelle auf einem separaten Takt mit einem viel kleineren Takt-Baum. Diese Vorgehensweise kann jedoch vor Herausforderungen bei Standard-ASIC-Design-Tool-Flows stellen.In real systems, the clock distribution network within the synchronous island will have some insertion delay t in between generating the clock edges and propagating the clock edges through the clock network to the register endpoints. The insertion delay adjusts the transparent phase of the mutex, which may lead to a circuit disturbance, as associated with 5 described. Handling large insertion delays is a fundamental challenge of pausible timing schemes. One known technique for allowing larger insertion delays places all flip flops adjacent to the interface on a separate clock with a much smaller clock tree. However, this approach can pose challenges for standard ASIC design tool flows.

3D veranschaulicht einen anderen pausierbaren Takt-Synchronizer 370 gemäß einer anderen Ausführungsform. Der pausierbare Takt-Synchronizer 370 umfasst einen hinzugefügten Sperr-Latch 375 zwischen einem Latch 325 und einem Flipflop 380, um gegen Läufe zu schützen, die durch lange Einfügungs-Verzögerungen verursacht wurden. Der Sperr-Latch 375 schützt den getakteten Flipflop 280 bis sich der Takt von der Wurzel an durch den Takt-Baum verbreiten kann. 3D illustrates another pausible clock synchronizer 370 according to another embodiment. The pausible clock synchronizer 370 includes an added lock-latch 375 between a latch 325 and a flip-flop 380 to protect against runs caused by long insertion delays. The lock-latch 375 protects the clocked flip flop 280 until the clock can propagate from the root through the clock tree.

Ein Sperr-Latch 375 ist ein transparenter Hoch-Latch („high latch”), der durch den R2-Eingang aktiviert wird, so ist der Sperr-Latch 375 nur dann transparent, wenn der Mutex 215 nicht transparent ist. Der Sperr-Latch 375 erlaubt das Verbreiten der Anfragen durch den transparenten Mutex 215, bevor das Takt-Signal an den Blatt-Knoten ankommt, und verzögert dann die Anfrage an dem transparenten Mutex 215, bis die Takt-Flanke sicher an dem Flipflop-Takt-Eingang angekommen ist. Der Sperr-Latch 375 erhöht nicht die Latenz der Schnittstelle, da die Signale, die in dem Takt nicht laufen würden, immer noch auf die nächste zu synchronisierende Takt-Flanke warten müssten. Das Hinzufügen des Sperr-Latches 375 erhöht unwesentlich die Fläche und die Energie der Schaltung, erlaubt jedoch zusätzlich T/2 der Einfügungs-Verzögerung, wobei T die nominale Takt-Periode der synchronen Logik in einer Takt-Domäne ist.A lock-latch 375 is a transparent high-latch, which is activated by the R2 input, so is the lock-out latch 375 only transparent if the mutex 215 is not transparent. The lock-latch 375 allows the distribution of requests through the transparent mutex 215 before the clock signal arrives at the leaf node and then delays the request on the transparent mutex 215 until the clock edge has safely arrived at the flip-flop clock input. The lock-latch 375 does not increase the latency of the interface since the signals that would not run in the clock would still have to wait for the next clock edge to be synchronized. Adding the lock-out latch 375 increases marginally the area and energy of the circuit, but additionally allows T / 2 of the insertion delay, where T is the nominal clock period of the synchronous logic in a clock domain.

Die pausierbare Taktgebung integriert die Logik für asynchrone Grenzüberschreitungen in den Takt-Erzeugungs-Mechanismus für die gesamte synchrone Insel. Die Integration verhängt Beschränkungen für die Betriebs-Bedingungen eines jeden dieser Systeme. Die bisherige Arbeit hinsichtlich der pausierbaren Takte beschäftigt sich nicht vollständig mit diesen Beschränkungen. Wie hierin im Nachfolgenden beschrieben, wird eine eingehende Buchung der Fähigkeiten und Beschränkungen des pausierbaren Takt-Timings erläutert, das entscheidend für das Ausgestalten eines realistischen Systems ist. Es werden Ausdrucksformen für die durchschnittliche Latenz der pausierbaren Schnittstelle abgeleitet, sowie die Beschränkungen, die bei der Takt-Periode, bei der Einfügungs-Verzögerung und bei Draht-Verzögerung durch die synchrone Insel verhängt werden. In einer Ausführungsform werden die Effekte der Variation vernachlässigt und Schaltungs-Verzögerungen werden als feste Größen behandelt, wenn die Timing-Beschränkungen abgeleitet werden. Eine stochastische oder eine Worst-Case-Corner-Analyse kann verwendet werden, um die Robustheit des Timings sicherzustellen, und ein Post-Silizium-Tuning könnte die Effekte der Prozess-Variation in einer Ausführungsform lindern.The pauseable clocking integrates the asynchronous boundary crossing logic into the clock generator mechanism for the entire synchronous island. The integration imposes restrictions on the operating conditions of each of these systems. The previous work on the pauseable clocks is not fully concerned with these limitations. As described hereinafter, detailed accounting of the abilities and limitations of pausible clock timing that is critical to designing a realistic system will be discussed. Expressions are derived for the average latency of the pauseable interface, as well as the constraints imposed at the clock period, the insertion delay and the wire delay by the synchronous island. In one embodiment, the effects of the variation are neglected and circuit delays are treated as fixed quantities as the timing constraints are derived. Stochastic or worst-case corner analysis can be used to ensure the robustness of timing, and post-silicon tuning could mitigate the effects of process variation in one embodiment.

4A veranschaulicht Timing-Pfade des in 2B gezeigten pausierbaren Takt-Synchronizers 210 gemäß einer Ausführungsform. Die wichtigen Verzögerungen durch das pausierbare Takt-Netzwerk werden in 4A gezeigt. Die Tabelle I beschreibt jede der Timing-Variablen, die in der folgenden Analyse verwendet wurde. TABELLE I. TIMING-VARIABLEN Variable Beschreibung T Die nominale Takt-Periode des synchronen Blocks TL Die durchschnittliche Latenz eines Daten-Worts durch die Schnittstelle tins Die Einfügungs-Verzögerung des Takts für den synchronen Block tr2 Die Verzögerung von dem Ausgang des C-Elements zu dem Mutex-r2-Eingang tfb Die Verzögerung von dem Mutex-r2-Eingang durch den Mutex und um den Rückmeldungs-Pfad zu dem Mutex-r1-Eingang tg2 Die Verzögerung von dem Mutex-r1-Eingang durch den Mutex zu dem Ausgang des C-Elements tCL Die minimale Zeit, die zur Verfügung steht, um eine kombinatorische Arbeit hinsichtlich des synchronisierten Anfrage-Signals vor der nächsten Takt-Flanke auszuführen tm Die zugewiesene Zeit, um die Mutex-Metastabilität aufzulösen, die verwendet wird, um die Frequenz der Takt-Pausen zu reduzieren tw Die Draht-Verzögerung von der Grenze der synchronen Insel zu dem lokalen Takt-Generator 4A illustrates timing paths of the in 2 B shown pausierbare clock synchronizer 210 according to one embodiment. The important delays due to the pausible clock network are in 4A shown. Table I describes each of the timing variables used in the following analysis. TABLE I. TIMING VARIABLES variable description T The nominal clock period of the synchronous block T L The average latency of a data word through the interface t ins The insertion delay of the clock for the synchronous block t r2 The delay from the output of the C element to the Mutex r2 input t fb The delay from the mutex r2 input through the mutex and the feedback path to the mutex r1 input t g2 The delay from the mutex r1 input through the mutex to the output of the C element t CL The minimum amount of time available to perform combinatorial work on the synchronized request signal before the next clock edge t m The time allocated to resolve the mutex metastability used to reduce the frequency of the beat pauses t w The wire delay from the synchronous island boundary to the local clock generator

tr2 ist die Verzögerung von dem Ausgang des C-Elements zu dem R2-Eingang des Mutex 215. tfb ist die Verzögerung von dem r2-Eingang durch den Mutex 215 und um die Rückmeldungs-Schleife zu dem R1-Eingang. tg2 ist die Verzögerung von dem Mutex- 215 R1-Eingang zu dem Ausgang des Müller-C-Elements 205, umfassend eine Verzögerung durch den UND-Baum, wenn mehrfache Mutexe 215 zu der Timing-Information beitragen. Die Summe der drei Verzögerungen kann nicht die Verzögerung durch den Takt-Generator überschreiten, oder ansonsten wird der Takt häufig pausieren, was die Takt-Periode T über das Ziel für die synchrone Insel erhöht, wie in 4B gezeigt.t r2 is the delay from the output of the C element to the R2 input of the mutex 215 , t fb is the delay from the r2 input through the mutex 215 and the feedback loop to the R1 input. t g2 is the delay from the mutex 215 R1 input to the output of the Müller-C element 205 comprising a delay through the AND tree when multiple mutexes 215 contribute to the timing information. The sum of the three delays can not exceed the delay through the clock generator, or else the clock will often pause, increasing the clock period T over the destination for the synchronous island, as in FIG 4B shown.

4B veranschaulicht eine Takt-Perioden-Timing-Beschränkung des in 2B gezeigten pausierbaren Takt-Synchronizers 210 gemäß einer Ausführungsform. In dem schlimmsten Fall kommt eine Anfrage an, kurz bevor R2 hoch wird. Wenn die Summe der Verzögerungen durch die pausierbare Schaltung länger als die Hälfte der Takt-Periode T ist, wird die nächste Takt-Flanke verzögert, wie in 4B gezeigt. 4B illustrates a clock period timing limitation of the in 2 B shown pausierbare clock synchronizer 210 according to one embodiment. In the worst case, a request arrives shortly before R2 goes high. If the sum of the delays through the pausable circuit is longer than half the clock period T, the next clock edge is delayed, as in FIG 4B shown.

4C veranschaulicht eine andere Takt-Perioden-Timing-Beschränkung des in 2B gezeigten pausierbaren Takt-Synchronizers 210 gemäß einer Ausführungsform. Wenn die Summe der Verzögerungen durch die pausierbare Schaltung kürzer als die Hälfte der Takt-Periode T ist, erfolgt die Takt-Flanke rechtzeitig. 4C illustrates another clock period timing restriction of the in 2 B shown pausierbare clock synchronizer 210 according to one embodiment. If the sum of the delays through the pausable circuit is shorter than half the clock period T, the clock edge is timely.

Da die Takt-Generator-Verzögerung auf T/2 für eine gewünschte Takt-Periode T eingestellt ist, setzen drei Verzögerungen gemeinsam eine minimale Takt-Periode für den synchronen Block durch: T/2 ≥ tr2 + tfb + tg2 (1) Since the clock generator delay is set to T / 2 for a desired clock period T, three delays commonly set a minimum clock period for the synchronous block: T / 2 ≥ t r2 + t fb + t g2 (1)

Falls diese Takt-Perioden-Beschränkung überschritten wird, verwandelt sich der Timing-Einbruch in dem System in eine Grenze tm, die gegen den Effekt der Taktpausen schützt: tm = T/2 – (tr2 + tfb + tg2) (2) If this clock period limit is exceeded, the timing break in the system will change to a limit t m that protects against the effect of the clock pauses: t m = T / 2 - (t r 2 + t fb + t g2 ) (2)

Die Metastabilität des Mutex 215 kann als ein temporäres Ansteigen des tfb gesehen werden, das durch ein gleichzeitiges Umschalten der Eingänge R1 und R2 ausgelöst wird. Falls die Gleichung (1) erfüllt ist (d. h. wenn T/2 = tr2 + tfb + tg2), dann ist tm = 0, und jede Mutex-Metastabilität, die den Ausgang g2 des Mutex 215 verzögert, wird bewirken, dass der Takt pausiert wird. Falls tm > 0, kann etwas Metastabilität vor dem Auftreten einer Takt-Pause toleriert werden. In der Praxis ist die Mutex-Metastabilität in einer Ausführungsform ein sporadisches Ereignis, und lange Takt-Pausen sind rar. Deswegen kann eine abgewogene erhöhte tm zugunsten anderer kritischerer Timing-Parameter eine gute Strategie darstellen.The metastability of the mutex 215 can be seen as a temporary increase in t fb , which is triggered by a simultaneous switching of the inputs R1 and R2. If Equation (1) is satisfied (ie, if T / 2 = t r2 + t fb + t g2 ), then t m = 0, and any mutex metastability that is the output g2 of the mutex 215 delayed, will cause the clock to pause. If t m > 0, some metastability may be tolerated before the occurrence of a clock break. In practice, mutex metastability is one embodiment a sporadic event, and long intervals between pauses are rare. Therefore, it can be a good strategy, a weighed increased t m in favor of other more critical timing parameters.

In einer Ausführungsform hängt die niedrige Latenz des pausierbaren bisynchronen FIFO 300 von der Fähigkeit der RX-Zeiger-Logik ab, sofort auf eine Schreib-Zeiger-Aktualisierung durch ein Geltendmachen gültiger Daten zu antworten, bevor die nächste RX-Takt-Flanke ankommt. 4D veranschaulicht eine Setup-Timing-Beschränkung des in 2B gezeigten pausierbaren Takt-Synchronizers 210 gemäß einer Ausführungsform. In einer Ausführungsform ist die Setup-Timing-Beschränkung die Worst-Case-Setup-Zeit.In one embodiment, the low latency of the pausible bisynchronous FIFO depends 300 the ability of the RX pointer logic to immediately respond to a write pointer update by asserting valid data before the next RX clock edge arrives. 4D illustrates a setup timing constraint of the in 2 B shown pausierbare clock synchronizer 210 according to one embodiment. In one embodiment, the setup timing constraint is the worst case setup time.

Die zur Verfügung stehende Zeit, um die kombinatorische Arbeit innerhalb desselben Zyklus wie eine empfangene Anfrage zu beenden, ist tCL. In dem schlimmsten Fall für den Timing-Pfad bewirkt eine Metastabilität in dem Mutex 215 eine Takt-Pause, bevor sich die Metastabilität zugunsten von R1 auflöst. Wenn g1 umschaltet, wird eine Takt-Flanke erzeugt werden, alsbald dieses Signal um die Rückmeldungs-Schleife zu dem Takt-Generator verbreitet wird. Damit ist die Zeit tCL, die der Logik vor dieser Takt-Flanke zur Verfügung steht, nur tCL = tfb + tg2 (3) The time available to complete the combinatorial work within the same cycle as a received request is t CL . In the worst case for the timing path causes metastability in the mutex 215 one clock break before the metastability dissolves in favor of R1. When g1 toggles, a clock edge will be generated as soon as this signal is propagated around the feedback loop to the clock generator. Thus, the time t CL available to the logic before this clock edge is only t CL = t fb + t g2 (3)

Der Parameter tCL ist beschränkt durch die Komplexität der Zeiger-Logik; falls eine ausreichend lange Zeit für tCL nicht zugeteilt ist, sollte ein zusätzliches Register vor die Logik eingefügt werden, um die Kommunikation über Pipelines zu betreiben, was die Latenz der Schnittstelle um einen Zyklus erhöht. Falls tm > 0, handelt das Erhöhen der tfb, durch ein Hinzufügen der Verzögerung zu dem Rückmeldungs-Pfad den Überschuss tm aus, um die Zeit zu erhöhen, die für die kombinatorische Arbeit desselben Zyklus zur Verfügung steht.The parameter t CL is limited by the complexity of the pointer logic; if a sufficiently long time is not allocated for t CL , an additional register should be inserted in front of the logic to operate the communication over pipelines, increasing the latency of the interface by one cycle. If t m > 0, increasing the t fb , by adding the delay to the feedback path, negotiates the excess t m to increase the time available for the combinatorial work of the same cycle.

Um die durchschnittliche Latenz der Schnittstelle abzuleiten, muss die Phase betrachtet werden, in der das Anfrage-Signal ankommt. Falls ein Anfrage-Signal (z. B. R2) ankommt, während der Mutex 215 transparent ist, kann die Anfrage innerhalb desselben Zyklus bedient werden. Unter der Annahme, dass das vollständig asynchrone Anfrage-Signal mit gleicher Wahrscheinlichkeit in jeder Phase ankommt, ist die durchschnittliche Latenz solcher Anfragen 0,75T – tr2. Falls die Anfrage ankommt, während der Mutex 215 opak ist, kann die Anfrage bis zu dem nächsten Zyklus nicht bedient werden. Die durchschnittliche Latenz solcher Anfragen ist 1,25T – tr2. Falls die Arbeitsphase des Takts 50% beträgt, ergibt das Nehmen des Durchschnitts dieser zwei Ausdrücke die durchschnittliche Latenz tL der Schnittstelle als Ganzes: tL = T – tr2 (4) To derive the average latency of the interface, consider the phase in which the request signal arrives. If a request signal (eg R2) arrives while the mutex 215 is transparent, the request can be served within the same cycle. Assuming that the fully asynchronous request signal arrives with equal probability in each phase, the average latency of such requests is 0.75T-t r2 . If the request arrives during the mutex 215 is opaque, the request can not be serviced until the next cycle. The average latency of such requests is 1.25T - t r2 . If the working phase of the clock is 50%, taking the average of these two terms gives the average latency t L of the interface as a whole: t L = T - t r2 (4)

Eine steigende tr2 verringert die durchschnittliche Latenz der Schnittstelle, da sie die transparente Phase des Mutex 215 näher an die nächste Takt-Flanke verschiebt. Falls tm > 0, handelt das Erhöhen der tr2 durch ein Hinzufügen einer Verzögerung zu dem R2-Eingang des Mutex 215 den Überschuss tm aus, um die durchschnittliche Latenz durch die Schnittstelle zu verringern. Da tm auch für eine zusätzliche tCL ausgehandelt werden kann, bedeutet dies, dass es einen Ausgleich („trade-off”) zwischen dem Reduzieren der Latenz und dem Erhöhen der Zeit, die für die kombinatorische Arbeit in der Lese-Zeiger-Logik zur Verfügung steht, gibt.An increasing t r2 decreases the average latency of the interface, as it is the transparent phase of the mutex 215 moves closer to the next clock edge. If t m > 0, increasing the t r2 is by adding a delay to the R2 input of the mutex 215 the excess t m to reduce the average latency through the interface. Since t m can also be negotiated for an additional t CL , it means that there is a trade-off between reducing the latency and increasing the time required for combinatorial work in the read pointer logic is available.

In echten Systemen wird das Takt-Verteilungs-Netzwerk innerhalb der synchronen Insel etwas Einfügungs-Verzögerung tins zwischen der Erzeugung von den Takt-Flanken und deren Verbreiten durch das Takt-Netzwerk zu den Register-Endpunkten aufweisen. Die Einfügungs-Verzögerung verstellt die transparente Phase des Mutex 215, was zu einer Schaltungs-Störung führen kann, wie in 5 gezeigt. 5 veranschaulicht einen Effekt einer Einfügungs-Verzögerung auf den in 2B gezeigten pausierbaren Takt-Synchronizer gemäß einer Ausführungsform. Kleine Einfügungs-Verzögerungen können durch ein beabsichtigtes Erhöhen von tr2, um tins zu entsprechen, durch erneutes Anpassen der Phasen und durch ein Schützen gegen die Metastabilität kompensiert werden. Allerdings beschränkt die Takt-Perioden-Beschränkung aus (1) die Erhöhung von tr2. Ein Setzen von tr2 = tins liefert die Beschränkung hinsichtlich der Einfügungs-Verzögerung, die für eine gegebene Takt-Periode zugelassen ist: tins ≤ T/2 – tfb – tg2 (5) In real systems, the clock distribution network within the synchronous island will have some insertion delay t in between the generation of the clock edges and their propagation through the clock network to the register endpoints. The insertion delay adjusts the transparent phase of the mutex 215 , which can lead to a circuit malfunction, as in 5 shown. 5 illustrates an effect of an insertion delay on the in 2 B shown pausierbare clock synchronizer according to one embodiment. Small insertion delays can be compensated for by intentionally increasing t r2 to match t ins by re-adjusting the phases and protecting against metastability. However, the clock period restriction of (1) restricts the increase of t r2 . Setting t r2 = t ins provides the limitation on the insertion delay allowed for a given clock period: t in ≤ T / 2 - t fb - t g2 (5)

Wie zuvor erläutert, kann ein Sperr-Latch der gezeigten pausierbaren Synchronizer-Schaltung hinzugefügt werden, wie in 4B gezeigt, um gegen Läufe zu schützen, die durch große Einfügungs-Verzögerungen verursacht wurden. Das Hinzufügen von Latches erhöht die Fläche und die Energie der Schaltung marginal, erlaubt jedoch eine zusätzliche T/2 der Einfügungs-Verzögerung: tins ≤ T – tfb – tg2 (6) As previously discussed, a lock-out latch may be added to the paused synchronizer circuit shown, as in FIG 4B shown to protect against runs caused by large insertion delays. The addition of latches marginally increases the area and power of the circuit, but allows an additional T / 2 of the insertion delay: t ins ≤ T - t fb - t g2 (6)

Allerdings wird tCL durch die Verzögerung durch den transparenten Latch verringert, da die asynchrone Anfrage durch die synchrone Insel verbreitet werden muss, mit dem lokalen Takt-Generator, der wie in 6A zentral platziert ist. Dies fügt eine Draht-Verzögerung tw zu tr2 und tg2 hinzu, was die minimal erreichbare Zyklus-Zeit (aus (1)) erhöht und die maximal zulässige Einfügungs-Verzögerung (aus (5)) verringert.However, t CL is reduced by the delay through the transparent latch, since the asynchronous request must be propagated through the synchronous island, with the local clock generator as in 6A is placed centrally. This adds a wire delay t w to t r2 and t g2 , which increases the minimum achievable cycle time (from (1)) and reduces the maximum allowable insertion delay (from (5)).

6A veranschaulicht einen Chip-Grundriss 600 gemäß einer Ausführungsform, der eine physikalische Platzierung eines pausierbaren Taktgebungs-Systems zeigt. Der physikalische Ort der Logik innerhalb des pausierbaren Takt-Synchronizers 210 und/oder 370, der jeder synchronen Insel entspricht, bestimmt die Draht-Verzögerungen, die in dem pausierbaren Taktgebungs-System durch die Draht-Verzögerung anfallen, die entstehen, um eine jede synchrone Insel zu durchlaufen. In dem Chip-Grundriss 600 ist die Synchronizer-Schaltung (d. h. Mutex 215, XOR-Gate, Latch(e) und Flipflop) in der Nähe der Grenze der synchronen Insel platziert, und der Teil des Takt-Generators (d. h. des Müller-C-Elements 205 und der kritischen Pfad-Verzögerungs-Leitung) der pausierbaren Takt-Synchronizer 210 und/oder 370 ist in der Nähe des Zentrums des Chips platziert. 6A illustrates a chip floor plan 600 according to an embodiment showing a physical placement of a pauseable clocking system. The physical location of the logic within the pausible clock synchronizer 210 and or 370 , which corresponds to each synchronous island, determines the wire delays incurred in the pausable clocking system by the wire delay incurred to traverse each synchronous island. In the chip floor plan 600 is the synchronizer circuit (ie mutex 215 , XOR gate, latch (e) and flip flop) placed near the synchronous island boundary, and the part of the clock generator (ie, the Müller C element 205 and the critical path delay line) of the pausible clock synchronizer 210 and or 370 is placed near the center of the chip.

6B veranschaulicht einen anderen Chip-Grundriss 620 gemäß einer Ausführungsform, der eine physikalische Platzierung eines pausierbaren Taktgebungs-Systems zeigt. In dem Chip-Grundriss 620 ist die Synchronizer-Schaltung (d. h. Mutex 215, XOR-Gate, Latch(e) und Flipflop) in der Nähe des Zentrums des Chips platziert, und der Teil des Takt-Generators (d. h. das Müller-C-Element 205 und die kritische Pfad-Verzögerungs-Leitung) der pausierbaren Takt-Synchronizer 210 und/oder 370 ist auch in der Nähe des Zentrums des Chips platziert. Das Platzieren der Synchronizer-Schaltung in der Nähe des Teils des Takt-Generators fügt tw der Latenz des Systems hinzu, beeinflusst jedoch nicht die Zeit des Zyklus oder die Einfügungs-Verzögerungs-Beschränkungen. tw kann für die Chip-Grundrisse 600 und/oder 620 unter Verwendung von höheren Metall-Schichten und dedizierten Routing-Kanälen, um diese kritischen Signale zu übertragen, reduziert werden. Selbst mit diesen Betrachtungen wird tw für die meisten Systeme wahrscheinlich eine wesentliche Fraktion der Takt-Periode sein und wird deswegen einen bemerkbaren Einfluss auf die System-Leistung haben. 6B illustrates another chip layout 620 according to an embodiment showing a physical placement of a pauseable clocking system. In the chip floor plan 620 is the synchronizer circuit (ie mutex 215 , XOR gate, latch (e) and flip-flop) placed near the center of the chip, and the part of the clock generator (ie, the Müller-C element 205 and the critical path delay line) of the pausible clock synchronizer 210 and or 370 is also placed near the center of the chip. Placing the synchronizer circuit near the portion of the clock generator adds t w to the latency of the system, but does not affect the time of the cycle or the insertion delay constraints. t w can for the chip floor plans 600 and or 620 using higher metal layers and dedicated routing channels to transmit these critical signals can be reduced. Even with these considerations, t w will probably be a significant fraction of the clock period for most systems and will therefore have a noticeable impact on system performance.

Der pausierbare bisynchrone FIFO 300 stellt eine asynchrone Schnittstelle niedriger Latenz zur Verfügung, die gut mit Standard-Design-Tools zusammenarbeitet. Der pausierbare bisynchrone FIFO 300 kombiniert pausierbare Taktgebungs-Techniken mit synchronen Standard-Zwei-Port-FIFOs, die sich einfach in die Standard-Tool-Flows einfügen. In einer Ausführungsform erreicht der pausierbare bisynchrone FIFO 300 im Durchschnitt 1,34 Zyklen der Latenz, während eine minimale Energie und ein minimaler Flächen-Overhead über eine synchrone Schnittstelle entsteht. Das Fluss-Steuerungs-Schema des pausierbaren bisynchronen FIFO 300 für die Lese- und Schreib-Zeiger verwendet Zwei-Phasen-Inkrement- und Bestätigungs-Signale, um Daten durch eine asynchrone Schnittstelle zu übertragen.The pausible bis-synchronous FIFO 300 provides a low latency asynchronous interface that works well with standard design tools. The pausible bis-synchronous FIFO 300 Combines pausing clocking techniques with standard two-port synchronous FIFOs that easily integrate with standard tool flows. In one embodiment, the pausible bisynchronous FIFO reaches 300 an average of 1.34 cycles of latency, while providing minimal energy and minimal area overhead over a synchronous interface. The flow control scheme of the pausible bisynchronous FIFO 300 for the read and write pointers uses two-phase increment and acknowledge signals to transmit data through an asynchronous interface.

Die Timing-Beschränkungen, die durch pausierbare Taktgebungs-Systeme anfallen, umfassen das Betrachten der Verzögerung, die notwendig ist, damit die Signale die Distanz zwischen der Schnittstelle und der Takt-Generator-Schaltung durchqueren. Eine sorgfältige Analyse der Timing-Beschränkungen, die durch das System anfallen, erlaubt eine vollständige Integration mit Standard-ASIC-Design-Tool-Flows. Deswegen ist der pausierbare bisynchrone FIFO 300 eine Schlüssel-Basistechnologie für feinkörnige GALS-Systeme, die viele der Herausforderungen eines modernen SoC-Designs mildern.The timing constraints imposed by pausable timing systems include looking at the delay necessary for the signals to traverse the distance between the interface and the clock generator circuit. Careful analysis of the timing constraints imposed by the system allows full integration with standard ASIC design tool flows. That is why the pausible bisynchronous FIFO 300 a key base technology for fine grained GALS systems that mitigates many of the challenges of a modern SoC design.

7 veranschaulicht ein beispielhaftes System 700, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. Wie gezeigt, wird ein System 700 bereitgestellt, das zumindest einen zentralen Prozessor 701 umfasst, der mit einem Kommunikations-Bus 702 verbunden ist. Der Kommunikations-Bus 702 kann unter Verwendung eines jeden geeigneten Protokolls implementiert werden, wie zum Beispiel eines PCI (Peripheral Component Interconnect), eines PCI-Express, eines AGP (Accelerated Graphics Port), eines HyperTransport oder eines anderen Bus- oder Punkt-zu-Punkt-Kommunikations-Protokolls (Protokolle). Das System 700 umfasst auch einen Hauptspeicher 704. Die Steuerungs-Logik (Software) und die Daten werden in dem Hauptspeicher 704 gespeichert, der in der Form eines Arbeitsspeichers („Random Access Memory” (RAM)) vorliegen kann. 7 illustrates an exemplary system 700 in which the various architecture and / or functionality of the various previous embodiments can be implemented. As shown, a system 700 provided, the at least one central processor 701 includes that with a communication bus 702 connected is. The communication bus 702 can be implemented using any suitable protocol, such as a Peripheral Component Interconnect (PCI), a PCI Express, an Accelerated Graphics Port (AGP), a HyperTransport, or any other bus or point-to-point communication protocol. Protocols (protocols). The system 700 also includes a main memory 704 , The control logic (software) and data are stored in main memory 704 stored in the form of a Random Access Memory (RAM).

Das System 700 umfasst auch Eingabe-Vorrichtungen 712, einen Graphik-Prozessor 706 und eine Anzeige 708, d. h. eine konventionelle CRT („Cathode Ray Tube”, Kathodenstrahlröhre), eine LCD („Liquid Crystal Display”, Flüssigkristallanzeige), eine LED („Light Emitting Diode”, Leuchtdiode), eine Plasma-Anzeige oder ähnliches. In einer Ausführungsform ist eine Verzerrungs-Funktion für die Anzeige 708 definiert. Eine Benutzer-Eingabe kann von den Eingabe-Vorrichtungen 712 empfangen werden, z. B. von einer Tastatur, einer Maus, einem Touchpad, einem Mikrophon oder ähnlichem. In einer Ausführungsform kann der Grafik-Prozessor 706 eine Vielzahl an Abschattungs-Modulen („shader modules”), ein Rasterungs-Modul usw. umfassen. Jedes der vorgenannten Module kann sogar auf einer einzelnen Halbleiter-Plattform untergebracht sein, um eine Grafik-Prozessor-Einheit („Graphics Processing Unit” (GPU)) auszubilden.The system 700 also includes input devices 712 , a graphics processor 706 and an ad 708 that is, a conventional Cathode Ray Tube (CRT), a Liquid Crystal Display (LCD), a Light Emitting Diode (LED), a plasma display, or the like. In one embodiment, a distortion function is for the display 708 Are defined. User input may be from the input devices 712 be received, for. From a keyboard, a mouse, a touchpad, a microphone or the like. In one embodiment, the graphics processor 706 a plurality of shader modules, a screening module, etc. Each of the aforementioned modules may even be housed on a single semiconductor platform to form a Graphics Processing Unit ("GPU").

In der vorliegenden Beschreibung kann sich eine einzelne Halbleiter-Plattform auf eine einzige einheitliche Halbleiter-basierte integrierte Schaltung oder auf einen einzigen einheitlichen Halbleiter-basierten integrierten Chip beziehen. Es sollte angemerkt werden, dass sich der Betriff der einzelnen Haltleiter-Plattform auch auf Multi-Chip-Module mit erhöhter Konnektivität beziehen kann, die einen On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber dem Verwenden einer herkömmlichen Hauptprozessor-Einheit („central processing unit” (CPU)) und einer herkömmlichen Bus-Implementierung vornehmen. Selbstverständlich können die verschiedenen Module separat oder in verschiedenen Kombinationen der Halbleiter-Plattformen platziert sein, je nach Wünschen des Benutzers.In the present specification, a single semiconductor platform may refer to a single unitary semiconductor-based integrated circuit or to a single unitary semiconductor-based integrated chip. It should be noted that the subject matter of the single semiconductor platform may also refer to multi-chip modules with increased connectivity that simulate on-chip operation and significant improvements over using a conventional main processor unit unit "(CPU)) and a conventional bus implementation. Of course, the various modules may be placed separately or in different combinations of the semiconductor platforms, as desired by the user.

Das System 700 kann auch einen Sekundär-Speicher 710 umfassen. Der Sekundär-Speicher 710 umfasst, zum Beispiel, ein Festplattenlaufwerk und/oder einen Wechseldatenträger, die ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein CD-Laufwerk, ein DVD-Laufwerk, eine Aufzeichnungsvorrichtung, einen Universal Serial Bus (USB) Flash-Speicher repräsentieren. Der Wechseldatenträger liest aus einem/schreibt in einen Wechselspeicher auf eine gut bekannte Weise. Computer-Programme oder Computer-Steuerungs-Logik-Algorithmen können in den Hauptspeicher 704 und/oder in den Sekundär-Speicher 710 gespeichert werden. Solche Computer-Programme, wenn ausgeführt, ermöglichen, dass das System 700 verschiedene Funktionen ausführt. Der Hauptspeicher 704, der Speicher 710 und/oder ein jeder anderer Speicher sind mögliche Beispiele eines Computer-lesbaren Mediums.The system 700 can also have a secondary memory 710 include. The secondary storage 710 includes, for example, a hard disk drive and / or a removable disk that represent a floppy disk drive, a magnetic tape drive, a CD drive, a DVD drive, a recording device, a Universal Serial Bus (USB) flash memory. The removable disk reads / writes to a removable storage in a well known manner. Computer programs or computer control logic algorithms can be stored in main memory 704 and / or in the secondary memory 710 get saved. Such computer programs, when executed, allow the system 700 performs various functions. The main memory 704 , the memory 710 and / or any other memory are possible examples of a computer-readable medium.

In einer Ausführungsform kann die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren implementiert werden in dem Kontext des zentralen Prozessors 701, des Grafik-Prozessors 706, einer integrierten Schaltung (nicht gezeigt), die zumindest zum Teil die Fähigkeiten des zentralen Prozessors 701 und des Grafik-Prozessors 706 aufweist, eines Chipsatzes (d. h. einer Gruppe von integrierten Schaltungen, die ausgestaltet sind, als eine Einheit zum Ausführen entsprechender Funktionen usw. zu arbeiten und zu funktionieren) und/oder einer dafür eingerichteten integrierten Schaltung.In one embodiment, the architecture and / or functionality of the various previous figures may be implemented in the context of the central processor 701 , the graphics processor 706 , an integrated circuit (not shown), at least in part the capabilities of the central processor 701 and the graphics processor 706 a chip set (ie, a group of integrated circuits configured to operate and function as a unit for performing respective functions, etc.) and / or an integrated circuit arranged therefor.

Die Architektur und/oder die Funktionalität der verschiedenen vorherigen Figuren kann implementiert werden auch noch im Kontext eines allgemeinen Computer-Systems, eines Leiterplatten-Systems, eines Spiel-Konsolen-Systems, das zu Unterhaltungszwecken eingerichtet ist, eines Anwendungs-spezifischen Systems und/oder eines jeden anderen gewünschten Systems. Das System 700 kann vorliegen zum Beispiel in Form eines Desktop-Computers, eines Laptops, eines Servers, einer Workstation, von Spiel-Konsolen, eines eingebetteten Systems und/oder eines anderen Typs der Logik. Das System 700 kann noch in Form verschiedener anderer Vorrichtungen vorliegen, umfassend, aber nicht beschränkt auf eine Vorrichtung eines persönlichen digitalen Assistenten („Personal Digital Assistant” (PDA)), ein mobiles Telefon, einen Fernseher usw.The architecture and / or functionality of the various previous figures may also be implemented in the context of a general computer system, a printed circuit board system, a game console system set up for entertainment, an application-specific system, and / or any other desired system. The system 700 may be in the form of, for example, a desktop computer, a laptop, a server, a workstation, game consoles, an embedded system, and / or another type of logic. The system 700 may still be in the form of various other devices, including, but not limited to, a personal digital assistant (PDA) device, a mobile phone, a television, etc.

Des Weiteren, auch wenn nicht gezeigt, kann das System 700 zu Kommunikations-Zwecken gekoppelt sein an ein Netzwerk (z. B. ein Telekommunikations-Netzwerk, ein lokales Netzwerk („Local Area Network” (LAN)), ein drahtloses Netzwerk, ein großräumiges Netzwerk („Wide Area Network” (WAN)) wie z. B. ein Internet, ein Peer-to-Peer-Netzwerk, ein Kabel-Netzwerk oder ähnliches).Furthermore, even if not shown, the system can 700 coupled to a network (e.g., a telecommunications network, a Local Area Network (LAN)), a wireless network, a Wide Area Network (WAN) for communication purposes such as an Internet, a peer-to-peer network, a cable network or the like).

Während verschiedene Ausführungsformen oben beschrieben worden sind, sollte zu verstehen sein, dass diese lediglich als beispielhaft und nicht als beschränkend präsentiert worden sind. Daher sollten die Weite und der Rahmen einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen beschränkt werden, sondern sollten nur gemäß der nachfolgenden Ansprüche und deren Äquivalente definiert sein.While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Therefore, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims (20)

Verfahren, das aufweist: Schreiben von Daten synchron mit einem ersten Takt-Signal einer ersten Takt-Domäne in einen Eintrag eines Dual-Port-Speicher-Arrays; Erzeugen eines Inkrement-Signals in der ersten Takt-Domäne; Bestimmen, dass das Inkrement-Signal in der Nähe einer Flanke eines zweiten Takt-Signals wechselt, wobei das zweite Takt-Signal ein pausierbares Takt-Signal ist; Verzögern einer nächsten Flanke des zweiten Takt-Signals der zweiten Takt-Domäne; und Übertragen des Inkrement-Signals an die zweite Takt-Domäne.A method comprising: writing data in synchronization with a first clock signal of a first clock domain into an entry of a dual port memory array; Generating an increment signal in the first clock domain; Determining that the increment signal changes in the vicinity of an edge of a second clock signal, the second clock signal being a pausible clock signal; Delaying a next edge of the second clock signal of the second clock domain; and Transmitting the increment signal to the second clock domain. Verfahren nach Anspruch 1, wobei die nächste Flanke des zweiten Takt-Signals verzögert wird, bis die Metastabilität des Inkrement-Signals aufgelöst ist.The method of claim 1, wherein the next edge of the second clock signal is delayed until the metastability of the increment signal is resolved. Verfahren nach Anspruch 1, das ferner aufweist: Empfangen des Inkrement-Signals in der zweiten Takt-Domäne; und Erhöhen eines Werts eines angenäherten Schreib-Zeigers.The method of claim 1, further comprising: Receiving the increment signal in the second clock domain; and Increase a value of an approximate write pointer. Verfahren nach Anspruch 3, das ferner aufweist: Bestimmen, ob das Dual-Port-Speicher-Array voll ist, durch ein Vergleichen des Werts des angenäherten Schreib-Zeigers mit einem Wert eines Lese-Speichers.The method of claim 3, further comprising: determining whether the dual port memory array is full by comparing the value of the approximated write pointer with a value of a read memory. Verfahren nach Anspruch 3, das ferner in Erwiderung auf ein Empfangen des Inkrement-Signals in der zweiten Domäne aufweist: Erzeugen eines Bestätigungs-Signals in der zweiten Takt-Domäne; und Übertragen des Bestätigungs-Signals an die erste Takt-Domäne.The method of claim 3, further comprising in response to receiving the increment signal in the second domain: Generating an acknowledgment signal in the second clock domain; and Transmitting the acknowledgment signal to the first clock domain. Verfahren nach Anspruch 5, das, bevor das Bestätigungs-Signal in der ersten Takt-Domäne empfangen wird, ferner aufweist: Schreiben von zweiten Daten synchron mit dem ersten Takt-Signal der ersten Takt-Domäne in einen zweiten Eintrag des Dual-Port-Speicher-Arrays; Erzeugen eines zweiten Inkrement-Signals in der ersten Takt-Domäne; und Übertragen des zweiten Inkrement-Signals an die zweite Takt-Domäne.The method of claim 5, further comprising, before the acknowledgment signal is received in the first clock domain: Writing second data in synchronism with the first clock signal of the first clock domain into a second entry of the dual port memory array; Generating a second increment signal in the first clock domain; and Transmitting the second increment signal to the second clock domain. Verfahren nach Anspruch 1, das in Erwiderung auf ein Empfangen des Inkrement-Signals in der zweiten Domäne ferner aufweist: Erzeugen eines Bestätigungs-Signals in der zweiten Takt-Domäne; Bestimmen, dass das Bestätigungs-Signal in der Nähe einer Flanke des ersten Takt-Signals wechselt; Verzögern einer nächsten Flanke des ersten Takt-Signals der ersten Takt-Domäne; und Übertragen des Bestätigungs-Signals an die erste Takt-Domäne.The method of claim 1, further comprising, in response to receiving the increment signal in the second domain: Generating an acknowledgment signal in the second clock domain; Determining that the acknowledgment signal changes in the vicinity of an edge of the first clock signal; Delaying a next edge of the first clock signal of the first clock domain; and Transmitting the acknowledgment signal to the first clock domain. Verfahren nach Anspruch 1, das in Erwiderung auf ein Empfangen des Inkrement-Signals in der zweiten Domäne ferner aufweist: Erzeugen eines Bestätigungs-Signals in der zweiten Takt-Domäne; Bestimmen, dass das Bestätigungs-Signal wechselt, während das erste Takt-Signal hoch ist; und Übertragen des Bestätigungs-Signals an die erste Takt-Domäne.The method of claim 1, further comprising, in response to receiving the increment signal in the second domain: Generating an acknowledgment signal in the second clock domain; Determining that the acknowledgment signal changes while the first clock signal is high; and Transmitting the acknowledgment signal to the first clock domain. Verfahren nach Anspruch 1, das in Erwiderung auf ein Empfangen des Inkrement-Signals in der zweiten Domäne ferner aufweist: Erzeugen eines Bestätigungs-Signals in der zweiten Takt-Domäne; Bestimmen, dass das Bestätigungs-Signal wechselt, während das erste Takt-Signal niedrig ist; und Übertragen des Bestätigungs-Signals an die erste Takt-Domäne nach einer nächsten Flanke des ersten Takt-Signals.The method of claim 1, further comprising, in response to receiving the increment signal in the second domain: Generating an acknowledgment signal in the second clock domain; Determining that the acknowledgment signal changes while the first clock signal is low; and Transmitting the acknowledgment signal to the first clock domain after a next edge of the first clock signal. Verfahren nach Anspruch 1, das ferner aufweist: Schreiben von zweiten Daten synchron mit dem ersten Takt-Signal der ersten Takt-Domäne an einen zweiten Eintrag des Dual-Port-Speicher-Arrays; Erzeugen eines zweiten Inkrement-Signals in der ersten Takt-Domäne; Bestimmen, dass das zweite Inkrement-Signal wechselt, während das zweite Takt-Signal hoch ist; und Übertragen des zweiten Inkrement-Signals an die zweite Takt-Domäne.The method of claim 1, further comprising: Writing second data in synchronism with the first clock signal of the first clock domain to a second entry of the dual port memory array; Generating a second increment signal in the first clock domain; Determining that the second increment signal changes while the second clock signal is high; and Transmitting the second increment signal to the second clock domain. Verfahren nach Anspruch 1, das ferner aufweist: Schreiben von zweiten Daten synchron mit dem ersten Takt-Signal der ersten Takt-Domäne in einen zweiten Eintrag des Dual-Port-Speicher-Arrays; Erzeugen eines zweiten Inkrement-Signals in der ersten Takt-Domäne; Bestimmen, dass das zweite Inkrement-Signal wechselt, während das zweite Takt-Signal niedrig ist; und Übertragen des zweiten Inkrement-Signals an die zweite Takt-Domäne nach einer nächsten Flanke des zweiten Takt-Signals.The method of claim 1, further comprising: Writing second data in synchronism with the first clock signal of the first clock domain into a second entry of the dual port memory array; Generating a second increment signal in the first clock domain; Determining that the second increment signal changes while the second clock signal is low; and Transmitting the second increment signal to the second clock domain after a next edge of the second clock signal. Verfahren nach Anspruch 1, das ferner aufweist: Lesen der Daten synchron mit dem zweiten Takt-Signal der zweiten Takt-Domäne aus dem Eintrag des Dual-Port-Speicher-Arrays; Erzeugen eines zweiten Inkrement-Signals in der zweiten Takt-Domäne; und Übertragen des zweiten Inkrement-Signals an die erste Takt-Domäne.The method of claim 1, further comprising: Reading the data in synchronism with the second clock signal of the second clock domain from the entry of the dual port memory array; Generating a second increment signal in the second clock domain; and transmitting the second increment signal to the first clock domain. Verfahren nach Anspruch 1, das ferner ein Erhöhen eines Schreib-Zeigers in der ersten Takt-Domäne aufweist.The method of claim 1, further comprising increasing a write pointer in the first clock domain. Verfahren nach Anspruch 1, wobei das erste Inkrement-Signal an die zweite Takt-Domäne durch einen Latch, der an ein Flipflop gekoppelt ist, aufweist.The method of claim 1, wherein the first increment signal is to the second clock domain by a latch coupled to a flip-flop. Verfahren nach Anspruch 14, wobei ein zweiter Latch zwischen dem Latch und dem Flipflop gekoppelt ist.The method of claim 14, wherein a second latch is coupled between the latch and the flip-flop. Verfahren nach Anspruch 1, wobei eine Schaltung der Elemente des wechselseitigen Ausschlusses konfiguriert ist, zu bestimmen, ob das Inkrement-Signal in der Nähe einer Flanke des zweiten Takt-Signals wechselt.The method of claim 1, wherein a circuit of the elements of mutual exclusion is configured to determine whether the increment signal changes in the vicinity of an edge of the second clock signal. Verfahren nach Anspruch 1, wobei das erste Takt-Signal ein pausierbares Takt-Signal ist.The method of claim 1, wherein the first clock signal is a pausible clock signal. Verfahren nach Anspruch 1, wobei das erste Takt-Signal kein pausierbares Takt-Signal ist.The method of claim 1, wherein the first clock signal is not a pausible clock signal. System, das aufweist: einen pausierbaren bisynchronen First-In First-Out (FIFO) Puffer, der aufweist: einen Dual-Port-FIFO, der ein Dual-Port-Speicher-Array aufweist; eine Scheib-Zeiger-Logik, die an den Dual-Port gekoppelt ist, konfiguriert zum: Schreiben von Daten synchron mit einem ersten Takt-Signal einer ersten Takt-Domäne in einen Eintrag eines Dual-Port-Speicher-Arrays; und Erzeugen eines Inkrement-Signals in der ersten Takt-Domäne; eine pausierbare Takt-Synchronizer-Schaltung, die an die Schreib-Zeiger-Logik gekoppelt ist, und konfiguriert ist zum: Verzögern einer nächsten Flanke eines zweiten Takt-Signals einer zweiten Takt-Domäne, wenn das Inkrement-Signal in der Nähe einer Flanke des zweiten pausierbaren Takt-Signals der zweiten Takt-Domäne wechselt, wobei das zweite Takt-Signal ein pausierbares Takt-Signal ist; und Übertragen des Inkrement-Signals an die zweite Takt-Domäne.System comprising: a pausible bis-synchronous First-In First-Out (FIFO) buffer comprising: a dual port FIFO having a dual port memory array; a Scheib pointer logic coupled to the dual port configured to: Writing data in synchronization with a first clock signal of a first clock domain into an entry of a dual port memory array; and Generating an increment signal in the first clock domain; a pausible clock synchronizer circuit coupled to the write pointer logic and configured to: Delaying a next edge of a second clock signal of a second clock domain when the increment signal changes in the vicinity of an edge of the second pausible clock signal of the second clock domain, the second clock signal being a pausible clock signal ; and Transmitting the increment signal to the second clock domain. System nach Anspruch 19, wobei die pausierbare Takt-Synchronizer-Schaltung ferner konfiguriert ist, eine nächste Flanke des zweiten Takt-Signals zu verzögern, bis eine Metastabilität des Inkrement-Signals aufgelöst ist.The system of claim 19, wherein the pausible clock synchronizer circuit is further configured to delay a next edge of the second clock signal until metastability of the increment signal is resolved.
DE102015120321.9A 2014-11-24 2015-11-24 Pausible bisynchronous FIFO Pending DE102015120321A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462083845P 2014-11-24 2014-11-24
US62/083,845 2014-11-24
US14/948,175 2015-11-20
US14/948,175 US9672008B2 (en) 2014-11-24 2015-11-20 Pausible bisynchronous FIFO

Publications (1)

Publication Number Publication Date
DE102015120321A1 true DE102015120321A1 (en) 2016-06-02

Family

ID=55968230

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015120321.9A Pending DE102015120321A1 (en) 2014-11-24 2015-11-24 Pausible bisynchronous FIFO

Country Status (1)

Country Link
DE (1) DE102015120321A1 (en)

Similar Documents

Publication Publication Date Title
DE102013224636B4 (en) Ground-referenced-single-end-signaling-connected-graphics-processing-unit-multi-chip module
TWI543535B (en) Scan flip-flop and associated method
EP1565803B1 (en) Clock synchronization circuit
US20120025870A1 (en) Method and apparatus for voltage level shifting with concurrent synchronization
US8937492B1 (en) Systems and methods for transferring a signal from a first clock domain to a second clock domain
US9672008B2 (en) Pausible bisynchronous FIFO
DE102013114390B4 (en) Data synchronization across asynchronous boundaries using selectable synchronization units to minimize latency
DE112021002267T5 (en) SYSTEM AND METHOD FOR SYNCHRONIZING NODES IN A NETWORK DEVICE
DE102013114341B4 (en) A system, method and computer program product for automatic two-phase clocking
Höppner et al. An energy efficient multi-Gbit/s NoC transceiver architecture with combined AC/DC drivers and stoppable clocking in 65 nm and 28 nm CMOS
DE102007053128B3 (en) Electronic device comprises clock change over switch for switching between two clock pulses, so that one of clock pulse is made available as output signal
US6690203B2 (en) Method and apparatus for a failure-free synchronizer
DE102013222369A1 (en) A matrix phase detector
US6711089B2 (en) Method and apparatus for performing signal synchronization
DE102016115922A1 (en) Semiconductor circuit
DE19957613B4 (en) Synchronization circuit for converting an asynchronous pulse signal into a synchronous pulse signal
DE112019000658T5 (en) PROGRAMMABLE CLOCK DATA RECOVERY (CDR) SYSTEM
DE102018102292A1 (en) Method and apparatus for automatic implementation of compensating reset for re-timed circuits
DE102015120321A1 (en) Pausible bisynchronous FIFO
DE102018124375A1 (en) OPERATING METHOD OF A SIGNAL RECEIVER, PULSE WIDTH CONTROL AND ELECTRONIC DEVICE WITH THE SAME
JPH04227576A (en) Method for providing synchronous operation of sequence logic circuit and digital logic circuit
EP1913457B1 (en) Gals circuit and method for the operation thereof
Huemer et al. Timing domain crossing using Muller pipelines
US11119530B1 (en) Electronic device having relaxed timing constraints for management accesses
US20170212861A1 (en) Clock tree implementation method, system-on-chip and computer storage medium

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE