-
Die
Erfindung betrifft eine Vorrichtung und ein Verfahren zum Senden
von Daten von einem USB-Endpunkt an einen USB-Host nach dem Oberbegriff
des Anspruchs 1 und 23.
-
Ein
universeller serieller Bus (=USB= Universal Serial Bus) ist eine
Standard-Pheripheriegerätschnittstelle
für den
Anschluß von
Personalcomputern an viele verschiedene Geräte: z.B. digitale Telefonleitungen, Monitore,
Modems, Mäuse,
Drucker, Scanner, Spiel-Controller, Tastaturen und andere Peripheriegeräte, vgl. beispielsweise
die Universal Serial Bus Specification Revision 1.0 vom 15.01.1996,
www.peritek.com/matterhorn_usb10doc.pdf. Der USB ersetzt somit vorhandene
Schnittstellen wie etwa die seriellen RS-232C-Ports, parallele Ports,
PS/2-Schnittstellen sowie Game/MIDI-Ports.
-
Bei
dem USB sind sämtliche
angeschlossenen Vorrichtungen über
einen einzelnen Verbindertyp unter Verwendung einer in Stufen geordneten
Sterntopologie mit einem Personalcomputer verbunden. Ein Host-Personalcomputer
enthält
einen einzigen USB-Controller. Der Host-Controller bildet die Schnittstelle
zwischen dem USB-Netz und dem Host-Personalcomputer. Der Host-Controller
steuert sämtliche
Zugriffe auf die USB-Betriebsmittel und überwacht die Bustopologie.
Ein USB-Netzknoten stellt USB-Anschlußpunkte für USB-Vorrichtungen bereit.
-
Eine
USB-Funktion ist eine USB-Vorrichtung, die Informationen auf dem
Bus senden und empfangen kann. Eine Funktion kann eine oder mehrere
Konfigurationen besitzen, wovon jede die Schnittstellen definiert, die
die Vorrichtung bilden. Jede Schnittstelle ist ihrerseits aus einem
oder mehreren Endpunkten gebildet.
-
Ein
Endpunkt ist die letzte Datenquelle oder -senke. Ein Endpunktkanal
ermöglicht
die Bewegung von Daten zwischen dem USB und dem Speicher und vervollständigt den
Pfad zwischen dem USB-Host und dem Funktionsendpunkt.
-
Die
nachveröffentlichte
WO 99108196 offenbart eine
Vorrichtung zum Steuern eines USB-Endpunktkanals, der mit weiteren
USB-Endpunktkanälen
einen gemeinsamen FIFO-Puffer nutzt. Hierzu speichert eine Protokollsteuer-
und Statuseinheit PCS den USB-Zustand, während eine Protokollablaufsteuereinheit
PSM die Übertragung
zwischen der Vorrichtung und einem USB-Host steuert. Dabei werden
in der Protokollsteuer- und Statuseinheit PCS eine FIFO-Adresse
und ein Bytezähler
gespeichert. Die FIFO-Adresse zeigt auf den nächsten Eintrag im FIFO-Pufer,
der gesendet werden soll, bzw. der empfangen worden ist. Der Bytezähler zeigt
die Anzahl der im FIFO-Puffer gespeicherten Bytes an und wird inkrementiert,
wenn ein Byte hinzugefügt
wird, und dekrementiert, wenn ein Byte ausgelesen wird.
-
Die
nachveröffentlichte
DE 698 01 669 T2 zeigt
ein Computersystem mit einem Erweiterungsbus, z.B. einem PCI-Bus,
an den einerseits Standardkomponenten, z.B. eine CPU und ein Systemspeicher
und andererseits ein USB-Host und eine damit verbundene Datenbereitstellung
angekoppelt sind. Die Datenbereitstellung wird über den Erweiterungsbus mit
Daten versorgt und leitet diese an einen Puffer im USB-Host weiter. Besteht
ein Unterschied in der Taktrate zwischen der Datenbereitstellung
und dem USB-Host, kann es zu einem Über- oder Unterlauf des Puffers
kommen. Um den Über-
oder Unterlauf des Puffers zu vermeiden, wird dessen Füllstand
im USB-Host überwacht.
Bei Über-
bzw. Unterschreiten eines vorbestimmten Werts veranlaßt der USB-Host über einen
Takt-Führe/Folge-Leiter eine Änderung
des Takts der Datenbereitstellung.
-
Jeder
Endpunkt ist eine adressierbare Entität auf dem USB und muß auf IN-
und auf OUT-Tokens vom USB-Host (typischerweise ein PC) antworten.
Die IN-Tokens geben
an, daß der
Host den Empfang von Informationen von einem Endpunkt angefordert
hat, während
die OUT-Tokens angeben, daß der
Host im Begriff ist, Informationen an einen Endpunkt zu senden.
-
Bei
Erfassung eines an einen Endpunkt adressierten IN-Token ist der
Endpunkt für
die Antwort durch ein Datenpaket verantwortlich. Falls der Endpunkt
momentan blockiert (stalled) ist, wird ein STALL-Quittierungspaket
geschickt. Falls der Endpunkt freigegeben (enabled) ist, jedoch
keine Daten vorhanden sind, wird ein negatives Quittierungspaket
(NAK-Paket) geschickt.
-
Ähnlich ist
der Endpunkt bei Erfassung eines an einen Endpunkt adressierten
OUT-Token für
den Empfang eines vom Host geschickten Datenpakets und für dessen
Speicherung in einen Puffer verantwortlich. Falls der Endpunktkanal
momentan blockiert ist, wird am Ende der Datenübertragung ein STALL-Quittierungspaket
geschickt. Falls der Endpunktkanal momentan gesperrt (disabled)
ist, wird am Ende der Datenübertragung
kein Quittierungspaket geschickt. Falls der Endpunktkanal freigegeben
ist, jedoch kein Puffer vorhanden ist, in dem Daten gespeichert
werden können,
wird ein NAK-Paket geschickt.
-
Ein
gesperrter Endpunkt oder gesperrte Endpunkte, die momentan nicht
auf einen Endpunktkanal abgebildet sind, antworten nicht auf IN-,
OUT- oder SETUP-Tokens.
-
Eine
Anzahl von Anbietern haben Implementierungen des USB-Standards entwickelt.
Beispielsweise hat die Intel Corp. die 8×931Ax-, 8×931Hx-, 8×930Ax- und 8×930Hx-Vorrichtungen
freigegeben.
-
Diese
Vorrichtungen besitzen jedoch eine Anzahl von Problemen. Sie verarbeiten
nicht die Rahmenstart-Pakete für
isochrone Daten. Es besteht ein Bedarf an einer Vorrichtung, die
dies tut, so daß Fehler
einfacher erfaßt
werden können.
-
Sie
sehen keinen Hardware-Support für
die Datensynchronisation vor. Es besteht ein Bedarf hierfür, damit
Paketübertragungen
synchronisiert oder verzögert
werden können.
-
Die
erforderliche Puffergröße für isochrone
Daten kann in Abhängigkeit
von der Anwendung stark variieren. Beispielsweise erfordern Telephonanwendungen
8 Bytes, während
Videoanwendungen 960 Bytes erfordern. Die Intel-Vorrichtungen besitzen
für jeden
Endpunkt einen hierfür
vorgesehenen Puffer.
-
Aufgabe
der Erfindung ist es, eine Vorrichtung und ein Verfahren zum Senden
von Daten von einem USB-Endpunkt an einen USB-Host nach dem Oberbegriff
des Anspruchs 1 bzw. 23 zu schaffen, wobei eine größere Flexibilität bei der
Definition der Pufferfähigkeiten
der Endpunkte ermöglicht
wird.
-
Diese
Aufgabe wird entsprechend den Merkmalen des Anspruchs 1 bzw. 23
gelöst.
-
Die
Erfindung hat darüber
hinaus den Vorteil, daß Fehler
einfacher erfaßt
und Paketübertragungen synchronisiert
oder verzögert
werden können.
-
Weitere
Ausgestaltungen der Erfindung sind der nachfolgenden Beschreibung
und den Unteransprüchen
zu entnehmen.
-
Die
Erfindung wird nachstehend anhand von in den beigefügten Abbildungen
dargestellten Ausführungsbeispielen
näher erläutert.
-
1 ist
ein Blockschaltplan einer Ausführung
zur Datenübertragung
der Erfindung;
-
2 ist
ein Blockschaltplan einer weiteren Ausführung zur Datenübertragung
der Erfindung;
-
3 ist
ein Blockschaltplan einer Ausführung
zur Takteinstellung der Erfindung;
-
4 ist
ein Blockschaltplan einer Ausführung
zum Datenempfang der Erfindung;
-
5 ist
ein Blockschaltplan einer weiteren Ausführung zum Datenempfang der
Erfindung; und
-
6 ist
ein Blockschaltplan einer Ausführung
eines gemeinsam genutzten Pufferspeichers der Erfindung.
-
1 zeigt
eine allgemeine Ausführung
eines Aspekts der vorliegenden Erfindung. 1 zeigt
einen Endpunkt 105, einen Endpunktkanal 110, einen
Host 115, einen ersten Speicher 120, einen zweiten
Speicher 122, einen Zeigerspeicher 125, einen
Zeiger-Controller 130, einen Zählerspeicher 135,
einen Datenprozessor 140 und einen Controller 150.
Der Zeiger-Controller 130 speichert im Zeigerspeicher 125 einen
Adressenzeiger, der einem ersten Speicher 120 entspricht.
Der Zählerspeicher 135 speichert
einen Zählerwert.
Der Datenprozessor 140 erzeugt ein erstes Datenpaket im
ersten Speicher 120. Der Controller 150 inkrementiert
wahlweise den Zählerwert,
bis er gleich dem Adressenzeiger ist, und sendet dann das erste
Datenpaket. Alternativ ist der Endpunkt 105 einer von mehreren
Endpunkten am Ende eines Endpunktkanals 110, die die Speicher, die
Controller und den Datenprozessor gemeinsam nutzen.
-
Die
in 1 gezeigte Ausführung arbeitet folgendermaßen. Der
Zählerwert
beginnt bei null. Falls der Adressenzeiger ebenfalls null ist, schickt
der Controller 150 das erste Datenpaket. Andernfalls inkrementiert der
Controller 150 wahlweise den Zählerwert, bis er gleich dem
Adressenzeiger ist, und schickt dann das erste Datenpaket. In einer
zweckmäßigen Ausführung wechselt
der Adressenzeiger zwischen dem ersten Speicher 120 und
dem zweiten Speicher 122. Somit findet vor dem Verschicken
höchstens
ein Inkrementieren statt.
-
Falls
mehr als eine Dateneinheit zu verschicken sind, erzeugt der Datenprozessor 140 ein
zweites Datenpaket im zweiten Speicher 122. Nachdem der
Controller 150 das erste Datenpaket geschickt hat, speichert der
Zeiger-Controller 130 im Zeigerspeicher 125 einen
zweiten Adressenzeiger, der dem zweiten Speicher 122 entspricht,
ferner inkrementiert der Controller 150 wahlweise den Zählerwert,
bis er gleich dem zweiten Adressenzeiger ist, und schickt dann das
zweite Datenpaket. In einer zweckmäßigen Ausführung wechselt der Adressenzeiger
zwischen dem ersten Speicher 120 und dem zweiten Speicher 122.
Damit kann das Schicken der beiden Pakete synchronisiert werden.
-
Wenn
noch mehr Datenpakete zu verschicken sind, erzeugt der Datenprozessor 140 dann,
wenn der Controller 150 das erste Datenpaket verschickt
hat, ein drittes Datenpaket im ersten Speicher 120. Nachdem der
Controller 150 das zweite Datenpaket geschickt hat, speichert
der Zeiger-Controller 130 im Zeigerspeicher 125 einen
dritten Adressenzeiger, der dem ersten Speicher 120 entspricht,
ferner inkrementiert der Controller 150 wahlweise den Zählerwert,
bis er gleich dem dritten Adressenzeiger ist, und schickt dann das
dritte Datenpaket. Dies zeigt, wie in einer zweckmäßigen Ausführung eine
Folge von Paketen in zwei Puffern synchronisiert werden kann.
-
Obwohl
diese Beschreibung den Ausdruck "Datenpaket" verwendet, ist beabsichtigt,
daß die
Erfindung auch auf mehrere Dateneinheiten Anwendung findet, selbst
wenn die Dateneinheiten nicht in einem diskreten Paket enthalten
sind.
-
2 zeigt
eine allgemeine Ausführung
eines weiteren Aspekts der vorliegenden Erfindung. 2 zeigt
einen Endpunkt 205, einen Endpunktkanal 210, einen
Host 215, einen ersten Speicher 220, einen zweiten
Speicher 222, einen Zeigerspeicher 225, einen
Zeiger-Controller 230, einen Zählerspeicher 235,
einen Datenprozessor 240, einen Controller 250 und
einen Verzögerungsspeicher 260.
Der Datenprozessor 240 erzeugt ein erstes Datenpaket im
ersten Speicher 220. Der Verzögerungsspeicher 260 speichert
einen dem ersten Datenpaket entsprechenden Verzögerungswert. Der Zählerspeicher 235 speichert
einen Zählerwert.
Der Controller 250 inkrementiert wahlweise den Zählerwert,
bis er gleich dem Verzögerungswert
ist, und schickt dann das erste Datenpaket. Alternativ ist der Endpunkt 205 einer
von mehreren Endpunkten am Ende eines Endpunktkanals 210,
die die Speicher, die Controller und den Datenprozessor gemeinsam
nutzen.
-
Die
in 2 gezeigte Ausführung arbeitet in der folgenden
Weise. Der Zählerwert
beginnt bei null. Falls der Verzögerungswert
ebenfalls null ist, schickt der Controller 250 anschließend das
erste Datenpaket. Andernfalls inkrementiert der Controller 250 wahlweise
den Zählerwert,
bis er gleich dem Adressenzeiger ist, und schickt dann das erste
Datenpaket. Dadurch kann das erste Datenpaket um eine Zeitperiode
verzögert werden.
-
Falls
mehr als eine Dateneinheit verschickt werden sollen, speichert der
Zeiger-Controller 230 im Zeigerspeicher 225 einen
dem zweiten Speicher 222 entsprechenden Adressenzeiger.
Der Datenprozessor 240 erzeugt im zweiten Speicher 222 ein
zweites Datenpaket. Nachdem der Controller 250 das erste
Datenpaket geschickt hat, inkrementiert er wahlweise den Zählerwert,
bis der Zählerwert
gleich dem Adressenzeiger ist, und schickt dann das zweite Datenpaket.
Dies zeigt, wie das zweite Datenpaket in der Weise synchronisiert werden
kann, daß es
dem ersten Datenpaket folgt.
-
Falls
noch mehr Datenpakete verschickt werden sollen, erzeugt der Datenprozessor 250 dann,
wenn der Controller 250 das erste Datenpaket geschickt
hat, ein drittes Datenpaket im ersten Speicher 220. Nachdem
der Controller 250 das zweite Datenpaket geschickt hat,
speichert der Zeiger-Controller 230 im Zeigerspeicher 225 einen
dem ersten Speicher 220 entsprechenden zweiten Adressenzeiger,
ferner inkrementiert der Controller 250 wahlweise den Zählerwert,
bis er gleich dem zweiten Adressenzeiger ist, und schickt dann das
dritte Datenpaket. Dies zeigt, wie in einer zweckmäßigen Ausführung mit
zwei Puffern mehrere Datenpakete synchronisiert werden können.
-
3 zeigt
eine allgemeine Ausführung
eines weiteren Aspekts der vorliegenden Erfindung. 3 zeigt
einen Endpunkt 305, einen Endpunktkanal 310, einen
Host 315, einen Controller 350, einen Referenztaktsignalgenerator 370 und
einen Signalprozessor 375. Der Referenztaktsignalgenerator 370 erzeugt
ein Referenztaktsignal mit einer Referenztaktfrequenz. Der Signalprozessor 375 empfängt ein
USB-Taktsignal und erfaßt
dessen Frequenz. Der Controller 350 sendet ein Takterhöhungssignal,
falls die Referenztaktfrequenz höher
als die USB-Taktfrequenz ist, oder ein Takterniedrigungssignal, falls
die Referenztaktfrequenz niedriger als die USB-Taktfrequenz ist.
-
Die
in 3 gezeigte Ausführung arbeitet folgendermaßen. Der
Host 315 schickt und empfängt Datenpakete über den
Kanal 310 mit der USB-Taktfrequenz. Der Signalprozessor 375 erfaßt die USB-Taktfrequenz.
Der Controller 350 vergleicht die USB-Taktfrequenz mit der Referenztaktfrequenz
und erzeugt das Taktsteuersignal. Der Host 315 empfängt das
Taktsteuersignal und kann die USB-Taktfrequenz entsprechend einstellen.
-
In
einer zweckmäßigen Ausführung werden
die Signale durch das Senden von Paketen zwischen dem Endpunkt 305 und
dem Host 315 angegeben.
-
4 veranschaulicht
eine allgemeine Ausführung
eines weiteren Aspekts der vorliegenden Erfindung. 4 zeigt
einen Endpunkt 405, einen Endpunktkanal 410, einen
Host 415, einen ersten Speicher 420, einen zweiten
Speicher 422, einen Zeigerspeicher 425, einen
Zeiger-Controller 430, einen Controller 450, einen
Empfänger 480,
einen Rahmennummernspeicher 485 und einen Schalt- oder
Toggle-Speicher 490. Der Empfänger 480 empfängt sequentiell
ein erstes Datenpaket mit einer ersten Sequenznummer und ein zweites Datenpaket
mit einer zweiten Sequenznummer. Der Controller 450 erzeugt
eine Unterbrechung, falls die Differenz zwischen der ersten Sequenznummer
und der zweiten Sequenznummer größer als
drei ist. Der erste Speicher 420 kann das erste Datenpaket
speichern. Der zweite Speicher 422 kann das zweite Datenpaket speichern.
Alternativ ist der Endpunkt 405 einer von mehreren Endpunkten
am Ende eines Endpunktkanals 410, die die Speicher, die
Controller und den Empfänger
gemeinsam nutzen.
-
In
einer zweckmäßigen Ausführung schickt
der Host 415 Rahmungspakete, die Rahmennummern enthalten.
Der Controller 450 kann bestimmen, ob Datenpakete fehlen,
indem er die empfangene Rahmennummer mit der Rahmennummer vergleicht,
die er aufgrund der vorher empfangenen Rahmennummern erwartet.
-
Außer der
Erfassung fehlender Datenpakete kann die in 4 gezeigte
Ausführung
empfangene Datenpakete in den Speicher schreiben. Der Zeiger-Controller 430 speichert
im Zeigerspeicher 425 einen dem ersten Speicher 420 entsprechenden
Adressenzeiger. Der Schaltspeicher 490 speichert einen
Schaltwert.
-
Die
in 4 gezeigte Ausführung arbeitet folgendermaßen. Der
Empfänger 480 empfängt ein
Rahmungspaket mit einer Rahmennummer. Der Controller 450 speichert
die Rahmennummer im Rahmennummernspeicher 485. Falls der
Schaltwert gesetzt ist und falls wenigstens ein Teil der Rahmennummer
wenigstens einem Teil des Adressenzeigers entspricht, schreibt der
Controller 450 das erste Datenpaket in den ersten Speicher 420.
Falls der Schaltwert nicht gesetzt ist, schreibt der Controller 450 das
erste Datenpaket in den ersten Speicher 420, wobei dann,
wenn nicht wenigstens ein Teil der Rahmennummer wenigstens einem
Teil des Adressenzeigers entspricht, der Controller einen Fehlermerker
erzeugt. Dadurch können
Synchronisationsfehler einfach erfaßt werden.
-
In
einer zweckmäßigen Ausführung ist
der Adressenzeiger ein 1-Bit-Steuerwortzeiger, wobei der verglichene
Teil der Rahmennummer das niedrigstwertige Bit ist.
-
5 zeigt
eine allgemeine Ausführung
eines weiteren Aspekts der vorliegenden Erfindung. 5 zeigt
einen Endpunkt 505, einen Endpunktkanal 510, einen
Host 515, einen ersten Speicher 520, einen zweiten
Speicher 522, einen Zeigerspeicher 525, einen
Zeiger-Controller 530, einen Zählerspeicher 535,
einen Controller 550, einen Verzögerungsspeicher 560 und
einen Empfänger 580.
Der Empfänger 580 empfängt mehrere
Datenpakete und Verzögerungsinformationen,
die einem spezifischen Datenpaket der mehreren Pakete entsprechen.
Der Verzörgerungsspeicher 560 speichert
die Verzögerungsinformationen.
Der Zählerspeicher 535 speichert
einen Zählerwert.
Der Controller 550 inkrementiert wahlweise den Zählerwert,
bis der Zählerwert
gleich dem Verzögerungswert
ist, und schreibt dann das spezifische Datenpaket in den ersten
Speicher 520. Alternativ ist der Endpunkt 505 einer
von mehreren Endpunkten am Ende eines Endpunktkanals 510,
die die Speicher, die Controller und den Empfänger gemeinsam nutzen.
-
Die
in 5 gezeigte Ausführung arbeitet folgendermaßen. Der
Zählerwert
beginnt bei null. Falls der Verzögerungswert
ebenfalls null ist, schreibt der Controller 550 das erste
Datenpaket in den ersten Speicher 520. Andernfalls inkrementiert
der Controller 550 wahlweise den Zählerwert, bis er gleich dem
Verzögerungswert
ist, woraufhin er das erste Datenpaket in den ersten Speicher 520 schreibt.
Dadurch kann das erste Datenpaket um eine Zeitperiode verzögert werden.
-
Falls
mehr als eine Dateneinheit zu schreiben sind, ist der zweite Speicher 522 in
der Weise konfiguriert, daß er
ein zweites Datenpaket speichert. Ein Zeiger-Controller 530 speichert
im Zeigerspeicher 525 einen dem zweiten Speicher 522 entsprechenden
Adressenzeiger. Der Empfänger 580 empfängt ein
zweites Datenpaket. Nachdem der Controller 550 das erste
Datenpaket geschrieben hat, inkrementiert er wahlweise den Zählerwert,
bis der Zählerwert
gleich dem Adressenzeiger ist, und schreibt dann das zweite Datenpaket
in den zweiten Speicher 522. Das zeigt, wie das zweite
Datenpaket so synchronisiert werden kann, daß es dem ersten Datenpaket
folgt.
-
Falls
noch mehr Dateneinheiten zu verschicken sind, empfängt der
Empfänger 580 ein
zweites Datenpaket. Nachdem der Controller 550 das erste
Datenpaket geschrieben hat, speichert der Zeiger-Controller 530 im
Zeigerspeicher 525 einen zweiten Adressenzeiger, der dem
ersten Speicher 520 entspricht. Nachdem der Controller 550 das
zweite Datenpaket geschrieben hat, inkrementiert er wahlweise den
Zählerwert,
bis der Zählerwert
gleich dem zweiten Adressenzeiger ist, und schreibt dann das dritte
Datenpaket in den ersten Speicher 520. Dies zeigt, wie
in einer zweckmäßigen Ausführung mit
zwei Puffern mehrere Datenpakete synchronisiert werden können.
-
6 zeigt
eine allgemeine Ausführung
eines weiteren Aspekts der vorliegenden Erfindung. 6 zeigt
einen Host 610, ein Modul 630, mehrere Endpunktkanäle 620,
mehrere Endpunkte 640, eine entsprechende Mehrzahl von
Steuerspeichern 650, einen Pufferspeicher 660 und
einen Controller 670. Der Pufferspeicher 660 ist
so konfiguriert, daß er
isochrone Datenpakete speichert. Der Pufferspeicher 660 wird
von den Endpunkten 640 gemeinsam genutzt.
-
In
einer zweckmäßigen Ausführung enthält der Pufferspeicher 660 einen
Doppelpuffer, der in der Weise konfiguriert ist, daß er zwei
isochrone Datenpakete speichert.
-
Die
in 6 gezeigte Ausführung arbeitet folgendermaßen. Der
Host 610 sendet ein Token auf einem der Endpunktkanäle 620.
Der Controller 670 untersucht den Steuerspeicher für den entsprechenden
Endpunkt. Falls der Endpunkt Daten empfangen soll, überträgt der Controller 670 ein
Datenpaket vom Endpunktkanal an den Pufferspeicher 660.
Falls der Endpunkt Daten schicken soll, überträgt der Controller 670 ein
Datenpaket vom Pufferspeicher 660 an den Endpunktkanal.
-
Obwohl
diese Beschreibung den Ausdruck "Speicher" verwendet, soll
die Erfindung auch auf andere Typen von Datenablageelementen anwendbar
sein. Diese allgemeine Beschreibung wird im folgenden Abschnitt,
der zweckmäßige Ausführungen
veranschaulicht, genauer erläutert.
-
In
einer zweckmäßigen Ausführung ist
die obenbeschriebene Erfindung in Form von Teilen eines USB-Knoten-Schnittstellenmoduls
(= UNIM = USB node Interface module) implementiert. Die Abschnitte
des UNIM, die für
die Erfindung relevant sind, umfassen einen Endpunkt-Controller,
einen Synchronisationsträger, ein
Steuerwort, verschiedene Register und eine isochrone Endpunktoperation.
Diese Abschnitte sind der USB-Knoten-Schnittstellenarchitektur-Spezifikation, Überarbeitung
0.6, entnommen.
-
Endpunkt-Controller
-
In
einer zweckmäßigen Ausführung handhabt
der Endpunkt-Controller
die auf den Endpunkt bezogenen Operationen einschließlich des
Endpunktkanal-Zustands, der Pufferung und der Übertragungen. In einer zweckmäßigen Ausführung können zu
einem gegebenen Zeitpunkt bis zu sechzehn Endpunktkanäle unterstützt werden.
Jedem Endpunktkanal können
bis zu zwei Puffer im Kernbus-Adressenraum, die für Empfangs- und
Sendeoperationen verwendet werden, zugeordnet werden. Falls einem
Endpunktkanal keine Puffer zugewiesen sind, ist der Controller für die Erzeugung
geeigneter Quittierungen für
Input-Tokens und Output-Tokens verantwortlich.
-
Der
Endpunkt-Controller enthält
mehrere funktionale Blöcke.
Die Endpunkt-Zustandsmaschine schafft die zentralisierte Steuerung
für die
Dienstprogrammblöcke
des Datensynchronisations-Multiplexers (DALM), des Adressengenerators
(ADGen) und des Teil-Endpunktkanal-Speichers (PEP-Speicher). Die
Vorrichtungsfunktionen wie etwa die Adressenprüfung und die Adressenerzeugung
werden in dem Vorrichtungsfunktionsblock erzielt. In einer zweckmäßigen Ausführung laufen
sämtliche
Zustandsmaschinen mit einem USB-Takt von 12 MHz. Sämtliche
Datenübertragungen
erfolgen mit einem Kernbustakt. Teile des ADGen-Blocks sowie der
gesamte DALM-Block arbeiten unter Verwendung des Kernbustakts. Sämtliche
anderen Blöcke
des Endpunkt-Controllers verwenden ausschließlich den lokalen 12 MHz-Takt.
Datenbytes zwischen den Bereichen werden bei der MAC-Anwenderschnittstelle
mit einer asynchronen Quittierung für jedes übertragene Byte synchronisiert.
-
In
einer zweckmäßigen Ausführung minimiert
der Endpunkt-Controller
die Anzahl der erforderlichen Speicherzugriffe. Nur beim Empfang
eines Token ist für
die Endpunktmatrix ein Speicherzugriff erforderlich. Ein einziger
Doppelwort-Zugriff zusammen mit dem residenten Endpunktzustand ist
ausreichend, damit der Endpunktkanal die Host-Anforderung verarbeitet.
Dieser Zugriff liest die Lokalisierungs- und Größeninformationen für die Datenübertragung.
Die Datenübertragung
erfolgt nach Operationen des Lesens oder Schreibens eines Doppelworts.
Das Modul besitzt die höchste
Priorität
auf dem Kernbus für Übertragungen,
wobei die Übertragungsrate
erheblich höher
als jene des USB ist. Somit ist die Anforderung einer Datenpufferung
innerhalb des Endpunkt-Controllers
minimal, abgesehen von einem Extrawort, damit nachfolgende Zugriffe
mit dem momentanen Zugriff überlappen.
-
Ein
Bytezähler
verfolgt die Anzahl der Bytes, die übertragen werden. Der letzte
Zugriff einer Übertragung
kann ein teilweises Lesen oder Schreiben im Speicher erfordern.
Das teilweise Schreiben des letzten Zugriffs wird durch den endgültigen Bytezählstand
bestimmt.
-
Am
Ende einer Übertragung
wird das momentane Steuerwort mit dem Status für die Übertragung geschrieben, während das
andere Steuerwort für
diesen Endpunkt gelesen wird, um zu prüfen, ob ein weiterer Puffer
vorbereitet wurde. Nach den Steuerwort-Operationen ist der Endpunktkanal-Zustand
aktualisiert.
-
Synchronisationsträger
-
Durch
eine Kombination aus Hardware und Software unterstützt das
UNIM alle drei für
den USB definierten Synchronisationsklassen, nämlich asynchron, synchron und
adaptiv. Der Endpunkt-Controller schafft eine Hardware-Unterstützung für die Überwachung
des USB-Takts von 1 kHz relativ zu einem externen Referenztakt wie
etwa einem Referenztakt von 8 kHz, und für die Überwachung der Qualität und der
Konsistenz des USB-Takts von 1 kHz. Die Anstiegsflanken des externen
Referenztakts werden in dem Referenzzählregister gezählt. Dies
kann für
den Vergleich mit der USB-Rahmennummer verwendet werden. Die Differenz
zwischen den Frequenzen des Referenztakts und des USB-Takts kann
in Paketen dem Host gemeldet werden, so daß der Host die USB-Taktfrequenz
einstellen kann; dadurch kann der USB-Referenztakt auf den Referenztakt
verriegelt werden.
-
Der
Endpunkt-Controller behält
außerdem
den Status bei, um anzugeben, wenn er auf den USB-Takt von 1 kHz
verriegelt ist und wenn aufgrund eines Fehlens oder eines inkorrekten
Rahmenbeginn-Pakets im USB-Takt eine Diskontinuität auftritt.
-
Dies
wird von der Software für
die Einstellung der Warteschlangen für die isochronen Pakete verwendet.
Die momentane Rahmennummer wird vom Endpunkt-Controller für die Bestimmung,
welcher isochrone Puffer als nächstes
senden soll, verwendet.
-
Steuerwort
-
In
einer zweckmäßigen Ausführung enthält die Endpunktkanal-Matrix 32 Steuerwörter, 2
für jeden Endpunktkanal.
Die Endpunktkanal-Matrix befindet sich in einem Speicher an einer
Adresse, auf die ein Endpunktmatrix-Basisadressenregister EABAR
zeigt. Diese Adresse muß 128-Byte-synchronisiert
sein (d. h. die 7 LSBs der Adresse sind 0). Die Endpunktkanal-Matrix ist durch
die 4-Bit-Endpunktkanal-Nummer EPN indexiert, ferner ist das Steuerwort,
auf das zugegriffen wird, durch den 1-Bit-Endpunktkanal-Steuerwortzeiger CWP
bestimmt. Das 25-Bit-EABAR, die 4-Bit-EPN und der 1-Bit-CWP erzeugen
eine auf eine Doppelwortgrenze (32-Bit-Grenze) synchronisierte 32-Bit-Adresse
und werden für
den Zugriff auf das 32-Bit-Steuerwort verwendet.
-
Das
32-Bit-Steuerwort enthält
sämtliche
Informationen, die für
den Betrieb dieses Endpunktkanals erforderlich sind, wenn dieser
aktiv ist. Für
jeden Endpunktkanal gibt es zwei derartige Einträge. Das Steuerwort, auf das
als nächstes
zugegriffen werden soll, ist durch den Wert des Endpunktkanal-Steuerwortzeigers
CWP bestimmt. Sofort nach dem Empfang eines IN-Token, eines OUT-Token
oder eines SETUP-Token durch einen momentan in Bereitschaftszustand
befindlichen Endpunktkanal wird das Steuerwort des gewählten Endpunktkanals
des momentanen Steuerwortzeigers gelesen, um zu bestimmen, wie auf
das Token geantwortet werden soll. Am Ende einer Übertragung,
wenn der Abschlußstatus
geschrieben wird, wird das Steuerwort durch den momentanen Status
aktualisiert, wird der CWP inkrementiert und wird das andere Steuerwort
gelesen. Wenn ein Zwischenstatus geschrieben wird, wird nur das
höchstwertige
Byte des Steuerworts aktualisiert. Das Steuerwortformat ist im folgenden
gezeigt:
-
Der
4-Bit-Pufferzustand BS ist ein Teil des Steuerworts, der für die Erfindung
relevant ist. Der Pufferzustand wird durch Software und den Endpunktkanal-Controller
EPC aktualisiert um die Steuerung dieses Puffers zwischen ihnen
zu synchronisieren. Der EPC schreibt den Status, der die Verwendung
des Puffers angibt. Dieses Feld wird durch eine Knoten-Firmware
auf Output Ready, Input Ready, Setup Ready, Skip, Stall und Disable
gesetzt. Sämtliche
anderen Werte werden durch den EPC gesetzt. Der EPC kann außerdem die Stall-Disable-Werte
in Fehlerzuständen
schreiben. Der Puffer kann durch die Knoten-Firmware erneut in Anspruch genommen
werden, wenn der Pufferzustand irgendeiner der Abschlußwerte ist;
diese umfassen den Eingangs-/Ausgangsabschluß-Status und die Fehlercodes.
-
Der
Pufferzustand BS kann die folgenden Werte annehmen:
-
0:
Skip. Dieser Wert wird zusammen mit dem Output Ready-Befehl verwendet.
Skip bewirkt, daß das nächste empfangene
Datenpaket ignoriert wird und daß der Steuerwortzeiger inkrementiert
wird. Für
Steuerendpunkte bewirkt Skip außerdem,
daß der
Endpunktkanal-Zustand vom Input-Ready-Zustand zum Output/Input-Idle-Zustand
geschaltet wird. Das Setzen von TE und TI bestimmt, welche Quittung
zurückgeschickt wird,
sowie den nächsten
Zustand des Endpunktkanals. Eine NAK wird zurückgeschickt, falls weder TE
noch TI gesetzt ist. Falls TI gesetzt ist und TE nicht gesetzt ist,
wird keine Quittung zurückgeschickt.
Falls TE gesetzt ist, wird eine ACK zurückgeschickt und der Abschlußstatus
wird geschrieben, wenn ein Paket mit dem richtigen PID empfangen
wird.
- 1: Input Ready IRDY. Dieser Wert gibt
an, daß in
den Puffer Daten geschrieben worden sind, die als Antwort auf ein
IN-Token gesendet
werden sollen.
- 2: Output Ready ORDY. Dieser Wert gibt an, daß der Puffer
zum Schreiben vorgesehen ist.
- 3: Setup Ready SRDY. Dieser Wert gibt an, daß der Puffer zum Schreiben
vorgesehen worden ist. Dies wird nur an einem Steuerendpunkt während der
ersten Übertragung
von Steuerlese- und
Steuerschreib-Operationen verwendet. Geschrieben wird nur in das
Steuerwort 0.
- 4: Output Wait OWT. Dieser Wert gibt an, daß während des Empfangs von OUT-Daten
vom Host ein Fehler aufgetreten ist. Dies enthält die Erfassung eines Bitverstopfungsfehlers.
Es wird eine Wiederholung erwartet, da dies als Zwischenstatus angesehen
wird, es sei denn, es handelt sich um einen isochronen OUT-Endpunkt,
wo der Status als Abschlußstatus
behandelt wird.
- 5: CRC Error CRCE. Dieser Wert gibt an, daß am Ende einer OUT-Transaktion
ein fehlerhafter CRC erfaßt wurde.
Es wird eine Wiederholung erwartet, da der Status als Zwischenstatus
angesehen wird, es sei denn, es handelt sich um einen isochronen
OUT-Endpunkt, wo der Status als Abschlußstatus behandelt wird.
- 6: Buffer Error BUFE. Dieser Wert gibt an, daß während eines
OUT Daten vom USB schneller empfangen wurden, als sie in den Speicher
geschrieben werden können.
Während
eines IN wurden Daten nicht schnell genug aus dem Speicher ausgelesen,
um mit der USB-Datenrate mitzuhalten. An diesem Endpunkt wird eine
Wiederholung erwartet.
- 7: Input Wait IWT. Dieser Wert gibt an, daß der Puffer vom Endpunkt-Controller
gehalten wird und darauf wartet, ein Senden bei der nächsten Gelegenheit
zu versuchen oder erneut zu versuchen. Dies tritt im Fall einer
fehlenden Bestätigung
auf.
- 8: Input Complete ICMB. Dieser Wert gibt einen erfolgreichen
Abschluß dieser
Eingangsoperation an. Der Puffer kann freigegeben werden.
- 9: Output Complete OCMB. Dieser Wert gibt an, daß der Puffer
mit Daten gefüllt
ist und kein Fehler erfaßt wurde.
- 10: Token Error TKNE. Dieser Wert gibt an, daß ein Token
des falschen Typs für
den momentanen Kontext dieses Steuer-Endpunktkanals empfangen wurde. Falls
es sich um einen Ausgangspuffer handelte, wird der Endpunkt angehalten.
Falls es sich um einen Eingangspuffer handelte, wird eine NAK geschickt
und der Zustand des anderen Steuerworts wird untersucht. Dies wird
als ein Abschlußzustand
angesehen.
- 11: Isochronous Synchronization Error SYNE. Dieser Wert gibt
an, daß im
Puffer mit TE = 1 und TI = 1 Daten empfangen wurden, daß jedoch
der CWP nicht gleich dem LSB des FNR war. Dies wird als Abschlußzustand
angesehen.
- 12: Data Error DATE. Für
OUT-Daten, wenn CW.BR nicht gesetzt ist und die Datenmenge, die
vom Host empfangen wurde, geringer als erwartet war, oder wenn der
zugewiesene Puffer nicht groß genug
war, um die OUT-Daten zu speichern. Für IN-Daten wird dies gesetzt,
falls ein Pufferungsfehler auftrat und CW.TE nicht gesetzt war oder
CW.TI gesetzt war. Dies wird als Abschlußzustand angesehen.
- 13: (Reserviert). 14: Halt. Dies bewirkt, daß der momentane Endpunktkanal
in seinen HALT-Zustand eintritt, oder es gibt an, daß der Endpunkt
in den HALT-Zustand eingetreten ist.
- 15: Disable. Bewirkt, daß der
momentane Endpunktkanal in seinen DISABLE-Zustand eintritt, oder
gibt an, daß der
Endpunkt in den DISABLE-Zustand eingetreten ist.
-
Das
Isochron-Typ-Bit TI wird verwendet, um eine isochrone Datenübertragung
zu identifizieren. Der Wert 1 gibt isochrone Daten an, während der
Wert 0 nicht-isochrone Daten angibt.
-
Das
Schaltfreigabe-Bit (Toggle Enable Bit) TE wird verwendet, um den
Wert (DATA0/DATA1) des Datenpaketidentifizierers (PID) zu erzeugen
und mit dem Steuerwortzeiger zu vergleichen, wobei er die folgenden Werte
annehmen kann:
- 0: Der Datenschalt-PID wird
bei OUT-Transaktionen nicht geprüft
und anhand des momentanen Wertes des CWP als Antwort auf IN-Tokens
erzeugt. Der CWP wird nach jeder Transaktion selbst dann, wenn eine
ACK nicht empfangen wurde, inkrementiert (invertiert). Für isochrone
Endpunkte werden OUT-Daten nicht in den Speicher geschrieben, bis
der CWP gleich dem niedrigstwertigen Bit der Rahmennummer, FNR.FN(0),
ist. Dies hat auf die Daten, die als Antwort auf IN-Tokens geschickt
werden, keinen Einfluß.
Das Datenschalten sollte für
Puffer, die für
den Empfang von mit dem SETUP-Token geschickten Daten vorgesehen
sind, nicht freigegeben werden.
- 1: Der Datenschalt-PID wird bei OUT-Transaktionen geprüft und anhand
des momentanen Wertes des CWP als Antwort auf In-Tokens erzeugt. Für OUT-Transaktionen bewirkt
dies, daß eine
ACK als Antwort auf Ausgangspakete geschickt wird, deren PID-Wert (DATA0/DATA1)
nicht mit CWP übereinstimmt.
Für IN-Transaktionen wird
der CWP nach jeder Transaktion nur dann inkrementiert (invertiert),
wenn eine ACK-Quittung als Antwort auf eine Zeitüberschreitungsperiode zurückgeschickt
wird. Für
isochrone Endpunkte werden stets OUT-Daten in den Speicher geschrieben,
falls jedoch FNR.FN(0) nicht gleich dem CWP ist, wird der Pufferzustand
mit isochronem Synchronisationsfehler SYNE zurückgeschrieben.
-
Für IN-Transaktionen
läßt TE eine Änderung
des gesendeten Daten-PID-Wertes zu, selbst wenn eine gültige ACK
während
der Zeitüberschreitungsperiode
nicht empfangen wird. Dies kann für bestimmte Anwendungen eines
Unterbrechungs-IN-Endpunkts wichtig sein.
-
Für OUT-Transaktionen
kann TE verwendet werden, um zu bestimmen, ob der DATA0- oder DATA1-PID
bei der Entscheidung, ob das Paket akzeptiert wird oder nicht, geprüft werden
soll. Dies kann für eine
Unterbrechung eines Unterbrechungs-OUT-Endpunkts wichtig sein, wo die jüngsten Daten
empfangen werden sollen.
-
Das
Pufferrundung-Bit BR gibt für
Ausgangstransaktionen an, ob es zulässig ist, daß Datenpuffer
mit einer Größe, die
von dem empfangenen Datenpaket verschieden ist, zulässig sind,
und kann die folgenden Werte haben:
- 0: Das
Datenpaket soll den definierten Datenpuffer exakt füllen. Der
Pufferüberlauf-
oder Pufferunterlauf-Status liegt vor, falls das Paket nicht exakt
in den Puffer paßt.
- 1: Das Datenpaket kann kleiner als der definierte Puffer sein,
ohne daß ein
Fehlerzustand am Endpunkt hervorgerufen wird.
-
Wenn
dieses Feld zusammen mit einem Ausgangsabschluß-Pufferstatus OCMB oder Datenfehler-Pufferstatus
DATE gelesen wird, gibt es den Wert des empfangenen PID an: 0 für DATA0
und 1 für
DATA1.
-
Die
Unterbrechung bei dem Paketabschluß-PID IC bewirkt, daß an diesem
Endpunkt ein Ereignis gesetzt wird (EER.EPn), wann immer der Pufferstatus
bei einem Eingangsabschluß oder
einem Ausgangsabschluß,
bei einem Paketfehler oder bei einem Blockieren des Endpunktkanals
geschrieben wird.
-
Die
Unterbrechung des Paketfehlerbits IE bewirkt, daß an dem Endpunkt ein Ereignis
gesetzt wird (EER.EPn), wann immer für den Pufferstatus einer der
Pufferfehlercodes geschrieben wird oder der Endpunkt blockiert ist.
Wenn sowohl IC als auch IE gesetzt sind, bewirken CRC- und Bitverstopfungsfehler
ebenfalls die Erzeugung eines Ereignisses und bewirken nicht die
erneute Verwendung dieser Puffer wie im Normalbetrieb. Dies ist
hauptsächlich
für diagnostische
Zwecke vorgesehen.
-
Das
Pufferseitenbit BP kann die folgenden Werte annehmen:
- 0: Verwende Pufferseite A als obere Adresse des Eingangs/Ausgangspuffers.
- 1: Verwende Pufferseite B als obere Adresse des Eingangs/Ausgangspuffers.
-
Die
Pufferadressenbits BA halten die unteren 11 Bits der Pufferadresse.
Die Puffer müssen
bei einer synchronisierten Doppelwortgrenze beginnen und können an
irgendeiner Bytegrenze enden. Am Ende sämtlicher abgeschlossenen Übertragungen
wird der Restwert der Pufferadresse geschrieben. Am Ende der unvollständigen Übertragungen,
etwa dann, wenn für
den Status ein Input Wait oder ein Output Wait geschrieben wird,
wird dieses Feld nicht überschrieben.
-
Für OUT-Puffer
ist das erste gespeicherte Byte das dem PID folgende Byte. Ähnlich zeigt
für IN-Puffer die
Adresse auf das erste Byte von zu übertragenden Daten, d. h. auf
das Byte, das dem PID im Paket unmittelbar folgt. Der CRC wird automatisch
berechnet und an das Paket angehängt,
es sei denn, daß das
IN-Token vom IS_RDY-Zustand empfangen wird und im Steuerwort das
IS-Feld nicht auf 1 gesetzt war.
-
Die
Bytezählbits
BC halten die Größe des zu
verwendeten Datenpuffers. Die Puffer beginnen bei einer geraden
Doppelwortgrenze und können
an irgendeiner Bytegrenze enden. Für IN-Transaktionen gibt dies
die Größe der zu übertragenden
Daten an. Für
OUT-Transaktionen gibt dies die Größe des Puffers an, in dem Daten
empfangen werden können.
Null ist ein legitimer Wert für
den Bytezählstand.
Am Ende sämtlicher
abgeschlossener Übertragungen
wird der Restwert des Bytezählers
geschrieben. Am Ende unvollständiger Übertragungen,
etwa dann, wenn für
den Status Input Wait oder Output Wait geschrieben wird, wird dieses
Feld nicht überschrieben.
-
Register
-
In
einer zweckmäßigen Ausführung umfassen
vier für
die Erfindung relevante Register das Rahmennummernregister, das
Referenzzählstandsregister,
das Zeitgeberintervall-Register und das Unterbrechungsstatusregister.
-
In
einer zweckmäßigen Ausführung ist
das Rahmennummernregister (FNR) ein wortbreites Nur-Lese-Register.
Das FNR stellt die momentane Rahmennummer, die im SOF-Paket empfangen
wird, bereit. Bei einem USB Reset wird dieses Register auf C000h
gesetzt. Das FNR-Registerformat ist im folgenden gezeigt:
-
Der
1-Bit-Fehlmerker MF wird gesetzt, um eine Diskontinuität in der
Rahmennummer anzugeben. Dieser Merker wird gesetzt, wenn die Rahmennummer
in einem gültigen
empfangenen SOF nicht mit dem erwarteten nächsten Wert übereinstimmt.
Der Merker wird auch gesetzt, wenn das SOF innerhalb der 12060 Bitzeiten
(FLMAX mit Toleranz) der vorhergehenden Änderung von FNR.FN nicht empfangen
wird. Bei einem Rücksetzen
wird dieser Merker auf 1 gesetzt.
-
Der
1-Bit-nicht-verriegelt-Merker UL wird gesetzt und gibt an, daß wenigstens
zwei Rahmen ohne erwartete Rahmennummer empfangen wurden und daß die Rahmennummer
vom nächsten
SOF-Paket in die FN
geladen wird. Bei einem Rücksetzen
wird dieser Merker auf 1 gesetzt.
-
Die
11-Bit-Rahmennummer FN hält
die momentane Rahmennummer, wie sie im letzten SOF-Paket empfangen
wird. Der Wert wird inkrementiert, wenn ein SOF fehlt. Falls zwei
aufeinanderfolgende Rahmen fehlen oder nicht korrekt sind, wird
die Rahmennummer zusammen mit der nächsten Rahmennummer aus dem
gültigen
SOF-Paket geladen. Das niedrigstwertige Bit der Rahmennummer wird
verwendet, um festzustellen, welcher isochrone Puffer als nächstes verwendet
werden sollte.
-
Der
folgende Programmcode veranschaulicht die Operation der Rahmennummer:
Bei
Empfang eines gültigen
SOF-Pakets:
-
Bei
Nichtempfang eines gültigen
SOF innerhalb der 12060 Bitzeiten (oder 796, wenn das Kurzrahmenbit
DCR.SRM gesetzt ist) aus dem vorherigen Laden von FNR.FN:
-
Das
Referenzzählstandregister
(RCR ist ein wortbreites Nur-Lese-Register.
Es wird verwendet, um einen externen Referenztakt zu überwachen.
Bei einem Rücksetzen
wird dieses Register gelöscht.
Das RCR-Registerformat ist im folgenden gezeigt:
-
Der
16-Bit-Referenzzählstand
RC ist ein Zählstand
bezüglich
der Anzahl der Anstiegsflanken, die in dem UNIM-Taktreferenzeingangssignal
erfaßt
werden. Wenn er zusammen mit der Rahmennummer gelesen wird, ergibt
dies ein genaues Lesen der relativen Frequenz der externen Referenz
gegenüber
dem USB-Takt. Die
Differenz kann dem USB-Host über
Rückkopplungspakete
gemeldet werden, um das SOF-Paket zu verzögern oder zu beschleunigen,
damit der USB-Takt effektiv mit dem externen Referenztakt verriegelt
wird. Um einen gemeinsamen Referenzpunkt für die Software aufrechtzuerhalten,
wird der Referenzzählstand
in dieses Register abgetastet, wenn FNR.FN mit einem neuen Wert
geladen wird oder inkrementiert wird.
-
Das
Zeitgeberintervallregister (TIR) ist ein wortweites Schreib-Lese-Register.
Es enthält
eine Anforderung einer Unterbrechung, wenn der Rahmenzähler FC
den programmierten Offset zum nächsten
Mal erreicht. Bei einem Rücksetzen
wird dieses Register gelöscht.
Das TIR-Registerformat ist im folgenden gezeigt:
-
Das
Zeitgeberunterbrechungsintervall TI bewirkt, daß ISR.FCI gesetzt wird, wenn
der Rahmenzähler FNR.FN
diesen Wert zum nächsten
Mal erreicht.
-
Das
Unterbrechungsstatusregister ISR ist ein wortbreites Schreib-Lese-Register.
Es informiert die Software über
Ereignisse, die aufgetreten sind und eine Unterbrechung sowie eine
erforderliche zusätzliche Verarbeitung
hervorriefen. Die Bits werden gelöscht, indem für die zu
löschenden
Bits eine 1 geschrieben wird. Bei einem Rücksetzen wird dieses Register
gelöscht.
Das ISR-Registerformat ist im folgenden gezeigt:
-
Der
für die
Erfindung relevante Abschnitt ist die Erfassung von nicht-verriegelt/verriegelt
ULD. Dies gibt an, daß der
Rahmenzeitgeber aus einem verriegelten Zustand in den nichtverriegelten
Zustand eingetreten ist, wie durch den momentanen Wert von FNR.UL,
das Bit für
nicht-verriegelten Status, bestimmt wird. Es wird angemerkt, daß, da FNR.FN(0)
verwendet wird, um die nächste
isochrone Übertragung
zu wählen,
die Einstellung der isochronen Warteschlange an isochronen Endpunkten
notwendig sein kann.
-
Operation
des isochronen Endpunkts
-
Isochrone
Endpunkte folgen den gleichen Konturen wie Massenendpunkte, sie
folgen jedoch keinem Schaltprotokoll (Toggle-Protokoll). Statt dessen sind sie auf
das niedrigstwertige Bit des Rahmennummernregisters synchronisiert.
-
Für isochrone
Eingangsendpunkte werden Daten unter Verwendung derselben IRDY-Puffer
in einer Warteschlange angeordnet. Wenn ein IN-Token an einem isochronen
Endpunkt empfangen wird und wenn das niedrigstwertige Bit des Rahmennummernregisters
mit dem Steuerwortzeiger CWP übereinstimmt,
wird das Datenpaket geschickt. Andernfalls werden keine Daten geschickt.
Dadurch können
die Datenübertragungen auf
eine besondere Rahmennummer synchronisiert werden. Um die Übertragung
bei einer besonderen Rahmennummer zu beginnen, kann das Rahmennummernregister
gelesen werden. Eine Unterbrechung kann angefordert werden (ISR.FCI),
indem TIR auf den angeforderten Wert von FNR, der angepaßt werden
muß, gesetzt
wird. Eine Anpassung erfolgt nur für die niedrigeren acht Bits,
so daß dieses
Ereignis bis zu 256 ms vor dem Zeitpunkt in einer Warteschlange
angeordnet werden kann, zu dem es erforderlich ist. Wenn diese Unterbrechung
verarbeitet wird, kann der geeignete Puffer im Endpunktkanal in
einer Warteschlange angeordnet werden.
-
Für isochrone
Ausgangsendpunkte bestimmt das Schaltfreigabebit, wie das LSB des
Rahmennummernregisters verwendet wird. Falls TE nicht gesetzt ist,
werden sämtliche
Daten in den Speicher geschrieben, falls jedoch FNR.LSB nicht gleich
CWP ist, wird ein Synchronisationsfehler-Status (SYNE) als Pufferzustand geschrieben.
Falls TE gesetzt ist, werden Daten nur gespeichert, wenn FNR.LSB
gleich dem CWP ist. Wenn ein isochroner Ausgangsstrom mit der Rahmennummer
synchronisiert wird, kann der erste Puffer mit TE gesetzt werden,
so daß das
Schreiben nur beginnt, wenn eine Rahmennummer-Übereinstimmung vorliegt. Dann können alle
nachfolgenden Rahmen erfassen, ob ein Synchronisationsfehler vorliegt.
-
Es
wird angemerkt, daß das
Rahmennummernregister fortgesetzt bis zu zwei Rahmen hochzählt, selbst
wenn SOF vorübergehend
verlorengeht. Sollte das SOF für
mehr als zwei Rahmen verlorengehen, wird das nicht verriegelte Ereignis
gemeldet (ISR.UL), wobei zu diesem Zeitpunkt sämtliche nachfolgenden isochronen Übertragungen
mit Vorsicht behandelt oder beendet werden sollten, bis der Rahmennummerzähler erneut verriegelt
wird.