DE102013209610B4 - Arbiter für asynchrone Zustandsautomaten - Google Patents

Arbiter für asynchrone Zustandsautomaten Download PDF

Info

Publication number
DE102013209610B4
DE102013209610B4 DE102013209610.0A DE102013209610A DE102013209610B4 DE 102013209610 B4 DE102013209610 B4 DE 102013209610B4 DE 102013209610 A DE102013209610 A DE 102013209610A DE 102013209610 B4 DE102013209610 B4 DE 102013209610B4
Authority
DE
Germany
Prior art keywords
signals
data
signal
request
global
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.)
Active
Application number
DE102013209610.0A
Other languages
English (en)
Other versions
DE102013209610A1 (de
Inventor
Tommasso Bacigalupo
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
Application filed by Infineon Technologies Austria AG filed Critical Infineon Technologies Austria AG
Publication of DE102013209610A1 publication Critical patent/DE102013209610A1/de
Application granted granted Critical
Publication of DE102013209610B4 publication Critical patent/DE102013209610B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/366Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a centralised polling arbiter
    • 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Transfer Systems (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Bus Control (AREA)

Abstract

Arbiter zur Verarbeitung mehrerer asynchroner Datensignale (D0, D1, ...) mehrerer Kanäle, wobei jedem Kanal ein Datensignal, ein Anforderungssignal (R0, R1, ...) und ein Quittungssignal (A0, A1, ...) zugeordnet ist, wobei der Arbiter Folgendes umfasst: ein Latch-Array (320), das mehrere einzelne Latches umfasst, sowie einen Eingang, der zum Empfangen der Datensignale (D0, D1, ...) und der Anforderungssignale (R0, R1, ...) als Eingangssignale verschaltet ist, und einen Ausgang, der zum Bereitstellen eines Datenvektors (iDATA) und eines Validitätsvektors (iVALID) als Ausgangssignale verschaltet ist, wobei der Datenvektor (iDATA) Werte enthält, die von den Datensignalen (D0, D1, ...) abhängig sind, und der Validitätsvektor (iVALID) Werte enthält, die von den Anforderungssignalen (R0, R1, ...) abhängig sind, wenn das Latch-Array (320) sich in einem transparenten Zustand befindet; und logische Schaltkreise, die zu Folgendem ausgebildet sind: Überwachen der Anforderungssignale (R0, R1, ...) und Triggern des Latch-Arrays (320), wenn irgendeines der Anforderungssignale (R0, R1, ...) aktiv wird; Aktivieren eines globalen Anforderungssignals (REQ) eine Verzögerungszeit nach dem Triggern des Latch-Arrays (320); und selektives Aktivieren der Quittungssignale (A0, A1, ...) für einen Kanal oder Kanäle, für den/die ein aktives Anforderungssignal (R0, R1, ...) gelatcht worden ist.

Description

  • Die vorliegende Erfindung bezieht sich im Allgemeinen auf das Erfindungsgebiet des Entwurfs von asynchronen Schaltungen. Insbesondere bezieht sich die Erfindung auf Arbiter zum Handling mehrerer (fast) zeitgleicher Schaltungseingänge und auf die Anwendung solcher Arbiter in asynchronen Zustandsautomaten.
  • Die meisten digitalen Schaltungen, die heutzutage entworfen und angefertigt werden, sind „synchron”. Im Wesentlichen basieren synchrone Schaltungen auf zwei grundlegenden Annahmen, die ihren Entwurf bedeutend vereinfachen: (1) alle Signale sind binär, und (2) alle Komponenten nutzen einen gemeinsamen und diskreten Zeitbegriff, wie er durch ein Taktsignal definiert wird, das durch die gesamte Schaltung verteilt ist.
  • Asynchrone Schaltungen sind grundsätzlich anders. Auch sie nehmen Binärsignale an, doch es gibt keine gemeinsame und diskrete Zeit. Stattdessen verwenden diese Schaltungen Handshake-Verfahren zwischen ihren Komponenten, um die notwendige Synchronisierung, Kommunikation und Reihenfolgebildung der Operationen durchzuführen. Mit Begriffen ausgedrückt, die normalerweise in Hinsicht auf synchrone Schaltungen verwendet werden, führt dies zu einem Verhalten, das einer systematischen feinen Taktung und lokalen Takten ähnelt, die nicht phasengleich sind und deren Perioden von effektiven Schaltungsverzögerungen bestimmt werden. Dieser Unterschied verleiht den asynchronen Schaltungen inhärente Eigenschaften, die im Vergleich zu synchronen (getakteten) Schaltungen möglicherweise vorteilhaft sind (z. B. in Hinsicht auf Energieverbrauch, Operationsgeschwindigkeit, elektromagnetische Emissionen, Robustheit gegenüber Schwankungen der Versorgungsspannung, der Temperatur, von Herstellungsprozessparametern usw.).
  • Auf der anderen Seite sind auch einige Nachteile vorhanden. Asynchrone Schaltungen erfordern normalerweise eine Steuerungslogik zum Umsetzen der Handshake-Operationen, die notwendig sind, um verschiedene Schaltungselemente zu synchronisieren, da kein globales Taktsignal existiert. Die asynchrone Steuerungslogik, die den Handshake umsetzt, stellt normalerweise einen Overhead hinsichtlich der Schaltungskomplexität dar. Beispiele asynchroner Schaltungen sind beispielsweise in den Publikationen US 2011/0121857 A1 und US 5 404 556 A beschrieben. Die erstgenannte Publikation betrifft eine asynchrone Digitalschaltung mit Arbitrierungs- und Routingfunktionen für asynchrone Netzwerke. Dabei wird mit Hilfe eines Multiplexers zwishen verschiedenen Datenwegen umgeschaltet. Die zweitgenannte Publikation betrifft eine Vorrichtung zum Durchführen asynchroner Kommunikation zwischen integrierten Schaltungen.
  • Wichtige Handshake-Komponenten, die normalerweise zum Umsetzen der erwähnten Handshake-Operationen verwendet werden, erfordern, dass die Kommunikation auf mehreren (Eingangs-)Kanälen beiderseitig exklusiv ist, wenigstens an einem Punkt, an dem zwei Kanäle zu einem gemeinsamen Kanal zusammengefügt werden (siehe z. B. Jens Sparsø, Hg.: Kap. 5.8. ”Mutual exclusion, arbitration and metastability” in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN – A Systems Perspective, Kluwer Academic Publishers, 2001). Das heißt, ein High-Low-Zustandsübergang (oder umgekehrt) tritt möglicherweise zu einer gegebenen Zeit nur auf einem einzelnen Kanal auf. Zeitgleiche „Ereignisse” auf zwei oder mehr Kanälen werden normalerweise von Arbitern behandelt, die sogenannte Mutex-Elemente verwenden, um zu entscheiden, welches Ereignis zuerst verarbeitet werden soll. Allerdings sind Mutex-Elemente unerwünschten Metastabilitätseffekten ausgesetzt, wenn zwei Ereignisse zeitgleich oder fast zeitgleich auftreten (d. h. innerhalb eines kurzen Zeitraums).
  • Insbesondere beim Umsetzen endlicher Automaten (FSM, finite state machines) können gleichzeitig auftretende Ereignisse auf unterschiedlichen Kommunikationskanälen (z. B. auf unterschiedlichen Signalleitungen) problematisch sein, und geeignete Arbitrationsschaltungen (Arbiter) können erheblich komplex sein. Ein Ziel der vorliegenden Erfindung ist es, einen einfach herzustellenden Zustandsautomaten bereitzustellen, der einen Arbiter zum Handling von gleichzeitigen Ereignissen auf unterschiedlichen Kommunikationskanälen enthält. Dieses Ziel kann unter Verwendung des Arbiters nach Anspruch 1, des Systems nach Anspruch 8 und des Arbitrationsverfahrens nach Anspruch 11 erreicht werden. Unterschiedliche Ausführungsformen und weitere Entwicklungen werden durch die abhängigen Ansprüche abgedeckt.
  • Es wird ein Arbiter zur Verarbeitung mehrerer asynchroner Datensignale offenbart. Jedes Datensignal ist mit einem entsprechenden Anforderungssignal und mit einem entsprechenden Quittungssignal verknüpft. Gemäß einem Beispiel der Erfindung enthält der Arbiter ein Latch-Array, das die Datensignale und die Anforderungssignale als Eingangssignale empfängt und das einen Datenvektor und einen dazugehörigen Validitätsvektor als Ausgangssignale bereitstellt. Der Datenvektor enthält Werte, die von den Datensignalen abhängen, und der Validitätsvektor enthält Werte, die von den Anforderungssignalen abhängen, wenn der Latch in einem transparenten Zustand ist. Der Arbiter enthält weiterhin logische Schaltkreise, die dazu konfiguriert sind, die Anforderungssignale zu überwachen und den Latch zu triggern (d. h., den Latch-Ausgang „einzufrieren”), wenn irgendeines der Anforderungssignale aktiv wird. Die logischen Schaltkreise sind weiterhin dazu konfiguriert, ein globales Anforderungssignal eine Verzögerungszeit nach dem Triggern des Latches zu aktivieren und die Quittungssignale für den Kanal bzw. die Kanäle selektiv zu aktivieren, für den bzw. für die ein aktives Anforderungssignal gelatcht (zwischengespeichert) worden ist.
  • Die Erfindung kann unter Bezugnahme auf die folgenden Zeichnungen und die Beschreibung besser verstanden werden. Die Komponenten in den Figuren sind nicht notwendigerweise maßstabsgetreu, weil stattdessen die Betonung darauf gelegt wird, die Grundlagen der Erfindung zu veranschaulichen. Die Zeichnungen:
  • 1 enthält die 1a und 1b und veranschaulicht den Handshake, der Anforderungs- und Quittungssignale zwischen einem Sender und einem Empfänger in einer asynchronen Schaltung verwendet;
  • 2 enthält die 2a und 2b und veranschaulicht ein beispielhaftes Mutex-Element;
  • 3 enthält die 3a und 3b und veranschaulicht einen Arbiter zum Handling von zwei Anforderungssignalen, die an die gleiche Ressource (z. B. Empfänger) gerichtet sind;
  • 4 veranschaulicht einen Arbiter zum Handling mehrerer Anforderungssignale in einem Schritt gemäß einem Beispiel der Erfindung und dessen Anwendung in Verbindung mit einem endlichen Automaten;
  • 5 veranschaulicht eine beispielhafte Anforderungsgenerator-Schaltung, die in Verbindung mit dem Arbiter aus 4 verwendet werden kann;
  • 6 stellt Zeitdiagramme bereit, die die Funktion des Arbiters aus 4 veranschaulichen;
  • 7 veranschaulicht ein Umsetzungsbeispiel des im Beispiel in 4 veranschaulichten Zustandsautomaten;
  • 8 veranschaulicht ein Umsetzungsbeispiel der Anforderungsgenerator-Schaltung (Anforderer, requestor) aus 5; und
  • 9 veranschaulicht ein Umsetzungsbeispiel des Arbiters aus 4.
  • In den Figuren bezeichnen gleiche Referenznummern die dazugehörigen Teile.
  • In asynchronen Schaltungen ist kein globaler Systemtakt erforderlich. Stattdessen werden Handshake-Operationen zum Synchronisieren unterschiedlicher Schaltungskomponenten verwendet. 1a veranschaulicht den Datenfluss von einem Sender 10 zu einem Empfänger 20. Eine Änderung des Datensignals wird vom Sender 10 mittels des Anforderungssignals REQ signalisiert, und der Empfang der Daten wird vom Sender durch das Quittungssignal ACK signalisiert. Die Anforderungs- und Quittungssignale werden mit den Datensignalen (in 1 mit DATA bezeichnet) „gebündelt”, und somit wird dieses Konzept häufig als „Datenbündelung” bezeichnet. Der Begriff Datenbündelung bezieht sich auf Umstände, bei denen die Datensignale normale boolesche Pegel zum Codieren von Informationen verwenden und bei denen separate Anforderungs- und Quittungssignale mit den Datensignalen gebündelt werden.
  • Unterschiedliche Handshake-Protokolle sind bekannt. Die als DATA bezeichneten Signale sollten stabil sein, kurz bevor und während das Anforderungssignal REQ aktiv ist (z. B. REQ = 1). 1b veranschaulicht als ein Beispiel ein Vier-Phasen-Protokoll, worin die Anforderungs- und Quittungssignale REQ und ACK ebenfalls normale boolesche Pegel zum Codieren von Informationen verwenden. Der Begriff „Vier-Phasen” bezieht sich auf die Anzahl der Kommunikationsaktionen: (1) der Sender 10 gibt Daten (Datensignale DATA) aus und setzt das Anforderungssignal REQ auf einen High-Pegel, (2) der Empfänger 20 empfängt die Daten und setzt das Quittungssignal ACK auf einen High-Pegel, sobald die Daten korrekt empfangen oder verarbeitet worden sind, (3) der Sender 10 antwortet, indem er das Anforderungssignal REQ auf einen Low-Pegel rücksetzt (ab diesem Punkt ist nicht länger garantiert, dass die Daten valide sind), und (4) der Empfänger 20 quittiert dies, indem er das Quittungssignal ACK auf einen Low-Pegel rücksetzt. An diesem Punkt initialisiert der Sender 10 möglicherweise den nächsten Kommunikationszyklus. Obwohl das veranschaulichte Handshake-Protokoll sehr verbreitet ist, sind auch andere Protokolle verfügbar und geeignet.
  • Das oben eingeführte Protokoll nimmt an, dass der Sender 10 der aktive Teilnehmer ist, der den Datentransfer über den Kanal initialisiert. Dies ist als Push-Kanal bekannt. Das Gegenteil, d. h. der Empfänger 20 fragt nach neuen Daten, ist ebenfalls möglich und wird ein Pull-Kanal genannt. In diesem Fall sind die Richtungen der Anforderungs- und Quittungssignale REQ und ACK umgekehrt, und die Validität der Daten wird darin angezeigt, dass das Quittungssignal ACK vom Sender 10 zum Empfänger 20 läuft (Pull-Kanäle). In abstrakten Schaltbildern, die Links/Kanäle (wie in 1a) als ein Symbol zeigen, wird das aktive Ende eines Kanals oft mit einem Punkt gekennzeichnet. Die Datensignale DATA werden möglicherweise in Fällen weggelassen, in denen lediglich die Synchronisierung von zwei Schaltungskomponenten erforderlich ist, ohne dass Daten ausgetauscht werden müssen. Weiterhin kann der Datenfluss bidirektional sein (Push-/Pull-Kanäle). Obwohl sich die weitere Erörterung auf Push-Kanäle konzentriert, können die hierin eingeführten Prinzipien auch auf Pull-Kanäle und auf Push-/Pull-Kanäle angewandt werden.
  • Angesichts des in 1 veranschaulichten Datenaustausch- und Synchronisierungsmechanismus ist klar, dass Empfänger, die mehrere Eingangskanäle empfangen, (fast) zeitgleich auftretende Anforderungen bewältigen müssen (d. h. einen Zustandsübergang im Anforderungssignal REQ). Normalerweise werden sogenannte „Mutex-Elemente” verwendet (Mutex ist ein Portmanteau-Wort aus „mutually” und „exclusiv” – beiderseitig exklusiv), um sicherzustellen, dass nur eine Anforderung (oder, allgemein, ein Ereignis), die in einem speziellen von mehreren Signalen auftritt, an den Empfänger übermittelt wird.
  • Ein beispielhaftes Mutex-Element (als MUTEX bezeichnet) wird in 2 veranschaulicht. Die Eingangssignale R1 und R2 sind zwei Anforderungen, die aus zwei unabhängigen Quellen stammen, und die Aufgabe des Mutex-Elementes ist es, diese Eingänge an die dazugehörigen Ausgänge G1 und G2 auf eine solche Weise weiterzureichen, dass zu jeder gegebenen Zeit höchstens ein Ausgang aktiv ist (das heißt z. B. auf einem High-Pegel). Wenn nur eine Eingangsanforderung ankommt, ist die Operation trivial. Wenn eine Eingangsanforderung deutlich vor der anderen ankommt, wird die letzte Anforderung blockiert, bis die erste Anforderung nicht geltend gemacht wurde. Das Problem tritt auf, wenn beide Eingangssignale zur gleichen Zeit geltend gemacht werden. Dann ist das Mutex-Element MUTEX erforderlich, um eine arbiträre Entscheidung zu treffen, und hier tritt die Metastabilität ins Blickfeld. Da dieses Problem der Metastabilität allgemein bekannt ist, wird es hier nicht weiter erörtert.
  • Es wird Bezug genommen auf die Literatur (siehe z. B. Jens Sparsø, Hg.: Kap. 5.8. ”Mutual exclusion, arbitration and metastability” in: PRINCIPLES OF ASYNCHRONOUS CIRCUIT DESIGN – A Systems Perspective, Kluwer Academic Publishers, 2001). Im Beispiel aus 2b ist das Mutex-Element aus einem Flipflop (umgesetzt mit den zwei NAND-Gattern) und einem dieser nachgeschalteten Metastabilitätsfilter (umgesetzt durch die CMOS-Transistorschaltung) zusammengesetzt.
  • Mutex-Elemente können zum Umsetzen eines Arbiters verwendet werden, der verwendet werden kann, um den Zugang zu einer Ressource (z. B. einem 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 veranschaulichte Arbiter-Umsetzung ebenfalls allgemein bekannt ist, erfolgt hier nur eine grobe Erklärung, und es wird Bezug auf das oben erwähnte Fachbuch von J. Sparsø genommen.
  • In dem Beispiel in 3b stellt das Mutex-Element MUTEX sicher, dass die (Anforderungs-)Signale G1 und G2 (an der Schnittstelle a'-aa') beiderseitig exklusiv sind. Auf das Mutex-Element folgen zwei AND-Gatter, deren Zweck es ist sicherzustellen, dass Handshakes auf den y1/A1- und y2/A2-Kanälen (an der Schnittstelle b'-bb') beiderseitig exklusiv sind. Das heißt, dass das Anforderungssignal y2 nur High werden kann, wenn das Quittungssignal A1 Low ist, und dass das Anforderungssignal y1 nur High werden kann, wenn das Quittungssignal A2 Low ist. Wenn die Handshake-Funktion auf einem Kanal im Gange ist, blockiert der Arbiter auf diese Weise die Handshake-Funktion auf dem anderen Kanal. In Fällen, in denen der Arbiter mehr als zwei Eingänge behandeln muss, ist die Arbiter-Schaltung erheblich komplexer. Das mit „C” bezeichnete Gatter ist ein Muller-C Element, das ebenfalls ausführlich in dem oben erwähnten Fachbuch von J. Sparsø erörtert wird.
  • In Fällen, in denen der Arbiter zum Handling von Eingängen verwendet wird, die an einen endlichen Automaten (FSM) geliefert werden, kann nur ein Eingangssignal zur Zeit vom FSM verarbeitet werden. Beim Handling mehrerer Eingänge ist weiterhin eine große Anzahl von Mutex-Elementen (angeordnet z. B. in einer Ketten- oder Baumstruktur) erforderlich, wobei jedes Mutex-Element die aus der Metastabilität entstehenden, erwähnten Probleme bewältigen muss, was den Arbiter möglicherweise erheblich verlangsamt. Angesichts dessen ist ein neuartiger Arbiter entwickelt worden, der zum Handling mehrerer Eingangskanäle in der Lage ist und es somit einem endlichen Automaten (FSM) ermöglicht, mehrere „Ereignisse” (z. B. Anforderungen) in einem einzelnen Schritt zu verarbeiten. Ein Beispiel des Arbiters wird hierin nachstehend unter Bezugnahme auf die 4 und 5 beschrieben.
  • 4 veranschaulicht ein Blockschaltbild eines asynchron betriebenen endlichen Automaten 40 (FSM), der mehrere Eingangsdatensignale D0, D1, D2, ..., Dn empfängt, wobei jedes Datensignal D0, D1, D2, ..., Dn mit dazugehörigen Anforderungssignalen R0, R1, R2, ..., Rn und dazugehörigen Quittungssignalen A0, A1, A2, ..., An verknüpft ist, um eine Handshake-Operation zu ermöglichen, z. B. wie hinsichtlich 1 erklärt. Die Eingangsdatensignale D0, D1, D2, ..., Dn und die dazugehörigen Anforderungssignale R0, R1, R2, ..., Rn werden nicht direkt an den FSM 40 geliefert. Die Daten- und Anforderungssignale Di, Ri (wobei i = 0, 1, 2, ..., n) werden stattdessen an einen Arbiter 30 geliefert, der dazu konfiguriert ist, die Anforderungssignale Ri auf allen Kanälen (Kanal 0 bis Kanal n) zeitgleich zu überwachen.
  • Sobald irgendein Anforderungssignal aktiv wird (z. B. einen High-Pegel annimmt), werden die Werte aller Anforderungs- und Datensignale Ri, Di in Latches (d. h. in einem Latch-Array) gespeichert. Zu diesem Zweck ist der Arbiter dazu konfiguriert, zeitgleich alle Anforderungssignale Ri auf Zustandsübergänge zu überwachen (darauf, ob Signale aktiv werden). Wenn eine oder mehr Anforderungen detektiert werden und die Signalwerte im Latch-Array gespeichert worden sind, wartet der Arbiter eine vordefinierte Zeitspanne ab, um es allen Latches zu ermöglichen, sich von möglichen metastabilen Zuständen zu erholen. Schließlich wird ein globales Anforderungssignal REQ erzeugt und an den FSM 40 geliefert. Die gelatchten Werte der Eingangsdatensignale D0, D1, ..., Dn werden dem FSM 40 als Datenvektor iDATA(0:n) bereitgestellt, wobei ein zusätzlicher Datenvektor iVALID(0:n) (Validitätsvektor) erzeugt und dem FSM 40 bereitgestellt wird, der die validen Daten anzeigt (z. B. die Werte derjenigen Datensignale Di, für die das dazugehörige gelatchte Anforderungssignal aktiv ist). Somit kann der Datenvektor folgendermaßen ausgedrückt werden: iDATA = (D0, D1, D2 ..., Dn), und der zusätzliche Datenvektor kann folgendermaßen ausgedrückt werden: iVALID = (R0, R1, R2 ..., Rn).
  • Das heißt, dass diejenigen Elemente Di des Datenvektors iDATA valide sind, für die das dazugehörige Anforderungssignal Ri, das im zusätzlichen Datenvektor iVALID gespeichert ist, aktiv ist (z. B. Ri = 1). Wenn der FSM die Datenvektoren iDATA, iVALID empfangen hat, wird ein dazugehöriges Quittungssignal ACK erzeugt und an den Arbiter zurückgesendet, wie hinsichtlich des allgemeinen Beispiels in 1 erklärt wurde. Das Quittungssignal ACK wird an diejenigen Kanäle übermittelt, für die ein aktives Anforderungssignal Ri detektiert worden ist, das heißt Ai = ACK, wenn Ri = aktiv (für i = 0, 1, 2, ... n).
  • Mit einem Arbiter, der wie oben erklärt betrieben wird, können mehrere Eingangsdatensignale zeitgleich verarbeitet werden. Nur die Anforderungen, die erfolgreich an den FSM 40 übermittelt werden, werden zurück an den Sender quittiert. Die Anforderungen, die nicht erfasst werden, werden im nächsten „Zyklus” verarbeitet. Es sei allerdings angemerkt, dass eine feste Zyklusperiode nicht erforderlich ist. Der Arbiter und der FSM bleiben stattdessen beim Verarbeiten von Anforderungssignalen, solange wie irgendein Anforderungssignal aktiv ist. Im Resultat erfolgt ein automatisches Verarbeiten von noch-nicht-bedienten Ereignissen (d. h. von aktiven Anforderungen, die noch nicht verarbeitet worden sind).
  • 5 veranschaulicht einen „Anforderungsgenerator”, der eine Schaltung 35 ist, die dazu konfiguriert ist, ein Anforderungssignal als Reaktion auf eine Aktualisierung der Daten DATAi (i = 0, 1, 2, ..., n) zu erzeugen. Allerdings sind separate Anforderungsgeneratoren nicht erforderlich, wenn die Signalquelle (oder -quellen), die die Datensignale DATAi bereitstellt, in der Lage ist, geeignete, zu den Daten gehörige Anforderungssignale bereitzustellen. Es sei angemerkt, dass DATAi möglicherweise ein Einzelbit Signal oder ein n-Bit Signal darstellt, z. B. ein mit einem Datenwort von mehreren Bits verknüpftes Abtastsignal. Ein Umsetzungsbeispiel des Anforderungsgenerators wird weiter unten unter Bezugnahme auf 8 erörtert.
  • 6 veranschaulicht die relevanten Signale (Anforderungs-, Daten- und Quittungssignale), die von einem Arbiter 30 verarbeitet werden, wie oben unter Bezugnahme auf 4 erklärt wurde. Im vorliegenden Beispiel werden nur zwei Datensignale D0 und D1 und sowohl zwei dazugehörige Anforderungssignale R0 und R1 als auch zwei dazugehörige Quittungssignale A0 und A1 in Betracht gezogen. Es sei angemerkt, dass die Datensignale D0 und D1 als valide in Betracht gezogen werden können, wenn die dazugehörigen Anforderungssignale R0 und R1 aktiv werden. Die beiden oberen Diagramme in 6 veranschaulichen die Anforderungssignale R0, R1, wobei beide Anforderungen (ansteigende Flanken) nahezu gleichzeitig am Arbiter ankommen. Die Anforderung R1 kommt allerdings ein bisschen später an, und somit triggert die Anforderung R0 das Latch-Array zu einem Zeitpunkt t1. Der Arbiter übermittelt dann die gelatchten Daten- und Anforderungssignale an eine nachfolgende Schaltung (z. B. an den FSM 40 im Beispiel aus 4). Um Metastabilitätseffekte zu vermeiden, wird für eine vordefinierte Zeit t2 – t1 gewartet, bevor das „globale” Anforderungssignal REQ (siehe 4) erzeugt wird, das an den Empfänger der Daten geliefert wird (z. B. an den FSM 40). Der Empfänger (z. B. der FSM 40) erzeugt das Quittungssignal ACK, wenn die Daten korrekt empfangen worden sind. Das Signal ACK wird an die Kanäle verteilt, für die ein aktives Anforderungssignal im Latch-Array erfasst worden ist; im vorliegenden Beispiel aus 6 wird das ACK-Signal an die Kanäle 0 und 1 als Signale A0 und A1 verteilt.
  • 7 veranschaulicht ein Umsetzungsbeispiel eines endlichen Automaten (FSM) 40, der möglicherweise in Verbindung mit dem Arbiter 30 verwendet wird, wie im Beispiel aus 4 gezeigt wird. Der hier veranschaulichte FSM ist ein Zustandsautomat des Typs Mealy und enthält eine logische Schaltung 41, die dazu konfiguriert ist, aktualisierte Zustandsvariablen S'(0:k) aus den aktuellen Zustandsvariablen S(0:k) und den von Vektor iVALID(0:n) gegebenen Eingängen zu berechnen, das heißt S'(0:k) = f(S(0:k), iVALID(0:n)). Wenn die Berechnung abgearbeitet ist, dann werden die aktualisierten Zustandsvariablen S'(0:k) im Zustandsregister 43 gelatcht und werden somit zu den aktuellen Zustandsvariablen S(0:k), die auch als Ausgang des FSM angesehen werden können. Das Latchen der aktualisierten Zustandsvariablen S'(0:k) wird durch eine verzögerte Version ENB des Anforderungssignals REQ getriggert, das vom Arbiter 30 (siehe 4) bereitgestellt wird, wobei die Verzögerung (siehe Verzögerungselement 42) zwischen den Signalen REQ und ENB so entworfen wird, dass die Berechnung der aktualisierten Zustandsvariablen S'(0:k) abgearbeitet ist, bevor das Signal ENB aktiv wird und das Zustandsregister triggert (das auch als Latch-Array angesehen werden kann). Die verzögerte Version ENB des Anforderungssignals REQ wird ebenfalls zurück an den Arbiter als Quittungssignal ACK geliefert, um zu signalisieren, dass der Datenvektor iVALID(0:n) erfolgreich verarbeitet worden ist und dass der FSM zum Empfangen neuer Daten bereit ist. Es sei angemerkt, dass die hier vorgestellte Umsetzung als ein Beispiel betrachtet wird und dass z. B. eine Muller-Pipeline anstatt eines Zustandsregisters auf Flipflop-Basis zum Speichern verwendet werden kann.
  • Die 8 und 9 veranschaulichen Umsetzungsbeispiele der Anforderungsgenerator-Schaltung 35 aus 5 bzw. des Arbiters 40 aus 4. Die Anforderungsgenerator-Schaltung 35 empfängt ein Eingangsdatensignal DATAi (z. B. ein 1-Bit Signal im vorliegenden Beispiel) und stellt ein dazugehöriges Paar Anforderungssignal Ri und Ausgangsdatensignal Di als Reaktion auf einen Zustandsübergang (High nach Low und Low nach High) im Eingangsdatensignal DATAi bereit. Wenn das Anforderungssignal Ri nach einem Zustandsübergang des Eingangsdatensignals DATAi aktiv ist, dann werden alle nachfolgenden Zustandsübergänge ignoriert, bis ein Quittungssignal Ai empfangen wird. Das Datensignal DATAi ist nicht notwendigerweise ein 1-Bit Signal, sondern kann auch ein Multi-Bit Signal sein, das a – n parallele Bits enthält.
  • 8 veranschaulicht ein Umsetzungsbeispiel des in 5 abgebildeten Anforderungsgenerators 35. In einem stabilen Zustand (initialisiert z. B. durch ein Signal Ai = 1) ist der Ausgang des OR-Gatters 353 aktiv (z. B. auf einem High-Pegel), und somit ist der Latch 355 transparent, während sich der Latch 356 im „Haltezustand” befindet (d. h. den Ausgang unabhängig vom Eingang beibehält). Als ein Resultat kann sich das Eingangsdatensignal DATAi durch den Latch 355 ausbreiten und ist direkt als Datensignal Di verfügbar. Die Ausgänge der beiden Latches 355 und 356 werden beide als Eingänge an das XOR-Gatter 354 geliefert. Im stabilen Zustand ist der Ausgang des XOR-Gatters 354 inaktiv (d. h. auf einem Low-Pegel). Wenn allerdings das Eingangsdatensignal DATAi seinen Pegel ändert (d. h. wenn einen Flanke im Signal DATAi auftritt), ändert sich der Ausgang des transparenten Latches 355 ebenfalls, während der Ausgang des undurchsichtigen Latches 356 beibehalten wird, und somit wird der Ausgang des XOR-Gatters 354 aktiv (d. h. er ändert sich auf einen High-Pegel).
  • Der aktive Ausgang des XOR-Gatters 354 triggert das Muller-C Gatter 351, und somit wird das Anforderungssignal Ri ebenfalls aktiv. Auf solche Weise erzeugt die Flanke im Eingangsdatensignal DATAi eine Anforderung. Das aktive Anforderungssignal Ri veranlasst (über das OR-Gatter 353) den Latch 355, seinen Zustand in einen Haltezustand zu ändern, während der Latch 356 transparent wird. Zu der Zeit sind die Ausgänge der beiden Latches – wieder – gleich, und somit kehrt der Ausgang des XOR-Gatters 354 in einen inaktiven Zustand (Low-Pegel) zurück. Wenn es das Quittungssignal Ai empfängt, wird das Muller-C Gatter 351 erneut getriggert (über den Inverter 352), und die Latches 355 und 356 ändern erneut ihren Zustand (Latch 355 wird transparent, und Latch 356 behält seinen Ausgang), weil das Quittungssignal Ai über das OR-Gatter 353 an die Latches übermittelt wird. An diesem Punkt ist der Anforderungsgenerator „frei”, um erneut das Datensignal DATAi zu überwachen und die nächste Anforderung nach Feststellen der nächsten Flanke im Datensignal DATAi zu erzeugen.
  • Es sei angemerkt, dass der Anforderungsgenerator 35 dazu konfiguriert ist, das Ausgangsdatensignal Di etwas früher als das dazugehörige Anforderungssignal Ri zu erzeugen, um es dem Arbiter zu ermöglichen, das Datensignal Di zuverlässig zu erfassen. Dieser Zeitunterschied ist durch die vom XOR-Gatter 354 und dem Muller-C Gatter 351 verursachte Ausbreitungsverzögerung bedingt.
  • Der in 9 veranschaulichte Arbiter 40 latcht die Anforderungssignale R0, R1 usw. und die Datensignale D0, D1 usw. im Mehrkanal-Latch 320. Der Latch ist transparent, wenn das Freigabesignal Low ist (EN = 0). In diesem Fall enthält der Ausgangsvektor iVALID die Anforderungssignale (d. h. iVALID = {R0, R1, ..., Rn}), und der Ausgangsvektor iDATA enthält die Datensignale (d. h. iDATA = {D0, D1, ..., Dn}). Als Reaktion auf das erste Anforderungssignal Ri, das aktiv wird, wird der Latch getriggert (Freigabesignal EN = 1), die Ausgangswerte (d. h. die Werte der Ausgangsvektoren iVALID und iDATA) werden „eingefroren”, und das globale Anforderungssignal REQ wird erzeugt. Der Latch 320 wird nicht abgeschaltet (d. h. transparent gesetzt), bis ein Quittungssignal ACK empfangen wird. Eine typische Signalsequenz (d. h. ein Anforderungs-Quittungs-Zyklus) wird nachstehend beschrieben, um die Funktion des Arbiters aus 9 zu veranschaulichen.
  • Nur zu Veranschaulichungszwecken wird angenommen, dass alle Anforderungs- und Quittungssignale Ri, Ai, REQ, ACK zu Anfang inaktiv sind (Ri = 0 und Ai = 0 für alle relevanten Werte von i, REQ = 0, ACK = 0). Weiterhin ist auch das Haltesignal HOLD (Ausgang des Muller-C Gatters 302) zu Anfang inaktiv (HOLD = 0), und somit ist das Latch-Array 320 transparent. Unter diesen Umständen sind die Werte der Eingangsdatensignale nicht relevant, der Ausgangsdatenvektor iVALID umfasst die aktuellen Werte der Eingangsdatensignale (d. h. iDATA = {D0, D1, ..., Dn}), was ein Resultat davon ist, dass das Latch-Array 320 transparent ist.
  • Für die weitere Erörterung wird angenommen, dass eines der Eingangssignaldaten und das dazugehörige Anforderungssignal aktiv werden (z. B. D0 = 1 und, sehr kurze Zeit später, R0 = 1). Als ein Resultat davon, dass das Latch-Array 320 transparent ist, werden die Werte an den Latch-Ausgang übermittelt, und somit werden iVALID(0) und iDATA(0) aktiv (iVALID(0) = R0 = 1 und iDATA(0) = D0 = 1). Dieses Resultat veranlasst den Ausgang des AND-Gatters X0, aktiv zu werden. Weil die Ausgänge der AND-Gatter X0, X1 usw. alle an das OR-Gatter 306 (als Eingänge) geliefert werden, wird der Ausgang RD des OR-Gatters 306 aktiv, wenn wenigstens eines der AND-Gatter ein aktives Anforderungssignal detektiert (RD ist die Abkürzung für „request detected”-Anforderung detektiert). Das heißt RD = 1, wenn (und nur wenn) wenigstens eines der Anforderungssignale Ri aktiv ist.
  • Wenn wenigstens eine Anforderung detektiert wird (RD = 1), dann schaltet das Muller-C Gatter 302 sein Ausgangssignal HOLD auf einen High-Pegel (HOLD = 1). Um eine definierte Verzögerungszeit TD später wird auch das verzögerte HOLD-Signal HOLDDEL aktiv (Verzögerungselement 303). Ebenfalls triggert (d. h. schließt) ein aktives HOLD-Signal den Latch mittels des OR-Gatters 304. Als Folge davon werden die Latch-Array-Ausgänge iVALID(0:n) und iDATA(0:n) „eingefroren”, und Änderungen an den Latch-Array-Eingängen haben keine Wirkung mehr auf die Ausgangsvektoren.
  • Einer der anderen Latch-Eingänge (d. h. Ri und/oder Di, mit i > 0 im vorliegenden Beispiel) könnte einen Zustandsübergang zu der Zeit „gesehen” haben, zu der das Latch-Array 320 getriggert worden ist. In diesem Fall sind die Latch-Array-Ausgänge möglicherweise metastabil geworden. Aus diesem Grund sollte nichts unternommen werden, bis sich diese möglicherweise metastabilen Latches wieder erholt haben. Eine definierte Erholungszeit wird vom Verzögerungselement 303 sichergestellt, so dass die Latches des Latch-Arrays 320 eine Zeit TD zur Verfügung haben, um sich von metastabilen Zuständen zu erholen.
  • Das verzögerte HOLD-Signal HOLDDEL wird dann (nachdem die Verzögerungszeit TD abgelaufen ist) als globales Anforderungssignal REQ ausgegeben. Zu der Zeit, zu der das globale Anforderungssignal aktiv wird, wird der Ausgang des AND-Gatters 305 ebenfalls aktiv, weil jetzt beide Signale HOLD und HOLDDEL aktiv sind. Als Folge davon empfangen alle Anforderer, für die ein aktives Anforderungssignal (im vorliegenden Beispiel nur R0 bzw. iVALID(0)) im Latch-Array „gefangen” worden ist, ein dazugehöriges aktives Quittungssignal (im vorliegenden Beispiel nur Signal A0) über die AND-Gatter Yi (i = 0, 1, ... n). Dies kann als selektive Quittung für alle Kanäle x, für die iVALID(x) aktiv ist, angesehen werden. Nach dem Empfang der (selektiven) Quittungssignale Ai werden die dazugehörigen Anforderer (im vorliegenden Beispiel der Anforderer 0) ihre Anforderungssignale Ri abschalten.
  • Wenn der FSM, der die Arbiter-Ausgangsvektoren iVALID(0:n) und iDATA(0:n) empfangen und verarbeitet hat, antwortet, indem er das globale Quittungssignal ACK aktiviert, dann deaktiviert das Muller-C Gatter 302 (das das ACK-Signal über den Inverter 301 empfängt) seinen Ausgang (HOLD = 0). Weiterhin werden die selektiven Quittungssignale Ai über das AND-Gatter 305 und die AND-Gatter Yi (i = 0, 1, ... n) deaktiviert. Eine Verzögerungszeit TD später wird auch das globale Anforderungssignal REQ (entspricht HOLDDEL) deaktiviert, was verursacht, dass das Latch-Array 320 erneut transparent wird (Freigabesignal EN wird 0 gesetzt über das OR-Gatter 304). Unter diesen Umständen ist der Arbiter im Leerlauf und bereit, weitere Anforderungen zu verarbeiten, die an irgendeinem Eingangskanal (von irgendeinem Anforderer) auftreten.
  • Obwohl verschiedene Ausführungsbeispiele der Erfindung offenbart worden sind, ergibt sich für Fachleute, dass verschiedene Änderungen und Modifikationen vorgenommen werden können, die einige der Vorteile der Erfindung erreichen werden, ohne damit vom Gedanken und Schutzbereich der Erfindung abzuweichen. Für Durchschnittsfachleute wird offensichtlich sein, dass andere Komponenten, die die gleichen Funktionen ausführen, in geeigneter Weise ausgetauscht werden können. Es soll erwähnt werden, dass Merkmale, die unter Bezugnahme auf eine spezielle Figur erklärt worden sind, mit Merkmalen aus anderen Figuren kombiniert werden können, auch dort, wo dies nicht ausdrücklich erwähnt worden ist. Weiterhin können die Verfahren der Erfindung entweder in reinen Software-Umsetzungsformen unter Verwendung der geeigneten Prozessorbefehle verwirklicht werden oder in hybriden Umsetzungsformen, die eine Kombination aus Hardware-Logik und Software-Logik nutzen, um die gleichen Resultate zu verwirklichen. Es ist beabsichtigt, dass solche Modifikationen des erfindungsgemäßen Konzepts durch die beigefügten Ansprüche abgedeckt sind.

Claims (16)

  1. Arbiter zur Verarbeitung mehrerer asynchroner Datensignale (D0, D1, ...) mehrerer Kanäle, wobei jedem Kanal ein Datensignal, ein Anforderungssignal (R0, R1, ...) und ein Quittungssignal (A0, A1, ...) zugeordnet ist, wobei der Arbiter Folgendes umfasst: ein Latch-Array (320), das mehrere einzelne Latches umfasst, sowie einen Eingang, der zum Empfangen der Datensignale (D0, D1, ...) und der Anforderungssignale (R0, R1, ...) als Eingangssignale verschaltet ist, und einen Ausgang, der zum Bereitstellen eines Datenvektors (iDATA) und eines Validitätsvektors (iVALID) als Ausgangssignale verschaltet ist, wobei der Datenvektor (iDATA) Werte enthält, die von den Datensignalen (D0, D1, ...) abhängig sind, und der Validitätsvektor (iVALID) Werte enthält, die von den Anforderungssignalen (R0, R1, ...) abhängig sind, wenn das Latch-Array (320) sich in einem transparenten Zustand befindet; und logische Schaltkreise, die zu Folgendem ausgebildet sind: Überwachen der Anforderungssignale (R0, R1, ...) und Triggern des Latch-Arrays (320), wenn irgendeines der Anforderungssignale (R0, R1, ...) aktiv wird; Aktivieren eines globalen Anforderungssignals (REQ) eine Verzögerungszeit nach dem Triggern des Latch-Arrays (320); und selektives Aktivieren der Quittungssignale (A0, A1, ...) für einen Kanal oder Kanäle, für den/die ein aktives Anforderungssignal (R0, R1, ...) gelatcht worden ist.
  2. Arbiter nach Anspruch 1, wobei das Latch-Array (320) einen Latch für jedes empfangene Datensignal und für jedes empfangene Anforderungssignal umfasst, und wobei die logischen Schaltkreise dazu konfiguriert sind, das Latch-Array (320) zu triggern, indem die einzelnen Latches des Latch-Arrays (320) von einem transparenten Zustand in einen Haltezustand gesetzt werden.
  3. Arbiter nach Anspruch 2, wobei die logischen Schaltkreise weiterhin zu Folgendem konfiguriert sind: Empfangen eines globalen Quittungssignals (ACK); und Deaktivieren des globalen Anforderungssignals (REQ), wenn das globale Quittungssignal (ACK) empfangen wird.
  4. Arbiter nach Anspruch 3, wobei die logischen Schaltkreise dazu konfiguriert sind, das globale Anforderungssignal (REQ) eine Verzögerungszeit nach dem Empfangen des globalen Quittungssignals (ACK) zu deaktivieren.
  5. Arbiter nach Anspruch 2, 3 oder 4, wobei die logischen Schaltkreise weiterhin zu Folgendem konfiguriert sind: Empfangen eines globalen Quittungssignals (ACK); und Rücksetzen der einzelnen Latches des Latch-Arrays (320) vom Haltezustand in den transparenten Zustand, wenn sie das Quittungssignal (ACK) empfangen.
  6. Arbiter nach Anspruch 5, wobei die logischen Schaltkreise dazu konfiguriert sind, die Latches eine Verzögerungszeit nach dem Empfangen des globalen Quittungssignals rückzusetzen.
  7. Arbiter nach einem der Ansprüche 1 bis 6, wobei die Anforderungssignale (R0, R1, ...), die Quittungssignale (A0, A1, ...) und/oder das globale Anforderungssignal (REQ) sich, wenn sie aktiv sind, auf einem ersten logischen Pegel und, wenn sie inaktiv oder deaktiviert sind, auf einem zweiten logischen Pegel befinden.
  8. System, das Folgendes umfasst: einen endlichen Automaten (FSM), der dazu ausgebildet ist, wenigstens zwei asynchrone Datensignale zweier Kanäle zu verarbeiten, wobei jedem Kanal ein asynchrones Datensignal (D0, D1, ...), ein Anforderungssignal (R0, R1, ...) und ein Quittungssignal (A0, A1, ...) zugeordnet ist; und einen Arbiter, der dazu ausgebildet ist, die asynchronen Datensignale (D0, D1, ...) und die dazugehörigen Anforderungssignale (R0, R1, ...) zu empfangen sowie die zugehörigen Quittungssignale (A0, A1, ...) bereitzustellen, wobei der Arbiter Folgendes umfasst: ein Latch-Array (320), das dazu ausgebildet ist, die Datensignale (D0, D1, ...) und die dazugehörigen Anforderungssignale (R0, R1, ...) als Eingangssignale zu empfangen, und das dazu ausgebildet ist, einen Datenvektor (iDATA) und einen Validitätsvektor (iVALID) als Ausgangssignale an den FSM bereitzustellen, wobei der Datenvektor (iDATA) Werte enthält, die von den Datensignalen (D0, D1, ...) abhängig sind, und der Validitätsvektor (iVALID) Werte enthält, die von den Anforderungssignalen (R0, R1, ...) abhängig sind, wenn das Latch-Array (320) sich in einem transparenten Zustand befindet; und logische Schaltkreise, die zu Folgendem ausgebildet sind: Überwachen der Anforderungssignale (R0, R1, ...) und Triggern des Latch-Arrays (320), wenn irgendeines der Anforderungssignale (R0, R1, ...) aktiv wird; Aktivieren eines globalen Anforderungssignals (REQ) eine Verzögerungszeit nach dem Triggern des Latch-Arrays (320), wobei das globale Anforderungssignal (REQ) dem FSM bereitgestellt wird; und selektives Aktivieren der Quittungssignale (A0, A1, ...) für einen Kanal oder Kanäle, für den/die ein aktives Anforderungssignal (R0, R1, ...) gelatcht worden ist, wenn ein globales Quittungssignal (ACK) vom FSM empfangen wird.
  9. System nach Anspruch 8, das weiterhin eine logische Einheit umfasst, die dazu konfiguriert ist, den Datenvektor (iDATA), den Validitätsvektor (iVALID) und einen Vektor mit Zustandsvariablen (S(0:k)) des FSM zu empfangen und aktualisierte Zustandsvariablen unter Verwendung der Zustandsvariablen und derjenigen Werte des Datenvektors (iDATA) zu berechnen, für die die dazugehörigen Werte des Validitätsvektors (iVALID) anzeigen, dass die Daten valide sind.
  10. System nach Anspruch 9, das weiterhin ein Zustandsregister (43) umfasst, das mit den logischen Schaltkreisen verschaltet ist.
  11. Arbitrationsverfahren zur Verarbeitung mehrerer asynchroner Datensignale (D0, D1, ...) mehrerer Kanäle, wobei jedem Kanal ein Datensignal, ein Anforderungssignal (R0, R1, ...) und ein Quittungssignal (A0, A1, ...) zugeordnet ist, wobei das Verfahren Folgendes umfasst: Überwachen der Anforderungssignale (R0, R1, ...); Erfassen der aktuellen Werte der Anforderungssignale (R0, R1, ...) und der dazugehörigen Datensignale (D0, D1, ...) durch Triggern eines Latch-Arrays (320), wenn irgendeines der Anforderungssignale (R0, R1, ...) aktiv wird; Aktivieren eines globalen Anforderungssignals (REQ) eine Verzögerungszeit nach dem Triggern des Latch-Arrays (320); Ausgeben des globalen Anforderungssignals (REQ) und der gelatchten Anforderungssignal- und Datensignalwerte; Empfangen, Überwachen und Auswerten eines globalen Quittungssignals (ACK); und selektives Aktivieren der Quittungssignale (A0, A1, ...) für einen Kanal oder Kanäle, für den/die ein aktives Anforderungssignal gelatcht worden ist, wenn das globale Quittungssignal (ACK) als aktiv ausgewertet wird.
  12. Verfahren nach Anspruch 11, wobei das Erfassen der aktuellen Werte im Latch das Speichern der aktuellen Werte in einem Latch-Array (320) umfasst.
  13. Verfahren nach Anspruch 12, wobei das Latch-Array (320) einen Latch für jedes empfangene Datensignal und für jedes empfangene Anforderungssignal umfasst und wobei das Erfassen der aktuellen Werte das Setzen der einzelnen Latches des Latch-Arrays (320) von einem transparenten Zustand in einen Haltezustand umfasst.
  14. Verfahren nach Anspruch 11, 12 oder 13, das weiterhin das Deaktivieren des globalen Anforderungssignals (REQ) umfasst, wenn das globale Quittungssignal (ACK) empfangen wird.
  15. Verfahren nach Anspruch 14, wobei das Deaktivieren des globalen Anforderungssignals (REQ) das Deaktivieren des globalen Anforderungssignals (REQ) eine Verzögerungszeit nach dem Empfangen des globalen Quittungssignals (ACK) umfasst.
  16. Verfahren nach einem der Ansprüche 11 bis 15, wobei die Anforderungssignale (R0, R1, ...), die Quittungssignale (A0, A1, ...) und/oder das globale Anforderungssignal (REQ) sich, wenn sie aktiv sind, auf einem ersten logischen Pegel und, wenn sie inaktiv oder deaktiviert sind, auf einem zweiten logischen Pegel befinden.
DE102013209610.0A 2012-05-29 2013-05-23 Arbiter für asynchrone Zustandsautomaten Active DE102013209610B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/482,753 US8990466B2 (en) 2012-05-29 2012-05-29 Arbiter for asynchronous state machines
US13/482,753 2012-05-29

Publications (2)

Publication Number Publication Date
DE102013209610A1 DE102013209610A1 (de) 2013-12-05
DE102013209610B4 true DE102013209610B4 (de) 2016-12-29

Family

ID=49579703

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013209610.0A Active DE102013209610B4 (de) 2012-05-29 2013-05-23 Arbiter für asynchrone Zustandsautomaten

Country Status (3)

Country Link
US (1) US8990466B2 (de)
CN (1) CN103457594B (de)
DE (1) DE102013209610B4 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9626317B2 (en) 2012-05-29 2017-04-18 Infineon Technologies Austria Ag Arbiter for asynchronous state machines
DE102015107968A1 (de) * 2014-05-30 2015-12-03 Infineon Technologies Austria Ag Arbiter für asynchrone Zustandsautomaten
US10205453B2 (en) * 2017-04-10 2019-02-12 Eta Compute, Inc. Self-timed processors implemented with multi-rail null convention logic and unate gates
US11469919B2 (en) 2020-09-17 2022-10-11 Analog Devices International Unlimited Company Bidirectional communication circuit and a method for operating a bidirectional communication circuit

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404556A (en) * 1992-06-15 1995-04-04 California Institute Of Technology Apparatus for carrying out asynchronous communication among integrated circuits
US20110121857A1 (en) * 2008-07-14 2011-05-26 The Trustees Of Columbia University In The City Of New York Asynchronous digital circuits including arbitration and routing primitives for asynchronous and mixed-timing networks

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5241541A (en) * 1990-03-15 1993-08-31 International Business Machines Corporation Burst time division multiplex interface for integrated data link controller
EP0575651A1 (de) * 1992-06-24 1993-12-29 International Business Machines Corporation Mehrprozessorsystem
US6424655B1 (en) * 1998-05-13 2002-07-23 Compaq Computer Corporation Transpose table-biased arbitration
US6868529B1 (en) * 2001-08-31 2005-03-15 Turin Networks Method and apparatus for efficient implementation of round robin control unit
US7110360B1 (en) * 2001-11-05 2006-09-19 Juniper Networks, Inc. Credit-based flow control over unreliable links
FR2865292A1 (fr) * 2004-01-19 2005-07-22 St Microelectronics Sa Procede d'arbitrage hierarchise
EP1745384B1 (de) * 2004-04-28 2009-12-16 Koninklijke Philips Electronics N.V. Schaltung mit asynchroner/synchroner schnittstelle
US7395360B1 (en) * 2005-09-21 2008-07-01 Altera Corporation Programmable chip bus arbitration logic
JP2009015832A (ja) * 2007-06-07 2009-01-22 Renesas Technology Corp アクセス間調停回路、半導体装置およびアクセス間調停方法
US8669779B2 (en) * 2008-06-27 2014-03-11 The University Of North Carolina At Chapel Hill Systems, pipeline stages, and computer readable media for advanced asynchronous pipeline circuits

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404556A (en) * 1992-06-15 1995-04-04 California Institute Of Technology Apparatus for carrying out asynchronous communication among integrated circuits
US20110121857A1 (en) * 2008-07-14 2011-05-26 The Trustees Of Columbia University In The City Of New York Asynchronous digital circuits including arbitration and routing primitives for asynchronous and mixed-timing networks

Also Published As

Publication number Publication date
DE102013209610A1 (de) 2013-12-05
CN103457594A (zh) 2013-12-18
US20130326100A1 (en) 2013-12-05
US8990466B2 (en) 2015-03-24
CN103457594B (zh) 2017-03-01

Similar Documents

Publication Publication Date Title
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
DE69605037T2 (de) Taktquellensynchrone datenverbindung
DE19702326B4 (de) Einrichtung und Verfahren für eine selbstgetaktete algorithmische Ausführung
DE102013209610B4 (de) Arbiter für asynchrone Zustandsautomaten
DE102017125481A1 (de) Verfolgung verteilter hardware
DE3878908T2 (de) Hochgeschwindigkeitsbusschnittstelle mit einer niedrigen pinanzahl.
DE10303673A1 (de) Asynchrone Hüllschaltung für eine global asynchrone, lokal synchrone (GALS) Schaltung
DE112013002880T5 (de) Hochleistungsfähige physikslische Kopplungsstrukturschicht
CH626484A5 (de)
DE102015117019A1 (de) Serielle Peripherieschnittstellen-Kettenkommunikation mit rahmengebundener Antwort
DE112013004750T5 (de) Verwaltung von Aushungern und Überlastung in einem zweidimensionalen Netz mit Flusskontrolle
WO2006007619A2 (de) Dezentrale fehlertolerante taktgenerierung in vlsi chips
DE102009031870B4 (de) Dynamisches Aktualisieren der Routing-Tabelle
DE60130039T2 (de) Fifo-schaltungen mit geringer latenz für gemischte asynchrone und synchrone systeme
EP1941377A2 (de) Teilnehmerschnittstelle zwischen einem mikrocontroller und einem flexray-kommunikationsbaustein, flexray-teilnehmer und verfahren zur übertragung von botschaften über eine solche schnittstelle
DE102013107718A1 (de) Verfahren und Vorrichtungen zum Verfolgen von Verbindungselementen
DE112020004089T5 (de) Daisy-chain-streaming-modus
AT512742A1 (de) Verfahren und Verteilereinheit zur zuverlässigen Vermittlung von Synchronisationsnachrichten
EP3685236B1 (de) Schaltung zur kopplung eines feldbusses und eines lokalbusses
DE102017200456A1 (de) Recheneinheit und Betriebsverfahren hierfür
DE69621763T2 (de) Datenverarbeitungssystem mit einer asynchrongesteuerten pipeline
DE102009001898A1 (de) Schaltungsanordnungen und Verfahren zur Steuerung eines Datenaustauschs in einer Schaltungsanordnung
DE112013004782T5 (de) Techniken für robuste Kommunikation
CN112970036B (zh) 用于实施神经网络应用的卷积块阵列及其使用方法
DE102015107968A1 (de) Arbiter für asynchrone Zustandsautomaten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R082 Change of representative