DE102015107968A1 - Arbiter für asynchrone Zustandsautomaten - Google Patents

Arbiter für asynchrone Zustandsautomaten Download PDF

Info

Publication number
DE102015107968A1
DE102015107968A1 DE102015107968.2A DE102015107968A DE102015107968A1 DE 102015107968 A1 DE102015107968 A1 DE 102015107968A1 DE 102015107968 A DE102015107968 A DE 102015107968A DE 102015107968 A1 DE102015107968 A1 DE 102015107968A1
Authority
DE
Germany
Prior art keywords
signals
request
latch
output
circuit
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
DE102015107968.2A
Other languages
English (en)
Inventor
Tommaso Bacigalupo
Torsten Hinz
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.)
Infineon Technologies Austria AG
Original Assignee
Infineon Technologies Austria AG
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/292,040 external-priority patent/US9626317B2/en
Application filed by Infineon Technologies Austria AG filed Critical Infineon Technologies Austria AG
Publication of DE102015107968A1 publication Critical patent/DE102015107968A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/36Handling requests for interconnection or transfer for access to common bus or bus system
    • G06F13/362Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
    • G06F13/364Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers

Abstract

Ein Arbiter kann zum Verarbeiten einer Vielzahl von asynchronen Datensignalen verwendet werden. Jedes Datensignal ist einem Anfragesignal und einem entsprechenden Bestätigungssignal zugeordnet. Der Arbiter umfasst eine Latchanordnung, die mit einem Eingang, um die Datensignale und die Anfragesignale zu empfangen, und mit einem Ausgang verbunden ist, um einen Datenvektor und einen Gültigkeitsvektor bereitzustellen. Der Datenvektor umfasst Werte, die von den Datensignalen abhängig sind und der Gültigkeitsvektor umfasst Werte, die von den Anfragesignalen abhängig sind, wenn die Latchanordnung in einem durchlässigen Zustand ist. Die Logikschaltung ist dazu ausgebildet, die Latchanordnung zu starten, wenn eines der Anfragesignale aktiv wird, um nach einer Verzögerungszeit, nach dem das Latch getriggert wurde, ein globales Anfragesignal zu aktivieren und die Bestätigungssignale selektiv für einen Kanal oder mehrere Kanäle zu aktivieren, für die ein aktives Anfragesignal in dem Latch gespeichert wurde.

Description

  • Die vorliegende Erfindung bezieht sich auf das Gebiet des Entwurfs asynchroner Schaltungen. Insbesondere bezieht sich die Erfindung auf Arbiter für das Handhaben mehrerer (fast) gleichzeitiger Schalteingänge (engl.: switching inputs) und auf die Anwendung dieser Arbiter in asynchronen Zustandsautomaten (engl.: asynchronous state machines).
  • Die meisten der heutzutage entworfenen und hergestellten digitalen Schaltungen sind „synchron“. Synchrone Schaltungen beruhen im Wesentlichen auf zwei grundlegenden Annahmen, die ihren Entwurf weitgehend vereinfachen: (1) Alle Signale sind binär und (2) alle Komponenten teilen ein gemeinsames und diskretes Verständnis der Zeit, wie es durch ein Taktsignal definiert wird, das in der ganzen Schaltung angewandt wird.
  • Asynchrone Schaltungen sind grundlegend anders. Sie gehen ebenfalls von binären Signalen aus, aber es ist keine gemeinsame und diskrete Zeit vorhanden. Stattdessen verwenden die Schaltungen einen Quittungsbetrieb zwischen ihren Komponenten, um die notwendige Synchronisierung, die notwendige Kommunikation und das notwendige Sequentialisieren der Vorgänge auszuführen. Ausgedrückt in Begriffen, die normalerweise im Zusammenhang mit synchronen Schaltungen verwendet werden, führt dies zu einem Verhalten, das ähnlich ist wie ein systematisches feinkörniges Taktsteuern, und zu lokalen Takten, die nicht in Phase sind, und deren Periodendauer durch die tatsächlichen Schaltungsverzögerungen bestimmt wird. Dieser Unterschied gibt den asynchronen Schaltungen inhärente Eigenschaften, die (in Bezug auf z.B. den Stromverbrauch, die Betriebsgeschwindigkeit, die elektromagnetischen Abstrahlungen, die Widerstandsfähigkeit hinsichtlich Schwankungen bei der Versorgungsspannung, die Temperatur, die Herstellungsprozessparameter usw.) vorteilhaft im Vergleich zu synchronen (getakteten) Schaltungen sein können.
  • Auf der anderen Seite gibt es auch einige Nachteile. Asynchrone Schaltungen benötigen üblicherweise eine Steuerlogik zum Umsetzen von Quittierungsvorgängen, die erforderlich sind, um verschiedene Schaltungselemente zu synchronisieren, da kein globales Taktsignal vorhanden ist. Die asynchrone Steuerlogik, die den Quittungsbetrieb umsetzt, stellt im Sinne der Schaltungskomplexität normalerweise einen Mehraufwand dar.
  • Wesentliche Komponenten des Quittungsbetriebs, die gemeinsam genutzt werden, um die erwähnten Quittierungsvorgänge umzusetzen, erfordern, dass die Kommunikation über mehrerer (Eingangs-)Kanäle gegenseitig ausschließend ist, mindestens bis zu dem Punkt, an dem zwei Kanäle in einen gemeinsam genutzten Kanal verschmolzen werden (siehe z.B. Jens Sparsø, ed.: Abschnitt 5.8 "Mutual exclusion, arbitration and metastability," in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN – A Systems Perspective, Kluwer Academic Publishers, 2001). Dies bedeutet, dass ein High-Low-Übergang (oder umgekehrt) an einem gegebenen Zeitpunkt nur in einem einzigen Kanal auftreten kann. Gleichzeitige „Ereignisse“ in zwei oder mehreren Kanälen, werden von Arbitern gehandhabt, die sogenannte Mutex-Elemente verwenden, um zu entscheiden, welches Ereignis zuerst verarbeitet wird. Mutex-Elemente unterliegen jedoch unerwünschten Metastabilitätseffekten, wenn zwei Ereignisse gleichzeitig oder fast gleichzeitig (d.h. innerhalb eines kurzen Zeitintervalls) auftreten.
  • Insbesondere wenn endliche Zustandsautomaten (Finite State Machines, FSMs) eingerichtet werden, können gleichzeitig auftretende Ereignisse in verschiedenen Kommunikationskanälen (z.B. auf verschiedenen Signalleitungen) problematisch sein und geeignete Arbitrierungsschaltungen (Arbiter) können eine erhebliche Komplexität aufweisen. Es besteht die Notwendigkeit für einen einfach zu synthetisierenden Zustandsautomaten, der einen Arbiter zum Handhaben gleichzeitiger Ereignisse in verschiedenen Kommunikationskanälen aufweist.
  • Ein Arbiter zum Verarbeiten einer Vielzahl von asynchronen Datensignalen wird offenbart. Jedes Datensignal ist einem entsprechenden Anfragesignal und einem entsprechenden Bestätigungssignal zugeordnet. Gemäß einem Beispiel der Erfindung umfasst der Arbiter eine Latchanordnung, die als Eingangssignale die Datensignale und Anfragesignale empfängt und als Ausgangssignale einen Datenvektor und einen entsprechenden Gültigkeitsvektor bereitstellt. Der Datenvektor umfasst Werte, die von den Datensignalen abhängig sind und der Gültigkeitsvektor umfasst Werte, die von den Anfragesignalen abhängig sind, wenn das Latch in einem durchlässigen Zustand ist. Der Arbiter umfasst außerdem eine Logikschaltung, die dazu ausgebildet ist, die Anfragesignale zu überwachen und das Latch zu starten (d.h., die Ausgabe des Latches „einzufrieren“), wenn eines der Anfragesignale aktiv wird. Die Logikschaltung ist außerdem ausgebildet, nach einer Verzögerungszeit, nach der das Latch getriggert wurde, ein globales Anfragesignal zu aktivieren und die Bestätigungssignale selektiv für den Kanal (die Kanäle) zu aktivieren, für die ein aktives Anfragesignal zwischengespeichert wurde (engl.: has been latched).
  • Unter Bezugnahme auf die nachfolgenden Zeichnungen und die nachfolgende Beschreibung wird die Erfindung besser verständlich. Die Komponenten in den Figuren sind nicht unbedingt maßstabsgerecht gezeichnet, stattdessen wird Wert darauf gelegt, dass sie die Prinzipien der Erfindung darstellen. In den Figuren beziehen sich des Weiteren gleiche Bezugszeichennummern auf die jeweils gleichen Teile. In den Zeichnungen:
  • 1, welche die 1a und 1b umfasst, zeigt die Anfrage- und Bestätigungssignale zwischen einem Sender und einem Empfänger in einer asynchronen Schaltung, wobei diese Signale einen Quittungsbetrieb verwenden;
  • 2, welche die 2a und 2b umfasst, zeigt ein beispielhaftes Mutex-Element;
  • 3, welche die 3a und 3b umfasst, zeigt einen Arbiter für ein Handhaben von zwei Anfragesignalen, die an die gleiche Ressource (z.B. den gleichen Empfänger) gerichtet sind;
  • 4 zeigt einen Arbiter für das Handhaben einer Vielzahl von Anfragesignalen in einem Schritt gemäß einem Beispiel der Erfindung und seine Anwendung im Zusammenhang mit einem endlichen Zustandsautomaten;
  • 5 zeigt eine beispielhaften Anfrageerzeugerschaltung, der in Verbindung mit dem Arbiter aus 4 verwendet werden kann;
  • 6 stellt Zeitablaufkurven bereit, welche die Funktion des Arbiters aus 4 zeigt;
  • 7 zeigt eine beispielhafte Umsetzung des Zustandsautomaten, der in dem Beispiel der 4 gezeigt wird;
  • 8 zeigt eine beispielhafte Umsetzung der Anfrageerzeugerschaltung (Anfrageeinheit) aus 5;
  • 9 zeigt eine beispielhafte Umsetzung des Arbiters aus 4;
  • 10 zeigt eine Umsetzung einer weiteren Ausführungsform des Arbiters aus 4;
  • 11 zeigt eine Umsetzung einer weiteren Ausführungsform des Anfrageerzeugers aus 5;
  • 12 zeigt eine schematische Darstellung eines Teils eines Anfrageerzeugers gemäß einer Ausführungsform;
  • 13A bis 13C zeigen eine Ausführungsform eines gefilterten Latches und entsprechende beispielhafte Kurven;
  • 14 zeigt eine alternative Ausführungsform eines gefilterten Latches; und
  • 15 zeigt einen Ablaufplan einer Ausführungsform eines Arbitrierungsverfahrens.
  • Bei asynchronen Schaltungen ist ein globaler Systemtakt nicht erforderlich. Stattdessen werden Quittierungsvorgänge für ein Synchronisieren verschiedener Schaltungskomponenten verwendet. 1a zeigt den Datenfluss von einem Sender 10 zu einem Empfänger 20. Eine Änderung in dem Datensignal wird durch den Sender 10 über das Anfragesignal REQ signalisiert und der Empfang der Daten wird durch den Sender mit dem Bestätigungssignal ACK signalisiert. Das Anfrage- und das Bestätigungssignal werden mit den Datensignalen (in 1 als DATEN bezeichnet) „gebündelt“ und daher wird auf dieses Konzept oftmals als „gebündelte Daten“ Bezug genommen. Der Begriff „gebündelte Daten“ bezieht sich auf eine Situation, bei der die Datensignale normale Boole‘sche Pegel verwenden, um Informationen zu verschlüsseln, und bei der getrennte Anfrage- und Bestätigungssignale mit den Datensignalen gebündelt werden.
  • Verschiedene Quittierungsprotokolle sind bekannt. Die mit DATEN bezeichneten Signale sollten, kurz bevor und während das Anfragesignal REQ aktiv ist (z.B. REQ = 1), stabil sein. 1b zeigt als ein Beispiel ein Vier-Phasen-Protokoll, wobei das Anfrage- und das Bestätigungssignal REQ und ACK auch Boole‘sche Pegel verwenden, um Informationen zu verschlüsseln. Der Begriff „Vier-Phasen“ bezieht sich auf die Anzahl der Kommunikationsaktionen: (1) der Sender 10 gibt Daten aus (Datensignale DATEN) und stellt das Anfragesignal REQ auf einen High-Pegel, (2) der Empfänger 20 empfängt die Daten und stellt das Bestätigungssignal ACK auf einen High-Pegel, sobald die Daten ordnungsgemäß empfangen oder verarbeitet wurden, (3) der Sender 10 antwortet, indem das Anfragesignal REQ auf einen Low-Pegel zurückgesetzt wird (ab diesem Zeitpunkt werden die Daten nicht mehr als gültig garantiert) und (4) der Empfänger 20 bestätigt dies, indem das Bestätigungssignal ACK auf einen Low-Pegel zurückgesetzt wird. Ab diesem Zeitpunkt kann der Sender 10 den nächsten Kommunikationszyklus beginnen. Obwohl das dargestellte Quittierungsprotokoll sehr üblich ist, sind auch andere Protokolle verfügbar und geeignet.
  • Das oben vorgestellte Protokoll geht davon aus, dass der Sender 10 der aktive Teilnehmer ist, der die Datenübertragung über den Kanal initialisiert. Dies ist bekannt als ein Push-Kanal. Das Gegenteil, d.h., dass der Empfänger 20 neue Daten anfordert, ist auch möglich und wird ein Pull-Kanal genannt. In diesem Fall sind die Richtungen des Anfrage- und des Bestätigungssignals REQ und ACK umgekehrt und die Gültigkeit der Daten wird in dem Bestätigungssignal ACK angezeigt, dass von dem Signal 10 an den Empfänger 20 geht (Pull-Kanäle). In abstrakten Schaltungsbildern, die Verbindungen/Kanäle (wie in 1a) als ein Symbol zeigen, ist das aktive Ende eines Kanals oftmals mit einem Punkt markiert. Datensignale DATEN können in den Fällen weggelassen werden, in denen nur eine Synchronisierung von zwei Schaltungskomponenten ohne die Notwendigkeit eines Datenaustausches erforderlich ist. Der Datenfluss kann außerdem bidirektional sein (Push/Pull-Kanäle). Obwohl sich die weitere Erörterung auf Push-Kanäle bezieht, können die hier vorgestellten Prinzipien auch auf die Pull-Kanäle und Push/Pull-Kanäle angewandt werden.
  • In Anbetracht des in 1 gezeigten Datenaustausch- und Synchronisierungsmechanismus ist es offensichtlich, dass Empfänger, die mehrere Eingangskanäle empfangen, (fast) gleichzeitige Anfragen (d.h. einen Übergang im Anfragesignal REQ) meistern müssen. Sogenannte „Mutex-Elemente“ (Mutex ist eine Wortkreuzung aus „mutually“ (gegenseitig) und „exclusive“ (ausschließend) werden üblicherweise verwendet, um sicherzustellen, dass nur eine Anfrage (oder im Allgemeinen ein Ereignis), die in einem spezifischen Signal aus einer Vielzahl von Signalen auftritt, an einen Empfänger weitergeleitet wird.
  • In 2 wird ein beispielhaftes Mutex-Element (mit der Bezeichnung MUTEX) gezeigt. Die Eingangssignale R1 und R2 sind zwei Anfragen, die von zwei unabhängigen Quellen stammen, und die Aufgabe des Mutex-Elementes ist es, diese Eingänge an die entsprechenden Ausgänge G1 und G2 so weiterzugeben, dass an einem beliebigen gegebenen Zeitpunkt höchstens ein Ausgang aktiv ist (das heißt, z.B. auf einem High-Pegel ist). Wenn nur eine Eingangsanfrage ankommt, ist der Vorgang trivial. Wenn eine Eingangsanfrage deutlich vor der anderen ankommt, wird die spätere Anfrage blockiert, bis die erste Anfrage deaktiviert wird. Das Problem tritt auf, wenn beide Eingangssignale zur gleichen Zeit aktiviert werden. In diesem Fall muss das Mutex-Element eine willkürliche Entscheidung treffen, und dies ist der Punkt, an dem eine Metastabilität ins Spiel kommt. Da dieses Problem der Metastabilität bekannt ist, wird es hier nicht weiter erörtert.
  • Hierzu wird auf die Literatur verwiesen (siehe z.B. Jens Sparsø, ed.: Abschnitt 5.8, "Mutual exclusion, arbitration and metastability" in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN – A Systems Perspective, Kluwer Academic Publishers, 2001). Bei dem Beispiel in 2b besteht das Mutex-Element aus einem Flip-Flop (der durch die zwei NAND-Gatter umgesetzt wird) und einem dazu nachgeschalteten Metastabilitätsfilter (der durch die CMOS-Transistorschaltung umgesetzt wird).
  • Die Mutex-Elemente können verwendet werden um einen Arbiter umzusetzen, der verwendet werden kann, um den Zugriff auf eine Ressource (z.B. einen Empfänger) zu steuern, die von mehreren autonomen unabhängigen Teilnehmern (z.B. mehreren Sendern) gemeinsam genutzt wird. Eine mögliche Umsetzung wird in 3 gezeigt. Da die gezeigte Umsetzung eines Arbiters ebenfalls bekannt ist, wird hier nur eine grobe Erklärung gegeben und auf das oben erwähnte Buch von J. Sparsø verwiesen.
  • Bei dem Beispiel in 3b stellt das Mutex-Element MUTEX sicher, dass die (Anfrage-)Signale G1 und G2 (an der Schnittstelle a’-aa’) gegenseitig ausschließend sind. Hinter dem Mutex-Element sind zwei UND-Gatter angeordnet, deren Zweck es ist, sicherzustellen, dass der Quittungsbetrieb auf den y1/A1- und y2/A2-Kanälen (an der Schnittstelle b’-bb’) gegenseitig ausschließend ist. Dies bedeutet, dass das Anfragesignal y2 nur auf „High“ gehen kann, wenn das Bestätigungssignal A1 „Low“ ist, und das Anfragesignal y1 kann nur auf „High“ gehen, wenn das Bestätigungssignal A2 „Low“ ist. Wenn der Quittungsbetrieb auf einem Kanal in Bearbeitung ist, blockiert der Arbiter somit den Quittungsbetrieb auf dem anderen Kanal. In Fällen, in denen der Arbiter mehr als zwei Eingänge handhaben muss, ist die Arbiter-Schaltung wesentlich komplexer. Das Gatter mit der Bezeichnung „C“ ist ein Müller-C-Element, das auch ausführlich in dem oben erwähnten Buch von J. Sparsø erörtert wird.
  • In Fällen, in denen der Arbiter verwendet wird, um Eingänge zu handhaben, die einem endlichen Zustandsautomaten (Finite State Machine, FSM) bereitgestellt werden, kann von dem FSM an einem Zeitpunkt jeweils nur ein Eingangssignal verarbeitet werden. Wenn eine Vielzahl von Eingängen gehandhabt wird, ist außerdem eine große Anzahl von Mutex-Elementen erforderlich (die z.B. in einer Kette oder Baumstruktur angeordnet sind), wobei jedes Mutex-Element die erwähnten aus der Metastabilität entstehenden Probleme meistern muss, was den Arbiter erheblich verlangsamen kann. In Anbetracht dessen, wurde ein neuer Arbiter entwickelt, der in der Lage ist, eine Vielzahl von Eingangskanälen zu handhaben, wodurch einem endlichen Zustandsautomaten (FSM) erlaubt wird, eine Vielzahl von „Ereignissen“ (z.B. Anfragen) in einem einzigen Schritt zu verarbeiten. Ein Beispiel des Arbiters wird hier weiter unten in Bezug auf die 4 und 5 beschrieben.
  • 4 zeigt in einem Blockschaubild einen asynchron betriebenen endlichen Zustandsautomaten (FSM) 40, der eine Vielzahl von Eingangsdatensignalen D0, D1, D2, ..., Dn empfängt, wobei jedes Datensignal D0, D1, D2, ..., Dn entsprechenden Anfragesignalen R0, R1, R2, ..., Rn und Bestätigungssignalen A0, A1, A2, ..., An zugeordnet ist, um einen Quittierungsvorgang zu erlauben, wie er z.B. in Bezug auf 1 erklärt wurde. Die Eingangsdatensignale D0, D1, D2, ..., Dn und die entsprechenden Anfragesignale R0, R1, R2, ..., Rn werden nicht direkt an den FSM 40 geliefert. Die Daten- und Anfragesignale Di, Ri (wobei i = 0, 1, 2, ... n) werden stattdessen an einen Arbiter 30 geliefert, der dazu ausgebildet ist, die Anfragesignale Ri aller Kanäle (Kanal 0 bis Kanal n) gleichzeitig zu überwachen.
  • Sobald ein beliebiges Anfragesignal aktiv wird (z.B. einen High-Pegel annimmt), werden die Werte aller Anfrage- und Datensignale Ri, Di in Latches (d.h. in einer Latchanordnung) gespeichert. Zu diesem Zweck ist der Arbiter so ausgebildet, dass er gleichzeitig alle Anfragesignale Ri auf Übergänge (von Signalen, die aktiv werden) überwacht. Wenn ein oder mehrere Anfragen erkannt werden und die Signalwerte in der Latchanordnung gespeichert wurden, wartet der Arbiter eine vordefinierte Zeitdauer, um allen Auffangregistern zu erlauben, dass sie nach möglichen metastabilen Zuständen wieder stabilisiert werden. Schließlich wird ein globales Anfragesignal REQ erzeugt und an den FSM 40 geliefert. Die in den Latches gespeicherten Werte der Eingangsdatensignale D0, D1, ..., Dn werden dem FSM 40 als ein Datenvektor iDATA(0:n) bereitgestellt, wobei ein zusätzlicher Vektor iVALID(0:n) (Gültigkeitsvektor), der gültige Daten anzeigt (z.B. Werte jener Datensignale Di, für die das entsprechende zwischengespeicherte Anfragesignal aktiv ist), erzeugt und dem FSM 40 bereitgestellt wird. Auf diese Weise kann der Datenvektor ausgedrückt werden als iDATA = (D0, D1, D2 ..., Dn), und der zusätzliche Datenvektor kann ausgedrückt werden als iVALID = (R0, R1, R2 ..., Rn).
  • Dies bedeutet, dass jene Elemente Di des Datenvektors iDATA gültig sind, für welche die entsprechende in dem zusätzlichen Datenvektor iVALID gespeicherte Anfrage Ri aktiv ist (z.B. Ri = 1). Sobald der FSM die Datenvektoren iDATA, iVALID empfangen hat, wird ein entsprechendes Bestätigungssignal ACK erzeugt und zurück an den Arbiter gesendet, wie es in Bezug auf das allgemeine Beispiel der 1 erklärt wurde. Das Bestätigungssignal ACK wird an jene Kanäle weitergeleitet, für die ein aktives Anfragesignal Ri erkannt wurde, das heißt, Ai = ACK wenn Ri = aktiv (für i = 0, 1, 2, ... n).
  • Wenn ein Arbiter wie oben erklärt betrieben wird, kann eine Vielzahl von Eingangsdatensignalen gleichzeitig verarbeitet werden. Nur die Anfragen, die erfolgreich an den FSM 40 weitergeleitet wurden, werden zurück an den Sender bestätigt. Die Anfragen, die nicht erfasst wurden, werden in dem nächsten „Zyklus“ bearbeitet. Es wird jedoch darauf hingewiesen, dass eine feste Zyklenperiodendauer nicht erforderlich ist. Der Arbiter und der FSM behalten ein Bearbeiten von Anfragesignalen solange bei, wie eines der Anfragesignale aktiv ist. Infolgedessen wird ein automatisches Verarbeiten von noch nicht versorgten Ereignissen (d.h. aktive Anfragen, die noch nicht verarbeitet wurden) erreicht.
  • 5 zeigt einen „Anfrageerzeuger“, der eine Schaltung 35 ist, der dazu ausgebildet ist, als Reaktion auf eine Aktualisierung der Daten DATENi (i = 0, 1, 2, ..., n) ein Anfragesignal zu erzeugen. Getrennte Anfrageerzeuger sind jedoch nicht erforderlich, wenn die Signalquelle (oder Signalquellen), welche die Datensignale DATENi bereitstellt, in der Lage ist, geeignete den Daten entsprechende Anfragesignale bereitzustellen. Es wird darauf hingewiesen, dass DATENi ein Einzelbitsignal oder ein n-Bit-Signal darstellen kann, z.B. ein Impulssignal, das einem Datenwort von mehreren Bits zugeordnet ist. Eine beispielhafte Umsetzung des Anfrageerzeugers wird weiter unten in Bezug auf 8 erörtert.
  • 6 zeigt die maßgeblichen Signale (Anfrage-, Daten- und Bestätigungssignale), die von einem Arbiter 30 verarbeitet werden, wie es oben in Bezug auf 4 erklärt wurde. Bei dem vorliegenden Beispiel werden nur zwei Datensignale D0 und D1 und zwei entsprechende Anfragesignale R0 und R1 sowie zwei entsprechende Bestätigungssignale A0 und A1 betrachtet. Es wird darauf hingewiesen, dass die Datensignale D0 und D1 als gültig betrachtet werden können, wenn die entsprechenden Anfragesignale R0 und R1 aktiv werden. Die beiden oberen Kurven in 6 zeigen die Anfragesignale R0, R1, wobei beide Anfragesignal (Anstiegsflanken) fast gleichzeitig am Arbiter ankommen. Die Anfrage R1 kommt jedoch ein klein wenig später an und somit startet die Anfrage R0 die Latchanordnung an einem Zeitpunkt t1. Der Arbiter leitet dann die zwischengespeicherten Daten- und Anfragesignale an eine nachfolgende Schaltung (z.B. den FSM 40 bei dem Beispiel der 4). Zum Vermeiden von Metastabilitätseffekten wird eine vordefinierte Verzögerung t2 – t1 abgewartet, bevor das Anfragesignal REQ (siehe 4) erzeugt wird, das an den Empfänger der Daten (z.B. den FSM 40) geliefert wird. Der Empfänger (z.B. der FSM 40) erzeugt das Bestätigungssignal ACK, sobald die Daten korrekt empfangen wurden. Das Signal ACK wird an die Kanäle verteilt, von denen ein aktives Anfragesignal in der Latchanordnung erfasst wurde; bei dem vorliegenden Beispiel der 6 wird das ACK-Signal an die Kanäle 0 und 1 als Signale A0 und A1 verteilt.
  • 7 zeigt eine beispielhafte Umsetzung eines endlichen Zustandsautomaten (FSM) 40, der in Verbindung mit dem Arbiter 30 verwendet werden kann, wie es in dem Beispiel der 4 gezeigt wird. Der hier gezeigte FSM ist ein Zustandsautomat vom Typ Mealy und umfasst eine Logikschaltung 41, der dazu ausgebildet ist, aktualisierte Zustandsvariablen S’(0:k) aus den aktuellen Zustandsvariablen S(0:k) und den durch den Vektor iVALID(0:n) gegebenen Eingängen zu berechnen, das heißt, dass S’(0:k) = f(S(0:k), iVALID(0:n)) ist. Sobald die Berechnung abgeschlossen ist, werden die Zustandsvariablen S’(0:k) in dem Zustandsregister 43 zwischengespeichert und werden auf diese Weise zu den aktuellen Zustandsvariablen S(0:k), die auch als Ausgang des FSM angesehen werden können. Das Zwischenspeichern der aktualisierten Zustandsvariablen S’(0:k) wird von einer verzögerten ENB-Version des Anfragesignals REQ getriggert, das von dem Arbiter 30 bereitgestellt wird (siehe 4), wobei die Verzögerung (siehe Verzögerungselement 42) zwischen den Signalen REQ und ENB so gestaltet ist, dass die Berechnung der aktualisierten Zustandsvariablen S’(0:k) abgeschlossen wurde, bevor das Signal ENB aktiv wird und das Zustandsregister (das als Latchanordnung angesehen werden kann) startet. Die verzögerte ENB-Version des Anfragesignals REQ wird auch als Bestätigungssignal zurück an den Arbiter geliefert, um zu signalisieren, dass der Datenvektor iVALID(0:n) erfolgreich verarbeitet wurde und der FSM bereit ist, neue Daten zu empfangen. Es wird darauf hingewiesen, dass die hier vorgestellte Umsetzung als ein Beispiel betrachtet wird und z.B. kann eine Müller-Pipeline anstatt eines Flip-Flop-gestützten Zustandsregisters zum Speichern verwendet werden.
  • Die 8 und 9 zeigen beispielhafte Umsetzungen der Anfrageerzeugerschaltung 35 aus 5 bzw. des Arbiters 40 aus 4. Die Anfrageerzeugerschaltung 35 empfängt ein Eingangsdatensignal DATENi (z.B. ein 1-Bit-Signal bei dem vorliegenden Beispiel) und stellt als Reaktion auf einen Übergang (High zu Low und Low zu High) in dem Eingangsdatensignal DATENi ein entsprechendes Paar aus Anfragesignal Ri und Ausgangsdatensignal Di bereit. Wenn das Anfragesignal Ri nach einem Übergang des Eingangsdatensignals DATENi aktiv ist, können alle nachfolgenden Übergänge außer Acht gelassen werden, bis ein Bestätigungssignal Ai empfangen wird. Das Datensignal DATENi ist nicht unbedingt ein 1-Bit-Signal, sondern kann auch ein Mehr-Bit-Signal einschließlich n paralleler Bits sein.
  • 8 zeigt eine beispielhafte Umsetzung des Anfrageerzeugers 35, der in 5 dargestellt wird. In einem stabilen Zustand (der z.B. durch ein Signal Ai = 1 getriggert wird) ist der Ausgang des ODER-Gatters 353 aktiv (z.B. auf einem High-Pegel) und somit ist das Latch 355 durchlässig, während das Latch 356 in einem „Haltezustand“ ist (d.h., dass der Ausgang unabhängig von dem Eingang beibehalten wird). Infolgedessen kann das Eingangsdatensignal DATENi durch das Latch 355 geleitet werden und steht direkt als Datensignal Di zur Verfügung. Die Ausgänge der beiden Latches 355 und 356 werden beide als Eingänge an das XOR-Gatter 354 geliefert. In dem stabilen Zustand ist der Ausgang des XOR-Gatters 354 inaktiv (d.h. auf einem Low-Pegel). Wenn die Eingangsdaten DATENi jedoch ihren Pegel ändern (d.h., wenn in dem Signal DATENi eine Flanke auftritt), ändert sich der Ausgang des durchlässigen Latches 355 auch, während der Ausgang des undurchlässigen Latches 356 beibehalten wird und somit der Ausgang des XOR-Gatters 354 aktiv wird (d.h., dass er auf einen High-Pegel wechselt).
  • Der aktive Ausgang des XOR-Gatters 354 startet das Müller-C-Gatter 351 und somit wird das Anfragesignal Ri auch aktiv. Auf eine solche Weise erzeugt die Flanke des Eingangsdatensignals DATENi eine Anfrage. Das aktive Anfragesignal Ri veranlasst (über das ODER-Gatter 353), dass das Latch 355 in einen Haltezustand wechselt, während das Latch 356 durchlässig wird. An diesem Zeitpunkt sind die Ausgänge der beiden Latches wieder gleich und somit kehrt der Ausgang des XOR-Gatter 354 zurück in den inaktiven Zustand (auf den Low-Pegel). Sobald das Bestätigungssignal Ai empfangen wurde, wird das Müller-C-Gatter 351 (über den Inverter 352) erneut getriggert und die Latches 355 und 356 ändern wieder ihren Zustand (das Latch 355 wird durchlässig und das Latch 356 behält seinen Ausgang bei), wenn das Bestätigungssignal Ai über das ODER-Gatter 353 an die Latches weitergeleitet wird. An diesem Punkt ist der Anfrageerzeuger „frei“, um erneut die Datensignale DATENi zu überwachen und die nächste Anfrage zu erzeugen, sobald die nächste Flanke in dem Datensignal DATENi erkannt wird.
  • Es wird darauf hingewiesen, dass der Anfrageerzeuger 35 dazu ausgebildet ist, das Datenausgangssignal Di ein klein wenig früher zu erzeugen als die entsprechende Anfrage Ri, um dem Arbiter zu erlauben, die Daten Di zuverlässig zu erfassen. Dieser Zeitunterschied ergibt sich aus der Weiterleitungsverzögerung, die durch das XOR-Gatter 354 und das Müller-C-Gatter 351 verursacht wird.
  • Der in 9 gezeigte Arbiter 40 speichert die Anfragesignale R0, R1 usw. und die Datensignale Do, D1 usw. in dem Mehrkanal-Latch 320. Das Latch ist durchlässig, wenn das Aktivierungssignal auf einem Low-Pegel (EN = 0) ist. In diesem Fall umfasst der Ausgangsvektor iVALID die Anfragesignale (d.h. iVALID = {R0, R1, ..., Rn}) und der Ausgangsvektor iDATA umfasst die Datensignale (d.h. iDATA = {D0, D1, ..., Dn}). Als Reaktion darauf, dass das erste Anfragesignal Ri aktiv wird, wird das Latch getriggert (Aktivierungssignal EN = 1), die Ausgangswerte (d.h. die Werte der Ausgangsvektoren iVALID und iDATA) werden „eingefroren“ und das globale Anfragesignal REQ wird erzeugt. Das Latch 320 wird nicht gesperrt (d.h. auf durchlässig gestellt), bis ein Bestätigungssignal ACK empfangen wird. Eine typische Signalsequenz (d.h. ein Anfrage-Bestätigung-Zyklus) wird weiter unten beschrieben, um die Funktion des Arbiters der 9 darzustellen.
  • Rein zu Darstellungszwecken wird angenommen, dass alle Anfrage- und Bestätigungssignale Ri, Ai, REQ, ACK anfänglich inaktiv sind (Ri = 0 und Ai = 0 für alle maßgeblichen Werte von i, REQ = 0, ACK = 0). Außerdem ist das Haltesignal HALT (Ausgang des Müller-C-Gatters 302) anfänglich auch inaktiv (HALT = 0) und somit ist die Latchanordnung 320 durchlässig. In dieser Situation sind die Werte der Eingangsdatensignale nicht maßgeblich, der Ausgangsdatenvektor iVALID enthält die aktuellen Werte der Eingangsdatensignale (d.h. iDATA = {D0, D1, ..., Dn}), was ein Ergebnis davon ist, dass die Latchanordnung 320 durchlässig ist.
  • Für die weitere Erörterung wird angenommen, dass eines der Eingangsdatensignale und das entsprechende Anfragesignal aktiv werden (z.B. D0 = 1, und eine kurze Zeit später R0 = 1). Als ein Ergebnis dessen, dass die Latchanordnung 320 durchlässig ist, werden die Werte an den Ausgang des Latches weitergeleitet und somit werden VALID(0) und iDATA(0) aktiv (iVALID(0) = R0 = 1 und iDATA(0) = D0 = 1). Dieses Ergebnis veranlasst, dass der Ausgang des UND-Gatters X0 aktiv wird. Da die Ausgänge der UND-Gatter X0, X1 usw. alle (als Eingänge) an das ODER-Gatter 306 geliefert werden, wird der Ausgang RD des ODER-Gatters 306 aktiv, wenn mindestens eines der UND-Gatter ein aktives Anfragesignal erkennt (RD ist die Abkürzung von „Request Detected“ (Anfrage erkannt)). Dies bedeutet RD = 1, wenn (und nur wenn) mindestens eines der Anfragesignale Ri aktiv ist.
  • Wenn mindestens eine Anfrage erkannt wird (RD = 1), schaltet das Müller-C-Gatter 302 sein Ausgangssignal HALT auf einen High-Pegel (HALT = 1). Einen definierten Verzögerungszeitraum TD später wird das verzögerte HALT-Signal HALTDEL auch aktiv (Verzögerungselement 303). Ein aktives HALT-Signal startet auch (d.h. schließt) das Latch über das ODER-Gatter 304. Infolgedessen werden die Ausgänge der Latchanordnung iVALID(0:n) und iDATA(0:n) „eingefroren“ und Änderungen an den Eingängen der Latchanordnung haben keine Auswirkung mehr auf die Ausgangsvektoren.
  • Einer der anderen Eingänge des Latches (d.h. Ri und/oder Di mit i > 0 bei dem vorliegenden Beispiel) könnten als ein Übergang an dem Zeitpunkt „angesehen“ worden sein, an dem die Latchanordnung 320 getriggert wurde. In diesem Fall können die Ausgänge der Latchanordnung metastabil geworden sein. Aus diesem Grund sollte keine Maßnahme unternommen werden, bis sich diese möglicherweise metastabilen Latches wieder stabilisiert haben. Eine definierte Stabilisierungszeit wird durch das Verzögerungselement 303 sichergestellt, sodass die Latches der Latchanordnung 320 einen Zeitraum TD haben, um sich von den metastabilen Zuständen zu stabilisieren.
  • Das verzögerte HALT-Signal HALTDEL wird dann (nachdem Verzögerungszeitraum TD abgelaufen ist) als globales Anfragesignal REQ ausgegeben. An dem Zeitpunkt, an dem das globale Anfragesignal REQ aktiv wird, wird auch der Ausgang des UND-Gatters 305 aktiv, da jetzt beide Signale HALT und HALTDEL aktiv sind. Infolgedessen empfangen alle Anfrageeinheiten, für die ein aktives Anfragesignal (bei dem vorliegenden Beispiel nur R0 bzw. iVALID(0)) in der Latchanordnung „gefangen“ wurde, über die UND-Gatter Yi (i = 0, 1, ... n) ein entsprechendes aktives Bestätigungssignal (bei dem vorliegenden Beispiel nur A0). Dies kann als eine selektive Bestätigung für alle Kanäle x angesehen werden, für die iVALID(x) aktiv ist. Nach dem Empfangen des (selektiven) Bestätigungssignals Ai deaktivieren die entsprechenden Anfrageeinheiten (bei dem vorliegenden Beispiel die Anfrageeinheit 0) ihre Anfragesignale Ri.
  • Wenn der FSM, der die Ausgangsvektoren iVALID(0:n) und iDATA(0:n) des Arbiters empfangen und verarbeitet hat, antwortet, indem das globale Bestätigungssignal ACK aktiviert wird, deaktiviert das Müller-C-Gatter 302 (welches das ACK-Signal über den Inverter 301 empfängt) seinen Ausgang (HALT = 0). Außerdem werden die selektiven Bestätigungssignale Ai über das UND-Gatter 305 und die UND-Gatter Yi (i = 0, 1, ... n) deaktiviert. Einen Verzögerungszeitraum TD später wird auch die globale Anfrage REQ (die HALTDEL entspricht) deaktiviert, was die Latchanordnung 320 veranlasst; wieder durchlässig zu werden (das Aktivierungssignal EN wird über das ODER-Gatter 304 auf 0 gesetzt). In dieser Situation befindet sich der Arbiter im Leerlauf und bereit zum Verarbeiten weiterer Anfragen, die an einem beliebigen Eingangskanal (von einer beliebigen Anfrageeinheit) auftreten.
  • 10 zeigt einen Arbiter gemäß einer Ausführungsform, bei dem übertaktete Dateneingänge oder Dateneingänge unterstützt werden, die eine Eingangsumschaltrate aufweisen, die zu schnell für den Anfrageerzeuger 35 ist, um die Flanken zu erfassen. Bei diesen übertakteten Situationen tritt eine Zeitablaufverletzung in dem Anfrageerzeuger 35 auf, wenn eine Anfrage ausgegeben wird. Dies kann entweder bei einer ansteigenden oder einer abfallenden Datenflanke genau dann auftreten, wenn das Latch 355 von einem durchlässigen Zustand zu einem Haltezustand übergeht. Diese Zeitablaufverletzung kann die Zeit für das Stabilisieren des zwischengespeicherten Datensignals in dem Anfrageerzeuger 35 verlängern und das Risiko vergrößern, einen metastabilen Eingang aufzuweisen, der in die in 9 gezeigte Latchanordnung 320 getaktet wird.
  • Der Arbiter der Ausführungsform in 10 ist ähnlich wie der Arbiter der Ausführungsform in 9 mit der Ausnahme, dass die Datensignale D0 und D1 zu iDATA(0) bzw. iDATA(1) weitergegeben werden, ohne zwischengespeichert zu werden. Folglich weist die Latchanordnung 420 Latches auf, die dazu ausgebildet sind, als Reaktion darauf, dass das Müller-C-Gatter 302 eine Aktivierung dieser Signale erkennt, die Anfragesignale R0 und R1 zwischenzuspeichern, aber keine Latches für das Speichern der Datensignale D0 und D1 umfasst. Stattdessen werden die Datensignale D0 und D1 als Reaktion darauf, dass die globale Anfrage REQ aktiviert wird, direkt von dem FSM gelesen. Von daher unterliegen die Datensignale D0 und D1 nicht dem Stabilisierungszeitraum der Latches, wie er in 6 zwischen den Zeitpunkten t1 und t2 gezeigt wird. Es ist selbstverständlich, dass 10 der Einfachheit halber nur zwei Kanäle der Anfrageeinheit 0 und 1 zeigt. Bei Ausführungsformen der vorliegenden Erfindung können die Arbiter der Ausführungsform eine Vielzahl von parallelen Anfragen und begleitenden Daten handhaben sowie eine beliebige Anzahl an Bestätigungssignalen erzeugen.
  • Bei einer Ausführungsform kann der FSM, der mit dem Ausgang des in 10 gezeigten Arbiters verbunden ist, dazu ausgebildet sein, Daten zu missachten, die inaktiven Anfrageerzeugern entsprechen. Der FSM kann folglich dazu ausgebildet sein, stabile Dateneingänge z bewerten, die aktiven Anfrageerzeugern entsprechen.
  • 11 zeigt eine Ausführungsform eines Anfrageerzeugers 500, der anstatt des in 8 gezeigten Anfrageerzeugers 35 verwendet werden kann. Der Anfrageerzeuger 500 ist ähnlich wie der Anfrageerzeuger 35 mit dem Zusatz eines Metastabilitätsfilters 502, der mit dem Ausgang des Müller-C-Gatters 351 verbunden ist. Bei einer Ausführungsform filtert der Metastabilitätsfilter 502 den Ausgang des Müller-C-Gatters 351, um zu verhindern, dass das Anfragesignal Ri aktiviert wird, wenn das Datensignal DATENi einer Störung unterliegt. Diese Situation kann zum Beispiel auftreten, wenn das Latch 355 in einem durchlässigen Zustand ist und die DATENi nur einer kurzen Störung unterliegen anstelle eines sauberen dauerhaften Übergangs zum entgegengesetzten Wert.
  • 12 zeigt eine ausführlichere schematische Darstellung einer Umsetzung einer Ausführungsform des Müller-C-Gatters 351 und des in 11 gezeigten Metastabilitätsfilters 502. Ein optionaler Pufferspeicher 536 wird gezeigt, der mit dem Ausgang des Metastabilitätsfilters 502 verbunden ist. Bei einer Ausführungsform wird das Müller-C-Gatter 351 mithilfe eines Logikgatters 540 umgesetzt, das eine Reihe von in Reihe geschalteten CMOS-Transistoren 520 und 522 und in Reihe geschalteten NMOS-Transistoren 524 und 526 umfasst. Die Gates des PMOS-Transistors 520 und des NMOS-Transistors 524 sind mit dem Eingang A verbunden und die Gates des PMOS-Transistors 522 und des NMOS-Transistors 526 sind mit dem Eingang B verbunden. Während des Vorgangs ist der Ausgang des Logikgatters 540 in einem Zustand, bei dem beide Eingänge A und B auf einem High-Pegel sind, am Knoten /Q auf einem Low-Pegel und in einem Zustand, bei dem beide Eingänge A und B auf einem Low-Pegel sind, ist der Ausgang des Logikgatters 540 am Knoten /Q auf einem High-Pegel. Wenn die Eingänge A und B jedoch unterschiedliche Logikwerte aufweisen, produziert das Logikgatter 540 einen Ausgang mit drei Zuständen oder einen hochohmigen Ausgang.
  • Bei einer Ausführungsform umfasst das Müller-C-Gatter 351 auch ein statisches Latch, das mithilfe von direkt hintereinander geschalteten Invertern 528 und 530 umgesetzt wird. Bei einigen Ausführungsformen ist der Inverter 528 schwächer als der Inverter 530, um sicherzustellen, dass der Ausgang des Logikgatters 540 stark genug ist, um den Steuerstrom am Ausgang des Inverters 528 zu überwinden, damit eine Änderung am Ausgang verursacht wird.
  • Bei einer Ausführungsform umfasst der Metastabilitätsfilter 502 den PMOS-Transistor 532 und den NMOS-Transistor 534. Die 13A bis C zeigen verschiedene Szenarien, die den Betrieb des Metastabilitätsfilters 502 in Verbindung mit den Invertern 528 und 530 darstellen. 13A stellt zum Beispiel den Fall dar, in dem der Ausgang des Inverters 528 auf einem High-Pegel ist und der Ausgang des Inverters 530 auf einem Low-Pegel ist. Hierbei wird der PMOS-Transistor 532 ausgeschaltet, da seine Source mit einer niedrigen Spannung verbunden ist und der NMOS-Transistor 534 zieht seinen Drain auf einen Low-Pegel, da das Gate des NMOS-Transistors 534 auf einem High-Pegel ist. Folglich ist der Ausgang des Metastabilitätsfilters auf einem Low-Pegel.
  • Die entsprechende Kurve der Metastabilität (d.h. des Änderunsgwillens) in Abhängigkeit von dem Ausgangszustand zeigt, dass das Szenario der 13A an einem Punkt 544 betrieben wird, der einem stabilen Betriebspunkt entspricht. Der Schwellenwert 546 stellt die Auswirkung des Metastabilitätsfilters auf den Betrieb der Schaltung dar. Wenn der Ausgangszustand, der die einseitige Spannungsdifferenz zwischen den Ausgängen der Inverter 528 und 530 darstellt, zum Beispiel geringer ist als ein Schwellenwert 546, ist der Ausgang des Metastabilitätsfilters auf einem Low-Pegel. Wenn der Ausgangszustand andererseits größer ist als der Schwellenwert 546, ist der Ausgang des Metastabilitätsfilters auf einem High-Pegel.
  • 13B stellt zum Beispiel den Fall dar, in dem der Ausgang des Inverters 528 auf einem Low-Pegel ist und der Ausgang des Inverters 530 auf einem High-Pegel ist. Hierbei wird der PMOS-Transistor 532 eingeschaltet, da seine Source mit einem High-Ausgang des Inverters 530 verbunden ist und der NMOS-Transistor 534 ausgeschaltet ist, da das Gate des NMOS-Transistors 534 auf einen Low-Pegel gesetzt ist. Die entsprechende Kurve der Metastabilität in Abhängigkeit von dem Ausgangszustand zeigt, dass die Schaltung am stabilen Punkt 548 betrieben wird, was an einem Punkt ist, der größer ist als der Schwellenwert 546 auf der x-Achse. Folglich ist der Ausgang der Metastabilitätsschaltung auf einem High-Pegel.
  • 13C stellt den Fall dar, bei dem der Ausgang der Inverter 528 und 530 bei ungefähr VDD/2 liegen und in einem metastabilen Zustand sind. Wie gezeigt, wird der PMOS-Transistor 532 ausgeschaltet, da die Source des PMOS-Transistors 532 ungefähr auf der gleichen Spannung liegt wie das Gate des PMOS-Transistors 532. Der NMOS-Transistor 534 zieht sein Drain auf einen Low-Pegel, da sein Gate auf VDD/2 liegt, was bei dieser Ausführungsform ausreichend ist, um den NMOS-Transistor 534 einzuschalten. Die entsprechende Kurve der Metastabilität in Abhängigkeit von dem Ausgangszustand zeigt, dass die Schaltung am metastabilen Punkt 550 betrieben wird, was an einem Punkt ist, der kleiner ist als der Schwellenwert 546 auf der x-Achse. Folglich ist der Ausgang des Metastabilitätsfilters auf einem Low-Pegel. Sobald die metastabile Bedingung des Latches gelöst ist, wird der Ausgang des Metastabilitätsfilters gemäß dem Beispiel in 14 gelöst.
  • Es ist selbstverständlich, dass der in 12 gezeigte und in 13 beschriebene Metastabilitätsfilter 502 nur ein Beispiel von vielen verschiedenen Ausführungsformen der Konfiguration eines Metastabilitätsfilters ist. Bei alternativen Ausführungsformen kann der Metastabilitätsfilter dazu ausgebildet sein, dass der Großteil des Eingangszustandes des Metastabilitätsfilters auf einen High-Ausgangszustand statt auf einen Low-Ausgangszustand abgebildet wird. Ein Beispiel einer solchen Ausführungsform wird in 14 dargestellt. Bei einer Ausführungsform sind die Gates des PMOS-Transistors 532 und des NMOS-Transistors 534 mit dem Ausgang des Inverters 528 verbunden, die Source des NMOS-Transistors 534 ist mit dem Ausgang des Inverters 530 verbunden und die Source des PMOS-Transistors 532 ist mit VDD verbunden. Wie gezeigt, wird eine metastabile Bedingung an den Ausgängen der Inverter 528 und 530 auf einen High-Ausgangszustand statt auf einen Low-Ausgangszustand abgebildet, wie es bei den in den 13A bis C gezeigten gefilterten Latches der Fall ist. Bei weiteren Ausführungsformen kann der Metastabilitätsfilter mithilfe eines Verstärkers wie zum Beispiel einem Operationsverstärker und/oder einer Vergleichseinheit umgesetzt werden, die mit den Ausgängen der Inverter 528 und 530 verbunden sind. Bei einer Ausführungsform wird eine Spannungsdifferenz zwischen den Ausgängen der Inverter 528 und 530 mit einem Schwellenwert verglichen. Der Schwellenwert kann zum Beispiel eingestellt werden, um einen metastabilen Bereich auf einen vorbestimmten Logikzustand abzubilden. Bei weiteren alternativen Ausführungsformen können andere Filterschaltungen und -verfahren verwendet werden, um einen metastabilen Bereich auf einen vorbestimmten Ausgang abzubilden.
  • 15 zeigt einen Ablaufplan einer Ausführungsform eines Verfahrens 600 zum Betreiben eines Arbiters. Im Schritt 602 empfängt der Arbiter erste Anfragesignale, die ersten Datensignalen entsprechen. Bei einigen Ausführungsformen werden diese Anfragesignale erzeugt, indem jedes individuelle der ersten Datensignale überwacht wird. Störungen in diesen Datensignalen können zum Beispiel mithilfe eines Metastabilitätsfilters unterdrückt werden, wie er in Bezug auf die 12 und 13A bis 13C beschrieben wird. Im Schritt 604 wird jedes der ersten Anfragesignale hinsichtlich einer Aktivität überwacht. Bei einigen Ausführungsformen wird ein XOR-Gatter verwendet und ein Müller-C-Gatter wird verwendet, um die ersten Datensignale zu überwachen, wie es in Bezug auf die 9 und 11 beschrieben wird. Wenn auf mindestens einem der ersten Anfragesignale eine Aktivität erkannt wird, werden alle ersten Anfragesignale im Schritt 606 zwischengespeichert. Dieser Schritt kann ausgeführt werden, indem ein Zustand einer Latchbank (engl.: latch bank) von einem durchlässigen Zustand in einen Haltezustand geändert wird.
  • Im Schritt 608 wird eine Ermittlung ausgeführt, welches der ersten Anfragesignale aktiviert wurde. Dies kann zum Beispiel ausgeführt werden, indem der Ausgang der Latchbank in dem Haltezustand ausgewertet wird. Als Nächstes werden im Schritt 610 Gültigkeitssignale für die Daten übertragen, die jedem der aktiven ersten Anfragesignale entsprechen. Im Schritt 612 wird ein globales Anfragesignal zu einer ersten Verzögerungszeit nach Zwischenspeichern der ersten Anfragesignale übertragen. Diese globale Anfrage kann zum Beispiel an den FSM 40 weitergeleitet werden. Im Schritt 614 werden Bestätigungssignale übertragen, die den aktiven oder erfassten Anfragesignalen entsprechen. Bei einigen Ausführungsformen können die Schritte 612 und 614 gleichzeitig ausgeführt werden, da der FSM die globale Anfrage zum gleichen Zeitpunkt erhält, an dem die Bestätigungssignale an alle erfassten Anfragen zurückgesendet werden.
  • Im Schritt 616 wartet der Arbiter auf eine globale Bestätigung als Reaktion auf das globale Anfragesignal. Sobald dieses globale Bestätigungssignal empfangen wurde, wird der Arbiter im Schritt 618 freigegeben. Das Freigeben des Arbiters kann zum Beispiel umfassen, dass Latches in der Latchbank durchlässig gemacht werden und dass die globale Anfrage deaktiviert wird, sowie das globale Bestätigungssignal deaktiviert wird, welches an die erfassten Anfragen gesendet wurde. Der Betrieb geht wieder zurück zum Schritt 602, wo die ersten Anfragesignale empfangen wurden.
  • Gemäß einer Ausführungsform umfasst eine Schaltung einen Arbiter, der dazu ausgebildet ist, erste Anfragesignale zu empfangen, die ersten Datensignalen entsprechen, jedes der jeweiligen ersten Anfragesignale hinsichtlich einer Aktivität zu überwachen, alle entsprechenden ersten Anfragesignale zwischenzuspeichern, wenn bei mindesten einem ersten Anfragesignal eine Aktivität erkannt wurde, zu ermitteln, welches der ersten Anfragesignale aktiviert wurde, Gültigkeitssignale für die Daten zu übertragen, die den aktivierten ersten Anfragesignalen entsprechen, zu einer ersten Verzögerungszeit Zwischenspeichern der ersten Anfragesignale ein globales Anfragesignal zu übertragen und Bestätigungssignale zu übertragen, die den ermittelten Gültigkeitssignale für die Daten entsprechen. Jedes erste Anfragesignal ist einem jeweiligen ersten Datensignal zugeordnet.
  • Bei einer Ausführungsform ist der Arbiter außerdem dazu ausgebildet, die ersten Datensignale zwischenzuspeichern, wenn bei mindestens einem der ersten Anfragesignale die Aktivität erkannt wird. Die Schaltung kann außerdem einen endlichen Zustandsautomaten umfassen, der mit den zwischengespeicherten ersten Datensignalen und den Gültigkeitssignalen für die Daten verbunden ist. Der endliche Zustandsautomat ist dazu ausgebildet, das globale Anfragesignal von dem Arbiter zu empfangen und ein Bestätigungssignal an den Arbiter zu übertragen, nachdem das globale Anfragesignal empfangen wurde.
  • Bei einigen Ausführungsformen ist der Arbiter dazu ausgebildet, die ersten Datensignale an eine weitere Schaltung weiterzugeben. Die Schaltung kann einen endlichen Zustandsautomaten umfassen, der mit den ersten Datensignalen und den Gültigkeitssignalen für die Daten verbunden ist. In diesem Zusammenhang ist der endliche Zustandsautomat dazu ausgebildet, das globale Anfragesignal von dem Arbiter zu empfangen und ein globales Bestätigungssignal an den Arbiter zu übertragen, nachdem das globale Anfragesignal empfangen wurde. Der Arbiter kann auch die weitergegebenen ersten Datensignale akzeptieren, die nicht zwischengespeichert wurden.
  • Bei einer Ausführungsform umfasst der Arbiter eine Latchanordnung, die für jedes erste Anfragesignal ein Latch aufweist. Die Latchanordnung kann auch für jedes erste Datensignal ein Latch umfassen. Der Arbiter kann auch dazu ausgebildet sein, ein globales Bestätigungssignal zu empfangen und das globale Anfragesignal zu deaktivieren, nachdem das globale Anfragesignal empfangen wurde. Bei einigen Ausführungsformen überwacht der Arbiter jedes der jeweiligen ersten Anfragesignale, indem ein Flankenübergang in den ersten Anfragesignalen ermittelt wird, ein statisches Latch eingestellt wird, wenn der Flankenübergang ermittelt wird, und ein Ausgang des statischen Auffangregisters gefiltert wird.
  • Gemäß einer weiteren Ausführungsform umfasst eine Schaltung eine Latchanordnung, die eine Vielzahl von Latches aufweist, die mit einer entsprechenden Vielzahl von ersten Anfragesignalen verbunden ist, und ein erstes Logikgatter, das Eingänge aufweist, die mit der Vielzahl von ersten Anfragesignalen verbunden sind. Das erste Logikgatter ist dazu ausgebildet, zu ermitteln, wenn mindestens eines der ersten Anfragesignale aktiviert wird. Die Schaltung umfasst außerdem eine Übergangserkennungsschaltung, der einen ersten Eingang zu einem Ausgang des ersten Logikgatters, einen zweiten Eingang, der mit einem globalen Bestätigungseingang verbunden ist, und einen Ausgang aufweist, der mit einer globalen Anfragesignalklemme verbunden ist und Klemmen der Latchanordnung enthält. Die Schaltung umfasst auch eine Bestätigungserkennungsschaltung, der Eingänge, die mit den Ausgängen der ersten Vielzahl von Latches verbunden sind, und Ausgänge aufweist, die mit den ersten Bestätigungsausgangsklemmen verbunden sind. Bei einer Ausführungsform ist das erste Logikgatter mithilfe eines ODER-Gatters umgesetzt.
  • Bei einer Ausführungsform wird die Latchanordnung in einen Haltezustand gesetzt, nachdem die Übergangserkennungsschaltung einen Übergang an dem Ausgang des ersten Logikgatters erkannt hat, und die Latchanordnung wird in einen durchlässigen Zustand gesetzt, nachdem die Übergangserkennungsschaltung erkannt hat, dass der globale Bestätigungseingang aktiviert wurde. Bei einigen Ausführungsformen umfasst die Bestätigungserkennungsschaltung eine Vielzahl von UND-Gattern, die einen ersten Eingang, der mit einem entsprechenden Ausgang der ersten Vielzahl von Latches verbunden ist, einen zweiten Eingang, der mit der globalen Anfragesignalklemme verbunden ist, und einen Ausgang aufweisen, der mit einer jeweiligen Klemme der ersten Bestätigungsausgangsklemme verbunden ist.
  • Die Schaltung kann außerdem eine Vielzahl von Anfrageerzeugern umfassen, die jeweils Eingänge, die mit einer Vielzahl von ersten Datensignalen verbunden sind, und Ausgänge aufweisen, die mit der entsprechenden Vielzahl von ersten Anfragesignalen verbunden sind. Jeder aus der Vielzahl von Anfrageerzeugern umfasst ein erstes Latch, das einen Eingang aufweist, der mit einem der Vielzahl von Datensignalen verbunden ist, ein zweites Latch, das einen Eingang aufweist, der mit einem Ausgang des ersten Latches verbunden ist, ein erstes Logikgatter, das mit den Ausgängen des ersten Latches und des zweiten Latches verbunden ist, und ein zweites Logikgatter, das einen ersten Eingang, der mit einem Ausgang des ersten Gatters verbunden ist, und einen zweiten Eingang aufweist. Das erste Logikgatter ist dazu ausgebildet, zu ermitteln, ob die Ausgänge des ersten Latches und des zweiten Latches unterschiedliche Werte aufweisen, und das zweite Logikgatter ist dazu ausgebildet, ein Low-Ausgangssignal zu produzieren, wenn der erste und der zweite Eingang in einem ersten Zustand sind, ein High-Ausgangssignal zu produzieren, wenn der erste und der zweite Eingang in einem zweiten Zustand sind, und einen hochohmigen Ausgang zu produzieren, wenn der erste und der zweite Eingang in einem dritten Zustand und in einem vierten Zustand sind. Jeder aus der Vielzahl von Anfrageerzeugern umfasst außerdem ein statisches Latch, das mit einem Ausgang des zweiten Logikgatters verbunden ist, sodass ein Ausgang des zweiten Gatters mit den Steuereingängen des ersten Latches und des zweiten Latches verbunden ist.
  • Bei einer Ausführungsform umfasst jeder aus der Vielzahl von Anfrageerzeugern außerdem einen Metastabilitätsfilter, der zwischen das statische Latch und die Steuereingänge des ersten Latches und des zweiten Latches geschaltet ist. Der Metastabilitätsfilter kann ein Inverter, der einen Eingang aufweist, der mit einer ersten Klemme des statischen Latches verbunden ist, und eine Stromversorgungsklemme umfassen, die mit einer zweiten Klemme des statischen Latches verbunden ist.
  • Bei einer Ausführungsform umfasst die Latchanordnung außerdem eine zweite Vielzahl von Latches, die mit einer entsprechenden Vielzahl von ersten Datensignalen verbunden ist. Die Schaltung kann auch eine Verzögerungsschaltung umfassen, der zwischen den Ausgang der Übergangserkennungsschaltung und die globale Anfragesignalklemme geschaltet ist.
  • Gemäß einer weiteren Ausführungsform umfasst ein Verfahren zum Betreiben eines Arbiters ein Empfangen erster Anfragesignale, die ersten Datensignalen entsprechen, wobei jedes erste Anfragesignal einem jeweiligen ersten Datensignal zugeordnet ist. Das Verfahren umfasst auch ein Überwachen von jedem der ersten Anfragesignale hinsichtlich einer Aktivität, ein Zwischenspeichern aller ersten Anfragesignale, wenn bei mindesten einem ersten Anfragesignal eine Aktivität erkannt wurde, ein Ermitteln, welches der ersten Anfragesignale aktiviert wurde, ein Übertragen von Gültigkeitssignalen für die Daten, die den aktivierten ersten Anfragesignalen entsprechen, ein Übertragen eines globalen Anfragesignals zu einem ersten Verzögerungszeitpunkt nach Zwischenspeichern der ersten Anfragesignale und ein Übertragen von Bestätigungssignalen, die den ermittelten Gültigkeitssignale für die Daten entsprechen.
  • Das Verfahren kann außerdem ein Zwischenspeichern der ersten Datensignale umfassen, wenn bei mindestens einem der ersten Anfragesignale eine Aktivität erkannt wird. Alternativ umfasst das Verfahren ein Weitergeben der ersten Datensignale an eine weitere Schaltung. Als Reaktion auf das übertragene globale Anfragesignal können die ersten Datensignale durch die weitere Schaltung zwischengespeichert werden.
  • Gemäß einer weiteren Ausführungsform umfasst eine Schaltung ein erstes Logikgatter, das dazu ausgebildet ist ein Low-Ausgangssignal zu produzieren, wenn ein erster Eingang und ein zweiter Eingang in einem ersten digitalen Zustand sind, ein High-Ausgangssignal zu produzieren, wenn der erste Eingang und der zweite Eingang in einem zweiten digitalen Zustand sind, und einen hochohmigen Ausgang zu produzieren, wenn der erste Eingang und der zweite Eingang in einem dritten digitalen Zustand und in einem vierten digitalen Zustand sind. Die Schaltung umfasst auch ein statisches Latch, das mit einem Ausgang des ersten Logikgatters verbunden ist, und einen Metastabilitätsfilter, der mit dem statischen Latch verbunden ist.
  • Bei einer Ausführungsform umfasst das erste Logikgatter eine Vielzahl von Transistoren, die zwischen einen ersten Bezugsknoten und einen zweiten Bezugsknoten in Reihe geschaltet sind. Die Vielzahl von Transistoren kann einen ersten Transistor eines ersten Typs, der einen Steuerknoten umfasst, der mit dem ersten Eingang verbunden ist, einen zweiten Transistor des ersten Typs, der einen Steuerknoten umfasst, der mit dem zweiten Eingang verbunden ist, einen dritten Transistor eines zweiten Typs, der einen Steuerknoten umfasst, der mit dem ersten Eingang verbunden ist, und einen vierten Transistor des zweiten Typs umfassen, der einen Steuerknoten umfasst, der mit dem zweiten Eingang verbunden ist. Der zweite Typ ist das Gegenteil von dem ersten Typ. Das statische Latch kann ein erste Inverter, der einen Eingang aufweist, der mit dem Ausgang des ersten Logikgatters verbunden ist, und einen zweiten Inverter umfassen, der einen Eingang, der mit dem Ausgang des ersten Inverters verbunden ist, und einen Ausgang aufweist, der mit dem Ausgang des ersten Logikgatters verbunden ist. Bei einer Ausführungsform umfasst der Metastabilitätsfilter einen fünften Transistor des ersten Typs, der einen ersten Knoten, der mit dem ersten Bezugsknoten verbunden ist, und einen Steuerknoten aufweist, der entweder mit dem Eingang des ersten Inverters oder dem Ausgang des ersten Inverters verbunden ist, und einen sechsten Transistor des zweiten Typs, der einen ersten Knoten, der mit dem zweiten Bezugsknoten verbunden ist, einen zweiten Knoten, der mit einem zweiten Knoten des fünften Transistors verbunden ist, und einen Steuerknoten aufweist, der mit dem Anderen entweder des Eingangs des ersten Inverters oder des Ausgangs des ersten Inverters verbunden ist. Bei einer beispielhaften Ausführungsform ist der erste Typ ein NMOS und der zweite Typ ein PMOS.
  • Bei einer Ausführungsform umfasst der Metastabilitätsfilter einen Inverter, der einen Lieferknoten, der mit einem Ausgang des statischen Latches verbunden ist, und einen Eingangsknoten aufweist, der entweder mit einem Eingang des statischen Latches oder einem Ausgang des statischen Latches verbunden ist. Vorteile von einigen Ausführungsformen umfassen die Fähigkeit eine Arbitrierung für einen Daten- und Anfragevektor beliebiger Länge auszuführen, sowie die Fähigkeit eine Arbitrierung mithilfe von Datensignalen auszuführen, die übertaktet sind und Störungen enthalten. Ein weiterer Vorteil von Ausführungsformen verschiedener Arbitrierungssysteme ist die Fähigkeit, einen Zustandsautomaten mithilfe eines Arbiters zum Handhaben gleichzeitiger Ereignisse in verschiedenen Kanälen einfach zu synthetisieren.
  • Es wird darauf hingewiesen, dass Merkmale, die in Bezug auf eine spezifische Figur erklärt wurden, mit Merkmalen andere Figuren kombiniert werden können, selbst in den Fällen, bei denen dies nicht ausdrücklich erwähnt wurde. Außerdem können die Verfahren der Erfindung entweder vollständig als Softwareumsetzungen mithilfe der entsprechenden Prozessorbefehle oder in hybriden Umsetzungen erreicht werden, die eine Kombination aus Hardwarelogik und Softwarelogik verwenden, um die gleichen Ergebnisse zu erreichen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Jens Sparsø, ed.: Abschnitt 5.8 “Mutual exclusion, arbitration and metastability,” in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN – A Systems Perspective, Kluwer Academic Publishers, 2001 [0005]
    • Jens Sparsø, ed.: Abschnitt 5.8, “Mutual exclusion, arbitration and metastability” in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN – A Systems Perspective, Kluwer Academic Publishers, 2001 [0029]

Claims (26)

  1. Schaltung, die aufweist: ein Arbiter, der dazu ausgebildet ist: erste Anfragesignale, die ersten Datensignalen entsprechen, zu empfangen, wobei jedes erste Anfragesignal einem entsprechenden ersten Datensignal zugeordnet ist; jedes der jeweiligen ersten Anfragesignale hinsichtlich einer Aktivität zu überwachen; alle entsprechenden ersten Anfragesignale zwischenzuspeichern, wenn eine Aktivität bei mindestens einem der ersten Anfragesignale erkannt wird, zu ermitteln, welches der ersten Anfragesignale aktiviert wurde; Gültigkeitssignale für die Daten, die den aktivierten ersten Anfragesignalen entsprechen, zu übertragen, ein globales Anfragesignal zu einer ersten Verzögerungszeit, nachdem die ersten Anfragesignale zwischengespeichert wurden, zu übertragen, und Bestätigungssignale, die den ermittelten Gültigkeitssignalen für die Daten entsprechen, zu übertragen.
  2. Schaltung nach Anspruch 1, bei der der Arbiter außerdem dazu ausgebildet ist, die ersten Datensignale zwischenzuspeichern, wenn bei mindestens einem der ersten Anfragesignale die Aktivität erkannt wird.
  3. Schaltung nach Anspruch 2, der außerdem einen endlichen Zustandsautomaten aufweist, der mit den zwischengespeicherten ersten Datensignalen und den Gültigkeitssignalen für die Daten verbunden ist, wobei der endliche Zustandsautomat dazu ausgebildet ist, das globale Anfragesignal von dem Arbiter zu empfangen und ein Bestätigungssignal an den Arbiter zu übertragen, nachdem das globale Anfragesignal empfangen wurde.
  4. Schaltung nach einem der Ansprüche 1 bis 3, bei der der Arbiter dazu ausgebildet ist, die ersten Datensignale an eine weitere Schaltung weiterzugeben.
  5. Schaltung nach einem der Ansprüche 1 bis 4, der außerdem einen endlichen Zustandsautomaten aufweist, der mit den ersten Datensignalen und den Gültigkeitssignalen für die Daten verbunden ist, wobei der endliche Zustandsautomat dazu ausgebildet ist, das globale Anfragesignal von dem Arbiter zu empfangen und ein globales Bestätigungssignal an den Arbiter zu übertragen, nachdem das globale Anfragesignal empfangen wurde.
  6. Schaltung nach einem der Ansprüche 1 bis 5, bei der der Arbiter eine Latchanordnung umfasst, die für jedes erste Anfragesignal ein Latch aufweist.
  7. Schaltung nach Anspruch 6, bei der die Latchanordnung außerdem für jedes erste Datensignal ein Latch umfasst.
  8. Schaltung nach einem der Ansprüche 1 bis 7, bei der der Arbiter außerdem dazu ausgebildet ist, ein globales Bestätigungssignal zu empfangen und das globale Anfragesignal zu deaktivieren, nachdem das globale Anfragesignal empfangen wurde.
  9. Schaltung nach einem der Ansprüche 1 bis 8, bei der der Arbiter jedes der jeweiligen ersten Anfragesignale überwacht, indem ein Flankenübergang in den ersten Anfragesignalen ermittelt wird, ein statisches Latch eingestellt wird, wenn der Flankenübergang ermittelt wird, und ein Ausgang des statischen Latches gefiltert wird.
  10. Schaltung, die aufweist: eine Latchanordnung, die eine erste Vielzahl von Latches umfasst, die mit einer entsprechenden Vielzahl von ersten Anfragesignalen verbunden ist; ein erstes Logikgatter, das Eingänge aufweist, die mit der Vielzahl von ersten Anfragesignalen verbunden sind, wobei das erste Logikgatter dazu ausgebildet ist, zu ermitteln, wenn mindestens eines der ersten Anfragesignale aktiviert wird; eine Übergangserkennungsschaltung, die aufweist: einen ersten Eingang, der mit einem Ausgang des ersten Logikgatters verbunden ist, einen zweiten Eingang, der mit einem globalen Bestätigungseingang verbunden ist, und einen Ausgang, der mit einer globalen Anfragesignalklemme und Halteklemmen der Latchanordnung verbunden ist; und einen Bestätigungserkennungsschaltung, der Eingänge, die mit den Ausgängen der ersten Vielzahl von Latches verbunden sind, und Ausgänge aufweist, die mit den ersten Bestätigungsausgangsklemmen verbunden sind.
  11. Schaltung nach Anspruch 10, bei der das erste Logikgatter ein ODER-Gatter umfasst.
  12. Schaltung nach Anspruch 10 oder 11, bei der die Latchanordnung in einen Haltezustand gesetzt wird, nachdem die Übergangserkennungsschaltung einen Übergang an dem Ausgang des ersten Logikgatters erkannt hat, und bei der die Latchanordnung in einen durchlässigen Zustand gesetzt wird, nachdem die Übergangserkennungsschaltung erkannt hat, dass der globale Bestätigungseingang aktiviert wurde.
  13. Schaltung nach einem der Ansprüche 10 bis 12, bei der die Bestätigungserkennungsschaltung eine Vielzahl von UND-Gattern umfasst, die einen ersten Eingang, der mit einem entsprechenden Ausgang der ersten Vielzahl von Latches verbunden ist, einen zweiten Eingang, der mit der globalen Anfragesignalklemme verbunden ist, und einen Ausgang, der mit einer jeweiligen Klemme der ersten Bestätigungsausgangsklemme verbunden ist, aufweisen.
  14. Schaltung nach einem der Ansprüche 10 bis 13, der außerdem eine Vielzahl von Anfrageerzeugern aufweist, die Eingänge, die mit einer Vielzahl von ersten Datensignalen verbunden sind, und Ausgänge, die mit der entsprechenden Vielzahl von ersten Anfragesignalen verbunden sind, aufweisen, wobei jeder der Vielzahl von Anfrageerzeugern aufweist: ein erstes Latch, das einen Eingang aufweist, der mit einem Signal aus der Vielzahl von ersten Datensignalen verbunden ist; ein zweites Latch, das einen Eingang aufweist, der mit einem Ausgang des ersten Latches verbunden ist; ein erstes Logikgatter, das mit Ausgängen des ersten Latches und des zweiten Latches verbunden ist, wobei das erste Logikgatter dazu ausgebildet ist, zu ermitteln, ob die Ausgänge des ersten Latches und des zweiten Latches unterschiedliche Werte aufweisen; ein zweites Logikgatter, das einen ersten Eingang, der mit einem Ausgang des ersten Gatters verbunden ist, und einen zweiten Eingang aufweist, wobei das zweite Logikgatter dazu ausgebildet ist, ein Low-Ausgangssignal zu produzieren, wenn der erste und der zweite Eingang in einem ersten Zustand sind, ein High-Ausgangssignal zu produzieren, wenn der erste und der zweite Eingang in einem zweiten Zustand sind, und einen hochohmigen Ausgang zu produzieren, wenn der erste und der zweite Eingang in einem dritten Zustand und in einem vierten Zustand sind; und ein statisches Latch, das mit einem Ausgang des zweiten Logikgatters verbunden ist, wobei ein Ausgang des zweiten Gatters mit den Steuereingängen des ersten Latches und des zweiten Latches verbunden ist.
  15. Schaltung nach Anspruch 14, bei der jeder aus der Vielzahl von Anfrageerzeugern außerdem ein Metastabilitätsfilter umfasst, das zwischen das statische Latch und die Steuereingänge des ersten Latches und des zweiten Latches geschaltet ist.
  16. Schaltung nach Anspruch 15, bei der der Metastabilitätsfilter einen Inverter, der einen Eingang aufweist, der mit einer ersten Klemme des statischen Latches verbunden ist, und eine Stromversorgungsklemme, die mit einer zweiten Klemme des statischen Latches verbunden ist, aufweist.
  17. Schaltung nach einem der Ansprüche 10 bis 16, bei der die Latchanordnung außerdem eine zweite Vielzahl von Latches aufweist, die mit einer entsprechenden Vielzahl von ersten Datensignalen verbunden sind.
  18. Schaltung nach einem der Ansprüche 10 bis 17, die außerdem eine Verzögerungsschaltung aufweist, die zwischen den Ausgang der Übergangserkennungsschaltung und die globale Anfragesignalklemme geschaltet ist.
  19. Verfahren zum Betreiben eines Arbiters, das aufweist: Empfangen erster Anfragesignale, die ersten Datensignalen entsprechen, wobei jedes erste Anfragesignal einem entsprechenden ersten Datensignal zugeordnet ist; Überwachen jedes der ersten Anfragesignale hinsichtlich einer Aktivität; Zwischenspeichern aller ersten Anfragesignale, wenn eine Aktivität bei mindestens einem der ersten Anfragesignale erkannt wird; Ermitteln, welches der ersten Anfragesignale aktiviert wurde; Übertragen von Gültigkeitssignalen für die Daten, die den aktivierten ersten Anfragesignalen entsprechen; Übertragen eines globalen Anfragesignals zu einer ersten Verzögerungszeit, nachdem die ersten Anfragesignale zwischengespeichert wurden; und Übertragen von Bestätigungssignalen, die den ermittelten Gültigkeitssignalen für die Daten entsprechen.
  20. Verfahren nach Anspruch 19, das außerdem ein Zwischenspeichern der ersten Datensignale umfasst, wenn bei mindestens einem der ersten Anfragesignale eine Aktivität erkannt wird.
  21. Verfahren nach Anspruch 19 oder 20, das außerdem ein Weitergeben der ersten Datensignale an eine weitere Schaltung umfasst.
  22. Verfahren nach Anspruch 21, das außerdem als Reaktion auf das übertragene globale Anfragesignal ein Zwischenspeichern der ersten Datensignale in Latches durch die weitere Schaltung umfasst.
  23. Schaltung, die aufweist: ein erstes Logikgatter, das dazu ausgebildet ist ein Low-Ausgangssignal zu produzieren, wenn ein erster Eingang und ein zweiter Eingang in einem ersten digitalen Zustand sind, ein High-Ausgangssignal zu produzieren, wenn der erste Eingang und der zweite Eingang in einem zweiten digitalen Zustand sind, und einen hochohmigen Ausgang zu produzieren, wenn der erste Eingang und der zweite Eingang in einem dritten digitalen Zustand und in einem vierten digitalen Zustand sind; ein statisches Latch, das mit einem Ausgang des ersten Logikgatters verbunden ist; und einen Metastabilitätsfilter, der mit dem statischen Latch verbunden ist.
  24. Schaltung nach Anspruch 23, bei der: das erste Logikgatter eine Vielzahl von Transistoren umfasst, die zwischen einen ersten Bezugsknoten und einen zweiten Bezugsknoten in Reihe geschaltet sind, wobei die Vielzahl von Transistoren umfasst: einen ersten Transistor eines ersten Typs, der einen Steuerknoten umfasst, der mit dem ersten Eingang verbunden ist, einen zweiten Transistor des ersten Typs, der einen Steuerknoten umfasst, der mit dem zweiten Eingang verbunden ist, einen dritten Transistor eines zweiten Typs, der einen Steuerknoten umfasst, der mit dem ersten Eingang verbunden ist, wobei der zweite Typ das Gegenteil von dem ersten Typ ist, und einen vierten Transistor des zweiten Typs, der einen Steuerknoten umfasst, der mit dem zweiten Eingang verbunden ist, wobei das statische Latch umfasst: einen ersten Inverter, der einen Eingang aufweist, der mit dem Ausgang des ersten Logikgatters verbunden ist, und einen zweiten Inverter, der einen Eingang, der mit einem Ausgang des ersten Inverters verbunden ist, und einen Ausgang, der mit dem Ausgang des ersten Logikgatters verbunden ist, aufweist; und wobei der Metastabilitätsfilter aufweist: einen fünften Transistor des ersten Typs, der einen ersten Knoten, der mit dem ersten Bezugsknoten verbunden ist, und einen Steuerknoten, der entweder mit dem Eingang des ersten Inverters oder dem Ausgang des ersten Inverters verbunden ist, aufweist, einen sechsten Transistor des zweiten Typs, der einen ersten Knoten, der mit dem zweiten Bezugsknoten verbunden ist, einen zweiten Knoten, der mit einem zweiten Knoten des fünften Transistors verbunden ist, und einen Steuerknoten, der mit dem Anderen von dem Eingang des ersten Inverters und dem Ausgang des ersten Inverters verbunden ist.
  25. Schaltung nach Anspruch 24, bei der der erste Typ ein NMOS ist und der zweite Typ ein PMOS ist.
  26. Schaltung nach einem der Ansprüche 23 bis 25, bei der der Metastabilitätsfilter einen Inverter aufweist, das einen Versorgungsknoten, der mit einem Ausgang des statischen Latches verbunden ist, und einen Eingangsknoten, der entweder mit einem Eingang des statischen Latches oder einem Ausgang des statischen Latches verbunden ist, aufweist.
DE102015107968.2A 2014-05-30 2015-05-20 Arbiter für asynchrone Zustandsautomaten Pending DE102015107968A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/292,040 US9626317B2 (en) 2012-05-29 2014-05-30 Arbiter for asynchronous state machines
US14/292,040 2014-05-30

Publications (1)

Publication Number Publication Date
DE102015107968A1 true DE102015107968A1 (de) 2015-12-03

Family

ID=54481608

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015107968.2A Pending DE102015107968A1 (de) 2014-05-30 2015-05-20 Arbiter für asynchrone Zustandsautomaten

Country Status (2)

Country Link
CN (1) CN105320008B (de)
DE (1) DE102015107968A1 (de)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5489865A (en) * 1992-02-28 1996-02-06 Media Vision, Inc. Circuit for filtering asynchronous metastability of cross-coupled logic gates
US5815023A (en) * 1997-03-20 1998-09-29 Sun Microsystems, Inc. Unbalanced multiplexer and arbiter combination
US8191021B2 (en) * 2008-01-28 2012-05-29 Actel Corporation Single event transient mitigation and measurement in integrated circuits
US8990466B2 (en) * 2012-05-29 2015-03-24 Infineon Technologies Austria Ag Arbiter for asynchronous state machines

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Jens Sparsø, ed.: Abschnitt 5.8 "Mutual exclusion, arbitration and metastability," in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN - A Systems Perspective, Kluwer Academic Publishers, 2001
Jens Sparsø, ed.: Abschnitt 5.8, "Mutual exclusion, arbitration and metastability" in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN - A Systems Perspective, Kluwer Academic Publishers, 2001

Also Published As

Publication number Publication date
CN105320008A (zh) 2016-02-10
CN105320008B (zh) 2019-09-27

Similar Documents

Publication Publication Date Title
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
DE102005051478B4 (de) Flashdatenspeichervorrichtung
DE112013003268B4 (de) Differenztaktsignalgenerator
CH626484A5 (de)
DE112013002090T5 (de) Hochleistungsfähige physikalische Kopplungsstrukturschicht
US7281093B1 (en) Memory apparatus for a message processing system and method of providing same
DE10303673A1 (de) Asynchrone Hüllschaltung für eine global asynchrone, lokal synchrone (GALS) Schaltung
WO2006007619A2 (de) Dezentrale fehlertolerante taktgenerierung in vlsi chips
DE102015117019A1 (de) Serielle Peripherieschnittstellen-Kettenkommunikation mit rahmengebundener Antwort
DE112013004750T5 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
DE102013209610B4 (de) Arbiter für asynchrone Zustandsautomaten
DE60130039T2 (de) Fifo-schaltungen mit geringer latenz für gemischte asynchrone und synchrone systeme
EP3685236B1 (de) Schaltung zur kopplung eines feldbusses und eines lokalbusses
DE102013107718A1 (de) Verfahren und Vorrichtungen zum Verfolgen von Verbindungselementen
DE102015108005A1 (de) Mechanismen und Geräte für neu konfigurierbare Interprozessorkommunikationen mit eingebettetem Controller
DE102012112363A1 (de) Verfahren zum Verbreiten einer Mehrzahl von Interrupts, Interrupt-Anforderungssignal-Verbreitungsschaltungen und Ein-Chip-Systeme, welche dieselben aufweisen
DE102012222581B4 (de) Schnellbypass-Speicherschaltkreis
DE102015107968A1 (de) Arbiter für asynchrone Zustandsautomaten
DE112013007735T5 (de) Dynamische Kopplungsstruktur mit partitionieren auf Emulations- und Protypentwicklungsplattformen
DE102018124375A1 (de) Betriebsverfahren eines signalempfängers, pulsbreitensteuerungund elektronische vorrichtung mit denselben
DE102008047439B4 (de) Datenumwandlung
DE102006036823B4 (de) Datensynchronisier- und -pufferschaltung zur Synchronisation von seriell empfangenen Datensignalen
US9626317B2 (en) Arbiter for asynchronous state machines
DE102007057518B4 (de) Vorrichtung und Verfahren zum Bereitstellen eines Signals zur Übertragung über eine Signalleitung
US9698784B1 (en) Level-sensitive two-phase single-wire latch controllers without contention

Legal Events

Date Code Title Description
R012 Request for examination validly filed