PatentDe  


Dokumentenidentifikation DE69131420T2 30.03.2000
EP-Veröffentlichungsnummer 0514428
Titel ENTSCHEIDUNG ZWISCHEN MEHREREN BENUTZERN BEI EINEM GEMEINSAMEN BETRIEBSMITTEL
Anmelder Codex Corp., Mansfield, Mass., US
Erfinder HOLT, Craig, S., Canton, MA 02021, US;
Keren-Zvi, Joseph, Hod-Hasharon, 45246, IL;
HASLEY, Lloyd, A., Austin, TX 78745, US
Vertreter Pfeifer, L., Dipl.-Phys. Dr.-Ing., Pat.-Anw., 65388 Schlangenbad
DE-Aktenzeichen 69131420
Vertragsstaaten DE, FR, GB, NL, SE
Sprache des Dokument En
EP-Anmeldetag 16.01.1991
EP-Aktenzeichen 919035998
WO-Anmeldetag 16.01.1991
PCT-Aktenzeichen US9100323
WO-Veröffentlichungsnummer 9110957
WO-Veröffentlichungsdatum 25.07.1991
EP-Offenlegungsdatum 25.11.1992
EP date of grant 07.07.1999
Veröffentlichungstag im Patentblatt 30.03.2000
IPC-Hauptklasse G06F 13/00
IPC-Nebenklasse G06F 13/18   G06F 13/36   G06F 13/42   G06F 13/368   G06F 13/374   G06F 13/378   

Beschreibung[de]
Hintergrund der Erfindung

Die vorliegende Erfindung bezieht sich allgemein auf eine Entscheidung unter Benutzern eines geteilten Systemelementes wie eines digitalen Datenbusses, für einen Zugriff aus das Systemelement.

Benutzer, die ein Datenbus teilen, wie PC-Platinen, die durch ein gemeinsames Chassis innerhalb eines Systems verbunden sind, konkurieren typischerweise um den Gebrauch des Datenbusses durch Teilnahme an einer Form von Entscheidung. In einem bekannten Entscheidungsschema legt jeder Benutzer, der an den geteilten Datenbus zu sendende Daten hat, ein Entscheidungssignal an einen Wired-OR-Entscheidungsbus an und überprüft nachfolgend das resultierende Signal auf dem Entscheidungsbus. Falls das resultierende Signal demjenigen entspricht, das durch den Benutzer erwartet wird, gewinnt der Benutzer die Benutzung des geteilten Datenbusses und es wird ihm gestattet, eine Datennachricht über diesen zu übertragen. Einige Entscheidungsschemen enthalten eine Abfolge von Signalübereinstimmungszyklen, in denen der letztendliche Gewinner des Datenbusses der Benutzer ist, für den das resultierende Signal auf dem Entscheidungsbus mit dem erwarteten Signal in jedem der Zyklen übereinstimmt.

Solche Entscheidungsprozeduren benötigen im allgemeinen eine Form von Synchronisation zwischen den Benutzern. Typischerweise wird die Synchronisation dadurch geliefert, daß die Benutzer die Entscheidung basierend auf einem Systemtakt, der gleichzeitig alle Benutzer treibt, zeitlich steuern. Eine an dere Alternative ist es, einen Benutzer dazu auszuwählen, als ein "Meister" während der Entscheidung zu dienen und die Entscheidungszeitsteuerung für alle Benutzer zu liefern. Eine dritte Alternative ist es, die Takte zum Beispiel durch Phasenverriegelung der individuellen Benutzertakte zu synchronisieren. Die Fortpflanzung und andere Verzögerungen unter einer großen Anzahl von Benutzern kompliziert die Taktsynchronisation unter den Benutzern und begrenzt die maximal benutzbare Taktfrequenz und daher die Geschwindigkeit der Entscheidungszyklen und von nachfolgenden Datenbusübertragungen.

Es ist außerdem bekannt, Benutzern in der Entscheidung eine Priorität basierend darauf zuzuerkennen, ob den Benutzern zuvor der Zugriff verweigert worden ist, um eine faire Zuordnung des geteilten Systemelementes unter den Benutzern zu fördern.

Die veröffentliche europäische Patentanmeldung EP-A-0226053 beschreibt ein Verfahren zum Entscheiden unter einer Mehrzahl von potentiellen Benutzern ("Vorrichtungen") für einen Zugriff auf einen einheitlichen Verbindungsbus. Eine Entscheidungslogikeinheit ist in jedem der potentiellen Benutzer befindlich. Jede Entscheidungslogikeinheit empfängt Steuersignale mittels des einheitlichen Busses, die für alle Vorrichtungen gemeinsam sind, wobei jedes Steuersignal das logische ODER der entsprechenden Signale von allen anderen Vorrichtungen ist. Die Entscheidungslogik erkennt den Buszugriff der Vorrichtung mit der höchsten Adreß/Prioritäts-Nummer zu. Dieses tritt in einem einzelnen Zyklus auf, der nach dem Ablauf einer Zeitverzögerung endet. Die Steuerlogik in der Entscheidungslogik synchronisiert den Betrieb der Vorrichtung, in welchem die Entscheidungslogik mit allen anderen Vorrichtungen, die um den einheitlichen Bus streiten, verbleibt.

Die US-A-4633394 beschreibt ein Entscheidungsschema für Prozessoren, die Zugriff zu einem geteilten Systemelement suchen. Ein anfragender Prozessor steuert eine von zwei Leitungen für jedes Bit einer einzigartigen Prozessoradresse an, wobei die Auswahl der Leitung von dem Wert des Bits abhängt. Der Prozes sor untersucht dann die nicht angesteuerte Leitung, um zu bestimmen, ob sie durch einen anderen Prozessor angesteuert wird. Falls die andere Leitung angesteuert wird, gibt der anfragende Prozessor entweder seine eigene angesteuerte Leitung frei oder wartet, abhängig von dem Wert des Adreßbits. Derart wird die Priorität durch die Adreßwerte bestimmt. Wenn ein Prozessor einmal erfolgreich Leitungen für jedes Bit seiner Adresse angesteuert hat, ist ihm Zugriff gewährt.

Zusammenfassung der Erfindung

Ein allgemeiner Aspekt der Erfindung ist das Entscheiden unter einer Mehrzahl von Benutzern für den Zugriff auf ein geteiltes Systemelement in einem System der Art, in der die Benutzer durch Plazieren von Entscheidungssignalen auf einer Leitung und durch nachfolgendes Vergleichen ihrer Entscheidungssignale mit einem auf der Leitung erscheinenden Signal, durch Versorgen der Benutzer mit unabhängig arbeitenden Takten und durch Steuern des Fortschreitens der Entscheidung basierend auf einer Zeitstörung, die durch den Takt von mindestens einem der Benutzer geliefert wird, entscheiden.

Die Erfindung ist in den Ansprüchen 1 und 11 ausgeführt.

Bevorzugte Ausführungsformen enthalten die folgenden Merkmale.

Es wird mit mindestens einem Benutzer ermöglicht, sich selbst und andere Benutzer dazu zu bringen, Entscheidungssignale auf der Leitung zu plazieren und den Vergleich zu Zeitpunkten auszuführen, die durch den Takt des mindestens einen Benutzers geregelt werden. Jeder Benutzer, der sich um das Systemelement bemüht, ist zum Übertragen eines ersten Steuersignales zu einem Zeitpunkt, der durch den Takt dieses Benutzers geregelt wird, in der Lage, um andere Benutzer zu informieren, daß er sein Entscheidungssignal auf der Leitung plazieren wird, und ein sich um Entscheidung bewerbender Benutzer wird sich vom Übertragen des ersten Steuersignales zurückhalten, falls er bereits das erste Steuersignal von einem anderen sich um Ent scheidung bewerbenden Benutzer empfangen hat. Ein sich um Entscheidung bewerbender Benutzer plaziert sein Entscheidungssignal auf der Leitung, wenn er das erste Steuersignal entweder erzeugt oder empfängt.

Aufgrund von zum Beispiel Fortpflanzungsverzögerungen kann ein sich um Entscheidung bewerbender Benutzer aufeinanderfolgend mehrere erste Steuersignale empfangen, aber es ist dem sich um Entscheidung bewerbenden Benutzer gestattet, nur auf das erste solche Steuersignal, das der Benutzer empfängt, zu antworten. Jeder Benutzer, der das erste Steuersignal überträgt, tut dieses durch Ausgeben eines Pulses auf eine erste Steuerleitung (z. B. eine Wired-OR-Leitung, die zwischen die Benutzer verbunden ist) und die sich um Entscheidung bewerbenden Benutzer antworten auf eine einzelne Flanke (so wie die Flanke vom ungetriebenen zum getriebenen Zustand) des Pulses.

Jeder Benutzer, der sich um Entscheidung für das Systemelement bemüht, ist außerdem zum Übertragen eines zweiten Steuersignales in der Lage, um sich selbst und andere Benutzer dazu zu bringen, den Vergleich auszuführen, und ein sich um Entscheidung bemühender Benutzer hält sich vom Übertragen des zweiten Steuersignales zurück, falls er bereits das zweite Steuersignal von einem anderen sich bewerbenden Benutzer erhalten hat. Ein Benutzer führt den Vergleich aus, wenn er das zweite Steuersignal entweder erzeugt oder empfängt. Ein sich um Entscheidung bewerbender Benutzer kann aufeinanderfolgend mehrere zweite Steuersignale von mehreren Benutzern (aufgrund der Fortpflanzungsverzögerungen zwischen den Benutzern) empfangen, aber dem Benutzer ist es erlaubt, nur auf das erste solche Steuersignal, das der Benutzer empfängt, zu antworten. Das zweite Steuersignal ist ein Puls, der auf eine zweite Steuerleitung ausgegeben wird, wie eine Wired-OR-Leitung, die zwischen die Benutzer verbunden ist, und die sich um Entscheidung bemühenden Benutzer antworten auf eine einzelne Flanke (z. B. die Flanke vom ungetriebenen zum getriebenen Zustand) des Pulses.

Die sich um Entscheidung bemühenden Benutzer zählen eine vorbestimmte Anzahl von Taktpulsen, die durch ihre Takte erzeugt werden, nachdem sie das erste Steuersignal empfangen oder erzeugen; nach dem Erreichen der vorbestimmten Anzahl überträgt ein Benutzer das zweite Steuersignal, falls dieser Benutzer noch nicht das zweite Steuersignal von einem anderen Benutzer empfangen hat. Um das Zeitintervall zwischen dem ersten und dem zweiten Steuersignal an einer Abnahme für aufeinanderfolgende Entscheidungen zu hindern, ist die vorbestimmte Anzahl unterschiedlich (z. B. einen Taktpuls weniger) für Benutzer, die das erste Steuersignal erzeugen, gegenüber Benutzern, die das erste Steuersignal empfangen. Ein sich um Entscheidung bewerbender Benutzer führt den Vergleich aus, wenn er das zweite Steuersignal entweder erzeugt oder empfängt, und bestimmt das Ergebnis der Entscheidung basierend auf den Ergebnissen dieses Vergleiches. Der Benutzer, der die Entscheidung für das geteilte Systemelement (z. B. einen Datenbus) gewinnt, erhält Zugriff auf das Systemelement, um zum Beispiel Daten über den Bus zu übertragen.

Bevorzugterweise enthält die Entscheidung eine vorbestimmte Anzahl von Zyklen, wobei in jedem der Zyklen mindestens ein eine Entscheidung suchender Benutzer sein Entscheidungssignal auf der Leitung plaziert und nachfolgend sein Entscheidungssignal mit einem Signal vergleicht, das auf der Leitung erscheint, um das Ergebnis der Entscheidung zu bestimmen, und das Fortschreiten der Entscheidung innerhalb jedes Zyklus und von einem ersten Zyklus zu einem nachfolgenden Zyklus wird gesteuert basierend auf einer Zeitsteuerung, die durch den Takt von mindestens einem der Benutzer geliefert wird. Jeder eine Entscheidung suchende Benutzer bestimmt, ob er von einem Zyklus zu einem zweiten Zyklus fortschreiten soll, basierend auf den Ergebnissen des Vergleiches, der in dem ersten Zyklus gemacht wird, und nur ein eine Entscheidung suchender Benutzer macht eine Bestimmung, in den letzten der Zyklen fortzuschreiten; einem solchen Benutzer wird der Zugriff auf das geteilte Systemelement gewährt. Der Takt, der eine solche Zeitsteuerung liefert, kann in unterschiedlichen Zyklen derjenige von unterschiedlichen Benutzern sein.

Jeder Benutzer, der sich um das Systemelement bewirbt, ist zum Übertragen eines ersten Steuersignales in jedem Zyklus zu einem Zeitpunkt in der Lage, der durch den Takt des Benutzers gelenkt wird, um andere Benutzer zu informieren, daß er sein Entscheidungssignal auf der Leitung plazieren wird; ein Benutzer steht vom Übertragen eines ersten Steuersignales zurück, falls er ein erstes Steuersignal von einem anderen Benutzer empfangen hat, und ein um Entscheidung suchender Benutzer plaziert sein Entscheidungssignal auf der Leitung, wenn er das erste Steuersignal entweder erzeugt oder empfängt. Jeder Benutzer, der um Entscheidung für das Systemelement sucht, ist zum Übertragen eines zweiten Steuersignals in jedem Zyklus in der Lage, um sich selbst und andere Benutzer zum Ausführen des Vergleiches zu bringen; ein um Entscheidung suchender Benutzer steht vom Übertragen des zweiten Steuersignales zurück, falls er ein zweites Steuersignal von einem anderen Benutzer empfangen hat; ein um Entscheidung suchender Benutzer führt den Vergleich aus, wenn er das zweite Steuersignal entweder erzeugt oder empfängt.

Jeder um Entscheidung suchende Benutzer zählt in jedem Entscheidungszyklus eine vorbestimmte Anzahl von Taktzyklen, die durch seinen Takt erzeugt worden sind, nachdem er das erste Steuersignal empfängt oder erzeugt, und der Benutzer überträgt, nachdem die vorbestimmte Anzahl erreicht ist, das zweite Steuersignal, falls er das zweite Steuersignal noch nicht von einem anderen Benutzer empfangen hat. Die Übertragung des zweiten Steuersignales dient zum Starten eines zweiten Zyklus der Entscheidung und zum Bringen jedes Benutzers, der bestimmt hat, an der Entscheidung weiter teilzunehmen, sein Entscheidungssignal auf der Leitung zu plazieren. Jeder um Entscheidung suchende Benutzer, der das zweite Steuersignal empfängt oder erzeugt, zählt dann eine vorbestimmte Anzahl seiner Taktzyklen und, nachdem die vorbestimmte Anzahl erreicht ist, überträgt ein drittes Steuersignal, falls der Benutzer das dritte Steuersignal nicht von einem anderen Benutzer empfangen hat. Die um Entscheidung ersuchenden Benutzer führen jeweils den Vergleich aus, wenn sie das dritte Steuersignal entweder erzeugen oder empfangen, und sie bestimmen ein Ergebnis des zweiten Zyklus der Entscheidung basierend auf diesem Vergleich.

Die Übertragung des dritten Steuersignales dient außerdem zum Starten eines dritten Zyklus in der Entscheidung und zum Bringen jedes Benutzers, der entschieden hat, in der Entscheidung fortzufahren, zum Plazieren eines Entscheidungssignales auf der Leitung. Jeder um Entscheidung suchende Benutzer, der das dritte Steuersignal empfängt oder erzeugt, zählt eine vorbestimmte Anzahl von Zyklen seines Taktes und überträgt, nachdem die vorbestimmte Anzahl erreicht ist, ein viertes Steuersignal, falls der Benutzer das vierte Steuersignal nicht von einem anderen Benutzer empfangen hat. Die um Entscheidung ersuchenden Benutzer führen jeweils den Vergleich aus, wenn sie das vierte Steuersignal entweder erzeugen oder empfangen, und sie bestimmen ein Ergebnis des dritten Zyklus der Entscheidung basierend auf den Vergleich.

Es kann irgendeine Anzahl von Entscheidungszyklen geben. In einer Ausführungsform gibt es drei Zyklen und das vierte Steuersignal dient zum Starten einer nachfolgenden Entscheidung. In einer anderen Ausführungsform gibt es mehr als drei Zyklen und das vierte Steuersignal dient zum Starten des vierten Zyklus der Entscheidung.

Bevorzugterweise enthält der Entscheidungsvorgang mehrere Entscheidungen, die aufeinanderfolgend ausgeführt werden, und das Fortschreiten von einer Entscheidung zu einer zweiten Entscheidung wird basierend auf einer Zeitsteuerung gesteuert, die durch den Takt von mindestens einem aus der Mehrzahl der Benutzer geliefert wird. Der Takt, der die Zeitsteuerung liefert, kann derjenige von unterschiedlichen Benutzern für unterschiedliche Entscheidungen sein. Jeder Benutzer überprüft die Entscheidungsleitung an dem Abschluß einer Entscheidung und schreitet nicht zu der nächsten Entscheidung fort, falls die Leitung unbelegt ist. Mindestens ein Benutzer in jeder Entscheidung bestimmt sich selbst zum Gewinner der Entscheidung basierend auf den Vergleichen, die gemacht worden sind, und diesem Benutzer wird Zugriff auf das Systemelement gewährt. Der gewinnende Benutzer signalisiert anderen Benutzern, falls er detektiert, daß eine andere Entscheidung auftritt, während der gewinnende Benutzer das Systemelement benutzt, und der gewinnende Benutzer gibt dieses Signal frei, wenn er aufgehört hat, das Systemelement zu benutzen. Die Benutzer unterbrechen auch die Entscheidung, während das Signal von dem gewinnenden Benutzer anhängig ist, und nehmen die Entscheidung wieder auf, wenn das Signal freigegeben wird.

Wo das geteilte Systemelement ein Datenweg ist, weist der Weg bevorzugterweise einen Bus auf, der mehrere Datenleitungen enthält; der gewinnende Benutzer überträgt ein Aktivierungsimpuls und Daten zu mindestens einem Bestimmungsbenutzer über einen Teil der Datenleitungen unter Verwendung eines gemeinsamen Treibers, und die Bestimmungsbenutzer empfangen den Aktivierungsimpuls und die Daten über diesen Abschnitt der Datenleitungen über einen gemeinsamen Empfänger, wodurch ein Versatz zwischen den Daten und dem Aktivierungsimpuls reduziert wird.

Jeder Bestimmungsbenutzer sendet ein erstes Signal an den gewinnenden Benutzer, zum einem ersten vorbestimmten Zeitpunkt, nachdem der Bestimmungsbenutzer beginnt, die Daten zu empfangen, und der Bestimmungsbenutzer sendet ein zweites Signal nach einem zweiten vorbestimmten Zeitintervall (wobei beide Zeitpunkte durch Zählen einer vorbestimmten Anzahl von Zyklen seines Taktes bestimmt werden), falls der Bestimmungsbenutzer bestimmt, daß korrekte Daten empfangen wurden. Der gewinnende Benutzer überwacht die Signale von dem Bestimmungsbenutzer (oder den Benutzern) und bestimmt, daß ein Fehler aufgetreten ist, falls der gewinnende Benutzer das zweite Signal nicht innerhalb einer vorbestimmten Zeit beobachtet (ebenfalls durch Zählen einer vorbestimmten Anzahl von Zyklen seines Taktes be stimmt). Das erste und das zweite Signal werden über eine Verdrahte-ODER-Leitung mit einem ungetriebenen Zustand, die zwischen die Benutzer verbunden ist, gesandt; das erste Signal weist das Ansteuern dieser Leitung in einen getriebenen Zustand auf, und das zweite Signal weist das Freigeben dieser Leitung in den ungetriebenen Zustand auf.

Das Fortschreiten der Entscheidung hängt nicht von einem einzelnen Haupt-Takt oder von der Synchronisierung der individuellen Benutzertakte ab. Die Benutzer führen die Entscheidung unter Verwendung ihrer unabhängigen Takte aus, die ungefähr bei der selben Frequenz sein sollten (aber nicht müssen). Die Entscheidungstechnik ist derart extrem fehlertolerant - eine Fehlfunktion des Taktes eines Benutzers beeinträchtigt nur diesen Benutzer, während die verbleibenden Benutzer frei sind, mit der Entscheidung unter Verwendung ihrer unabhängigen Takte fortzufahren - verglichen mit vorhergehenden Schemata, bei denen die Entscheidungszeitsteuerung durch einen Systemtakt oder durch den Takt eines "Master"-Benutzers geliefert wurde. Außerdem gibt es, da kein Benutzer als der "Master" während der Entscheidung diente, keine Notwendigkeit, anfänglich zu bestimmen, welcher Benutzer als der Master fungieren wird und daher zumindest anfänglich die Entscheidungszeitsteuerung für die anderen Benutzer liefert. Weiterhin müssen Fehler eines solchen Master-Benutzers nicht behandelt werden (z. B. durch Auswählen eines anderen Benutzers, der als der Master dient).

Entsprechend einer Ausführungsform entscheidet die Erfindung unter einer Mehrzahl von Benutzern für einen Zugriff auf ein geteiltes Systemelement in einem System der Art, in dem sich jeder Benutzer um eine Entscheidung für einen Zugriff bewirbt, durch Plazieren eines Entscheidungssignales auf einem Weg, der die Benutzer verbindet, und durch nachfolgendes Vergleichen seines Entscheidungssignales mit einem Signal, das auf dem Weg erscheint, um zu bestimmen, ob der Benutzer die Entscheidung gewonnen hat, durch Zuordnen einer ersten Priorität zu jedem Benutzer, der Zugriff in der Entscheidung anfordert, basierend auf mindestens einer Zugriffspriorität, die der Anfrage nach Zugriff zuvor zugeordnet worden ist, und ob der Benutzer ein Mitglied einer momentanen Gruppe von Benutzern ist, die zu einem Zeitpunkt während der Entscheidung gebildet wird, wenn eine andere Gruppe von Benutzern leer ist, wobei die momentane Gruppe Benutzer enthält, denen ein Zugriff zu dieser Zeit verneint worden ist. In Übereinstimmung mit dieser Ausführungsform wird mindestens ein Abschnitt des Entscheidungssignales jedes Benutzers als ein Multibit-Wort angeordnet, das einen Wert aufweist, der die erste Priorität darstellt, und jeder Benutzer, der sich um den Zugriff bewirbt, plaziert sein Multibit-Wort parallel auf dem Weg und bestimmt, ob er die Entscheidung gewonnen hat, durch nachfolgendes Vergleichen seines Multibit-Wort-Wertes mit dem Wert eines Multibit-Wortes, der auf dem Weg erscheint.

Bevorzugte Ausführungsformen enthalten die folgenden Merkmale.

Das Multibit-Wort jedes Benutzers wird so angeordnet, daß es einen Wert derart aufweist, daß Benutzer, die zu der momentanen Gruppe gehören, eine höhere erste Priorität in der Entscheidung als Benutzer, die dieselbe zuvor zugeordnete Priorität aufweisen aber keine Mitglieder der momentanen Gruppe sind, haben. Dieses stellt sicher (innerhalb eines Untersatzes von Benutzern, deren Zugriffsanfragen dieselbe zuvor zugewiesene Priorität aufweisen), daß Benutzer, denen zuvor ein Zugriff verwehrt wurde, vor den später anfragenden Benutzern bedient werden.

Die Entscheidung weist eine vorbestimmte Anzahl von Zyklen auf, wobei jeder Benuzter, der in einem ersten der Zyklen teilnimmt, bestimmt, ob er fortschreitet in dem nächsten Zyklus teilzunehmen, basierend auf den Ergebnissen des Vergleiches, der in dem ersten Zyklus gemacht wird; jeder Benutzer, der in dem nächsten Zyklus fortschreitet teilzunehmen, ein zweites Multibit-Wort parallel auf dem Weg plaziert und die Vergleichs- und Bestimmungsschritte wiederholt. Das zweite Multibit-Wort jedes Benutzers kann unterschiedlich von dem Multibit-Wort, das durch diesen Benutzer während des ersten Zyklus produziert worden ist, sein. In einer Ausführungsform plaziert jeder Benutzer, während mindestens einem der Zyklen, auf dem Weg ein Multibit-Wort, das eine Identifikation des Benutzers in dem System darstellt und einen Wert aufweist, der eine zweite zuvor zugeordnete Zugriffspriorität, die mit der Identifikation in Beziehung steht, darstellt. Diese Multibit- Worte sind bevorzugterweise binäre Worte, die so angeordnet sind, daß sie marschierende Werte entsprechend der entsprechenden Identifikation der Benutzer aufweisen. In einer Ausführungsform hat das Multibit-Wort jedes Benutzers, das die Identifikation darstellt, einen Wert, der mindestens teilweise darauf basiert, ob der Benutzer ein Mitglied der momentanen Gruppe ist.

Die Erfindung liefert ein schnelles und effektives Mittel zur Steuerung der Zuordnung des geteilten Systemelementes unter den Benutzern. Dieses erlaubt einer großen Anzahl von Benutzern, asynchron zueinander, das Systemelement zu benutzen.

Andere Merkmale und Vorteile der Erfindung können aus der folgenden detaillierten Beschreibung und aus den Ansprüchen offensichtlich werden.

Beschreibung der bevorzugten Ausführungsformen

Eine kurze Beschreibung der Zeichnungen ist wie folgt.

Fig. 1 ist eine Blockdarstellung eines digitalen Systems, in dem mehrere Benutzer um den Gebrauch eines gemeinsamen Datenbusses konkurieren.

Fig. 2 ist eine Zeitablaufdarstellung, die Abfolgen von Entscheidung, Datenübertragung und Bestätigung in dem System aus Fig. 1 zeigt.

Fig. 3a, 3b, 3c und 3d sind Ablaufdarstellungen, die die Abfolge von Ereignissen während der Entscheidung unter den Benutzern für den Datenbus aus Fig. 1 zeigen.

Fig. 4 ist eine Zeitablaufdarstellung, die einen 3-Zyklus- Entscheidungswettbewerb unter Benutzern aus Fig. 1 zeigt.

Fig. 5 ist eine Zeitablaufdarstellung, die zeigt, wie sich ein Entscheidungszeitablauf von einem Wettbewerb zum nächsten ändern kann.

Fig. 6 ist eine Zeitablaufdarstellung, die eine freie Zeit zwischen den Entscheidungswettbewerben aus Fig. 4 zeigt.

Fig. 7 ist eine Zeitablaufdarstellung, die das Aussetzen von aufeinanderfolgenden Entscheidungswettbewerben aus Fig. 4 zeigt.

Fig. 8 zeigt eine Zuordnung von Entscheidungscodebits entsprechend zu einem 3-Zyklus, 5-Draht, 2-Prioritäten- Entscheidungswettbewerbs aus Fig. 4 zeigt.

Fig. 9 zeigt den ersten Zyklus von jedem von sieben Wettbewerben des 3-Zyklus, 5-Draht, 2-Prioritäten-Wettbewerbs aus Fig. 8.

Fig. 10 illustriert eine Entscheidungsadreßcodezuordnung unter den Benutzern aus Fig. 1 für den 3-Zyklus, 5-Draht, 2-Prioritäten-Wettbewerb aus Fig. 4.

Fig. 11 ist eine Zeitablaufdarstellung, die die Abfolge von Ereignissen für eine Datenübertragung über den Datenbus aus Fig. 1 zeigt.

Fig. 12 ist eine Zeitablaufdarstellung, die das Übergeben der Datenbussteuerung unter aufeinanderfolgenden Benutzern des Datenbusses aus Fig. 1 zeigt.

Fig. 13 und 14 sind Zeitablaufdarstellungen, die das Datenbestätigungsprotokoll zeigen, das mit Datenübertragungen über den Datenbus aus Fig. 1 benutzt wird.

Fig. 15 ist eine Zeitablaufdarstellung, die den Bestätigungsprotokollzeitablauf aus Fig. 13 und 14 zwischen aufeinanderfolgenden Benutzern des Datenbusses aus Fig. 1 zeigt.

Fig. 16 ist eine Darstellung, die eine mögliche Zuordnung von Entscheidungscodebits entsprechend eines 4-Zyklus, 3-Draht, 2-Prioritäten-Entscheidungs-Wettbewerbs zeigt.

Fig. 17 zeigt eine Entscheidungsadreßcodezuordnung unter den Benutzern aus Fig. 1 für den 4-Zyklus, 3-Draht, 2- Prioritäten-Entscheidungs-Wettbewerb aus Fig. 16.

Fig. 18 ist eine Zeitablaufdarstellung des 4-Zyklus- Entscheidungs-Wettbewerbs aus Fig. 16.

Fig. 19 ist eine Zeitablaufdarstellung, die das Aussetzen von aufeinanderfolgenden Entscheidungswettbewerben aus Fig. 18 zeigt.

Struktur und Betrieb

Unter Bezugnahme auf Fig. 1 ein digitales System 10 enthält mehrere Benuzter 12a bis 12n, die zum Beispiel PC-Platinen (gedruckte Schaltungsplatinen) sind, die in einem Kartenkäfig 11 angeordnet sind und die über ein Chassis 13 kommunizieren. Das digitale System 10 verwendet Entscheidung und Synchronisierung (im Detail unten diskutiert) unter seinen Benutzern für einen Zugriff auf einen geteilten Datenbus 14 in dem Chassis. Der Datenbus 14 ist ein Mehrleitungsbus, der Datenleitungen (D0-D7), Datenauslösepulsleitungen (STROBE A, STROBE B), eine Datenbestätigungsleitung (RATIFY), und eine Datenblockleitung (FRAME) aufweist. Digitale Daten werden zwischen den Benutzern 12a bis 12n über den Datenbus 14 in der Form von Datenpaketen übertragen, wie unten diskutiert wird.

Daten werden durch einen individuellen Benutzer 12a-12n über den Datenbus 14 gesandt, nachdem dieser Benutzer Zugriff auf den Datenbus mittels einer Entscheidung mit den anderen Benutzern 12a-12n gewonnen hat. Die Entscheidung findet in einem "Wettbewerb" statt, der eine Abfolge von Entscheidungszyklen aufweist. Nur ein einzelner Benutzer 12a-12n wird alle Entscheidungszyklen in einem gegebenen Wettbewerb überleben, so daß er der "Gewinner" dieses Wettbewerbes wird, und wodurch er der nächste Benutzer in der Reihe für den Zugriff auf den Datenbus 14 und zum Senden seines Datenpaketes wird.

Ein Entscheidungsbus 16 ist ein digitaler Mehrleitungsbus, der zwischen allen Benutzern 12a-12n verläuft. Jede Leitung des Entscheidungsbusses 16 (ARBDATA0 bis ARBDATA4) wird durch die Benutzer 12a-12n als ein OR-verdrahtetes Datenbit betrieben, was es jedem sich um Entscheidung bewerbenden Benutzer erlaubt, einen individuellen Multibit-Entscheidungscode (ARB CODE) auf den Bus auszugeben, wie unten beschrieben wird. Derart erscheint ein einzelner resultierender Multibit- Entscheidungscode (ARBDATA) auf dem Entscheidungsbus 16 abhängig von der bitweisen OR-verdrahteten Beziehung aller ausgegebenen Benutzer-Entscheidungscodes.

Ein Sync-Bus ist ein digitaler Mehrleitungssynchronisationssteuerbus, der die Entscheidungssynchronisationsinformation zwischen allen Benutzern 12a bis 12n trägt. Jede Leitung des Sync-Busses 19 (ARBSYNC1, ARBSYNC2 und ARBSYNC3) wird durch die Benutzer als ein OR-verdrahtetes Steuersignal getrieben, was es mehr als einem Benutzer erlaubt, gleichzeitig dieselbe Sync-Leitung anzusteuern. Jede Sync-Leitung trägt ein Entscheidungssynchronisationssignal, das zum Synchronisieren und zum Steuern des Ausgebens durch die Benutzer und zum Zurücklesen von Entscheidungscodes auf den Entscheidungsbus 16 verwendet wird, wie unten beschrieben wird.

Jeder Benuzter 12a-12n enthält seinen eigenen internen Benutzertakt 18. Die Benutzertakte 18 sind unabhängig und plesiosynchron - sie sind sehr nahe an einer vorbestimmten Frequenz aber nicht miteinander oder mit einem Systemtakt über einen Bus zwischen den Takten synchronisiert. Jeder Benutzer 12a-12n basiert seine Entscheidungszykluszeitsteuerung auf seinem eigenen internen Takt 18, wobei eine Synchronisation zwischen den Benutzern nur mittels der Signale des Sync-Busses 19 auftritt. In ähnlicher Weise wird die Datenübertragungszeitsteuerung zwischen den Benutzern mittels der Datenauslösepulssignalleitungen (d. h. STROBE A und STROBE B) des Datenbusses 14 synchronisiert.

Jeder Benutzer weist ein Paar von Sendepufferschaltungen 20 und 21 auf, die Daten von den funktionalen Schaltungen 24 der Benutzer empfangen, die zum Beispiel ein Mikroprozessor, ein Signalprozessor oder andere elektronische Schaltungen sein können. Die Sendepufferschaltungen 20 und 21 konstruieren jeweils Datenpakete, die die von der funktionalen Schaltung 24 des Benutzers zu einem Bestimmungsbenutzer zu übertragenden Daten und die Adresse des Bestimmungsbenutzers enthalten. Zusätzlich ordnet jeder Sendepuffer 20, 21 seine Priorität jedem Paket zu, wie es durch die Entscheidung der funktionalen Schaltung bestimmt ist, um die Daten zu diesem spezifischen Sendepuffer zu leiten. Der Sendepuffer 20 ordnet jedem Paket einen Status hoher Priorität "P1" zu, während der Sendepuffer 21 jedem Paket einen Status niedriger Priorität "P2" zuordnet. Wenn eine Paketkonstruktion einmal vervollständigt ist, signalisiert der Sendepuffer 20 oder 21 seinem Entscheidungscontroller 17, mit der Entscheidungsbewerbung für den Datenbus 14 zu beginnen. Als Reaktion tritt der Entscheidungscontroller 17 in die Entscheidungsbewerbung für den Datenbus 14 mit den anderen Benutzern 12a-12n ein, die ebenfalls Datenpakete aufweisen, die bereit zum Senden sind. Die Entscheidung schreitet, wie unten beschrieben wird, fort, bis jeder Benutzer 12a bis 12n mit zu sendenden Daten auf den Datenbus 14 zugegriffen und seine Daten gesendet hat.

Jeder Benutzer 12a bis 12n überwacht fortlaufend den Datenbus 14 und reagiert auf die Erkennung seiner eigenen Adresse in einem übertragenen Datenpaket auf dem Datenbus durch Akzeptieren des Paketes und durch Ansteuern der Datenbestätigungsleitung des Datenbus 14, wie unten diskutiert wird. Der empfangende Zielbenutzer leitet das akzeptierte Datenpaket entweder an seinen Empfangspuffer 22 oder seinen Empfangspuffer 23, wie es durch den P1- oder P2-Prioritätsstatus des Paketes bestimmt ist. Der Empfangspuffer 22 akzeptiert P1-Prioritätspakete, während der Empfangspuffer 23 P2-Prioritätspakete akzeptiert. Die empfangenen Daten werden durch die funktionale Schaltung 24 des Benutzers verwendet, wie es gefordert wird.

Unter Bezugnahme auf Fig. 2, eine Abfolge von sich überlappenden Ereignissen (Entscheidung, Datenübertragung und Bestätigung) ist für fünf Datenpaketübertragungen zwischen den Benutzern 12a bis 12n gezeigt. Im allgemeinen enthält eine Datenpaketübertragung über den Datenbus 14 drei Phasen: Entscheidung, Datenübertragung und Bestätigung. Die Entscheidungsphase (ein "Wettbewerb" genannt) eines gegebenen Datenübertragungszyklus enthält eine Abfolge von Entscheidungszyklen (z. B. drei Zyklen oder vier Zyklen), die unter den Benutzern durchgeführt wer den, die zum Versenden auf dem Datenbus 14 bereite Daten aufweisen. Dem sich um Entscheidung bewerbenden Benutzer, der, z. B., Wettbewerb 1 gewinnt, wird gestattet, das nächste Datenpaket über den Datenbus 14 zu senden. Die Datenübertragung 1 beginnt unmittelbar auf den Wettbewerb 1 folgend, da (in diesem Beispiel) keine Benutzer den Datenbus 14 momentan benutzen. Der Benutzer 12a bis 12n, der den Wettbewerb 1 gewinnt, sendet sein Datenpaket über den Datenbus 14 an den Benutzer, der zum Empfangen desselben adressiert ist. Die Datenübertragung 1 dauert, bis das gesamte Datenpaket über den Datenbus übertragen worden ist. Die Bestätigung 1 beginnt während der Datenübertragung 1, wobei der empfangende Benutzer den fehlerhaften oder fehlerlosen Empfang des Paketes an den sendenden Benutzer durch Ansteuern der Bestätigungsleitung des Datenbus 14 bestätigt, wie unten beschrieben ist. Die Bestätigung 1 endet einige Zeit nach der Datenübertragung 1, da der empfangende Benutzer das gesamte Datenpaket erfaßt haben muß, bevor er dem sendenden Benutzer den fehlerhaften oder fehlerlosen Empfang der Daten signalisiert.

Für einige Pakete ist die Datenübertragungsphase länger als die Zeit, die für die Entscheidung für den nächsten Sender benötigt wird. Zum Beispiel dauert die Datenübertragung 1 bis nach dem Abschluß des Wettbewerbes 2 an. Es ist notwendig, die Möglichkeit zu vermeiden, daß zwei Wettbewerbe während derselben Datenübertragung auftreten, da dieses zu zwei Gewinnern führen würde, die auf die Beendigung der Aktivität auf dem Datenbus 14 warten, um das zu beginnen, was zusammenstoßende Datenübertragungen sein würden. Als Folge ist den Benutzern 12a bis 12n nur der Start eines Wettbewerbes während einer gegebenen Datenübertragung erlaubt. Dieses wird erreicht durch Verwendung der FRAME-Leitung in dem Datenbus 14, wie unten diskutiert wird. Darum müssen, während dem Wettbewerb 2 gestattet wird, dem Wettbewerb 1 direkt folgend zu starten, die Benutzer 12a bis 12n mit dem Starten des Wettbewerbes 3 warten, bis die Datenübertragung 1 endet. Außerdem muß der Benutzer 12a bis 12n, der den Wettbewerb 2 gewinnt, darauf warten, daß die Datenübertragung 1 vervollständigt wird, bevor die Datenübertra gung 2 beginnt. Darum überwacht der Gewinner des Wettbewerbes 2 den Datenbus 14 nach einer Beendigung der Aktivität und beginnt dann die Datenübertragung 2. Die Bestätigung 2 folgt der Datenübertragung 2 in derselben Weise, wie sie oben für die Bestätigung 1 beschrieben wurde. Der Zeitablauf der Bestätigung ist so, daß keine benachbarten Bestätigungen einander überlappen werden (obwohl sie benachbarte Datenübertragungen überlappen können).

Typischerweise ist ein Wettbewerb kürzer in der Dauer als der Datenübertragungszyklus, während dessen er auftritt. Dieses ist so, da ein Wettbewerb nur wenige Entscheidungszyklen aufweist, von denen jeder nur wenige Taktpulse Dauer hat, während eine Datenübertragung typischerweise die Übertragung einer großen Anzahl von Datenworten über eine entsprechende Anzahl von Taktzyklen enthält. Jedoch werden manchmal relativ kleine Datenpakete, die nur wenige Bytes von Daten enthalten (z. B. das Paket, das in Datenübertragung 2 gesandt wird) übertragen. Als ein Ergebnis überschreitet der nächste Wettbewerb, z. B. Wettbewerb 3, die vorhergehende Datenübertragung 2 in der Dauer. Dieses führt zu einem gewissen Grad von Unbelegtheit des Datenbusses 14 zwischen den Datenübertragungen 2 und 3, da die Datenübertragung 3 nicht beginnen kann, bis der Wettbewerb 3 vervollständigt ist (da noch kein Gewinner für den Zugriff auf den Datenbus für die Datenübertragung 3 zugeordnet worden ist).

Ein Wettbewerb kann jederzeit beginnen, solange es keine Möglichkeit eines Konfliktes zwischen zwei Wettbewerbsgewinnern, die auf den Datenbus 14 warten, gibt. Zum Beispiel beginnt der Wettbewerb 4 während der Datenübertragung 3 sobald es mindestens einen Benutzer (einen anderen als den Benutzer, der momentan Daten sendet) gibt, der Zugriff auf den Datenbus 14 anfordert. Dementsprechend wartet der Gewinner der Wettbewerbes 4 darauf, daß die Datenübertragung 3 beendet wird, bevor er die Datenübertragung 4 beginnt.

Ein anderer Grund dafür, daß der Datenbus 14 unbelegt ist, ist der Start eines Wettbewerbes kurz bevor die momentane Datenübertragung vervollständigt ist. Zum Beispiel beginnt der Wettbewerb 5 direkt vor dem Ende der Datenübertragung 4, was den Datenbus 14 dazu bringt, daß er unbelegt bleibt, nachdem die Datenübertragung 4 endet, bis der Gewinner des Wettbewerbes 5 bestimmt werden kann und dieser Benutzer die Datenübertragung 5 beginnt.

Entscheidungszeitablauf

Unter Bezugnahme auf die Fig. 3a und 4, individuelle Benutzer 12a bis 12n, die auf individuellen nicht-synchronen Benutzertakten 18 laufen, koordinieren die Anwendung und das Zurücklesen von Entscheidungscodes (ARBDATA) auf dem Entscheidungsbus 16 für einen Drei-Zyklus-Wettbewerb in der folgenden Weise. Die drei-OR-verdrahteten Leitungen des Sync-Busses 19 und die ansteigenden Flanken ihrer entsprechenden Signale ARBSYNC1, ARBSYNC2 und ARBSYNC3 werden zum Koordinieren des Wettbewerbes benutzt. Sogenannte "OR-verdrahtete"-Leitungen weisen einen ruhigen oder nicht-getriebenen Zustand auf, wenn kein Benutzer die Leitung treibt, und einen getriebenen oder angesteuerten Zustand auf, wenn einer oder mehrere Benutzer die Leitung treiben. Die nicht-getriebenzu-getrieben-Flanken dieser Signale werden für die Entscheidung verwendet, da die Anmelder herausgefunden haben, daß die anderen Flanken (d. h. getrieben- zu-nicht-getrieben) der Signale mehr Reflexionen auf den OR- verdrahteten-Leitungen produzieren, die eine effiziente Entscheidung behindern. Derart wird eine einzelne Flanke der ARB- SYNC-Signale verwendet. In den Beispielen, die in den Figuren gezeigt sind, sind die Leitungen ruhig auf einem logisch niedrigen Pegel und sie sind getrieben auf einem logisch hohen Pegel; derart wird die ansteigende Flanke verwendet. Aber normalerweise auf einem hohen Pegel befindliche Leitungen, die auf einen logisch niedrigen Pegel getrieben werden, könnten ebenso verwendet werden, wobei in diesem Fall die abfallenden Flanken verwendet würden.

In dem durch die Fig. 3a und 4 illustrierten Beispiel wird angenommen, daß anfänglich keine Benutzer 12a bis 12n versuchen zu entscheiden. Wenn ein Benutzer (z. B. der Benutzer 12a) aus seinem Sendepuffer 20 oder 21 bestimmt, daß er ein auf dem Datenbus 14 zu sendendes Datenpaket aufweist, gibt er einen Puls auf ARBSYNC3 (100) bei einer ansteigenden Flanke seines internen Benutzertaktes 18 (Zeitpunkt A) aus. Die ansteigende Flanke dieses Pulses zeigt allen Benutzern an, daß dieses der Beginn des Entscheidungszyklus 1 ist. Der ARBSYNC3-Puls ist eine Taktperiode lang, und er wird daher beendet, wenn ein Zähler in dem Benutzer 12a (initialisiert (102) bei 0) einen Zyklus (104) des Benutzertaktes 18 des Benutzers 12a zählt. Jeder Benutzer 12a bis 12n enthält eine Totemannschaltung, die den Benutzer zum Freigeben eines ARBSYNC-Signals (d. h. dem Signal erlauben, eine logische 0 zu werden) zwingt, falls der Benutzer das ARBSYNC-Signal für eine vorbestimmte Zeit auf hohem Pegel hält. Dieses hindert einen falsch funktionierenden Benutzertakt 18 am Unterbrechen der Entscheidung.

Auf das Empfangen der ansteigenden Flanke des Pulses auf ARB- SYNC3 werden alle anderen Benutzer 12a bis 12n am Erzeugen ihrer eigenen ARBSYNC3-Pulse gehindert. Falls zwei oder mehr Benutzer 12a bis 12n bereit werden, sich zu ungefähr derselben Zeit um eine Entscheidung zu bewerben, ist es möglich, daß diese Benutzer einen Puls auf ARBSYNC3 ausgeben, bevor sie eine Chance haben, die ansteigende Flanke von dem anderen zu beobachten. Das Erscheinen von mehreren Pulsen auf der ARBSYNC3- Leitung hat keine Folge, da jeder Benutzer 12a bis 12n nur auf die erste erkannte ansteigende Flanke des Pulses ARBSYNC3 reagiert.

Logik-Verzögerungen und Übertragungsleitungswirkungen können verursachen, daß die ARBSYNC3-Pulse als ein Puls oder als eine Folge von Pulsen auf der ARBSYNC3-Leitung erscheinen (während der Periode, die als Zeit B gezeigt ist). Die exakte Gestaltung des ARBSYNC3-Signales ist nicht wichtig, da jeder Benutzer nur auf die ansteigende Flanke des ersten ARBSYNC3-Pulses, die er sieht, reagiert. Auf das Empfangen dieser Flanke legt jeder Benutzer 12a bis 12n, der ein Datenpaket bereit zum Senden aufweist, seinen Zyklus-1-ARBDATA-Code (ARB CODE 1) (106), wie es unten diskutiert wird, auf dem Entscheidungsbus 16 an. Nur Benutzer 12a bis 12n, die ein Datenpaket bereit haben, wenn sie die ansteigende Flanke von ARBSYNC3 beobachten, können in diesem Wettbewerb (Wettbewerb 1) teilnehmen. Bemerke, daß jeder Benutzer 12a bis 12n den Entscheidungsbus 16 mit seinem Zyklus-1-ARBDATA-Code als Reaktion auf die ansteigende Flanke von ARBSYNC3 treibt, die nicht synchron mit seinem eigenen internen Benutzertakt 18 sein muß (und es oft nicht ist). Der Zyklus 1-ARBDATA-Code wird durch jeden Benutzer während des Zeitraumes C getrieben. Nicht-teilnehmende Benutzer 12a bis 12n fahren mit dem Überwachen der Signale des SYNC- Busses 19 fort, um die Entscheidungszyklen zu verfolgen und den Beginn des nächsten Wettbewerbes (Wettbewerb 3) zu erkennen, aber sie können nicht an dem momentanen Wettbewerb durch Treiben von Signalen entweder des Entscheidungsbusses 16 oder des SYNC-Busses 19 teilnehmen.

Wenn einmal eine positive Flanke auf ARBSYNC3 erzeugt worden ist, warten alle Benutzer 12a bis 12n darauf, daß sich der Entscheidungsbus 16 stabilisiert, bevor sie versuchen ARBDATA zu lesen (106). Eine Latentperiode (Zeit A bis Zeit D) ist in jedem Benutzer als eine Verzögerung zwischen der ansteigenden Flanke von ARBSYN3 (100), wie sie durch den Benutzer gesehen wird, und der Erzeugung des nächsten ARBSYNC-Pulses (ARBSYNC1), die das Lesen von ARBDATA verursachen wird, eingebaut. Im schlimmsten Fall kompensiert diese Verzögerung, daß sich ARBSYNC3 den Sync-Bus 19 herunter zu einem weit entfernten Benutzer fortpflanzt, und daß der weit entfernte Benutzer sein ARBDATA an den Entscheidungsbus 16 als Reaktion anlegt. Die Verzögerung wird auch benötigt, damit sich ARBDATA des weit entfernten Benutzers zurück über den Entscheidungsbus 16 zu allen Benutzern fortpflanzt. Eine Standard-Benutzertakt- Verzögerung ist in ein Register (ARB_DELAY) in jedem Entscheidungscontroller 17 (Fig. 1) programmiert, um für diesen schlimmen Fall eine Logik- und Übertragungsleitungsverzögerung zu kompensieren. Die Verzögerung ist 5 Taktzyklen in den Bei spielen, die in den Fig. 4, 5 und 6 gezeigt sind. Jeder Benutzer, der ARBSYNC3 ansteuert, beginnt (102) positive Flanken seines eigenen Benutzertaktes 18 direkt nach dem Ausgeben des ARBSYNC3-Pulses (100) zu zählen, was äquivalent zum Starten der Zählung mit einem Wert von 0 (102) ist (d. h. die erste ansteigende Flanke des Benutzertaktes 18 nach dem Ausgeben von ARBSYNC3 produziert eine Zählung von 1). Jeder andere eine Entscheidung suchende Benutzer wartet, auf das Empfangen der anfänglichen positiven Flanke von ARBSYNC3, auf die nächste ansteigende Flanke seines eigenen Benutzertaktes 18, bevor er zählen beginnt, was für solche Benutzer das Äquivalent des Startens der Zählung mit einem Wert von -1 ist (d. h., die erste ansteigende Flanke des Benutzertaktes nach dem Empfangen von ARBSYNC3 erzeugt eine Zählung von 0).

Jeder Benutzer erfaßt den ARBDATA-Wert auf dem Entscheidungbus 16 bei der ansteigenden Flanke des ersten ARBSYNC1-Pulses, den er beobachtet (Zeit D). Der Zustand der ARBSYNC1-Leitung, wenn ein Benutzer 12a bis 12n seine ARB_DELAY-Zählung erreicht, bestimmt, ob dieser Benutzer einen Puls auf ARBSYNC1 ausgibt oder nicht. Einen und einen halben Takt bevor die Benutzertaktzählung den ARB_DELAY-Wert erreicht (d. h. bei der negativen Flanke des internen Benutzertaktes 18, nachdem die Zählung den ARB_DELAY-2 erreicht, was drei Zyklen in diesem Beispiel ist) (108), beginnt der Benutzer das Beobachten (112) der ARB- SYNC1-Leitung (110). Falls die Benutzertaktzählung dann den letztendlichen ARB_DELAY-Wert erreicht und ARBSYNC1 niedrig bleibt (114), gibt der Benutzer dann einen Puls auf ARBSYNC1 für einen Taktzyklus zum Zeitpunkt D aus (116, 132, 133). Falls andererseits ein hoher Pegel auf ARBSYNC1 ankommt, während der Benutzer die ARBSYNC1-Leitung beobachtet (118), steht der Benutzer vom Ausgeben eines Pulses auf der ARBSYNC1- Leitung zurück.

Die führende Flanke des Pulses auf ARBSYNC1 triggert jeden Benutzer zum Erfassen (120) des ARBDATA-Codes auf dem Entscheidungsbus 16 (Zeitpunkt D). ARBSYNC1 kann, wie ARBSYNC3, als ein einzelner Puls oder als eine Abfolge von Pulsen von ver schiedenen führenden Benutzern (Zeitpunkt F) erscheinen, aber nur die führende Flanke des ersten erscheinenden ARBSYNC1- Pulses wird durch die teilnehmenden Benutzer verwendet (Zeitpunkt D). Jeder teilnehmende Benutzer vergleicht dann (122) den erfaßten Code mit dem Code, den er als ARBDATA erwartete. Falls die Codes übereinstimmen (124), ist der Benutzer ein "Gewinner" (möglicherweise einer aus einer Anzahl von Gewinnern) dieses Zyklus und bleibt ein Wettstreiter in dem Wettbewerb. Falls, für einen gegebenen Benutzer, die Codes nicht übereinstimmen (126), hat dieser Benutzer in diesem Wettbewerb verloren, aber er kann fortfahren, Pulse auf dem Sync-Bus 19 zu produzieren, wo es für den Rest des Wettbewerbes passend ist. Jedoch treiben verlierende Benutzer nicht länger ARBDATA (128) auf dem Entscheidungsbus 16 in den verbleibenden (d. h. dem zweiten und dem dritten) Entscheidungszyklen in diesem Wettbewerb.

Unter Bezugnahme auf ebenfalls Fig. 3b, der zweite Entscheidungszyklus ist ähnlich zu dem ersten, ausgenommen, daß er durch die ansteigende Flanke von ARBSYNC1 (Zeitpunkt D) getriggert wird. Jeder der Benutzer 12a bis 12n, der im Wettstreit in dem Wettbewerb verbleibt, plaziert seinen zweiten Entscheidungscode ARBDATA auf den Entscheidungsbusleitungen (130) direkt nach dem Empfangen der ansteigenden Flanke von ARBSYNC1 (Zeitpunkt E), die während des Zyklus 1 erzeugt wird. Jeder teilnehmende Benutzer 12a bis 12n (Wettstreiter oder Verlierer), der einen ARBSYNC1-Puls ausgibt, beginnt das Zählen von positiven Flanken seines eigenen Benutzertaktes direkt nach dem Ausgeben von ARBSYNC1 (132, Fig. 3a). Andere teilnehmende Benutzer (diejenigen Benutzer, die ARBSYNC1 nicht ausgegeben haben) warten bis zur nächsten ansteigenden Flanke ihres internen Taktes 18, der der ansteigenden Flanke von ARBSYNC1 folgt, bevor sie zu zählen beginnen (134, Fig. 3a). Bei dem nächsten negativen Übergang des internen Taktes 18 (138), nachdem die Zählung ARE_DELAY-2 erreicht (136) (selber Wert wie im Zyklus 1 oben), beginnt jeder teilnehmende Benutzer das Beobachten (140) der ARBSYNC2-Busleitung. Der erste teilnehmende Benutzer, der eine Zählung von ARB_DELAY erreicht (142), ohne eine ansteigende Flanke auf der ARBSYNC2-Busleitung zu beobachten, plaziert einen einzelnen Puls (144), der einen Benutzertaktpuls in der Länge aufweist (146, 148), auf ARBSYNC2 zum Zeitpunkt G. Dieser Puls bringt jeden Benutzer 12a bis 12n, der im Wettstreit in dem Wettbewerb verblieben ist, erneut (150) ARBDATA auf dem Entscheidungsbus 16 abzutasten und es (152) zum Zeitpunkt E mit dem zweiten Entscheidungscode (ARB CODE 2), den er auf dem Entscheidungsbus 16 plaziert hat, zu vergleichen. Erneut, falls für einen gegebenen Benutzer die Codes nicht übereinstimmen (154), wird dieser Benutzer ein Verlierer in Wettbewerb 1 und treibt nicht länger ARBDATA (156); aber der Benutzer fährt fort, falls es benötigt wird, Signale des Sync-Busses 19 für den Rest des Wettbewerbes zu überwachen und zu liefern.

Unter Bezugnahme auch auf Fig. 3c, dieser Vorgang wird in dem dritten Zyklus des Wettbewerbs wiederholt. Der dritte Zyklus wird durch die ansteigende Flanke von ARBSYNC2 (144, Fig. 3b) zum Zeitpunk G getriggert. Benutzer, die im Wettstreit in dem Wettbewerb verbleiben, plazieren (158) ihren dritten und letzten Entscheidungscode (ARB CODE 3) ARBDATA auf dem Entscheidungsbus 16. Jeder teilnehmende Benutzer (Wettstreiter oder Verlierer), der einen ARBSYNC2-Puls ausgibt, beginnt das Zählen (146, Fig. 3b) von positiven Flanken seines eigenen Benutzertaktes direkt nach dem Ansteuern von ARBSYNC2. Andere teilnehmende Benutzer warten bis zur nächsten ansteigenden Flanke ihrer internen Takte 18, die dem Beobachten der ansteigenden Flanke von ARBSYNC2 folgt, bevor sie das Zählen beginnen (147, Fig. 3B). Auf den nächsten negativen Übergang ihrer internen Takte 18 (162) nachdem die Zählung ARB_DELAY-2 erreicht (160), beginnen alle teilnehmenden Benutzer das Beobachten (164) der ARBSYNC3-Leitung. Jeder teilnehmende Benutzer, der eine Zählung von ARB_DELAY erreicht (166), ohne eine ansteigende Flanke auf der ARBSYNC3-Leitung zu beobachten, plaziert (168) einen einzelnen Puls mit einer Länge von einem Benutzertaktpuls (170, 172) auf ARBSYNC3 zum Zeitpunkt I. Dieser Puls bringt jeden Benutzer, der im Wettstreit in dem Wettbewerb verblieben ist, zum erneuten Abtasten (174) von ARBDATA auf dem Entschei dungsbus 16 und zum Vergleichen (176) desselben mit dem dritten Entscheidungscode (ARB CODE 3), den er auf den Bus 16 zum Zeitpunkt G plaziert hat. Wenn alle verbleibenden Wettstreiter ARBDATA abtasten, wird nur einer einen Code finden, der mit dem durch den Benutzer erwarteten Code übereinstimmt (178). Dieser Benutzer ist der Wettbewerbsgewinner (180) und wird der nächste Benutzer sein, dem der Zugriff auf den Datenbus 14 zum Übertragen des Datenpaketes in seinem Sendepuffer 20 oder 21 (Fig. 1) erlaubt wird.

Die ansteigende Flanke von ARBSYNC3 (168), die zum Erfassen (174) von ARBDATA des dritten Zyklus verwendet wird, beendet den lauf enden Wettbewerb (d. h. Wettbewerb 1) und dient außerdem zum Beginnen des nächsten Wettbewerbs (d. h. Wettbewerb 2). Jeder Benutzer, der ein anderer als der Gewinner von Wettbewerb 1 ist, der ein zum Senden bereites Paket aufweist, wenn ARBSYNC3 zum Zeitpunkt H ansteigt, wird ein Wettstreiter in dem neuen Wettbewerb (177). Der Benutzer, der den vorhergehenden Wettbewerb gewonnen hat, ist kein Wettstreiter in dem neuen Wettbewerb, da diesem Benutzer Zugriff auf den Datenbus 14 gewährt worden ist und er nicht wettstreiten muß, bis er erneut Zugriff anfordert, aber dieser Benutzer nimmt in der nächsten ARBSYNC-Pulserzeugung zum Starten des nächsten Wettbewerbers teil, wie unten beschrieben wird.

Unter Bezugnahme auf auch Fig. 3d, der Wettbewerb 2 beginnt direkt auf den Wettbewerb 1 folgend, solange es immernoch Benutzer gibt, die eine Entscheidung anfordern. Jeder Benutzer, der um den Zugriff auf den Datenbus 14 in dem Wettbewerb 2 wettstreiten wird, reagiert auf die ansteigende Flanke von ARBSYNC3 (168, Fig. 3c) zum Zeitpunkt I des Wettbewerbes 1 mit dem Plazieren (200) seines ARBDATA-Codes für Zyklus 1 des Wettbewerbes 2 auf dem Entscheidungsbus 16. Der Benutzer, oder die Benutzer, aus Wettbewerb 1, der ARBSYNC3 zum Zeitpunkt I angesteuert hat (Zyklus 3, Wettbewerb 1) beginnt das Zählen (170, Fig. 3c) von internen Benutzertakten direkt nachdem er ARBSYNC3 angesteuert hat. Alle anderen teilnehmenden Benutzer beginnen das Zählen ihrer internen Benutzertakte bei der näch sten ansteigenden Taktflanke nachdem sie den ARBSYNC3-Puls detektiert haben (171, Fig. 3c). Bei dem nächsten negativen Übergang ihrer internen Takte (204), nachdem die Zählung ARB_DELAY-2 erreicht (202), beginnen alle teilnehmenden Benutzer das Beobachten (206) der ARBSYNC1-Leitung. Der erste teilnehmende Benutzer, der eine Zählung von ARB_DELAY erreicht, ohne daß eine ansteigenden Flanke auf der ARBSYNC1-Leitung (wobei die FRAME-Leitung niedrig bleibt (210), wie unten diskutiert wird) beobachtet (208) plaziert (212) einen einzelnen Puls mit einer Länge eines Benutzertaktpulses (214, 216) auf ARBSYNC1 zum Zeitpunkt J. Der Gewinner des Wettbewerbes 1 stoppt dann die Teilnahme an dem Wettbewerb. Der ARBSYNC1-Puls bringt alle Wettstreiter des Wettbewerbes 2 zum Abtasten (218) von ARBDATA auf dem Entscheidungsbus 16, um Zyklus 1 des Wettbewerbes 2 zu vervollständigen. Solange es einige Wettstreiter in Wettbewerb 2 gibt, wird ARBDATA einen Nicht-Null-Wert (220) (der Null-Wert-Fall wird unten diskutiert) haben und der Wettbewerb wird in den Zyklen 2 und 3 (121, Fig. 3a) fortgesetzt, in derselben Weise wie oben für Wettbewerb 1 diskutiert.

Der ARBSYNC-Puls, der einen Entscheidungszyklus beendet, wird immer durch den Benutzer, oder die Benutzer erzeugt, der zuerst die ARB_DELAY-Zählung der internen Benutzertaktzyklen erreicht. Solche Benutzer werden "führende Benutzer" genannt. Da alle Benutzertake bei ungefähr derselben Frequenz sind, ist der führende Benutzer eines Zyklus wahrscheinlich der führende Benutzer für den nächsten Zyklus. Es ist jedoch für einen schnelleren Takt möglich, nach und nach vor einen langsameren Takt zu driften, so daß der Benutzer mit dem schnelleren Takt die Rolle des führenden Benutzer übernimmt. Außerdem verschiebt sich, falls ein Benutzer aus der Entscheidung herausfällt (z. B. weil er einen Wettbewerb gewonnen hat), die Rolle des führenden Benutzers zu einem anderen Benutzer.

Unter Bezugnahme auf Fig. 5, es wird ein Beispiel des Verschiebens der Rolle des Benutzers von einem Wettbewerb zu dem nächsten gezeigt. Während des Wettbewerbs 1 ist der Benutzer A der führende Benutzer in jedem Entscheidungszyklus, so daß der Takt des Benutzers A effektiv die ansteigenden Flanken der ARBSYNC-Pulse zeitlich vorgibt. Alle Benutzer, die in dem Wettbewerb 1 teilnehmen, inklusive des Gewinners plus irgendwelcher neuer Benutzer, die ein Paket senden möchten, zählen alle Taktzyklen in dem ersten Entscheidungszyklus des Wettbewerbes 2. In diesem Beispiel ist der Benutzer A erneut der erste, der ARB_DELAY erreicht, so daß er ARBSYNC1 erzeugt (zum Zeitpunkt B).

Nun angenommen, daß der Benutzer A der Gewinner des Wettbewerbes 1 war, stoppt so A das Teilnehmen am Wettbewerb 2. ARB- SYNC2 muß nun durch einen anderen Benutzer erzeugt werden, welcher auch immer der erste ist, der eine Zählung von ARB- DELAY erreicht. In dem Beispiel stellt sich der erste als der Benutzer B heraus (zum Zeitpunkt C). Der Benutzer B fährt dann fort, der führende Benutzer in Wettbewerb 2 zu sein (siehe Zeitpunkt D).

Unter Bezugnahme auf Fig. 6, wie unten diskutiert wird, ist es möglich, einige freie Zeit zwischen zwei Wettbewerben zu haben. Die linke Seite der Figur zeigt das Ende des Wettbewerbes (z. B. Wettbewerb 1), in dem nur ein einzelner Benutzer um den Zugriff auf den Datenbus 14 wettstreitet. Wenn der einzelne Wettstreiter Zugriff erhält, gibt es keine weiteren Benutzer 12a bis 12n, die die Benutzung des Datenbusses 14 anfordern, so daß alle Leitungen des Entscheidungsbusses 16 niedrig bleiben (d. h. ARBDATA = 0). Wie immer fährt der gewinnende Benutzer des Wettbewerbes 1 mit dem Zählen der Taktzyklen fort, bis Wettbewerb 1 beendet ist, und liefert abschließend den ARB- SYNC1-Puls (Zeitpunkt C). Auf das Empfangen der positiven Flanke dieses Pulses hin, erfassen alle Benutzer 12a bis 12n den freien Zustand des Entscheidungsbusses. Derart ist eine Quelle für den ARBSYNC1-Puls sichergestellt, selbst in der Abwesenheit von irgendwelchen neuen Wettstreitern oder Verlierern des Wettbewerbes 1 zur Zuführung dieses Pulses. Auf das Erfassen des freien Zustandes der Entscheidungsbusleitungen hin stellen alle Benutzer ihre Entscheidungsaktivitäten ein und warten darauf, daß ihre Sendepuffer 20 oder 21 (Fig. 1) ein neues Datenpaket erhalten. Während des entscheidungsfreien Zustandes kann irgendein Benutzer einen neuen Wettbewerb durch Ausgeben des ARBSYNC3-Pulses (Zeitpunkt D) starten, wie oben beschrieben worden ist.

Unter Bezugnahme auf Fig. 3b und 7, die Entscheidung wird unterbrochen, wenn es durch die Verwendung der FRAME- Steuerleitung des Datenbusses 14 (Fig. 1) notwendig ist. Da die Paketdatenübertragung auf dem Datenbus 14 gewöhnlich länger als ein Wettbewerb dauert (Fig. 2), ist es oft notwendig, den Beginn eines zweiten Wettbewerbes auszusetzen, bis eine momentane Datenpaketübertragung auf dem Datenbus vervollständigt ist. Diese verhindert, daß zwei oder mehr Wettbewerbe während derselben Datenübertragung stattfinden, was in mehr als einem Wettbewerbsgewinner resultieren würde, die gleichzeitig auf dem Zugriff auf den Datenbus 14 warten. Nur ein einzelner Wettbewerb kann während einer gegebenen Datenpaketübertragungsperiode auftreten, um sicherzustellen, daß nur ein Benutzer dazu bestimmt ist, auf den Datenbus zuzugreifen, wenn der momentane Datenbuszugriff vervollständigt ist.

Wenn der Benutzer, der auf den Datenbus 14 zugreift, das Vorhandensein eines Wettbewerbes detektiert, der durch die ansteigende Flanke von ARBSYNC2 angezeigt wird, steuert der Benutzer die FRAME-Steuerleitung des Datenbusses 14 an (Zeitpunkt A in Fig. 7). Jeder Benutzer, der an dem nächsten Wettbewerb teilnimmt, tastet (209, Fig. 3d) die FRAME- Steuerleitung nach positiven Flanken seines eigenen internen Benutzertaktes ab. Falls FRAME hoch ist (211), wenn ein teilnehmender Benutzer dabei ist, einen ARBSYNC1-Puls zu erzeugen (Zeitpunkt B), tritt dieser Benutzer in einen Haltezustand ein, die Entscheidung aussetzend. Darum wird, während FRAME hoch ist, keinem Benutzer erlaubt, den Zyklus 1 des zweiten Wettbewerbes zu vervollständigen. Auf das Vervollständigen seiner momentanen Datenübertragung auf dem Datenbus 14 hin, erlaubt der sendende Benutzer der FRAME-Steuerleitung niedrig zu werden (Zeitpunkt C). Auf das Detektieren (210) des niedri gen Zustandes der FRAME-Steuerleitung nehmen alle teilnehmenden Benutzer den Wettbewerbsbetrieb wieder auf (Zeitpunkt D).

In den soweit diskutierten Beispielen hatte der Entscheidungswettbewerb drei Entscheidungszyklen in der Länge und drei Synchronisierungsleitungen wurden benutzt in der Abfolge: ARB- SYNC1, ARBSYNC2, ARBSYNC3. Fig. 18, die unten diskutiert wird, zeigt ein Beispiel mit nur zwei Synchronisierungsleitungen, die gepulst werden in einer alternierenden Abfolge: ARBSYNC1, ARBSYNC2, ARBSYNC1, ARBSYNC2. Mehr als eine Synchronisierungsleitung wird benutzt, so daß die letzten Pulse von einem Entscheidungszyklus nicht mit den ersten Pulsen des nächsten Entscheidungszyklus durcheinander gebracht werden. Damit das Schema funktioniert, muß es eine Abtasterperiode nahe des Endes jedes Entscheidungszyklus geben, während der jeder Benutzer nach einem Syncpuls von einem anderen Benutzer Ausschau halten kann, während er in Richtung ARB_DELAY zählt. (In dem oben beschriebenen Beispiel beginnt diese Periode auf der negativen Flanke des Benutzertaktes, nachdem er eine Zählung von ARB_DELAY-2 erreicht). Alle Pulse von vorhergehenden Zyklen müssen fertig sein, bevor diese Abtastperiode beginnen kann.

Es ist möglich, eine Entscheidung mit nur einer Synchronisierungsleitung auszuführen, aber eine längere Entscheidungszykluszeit wird erforderlich. Die minimale Zykluszeit muß die oben gegebenen Zeiten enthalten (d. h. genügend Zeit für ein Signal, zu dem Ende des Chassis zu wandern, für einen Benutzer an dem entfernten Ende zu antworten, und für das Signal zurückzulaufen und erkannt zu werden), plus die Länge des Sync- Pulses selbst und die Länge der ARBDATA-Abtastzeit an dem Ende jedes Zyklus.

Entscheidungsprotokoll

Die individuellen Leitungen des Entscheidungsbusses 16 (ARBDATA 0 bis ARBDATA 4) sind als OR-verdrahtete Leitungen konfiguriert, so daß jedweder teilnehmende Benutzer, der eine der Entscheidungsbusleitungen ansteuert (d. h. durch Plazieren einer logischen "1" auf der Leitung), jedem der anderen Benutzer dazu bringen wird, das Ansteuern zu detektieren. Darum ist eine Entscheidungsbusleitung niedrig, falls kein teilnehmender Benutzer sie hoch angesteuert hat, aber sie ist hoch, falls irgendein teilnehmender Benutzer sie hoch ansteuert.

Entscheidungscodes sind den Benutzern zugeordnet, so daß das nach einer vorbestimmten Anzahl von Zyklen (z. B. 3 oder 4) des Anlegens von Entscheidungscodes an die Entscheidungsbusleitungen 16 nur ein Benutzer verbleiben wird. Dieser Benutzer ist der "Gewinner" des Wettbewerbes und es wird ihm erlaubt, sein Datenpaket auf dem Datenbus 14 während des nächsten Datenübertragungszyklus zu senden, wie oben diskutiert worden ist.

Unter Bezugnahme auf die Fig. 8 und 10, es wird ein Drei- Zyklus-Wettbewerb unter Verwendung eines Fünf-Draht- Entscheidungsbusses 16 gezeigt. Die Entscheidungsbusdatenleitungen ARBDATA0 bis ARBDATA4 (Fig. 1) sind die Datenleitungen des Entscheidungsbusses 16, die ein fünf Bit ARBDATA-Codewort (ARB CODE) darstellen. Die Leitung ARBDATA4 ist das signifikanteste Bit (MSB) und die Leitung ARBDATA0 ist das am wenigstens signifikante Bit (LSB). Fig. 8 ist in drei Entscheidungszyklen unterteilt und zeigt die Bedeutung, die jeder Entscheidungsleitung (Bit) für jeden Entscheidungszyklus zugeordnet ist. Während des Zyklus 1 sind die Entscheidungsdatenleitungen ARBDATA0 bis ARBDATA4 zum Darstellen von Benutzerprioritäten (d. h. P1 und P2) und von Gruppen (G1 und G2) definiert, wie unten diskutiert wird. Während der Zyklen 2 und 3 sind die Entscheidungsleitungen definiert zum Darstellen von zuvor zugeordneten Entscheidungsadreßcodebites A9 - A5 (d. h. der signifikanteste Abschnitt eines Entscheidungscodes aus Fig. 10) bzw. A4 - A0 (d. h. dem am wenigsten signifikanten Abschnitt eines Entscheidungscodes aus Fig. 10).

Der Entscheidungszyklus 1 unterteilt die teilnehmenden Benutzer durch die Priorität der Nachricht P1 oder P2. Die Nachrichtenpriorität wird bestimmt durch die Sendepuffer 20 und 21 jedes Benutzers (Fig. 1) und ist abhängig von dem Nachrichten inhalt und der relativen Eiligkeit. Es gibt zwei Nachrichtenprioritäten, die in diesem System verfügbar sind, eine hohe Priorität G1 und eine niedrigere Priorität G2. Die Priorität für die Entscheidung basiert auf zwei Faktoren: (1) die Priorität wie sie durch die Nachrichtenprioritätssignale P1 und P2 angezeigt werden, und (2) die Gruppenmitgliedschaft. Die Gruppenmitgliedschaft wird gewonnen durch einen Benutzer, wenn er einen Wettbewerb nicht gewinnt, in dem kein Wettstreiter ein Gruppenmitglied mit derselben Nachrichtenpriorität war. Die Gruppenmitgliedschaft wird angezeigt durch die Gruppenprioritätssignale G1 (für P1-Nachrichten) und G2 (für P2-Nachrichten). Während des Zyklus 1 steuert ein Benutzer mit einem P1-Paket (d. h. plaziert eine logische "1") die Entscheidungsdatenleitungen ARBDATA0, ARBDATA1 und ARBDATA2 (0111) an (Fig. 8). In ähnlicher Weise steuert ein Benutzer mit einem Prioritäts-P2-Paket nur die Leitung ARBDATA0 an (0001).

Die Benutzer der Gruppe G1 setzen ARBDATA 3 auf hoch (1111) und die Benutzer der Gruppe G2 setzen ARBDATA1 auf hoch (0011) zusätzlich zu ihrem entsprechenden P1- und P2-Code. Danach haben in nachfolgenden Wettbewerben Benutzer, die ein G1-Signal ausgeben, Priorität gegenüber denjenigen, die ein P1-, G2- oder P2-Signal ausgeben. Derart werden Benutzer, die zur Gruppe G1 gehören, Priorität über alle neu Ankömmlingen mit derselben P1-Nachrichtenpriorität (d. h. Benutzern, die nicht Mitglied von G1 sind) und allen Benutzern mit P2- Nachrichtenpriorität haben. In ähnlicher Weise haben diejenigen Benutzer, die ein G2-Signal ausgeben, Priorität gegenüber denjenigen, die nur ein P2-Nachrichtenprioritätssignal ausgeben (d. h. den Benutzern, die nicht Mitglieder von G2 sind), wobei sich G2-Benutzer immernoch allen Benutzern, die entweder ein P1 oder G1-Prioritätssignal ausgeben, beugen. Neue G1- oder G2-Gruppen können gebildet werden, nachdem alle entsprechenden momentanen G1- oder G2-Gruppenbenutzer bedient worden sind, was den Zugriff für diejenigen sichert, die zu einer Gruppe gehören, bevor ein Zugriff für neu teilnehmende Benutzer mit derselben Nachrichtenpriorität gewährt wird. Auf diese Weise wird allen Benutzern mit derselben Priorität, die zusam men in einem gegebenen Wettbewerb eintreten, gesichert, daß sie vor einem neuen Benutzer mit derselben Priorität bedient werden, der versucht, eine Entscheidung nach diesem Wettbewerb zu starten.

Unter Bezugnahme auf Fig. 9a, es ist ein Beispiel der Entscheidungscodes gezeigt, die durch sieben Benutzer ausgegeben werden, die für den Zugriff auf den Datenbus 14 während des Zyklus 1 (ARB CODE 1) konkurieren, für jeden von sieben Wettbewerben. Die ganz linke Spalte zeigt die Benutzernummer und seine entsprechende Priorität an. Zum Beispiel hat der Benutzer 1 eine P1-Priorität und Benuzter 4 hat eine P2-Priorität. Während des Zyklus 1 des Wettbewerbs 1 geben die Benutzer 1, 2 und 3 ihren P1-Prioritätscode auf 0111 (Fig. 3) aus, und die Benutzer 4 und 5 geben ihren P2-Prioritätscode auf 0001 aus. Die Benutzer 6 und 7 haben noch keinen Zugriff auf den Datenbus 14 angefordert und nehmen daher nicht am Wettbewerb 1 teil.

Angenommen, daß der Benutzer 3 den Wettbewerb 1 gewinnt (z. B. er hat die höchste Benutzernummer (A9 - A0) unter den P1- Benutzern und wird daher als erster nach den vorgeschlagenen Entscheidungszuordnungen, die unten beschrieben werden, ausgewählt), wodurch der Benutzer 3 nicht am Wettbewerb 2 teilnimmt. Die Benutzer 1 und 2 fahren fort ihre P1- Prioritätssignale auszugeben. Da sie den Wettbewerb 1 verloren haben und kein Benutzer sein Gruppenbit in Wettbewerb 1 gesetzt hatte, bilden sie eine G1-Gruppe und geben ihren G1-Code auf 1111 während des Zyklus 1 des Wettbewerbes 2 aus. In ähnlicher Weise bilden die Benutzer 4 und 5, die Priorität 2- Verlierer des Wettbewerbs 1, eine G2-Gruppe und geben ihren G2-Code auf 0011 während des Zyklus 1 des Wettbewerbs 2 aus. Die Benutzer 6 und 7 eifern um den Zugriff in Wettbewerb 2 und geben daher ihren entsprechenden Priorität-P1-Code (0111) bzw. P2-Code (0001) aus. Da der Benutzer 6 in den Entscheidungswettstreit in einem späteren Wettbewerb als der Benutzer 1 und 2 (dieselbe P1-Priorität) eingetreten ist, wird der Benutzer 6 immer eine niedrige Priorität bezüglich derjenigen der Benut zer 1 und 2 haben (d. h. die Benutzer 1 und 2 werden immer Zugriff vor 6 erhalten). Dasselbe ist wahr für den Benutzer 7 bezüglich der Benutzer 4 und 5 (dieselbe P2-Priorität); das heißt, die Benutzer 4 und 5 werden immer Zugriff vor dem Benutzer 7 erhalten.

Angenommen, daß der Benutzer 2 den Wettbewerb 2 gewinnt und derart nicht an dem nächsten Wettbewerb teilnimmt. Im Wettbewerb 3 fährt der Benutzer 1 fort, seinen G1-Code auszugeben, die Benutzer 4 und 5 geben ihre G2-Codes aus, der Benutzer 6 gibt seinen P1-Code aus und der Benutzer 7 gibt seinen P2-Code aus. Wenn einmal eine G1-Gruppe gebildet ist, müssen alle ihre Mitglieder bedient werden, bevor eine andere G1-Gruppe gebildet wird. Daher kann der Benutzer 6 nicht ein Mitglied einer G1-Gruppe sein, bis alle Mitglieder der G1-Gruppe zu dem Zeitpunkt, zu dem der Benutzer 6 die Entscheidung begonnen hat (d. h. Benutzer 1 und 2) bedient worden sind. Wie mit einer G1- Gruppe müssen, wenn einmal eine G2-Gruppe gebildet ist, alle ihre Mitglieder bedient werden, bevor eine andere G2-Gruppe gebildet wird. Derart kann der Benutzer 7 nicht Mitglied einer G2-Gruppe sein, bis alle Mitglieder der momentanen G2-Gruppe bedient sind (d. h. die Benutzer 4 und 5). Darum kann der Benutzer 6 nur einen P1-Code ausgeben und der Benutzer 7 kann nur einen P2-Code zu dieser Zeit ausgeben.

Angenommen, daß der Benutzer 1 der Gewinner des Wettbewerbes 3 ist. Derart ist offensichtlich, daß die beiden Benutzer 1 und 2, die die Gruppe G1 gebildet haben, vor dem Priorität-P1 Benutzer 6 bedient worden sind.

Der Benutzer 6 gewinnt den Wettbewerb 4, obwohl die Entscheidung begonnen hat, nachdem die G2-Gruppe aus den Paketen 4 und 5 gebildet wurde. Dieses ist aus der Reihenfolge der Prioritäten (d. h. G1, P1, G2, P2) aus Fig. 9 offensichtlich. Die verbleibenden Wettbewerber 6 und 7 illustrieren, daß die beiden Priorität-P2-Pakete 4 und 5, die die Gruppe G2 bilden, vor dem Priorität-P2-Paket 7 bedient werden.

Unter Bezugnahme auf Fig. 9b, es ist ein anderes Beispiel der Entscheidungscodes gezeigt, die während Zyklus 1 von jedem von sechs Wettbewerbern ausgegeben werden. Hier wetteifern fünf Benutzer mit P1-Nachrichtenprioritätspaketen um den Zugriff auf den Datenbus 14. Die ganz linke Spalte zeigt die Benutzernummer und seine entsprechende Priorität. Insbesondere illustriert dieses Beispiel, wie eine neue Gruppe gebildet wird, nachdem eine Gruppe beendet ist (d. h. alle Benutzer in der Gruppe erhalten Zugriff auf den Datenbus 14). Die Gruppe G1 wird hier benutzt, aber das Schema gilt ebenso wie für andere Gruppen wie G2.

Während des Zyklus 1 des Wettbewerbs 1 nehmen die Benutzer 1, 3 und 4, die alle die P1-Priorität haben, an dem Wettbewerb teil. Jeder gibt seinen P1-Nachrichtenprioritätscode 0111 aus. Die Benutzer 2 und 5 haben noch nicht begonnen teilzunehmen.

Angenommen, daß der Benutzer 4 den Wettbewerb 1 gewinnt (d. h. die höchste Benuzternummer A9 - A0 unter den P1-Teilnehmern aufweist) und nicht am Wettbewerb 2 teilnimmt. Die Benutzer 1 und 3 fahren fort, ihren P1-Prioritätscode während des Wettbewerbs 2 auszugeben. Zusätzlich bilden, da sie den Wettbewerb 1 verloren haben und kein Benutzer sein G1-Gruppenbit in dem Wettbewerb gesetzt hat, die Benutzer 1 und 3 eine G1-Gruppe und geben ihren G1-Code von 1111 während des Zyklus 1 des Wettbewerbes 2 aus. Der neue Teilnehmer am Wettbewerb 2 der Benutzer 2, hat ebenfalls ein P1-Nachrichtenprioritätspaket, aber er kann nicht zu den Benutzern 1 und 3 in der Gruppe G1 stoßen, da er nicht am Wettbewerb 1 teilgenommen hat (d. h. des Wettbewerbs, dessen verlierende Teilnehmer die Gruppe G1 gebildet haben). Darum gibt der Benutzer 2 einen P1-Code aus 0111 während des Wettbewerbes 2 aus und fährt damit fort, bis beide Benutzer 1 und 3 einen Wettbewerb gewonnen haben.

Angenommen, daß der Benutzer 3 den Wettbewerb 2 gewinnt und daher nicht am Wettbewerb 3 teilnehmen muß. Während des Wettbewerbs 3 konkurriert der Benutzer 1 mit dem Benutzer 2 und dem neuen Benutzer 5, der auch eine P1-Priorität aufweist. Er neut gibt der Benutzer 1 einen Entscheidungscode auf 1111 aus, der eine G1-Mitgliedschaft anzeigt. Die Benutzer 2 und 5 geben beide Codes auf 0111 aus, da keiner ein Mitglied der Gruppe G1 ist.

Der Benutzer 1 gewinnt den Wettbewerb 3, wodurch er nicht am Wettbewerb 4 teilnehmen muß. Die Benutzer 2 und 5 nehmen am Wettbewerb 4 teil, zusammen mit einem neuen Benutzer 4. Alle Benutzer haben P1-Prioritätspakete und jeder gibt einen Code auf 0111 aus. Da der Wettbewerb 4 der erste Wettbewerb nach dem Wettbewerb ist, in dem das letzte Mitglied der ursprünglichen G1-Gruppe gewonnen hat (d. h. der Benutzer 1 hat den Wettbewerb 3 gewonnen), werden die Verlierer des Wettbewerbs 4 eine neue G1-Gruppe für den Wettbewerb 5 bilden. Das heißt, der momentane Wettbewerb hat keine Teilnehmer, die eine G1- Mitgliedschaft ausgeben, und daher kann sich eine neue G1- Gruppe für den nächsten Wettbewerb bilden. Darum geben, obwohl die Benutzer 2, 4 und 5 die Entscheidungsbewerbung zu unterschiedlichen Zeitpunkten begonnen haben (d. h. der Benutzer 2 in Wettbewerb 2, der Benutzer 5 in Wettbewerb 3 und der Benutzer 4 in Wettbewerb 4), alle denselben 0111-P1- Nachrichtenprioritätscode während des Wettbewerbs 4 aus, und die Verlierer bilden dieselbe G1-Gruppe für Wettbewerb 5.

Angenommen, daß der Benutzer 5 den Wettbewerb 4 gewinnt und derart nicht am Wettbewerb 5 teilnehmen muß. Die Benutzer 2 und 4 bilden dieselbe G1-Gruppe und jeder fährt fort, einen Code auf 1111 auszugeben, bis er bedient ist (d. h. der Benutzer 4 gewinnt den Wettbewerb 5 und der Benutzer 2 gewinnt Wettbewerb 6).

Es gibt zusätzliche Entscheidungszyklen in jedem Wettbewerb, da, wie aus der obigen Diskussion entnommen werden kann, mehrere Benutzer typischerweise während des Zyklus 1 "gewinnen". Die Zyklen 2 und 3 werden benutzt, um alle außer einem Wettbewerbsgewinner "auszusondern". Eine Abfolge von eindeutigen Entscheidungscodes ist unter den Benutzern zuvor zugeordnet worden (z. B. basierend auf einer Kartenkäfig-Schlitzposition) und wird durch die Benutzer an den Entscheidungsbus während der Zyklen 2 und 3 zum Erzeugen eines Wettbewerbsgewinners angelegt.

Unter Bezugnahme auf Fig. 10, es ist eine Tabelle von Codes für die Wettbewerbszyklen 2 und 3 und ihre Verteilung unter 36 Benutzern gezeigt. Die Spalte, die mit A9 - A5 etikettiert ist, entspricht den Entscheidungsbits A9 - A5 aus Fig. 8 (ARB CODE 2). In ähnlicher Weise entspricht die Spalte, die mit Ar- A0 etikettiert ist, den Entscheidungsbits A4 - A0 aus Fig. 8 (ARB CODE 3). Die Entscheidungscodes in diesen beiden Spalten bilden ein "fortlaufendes" Muster in jeder Spalte. Jeder Code ist entweder derselbe, ein Untersatz, oder ein Obersatz von jedem anderen Code in seiner Spalte. Darum wird während eines gegebenen Entscheidungszyklus, falls 2 oder mehr Codes gleichzeitig an die OR-verdrahteten Leitungen des Entscheidungsbusses 16 angelegt werden, das resultierende Muster immer mit mindestens einem der angelegten Codes übereinstimmen. Es gibt Gruppen von Benutzern mit demselben A9 - A5-Code (ARB CODE 2), aber diese Benutzer haben unterschiedliche A4 - A0-Codes (ARB CODE 3). Obwohl der Entscheidungscodezuordnung, die durch Fig. 10 vorgeschlagen ist, nicht exakt gefolgt werden muß, sollten die Codes durch eine Identität-Untersatz-Obersatz-Eigenschaft in Beziehung stehen, so daß jeder Entscheidungszyklus immer mindestens einen Gewinner haben wird.

Aus Fig. 10 ist ebenfalls offensichtlich, daß unter den Codes eine Priorität existiert, wobei der Benutzer 0 den niedrigsten Prioritätscode hat und der Benutzer 35 den höchsten Prioritätscode hat. Daher wird, innerhalb einer gegebenen Gruppe, der Benutzer 35 immer jeden anderen Benutzer in den Zyklen 2 und 3 besiegen. Das umgekehrte ist wahr für den Benutzer 0. Zum Beispiel werden während des Zyklus 2 die Benutzer 30 bis 35 (1111) immer siegreich über die verbleibenden Benutzer sein. Umgekehrt werden in Zyklus 2 die Benutzer 0 bis 5 (0000) immer gegen irgendeinen anderen Benutzer verlieren. In Zyklus 3 werden die Benutzer 5, 11, 17, 23, 29 oder 35 (1111) siegreich über irgendeinen anderen verbleibenden Benutzer sein, da sie die höchste Priorität der Benutzer in ihrer Zyklus-2- Gruppe aufweisen (aber die Anwesenheit von irgendeinem dieser Benutzer in Zyklus 3 schließt gegenseitig die Anwesenheit der anderen aus).

Daher, werden, falls eine Gruppe von Benutzern alle eine Entscheidung zur selben Zeit und mit derselben Nachrichtenpriorität wünschen, die Benutzer mit höheren Nummern zuerst gewinnen. Benutzer, die die Entscheidung mit derselben Nachrichtenpriorität ein bißchen später beginnen, werden jedoch zu warten haben, bis alle Mitglieder der ersten Gruppe fertig sind.

Datenübertragungsprotokoll

Unter Bezugnahme auf Fig. 11, die Datenbusleitungen (Fig. 1) sind in zwei Segmente (entsprechend zu Datenpuffer A und Datenpuffer B aus Fig. 1) gruppiert, von denen jedes sein eigenes Datenauslösepulssignal (STROBE A bzw. STROBE B) enthält. Die Zeitsteuerung für nur ein einzelnes Datenbussegment und den zugehörigen Datenauslösepuls ist in Fig. 22 gezeigt. Alle Leitungen eines gegebenen Segmentes sind an derselben Bustreibervorrichtung in dem sendenden Benutzer und derselben Busempfängervorrichtung in dem empfangenen Benutzer angebracht, um den Versatz zwischen den verschiedenen Datenbits eines Segmentes und ihren entsprechenden Datenauslösepulssignalen, die durch verschiedene Ausbreitungsverzögerungen, die mit verschiedenen Treibern und Empfängern verbunden sind, verursacht werden, zu begrenzen. Das Eliminieren des Versatzes zwischen dem Datenbussegment seinem entsprechenden Datenauslösepuls führt zu einer hohen Datenratenfähigkeit. In diesem Beispiel enthält ein Datenbussegment (Datenpuffer B) sieben Datenbits (D1-D7), während das andere Datenbussegment (Datenpuffer A) das verbleibende Datenbit, D0 (um es insgesamt auf acht Datenbits zu bringen), die FRAME-Leitung, die BESTÄTIGEN-Leitung und die PARITÄTS-Leitung enthält.

Übergänge auf der Datenauslösepulsleitung treten auf halbem Weg durch den Zeitraum auf, in dem Daten, die auf dem Datenbus 14 übertragen werden, gültig sind (Zeitpunkt A). Daher werden die Auslösepulsübergänge durch den empfangenen Benutzer genutzt, um diese Daten zu erfassen. Der Datenauslösepuls macht nur einen einzelnen Übergang pro Datenzyklus, und sowohl der ansteigende (Zeitpunkt A) als auch der abfallende (Zeitpunkt B) Übergang werden zum Takten von Daten in den empfangenden Puffer benutzt. Die Datenauslöseleitung wird immer in ihren niedrigen Ruhezustand an dem Ende eines Paketes gebracht. Falls das Datenpaket eine ungerade Anzahl von Bytes enthält, wird eine Extra-Zykluszeit an das Ende des Paketes angehängt, um der Datenauslöseleitung zu ermöglichen, in ihren niedrigen Ruhezustand zurückzukehren (Zeitpunkt X). Beide Fälle sind in Fig. 11 gezeigt.

Wie oben diskutiert wurde, die FRAME-Leitung wird benutzt, um Wettbewerbe auszusetzen, wenn einmal ein nächster Sender ausgewählt worden ist. Der momentane Sender hebt die FRAME- Steuerleitung an, falls er den Start eines zweiten Zyklus eines Wettbewerbewerbs detektiert (d. h. die ansteigende Flanke von ARBSYNC2, Fig. 7), was zu jeder Zeit während seiner Datenpaketübertragung auftreten kann (Zeitpunkt C). Der Sender erniedrigt die FRAME-Steuerleitung, wenn er das letzte Byte seines Paketes über den Datenbus 14 sendet (Zeitpunkt E). Eine andere Funktion der FRAME-Leitung ist, das Ende jedes Paketes für den empfangenen Benutzer und jedweden Wettbewerbsgewinner, der auf den Datenbus 14 wartet, zu kennzeichnen. Darum hebt der Sender immer die FRAME-Steuerleitung während des vorletzten Byte eines Paketes (Zeitpunkt D) an, selbst falls er nicht eine andere Entscheidung detektiert, und erniedrigt das FRAME- Signal bei dem letzten Byte (Zeitpunkt E), um einen Hoch-zu- Niedrig-Übergang auf dem FRAME-Steuersignal an dem Ende jedes Datenpaketes zu liefern. Ein gewinnender Benutzer einer nachfolgenden Entscheidung überwacht das FRAME-Steuersignal und beginnt seine Datenübertragung nur, nachdem er den Hoch-zu- Niedrig-Übergang auf dem FRAME-Steuersignal detektiert hat.

Der sendende Benutzer berechnet ein Fehlerdetektionsparitätsbit aus dem Datenbusdatenbits und den Frame-Steuersignalbits und überträgt das Paritätsbit zusammen mit den Daten auf der PARITÄTS-Leitung des Datenbusses 14 (Fig. 1). Die Parität wechselt zwischen ungerader und gerader Parität, beginnend mit der ungeraden Parität, auf einer Datenbyte-zu-Datenbyte-Basis. Die alternierende Parität macht Taktstörspitzen oder Flanken außerhalb des Sync-Taktes als Paritätsfehler detektierbar. Außerdem, keine Ansammlung von feststeckenden Datenbusleitungen kann die Paritätsüberprüfung über das gesamte Datenpaket erfüllen.

Unter Bezugnahme auf Fig. 12, es wird ein Zeitablaufdiagramm von aufeinanderfolgenden Datenübertragungen (Fig. 2) über den Datenbus 14 und die Beziehung von Benutzertakten unter aufeinanderfolgenden Benutzern des Datenbusses 14 gezeigt. Während der Benutzer A Daten auf dem Datenbus 14 überträgt, tastet der nachfolgende Entscheidungsgewinner, z. B. der Benutzer B, die FRAME-Steuerleitung auf Datenauslösepulsflanken (Zeitpunkt A) ab und hält Ausschau nach einem Hoch-zu-Niedrig-Übergang auf FRAME (Zeitpunkt B), der das Ende der momentanen Datenübertragung auf den Datenbus 14 anzeigt. Der Benutzer B tastet dann die Datenauslösung auf die ansteigende Flanke seines eigenen internen Benutzertaktes (Zeitpunkt C) ab, bis ein niedriger Wert erhalten wird, was dem Benutzer B die Steuerung der Datenauslösung sichert. Auf die folgende negative Flanke des Taktes des Benutzers B (Zeitpunkt D) beginnt der Benutzer B das erste Byte seines Paketes auf dem Datenbus 14 zu senden.

Damit zwei Benutzer 12a bis 12n Datenpakete unter Verwendung dieses Datenübertragungsprotokolls übertragen können, müssen ihre Benutzertakte 18 nahe in der Frequenz gehalten werden. Insbesondere müssen die Benutzertakte 18 in der Frequenz nahe genug sein, so daß, über den Verlauf eines Paketes maximaler Größe (z. B. 64 Byte), der zwischen dem langsamsten und dem schnellsten Benutzertakt 18 angesammelter Versatz kleiner als 1/2 der Verbindungsbitzeit (d. h. der Zeit, die ein Bit braucht, um sich zwischen den beiden entferntesten Benutzern fortzupflanzen) ist.

Bestätigungsprotokoll

Das Bestätigungsprotokoll liefert eine Verifikation an den Sender, daß das Paket bei dem Empfänger intakt angekommen ist. Das erste Byte (Wort) jedes Datenpaketes, das über den Datenbus gesandt wird, enthält eine Bestimmungsbenutzeradresse. Jeder Benutzer 12a bis 12n erfaßt das erste Wort jedes Paketes und untersucht die Adresse, um zu bestimmen, ob er die Bestimmung für das Paket ist. Jeder Benutzer ist so konfiguriert, daß er seine eigene einzigartige Adresse erkennt und alle Benutzer erkennen eine globale Nachrichtenübermittlungsadresse (ebenso wie Mehrfachadressatenadressen). Falls ein Benutzer die Paketadresse nicht als seine eigene (oder als eine globale Adresse) erkennt, ignoriert der Benutzer einfach den Rest des Paketes. Falls die Adresse eine globale Adresse ist oder mit der Adresse eines empfangenden Benutzers übereinstimmt, untersucht der Benutzer das Prioritätsbit (d. h. P1 oder P2), welches ebenfalls in dem ersten Byte des Paketes ist, und dirigiert dementsprechend das Paket zu dem richtigen Empfangspuffer 22 oder 23 (Fig. 1), der der Paketpriorität entspricht. Der Empfangspuffer 22 akzeptiert Priorität-P1-Pakete, während der Empfangspuffer 23 Priorität-P2-Pakete akzeptiert.

Unter Bezugnahme auf die Fig. 13 und 14, wenn ein Benutzer seine eigene Adresse (oder die globale oder eine Mehrfachadressatenadresse) erkennt und beginnt, das Paket zu empfangen, reagiert er durch Anheben der BESTÄTIGUNGS-Leitung des Datenbusses 14 (Fig. 1) zum Zeitpunkt A. Falls eine Paketübertragung fortläuft, erfaßt der empfangende Benutzer jedes Byte des Paketes und überprüft es nach Paritätsfehlern. An dem Ende des Paketes, falls der Benutzer keine Paritätsfehler erkennt, erniedrigt der Benutzer die BESTÄTIGUNGS-Leitung (Zeitpunkt C). Umgekehrt, falls der empfangende Benutzer einen Paritätsfehler erkennt, hält er die BESTÄTIGUNGS-Leitung für einen vorbestimmten Zeitraum, wie unten diskutiert wird (z. B. vom Zeitpunkt C bis zum Zeitpunkt E), nach dem Ende der Paketübertragung, bevor er die BESTÄTIGUNGS-Leitung erniedrigt.

Der sendende Benutzer überprüft, ob ein Benutzer das Paket empfängt, indem er nach einem hohen Pegel auf der BESTÄTIGUNGS-Leitung während der Paketübertragung schaut. Dieses zeigt an, daß mindestens ein Benutzer diese Adresse als seine eigene erkannt und durch Anheben der BESTÄTIGUNGS-Leitung geantwortet hat. Falls kein Benutzer durch Anheben der BESTÄTI- GUNGS-Leitung antwortet, erkennt der Sender einen Fehlerzustand und beendet die Paketübertragung.

Nachdem das letzte Datenbyte über den Datenbus 14 gesandt ist, wartet der sendende Benutzer eine vorbestimmte Zeitdauer, die in dem RATIFY_DELAY-Register des Entscheidungscontrollers 17 (Fig. 1) programmiert ist, um es dem am weitesten entfernten und langsamsten Benutzer zu ermöglichen, zu antworten, und tastet die BESTÄTIGUNGS-Leitung erneut ab. Ein niedriger Pegel zeigt eine erfolgreiche Übertragung an. Falls das Paket ein Nachrichtenpaket an alle Benutzer war (d. h. eine globale Adresse, die alle Benutzer als ihre eigene erkennen), erscheinen ihre BESTÄTIGUNGS-Leitungsantworten zusammen (da die BESTÄTIGUNGS-Leitung ebenfalls OR-verdrahtet ist), so daß irgendein Benutzer die BESTÄTIGUNGS-Leitung am Heruntergehen an dem Ende des Paketes hindern kann, falls dieser Benutzer fehlerhafte Daten empfangen hat.

Die Zeitablaufdarstellungen in Fig. 13 und 14 zeigen die BESTÄTIGUNGS-Protokollsignale für "lange" (Fig. 13) und "kurze" (Fig. 14) Pakete von den Standpunkten des sendenden Benutzers und des empfangenden Benutzers. Die Zeitverzögerungen in dem Bestätigungsprotokoll werden gelenkt durch das vorprogrammierte RATIFY-DELAY-Steuerregister (Fig. 1) in jedem Entscheidungscontroller 17, das eine Verzögerung in dem Bereich von einem bis sieben Benutzertaktzyklen spezifiziert. In den Fig. 13 und 14 wird angenommen, daß RATIFY_DELAY auf sechs voreingestellt ist. Fig. 13 zeigt den Fall des "langen" Paketes, in dem das gesamte Datenpaket mindestens zweimal die RATIFY_DELAY (programmierter Wert) Anzahl von Bytes (z. B. 13 Byte) enthält. Fig. 14 zeigt den Fall des "kurzen" Paketes, in dem die Anzahl der Bytes in dem gesamten Datenpaket (z. B. 4 Byte) kleiner als zweimal je RATIFY_DELAY Anzahl von Bytes ist. Die Fig. 13 und 14 zeigen die Signale jeweils zweimal, einmal wie sie bei dem sendenden Benutzer erscheinen und erneut wie sie bei dem empfangenen Benutzer erscheinen, um die Verzögerung, die zwischen diesen existieren kann, zu zeigen.

Unter Bezugnahme auf Fig. 13, die BESTÄTIGUNGS-Steuerleitung wird durch den empfangenen Benutzer angehoben, nachdem eine Anzahl von Bytes, die gleich zu dem Wert in seinem RATIFY_ DELAY-Steuerregister (Zeitpunkt A) ist, empfangen worden ist, d. h. sechs Byte. Falls das gesamte Paket ohne Fehler empfangen worden ist, erniedrigt der empfangende Benutzer die BESTÄTIGUNGS-Steuerleitung, nachdem er das letzte Byte des Paketes empfangen hat, d. h. der dreizehnte Zyklus (Zeitpunkt C). Falls irgendwelche Fehler aufgetreten sind, fährt der empfangende Benutzer fort, die BESTÄTIGUNGS-Steuerleitung für eine andere vorbestimmte Anzahl von Takten, die gleich zu dem in RATIFY_DELAY programmierten Wert sind, anzusteuern (bis zum Zeitpunkt E). Der sendende Benutzer überprüft den Pegel der BESTÄTIGUNGS-Steuerleitung zu dem Zeitpunkt, zu dem er die Byteanzahl sendet, die gleich zweimal seinem RATIFY_DELAY ist, d. h. das zwölfte Byte (Zeitpunkt B). Falls sie hoch ist, überprüft der sendende Benutzer erneut den Pegel der BESTÄTIGUNGS- Steuerleitung, nachdem er eine Anzahl von Takten, die gleich zu dem RATIFY_DELAY-Wert ist, nach dem letzten Byte des Paketes gewartet hat (der Zeitpunkt D). Ein Niedrig auf der BESTÄ-TIGUNGS-Leitung zeigt den Empfang eines Paketes ohne Fehler an. Der Sender detektiert einen Fehler des empfangenden Benutzers, falls die BESTÄTIGUNGS-Leitung zu diesem Zeitpunkt immernoch hoch ist (Zeitpunkt D).

Fig. 14 zeigt das Bestätigungsprotokoll für ein "kurzes" Paket (d. h. die Paketlänge ist kleiner als zweimal der RATIFY_DELAY- Wert). Die Zeitpunkte, zu denen der empfangende Benutzer die BESTÄTIGUNGS-Steuerleitung anhebt (Zeitpunkt A) und der sendende Benutzer die BESTÄTIGUNGS-Steuerleitung nach einem hohen Wert überprüft (Zeitpunkt B) sind dieselben wie in Fig. 13. Die abfallende Flanke der BESTÄTIGUNGS-Steuerleitung wird je doch durch eine spezifische interne Taktzykluszählung (d. h. zweimal der RATIFY_DELAY-Wert) getriggert, anstelle daß sie durch den Empfang des Endes des Paketes getriggert wird (Zeitpunkt C). In ähnlicher Weise ist der Zeitpunkt, zu dem der Sender den letzten BESTÄTIGUNGS-Steuerleitungswert abtastet, eine spezifische Taktzykluszählung nach dem Überprüfen der BESTÄTIGUNGS-Leitung (d. h. dem Wert von RATTFY_DELAY) (Zeitpunkt D).

Fig. 15 gibt eine allgemeinere Übersicht der Zeitsteuerung der BESTÄTIGUNGS-Steuerleitung aus dem Blickpunkt eines sendenden Benutzers. Das BESTÄTIGUNGS-Steuerleitungssignal aus einem Paket kann in den Beginn des nächsten Paketes, das auf dem Datenbus 14 gesandt wird (Zeitpunkt B), hineinüberlappen, aber es stört nicht die Werte der BESTÄTIGUNGS-Steuerleitung, die durch den sendenden Benutzer abgetastet werden (Zeitpunkte A und C).

Falls kurze Pakete in zu nahem Abstand sind, könnten ihre BESTÄTIGUNGS-Steuerleitungssignale einander behindern. Zum Beispiel könnte ein empfangender Benutzer seine BESTÄTIGUNGS- Steuerleitung anheben, bevor der sendende Benutzer des vorhergehenden Paketes eine Chance hatte, seinen letzten BESTÄTIGUNGS-Steuerleitungswert abzutasten (Fig. 14, Zeitpunkt D). Dieser Fall wird dadurch verhindert, daß garantiert wird, daß das Paket nicht zu nahe aneinander starten kann. Das Entscheidungsprotokoll beabstandet Paketstarts immer mit mindestens einer Wettbewerbszeit (Fig. 2). Solange garantiert ist, daß jedwede Wettbewerbszeit länger als die Zeit ist, die zum Ausführen des Bestätigungsprotokolls benötigt wird, gibt es kein Problem von überlappenden Bestätigungen. Darum sind die Steuerregister ARB_DELAY und RATIFY_DELAY des Entscheidungscontrollers 17 (Fig. 1) derart programmiert, daß die Anzahl von Entscheidungszyklen multipliziert mit der Länge eines Entscheidungszyklus größer als die Länge des Bestätigungsprotokolls ist.

Die Wichtigkeit dieses Bestätigungsprotokolls ist die, daß der Sender weiß, wann eine Paketübertragung erfolgreich war oder nicht. Falls sie nicht erfolgreich war, hat der Sender verschiedene Optionen, wie zu versuchen, das Paket erneut über denselben Weg zu senden, oder einen anderen Weg zu versuchen.

Alternative Ausführungsformen

Andere Ausführungsformen sind innerhalb des Umfangs der folgenden Ansprüche.

Das Bestätigungsprotokoll könnte alternativ so angeordnet sein, daß der Benutzer die Bestätigungsleitung (nach dem Empfang) ansteuert, falls er korrekte Daten empfängt. Auf diese Weise kann der sendende Benutzer bestimmen, ob irgendein Benutzer eine Übertragung korrekt empfangen hat. Mit dem in den Zeichnungen gezeigten Bestätigungsprotokoll bestimmt der sendende Benutzer, ob irgendein Benutzer inkorrekte Daten empfangen hat.

Wie bereits aus der obigen Diskussion leicht verständlich ist, jede Anzahl von Prioritäten, Adreßschemen und Entscheidungscodewortgrößen können durch Einstellen der Anzahl von Entscheidungssignalen und -zyklen, die einen Wettbewerb bilden, aufgenommen werden. Zum Beispiel könnte eine einzelne Entscheidungsleitung (1-Bit-Codewort) 2n Benutzer in n Entscheidungszyklen aufnehmen. In ähnlicher Weise können 2 m Prioritätsniveaus in m Zyklen aufgenommen werden. Ein einzelnes Gruppenbit kann außerdem zum Verfolgen von Gruppenbildung hinzugefügt werden. Eine solche Zyklusabfolge kann wie folgt sein: Pm-1, ..., P&sub1;, P&sub0;, G, An-1, ..., A&sub1;, A&sub0;, wobei Pm-1- P&sub0;- Prioritätsbits darstellt, G eine Gruppenmitgliedschaft darstellt und An-1-A&sub0; Adreßcodebits darstellen (d. h. die Priorität wird zuerst bestimmt, dann die Gruppenmitgliedschaft, dann die Adresse).

Zur Reduzierung der Anzahl von benötigten Entscheidungszyklen, kann die Anzahl der Entscheidungssignalleitungen erhöht wer den. Zum Beispiel können vier Prioritätsniveaus in einem Zyklus durch drei Leitungen (unter Verwendung der Codes 000, 001, 011, 111) gehandhabt werden, anstelle einer Leitung und zwei Zyklen.

Wenn mehrere Signalleitungen verwendet werden, können die Entscheidungscodes komplizierter werden. Die Entscheidungsabfolge beinhaltet drei Typen von Information: Priorität, Gruppe und Adresse, in dieser Reihenfolge. Falls ein gegebener Zyklus mehr als einen Typ von Information (z. B. Priorität und Gruppe, oder Gruppe und Adresse) enthält, dann wird es notwendig, Codes für alle möglichen Kombinationen der Inhalte zu liefern. In dem ersten Zyklus des Schemas in Fig. 8 ist zum Beispiel die Entscheidung von zwei Prioritäten mit einer "Gruppen"- Entscheidung kombiniert. Dieses erfordert vier Codes - einen für jede Priorität mit dem Gruppenbit An, und eine für jede Priorität mit dem Gruppenbit Aus.

Das entgegengesetzte Extrem zur seriellen Entscheidung würde die vollständig parallele Entscheidung sein. Dieses könnte mit 2 · P Leitungen für P Prioritäten mit dem Gruppenbit An und Aus ausgeführt werden, und mit 2 · P · A Leitungen für A Adressen mit allen Kombinationen von Gruppe und Priorität.

Unter Bezugnahme auf die Fig. 16 bis 19, es ist eine andere Ausführungsform gezeigt, die zum Beispiel einen Vier-Zyklus, Zwei-Prioritäten Wettbewerb unter Verwendung eines Drei-Draht Entscheidungsbusses verwirklicht. Alle Entscheidungen zur Paketpriorität P1 und P2 werden während des Entscheidungszyklus 1 gemacht (Fig. 16). In dem Vier-Zyklus Wettbewerb werden dieselben G1- und G2-Gruppen gebildet, wie oben diskutiert worden ist, aber nur ein einzelnes Gruppenbit G muß auf dem Entscheidungsbus während des Zyklus 2 durch die Benutzer, die entweder zu G1 oder G2 gehören, ausgegeben werden. Nur ein Gruppenbit wird in dem Entscheidungszyklus 2 benötigt, da die Priorität in Entscheidungszyklus 1 gelöst wird. Nur die Benutzer mit dem in Zyklus 1 gewinnenden Prioritätsniveau treiben G mit dem zugeordneten Gruppenbit in Zyklus 2. Dieses resultiert in der identischen G1, P1, G2, P2 Prioritätsreihenfolge unter den Paketen für den 3-Zyklus oder den 4-Zyklus Wettbewerb.

Wie in Fig. 17 gezeigt ist, sieben Bits des Entscheidungscodes, A9, A7 - A5, A2 - A0, werden insgesamt in einer "fortlaufenden" Konfiguration benutzt, die 32 Benutzer erlaubt. Das A9-MSB-Codebit ist mit dem G-Bit kombiniert und wird während Zyklus 2 ausgegeben (Fig. 16). Da die Gruppen- und Adreßentscheidung in demselben Zyklus kombiniert sind, sind Codes für alle möglichen Kombinationen vorgesehen. Das MSB des Codewortes stellt das logische UND der Bits A9 und G dar, während das LSB das logische ODER der Bits A9 und G darstellt. Darum geben Benutzer mit A9 = 0 und einem Gruppenbit Aus einen Code auf 000 aus. Benutzer mit A9 = 1 und einem Gruppenbit Aus geben 011 aus. Diejenigen mit A9 = 0 und Gruppenbit An geben 111 aus, und diejenigen mit A9 = 1 und Gruppenbit An geben 111 aus. Die Codebits A7 - A5 und A2 - A0 werden während der Zyklen 3 bzw. 4 verwendet. Da der Vier-Zyklus Wettbewerb weniger Codebits als der 3-Zyklus Wettbewerb benötigt, können die Bits A8, A4 und A3 (die in dem 3-Zyklus Wettbewerb verwendet werden) eliminiert werden.

Fig. 18 zeigt die Zeitablaufdarstellung des Vier-Zyklus Wettbewerbes. Die Entscheidungszeitsteuerung ist für einen ARB_DELAY-Wert von 3 gezeigt, was zu einer Zeitsteuerung mit 3 Takten pro Entscheidungszyklus führt. Die Zeitsteuerung ist identisch zu dem Drei-Zyklus Fall, ausgenommen daß nur die ARBSYNC1 und ARBSYNC2 Busleitungen verwendet werden. Die Entscheidung beginnt, wenn ein Benutzer, der bereit ist, ein Datenpaket zu senden, ARBSYNC2 auf hoch ansteuert (Zeitpunkt A). Alle Benutzer warten ARB_DELAY (3 interne Taktpulse in diesem Fall) Takte und steuern ARBSYN1 hoch an (falls es immernoch niedrig ist), um den ARBDATA Code auf dem Entscheidungscode 16 zu erfassen (Zeitpunkt B). Die Sync-Bus-Ansteuerungen wechseln nachfolgend zwischen ARBSYNC2 und ARBSYNC1 wie in Fig. 18 gezeigt ist (Zeitpunkt C, D, E und F).

Fig. 19 zeigt eine Wettbewerbsaussetzung eines Vier-Zyklus Wettbewerbes unter Verwendung des FRAME-Steuersignales. Wie in dem Drei-Zyklus Fall verursacht die Vervollständigung des Entscheidungszyklus 2 in Wettbewerb 2, wie es durch eine ansteigende ARBSYNC2-Leitung angezeigt ist (Zeitpunkt A) während einer momentanen Datenpaketübertragung, daß der Sender FRAME hoch ansteuert (Zeitpunkt B). Die angesteuerte FRAME-Steuerleitung verursacht, daß Wettbewerb 3 ausgesetzt wird (Zeitpunkt C) bis zur Vervollständigung der momentanen Datenpaketübertragung (Zeitpunkt D).

Kompromisse zwischen der Anzahl von Entscheidungssignalen und der Anzahl von Entscheidungszyklen können aus den 3-Zyklus und 4-Zyklus Beispielen, die oben diskutiert wurden, gesehen werden. Falls ein Vier-Zyklus Wettbewerb gewählt wird, müssen weniger Entscheidungsleitungen den Funktionen des Entscheidungsbusses 16 und des Sync-Busses 19 gewidmet werden. Jedoch kann sich ein Vier-Zyklus Wettbewerb als zu lang herausstellen, falls die Verkehrsbelastung viele Pakete enthält, die kürzer als die Vier-Zyklus Entscheidungszeit sind. Für kurze Pakete würde die 3-Zyklus Entscheidung in weniger Verzögerung zwischen den Paketübertragungen (d. h. weniger freier Zeit auf dem Datenbus) aufgrund des häufigen Wartens auf die Vervollständigung von Wettbewerben resultieren.

Falls eine Mischung aus langen und kurzen Paketen vorhanden ist, kann die freie Zeit reduziert werden durch Modifizieren des Entscheidungsprotokolls derart, daß mehr "nach vorne geschaut" wird. Anstelle des Auswählens von nur einem "nächsten Sender" während eines Paketes, könnte Wettbewerben erlaubt werden, die nächsten zwei oder mehr Sender auszuwählen (auf Kosten von zusätzlichen Steuerleitungen). Auf diese Weise könnte die zusätzliche Entscheidungszeit während langer Pakete für die ungenügende Entscheidungszeit während kurzer Pakete genutzt werden.

Desweiteren könnte die fehlertolerante Natur des Systems 10 durch Vorsehen eines redundanten Entscheidungsuntersystems er höht werden. Dieses würde das Hinzufügen von doppelten ARB- SYNC-Leitungen, Entscheidungsbusleitungen, Datenbusleitungen und Benutzertakten mit sich bringen.


Anspruch[de]

1. Ein Verfahren zum Entscheiden unter einer Mehrzahl von Benutzern (12a-12n) für den Zugriff auf ein geteiltes Systemelement (14) in einem System (10) mit mindestens einer gemeinsamen OR-verdrahteten Entscheidungsdatenleitung (16), die alle Benutzer verbindet, und mindestens einer gemeinsamen OR-verdrahteten Steuerleitung (19), die alle Benutzer verbindet, bei dem die Benutzer mit plesiosynchronen Takten versorgt werden, wobei das Verfahren die Schritte aufweist:

A) Benutzer erzeugen eine Abfolge von mindestens zwei Steuersignalen (ARBSYNC3, ARBSYNC1) auf der/den Steuerleitung(en), wobei Steuersignale von unterschiedlichen Benutzern auf den Steuerleitungen in einer OR-verdrahteten Weise kombiniert werden, und wobei eine Zeitverzögerung, bevor ein gegebener Benutzer ein Steuersignal erzeugt, durch den folgenden Mechanismus reguliert wird: auf ein Erzeugen oder ein Empfangen eines Steuersignales (ARBSYNC3) hin, wartet jeder entscheidungssuchende Benutzer eine vorbestimmte Verzögerungszeit basierend auf Zyklen des Benutzertaktes, wobei die vorbestimmte Verzögerungszeit im wesentlichen dieselbe für alle Benutzer ist, und der Benutzer erzeugt, dieser Verzögerungszeit folgend, ein nächstes Steuersignal (ARBSYNC1), falls er nicht bereits ein nächstes Steuersignal von einem anderen Benutzer empfangen hat;

B1) Benutzer plazieren, als Reaktion auf das Empfangen eines Steuersignales (ARBSYNC3), ein Entscheidungsdatensignal (ARBDATA) auf der/den Entscheidungsdatenleitung(en), wobei die Entscheidungsdatensignale von unterschiedlichen Benutzern in einer OR-verdrahteten Weise zur Ausbildung eines kombinierten Signales kombiniert werden;

B2) nachfolgend zu Schritt B1 vergleicht jeder Benutzer als Reaktion auf das Empfangen eines nachfolgenden Steuersignales (ARBSYNC1) das kombinierte Signal, das auf der/den Entscheidungsdatenleitung(en) erscheint, mit dem Ent scheidungsdatensignal, das der Benutzer auf der/den Entscheidungsdatenleitung(en) in Schritt B1 plaziert hat;

C) Wiederholen der Schritte B1 und B2 für eine vorbestimmte Anzahl von Malen; und

D) Bestimmen eines Ergebnisses der Entscheidung basierend auf den Ergebnissen des Schrittes des Vergleichens durch Bestimmen des Benutzers, dessen Entscheidungsdatensignale (ARBDATA) mit den kombinierten Signalen übereinstimmen.

2. Das Verfahren nach Anspruch 1, bei dem

jeder Benutzer, der eine Entscheidung für das Systemelement (14) sucht, zu einem Zeitpunkt, der durch den Takt des Benutzers geregelt wird, ein erstes Steuersignal (ARBSYNC3) zum Informieren anderer Benutzer, daß er sein Entscheidungsdatensignal (ARBDATA) auf den Entscheidungsdatenleitungen (16) plazieren wird, überträgt,

wobei ein Fortschreiten der Entscheidung weiter das Bringen eines entscheidungssuchenden Benutzers dazu, sich von der Übertragung des ersten Steuersignales zurückzuhalten, falls er das erste Steuersignal (ARBSYNC3) von einem anderen der entscheidungssuchenden Benutzer empfangen hat, aufweist.

3. Verfahren nach Anspruch 2, bei dem ein entscheidungssuchender Benutzer aufeinanderfolgend mehrere der ersten Steuersignale (ARBSYNC3) empfangen kann, und das weiter das Bringen des entscheidungssuchenden Benutzers zum Antworten auf nur das erste der ersten Steuersignale, die der Benutzer empfängt, aufweist.

4. Verfahren nach Anspruch 3, bei dem jeder der Benutzer, der ein erstes Steuersignal (ARBSYNC3) überträgt, dieses durch Ausgeben eines Pulses auf eine erste Steuerleitung (19) tut und die entscheidungssuchenden Benutzer auf eine einzelne Flanke des Pulses antworten.

5. Verfahren nach Ansprüch 2, bei dem

mindestens ein Benutzer, der eine Entscheidung für das Systemelement (14) sucht, ein zweites Steuersignal (ARBSYNC1) über trägt, um alle Benutzer zum Ausführen des Vergleiches zu bringen, und bei dem,

ein entscheidungssuchender Benutzer aufeinanderfolgend mehrere der zweiten Steuersignale (ARBSYNC1) empfangen kann, und das weiter das Bringen des entscheidungssuchenden Benutzers zum Antworten auf nur das erste der zweiten Steuersignale, das der Benutzer empfängt, aufweist.

6. Verfahren nach Anspruch 2, das weiter aufweist, daß ein entscheidungssuchender Benutzer das Vergleichen ausführt, wenn er das zweite Steuersignal (ARBSYNC1) entweder erzeugt oder empfängt und er ein Ergebnis der Entscheidung basierend auf Ergebnissen des Vergleiches bestimmt.

7. Verfahren nach Anspruch 6, bei dem das Bestimmen aufweist, daß mindestens einige der entscheidungssuchenden Benutzer die Schritte des Plazierens der Entscheidungsdatensignale (ARBDATA) auf der Leitung und des Ausführens des Vergleichens in einer vorbestimmten Anzahl von Zyklen wiederholen, um einen Benutzer zu bestimmen, der die Entscheidung gewinnt.

8. Verfahren nach Anspruch 1, das weiter das aufeinanderfolgende Ausführen mehrerer Entscheidungen und das Steuern eines Fortschreitens jeder der Entscheidungen und von einer Entscheidung zu einer zweiten Entscheidung unter Verwendung von Steuersignalen, die durch das Verfahren nach Anspruch 1, Schritt A erzeugt werden, aufweist.

9. Verfahren nach Anspruch 1, bei dem

jeder Benutzer, der um Entscheidung für das Systemelement (14) sucht, Anfragen nach Zugriff in der Entscheidung einen Anfangsvorzug (P1, P2, G1, G2) basierend auf mindestens einer Zugriffspriorität, die zuvor der Anfrage nach Zugriff zugeordnet wurde, und darauf, ob der Benutzer ein Mitglied einer momentanen Gruppe von Benutzern ist, die zu einer Zeit während der Entscheidung gebildet wird, wenn eine andere Gruppe von Benutzern leer ist, wobei die momentane Gruppe Benutzer ent hält, denen zu dieser Zeit Zugriff verweigert worden ist, zuordnet, so daß Benutzer, die zu der momentanen Gruppe gehören, einen höheren Anfangsvorzug in der Entscheidung als anderer Benutzer haben werden, die dieselbe zuvor zugeordnete Zugriffspriorität aufweisen, und bei dem

jeder Benutzer, der um Entscheidung für das Systemelement sucht, mindestens einen Teil seines Entscheidungsdatensignales (ARBDATA) als ein Multibit-Entscheidungsdatenwort mit einem Wert, der den Anfangsvorzug darstellt, anordnet und jeder Benutzer, der um Entscheidung für Zugriff nachsucht, sein Multibit-Entscheidungsdatenwort parallel auf dem Weg (16) plaziert, und

bei dem jeder Benutzer, der um Entscheidung für das Systemelement sucht, nachfolgend das plazierte Multibit- Entscheidungsdatenwort mit einem kombinierten Wert eines Multibit-Wortes vergleicht, das auf dem Weg (16) erscheint, und Erklären des Benutzers zum Gewinner, falls diese Multibit- Werte übereinstimmen.

10. Verfahren nach Anspruch 9, bei dem

die Entscheidung eine vorbestimmte Anzahl von Zyklen aufweist, und bei dem

jeder Benutzer, der um Entscheidung für das Systemelement in einem ersten der Zyklen sucht, basierend auf den Ergebnissen des Vergleichens in dem ersten Zyklus bestimmt, ob zur Entscheidung in einem nächsten Zyklus fortzuschreiten ist, und jeder Benutzer, der zum Entscheiden um das Systemelement in dem nächsten Zyklus fortschreitet, ein zweites Multibit- Entscheidungsdatenwort parallel auf dem Weg (16) plaziert und die Vergleichs- und Bestimmungsschritte wiederholt.

11. Ein System zum Entscheiden unter einer Mehrzahl von Benutzern (12a-12n) für einen Zugriff auf ein geteiltes Systemelement (14) in einem System (10) mit mindestens einer gemeinsamen OR-verdrahteten Entscheidungsdatenleitung (16), die alle Benutzer verbindet, und mindestens einer gemeinsamen OR- verdrahteten Steuerleitung (19), die alle Benutzer verbindet, in dem die Benutzer mit plesiosynchronen Takten versorgt werden, wobei das System aufweist:

A) Benutzer mit Mitteln zum Erzeugen einer Abfolge von mindestens zwei Steuersignalen (ARBSYNC3, ARBSYNC1) auf der/den Steuerleitung(en), wobei Steuersignale von unterschiedlichen Benutzern auf den Steuerleitungen in einer OR-verdrahteten Weise kombiniert werden, und wobei eine Zeitverzögerung, bevor ein gegebener Benutzer ein Steuersignal erzeugt, durch den Mechanismus, daß, auf das Erzeugen oder das Empfangen eines Steuersignales (ARBSYNC3) hin, jeder entscheidungssuchende Benutzer eine vorbestimmte Verzögerungszeit basierend auf Zyklen des Benutzertaktes wartet, und dieser Verzögerungszeit folgend der Benutzer ein nächstes Steuersignal (ARBSYNC1) erzeugt, falls er nicht bereits ein nächstes Steuersignal von einem anderen Benutzer empfangen hat, reguliert wird;

B1) Benutzer mit Mitteln zum, als Reaktion auf das Empfangen eines Steuersignales (ARBSYN3), Plazieren eines Entscheidungsdatensignales (ARBDATA) auf der/den Entscheidungsdatenleitung(en), wobei die Entscheidungsdatensignale von unterschiedlichen Benutzern in einer OR-verdrahteten Weise zur Ausbildung eines kombinierten Signales kombiniert werden; und

B2) jeder Benutzer Mittel zum, nachfolgend zu Schritt (B1) und als Reaktion auf das Empfangen eines nachfolgenden Steuersignales (ARBSYNC1), Vergleichen des kombinierten Signales, das auf der/den Entscheidungsdatenleitung(en) erscheint, mit dem Entscheidungsdatensignal, das der Benutzer auf der/den Entscheidungsdatenleitung(en) in Schritt B1 plaziert hat, aufweist;

C) Mitteln zum Wiederholen der Schritte B1 und B2 für eine vorbestimmte Anzahl von Malen; und

D) Mitteln zum Bestimmen eines Ergebnisses der Entscheidung, basierend auf Ergebnissen von dem Mittel zum Vergleichen durch Bestimmen des Benutzers, dessen Entscheidungsdatensignale (ARBDATA) mit den kombinierten Signalen übereinstimmen.







IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com