-
HINTERGRUND
DER ERFINDUNG
-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft Computersysteme im allgemeinen und
betrifft insbesondere digitale Teilsysteme, die die Datenübertragung
von einem synchronen Datenbus zu einem anderen synchronen Datenbus
steuern, wobei die beiden Datenbusse zueinander asynchron sind.
-
BESCHREIBUNG
DES STANDES DER TECHNIK
-
Die
meisten modernen Computersysteme haben eine Vielzahl verschiedener
Datenbusse, die mit verschiedenen Datenraten arbeiten. Siehe beispielsweise
das Dokument US-A-5274763. Es ist in bestimmten Systemen möglich, die
verschiedenen Datenraten mit einem gemeinsamen Takt abzustimmen,
so daß die
verschiedenen Datenbusse synchron miteinander arbeiten. In vielen
Systemen arbeiten jedoch die verschiedenen Datenbusse asynchron
zueinander. Das heißt,
die Busse werden von verschiedenen Takten gesteuert, wobei die Frequenzen
und Phasen der verschiedenen Takte keine festen Beziehungen haben.
Die Daten auf einem Quellenbus können
sich also zu beliebigen Zeiten in Bezug auf die Steuerungssignale
auf einem Zielbus, zu dem die Daten übertragen werden, ändern. Da
es notwendig ist, minimale Vorbereitungs- und Haltezeiten in digitalen Bauelementen,
zum Beispiel in Registern oder anderen Speicherbauelementen einzuhalten,
ist es notwendig, die Übertragung
von Daten zwischen zwei Bussen zu synchronisieren. Dies wird durch
Synchronisationsschaltungen erreicht. Beispielsweise kann die Quelle
ein Datenstrobe-Signal erzeugen, um anzuzeigen, daß die Daten
auf dem Quellenbus zur Datenübertragung
bereit sind. Das Datenstrobe-Signal kann im allgemeinen nicht dazu verwendet
werden, den Zielbus direkt zu steuern. Vielmehr wird das Datenstrobe-Signal
zunächst
in einer Steuerschaltung, die dem Zielbus zugeordnet ist registriert,
indem das Datenstrobe-Signal mit dem Taktsignal, das den Zielbus
steuert, getaktet wird. Das registrierte Datenstrobe-Signal wird
dann verwendet, um die Datenspeicherbauelemente (zum Beispiel Register
oder Zwischenspeicher) auf dem Zielbus zu steuern. Durch Synchronisation
des Datenstrobe-Signals
(oder eines anderen Steuerungssignals) mit dem Zielbus kann sichergestellt
werden, daß die
Daten vom Quellenbus in Bezug auf den Zielbus stabil sind und deshalb übertragen
werden können.
-
Die
Synchronisation des Datenstrobe-Signals stellt zwar sicher, daß die Datenübertragungen zwischen
zwei zueinander asynchronen Bussen ohne Datenverlust erfolgt, aber
es entsteht im Zusammenhang mit Synchronisation ein zusätzlicher Zeitaufwand.
Insbesondere kann es immerhin zwei Zielbus-Taktzyklen dauern, um
die Synchronisation zu erreichen. Für gelegentliche Datenübertragungen kann
der Synchronisationsaufwand ohne weiteres toleriert werden; wenn
jedoch größere Mengen
von Daten mit Mehrfachübertragungen
(zum Beispiel Burst-Übertragungen) übertragen
werden, kann der kumulative Aufwand deutlich die Gesamtleistungsfähigkeit
eines Computersystems reduzieren. Es ist also notwendig, den Synchronisationsaufwand
für Übertragungen
von Datenbursts zwischen zwei zueinander asynchronen Bussen zu reduzieren.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung ist im Vorrichtungsanspruch 1 und im Verfahrensanspruch
6 ausgeführt.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird nachstehend in Verbindung mit den Figuren
der beigefügten
Zeichnung beschrieben, die folgendes zeigen:
-
1 stellt
eine exemplarische Schnittstelle zwischen zwei asynchronen Bussen
dar.
-
2 stellt
eine bevorzugte Ausführungsform
eines Datengültigkeitsflag-Puffers
zur Verwendung in der Schnittstelle gemäß 1 dar.
-
3 stellt
eine exemplarische Schnittstelle zwischen zwei synchronen Bussen
gemäß 1 dar,
wobei die Schnittstelle die verbesserte Synchronisationsschaltung
gemäß der vorliegenden
Erfindung einbezieht.
-
4 stellt
ein exemplarisches Zustandsdiagramm für den betreffenden Abschnitt
der Bus 2-Schnittstellenzustandsmaschine
gemäß 1 dar.
-
5 stellt
ein exemplarisches Zustandsdiagramm für den betreffenden Abschnitt
der Bus 2-Schnittstellenzustandsmaschine
gemäß 3 dar.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
1 stellt
eine exemplarische Schnittstelle 100 zwischen zwei zueinander
asynchronen Bussen in bekannten Systemen dar. Wie in 1 dargestellt, ist
die Schnittstelle mit einem ersten Bus (BUS1) 110 verbunden.
In der hier beschriebenen Ausführungsform
ist der Bus 110 vorzugsweise ein PCI-(Peripheriekomponenten-Interconnect)Bus,
der nach dem Standard arbeitet, der für den PCI-Bus zur Verwendung
in mikroprozessorgesteuerten Computern aufgestellt ist, zum Beispiel
Computer, die auf der Mikroprozessorfamilie von INTEL® (zum
Beispiel INTEL 80486, INTEL Pentium, INTEL P6 und dergleichen) beruhen.
Grundsätzlich
ist der erste Bus 110 ein 32-Bit-Datenbus mit einer Vielzahl
von Datenleitungen (dargestellt als BUS1 DATA 112), die
Daten auf dem ersten Bus 110 übertragen, einer Vielzahl von Adreßleitungen
(nicht dargestellt), die eine Quell- oder Zieladresse für Daten
bereitstellen, die auf dem ersten Bus 110 übertragen
werden, und mit einer Vielzahl von Steuerungsleitungen (die als
CONTROL 114 bezeichnet sind), die Steuerungssignale übermitteln,
die die Übertragung
von Daten auf dem ersten Bus 110 steuern. Der erste Bus 110 weist
also eine erste Bustaktleitung (BUS1 CLK) 116 mit einem
Taktsignal auf, das die Adresse, die Daten und die Steuerungssignale
auf dem ersten Bus 110 synchronisiert. Beispielsweise arbeitet
das Taktsignal auf der BUS1 CLK-Leitung 116 vorteilhafterweise
mit 33 MHz. Der Betrieb des ersten Busses 110 ist dem Fachmann
bekannt und wird hier nicht ausführlich beschrieben.
Der erste Bus 110 stellt auch eine Verbindung zu anderen
Komponenten (nicht dargestellt) in einem Computersystem her, zum
Beispiel zu einem peripheren Controller, der eine Datenquelle für den ersten
Bus 110 sein kann.
-
Die
Schnittstelle ist auch mit einem zweiten Bus 120 verbunden,
der in der hier beschriebenen Ausführungsform vorzugsweise ein
Hochgeschwindigkeits-Prozessorbus ist, zum Beispiel ein P6-Bus. In
der bevorzugten Ausführungsform
ist der zweite Bus 120 ein 64-Bit-Bus, der dafür bestimmt
ist, mit einem INTEL-P6-Mikroprozessor zu kommunizieren, und arbeitet
asynchron zu dem ersten Bus 110. Beispielsweise kann der
zweite Bus 120 vorteilhafterweise mit 50 MHz, 60 MHz oder
irgendeiner anderen Frequenz entsprechend der Taktfrequenz eines P6-Mikroprozessors
arbeiten, der mit dem zweiten Bus 120 gekoppelt ist. Obwohl
hier anhand des zweiten Busses 120 beschrieben, können andere
Prozessorbusse, die asynchron zu dem ersten Bus 110 arbeiten,
auch verwendet werden. Die besondere Charakteristik des zweiten
Busses 120 ist für
die vorliegende Erfindung nur insofern relevant, als daß die Datenübertragungen
auf dem zweiten Bus 120 asynchron zu den Datenübertragungen
auf dem ersten Bus 110 erfolgen. Der zweite Bus 120 weist
auch eine Vielzahl von Datenleitungen 122, eine Vielzahl von
Adreßleitungen
(nicht dargestellt), eine Vielzahl von Steuerungsleitungen 124 und
eine BUS2 CLK-Leitung 126 auf.
-
Wegen
der asynchronen Beziehung zwischen dem ersten Bus 110 und
dem zweiten Bus 120 weist die Schnittstelle 100 ferner
einen Datenpuffer 130 auf, der Daten vom ersten Bus 110 über die
Datenleitungen 112 und unter Steuerung der Steuerungssignale
des ersten Busses auf der Leitung 114 und des Taktsignals
auf der BUS1 CLK-Leitung 116 empfängt. Die Datenpuffer 130 speichern
die Daten zwischen und übergeben
die zwischengespeicherten Daten an den zweiten Bus 120 unter
Steuerung der Steuerungssignale auf den Steuerungsleitungen 124 vom
zweiten Bus 120 und synchron mit dem Taktsignal auf der
BUS2 CLK-Leitung 126.
-
Der
Datenpuffer 130 umfaßt
eine Vielzahl von Speicherplätzen 132.
In der Ausführungsform gemäß 1 sind
nur vier Speicherplätze 132 dargestellt,
die mit DATABUF0, DATABUF1, DATABUF2 und DATABUF3 bezeichnet sind.
Aus der nachstehenden Beschreibung geht hervor, daß zusätzliche Speicherplätze vorhanden
sein können,
um eine zusätzlichen
Datenspeicherung zwischen den beiden Bussen zu ermöglichen.
Beispielsweise sind in einer besonders bevorzugten Ausführungsform
acht Speicherplätze
vorhanden. Die Erfindung ist ohne weiteres anhand der vier gezeigten
Speicherplätze
verständlich.
Jeder der Speicherplätze 132 speichert
64 Datensignale. Die Eingänge
der Speicherplätze 132 sind
gleichermaßen
mit den BUS1 DATA-Leitungen 112 verbunden. Die Ausgangssignale
der Speicherplätze 132 werden
als Eingangssignale an einen 64 Bit breiten 4:1-Multiplexer (MUX) 134 übergeben. Wenn,
wie bereits ausgeführt,
zusätzliche
Speicherplätze
(zum Beispiel acht) bereitzustellen sind, wird der Multiplexer 134 erweitert,
um dementsprechend zusätzliche
Gruppen von Eingängen
bereitzustellen (zum Beispiel würde
der Multiplexer 134 in einer solchen Ausführungsform
zu einem 8:1-Multiplexer
werden). Der Multiplexer 134 wird durch eine Bus 2-Schnittstellenzustandsmaschine 140 über ein
Paar Ansteuerungsleitungen 142 gesteuert. Insbesondere betreibt
die Bus 2-Schnittstellenzustandsmaschine einen
Ausgangszeiger, der auf den Speicherplatz mit der nächst höheren Nummer
nach dem Speicherplatz zeigt, von der die vorherigen Daten zum zweiten Bus 120 übertragen
wurden. Es versteht sich, daß der
Ausgangszeiger ein Modulo-4-Ausgangszeiger ist, der 0, 1, 2, 3,
0 zählt,
so daß der
Ausgangszeiger zu dem DATABUF0-Speicherplatz zeigt, der auf den DATABUF3-Speicherplatz folgt.
-
Als
Antwort auf den Ausgangszeigerwert auf den Ansteuerungsleitungen 142 wählt der
Multiplexer 134 die Daten von einem der vier Speicherplätze 132 als
die Quelle der Ausgangsdaten, um sie dem zweiten Bus 120 zu übergeben,
vorausgesetzt, daß die Daten
auf dem gewählten
Speicherplatz gültig
sind, wie nachstehend beschrieben wird. Die gewählten Daten werden in einem
64 Bit breiten Register 150 eingetragen, das durch das
BUS2 CLK-Signal auf der Leitung 126 getaktet wird, so daß die Daten
mit dem zweiten Bus 120 synchronisiert sind. Das Register 150 wird
ferner durch ein Freigabeeingangssignal auf einer Freigabeleitung 152 gesteuert.
Wenn die Freigabeleitung 152 nicht aktiv ist, sind die
Datenausgänge
des Registers 150 nicht aktiv, unabhängig von den Daten, die im
Register 150 eingetragen sind. Wenn die Freigabeleitung 152 aktiv
ist, gibt das Register 150 die eingetragenen Daten an den
zweiten Bus 120 über eine
Vielzahl von BUS2 DATA-Leitungen 122 aus. Die Freigabeleitung 152 wird
von der Bus 2-Schnittstellenzustandsmaschine 140 gesteuert,
um das Register 150 nur dann freizugeben, wenn die Schnittstelle 100 gewählt ist,
um Daten zum zweiten Bus 120 zu übertragen.
-
Daten
vom ersten Bus 110 werden im Datenpuffer 130 unter
Steuerung einer Bus 1-Schnittstellenzustandsmaschine 160 gespeichert.
Die Bus 1-Schnittstellenzustandsmaschine 160 empfängt die Steuerungssignale
und das BUS1 CLK-Signal vom ersten Bus 110 über die
Steuerungsleitungen 114 und die BUS1 CLK-Leitung 116.
Die Bus 1-Schnittstellenzustandsmaschine 160 reagiert auf
ein Datenbereit-Steuerungssignal, das von den Steuerungsleitungen 114 übergeben
wird, um ein gewähltes
Datenstrobe-Signal für
die Datenspeicherplätze 132 über eine
der acht Datenstrobe-Signalleitungen 164 zu erzeugen. (Zwei
Datenstrobe-Leitungen sind für
jeden Datenspeicherplatz 132 in der bevorzugten Ausführungsform
vorgesehen, um 32 Datenbits aus dem ersten Bus 110 für entsprechende
obere und untere Abschnitte jedes Datenspeicherplatzes 132 freizugeben.)
Die Datenstrobe-Leitungen 164 arbeiten als Taktsignale
für die
Datenspeicherplätze 132,
so daß die
Daten auf den BUS1 DATA-Leitungen 112 in einem gewählten der
Datenspeicherplätze 132 entsprechend
der aktiven der Datenstrobe-Leitungen 164 gespeichert werden.
Die Bus 1-Schnittstellenzustandsmaschine 160 arbeitet auf
konventionelle Weise, um den Datenpuffer 130 als FIFO-Ringpuffer (Durchlaufpuffer)
zu steuern. Das heißt,
die Bus 1-Schnittstellenzustandsmaschine 160 betreibt
einen Eingangszeiger auf einen aktuellen der Eingangsspeicherplätze 132,
der der nächstverfügbare leere Speicherplatz
im Datenpuffer 130 ist. Wenn Daten auf dem gewählten Speicherplatz 132 eingeschrieben
sind, wird der Eingangszeiger auf die nächsthöhere Zahl erhöht. Der
Eingangszeiger ist ein Modulo-4-Zeiger (in der beschriebenen Ausführungsform mit
vier Speicherplätzen),
so daß,
wenn der Eingangszeiger von einem Wert 3 ausgehend inkrementiert
wird, er zu 0 wird. Somit kann der Datenpuffer 130 als "Ringpuffer" angesehen werden,
wobei DATABUF0 an DATABUF3 angrenzt.
-
Die
Bus 1-Schnittstellenzustandsmaschine 160 gibt eine Vielzahl
von Flagsetzsignalen auf einer Gruppe von Leitungen 166 aus,
die als Eingangssignale für
jeweilige Setzeingänge
(S) der Flagpuffer 170 vorgesehen sind, die eine Vielzahl
(zum Beispiel vier) von Datengültigkeitsflag-Pufferspeicherplätzen umfassen.
Wie ausführlicher
nachstehend in Verbindung mit 2 beschrieben,
werden die Flagsetzsignale mit dem BUS1 CLK-Signal auf der Signalleitung 116 synchronisiert,
die als jeweilige erste Takteingangssignale an jede der Flagspeicherzellen
im Flagpuffer 170 übergeben
werden. Der Flagpuffer 170 speichert vier Daten-gültig-Flags
(FLAG0, FLAG1, FLAG2 und FLAG3), wobei ein Daten-gültig-Flag
jeweils einem der Pufferspeicherplätze (DATABUF0 ... DATABUF3) 132 im
Datenpuffer 130 entspricht. Ein nicht aktives Daten-gültig-Flag
zeigt an, daß der
entsprechende Pufferspeicherplatz 132 leer ist und daß Daten
auf diesem Pufferspeicherplatze 132 gespeichert werden
können.
Ein aktives Daten-gültig-Flag
zeigt an, daß auf
dem entsprechenden Pufferspeicherplatz 132 gültige Daten
gespeichert sind und daß keine
weiteren Daten auf diesem Pufferspeicherplatz gespeichert werden
können.
Ein aktives Daten-gültig-Flag
zeigt auch der Bus 2-Schnittstellenzustandsmaschine (nachstehend
beschrieben) an, daß die
Daten auf dem entsprechenden Pufferspeicherplatz zur Datenübertragung
zum zweiten Bus 120 bereit sind. Das Daten-gültig-Flag wird gesetzt, wenn
die Daten auf dem jeweiligen Datenpufferspeicherplatz gespeichert
sind. Das Daten-gültig-Flag
wird gelöscht,
wenn die Daten aus dem jeweiligen Datenpufferspeicherplatz zum zweiten
Bus 120 übertragen
sind.
-
Die
Daten-gültig-Flags
im Flagpuffer 170 werden über eine Gruppe von Daten-gültig-Flag-Leitungen 172 als
Eingangssignale zu einem ersten 4:1-Flagmultiplexer (MUX) 180 übergeben.
Der erste Flagmultiplexer 180 wird durch ein Paar Bus 1-Ansteuerungsleitungen 182 von
der Bus 1-Schnittstellenzustandsmaschine 160 gesteuert.
Die Bus 1-Schnittstellenzustandsmaschine 160 steuert das Paar
Bus 1-Ansteuerungsleitungen 182, um den aktuellen Wert
des Eingangszeigers zu codieren. Der erste Flagmultiplexer 180 wählt das
Daten-gültig-Flag
entsprechend dem Datenspeicherplatz, zu dem der Eingangszeiger gegenwärtig zeigt,
so daß das
Ausgangssignal des Multiplexers 180 ein Daten-gültig-Flag
ist, das anzeigt, ob die Daten auf dem aktuellen Eingangsspeicherplatz
bereits gültig
sind. Das heißt,
das gewählte
Daten-gültig-Flag
zeigt an, ob die Daten, die vorher auf dem gewählten Datenpufferplatz gespeichert
worden sind, bereits zum zweiten Bus 120 übertragen
worden sind (das Daten-gültig-Flag
ist dann schon "ungültig") oder ob die vorher
auf dem gewählten
Datenpufferspeicherplatz gespeicherten Daten noch nicht an den zweiten
Bus 120 übertragen
worden sind (das Daten-gültig-Flag ist
noch "gültig").
-
Die
Daten-gültig-Flags
im Flagpuffer 170 sind in einen bekannten Zustand (zum
Beispiel alle Daten-gültig-Flags
nicht aktiv) über
ein SYSTEM RESET-Signal auf einer Leitung 174 rücksetzbar.
Das SYSTEM RESET-Signal ist ein herkömmliches Rücksetzsignal, das erzeugt wird,
wenn die Stromversorgung für
das Computersystem eingeschaltet wird, wenn das Computersystem vom
Anwender zurückgesetzt
wird oder dergleichen.
-
Das
Ausgangssignal des ersten Flagmultiplexers 180 wird als
Dateneingangssignal an einen Bus 1-Daten-gültig-Synchronisierer 190 mit
einem ersten Bus 1-Synchronisierer-Flipflop 192 übergeben.
Ein Datenausgangssignal des ersten Bus 1-Synchronisierer-Flipflops 192 wird
als Dateneingangssignal an ein zweites Bus 1-Synchronisierer-Flipflop 194 übergeben.
Die beiden Bus 1-Synchronisierer-Flipflops 192, 194 werden
von dem BUS1 CLK-Signal auf der Taktleitung 116 getaktet. Die
Daten, die vom zweiten Bus 1-Synchronisierer-Flipflop 194 ausgegeben
werden, werden als Eingangssignal an die Bus 1-Schnittstellenzustandsmaschine 160 über eine
DATA VALID 1-Datenleitung 196 übergeben. Das gewählte Gültig-Flag
wird als Rückkopplung
für die
Bus 1-Schnittstellenzustandsmaschine bereitgestellt, um anzuzeigen,
ob der Datenspeicherplatz, der gegenwärtig vom Eingangszeiger in
der Zustandsmaschine gewählt
ist, zur Speicherung neuer Daten verfügbar ist oder ob keine neuen
Daten angenommen werden können.
Es versteht sich, daß auch
andere Typen von Datensynchronisierern verwendet werden können.
-
Die
Daten-gültig-Flags
im Flagpuffer 170 werden über eine Gruppe von Daten-gültig-Flagleitungen 172 als
Eingangssignale an einen zweiten 4:1-Flagmultiplexer (MUX) 200 übergeben.
Der zweite Flagmultiplexer 200 wird von einem Paar Bus 2-Ansteuerungsleitungen 202 von
der Bus 2-Schnittstellenzustandsmaschine 140 gesteuert.
Die Bus 2-Ansteuerungsleitungen 202 werden so gesteuert, daß sie den
Ausgangszeigerleitungen 142 entsprechen, die den Datenspeicherplatz 132 im
Datenpuffer 130 als die Quelle für Daten wählt, die an den zweiten Bus 120 auszugeben
sind. Das Ausgangssignal des zweiten Flagmultiplexers 200 zeigt
an, ob der gegenwärtig
gewählte
Datenspeicherplatz gültige
Daten hat oder ob die Daten auf diesem Speicherplatz bereits übertragen
worden sind und nicht mehr gültig sind.
-
Das
Ausgangssignal des zweiten Flagmultiplexers 200 wird als
Dateneingangssignal an einen Bus 2-Daten-gültig-Synchronisierer 210 übergeben, der
ein erstes Bus 2-Synchronisierer-Flipflop 212 umfaßt. Ein
Datenausgangssignal des ersten Bus 2-Synchronisierer-Flipflops 212 wird
als Dateneingangssignal an das zweite Bus 2-Synchronisierer-Flipflop 214 übergeben.
Die beiden Bus 2-Synchronisierer-Flipflops 212, 214 werden
vom BUS2 CLK-Signal auf der Taktleitung 126 getaktet. Ein
Ausgangssignal des zweiten Bus 2-Synchronisierer-Flipflops 214 wird
als Eingangssignal an die Bus 2-Schnittstellenzustandsmaschine 140 über eine DATA
VALID 2-Datenleitung 216 übergeben. Die Bus 2-Schnittstellenzustandsmaschine 140 ist
also mit einer Rückkopplung
in bezug auf die Gültigkeit
der Daten auf dem Datenspeicherplatz, zu dem der Ausgangszeiger
gegenwärtig
zeigt, versehen.
-
Die
Daten-gültig-Pufferspeicherplätze (das heißt, FLAG0,
FLAG1, FLAG2 und FLAG3) im Flagpuffer 170 werden selektiv
durch die vier Flaglöschleitungen 220 gelöscht, die
von der Bus 2-Schnittstellenzustandsmaschine 140 erzeugt
werden. Jede der Flaglöschleitungen 220 ist
als jeweiliger Flaglöscheingang
(C) einer der Datengültigpufferspeicherplätze vorgesehen,
und zwar synchron mit dem BUS2 CLK auf der Signalleitung 126.
Die jeweilige Flaglöschleitung
wird aktiviert, wenn die Daten vom jeweiligen Speicherplatz im Datenpuffer 130 zum zweiten
Bus 120 übertragen
werden. Wenn beispielsweise die Bus 2-Schnittstellenzustandsmaschine 140 die
Daten auf dem DATABUF2-Speicherplatz
im Datenpuffer 130 als Ausgangsdaten für den zweiten Bus 120 wählt, aktiviert
die Bus 2-Schnittstellenzustandsmaschine 140 die
entsprechende der Flaglöschleitungen 220,
die als das Lösch-(C-)Eingang des FLAG2-Daten-gültig-Pufferspeicherplatzes
vorgesehen ist. Der FLAG2-Daten-gültig-Pufferspeicherplatz wird synchron mit
dem BUS2 CLK auf der Signalleitung 126 gelöscht.
-
2 stellt
eine bevorzugte Ausführungsform
einer der Daten-gültig-Speicherplätze 170 in 1 dar.
Insbesondere stellt 2 den FLAG0-Daten-gültig-Speicherplatz 170A dar.
Die anderen drei Daten-gültig-Speicherplätze für FLAG1,
FLAG2 und FLAG3 sind vorzugsweise identisch mit dem FLAG0-Daten-gültig-Speicherplatz.
Wie dargestellt, umfaßt
Daten-gültig-Speicherplatz 170 ein
erstes Trigger-Flipflop 300 und
ein zweites Trigger-Flipflop 302.
-
Das
erste Trigger-Flipflop 300 hat einen Takteingang 310,
der das BUS1 CLK-Signal auf der Signalleitung 116 empfängt. Das
erste Trigger-Flipflop 300 hat einen Triggerfreigabe-(TE-)Eingang 312,
der ein Ausgangssignal eines ersten UND-Gatters mit zwei Eingängen 314 empfängt. Das
erste UND-Gatter 314 hat
einen ersten, hochpegelaktiven Eingang, der ein SET_VALID_0-Signal
auf einer Signalleitung 166A (einer der Daten-gültig-Flag-Leitungen 166 in 1)
von der Bus 1-Schnittstellenzustandsmaschine 160 empfängt. Das
erste UND-Gatter 314 hat einen zweiten tiefpegelaktiven
Eingang, der das FLAG0-Daten-gültig-Flag
als Rückkopplung
auf einer Signalleitung 172A empfängt (die eine der Signalleitungen 172 in 1 ist).
Das erste Trigger-Flipflop 300 hat einen Q-Ausgang 316,
der bei einem Tief-Hoch-Übergang
des BUS1 CLK-Signals in der bevorzugten Ausführungsform Zustände ändert (zum Beispiel
von einem logischen Tiefpegel in einen logischen Hochpegel oder
von einem logischen Hochpegel in einen logischen Tiefpegel). Das
Q-Ausgangssignal des ersten Trigger-Flipflops 300 ändert sich
nur, wenn das SET_VALID_0-Signal auf der Signalleitung 166A zur
gleichen Zeit aktiv ist, in der das FLAG0-Daten-gültig-Flag
nicht aktiv ist. Wenn das SET_FLAG_0-Signal aktiv ist und das FLAG0-Daten-gültig-Flag
nicht aktiv ist, ist das Ausgangssignal des UND-Gatters 314 aktiv,
und der Q-Ausgang des ersten Trigger-Flipflops 300 wechselt
einmal bei jedem Tief-Hoch-Übergang
des BUS1 CLK-Signals von seinem Hochpegel in seinen Tiefpegel oder
von seinem Tiefpegel in seinen Hochpegel. Wenn entweder das SET_VALID_0-Signal
nicht aktiv ist oder das FLAG0-Daten-gültig-Flag
aktiv ist, ändert
sich das Q-Ausgangssignal des ersten Trigger-Flipflops 300 unabhängig von
den Änderungen
des BUS1 CLK-Signals nicht.
-
Das
zweite Trigger-Flipflop 302 hat einen Takteingang 330,
der das BUS2 CLK-Signal auf der Signalleitung 126 empfängt. Das
zweite Trigger-Flipflop 302 hat einen Triggerfreigabe-(TE-)Eingang 332, der
ein Ausgangssignal eines zweiten UND-Gatters mit zwei Eingängen 334 empfängt. Das
zweite UND-Gatter 334 hat
einen ersten, hochpegelaktiven Eingang, der ein CLR_VALID_0-Signal
auf der Signalleitung 220A (eine der Daten-gültig-Flag-Löschleitungen 220 in 1)
von der Bus 2-Schnittstellenzustandsmaschine 140 empfängt. Das
zweite UND-Gatter 334 hat einen zweiten hochpegelaktiven Eingang,
der das FLAG0-Daten-gültig-Flag
als Rückkopplung
auf der Signalleitung 172A empfängt. Das zweite Trigger-Flipflop 302 hat
einen Q-Ausgang 336, der in der bevorzugten Ausführungsform
bei einem Tief-Hoch-Übergang
des BUS2 CLK-Signals den Zustand wechselt (nämlich von einem logischen Tiefpegel
zu einem logischen Hochpegel oder von einem logischen Hochpegel
zu einem logischen Tiefpegel). Das Q-Ausgangssignal des zweiten
Trigger-Flipflops 302 ändert
sich nur, wenn das CLR_VALID-0-Signal auf der Signalleitung 220A zu der
gleichen Zeit aktiv ist, in der das FLAG0-Daten-gültig-Flag
aktiv ist. Wenn das CLR_VALID_0-Signal aktiv ist und das FLAG0-Daten-gültig-Flag aktiv ist, ist das
Ausgangssignal des UND-Gatters 334 aktiv, und der Q-Ausgang
des zweiten Trigger-Flipflops 302 wechselt einmal bei jedem
Tief-Hoch-Übergang des
BUS2 CLK-Signals von seinem Hochpegel zu seinem Tiefpegel oder von
seinem Tiefpegel zu seinem Hochpegel. Wenn entweder das CLR_VALID_0-Signal
nicht aktiv oder das FLAG0-Daten-gültig-Flag nicht aktiv ist, ändert sich das
Q-Ausgangssignal
des zweiten Trigger-Flipflops 302 unabhängig von den Änderungen
des BUS2 CLK-Signals
nicht.
-
Das
erste Trigger-Flipflop 300 hat einen Rücksetz-(RST-)Eingang 340,
und das zweite Trigger-Flipflop 302 hat
einen Rücksetz-(RST-)Eingang 342.
Die RST-Eingänge 340, 342 empfangen
das SYSTEM RESET-Signal auf der Signalleitung 174. Wenn
das SYSTEM RESET-Signal aktiv ist, werden die beiden Trigger-Flipflops 300, 302 zurückgesetzt, so
daß die
jeweiligen Q-Ausgänge
auf ihre nicht aktiven Tiefpegel zurückgesetzt werden.
-
Die
Q-Ausgangssignale des ersten und zweiten Trigger-Flipflops 300, 302 werden
als jeweilige erste und zweite Eingangssignale an ein Exklusiv-ODER-Gatter 350 übergeben.
Ein Ausgangssignal des Exklusiv-ODER-Gatters 350 stellt
das FLAG0-Daten-gültig-Flag
auf der Leitung 172A bereit, die somit der Ausgang des
FLAG0-Daten-gültig-Speicherplatzes
ist. Das FLAG0-Daten-gültig-Flag
auf der Leitung 172A wird auch als Rückkopplung an die beiden Trigger-Flipflops 300, 302 über jeweilige
UND-Gatter 314, 334 übergeben, wie oben beschrieben.
Das Exklusiv-ODER-Gatter 350 spricht an auf die beiden
Eingangssignale, um ein aktives FLAG0-Daten-gültig-Flag auf der Leitung 172A bereitzustellen,
wenn sich die beiden Q-Ausgangssignale voneinander unterscheiden
(das heißt,
wenn ein Q-Ausgangssignal ist hochpegelaktiv und das andere Q-Ausgangssignal
tiefpegelaktiv ist), und um ein nicht aktives FLAG0-Daten-gültig-Flag
auf der Leitung 172A bereitzustellen, wenn die beiden Q-Ausgangssignale
den gleichen Logikpegel haben (nämlich
wenn beide Q-Ausgangssignale hochpegelaktiv oder beide Q-Ausgangssignale
tiefpegelaktiv sind). Wenn, wie oben beschrieben, das Ausgangssignal
des Exklusiv-ODER-Gatters 350 hochpegelaktiv ist und damit
anzeigt, daß sich
das Q-Ausgangssignal des zweiten Trigger-Flipflops 302 vom
Q-Ausgangssignal des ersten Trigger-Flipflops 300 unterscheidet,
wird nur das zweite UND-Gatter 334 potentiell freigegeben,
so daß,
wenn die CLR_VALID_0-Signalleitung 220A aktiv ist, das
zweite Trigger-Flipflop 302 freigegeben wird. Das zweite
Trigger-Flipflop 302 schaltet beim nächsten Tief-Hoch- Übergang des BUS2 CLK-Signals
auf der Signalleitung 126 um. Dies bewirkt, daß das Q-Ausgangssignal
des zweiten Trigger-Flipflops 302 mit dem Q-Ausgangssignal
des ersten Trigger-Flipflops 300 identisch wird, so daß das Ausgangssignal
des Exklusiv-ODER-Gatters 350 nicht aktiv wird. Der nicht
aktive Zustand des Ausgangssignals des Exklusiv-ODER-Gatters 350 zeigt
an, daß das
FLAG0-Daten-gültig-Flag
gelöscht ist
(das heißt,
die Daten sind ungültig).
Zusätzlich wird
das zweite Trigger-Flipflop 302 am Umschalten gehindert,
und das erste Trigger-Flipflop 300 wird zum Umschalten
freigegeben, wenn die CLR_VALID_0-Signalleitung 166A durch
die Bus 1-Schnittstellenzustandsmaschine 160 aktiviert
wird. Man kann daraus erkennen, daß das FLAG0-Daten-gültig-Flag
in bezog auf das BUS1 CLK-Signal synchron gesetzt wird und in Bezug
auf das BUS2 CLK-Signal synchron gelöscht wird.
-
Zusätzliche
Information in Bezug auf die vom Trigger-Flipflop gesteuerten, oben
beschriebenen Datenspeicherplätze
findet sich beispielsweise im US-Patent 5083049, das auf den Rechtsnachfolger der
vorliegenden Anmeldung übertragen
ist und das hierin durch Bezugnahme aufgenommen wird. Der Fachmann
wird anerkennen, daß alternative
Daten-gültig-Speicherplätze in Verbindung
mit der vorliegenden Erfindung verwendet werden können.
-
Wiederum
mit Bezug auf 1 kann man erkennen, daß der Zweck
des Bus 1-Daten-gültig-Synchronisierers 190 und
des Bus 2-Daten-gültig-Synchronisierers 210 darin
besteht, sicherzustellen, daß die Änderungen
der Daten-gültig-Flags
an die Bus 1-Schnittstellenzustandsmaschine 160 und die
Bus 2-Schnittstellenzustandsmaschine 140 synchron
mit den jeweiligen Takten, die die beiden Zustandsmaschinen steuern,
weitergegeben werden. Insbesondere werden, wie oben beschrieben,
die Daten-gültig-Flags
synchron mit dem BUS1 CLK-Signal gesetzt und synchron mit dem BUS2
CLK-Signal gelöscht.
Das Daten-gültig-Flag
wechselt also von seinem nicht aktiven Zustand zu seinem aktiven
Zustand synchron mit dem BUS1 CLK-Signal und wechselt von seinem
aktiven Zustand zu seinem nicht aktiven Zustand synchron mit dem
BUS2 CLK. Da das BUS1 CLK-Signal asynchron zum BUS2 CLK-Signal ist,
empfängt
die Bus 1-Schnittstellenzustandsmaschine 160 die Aktiv/Nichtaktiv-Übergänge der
Daten-gültig-Flags
asynchron in Bezug auf ihre internen Zustandsübergänge. Es ist somit möglich, daß die Übergänge auftreten,
während
die Bus 1-Schnittstellenzustandsmaschine fordert, daß der Zustand
der Daten-gültig-Flags stabil und
unveränderlich
ist. Der Bus 1-Synchronisierer 190 synchronisiert die Hoch-Tief-Übergänge der
Daten-gültig-Flags
mit dem BUS1 CLK und somit mit den internen Zustandsübergängen der
Bus 1-Schnittstellenzustandsmaschine 160.
Ebenso synchronisiert der Bus 2-Synchronisierer 210 die
Tief-Hoch-Übergänge der
Daten-gültig-Flags
mit dem BUS2 CLK und somit mit den internen Übergängen der Bus 2-Schnittstellenzustandsmaschine 140.
Es ist besonders wichtig, daß die
Tief-Hoch-Übergänge der
Daten-gültig-Flags
mit BUS2 CLK synchronisiert werden, da das jeweilige Daten-gültig-Flag
gesetzt wird, wenn die Daten in den gegenwärtig gewählten Eingangsspeicherplatz geschrieben
werden. Wenn der gegenwärtig
gewählte
Eingangsspeicherplatz auch der gegenwärtig gewählte Ausgangsspeicherplatz
ist (das heißt,
wenn die Bus 2-Schnittstellenzustandsmaschine 140 alle bisherigen
gespeicherten Daten ausgegeben hat), nimmt die Bus 2-Schnittstellenzustandsmaschine 140 unmittelbar
wahr, daß das
Daten-gültig-Flag
aktiv geworden ist, und gibt die Daten an den zweiten Bus 120 aus.
Dies bewirkt jedoch möglicherweise eine
Metastabilität
in der Bus 2-Schnittstellenzustandsmaschine 140 und einen
Wettlaufzustand, insbesondere wenn das Daten-gültig-Flag
aus seinem nicht aktiven Zustand in seinen aktiven Zustand übergeht,
bevor die Daten auf dem jeweiligen Datenspeicherplatz gespeichert
worden sind und über
den Multiplexer 134 und das Register 150 weitergegeben worden
sind. Der Bus 2-Synchronisierer stellt sicher, daß die Daten
stabil sind, bevor die Bus 2-Schnittstellenzustandsmaschine 140 die
Daten an den zweiten Bus 120 ausgibt.
-
Die
Schnittstelle 100 zwischen Bus 1 und Bus 2 gemäß 1 erfüllt ihren
beabsichtigten Zweck gut; die Schnittstelle 100 weist jedoch
eine Synchronisationsverzögerung
auf, die durch den Bus 1-Synchronisierer 190 und
den Bus 2-Synchronisierer 210 verursacht wird, die die
Gesamtdatenrate der Schnittstelle 100 reduziert, insbesondere
wenn Daten zu oder von der Schnittstelle 100 in einen Burstmodus übertragen
werden. Das Problem wird verständlich,
wenn man den Betrieb der Bus 2-Schnittstellenzustandsmaschine 140 betrachtet,
wenn alle vier Datenpufferspeicherplätze (DATABUF0 ... DATABUF3)
im Datenpuffer 130 voll sind und die entsprechenden Daten-gültig-Flags
(FLAG0 ... FLAG3) gesetzt sind. Nachdem die Bus 2-Schnittstellenzustandsmaschine 140 die
Daten vom ersten Datenpufferspeicherplatz (zum Beispiel DATABUF0) übertragen
hat, wählt
die Bus 2-Schnittstellenzustandsmaschine 140 den
nächsten
Pufferspeicherplatz (zum Beispiel DATABUF1) über den Multiplexer 134 und wählt auch
das nächste
Daten-gültig-Flag
(zum Beispiel FLAG1) über
die Ansteuerungsleitungen 202 zum zweiten Flagmultiplexer 200.
Obwohl die Daten auf dem zweiten Pufferspeicherplatz (DATABUF1)
für eine
große
Anzahl von Taktzyklen stabil gewesen sein können, muß die Bus 2-Schnittstellenzustandsmaschine 140 dennoch
warten, bis das Daten-gültig-Flag
vom Bus 2-Synchronisierer 210 synchronisiert
ist, bevor es die Daten an den zweiten Bus 120 ausgeben
kann. Somit werden zwei unnötige
Zyklen des BUS2 CLK-Signals eingeschoben, um das Daten-gültig-Flag
zu synchronisieren.
-
Eine ähnliche
unnötige
Verzögerung
wird eingeschoben, wenn die Bus 1-Schnittstellenzustandsmaschine den Eingangszeiger
zum nächsten Speicherplatz
inkrementiert. Obwohl der nächste
Datenspeicherplatz für
eine große
Anzahl von Taktzyklen leer gewesen sein kann, muß die Bus 1-Schnittstellenzustandsmaschine, wenn
sie die Ansteuerungsleitungen 182 zum ersten Flagmultiplexer 180 umschaltet,
zwei Taktzyklen warten, bis das gewählte Flag durch den Bus 1-Synchronisierer 180 synchronisiert
ist, bevor sie bestimmen kann, daß das Daten-gültig-Flag
gelöscht
wird und daß der
Datenspeicherplatz dadurch verfügbar
ist.
-
Der
Anmelder hat erkannt, daß die
unnötige Verzögerung vermieden
werden kann, indem die Daten-gültig-Flags
synchronisiert werden, bevor sie an den Bus 2-Flagmultiplexer 200 übergeben
werden. Eine verbesserte Schnittstelle 400 ist in 3 dargestellt,
wo gleiche Bezugszeichen gleiche Elemente bezeichnen, wie oben in
Verbindung mit 1 beschrieben. Die Bus 2-Schnittstellenzustandsmaschine 140 ist
modifiziert und ist als Bus 2-Schnittstellenzustandsmaschine 404 in 3 dargestellt.
Ebenso ist die Bus 1-Schnittstellenzustandsmaschine 160 modifiziert
und ist als Bus 1-Schnittstellenzustandsmaschine 406 in 3 dargestellt.
-
Wie
in 3 dargestellt, ist der einzelne Bus 1-Synchronisierer 190 am
Ausgang des ersten Flagmultiplexers 180 von 1 durch
vier Bus 1-Synchronisierer 410, 412, 414 und 416 ersetzt
worden. Ein entsprechende Eingang jedes Bus 1-Synchronisierers 410, 412, 414, 416 ist
mit dem Ausgang eines jeweiligen der vier Daten-gültig-Flagpufferspeicherplätze 170 verbunden,
und ein entsprechender Ausgang jedes Bus 1-Synchronisierers 410, 412, 414, 416 ist
mit einer der vier Eingänge
des ersten Flagmultiplexers 180 verbunden. Wie weiter anhand
des ersten Bus 1-Synchronisierers 410 dargestellt, umfaßt jeder
der Synchronisierer ein Paar Flipflops 420, 422,
die in Tandemschaltung verbunden sind und vom BUS1 CLK-Signal auf der Signalleitung 116 getaktet
werden.
-
Ebenso
ist der einzelne Bus 2-Synchronisierer 210 durch vier Bus
2-Synchronisierer 430, 432, 434 und 436 ersetzt
worden. Ein entsprechender Eingang jedes Bus 2-Synchronisierers 430, 432, 434, 436 ist
mit dem Ausgang einer jeweiligen der vier Daten-gültig-Flagpufferspeicherplätze 170 verbunden, und
ein entsprechender Ausgang jedes Bus 2-Synchronisierers 430, 432, 434, 436 ist
mit einem der vier Eingänge
des zweiten Flagmultiplexers 200 verbunden. Wie ferner
anhand des ersten Bus 2-Synchronisierers 430 dargestellt,
umfaßt
jeder der Synchronisierer ein Paar Flipflops 440, 442,
die in Tandemschaltung verbunden sind und durch das BUS2 CLK-Signal
auf der Signalleitung 126 getaktet werden.
-
Man
kann erkennen, daß die
verbesserte Schnittstelle 400 den Zweck der Schnittstelle 100 in 1 erfüllt, indem
sichergestellt wird, daß die
Daten-gültig-Flags
mit der Bus 1-Schnittstellenzustandsmaschine 406 und
mit der Bus 2-Schnittstellenzustandsmaschine 404 richtig
synchronisiert werden. Wenn beispielsweise die Bus 2-Schnittstellenzustandsmaschine 404 alle
Daten im Datenpuffer 130 ausgegeben hat und darauf wartet,
daß die nächsten Daten
auf einem Speicherplatz 132 gespeichert werden, zeigen
der Eingangszeiger und der Ausgangszeiger zum gleichen Speicherplatz 132. Wenn
die Bus 1-Schnittstellenzustandsmaschine das Daten-gültig-Flag
(zum Beispiel FLAG0) setzt, geht das Ausgangssignal des FLAG0-Flagpuffers 170A (2)
in seinen aktiven Zustand über
und durchläuft
den ersten Bus 2-Synchronisierer 430 und wird mit der Bus
2-Schnittstellenzustandsmaschine 404 synchronisiert, bevor
es als aktives Eingangssignal an die Bus 2-Schnittstellenzustandsmaschine 404 übergeben
wird. Das aktive Ausgangssignal des FLAG0-Flagpuffers 170A wird
also notwendigerweise mit dem Bus 2-Takt synchronisiert und somit
mit der Bus 2-Schnittstellenzustandsmaschine 404 synchronisiert.
Das aktive Ausgangssignal des FLAG0-Flagpuffers 170A wird
verzögert,
um die erforderliche Zeit zu gewinnen, damit sich die Daten, die
gerade auf dem DATABUF0-Datenspeicherplatz 132 gespeichert
worden sind, stabilisieren können. Wenn
dagegen die Bus 2-Schnittstellenzustandsmaschine einen Datenburst
aus dem Datenpuffer 130 ausgibt, in dessen nächsten zu
wählenden
Speicherplatz 132 die Daten für eine Anzahl von Taktzyklen gespeichert
waren, dann hat das Daten-gültig-Flag (zum
Beispiel FLAG1) bereits den jeweiligen Bus 2-Synchronisierer (zum
Beispiel den Bus 2-Synchronisierer 432) durchlaufen und
ist am Eingang des zweiten Flagmultiplexers 200 aktiv.
Wenn die Bus 2-Schnittstellenzustandsmaschine
die Ansteuerungsleitung 202 also wechselt, um das Ausgangssignal
des FLAG1-Daten-gültig-Flagpuffers
zu wählen, wird
der aktive Zustand des Flags unmittelbar ohne eine weitere Verzögerung an
die Bus 2-Schnittstellenzustandsmaschine 404 weitergegeben.
-
Um
das weitere Verständnis
der Vorteile der verbesserten Schnittstelle in 3 zu
fördern,
stellt 4 ein exemplarisches Zustandsdiagramm 500 eines
entsprechenden Abschnitts der Bus 2-Schnittstellenzustandsmaschine 140 von 1 dar,
und 5 stellt ein exemplarisches Zustandsdiagramm 510 eines
entsprechenden Abschnitts der Bus 2-Schnittstellenzustandsmaschine 404 von 3 dar.
Jede Zustandsmaschine 140, 404 weist zusätzliche
Funktionen auf, die nicht in 4 und 5 dargestellt
und die nicht für
die vorliegende Erfindung relevant sind und hier nicht beschrieben
werden. In 4 und 5 werden
die relevanten internen Zustände
der Zustandsmaschine auf konventionelle Weise als Kreise mit dem
gleichen Zustandsnamen darin dargestellt. Die Leitungen, die die
Kreise verbinden, stellen Zustandsübergänge von einem Zustand in den
anderen Zustand oder von einem Zustand zurück in denselben Zustand dar,
die synchron mit dem BUS2 CLK-Signal 126 in 1 und 2 auftreten.
-
Die
Bedingungen, die dem Zustandsübergang
vorausgehen, sind als Parameter an jedem Zustandsübergang
dargestellt, wobei ein UND-Zeichen ("&") eine UND-Anforderung
darstellt, was bedeutet, daß alle
Bedingungen, die durch das UND-Zeichen gekoppelt sind, erfüllt sein
müssen,
damit der Zustandsübergang
erfolgen kann. Ein Strich über
einer Bedingung zeigt an, daß eine
Bedingung sein muß: nicht
aktiv. Eine "1" an einem Zustandsübergang zeigt
an, daß der Übergang
von einem Zustand in den nächsten
bei Auftreten des nächsten
Zyklus des BUS2 CLK-Signals bedingungslos auftritt. Ein "ELSE" neben einem Zustandsübergang
zeigt an, daß der
Zustandsübergang
ein Standardübergang
ist, der auftritt, wenn die Bedingungen für andere Übergänge von einem gegebenen Zustand
nicht erfüllt
sind. Wenn die Bus 2-Schnittstellenzustandsmaschine 140 eine
entsprechende Operation bei Auftreten eines bestimmten Übergangs
durchführt,
wird jede Operation am Ende des Parameters durch einen Schrägstrich
("/") kenntlich gemacht,
auf den der Name der Operation folgt.
-
Wie
in 4 dargestellt, weist das Zustandsdiagramm 500 einen
IDLE-Zustand 520, einen MASK1-Zustand 522, einen
MASK2-Zustand 524 und einen DATA_XFR_IN_PROG-Zustand (Datenübertragung
läuft) 526 auf.
Das Zustanddiagramm 500 stellt den Ablauf einer Übertragung
mehrerer 16-Byte-Wörter
aus dem Datenpuffer 132 zum zweiten Bus 120 dar.
Der IDLE-Zustand 520 ist der "normale" Zustand der Bus 2-Schnittstellenzustandsmaschine 140,
der auftritt, wenn das Computersystem zurückgesetzt wird, wie durch einen
RESET-Zustandsübergang 530 dargestellt.
Wie nachstehend beschrieben wird, kehrt die Bus 2-Schnittstellenzustandsmaschine 140 in
den IDLE-Zustand 520 zurück, wenn die Datenübertragung
beendet ist.
-
Die
Bus 2-Schnittstellenzustandsmaschine 140 verbleibt so lange
im IDLE-Zustand 520, wie kein neuer Lesezyklus ausgelöst wird
durch andere Abschnitte der Bus 2-Schnittstellenzustandsmaschine 140,
die Steuerungssignale auf dem zweiten Bus 120 und andere
Bedingungen überwachen,
um zu bestimmen, wann ein neuer Lesezyklus ausgelöst worden
ist. Die Operation der Bus 2-Schnittstellenzustandsmaschine 140 beim
Verbleiben im IDLE-Zustand, bis ein neuer Zyklus ausgelöst wird,
ist durch einen ELSE-Zustandsübergang 532 dargestellt,
wobei dieser Abschnitt der Bus 2-Zustandsmaschine 140 die
anderen Abschnitte der Bus 2-Schnittstellenzustandsmaschine 140 überwacht
und bestimmt, wann ein neuer Lesezyklus ausgelöst worden ist. Insbesondere
verbleibt die Bus 2-Schnittstellenzustandsmaschine 140 im
IDLE-Zustand 520, wenn das interne NEW_RD-Signal nicht
aktiv ist.
-
Wenn
ein neuer Lesezyklus von der Bus 2-Schnittstellenzustandsmaschine 140 ausgelöst worden
ist (NEW_RD ist aktiv) und die Bus 2-Schnittstellenzustandsmaschine 140 bestimmt
hat, daß der zweite
Bus 120 der Busschnittstelle 100 zugewiesen ist
(ein als BUS_RD_TIME bezeichnetes Signal ist aktiv), dann führt die
Bus 2-Schnittstellenzustandsmaschine 140 einen Zustandsübergang 540 in
den MASK1-Zustand 522 durch.
Wie ferner durch den "/LOAD_QW_CNT"-Abschnitt des Zustandsübergangsparameters
dargestellt, lädt
die Bus 2-Schnittstellenzustandsmaschine die 16-Byte-Wortanzahl in einen
internen 16-Byte-Wortzähler
(nicht dargestellt), wenn der Zustandsübergang 540 erfolgt.
Der 16-Byte-Wortzähler
zeigt die Anzahl der Übertragungen
an, die erfolgen müssen,
damit ein gegebener Datenburst vom ersten Bus 110 zum zweiten
Bus 120 übertragen
wird.
-
Der
MASK1-Zustand 522 und der MASK2-Zustand 524 sind
Verzögerungszustände, um
sicherzustellen, daß das
gewählte
Daten-gültig-Flag
eine ausreichende Zeit zur Verfügung
hat, um vom Bus 2-Flagmultiplexer 200 kommend den Bus 2-Synchronisierer 210 zu
durchlaufen, bevor die Bus 2-Schnittstellenzustandsmaschine 140 den
Zustand des gewählten
Daten-gültig-Flags
prüft.
Man kann also sehen, daß der Übergang 542 vom MASK1-Zustand 522 in
den MASK2-Zustand 524 bedingungslos erfolgt (wie dargestellt
durch den angrenzenden Parameter "1").
Ebenso erfolgt ein Übergang 544 vom
MASK2-Zustand 524 in
den DATA_XFR_IN_PROG-Zustand 526 bedingungslos.
-
Im
DATA_XFR_IN_PROG-Zustand 526 prüft die Bus 2-Schnittstellenzustandsmaschine 140 den Zustand
des DATA_VALID_2-Flags, und wenn es nicht aktiv ist, verbleibt die
Bus 2-Schnittstellenzustandsmaschine
im DATA_XFR_IN_PROG-Zustand 526, wie durch einen ELSE-Übergang 550 dargestellt.
Wenn andernfalls das DATA_VALID_2-Flag aktiv ist und BUS_RD_TIME
aktiv ist, geht die Bus 2-Schnittstellenzustandsmaschine 140 entweder
in den IDLE-Zustand 520 oder in den MASK1-Zustand 522 über, und
zwar durch einen Übergang 552 bzw. einen Übergang 554 und
gibt die Daten auf einem der gegenwärtig gewählten Pufferspeicherplätze 132 aus.
Dies ist durch den /OUT_DATA-Parameter an beiden Übergängen 552 und 554 dargestellt.
Es ist verständlich,
daß zusätzlich zum
Ausgeben der Daten die Bus 2-Schnittstellenzustandsmaschine das CLR_VALID-Signal
für den
entsprechenden der Flagpuffer 170 aktiviert.
-
Die
Wahl des Übergangs 552 oder
des Übergangs 554 hängt von
der Bedingung des DONE-Parameters
ab. Der DONE-Parameter stellt die Bedingung des QW_CNT-Ausgangs
des 16-Byte-Wortzählers dar.
Wenn der QW_CNT null ist, ist DONE aktiv. Wenn QW_CNT ein Nichtnullwert
ist, dann ist DONE nicht aktiv (das heißt, DONE wird aktiv). Wenn
DONE aktiv ist, führt
die Bus 2-Schnittstellenzustandsmaschine 140 einen Übergang 552 zurück zum IDLE-Zustand 520 durch
und inkrementiert den Zeiger zum gegenwärtigen Ausgangspufferspeicherplatz, wie
vom Parameter /INC_BUF_NUM angegeben, um zum nächsten Pufferspeicherplatz 132 als
dem nächsten
Pufferausgang zu zeigen. Wenn andererseits DONE nicht aktiv ist
(das heißt,
DONE wird aktiv), führt
die Bus 2-Schnittstellenzustandsmaschine 140 einen Übergang
zum MASK1-Zustand 522 durch, erhöht den Zeiger zum gegenwärtigen Ausgangspufferspeicherplatz
und dekrementiert den 16-Byte-Wortzähler, wie durch den /DEC_QW_CNT-Parameter
angegeben. Wie oben in Verbindung mit 1 beschrieben,
ist es notwendig, den Zyklus mit dem MASK1-Zustand 522 und
dem MASK2-Zustand 524 wieder zu durchlaufen, um Zeit zu
gewinnen, damit daß vorher
gewählte
Daten-gültig-Flag
den Bus 2-Synchronisierer verlassen und durch ein neu gewähltes Daten-gültig-Flag
ersetzt werden kann, bevor die DATA_VALID_2-Signalleitung 216 am Eingang
der Bus 2-Schnittstellenzustandsmaschine 140 vor dem DATA_VALID_2-Signal von der Bus
2-Schnittstellenzustandsmaschine 140 ausgewertet wird.
Diese Verzögerung
wird unabhängig
davon eingeschoben, wie lange die Daten auf dem neu gewählten Ausgangspufferspeicherplatz gespeichert
worden sind auf dem gewählten
Datenpufferspeicherplatz 132 und wie lange das entsprechenden
Daten-gültig-Flag
aktiv gewesen ist.
-
Im
Gegensatz zum Zustandsdiagramm 500 in 4 erfordert
das Zustandsdiagramm 510 in 5 weniger
Zustände
und operiert wegen der Positionierung der mehreren Bus 2-Synchronisierer 430, 432, 434 und 436 effektiver
zwischen den Ausgängen
der Flagpuffer 170 und dem Eingang des Bus 2-Flagmultiplexers 200,
wie in 3 gezeigt, anstatt nur einen Bus 2-Synchronisierer 210 zu
haben, wie nach dem Multiplexer 200 dargestellt, wie in 1 dargestellt.
Insbesondere weist das Zustandsdiagramm 510 in 5 nur
den IDLE-Zustand 600 und einen DATA_XFR_IN_PROG-Zustand 610 auf.
Der IDLE-Zustand tritt durch einen RESET-Übergang 620 ein, wie
oben beschrieben. Die Bus 2-Schnittstellenzustandsmaschine 404 in 3 verbleibt
im IDLE-Zustand 600, wie durch einen ELSE-Übergang 622 dargestellt,
es sei denn, bestimmte Bedingungen sind erfüllt, wie durch die Parameter
an einem Übergang 624 zum
DATA_XFR_IN_PROG-Zustand 610 dargestellt. Insbesondere
bleibt die Bus 2-Schnittstellenzustandsmaschine 404 im
IDLE-Zustand, bis ein NEW_RD ausgelöst ist und der BUS_RD_TIME-Bedingung
aktiv ist, wobei sie dann durch den Zustandsübergang 624 zum DATA_XFR_IN_PROG-Zustand 610 übergeht
und den 16-Byte-Wortzähler
mit der Anzahl von zu übertragenden
16-Byte-Wörtern
lädt, wie
durch den /LOAD_QW_CNT-Parameter dargestellt.
-
Im
DATA_XFR_IN PROG-Zustand 610 überwacht die Bus 2-Schnittstellenzustandsmaschine 404 die
Bedingung des DATA_VALID_2-Signals. Wenn das DATA_VALID_2-Signal
aktiv ist und der BUS_RD_TIME aktiv bleibt, führt die Bus 2-Schnittstellenzustandsmaschine 404 einen
der beiden Zustandsübergänge 630 und 632 entsprechend
der DONE-Bedingung durch. Wenn die DONE-Bedingung nicht aktiv ist,
dann verbleibt die Bus 2-Schnittstellenzustandsmaschine 404 im DATA_XFR_IN_PROG-Zustand 610,
wie durch den Zustandsübergang 630 dargestellt,
und gibt den Inhalt des gegenwärtig
gewählten
einen der Datenpufferspeicherplätze 132 aus,
wie durch den /OUT_DATA-Parameter dargestellt. Die Bus 2-Schnittstellenzustandsmaschine 404 inkrementiert die
gegenwärtige
Puffernummer (/INC_BUF_NUM) und dekrementiert den 16-Byte-Wortzähler (/DEC_QW_CNT).
Wenn die DONE-Bedingung
aktiv ist, dann geht die Bus 2-Schnittstellenzustandsmaschine 404 über den
Zustandsübergang 632 in
den IDLE-Zustand 600 zurück, während das letzte 16-Byte-Wort
(/OUT_DATA) ausgegeben wird und während die Puffernummer (/INC_BUF_NUM)
inkrementiert wird. Wenn das DATA_VALID_2-Signal nicht aktiv ist und wenn die
BUS_RD_TIME-Bedingung nicht erfüllt
ist (zum Beispiel der zweite Bus 120 nicht gegenwärtig verfügbar ist),
dann verbleibt die Bus 2-Schnittstellenzustandsmaschine 404 im DATA_XFR_IN
PROG-Zustand 610, wie durch den ELSE-Übergang 634 dargestellt.
-
Wie
durch das Zustandsdiagramm 510 dargestellt, hat die Bus
2-Schnittstellenzustandsmaschine 404 gemäß 3 und 5 nicht
die Zeitverzögerung,
die der Bus 2-Schnittstellenzustandsmaschine 140 in 1 und 4 eigen
ist. Insbesondere kann man erkennen, daß die Bus 2-Schnittstellenzustandsmaschine 404,
sobald sie die Puffernummer beim Zustandsübergang 630 inkrementiert,
im DATA_XFR_IN_PROG-Zustand 610 verbleibt
und unmittelbar das DATA_VALID_2-Signal prüft, um zu bestimmen, ob die
Daten aus dem neugewählten Pufferspeicherplatz 132 ausgegeben
werden können.
Dies kann erfolgen, da das entsprechende Daten-gültig-Flag (FLAG0, FLAG1, FLAG2
oder FLAG3) den entsprechenden Bus 2-Synchronisierer 430, 432, 434 oder 436 durchlaufen
hat und am Eingang des Flagmultiplexers 200 verfügbar ist,
sobald der nächste
Eingang des Flagmultiplexers 200 gewählt ist. Wenn man annimmt,
daß der
zweite Bus 120 der Bus 2-Schnittstellenzustandsmaschine 404 zugeordnet
bleibt, und wenn man annimmt, daß der erste Bus 110 die
Datenpufferspeicherplätze 132 gefüllt hat,
dann können
die Daten bei jedem nachfolgenden Taktzyklus aus den Pufferstellenspeicherplätzen 132 ausgegeben
werden, und es muß keine Verzögerung von
zwei Taktzyklen zwischen jedem Ausgangssignal eingeschoben werden.