DE-102015120321-B4 - Pausierbarer bisynchroner FIFO
Abstract
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, wobei die nächste Flanke des zweiten Takt-Signals verzögert wird, bis die Metastabilität des Inkrement-Signals aufgelöst ist; und Übertragen des Inkrement-Signals an die zweite Takt-Domäne.
Inventors
- Benjamin Andrew Keller
- Matthew Rudolph Fojtik
- Brucek Kurdo Khailany
Assignees
- NVIDIA CORPORATION
Dates
- Publication Date
- 20260507
- Application Date
- 20151124
- Priority Date
- 20151120
Claims (19)
- 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, wobei die nächste Flanke des zweiten Takt-Signals verzögert wird, bis die Metastabilität des Inkrement-Signals aufgelöst ist; und Übertragen des Inkrement-Signals an die zweite Takt-Domäne.
- 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.
- Verfahren nach Anspruch 2 , 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-Zeigers.
- Verfahren nach Anspruch 2 , 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.
- Verfahren nach Anspruch 4 , 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Verfahren nach Anspruch 1 , das ferner ein Erhöhen eines Schreib-Zeigers in der ersten Takt-Domäne aufweist.
- 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.
- Verfahren nach Anspruch 13 , wobei ein zweiter Latch zwischen dem Latch und dem Flipflop gekoppelt ist.
- 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.
- Verfahren nach Anspruch 1 , wobei das erste Takt-Signal ein pausierbares Takt-Signal ist.
- Verfahren nach Anspruch 1 , wobei das erste Takt-Signal kein pausierbares Takt-Signal ist.
- 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 nach Anspruch 18 , 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.
Description
Gebiet der Erfindung Die vorliegende Erfindung bezieht sich auf das Synchronisieren und insbesondere auf das Synchronisieren unter Verwendung eines pausierbaren Takts. 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. 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. Die US 8 428 207 B1 betrifft ein Verfahren zum Bestimmen einer Zeit zum sicheren Abtasten eines Signals in einer Takt-Domäne. Ein FIFO-Synchronisierer wird unter Verwendung von zwei „Even/Odd“ (E/O) Synchronisierern realisiert. Der FIFO-Speicher verwendet einen Dual-Port-Speicher, der synchron geschrieben und asynchron gelesen wird. Der FIFO-Speicher wird beschrieben und ein Endzeiger wird an einer steigenden Flanke des Eingangstaktes inkrementiert, wenn die Eingabe gültig und der FIFO-Speicher nicht voll ist. Der Anfangszeiger wählt den Wert am Anfang des FIFO aus, der am Ausgangsport des Speichers angezeigt werden soll. Der Anfangszeiger wird bei steigender Flanke des Ausgangstaktes inkrementiert, wenn der FIFO-Speicher nicht leer ist. Der Endzeiger und die Fülllogik befinden sich in der Eingangstakt-Domäne, während der Anfangszeiger und die Leerlogik in der Ausgangstakt-Domäne liegen. Ein Paar E/O-Synchronisierer verschiebt den Anfangs- und Endzeiger zwischen den beiden Taktdomänen. Ein Synchronisierer überträgt den Endzeiger von der Eingangstakt-Domäne in die Ausgangstakt-Domäne, und ein zweiter Synchronisierer überträgt den Anfangszeiger von der Ausgangstakt-Domäne in die Eingangstakt-Domäne. Die US 2011 / 0 204 932 A1 betrifft ein asynchrones Schema für einen Übergang zwischen Takt-Domänen, beispielsweise zwischen einer ersten Takt-Domäne und einer zweiten Takt-Domäne, die durch pausierbare Takte angesteuert und mit Handshakes gesteuert werden. Eine Vorrichtung umfasst ein erstes Steuerlogikelement zum Verarbeiten eines Handshake-Signals und zum Erzeugen eines ersten Arbitersignals. Gleichzeitig verarbeitet ein zweites Steuerlogikelement ein zweites Handshake-Signal und erzeugt ein zweites Arbitersignal. Zum Beispiel nimmt ein Arbitrierungselement das erste Arbitrierungssignal und das zweite Arbitrierungssignal auf und gibt ein erstes Takt-Signal an ein erstes sequentielles Element und ein zweites Takt-Signal an ein zweites sequentielles Element aus. Zur Steuerung der Metastabilität durch Steuerung des Zeitablaufs der Takteingänge der sequentiellen Vorrichtungen umfasst die Vorrichtung ein erstes steuerbares Verriegelungsverzögerungselement, das so ausgewählt ist, dass es die Setup-Beschränkung des zweiten sequentiellen Elements erfüllt, und ein zweites steuerbares Verriegelungsverzögerungselement, das so ausgewählt ist, dass es die Hold-Beschränkung des zweiten sequentiellen Elements erfüllt. Es besteht daher die Aufgabe, eine Übertragung eines Signal, insbesondere ein Inkrement-Signal, zwischen zwei Takt-Domänen eines Dual-Port-Speicher-Arrays zu verbessern, insbesondere Metastabilität zuverlässig zu vermeiden, ohne zusätzliche Synchronisierstufen oder erhöhte Latenz. Zusammenfassung Diese Aufgabe wird durch ein Verfahren nach Anspruch 1 und ein System nach Anspruch 18 gelöst. Die abhängigen Ansprüche definieren Ausführungsformen. Es werden ein System und ein Verfahren für einen pausierbaren bisynchronen First-In First-Out (FIFO) -Puffer bereitgestellt. Bei dem Verfahren werden Daten synchron mit einem Takt-Signal einer ersten Takt-Domäne in eine