DE19900290A9 - Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung - Google Patents
Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle BuseinrichtungInfo
- Publication number
- DE19900290A9 DE19900290A9 DE1999100290 DE19900290A DE19900290A9 DE 19900290 A9 DE19900290 A9 DE 19900290A9 DE 1999100290 DE1999100290 DE 1999100290 DE 19900290 A DE19900290 A DE 19900290A DE 19900290 A9 DE19900290 A9 DE 19900290A9
- Authority
- DE
- Germany
- Prior art keywords
- endpoint
- usb
- host
- address
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000005540 biological transmission Effects 0.000 claims abstract description 35
- 238000000034 method Methods 0.000 claims abstract description 22
- 238000012546 transfer Methods 0.000 claims description 64
- 239000000872 buffer Substances 0.000 description 144
- 230000006870 function Effects 0.000 description 91
- 238000010586 diagram Methods 0.000 description 17
- 230000008859 change Effects 0.000 description 15
- 206010009944 Colon cancer Diseases 0.000 description 11
- 238000001514 detection method Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 230000001360 synchronised effect Effects 0.000 description 10
- 230000007704 transition Effects 0.000 description 10
- 238000013507 mapping Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 7
- 230000003139 buffering effect Effects 0.000 description 6
- 239000002131 composite material Substances 0.000 description 6
- 238000011084 recovery Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- FKDLDISFZUNJQD-FJXQXJEOSA-N (2s)-2-amino-3-(3-amino-4-hydroxyphenyl)propanoic acid;5-amino-2,3-dihydrophthalazine-1,4-dione Chemical compound O=C1NNC(=O)C2=C1C(N)=CC=C2.OC(=O)[C@@H](N)CC1=CC=C(O)C(N)=C1 FKDLDISFZUNJQD-FJXQXJEOSA-N 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 238000012876 topography Methods 0.000 description 3
- 239000013598 vector Substances 0.000 description 3
- 101100170092 Arabidopsis thaliana PDF1B gene Proteins 0.000 description 2
- 101000830386 Homo sapiens Neutrophil defensin 3 Proteins 0.000 description 2
- 101000743264 Homo sapiens RNA-binding protein 6 Proteins 0.000 description 2
- 102100024761 Neutrophil defensin 3 Human genes 0.000 description 2
- 238000001994 activation Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 101150060894 def2 gene Proteins 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002618 waking effect Effects 0.000 description 2
- QXOQNNAWFUXKMH-UHFFFAOYSA-N 1-(Malonylamino)cyclopropanecarboxylic acid Chemical compound OC(=O)CC(=O)NC1(C(O)=O)CC1 QXOQNNAWFUXKMH-UHFFFAOYSA-N 0.000 description 1
- 101100072702 Drosophila melanogaster defl gene Proteins 0.000 description 1
- 101000918983 Homo sapiens Neutrophil defensin 1 Proteins 0.000 description 1
- HEFNNWSXXWATRW-UHFFFAOYSA-N Ibuprofen Chemical compound CC(C)CC1=CC=C(C(C)C(O)=O)C=C1 HEFNNWSXXWATRW-UHFFFAOYSA-N 0.000 description 1
- 125000002066 L-histidyl group Chemical group [H]N1C([H])=NC(C([H])([H])[C@](C(=O)[*])([H])N([H])[H])=C1[H] 0.000 description 1
- 235000000421 Lepidium meyenii Nutrition 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 102100029494 Neutrophil defensin 1 Human genes 0.000 description 1
- 101150048253 PHYA gene Proteins 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000009414 blockwork Methods 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 235000012902 lepidium meyenii Nutrition 0.000 description 1
- 230000010355 oscillation Effects 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Abstract
Es werden ein Verfahren und eine Einrichtung zum dynamischen Zuweisen und Enabeln einer eindeutigen Funktionsadresse für eine universelle serielle Bus-Einrichtung beschrieben. Ein Host weist die eindeutige Adresse während einer Steuertransaktion zu. Die universelle serielle Bus-Einrichtung disabelt die voreingestellte Adresse und enabelt die eindeutige Funktionsadresse während einer Statusstufe der Steuerübertragung, um ein Fehlerfenster zu vermeiden.
Description
DE 199 OO 290 A 1
Beschreibung
[0001] Das Verfahren und die Einrichtung betreffen die Initialisierung einer universellen Buseinrichtung und insbesondere
Zuordnung die einer eindeutigen Funktionsadresse zu einer universellen seriellen Buseinrichtung.
[0002] Ein universeller serieller Bus (USB) ist eine genormte Peripherieschnittstelle zum Anschließen von Personal Computern an eine große Vielzahl von Einrichtungen: z. B. digitale Telefonleitungen, Monitore, Modems, Mäuse, Drucker, Scanner, Spielsteuereinrichtungen, Tastaturen und andere Peripheriegeräte. Ein USB ersetzt also vorhandene Schnittstellen, wie die seriellen Ports RS-232C, parallele Ports, PS/2-Schnittstellen und Game/MIDI Ports.
[0003] Bei dem USB werden alle angeschlossenen Geräte über einen einzigen Verbindungstyp, der eine "tiered Star"-Topologie (in Rängen geordnete Stern-Topologie) verwendet, mit einem Personal Computer verbunden. Ein Host-Personal Computer umfaßt eine einzige USB-Steuereinrichtung. Die Host-Steuereinrichtung bildet die Schnittstelle zwischen dem USB-Netz und dem Host-Personal Computer. Die Host-Steuereinrichtung steuert einige Zugriffe auf die USB-Ressourcen und überwacht die Bustopologie. Ein USB-Verteilerknoten (Hub) sieht die USB-Anschlußpunkte für USB-Einrichtungen vor.
[0002] Ein universeller serieller Bus (USB) ist eine genormte Peripherieschnittstelle zum Anschließen von Personal Computern an eine große Vielzahl von Einrichtungen: z. B. digitale Telefonleitungen, Monitore, Modems, Mäuse, Drucker, Scanner, Spielsteuereinrichtungen, Tastaturen und andere Peripheriegeräte. Ein USB ersetzt also vorhandene Schnittstellen, wie die seriellen Ports RS-232C, parallele Ports, PS/2-Schnittstellen und Game/MIDI Ports.
[0003] Bei dem USB werden alle angeschlossenen Geräte über einen einzigen Verbindungstyp, der eine "tiered Star"-Topologie (in Rängen geordnete Stern-Topologie) verwendet, mit einem Personal Computer verbunden. Ein Host-Personal Computer umfaßt eine einzige USB-Steuereinrichtung. Die Host-Steuereinrichtung bildet die Schnittstelle zwischen dem USB-Netz und dem Host-Personal Computer. Die Host-Steuereinrichtung steuert einige Zugriffe auf die USB-Ressourcen und überwacht die Bustopologie. Ein USB-Verteilerknoten (Hub) sieht die USB-Anschlußpunkte für USB-Einrichtungen vor.
[0004] Ein Beispiel der Sterntopologie eines USB-Netzes ist in Fig. 1 gezeigt. Ein Host-PC 100 ist ein typischer Personal
Computer mit einer USB-Portverbindung über eine Host-Steuereinrichtung 102. Die Host-Steuereinrichtung 102
ist direkt mit dem Verteilerknoten (Hub) 110 verbunden. Eine zusammengesetzte Einrichtung 120, ein Verteilerknoten
130 und eine Einrichtung 140 sind mit der Host-Steuereinrichtung über den Verteilerknoten 110 verbunden. Einrichtungen
124 und 126 der zusammengesetzten Einrichtung 120 sind mit der Host-Steuereinrichtung 102 über den Verteilerknoten
122 und den Verteilerknoten 110 verbunden. Ein praktisches Beispiel einer zusammengesetzten Einrichtung wäre
ein Gerät mit integriertem Drucker und Fax. Der Drucker könnte die Einrichtung 124 sein, und das Fax könnte die Einrichtung
126 sein.
[0005] Die in Fig. 1 gezeigte Sterntopographie ermöglicht es, Daten in den und aus dem Host-PC 100 zu den verschiedenen
Einrichtungen zu übertragen. Wenn Daten von dem Host zu einer Einrichtung übertragen werden, gehen sie stromabwärts
durch die verbindenden Verteilerknoten. Wenn Daten von einer Einrichtung zu dem Host übertragen werden, gehen
sie stromaufwärts durch die verbindenden Verteilerknoten.
[0006] USB-Verteilerknoten und Einrichtungen können angeschlossen und abgetrennt werden, ohne das das USB-Netz
vollständig neu gestartet werden muß. Beim Anschließen einer Einrichtung oder eines Verteilerknotens an einen stromaufwärtigen
Verteilerknoten benachrichtigt der stromaufwärtige Verteilerknoten die Host-Steuereinrichtung über eine
Änderung des Status. Gemäß dem USB-Protokoll enabelt die Host-Steuereinrichtung den Port des Verteilerknotens, mit
dem die Einrichtung verbunden ist. Die Host-Steuereinrichtung weist dann jeder Einrichtung eine eindeutige Funktionsadresse zu. Ports werden nacheinander enabelt, während die Host-Steuereinrichtung 102 eindeutige Funktionsadressen
zuweist. Zum Anschließen einer zusammengesetzten Einrichtung weist die Steuereinrichtung jeder in der zusammengesetzten
Einrichtung enthaltenen Einrichtung eine eindeutige Funktionsadresse zu. In Fig. 1 werden den Einrichtungen
124,126,132,134 und 140 zusätzlich zu den Verteilerknoten 110,122 und 130 jeweils eine eindeutige Funktionsadresse
zugewiesen, sobald sie mit dem USB-Netz verbunden werden.
[0007] Zusätzlich zu den Verteilerknoten 110,122 und 133 antworten die Einrichtungen 124,126,132,134 und 140 jeweils
auf eine voreingestellte Adresse 00h, bis ihnen die eindeutige Funktionsadresse zugewiesen wird. Jede der Einrichtungen
umfaßt Register, die von der Host-Steuereinrichtung gelesen werden können. Die Register umfassen ein Vorein-Stellungsbit
(DEF), ein Funktionsadressen-Enablebit (AE) und ein Funktionsadressenregister (FAR). Das Voreinstellungsbit
zeigt an, ob die Einrichtung auf die voreingestellte Adresse anspricht. Wenn es gesetzt ist, reagiert die Einrichtung
auf die voreingestellte Adresse, wenn es gelöscht ist, tut sie dies nicht. Das Funktionsadressen-Enablebit zeigt an,
ob die Einrichtung auf die in dem Funktionsadressenregister gespeicherte Adresse antwortet. Wenn es gesetzt ist, wird
die Einrichtung auf die im Funktionsadressenregister gespeicherte Adresse reagieren, wenn es gelöscht ist, tut sie dies
nicht.
[0008] Alle Einrichtungen 124,126,132,134 und 140 sind mit der Host-Steuereinrichtung 102 über wenigstens einen
Verteilerknoten verbunden. Jeder Verteilerknoten hat einen stromaufwärtigen Port und wenigstens einen stromabwärtigen
Port. Beim Anschließen oder Entfernen einer Einrichtung an einen bzw. von einem stromabwärtigen Port, benachrichtigt
ein Verteilerknoten die Host-Steuereinrichtung über eine Änderung des Status. Die Host-Steuereinrichtung fragt
dann den Verteilerknoten ab, um die Änderung des Status an den Ports des Verteilerknotens zu ermitteln.
[0009] Beim Anschließen einer Einrichtung an einen der stromabwärtigen Ports des Verteilerknotens, läuft die obige
Prozedur ab, um die Host-Steuereinrichtung über das Anschließen einer neuen Einrichtung zu benachrichtigen. Die
stromabwärtigen Ports eines Verteilerknotens sind in der Voreinstellung disabelt, bis die Host-Steuereinrichtung sie enabelt.
Die Host-Steuereinrichtung wird daher den Port enabeln.
[0010] Beim Entfernen einer Einrichtung von einem der stromabwärtigen Ports eines Verteilerknotens disabelt der Verteilerknoten
den entsprechenden Port automatisch und benachrichtigt den Host über die Änderung. Die Host-Steuereinrichtung
aktualisiert den Topographiezustand, um die Veränderung wiederzugeben.
[0011] Der Prozeß des Aktivierens einer neu angeschlossenen Einrichtung ist im folgenden mit weiteren Einzelheiten
beschrieben. Wenn eine Einrichtung an einem stromabwärtigen Port eines Verteilerknotens angeschlossen wird, benachrichtigt
der Verteilerknoten die Host-Steuereinrichtung über die Änderung des Zustands über einen Statusänderungskanal.
Die Host-Steuereinrichtung fragt den Verteilerknoten ab, um zu ermitteln, bei welchem der stromabwärtigen Ports
die Verbindung erfolgt ist. Die Host-Steuereinrichtung gibt dann einen Port-Enable- und Reset-Befehl an den entsprechenden
Port aus. Der Enablebefehl enabelt den Port und liefert Energie an die Einrichtung. Der Resetbefehl setzt alle
Registereinrichtungen und die Zustandsinformation zurück. Die Einrichtung reagiert auf eine voreingestellte Adresse,
und über einen voreingestellten Kanal kann auf sie zugegriffen werden. Die Host-Steuereinrichtung liest dann einen Deskriptor
der Einrichtung, um die Eigenschaften des voreingestellten Kanals zu ermitteln. Der Host weist dann der Einrichtung
eine eindeutige Funktionsadresse zu, wodurch die Einrichtung in den adressierten Zustand kommt. Der Host
liest dann die Konfigurationsinformation von der Einrichtung und schreibt einen Konfigurationswert in die Einrichtung.
DE 199 OO 290 A 1
Dadurch kommt die Einrichtung in den konfigurierten Zustand.
[0012] Die Transaktion zum Zuweisen einer eindeutigen Funktionsadresse während des oben beschriebenen Aktivierungsprozesses
ist im folgenden mit weiteren Einzelheiten erläutert. Diese Transaktionen werden zunächst allgemein beschrieben,
dann folgt eine Beschreibung ihrer Anwendung zum Zuweisen einer eindeutigen Funktionsadresse.
[0013] Die USB-Spezifikation definiert ein Steuerübertragungsprotokoll, das beim Konfigurieren einer Einrichtung verwendet wird. Eine Steuerübertragung ist aufgebaut aus einer Setup-Transaktion, die Anfrageinformation von dem Host zu der Einrichtung bewegt, optionalen Datentransaktion, die Daten in die durch die Setup-Transaktion angegebene Richtung senden, und eine Statustransaktion, welche Statusinformation von der Einrichtung an den Host zurückgibt.
[0014] Das Auftreten einer EIN- oder AUS-Datentransaktion in der Steuertransaktion sieht drei mögliche Transkationsfolgen vor: eine S teuerschreib folge, eine Steuerlesefolge und eine Steuer-keine-Daten-Folge. Jede dieser Folgen ist nun mit weiteren Einzelheiten beschrieben.
[0013] Die USB-Spezifikation definiert ein Steuerübertragungsprotokoll, das beim Konfigurieren einer Einrichtung verwendet wird. Eine Steuerübertragung ist aufgebaut aus einer Setup-Transaktion, die Anfrageinformation von dem Host zu der Einrichtung bewegt, optionalen Datentransaktion, die Daten in die durch die Setup-Transaktion angegebene Richtung senden, und eine Statustransaktion, welche Statusinformation von der Einrichtung an den Host zurückgibt.
[0014] Das Auftreten einer EIN- oder AUS-Datentransaktion in der Steuertransaktion sieht drei mögliche Transkationsfolgen vor: eine S teuerschreib folge, eine Steuerlesefolge und eine Steuer-keine-Daten-Folge. Jede dieser Folgen ist nun mit weiteren Einzelheiten beschrieben.
[0015] Fig. 4A zeigt eine Steuerschreibfolge. Die S teuerschreib folge umfaßt drei Stufen: eine Setup-Stufe, eine Datenstufe
und eine Statusstufe. Die Setup-Stufe besteht aus einer SETUP-Transaktion 410 mit einem DATAO PID. Die SE-TUP-Transaktion
410 spezifiziert, daß eine AUS-Datenstufe folgt. Die Datenstufe besteht aus einer AUS-Transaktion
412 mit einem DATAl PID. Der AUS-Transaktion 410 folgt eine AUS-Transaktion 414 mit einem DATAO PID. Dieser
Transaktion folgen so viele Transaktionen, wie notwendig sind, um die erforderlichen Daten von dem Haus zu übertragen.
Dies hängt sowohl von der Größe der Daten in dem Host als auch von der Größe der übertragenen Pakete ab. Das
DATA PID ändert sich bei den in der Datenstufe verwendeten AUS-Transaktionen zwischen 1 und 0. Die letzte AUS-Transaktion
416 beendet die Datenstufe. Die Statusstufe besteht aus einer einzigen EHM-Transaktion 418 mit einem
DATAl PID.
[0016] In Fig. 4B ist eine Steuerlesefolge gezeigt. Die Steuerdaten-EIN-Folge umfaßt drei Stufen: eine Setup-Stufe,
eine Datenstufe und eine Statusstufe. Die Setup-Stufe besteht aus einer SETUP-Transaktion 420 mit einem DATAO PID.
Die SETUP-Transaktion 420 spezifiziert, daß eine EIN-Datenstufe folgt. Die Datenstufe besteht aus einer EIN-Transaktion
422 mit einem DATAl PID. Der EIN-Transaktion 423 folgt eine EIN-Transaktion 424 mit einem DATAO PID. Diesem
Token folgen so viele Transaktionen, wie notwendig sind, um die benötigten Daten von der Einrichtung zu übertragen.
Dies hängt sowohl von der Größe der Daten in der Einrichtung als auch von der Größe der übertragenen Pakete ab.
Das DATA PID ändert sich bei den in der Datenstufe verwendeten EIN-Transaktionen zwischen 1 und 0. Die letzte EIN-Transaktion
426 beendet die Datenstufe. Die Statusstufe besteht aus einer einzigen EIN-Transaktion 428 mit einem
DATAl PID.
[0017] In Fig. 4C ist eine keine-Daten-Steuerfolge gezeigt. Die keine-Daten-Steuerfolge umfaßt zwei Stufen: eine Setup-Stufe
und eine Statusstufe. Die Setup-Stufe besteht aus einer SETUP-Transaktion 420 mit einem DATAO PID. Die
Statusstufe besteht aus einer einzigen AUS-Transaktion 428 mit einem DATAl PID.
[0018] Fig. 3 zeigt ein Flußdiagramm, das eine Setup-Transaktion wiedergibt. Die Transaktion beginnt mit einem SE-TUP-Token
310, der von dem Host gesendet wird. Eine Setup-Transaktion umfaßt immer ein DATAO PID für das Datenfeld.
Die Einrichtung antwortet durch Senden einer ACK-Quittung, um die SETUP-Transaktion abzuschließen.
[0019] Fig. 5 zeigt ein Flußdiagramm, das eine EIN-Transaktion wiedergibt. Die EIN-Transaktion beginnt mit einem
EIN-Token 415, der von dem Host an die Einrichtung gesendet wird. Die Einrichtung sollte dann mit dem richtigen
DATA-Paket (Datenpaket) 512 antworten (entweder ein DATAO- oder ein DATAl-Paket). Wenn die Einrichtung jedoch
vorübergehend kein DATA-Paket zurückgeben kann, sendet sie statt dessen eine NAK-Quittung 514 zurück. Wenn die
Einrichtung kein DATA-Paket zurücksenden kann, und der Host eingreifen muß, um ihren Zustand wiederherzustellen,
gibt sie eine STALL-Quittung 516 zurück. Beim Zurückgeben eines DATA-Pakets 512 reagiert der Host mit einer ACK-Quittung
518 bei Empfang dieses Pakets.
[0020] Fig. 6 zeigt ein Flußdiagramm, das eine AUS-Transaktion darstellt. Die AUS-Transaktion beginnt mit einem
AUS-Token 610, der von dem Host an die Einrichtung gesendet wird. Der Host sendet dann das richtige DATA-Paket
612 (entweder ein DATAO- oder ein DATAl-Paket). Wenn die Einrichtung das DATA-Paket 612 ohne Fehler empfängt
und für den Empfang eines weiteren Pakets bereit ist, sendet sie eine ACK-Quittung 614 zurück. Wenn die Einrichtung
das DATA-Paket 612 ohne Fehler empfängt, der Host das Paket jedoch erneut senden soll, gibt sie eine NAK-Quittung
616 zurück. Die NAK-Quittung wird verwendet, wenn die gewünschte Funktion einer Einrichtung in einem Zustand ist,
der es vorübergehend verhindert, daß sie das DATA-Paket empfängt. Wenn die Einrichtung das DATA-Paket 612 empfängt,
jedoch noch in einem Haltezustand ist, gibt sie eine STALL-Quittung zurück, uni anzuzeigen, daß der Host nicht
versuchen sollte, das Paket erneut zu senden. Wenn das DATA-Paket 612 mit einem CRC-Fehler oder einem Bitfehler
(Stuffing-Fehler) empfangen wird, wird keine Quittung zurückgegeben.
[0021] Beim Anschließen einer Einrichtung an einen Host-Port verwendet der Host eine Steuerschreibübertragung, um
eine eindeutige Funktionsadresse zuzuweisen. Wie oben beschrieben besteht eine erfolgreiche Steuerschreibübertragung
aus einer SETUP-Transaktion, wenigstens einer AUS-Transaktion und einer EIN-Transaktion. Die SETUP-Transaktion
wird an die voreingestellte Adresse gerichtet. Die AUS-Transaktion(en) enthalten die eindeutige Funktionsadresse für
die Einrichtung. Die EIN-Transaktion besteht aus dem EIN-Token von dem Host, einem Null-Längen-DATAl-Paket von
der Einrichtung an den Host und einer ACK-Quittung von dem Host an die Einrichtung.
[0022] Um die Funktionsadresse zu enabeln setzt jede der Einrichtungen 124,126,132,134 und 140 und Verteilerknoten
110,122 und 130 ihrerseits/seinerseits ein Funktionsadressenbit. Nach Beendigung der AUS-Transaktionen einer SE-TUP-S
teuerübertragung zum Zuweisen einer eindeutigen Funktionsadresse hat die Einrichtung die eindeutige Funktionsadresse
empfangen. Diese Adresse wird in das Funktionsadressenregister der Einrichtung geladen, und das Adressenablebit
wird gesetzt. Der Host sendet dann einen EIN-Token, um die Statusstufe der Setup-Steuerübertragung zu starten.
Die Statusstufe wird dazu verwendet, die Beendigung der Steuerübertragung zu bestätigen. Nach dem Laden einer eindeutigen
Funktionsadresse wird die voreingestellte Adresse beim Empfang des nächsten EIN-Tokens gelöscht. Die Einrichtung
sendet gleichzeitig ein DATAl-Paket an den Host. Das DATAl-Paket gibt an, daß der Endpunkt nun in einem
Zustand ist, in dem er von dem Host adressiert werden kann. Wenn die Einrichtung vorübergehende Verzögerungen erfährt,
kann sie statt dessen ein NAK-Quittungspaket senden. Wenn die Einrichtung eine Fehlerbedingung erfährt, kann
DE 199 OO 290 A 1
sie alternativ STALL senden, um anzuzeigen, daß der Host nicht versuchen sollte, Daten wiederholt zu senden.
[0023] Bei vielen USB-Netzen ist die Übertragung von Daten nicht vollständig fehlerfrei. Gelegentlich werden Datenübertragungen behindert, und jede der oben beschriebenen Übertragungen kann gestört sein.
[0023] Bei vielen USB-Netzen ist die Übertragung von Daten nicht vollständig fehlerfrei. Gelegentlich werden Datenübertragungen behindert, und jede der oben beschriebenen Übertragungen kann gestört sein.
[0024] Das Null-Längen-DATAl-Paket, das von der Einrichtung während der Statusstufe gesendet wird, kann z. B. beschädigt
sein oder auf seinem Weg durch das USB-Netz zu dem Host einfach verlorengehen. Während des Zeitfensters
nach einem solchen Verlust sendet der Host nicht die richtige ACK-Quittung, weil er das DATAl-Paket nicht richtig
empfangen hat.
[0025] Statt dessen kann der Host versuchen, die SETUP-Steuerübertragung neu zu starten, indem er einen SETUP-Token
oder einen EIN-Token an die voreingestellte Adresse der Einrichtung sendet. Da die Einrichtung ihr Voreinstellungsadreßbit
gelöscht hat, reagiert sie auf diesen Token nicht mehr.
[0026] Zusätzlich kann der Host bereits einen anderen Verteilerknoten-Port enabelt haben, der mit einer noch nicht
konfigurierten Einrichtung verbunden ist. Obwohl der SETUP-Token nicht an die unkonfigurierte Einrichtung gerichtet
ist, wird sie reagieren. Diese Reaktion kann weitere Fehler bewirken, insbesondere in dem Host, der die Bustopographie
überwacht.
[0027] Es werden daher Verfahren und Vorrichtungen zum Vermeiden der möglichen Fehler benötigt, die sich aus der
Störung oder dem Verlust bei Datenübertragungen während der SETUP-Steuerübertragung ergeben.
[0028] Es ist eine Aufgabe der Erfindung, eine robuste Zuweisung einer Funktionsadresse mit Hilfe einer SETUP-Steuerübertragung vorzusehen.
[0029] Es ist eine weitere Aufgabe der Erfindung, eine Funktionsadressenzuweisung abzuschließen, selbst wenn einige der Daten, die während einer Setup-Steuerübertragung übertragen werden, verlorengehen oder beschädigt wurden.
[0028] Es ist eine Aufgabe der Erfindung, eine robuste Zuweisung einer Funktionsadresse mit Hilfe einer SETUP-Steuerübertragung vorzusehen.
[0029] Es ist eine weitere Aufgabe der Erfindung, eine Funktionsadressenzuweisung abzuschließen, selbst wenn einige der Daten, die während einer Setup-Steuerübertragung übertragen werden, verlorengehen oder beschädigt wurden.
[0030] Es ist ein Vorteil der Erfindung, daß sie das Undefinierte Zeitfenster vermeidet, das dem Verlust oder der Beschädigung
eines DATAl-Pakets der Statusstufe folgt.
[0031] Es ist ein Merkmal eines Aspekts der Erfindung, daß sie eine eindeutige Funktionsadresse bei Empfang einer
gültigen ACK-Quittung nach der Statusphase oder bei Auftreten eines SETUP-Tokens für eine andere Einrichtung zuläßt
(enabelt).
[0032] Es ist ein Merkmal der Erfindung, eine Adressenzuweisung in zusammengesetzten Einrichtungen mit mehreren
Funktionsadressen zuzulassen.
[0033] Gemäß eines Aspekts der Erfindung weist eine USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadreß-Enablebit
auf, wobei das Voreinstellungsadreß-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht
(enabelt). Die Einrichtung empfangt einen EIN-Token von einem Host; sendet ein DATAl-Paket an den Host;
empfangt ACK von dem Host; und löscht das Voreinstellungsadreßbit erst nach dem Empfang von ACK.
[0034] Gemäß eines weiteren Aspekts der Erfindung weist eine USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadreß-Enablebit auf, wobei das Voreinstellungsadreß-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht. Die Einrichtung empfängt einen EIN-Token von einem Host; sendet ein Null-Längen-DATAl -Paket an den Host; empfängt ein SETUP-Paket von dem Host; und löscht das Voreinstellungsadreß-Enablebit bei Empfang des SETUP-Pakets.
[0034] Gemäß eines weiteren Aspekts der Erfindung weist eine USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadreß-Enablebit auf, wobei das Voreinstellungsadreß-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht. Die Einrichtung empfängt einen EIN-Token von einem Host; sendet ein Null-Längen-DATAl -Paket an den Host; empfängt ein SETUP-Paket von dem Host; und löscht das Voreinstellungsadreß-Enablebit bei Empfang des SETUP-Pakets.
[0035] Gemäß eines weiteren Aspekts der Erfindung umfaßt ein USB-Netz einen Host und mehrere Einrichtungen,
wobei die Einrichtungen jeweils eine Voreinstellungsadresse und ein Voreinstellungsadreß-Enablebit aufweisen, und
wobei das Voreinstellungsadreß-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht. Ein Verfahren zum
Betreiben des USB-Netzes sendet einen EIN-Token von dem Host an eine erste Einrichtung; empfängt den EIN-Token
bei der ersten Einrichtung; sendet ein DATAl-Paket von der ersten Einrichtung an den Host; empfängt das DATAl-Paket
bei dem Host; sendet ACK von dem Host an die erste Einrichtung; sendet einen SETUP-Token von dem Host an eine
zweite Einrichtung; und löscht das Voreinstellungsadreßbit der ersten Einrichtung bei Empfang von entweder ACK oder
des SETUP-Tokens.
[0036] Gemäß eines weiteren Aspekts der Erfindung verwendet eine USB-Einrichtung ein Voreinstellungsadreß-Enablebit,
wobei dann, wenn das Voreinstellungsadreß-Enablebit gesetzt ist, die USB-Einrichtung auf eine Voreinstellungsadresse antwortet, und wenn das Voreinstellungsadreßbit gelöscht ist, antwortet die USB-Einrichtung nicht auf die Voreinstellungsadresse,
wobei das Voreinstellungsadreß-Enablebit bei Empfang einer ACK-Quittung während einer Statusstufe
einer Steuerübertragung gelöscht wird.
[0037] Die Erfindung mit ihren Aufgaben, Merkmalen und Vorteilen ist im folgenden mit weiteren Einzelheiten anhand
bevorzugter Ausführungsformen mit Bezug auf die Zeichnung näher erläutert. In den Figur zeigt:
[0038] Fig. 1 ein Blockdiagramm eines universellen seriellen Bus-Netzes;
[0038] Fig. 1 ein Blockdiagramm eines universellen seriellen Bus-Netzes;
[0039] Fig. 2 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform eines Schnittstellenmoduls für eine universelle
serielle Buseinrichtung gemäß der Erfindung;
[0040] Fig. 3 ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer SETUP-Transaktion;
[0041] Fig. 4A ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer Steuerschreibübertragung;
[0042] Fig. 4B ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer Steuer-Leseübertragung;
[0043] Fig. 4C ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer keine-Daten-Steuerübertragung;
[0043] Fig. 4C ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer keine-Daten-Steuerübertragung;
[0044] Fig. 5 ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer EIN-Transaktion;
[0045] Fig. 6 ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer AUS-Transaktion;
[0046] Fig. 7 zeigt ein Funktionsadreßregister für eine USB-Einrichtung gemäß einer bevorzugten Ausführungsform der Erfindung;
[0047] Fig. 8 zeigt eine Gerätesteuereinrichtung für eine USB-Einrichtung gemäß einer bevorzugten Ausführungsform der Erfindung;
[0045] Fig. 6 ist ein Flußdiagramm des Datenablaufs in einem USB-Netz während einer AUS-Transaktion;
[0046] Fig. 7 zeigt ein Funktionsadreßregister für eine USB-Einrichtung gemäß einer bevorzugten Ausführungsform der Erfindung;
[0047] Fig. 8 zeigt eine Gerätesteuereinrichtung für eine USB-Einrichtung gemäß einer bevorzugten Ausführungsform der Erfindung;
[0048] Fig. 9 ist ein Flußdiagramm der Zuweisung der Funktionsadressen gemäß einer bevorzugten Ausführungsform
der Erfindung; und
[0049] Fig. 10 ist ein Flußdiagramm einer Steuertransaktion, welche eine eindeutige Funktionsadresse gemäß einer
DE 199 OO 290 A 1
Ausführungsform der Erfindung zuweist und enabelt.
[0050] Die in dieser Anmeldung beschriebene Erfindung ist ein Aspekt einer größeren Gruppe von Erfindungen, die in
den folgenden, ebenfalls anhängigen Anmeldungen derselben Anmelderin beschrieben sind, und auf die hier Bezug genommen
wird: US-Patentanmeldung Nr. 09/003,963, angemeldet am 7. Januar 1998, mit dem Titel "Apparatus and Method
for Implementing a Versatile USB Endpoint Pipe"; US-Patentanmeldung Nr. 09/004,003, angemeldet am 7. Januar
1998, mit dem Titel "Apparatus and Method of Implementing a USB Endpoint Pipe with Double Buffering Support";
US-Patentanmeldung Nr. 09/004,004, angemeldet am 7. Januar 1998, mit dem Titel "An Apparatus and Method for
Transmitting and Receiving Data Into and Out of a Universal Serial Bus Device"; US-Patentanmeldung Nr. 09/003,897,
angemeldet am 7. Januar 1998, mit dem Titel "Apparatus and Method of Transmitting and Receiving USB Isochronous
Data"; US-Patentanmeldung Nr. 09/004,002, angemeldet am 7. Januar 1989, mit dem Titel "An Apparatus and Method
for Handling Universal Serial Bus Control Transfers"; US-Patentanmeldung Nr. 09/004,005, angemeldet am 7. Januar
1998, mit dem Titel "Apparatus and Method for Providing an Interface to a Compound Universal Serial Bus Controller".
[0051] Zusätzlich wird auf das Dokument von National Semiconductor "USB Node Interface Architecture Specification",
Version 0.6, Bezug genommen, das als Anhang A dieser Anmeldung beigefügt ist.
[0052] Mit Bezug auf Fig. 2 wird nun eine USB-Einrichtung 210 gemäß den Grundsätzen der Erfindung beschrieben.
Die bevorzugte Ausführungsform der Einrichtung entspricht der Version 1.0 der USB-Spezifikation, während sie eine
Reihe von Vorteilen gegenüber den herkömmlichen USB-Einrichtungen aufweist. Die USB-Einrichtung 210 umfaßt ein
USB-Schnittstellenmodul 220, einen Registersatz 214, ein RAM 212 und ein BIU (Busschnittstelleneinheit) 216.
[0053] Das Schnittstellenmodul 200 dient als Verbindung zu einem USB-Netz, um Daten zu senden und zu empfangen.
Das Schnittstellenmodul 200 ist auch mit dem Registersatz 214, dem RAM 212 und dem BIU 216 über einen Kernbus
218 verbunden. Der Kernbus 218 ermöglicht es dem Schnittstellenmodul 200, auf den Registersatz 214 und das RAM
212 zuzugreifen.
[0054] Der Registersatz 214 umfaßt ein Funktionsadressenregister und ein Gerätesteuerregister. In Fig. 7 ist eine bevorzugte
Ausführungsform eines Funktionsadressenregisters 710 gezeigt. Das Funktionsadressenregister 710 ist 32 Bit
lang und bietet Platz für vier Funktionsadressen.
[0055] Die Bits 0 bis 6 des Funktionsadressenregisters 710 bieten Platz für eine erste Funktionsadresse, die mit FAO
bezeichnet ist. Das Bit 7 bietet Platz für ein erstes Adreßenablebit, das mit AEO bezeichnet ist. Die Bits 8 bis 14 des
Funktionsadressenregisters 710 bieten Platz für eine zweite Funktionsadresse, die mit FAl bezeichnet ist. Das Bit 15 bietet
Platz für ein zweites Adreßenabelbit, das mit AEl bezeichnet ist. Die Bits 16 bis 22 des Funktionsadressenregisters
710 bieten Platz für eine dritte Funktionsadresse, die mit FA2 bezeichnet ist. Das Bit 23 bietet Platz für ein drittes Adreßenabelbit,
das mit AE2 bezeichnet ist. Die Bits 24 bis 30 des Funktionsadressenregisters 710 bieten Platz für eine vierte
Funktionsadresse, die mit FA3 bezeichnet ist. Das Bit 31 bietet Platz für ein viertes Adreßenabelbit, das mit AE3 bezeichnet
ist.
[0056] Die vier Funktionsadressen FAO, FAl, FA2 und FA3 zusammen mit den vier Adreßenabelbits AEO, AEl, AE2
und AE3 sind vorgesehen, um den Betrieb einer zusammengesetzten Einrichtung mit bis zu vier Adressen zu unterstützen.
Nachdem eine Funktionsadresse zugewiesen ist, kann das zugehörige Adreßenabelbit gesetzt werden, uni die Verwendung
der Funktionsadresse zu ermöglichen (enabeln).
[0057] In Fig. 8 ist eine bevorzugte Ausführungsform eines Gerätesteuerregisters 810 gezeigt. Das Gerätesteuerregister
810 ist 16 Bit lang.
[0058] Das Bit 4 bietet Platz für ein erstes Voreinstellungsadressen-Enabelbit DEFO, das zu der ersten Funktionsadresse
FAO gehört. Das Bit 5 bietet Platz für ein zweites Voreinstellungs-Enablebit DEFl, das zu der zweiten Funktionsadresse
FAl gehört. Das Bit 6 bietet Platz für ein drittes Voreinstellungsadressen-Enablebit DEF2, das zu der dritten
Funktionsadresse FA2 gehört. Das Bit 7 bietet Platz für ein viertes Voreinstellungsadressen-Enablebit DEF3, das zu der
vierten Funktionsadresse FA3 gehört.
[0059] Die Voreinstellungs-Adressen-Enablebits werden dazu verwendet, anzuzeigen, ob die Einrichtung (das Gerät)
auf die voreingestellte Adresse antwortet. Wenn diese Bits gesetzt sind, wird die Einrichtung auf die voreingestellte
Adresse antworten, wenn sie gelöscht sind, wird sie dies nicht tun.
[0060] Nachdem eine Funktionsadresse zugewiesen ist, wird das zugehörige Funktionsadressenbit gesetzt, um anzuzeigen,
daß die Adresse gültig ist. Danach wird die zugehörige Voreinstellungsadresse gelöscht, und die Einrichtung reagiert
nicht mehr auf die voreingestellte Adresse sondern auf die Funktionsadresse. [0061] Mit Bezug auf Fig. 9 wird nun die Zuweisung von Funktionsadressen mit weiteren Einzelheiten beschrieben.
Die Zuweisung beginnt beim Block 910, wo eine USB-Einrichtung, die vier mögliche Funktionsadressen hat, mit einer
USB-Einrichtung verbunden wird. Im Block 912 prüft die USB-Einrichtung den Empfang eines SETUP-Tokens, der
eine Steuerübertragung zum Zuweisen einer Funktionsadresse anzeigt. Beim Empfang eines solchen Tokens, beim Block
916, führt die USB-Einrichtung die Steuerübertragung aus, weist FAO zu und setzt AEO. DEFO wird von der Einrichtung
gelöscht, wenn das nächste Mal in Antwort auf einen EIN-Token ACK empfangen wird. Wenn ACK nicht innerhalb einer
Zeitablaufperiode empfangen wird und wenn der nächste Token ein SETUP ist, bewirkt auch dies, daß das DEFO-Bit
zurückgesetzt wird.
[0062] In Block 916 prüft die USB-Einrichtung wiederum den Empfang eines SETUP-Tokens, der eine Steuerübertragung
zum Zuweisen einer Funktionsadresse anzeigt. Bei Empfang eines solchen Tokens in Block 918 führt die USB-Einrichtung
die Steuerübertragung durch, weist FAl zu und setzt AEl. DEFl wird wie oben beschrieben gelöscht. In Block
920 prüft die USB-Einrichtung wiederum den Empfang eines SETUP-Tokens, der eine Steuerübertragung für die Zuordnung
einer Funktionsadresse anzeigt. Bei Empfang eines solchen Tokens, beim Block 922, führt die USB-Einrichtung
die Steuerübertragung durch, weist FA2 zu und setzt AE2. DEF2 wird wie oben beschrieben gelöscht. Beim Block 924
prüft die USB-Einrichtung wiederum den Empfang eines SETUP-Tokens, der eine Steuerübertragung für die Zuordnung
einer Funktionsadresse anzeigt. Beim Empfang eines solchen Tokens, beim Block 926, führt die USB-Einrichtung die
Steuerübertragung durch, weist FA3 zu und setzt AE3. DEF3 wird wie oben beschrieben gelöscht. Damit ist die Zuordnung
der vier Funktionsadressen abgeschlossen.
DE 199 OO 290 A 1
[0063] Abhängig davon, wie schnell die Funktionsadressen zugeordnet wurden, kann die Einrichtung 210 auf ein oder
mehrere Funktionsadressen und eine voreingestellte Adresse reagieren.
[0064] Bevorzugte Ausführungsformen der Einrichtung aktivieren die Funktionsadressen abhängig von den speziellen
Bedürfnissen der Ausführungsform. Es können also von einer bis zu vier Funktionsadressen zugewiesen werden.
[0065] Die Aktivierung (Enable) einer Funktionsadresse gemäß einer bevorzugten Ausführungsform der Erfindung ist in Fig. 10 gezeigt. Bei einem Startblock 1010 wird eine USB-Einrichtung mit einem USB-Netz verbunden und prüft einen SETUP-Token, der eine Steuerübertragung zum Zuweisen einer Funktionsadresse angibt. Bei Empfang eines solchen Tokens geht die Einrichtung zu Block 1012, wo sie die SETUP-Transaktion abschließt. Bei Beendigung der SE-TUP-Transaktion geht die Einrichtung zum Block 1014, um einen AUS-Token zu empfangen. Die Einrichtung fährt dann fort, indem sie eine oder mehrere AUS-Transaktionen vollendet. Diese Transaktionen enthalten eine eindeutige Funktionsadresse, die in dem passenden Funktionsadressenregister gespeichert wird. Bei Beendigung der Datenstufe in Block 1014 prüft die Einrichtung einen EIN-Token. Bei Empfang des EIN-Tokens geht die Einrichtung zum Block 1018 weiter, wo sie ein Null-Längen-DATAl-Paket sendet. Nach dem Senden des DATAl-Pakets geht die Einrichtung zum Block 1020 weiter, wo sie auf den Empfang entweder einer ACK-Quittung oder auch eines anderen SETUP-Tokens wartet. Bei Empfang eines der beiden geht die Einrichtung zum Block 1022 weiter, wo sie das zugehörige DEF-Bit löscht. Dies ermöglicht (enable) die Verwendung der eindeutigen Funktionsadresse und sperrt (disable) die Verwendung der zugehörigen voreingestellten Adresse.
[0065] Die Aktivierung (Enable) einer Funktionsadresse gemäß einer bevorzugten Ausführungsform der Erfindung ist in Fig. 10 gezeigt. Bei einem Startblock 1010 wird eine USB-Einrichtung mit einem USB-Netz verbunden und prüft einen SETUP-Token, der eine Steuerübertragung zum Zuweisen einer Funktionsadresse angibt. Bei Empfang eines solchen Tokens geht die Einrichtung zu Block 1012, wo sie die SETUP-Transaktion abschließt. Bei Beendigung der SE-TUP-Transaktion geht die Einrichtung zum Block 1014, um einen AUS-Token zu empfangen. Die Einrichtung fährt dann fort, indem sie eine oder mehrere AUS-Transaktionen vollendet. Diese Transaktionen enthalten eine eindeutige Funktionsadresse, die in dem passenden Funktionsadressenregister gespeichert wird. Bei Beendigung der Datenstufe in Block 1014 prüft die Einrichtung einen EIN-Token. Bei Empfang des EIN-Tokens geht die Einrichtung zum Block 1018 weiter, wo sie ein Null-Längen-DATAl-Paket sendet. Nach dem Senden des DATAl-Pakets geht die Einrichtung zum Block 1020 weiter, wo sie auf den Empfang entweder einer ACK-Quittung oder auch eines anderen SETUP-Tokens wartet. Bei Empfang eines der beiden geht die Einrichtung zum Block 1022 weiter, wo sie das zugehörige DEF-Bit löscht. Dies ermöglicht (enable) die Verwendung der eindeutigen Funktionsadresse und sperrt (disable) die Verwendung der zugehörigen voreingestellten Adresse.
[0066] Wenn die Einrichtung in Block 1020 weder eine ACK-Quittung noch einen SETUP-Token empfängt, kehrt sie
zum Block 1016 zurück, wo sie auf den Empfang eines neuen EIN-Tokens wartet, um die Statusstufe neu zu starten.
Wenn die EIN-Transaktion erneut versucht wird (d. h. wenn kein ACK empfangen wurde), wird das DEF-Bit nicht gelöscht.
Wenn also die Transaktion erneut mit der voreingestellten Adresse versucht wird, wird sie noch immer von dieser
Einrichtung empfangen.
[0067] Durch Löschen des DEF-Bits erst nach dem Empfang einer ACK-Quittung eines EHM-Pakets oder eines SETUP-Tokens
vermeidet die Einrichtung Probleme im Zusammenhang mit dem Verlust oder der Beschädigung eines
DATAl-Pakets oder dem Verlust oder der Beschädigung einer ACK-Quittung.
[0068] Insbesondere wenn das DATAl-Paket verlorengeht oder beschädigt ist, sendet der Host kein ACK. Der Host
wird daher weiter versuchen, den Initialisierungsprozeß zu beenden, indem er die Einrichtung bei der voreingestellten
Adresse adressiert. Da die Einrichtung das Voreinstellungsbit nicht gelöscht hat, wird sie weiter auf die voreingestellte
Adresse reagieren. Dadurch kann der Host erneut versuchen, eine Startstufe zu starten, indem er wiederholt einen EHM-Token
an die voreingestellte Adresse sendet.
[0069] Wenn ACK von dem Host verlorengeht oder beschädigt wird, reagiert die Einrichtung noch nicht auf ihre eindeutige
Funktionsadresse. Da der Host jedoch keine Angaben darüber hat, daß ACK von der Einrichtung nicht empfangen
wurde, muß er annehmen, daß die Transaktion ordnungsgemäß beendet wurde, und daß die Einrichtung nun auf ihre
Funktionsadresse antwortet. Der Host wird daher mit der Einrichtung des USB-Netzes fortfahren. Beim Senden eines
neuen SETUP-Tokens an eine zweite Einrichtung in dem Netz wird die erste Einrichtung das Voreinstellungsadreßbit löschen
und das Funktionsadreßbit setzen. Die erste Einrichtung wird nun nur noch auf die Funktionsadresse antworten.
[0070] Obwohl die hier beschriebenen Ausführungsformen sich auf bestimmte Gerätestrukturen beziehen, kann die
vorliegende Erfindung bei einer Vielzahl von anderen Einrichtungen und Geräten angewendet werden, ohne den Bereich
der Erfindung zu verlassen. Die Erfindung wurde in Bezug auf eine Ausführungsform beschrieben, die einen Registerraum
für ein Voreinstellungsadreßbit, ein Funktionsadreß-Enablebit und ein Funktionsadressenregister hat, alternative,
äquivalente Ausführungsformen können jedoch andere Register- und Speicherkonfigurationen verwenden, um die Voreinstellungsadresse
und die eindeutige Funktionsadresse zu enabeln oder zu disabeln. Der Fachmann wird aus den hier
offenbarten Ausführungsformen sicher verstehen, daß viele Modifikationen möglich sind, ohne die Lehre der Erfindung
zu verlassen. All diese Modifikationen sollen vom Bereich der folgenden Ansprüche umfaßt sein.
[0071] Die in der vorstehenden Beschreibung, den Ansprüchen und der Zeichnung offenbarten Merkmale können sowohl
einzeln als auch in beliebiger Kombination für die Verwirklichung der Erfindung in ihren verschiedenen Ausführungsformen
von Bedeutung sein.
[0072] Die Architektur der USB-Knotenschnittstelle ist in dem folgenden Anhang, der Teil der Beschreibung ist, näher
spezifiziert.
Vorläufige Version
Spezifikation für USB-Knotenschnittstellenarchitektur
Überarbeitete Version 0.6
Kapitel 1
Einführung
[0073] Das USB-Schnittstellenmodul (UNIM) bildet eine Schnittstelle zu dem universellen seriellen Bus für einen
Hochgeschwindigkeitsknoten auf einem USB-Bus. Das Modul entspricht der Version 1.0 der USB-Spezifikation.
[0074] Das Modul umfaßt einen integrierten USB-Transceiver, eine vollständige serielle Schnittstelleneinrichtung und den Endpunkt-Controller. Der Endpunkt-Controller arbeitet als Master und Slave auf dem Kernbus (Core Bus) und unterstützt alle USB-Endpunktklassen: Steuerung, große Mengen (Bulk), Isochron und Unterbrechung (Interrupt). Der SIavezugang wird dazu verwendet, auf interne Steuerregister zuzugreifen, und der Masterzugang wird dazu verwendet, Endpunktdaten zu und von einem RAM zu übertragen.
[0074] Das Modul umfaßt einen integrierten USB-Transceiver, eine vollständige serielle Schnittstelleneinrichtung und den Endpunkt-Controller. Der Endpunkt-Controller arbeitet als Master und Slave auf dem Kernbus (Core Bus) und unterstützt alle USB-Endpunktklassen: Steuerung, große Mengen (Bulk), Isochron und Unterbrechung (Interrupt). Der SIavezugang wird dazu verwendet, auf interne Steuerregister zuzugreifen, und der Masterzugang wird dazu verwendet, Endpunktdaten zu und von einem RAM zu übertragen.
DE 199 OO 290 A 1
Kernbus
USB Knoten I/F
Figur 1-1. Anwendungsbeispiel
DE 199 OO 290 A
1.1 Externe Schnittstelle Tabelle 1-1 Modulpins, die mit externen Pins verbunden sind
| Symbol | Pin | I/O | Funktion |
| C48 | I | 48 MHz Eingangstakt | |
| D+/- | I/O | USB-Daten Plus/Minus - wird verwendet, wenn der in terne Transceiver eingesetzt wird. Ein externer 1,5 +/- 5% kOhm Widerstand, der mit einer Spannungsquelle zwi schen 3,0 V und 3,6 V bezogen auf die lokale Masse ver bunden ist, wird an D+ benötigt, um anzuzeigen, daß es sich um einen Hochgeschwindigkeitsknoten handelt. |
|
| USBC | O | IKHz USB-Bustakt | |
| RC | I | Bezugstakt - Bezugseingangssignal, das mit dem 1 KHz USB-Takt verglichen wird. Das Bezugszählregister wird mit jeder steigenden Flanke dieses Takts erhöht. Der rela tive Zählwert daraus im Verhältnis zu USB-Rahmennum mer kann verwendet werden, um Pakete zu dem USB-Host zu senden, um den 1 KHz USB-Takt schneller oder lang samer zu machen. |
|
| SUSPND | O | Die USB-Schnittstelle ist momentan unterbrochen und in einem Niederleistungs-Versorgungsmodus. Verbunden mit einem externen USB-Transceiver, falls vorhanden. |
|
| OE | O | Ausgang enable. Aktiv niedrig. Bewirkt, daß der Sender Daten auf den Bus sendet. Verbunden mit einem externen USB-Transceiver, falls vorhanden. |
|
| VPO/VMO | O | Differentialsenderdaten an Differentialtransceiver ausge ben. Mit einem externen USB-Transceiver verbunden, falls vorhanden. |
|
| RCV | I | Daten empfangen. Ausgang des Differentialempfängers. Mit einem externen USB-Transceiver verbunden, falls vor handen. |
|
| VP/VM | I | Unsymmetrischer Datenempfang - Verwendung zum Er fassen unsymmetrischer Null und Fehlerbedingungen. Ver bunden mit einem externen USB-Transceiver, falls vor handen. |
|
| SPEED | I | Geschwindigkeit (SPEED) ist immer hoch (HIGH SPEED)und bei dem momentanen Design auf 1 eingestellt. Verbunden mit einem externen USB-Transceiver, falls vorhanden. Ein Pin für SPEED nur dann zuweisen, wenn |
DE 199 OO 290 A 1
| I | eine Option zum Arbeiten sowohl im Niedergeschwindig- keitsmodus als auch im Hochgeschwindigkeitsmodus be halten wird. |
|
| CoreBus | I | Verbinden mit Kernbus |
| USBJNI | Interrupt-Signal vom USB-Modus an den Inter ruptcontroller '"""" |
|
Kembus
1.2 Interne Architektur auf Chipebene
| j | "Ύ" | ι | f | ZS USB Xcvr |
|
| USB Knotenschnittstelle | Endpoint Controller |
||||
| I | |||||
| USB SIE |
extern
xcvr
25
30
35
USB
1.2.1 Endpunktcontroller
[0075] Der Endpunktcontroller verarbeitet auf den Endpunkt bezogene Operationen einschließlich des Endpunktkanalzustands,
der Pufferung und Übertragungen. Bis zu 16 Endpunktkanäle können zu jeder gegebenen Zeit unterstützt werden.
Jeder Endpunktkanal kann in dem Adreßraum des Kernbusses zwei Puffern zugewiesen werden, die für Empfangsund
Sendeoperationen verwendet werden. Wenn einem Endpunktkanal keine Puffer zugewiesen sind, ist der Controller
verantwortlich, die richtigen Handshakes (Quittungen) für Eingangs- und Ausgangstoken vorzusehen.
1.2.2 Serielle USB-Schnittstelleneinrichtung
[0076] Die serielle USB-Schnittstelleneinrichtung umfaßt USB PHY und USB MAC. USB PHY ist verantwortlich für
die NRZI-Codierung, die Erfassung des Anfangs und Endes von Paketen, Bitstuffing und Unstuffing und für die Parallel-Seriell-
und Seriell-Parallel-Wandlung. USB MAC ist verantwortlich für das Erkennen und Erzeugen geeigneter Paketformate
und für das Verarbeiten der Handshakesequenzen zusammen mit dem Endpunktkanal-Controller. USB MAC ist
auch verantwortlich zum Erzeugen und Überprüfen der geeigneten CRCs in den Paketformaten. Es gibt eine eng gekoppelte
Schnittstelle zwischen dem USB MAC und dem Endpunkt-Controller.
1.2.3 USB-Transceiver
[0077] Der USB-Transceiver sieht die analoge Verbindbarkeit zu dem USB-Bus gemäß Kapitel 7 der Universal Serial
Bus Specification Version 1.0 vor. Dies umfaßt die notwendige Signalformung und Erfassungsfunktionen. Das Modul
unterstützt den Hochgeschwindigkeitsbetrieb. Der Betrieb mit niedriger Geschwindigkeit ist für diese Anwendung kein
Erfordernis. Das Modul unterstützt auch einen Niederleistungsbetrieb, bei dem der Transceiver sehr wenig Leistung benötigt
(die ganze USB-Einrichtung erhält nur 100 μΑ) und dennoch der Walk-up-Übergang auf den Bus erfassen kann.
[0078] Das Modul unterstützt auch eine Verbindung zu einem externen Stand-Alone USB-Transceiver, wie dem PDI-USBPIl
von Phillips.
40
45
50
55
60
65
DE 199 OO 290 A 1
1.2.4 Zukünftige Modulerweiterungen
[0079] Da die Architektur des Endpunktcontrollers modular ist, kann die Anzahl der unterstützten Endpunktkanäle
verändert werden, indem die Anzahl der gespeicherten Teilendpunktkanal-Zustandsvektoren verändert wird. Zusätzlich
kann die Abbildung von
a) bis zu vier Funktionsadressen
b) des Tokentyps
c) der Endpunktnummer
auf die Endpunktkanalnummer über die Kanalabbildungsfunktion programmiert werden.
[0080] Ein USB HUB-Schnittstellenmodul kann hinzugefügt werden, um eine HUB-Funktion mit bis zu vier zusätzlichen
stromabwärtigen Ports zu ermöglichen. Dieses Modul wird zwischen dem USB SIE-Modul und dem USB-Transceivermodul
eingefügt. Dadurch kann die Einrichtung die Verbindungsmöglichkeit zu einem oder mehreren zusätzlichen
Peripheriegeräten schaffen.
[0081] Die Architektur ermöglicht eine Realisierung eines Stand-Alone-USB-Knotencontrollers mit internem oder externem
RAM. Zusätzlich könnte die Architektur für Peripheriegeräte mit unterschiedlichem Leistungsniveau und für einen
16-Bit-Bus oder den Peripheriebus mit einem privaten Speicher verwendet werden. Zusätzlich könnten mehrere solche
Zellen in einer Ausführung eingerichtet werden, um zusammengesetzte Multifunktionsgeräte zu unterstützen.
[0082] Das Design ist für Niedergeschwindigkeits-Knoten nicht optimiert, es könnte jedoch modifiziert werden, um
auch mit Niedergeschwindigkeits-Geräten zu arbeiten.
Kapitel 2 UNIM Modul
2.1 USB-Knotenschnittstelle
2.1 USB-Knotenschnittstelle
[0083] Das USB-Knotenschnittstellenmodul (UNIM) bildet die Schnittstelle zu einem universellen seriellen Bus
(USB). Das Modul umfaßt einen integrierten USB-Transceiver, eine vollständige serielle Schnittstelleneinrichtung (SIE;
Serial Interface Engine) und den Endpunktcontroller. Der Endpunktcontroller arbeitet als Master und Slave auf dem
Kernbus und unterstützt alle USB-Entpunktklassen: Steuerung, Bulk, Isochron und Interrupt. Der Slavezugang wird
dazu verwendet, auf interne Steuerregister zuzugreifen, und der Masterzugang wird dazu verwendet, Daten zwischen
Endpunkten und dem RAM zu übertragen.
2.1.1 Merkmale
35
35
- Kompatibilität mit der USB 1.0 Spezifikation
- Unterstützt eine USB-Funktion und bis zu 16 Endpunktkanäle
- Unterstützt alle Klassen der USB-Endpunkte
- Unterstützt Doppelpuffer auf jedem Endpunktkanal
- Unterstützt Betrieb als eine Bus-getriebene Einrichtung
- Optimiert für Hochgeschwindigkeitsknotenbetrieb
- USB-kompatible serielle Schnittstelleneinrichtung (SIE)
- USB-kompatible Hochgeschwindigkeitstransceiver
- Unterstützt Niederleistungs-Aussetzbetrieb
- Unterstützt Aufwecken von Normandy aufgrund USB-Wiederaufnahme
- Unterstüzt Auslösung von Wiederaufnahme durch Fern-Weckruf
- Unterstützt Synchronisierung des USB-Takts zu externem Bezugstakt.
2.1.2 Funktionsbeschreibung
[0084] Das USB-Knotenschnittstellenmodul sieht eine Schnittstelle zum USB für verschiedene Anwendungen vor.
Der Endpunkt-Controller sieht eine vielseitige Anordnung zum Steuern mehrere USB-Endpunkte vor. Die USB-Knotenschnittstelle
umfaßt eine voll anpassungsfähige serielle Schnittstelleneinrichtung (SIE) und einen intgrierten Transceiver.
Zusätzlich unterstützt sie einen externen Transceiver.
[0085] Fig. 2-1 zeigt die obere Ebene dieses Moduls.
DE 199 OO 290 A 1
Kernbus
USB Knotenschnittstellenmodul
Endpunkt-Controller
USB SIE
USBXcvr
extern xcvr USB
20
2.1.3 Transceiver
[0086] Der interne USB-Transceiver umfaßt drei Hauptfunktionsblöcke: Den Differentialempfänger, den unsymmetrischen
Empfänger und den Sender. Zusätzlich sind eine Bezugsspannung für den unsymmetrischen Empfänger und eine
Stromquelle für den Sender vorgesehen.
[0087] Normandy unterstützt nur einen Hochgeschwindigkeitstransceiver. Die Leistungserfordernisse dieses Transceivers
sind im Kapitel 7 der Universal Serial Bus Specification Version 1.0 angegeben.
[0088] Um die Signalverschiebung zu minimieren, werden Differentialausgangsschwingungen des Senders gut ausgeglichen.
Für den Treiber wird eine Anstiegsgeschwindigkeitsfeuerung verwendet, um abgestrahltes Rauschen und Übersprechen
zu minimieren. Die Treiber unterstützen den TRI-STATE-Betrieb, um einen bidirektionalen Half-Duplex-Betrieb
des Transceivers zu ermöglichen.
[0089] Der Differentialempfänger muß im gesamten Gleichtaktbereich arbeiten, und er muß eine Verzögerung aufweisen,
die sicher größer als die des unsymmetrischen Empfängers ist, um Spannungsspitzen in der seriellen Schnittstelleneinrichtung
(SIE) nach unsymmetrischen Nullen (Single-Ended Zeros) zu vermeiden.
[0090] Unsymmetrische Empfänger sind auf jeder der beiden Datenleitungen vorhanden. Diese sind zusätzlich zu den
Differentialempfängern erforderlich, um eine Absolutspannung mit einer Schaltschwelle zwischen 0,8 V und 2,0 V
(TTL-Eingänge) zu erfassen. Zur Erhöhung der Vcc-Unterdrückung ohne Spannungsspitzen wird der unsymmetrische
Schalt-Bezugswert mit einer Bezugsspannung eingestellt. Ein externer 1,5 ± 5% kOhm Widerstand, der mit einer Spannungsquelle
zwischen 3,0 V und 3,6 V bezogen auf lokale Masse verbunden ist, ist an D+ erforderlich, um anzuzeigen,
daß es sich um einen Hochgeschwindigkeitsknoten handelt.
Verwendung eines externen Transceivers
[0091] Es kann auch ein externer Transceiver verwendet werden. Um den Betrieb für einen externen Transceiver zu
konfigurieren, muß das externe Transceiver-Enable-Bit (NCR.ETE) gesetzt werden. Wenn es gesetzt ist, gibt es an, daß
die Ausgänge ihre "1 "-Zustände verlassen sollten, und alle Eingänge sollten gewählt sein.
2.1.4 Serielle Schnittstelleneinrichtung (SIE; serial interface engine)
[0092] Die serielle Schnittstelleneinrichtung des USB besteht aus einer PHY und einer MAC-Ebene. Die PHY-Ebene
umfaßt die digitale Taktwiedergewinnungsschaltung, ein digitales Spannungsspitzenfilter, eine Paket-Ende-Erfassungsschaltung
und eine bit-stuffing und de-stuffing Logik. Die MAC-Ebene umfaßt die Paketformatierung, CRC-Erzeugung
und -Überprüfung, Endpunktadressenerfassung, und sie sieht die notwendige Steuerung vor, um NAK, ACK und STALL
Antworten zu liefern, die von dem Endpunktcontroller für den spezifizierten Endpunktkanal ermittelt werden. Die SIE ist
auch verantwortlich für die Erfassung und Mitteilung von Ereignissen bei Erfassung von USB-spezifischen Ereignissen,
wie Reset, Warten und Wiederaufnehmen. Die Ausgangssignale des Senders des UNTM-Moduls, die zu dem Transceiver
gehen, sind gut abgeglichen (unter 1 ns), um Verschiebungen auf den USB-Signalen zu minimieren.
2.1.5 Endpunktkanal-Controller (EPC)
[0093] Der Endpunktkanal-Controller (EPC) bildet die Schnittstelle für USB-Funktionsendpunkte vor. Ein Endpunkt
ist die letztendliche Quelle oder der Ursprung der Daten. Ein Endpunktkanal sorgt für die Bewegung der Daten zwischen
dem USB und dem Speicher und vervollständigt den Weg zwischen dem USB-Host und dem Funktionsendpunkt. Bis zu
16 solche Endpunktkanäle werden zu jeder gegebenen Zeit unterstützt, jeder mit derselben Funktionsadresse.
[0094] Eine USB-Funktion ist eine USB-Einrichtung, die Informationen auf dem Bus senden und empfangen kann.
[0094] Eine USB-Funktion ist eine USB-Einrichtung, die Informationen auf dem Bus senden und empfangen kann.
25
30
35
40
45
50
55
60
65
20
30
35
40
45
50
55
Eine Funktion kann eine oder mehrere Konfigurationen haben, von denen jede die Schnittstellen definiert, welche die
Einrichtung umfaßt. Jede Schnittstelle weist ihrerseits einen oder mehrere Endpunkte auf.
[0095] Jeder Endpunkt ist eine adressierbare Einheit auf dem USB und ist erforderlich, um auf IN- und OUT-Token
von dem USB-Host (üblicherweise ein PC) zu reagieren. IN-Token geben an, daß der Host angefordert hat, von einem
Endpunkt Informationen zu empfangen, und OUT-Token geben an, daß der Host dabei ist, Information zu einem Endpunkt
zu senden.
[0096] Bei Erfassung eines IN-Tokens, der an einen Endpunkt gerichtet ist, ist dieser Endpunkt dafür verantwortlich,
mit einem Datenpaket zu antworten. Wenn der Endpunkt momentan unterbrochen ist, wird ein STALL-Handshakepaket
gesendet. Wenn der Endpunkt enabelt ist, jedoch keine Daten vorliegen, wird ein NAK (negative Bestätigung) zum
Handshakepaket gesendet.
[0097] Ähnlich ist bei der Erfassung eines OUT-Tokens, der an einen Endpunkt gerichtet ist, der Endpunkt dafür verantwortlich,
ein Datenpaket zu empfangen, das von dem Host gesendet wird, und in einem Puffer zu speichern. Wenn der
Endpunktkanal momentan blockiert ist, wird am Ende der Datenübertragung ein STALL-Handshakepaket gesendet.
Wenn der Endpunktkanal momentan disabled ist, wird am Ende der Datenübertragung kein Handshakepaket gesendet.
Wenn der Endpunktkanal enabled ist, jedoch kein Puffer vorhanden ist, in dem die Daten gespeichert werden können,
wird ein NAK- (negative Bestätigung) Handshakepaket gesendet.
[0098] Ein disabelter Endpunkt oder Endpunkte, die momentan nicht auf einen Endpunktkanal abgebildet sind, reagieren
nicht auf IN-, OUT- oder SETUP-Token.
[0099] Der EPC bewahrt getrennte Zustandsinformation für jeden Endpunktkanal auf. Die Zustandsinformation, die
für unmittelbare Entscheidungen erforderlich ist (z. B. für das Antworten mit einer NAK- oder STALL-Quittung) wird
zu allen Zeiten für jeden Endpunkt in dem Modul bereitgehalten. Andere Information, die für den Endpunktbetrieb notwendig
ist, wird in dem Endpunktfeld (Array) aufbewahrt. Da zu einer gegebenen Zeit nur ein Endpunktkanal aktiv ist,
wird die Endpunktkanal-Ablaufsteuereinheit (state machine) von allen Endpunktkanälen gemeinsam benutzt.
[0100] Bei ΓΝ-Token ist der EPC für die Übertragung der Daten von dem definierten Puffer zum Host verantwortlich. Bei OUT-Token ist der EPC für die Übertragung von Daten von dem Host zu dem definierten Puffer verantwortlich. Um eine größere Flexibilität zu ermöglichen, wenn Puffer einem Endpunktkanal zugewiesen werden, ist für jeden Endpunktkanal ein Doppelpufferverfahren zulässig. Dadurch dann der EPC eine schnelle Antwort auf alle Transaktionen an dieses Modul liefern, ohne auf NAKs zurückzugreifen.
[0100] Bei ΓΝ-Token ist der EPC für die Übertragung der Daten von dem definierten Puffer zum Host verantwortlich. Bei OUT-Token ist der EPC für die Übertragung von Daten von dem Host zu dem definierten Puffer verantwortlich. Um eine größere Flexibilität zu ermöglichen, wenn Puffer einem Endpunktkanal zugewiesen werden, ist für jeden Endpunktkanal ein Doppelpufferverfahren zulässig. Dadurch dann der EPC eine schnelle Antwort auf alle Transaktionen an dieses Modul liefern, ohne auf NAKs zurückzugreifen.
Abbildung auf Endpunktkanäle
[0101] Der EPC sieht die Abbildung der Funktionsadresse, Tokentyp (IN, OUT, SETUP) und Endpunktnummer auf einen
der Endpunktkanäle vor. Zwei feste Abbildungen auf Endpunktkanäle werden unterstützt und von den Einstellungen
des Endpunktkanal-Abbildungsauswahl-Bits des Einrichtungs-Konfigurationsregisters (DCR.EPMS) gesteuert.
[0102] Wenn EPMS = 0:
[0102] Wenn EPMS = 0:
| Funktionsadresse | TokentvD | Endpunkt | Endpunkt-Kanalnummer |
| FAO | rN.OTJT.SFTUP | 0 | 0 |
| FAO | IN.OUT.SETUP | 1 | 1 |
| FAO | IN.OUT.SETUP | 2 | 2 |
| FAO | IN.OUT.SETUP | 3 | 3 |
| FAO | IN.OUT.SETUP | 4 | 4 |
| FAO | IN.OUT.SETUP | 5 | 5 |
| FAO | IN.OUT.SETUP | 6 | 6 |
| FAO | IN.OUT.SETUP | 7 | 7 |
| FAO | IN.OUT.SETUP | 8 | 8 |
| FAO | IN.OUT.SETUP | 9 | 9 |
| FAO | IN.OUT.SETUP | 10 | 10 |
| FAO | IN.OUT.SETUP | 11 | 11 |
| FAO | IN. OUT. SETUP | 12 | 12 |
| FAO | IN. OUT. SETUP | 13 | 13 |
| FAO | IN. OUT. SETUP | 14 | 14 |
| FAO | IN. OUT. SETUP | 15 | 15 |
| Nicht anwendbar | SOF | Nicht anw. | SOF-Kanal |
| Nicht FAO | beliebig | Nicht anw. | keine |
[0103] Wenn EPMS = I:
65
DE 199 OO 290 A 1
| Funktinnsadresse | TTokentvn | Enriniinkt | Endnnnkt-Kanalnummer |
| FAO | TN OTTTSFTTiP | 0 | 0: |
| FAO | TN.OTTT.SFTTTP | R | 1 |
| FAO | OTTT | 1 | 2 |
| FAO | TN | 1 | |
| FAO | OTTT | 2 | 4 |
| FAO | TN | 2 | 5 |
| FAO | OTTT | % | 6 |
| FAO | TN | 3 | 7 |
| FAO | OTJT | 4 | |
| FAO | TN | 4 | 9 |
| FAO | OTTT | 5 | 10 |
| FAO | TN | S | 11 |
| FAO | OTTT | fi | 12 |
| FAO | TN | 6 | |
| FAO | OTTT | 7 | 14 |
| FAO | TN | 7 | 15 |
| FAO | SETUP | 1 -7 | Keine |
| FAO | Beliebig | 9-15 | Keine |
| Nicht anwendbar | SOF | Nicht anw.- | SOF-Kanai |
| Nicht FAO | Beiiehie | Nicht anw.- | Keine |
Endpunktsteuerung
[0104] Alle von den Endpunktkanälen während der Datenübertragungen verwendete Information wird in dem Endpunktfeld
aufbewahrt, das im RAM liegt. Dieses Feld ist durch den Endpunktkanal auf der Basis indexiert, die in dem
Endpunktfeld-Basisadressen-Register (EABA) definiert ist. Dieses Feld enthält zwei Doppelworte pro Endpunkt. Jedes
Doppelwort ist ein Steuerwort, das Steuer- und Statusinformation für den Endpunktkanal enthält, wie einen Zeiger zum
Anfang des Puffers, die Größe des Puffers, den Zustand des Puffers und, andere relevante Parameter.
[0105] Der Pufferzustand definiert, ob der Puffer für Eingangs- oder Ausgangstransaktionen verwendet werden soll und ob auf ihn momentan zugegriffen wird oder ob er die gewünschte Operation beendet hat.
[0105] Der Pufferzustand definiert, ob der Puffer für Eingangs- oder Ausgangstransaktionen verwendet werden soll und ob auf ihn momentan zugegriffen wird oder ob er die gewünschte Operation beendet hat.
[0106] Wenn eine IN- oder OUT-Übertragung von einem Endpunktkanal angefördert wird und ein Puffer vorhanden
ist, wird das geeignete Steuerwort gelesen. Dieses Steuerwort teilt dem Endpunkt-Controller mit, wie die Transaktion zu
beenden ist. Am Ende einer Transaktion wird in das Steuerwort der Status geschrieben, der von der Software als Anzeige
zum Freigeben dieses Puffers verwendet wird, und ein neues wird vorgesehen.
Endpunkt-Controller-Blockdiagramm
[0107] Der Endpunkt-Controller besteht aus mehreren Funktionsblöcken. Die Endpunkt-Ablaufsteuereinrichtung
(state machine) sieht die zentralisierte Steuerung für die Dienstblöcke des Datenausricht-Mux (DALM; data alignment
max), Adressengenerators (ADGen), Teilendpunktkanal-Speichers (PEP-Speichers) vor. Die Gerätefunktion, wie die
Adreßüberprüfung und -erzeugung werden in dem Gerätefunktionsblock realisiert.
[0108] Alle Ablaufsteuereinrichtungen laufen mit dem USB-Takt von 12 MHz. Alle Datenübertragungen arbeiten mit
dem Kernbus-Takt. Teile des ADGen-Blocks und der gesamte DALM-Block arbeiten mit dem Kernbus-Takt. Alle anderen
Blöcke des Endpunkt-Controllers verwenden ausschließlich den lokalen Takt von 12 MHz. Datenbytes zwischen den
Bereichen werden bei der MAC-Benutzerschnittstelle mit einem asynchronen Handshake für jedes übertragene Byte
synchronisiert.
40
45
50
55
60
65
DE 199 OO 290 A 1
ίο SE
| Geräte funktionen |
ns Typ | Curr EP r |
aktuell | EPSM | Daten | AD Gen |
■^ :—► | Kernt | |
| :er- | Endpunkt | nächst. | (A | ||||||
| zustand | DALM | ||||||||
| :Ben ittste |
|||||||||
| MAC sehn |
|||||||||
Figur 2-2. Vereinfachtes Blockdiagramm des Endpunkt-Controllers
Speicherzugriffsleistung
[0109] Der Endpunktcontroller minimiert die Anzahl der erforderlichen Speicherzugriffe. Nur bei Empfang eines Tokens
ist ein Speicherzugriff auf das Endpunktfeld notwendig. Ein einzelner Doppelwort-Zugriff, zusammen mit dem systemeigenen
Endpunktzustand, ist ausreichend, damit der Endpunktkanal die Hostanfrage verarbeiten kann. Dieser Zugriffliest
die Positions- und Größeninformation für die Datenübertragung. Die Datenübertragung erfolgt in aufeinanderfolgenden
Doppelwort-Lese- oder Schreib-Operationen.
[0110] Das Modul hat die höchste Priorität auf dem Kernbus für Übertragungen, und die Übertragungsrate ist deutlich
höher als die des USB. Es besteht somit eine minimale Notwendigkeit der Datenpufferung innerhalb des Endpunkt-Controllers,
abgesehen von einem extra Wort, um nachfolgende Zugriffe mit dem aktuellen Zugriff überlappen zu lassen. Ein
Bytezähler überwacht die Anzahl der Bytes, die übertragen werden. Der letzte Zugriff einer Übertragung kann ein teilweises
Lesen oder Schreiben des Speichers erfordern. Das teilweise Schreiben des letzten Zugriffs wird von dem letzten
Bytezählwert bestimmt. Am Ende einer Übertragung wird der Status für die Übertragung in das aktuelle Steuerwort geschrieben,
und das andere Steuerwort für diesen Endpunkt wird gelesen, um zu überprüfen, ob ein weiterer Puffer vorbereitet
wurde. Nach den Steuerwort-Operationen wird der Zustand des Endpunktkanals akualisiert.
Synchronisationssupport
[Olli] Durch eine Kombination aus Hardware und Software unterstützt das UNIM alle drei USB-definierten Synchronisationsklassen,
asynchron, synchron und adaptiv. Der Endpunkt-Controller sieht eine Hardwareunterstützung für die
Überwachung des USB-Bustaktes von 1 kHz im Verhältnis zu einem externen Bezugstakt, von z. B. 8 kHz, und zum
Überwachen der Qualität und Konsistenz des USB-Bustaktes von 1 kHz vor.
[0112] Steigende Flanken eines externen Bezugstaktes werden in dem Bezugs-Zählregister gezählt. Es kann dazu verwendet
werden, die USB-Blocknummer zu vergleichen. Die Frequenzdifferenz zwischen dem Bezugstakt und dem
USB-Takt kann dem Host in Paketen signalisiert werden, so daß der Host die USB-Bustaktfrequenz einstellen kann; somit
kann der USB-Takt mit dem Bezugstakt synchronisiert werden.
[0113] Der Endpunkt-Controller hält auch einen Status aufrecht, um anzuzeigen, wenn er zu dem USB-Bustakt von
1 kHz synchronisiert ist und wenn aufgrund eines fehlenden oder falschen Block-Anfang-Pakets eine Diskontinuität in
dem USB-Bustakt auftritt. Er wird von der Software dazu verwendet, die Warteschlange der isochronen Pakete einzustellen.
Die aktuelle Blocknummer wird von dem Endpunkt-Controller dazu verwendet, zu ermitteln, welcher isochrone
Puffer als nächstes gesendet werden soll.
Betrieb aussetzen/wieder aufnehmen
Aussetzbetrieb
Aussetzbetrieb
[0114] Es wird erwartet, daß eine USB-Einrichtung abhängig von dem Aussetzereignis, das auftritt, nachdem 3 ms verstrichen
sind, ohne daß irgendwelche Busaktivität erfaßt wurde, in den Aussetzzustand geht. Das UNIM erfaßt dieses Er-
DE 199 OO 290 A 1
eignis und zeigt es dem CR32A an, indem das ISR.SD Bit gesetzt und ein Interrupt gesendet wird, wenn es enabelt ist.
Das CR32A sollte abhängig davon das UNIM in den Aussetzzustand versetzen und nach 5 ms ohne Erfassung irgendwelcher
Aktivität in den Haltemodus umschalten (ISR.SD5).
[0115] Im Aussetzzustand geht der Transceiver in einen speziellen Niederleistungsmodus, und die Takte können unterbrochen
werden. Der gespeicherte Zustand und das Kernbus-RAM bleiben statisch, so daß bei der Wiederaufnahme
keine weiteren Operationen notwendig sind.
[0116] Normandy kann aufgrund eines für den CR32A lokalen Ereignisses den Betrieb nach dem Aussetzzustand wieder
aufnehmen, wodurch seinerseits der USB-Bus über eine Fern-Wiederaufnahme oder bei Erfassung eines Fern-Befehls
auf dem USB-Bus, der den CR32A über die MIWU unterbricht, geweckt werden kann. [0117] Man beachte, daß eine Einrichtung im Aussetzbetrieb maximal 500 μΑ von dem Bus ziehen darf, siehe "GE-RÄTESPEZrFIKATIONEN"
auf Seite 3-55 für Einzelheiten des Stromverbrauchs von Normandy.
Fern wiederaufnähme
[0118] Wenn der Host Fernweckrufe von diesem Knoten enabelt hat, sendet Normandy einen solchen abhängig von einem
lokalen Ereignis, wie einem Interrupt.
[0119] Wenn die Firmware das Ereignis erfaßt, nimmt sie die Prozessoraktivität im aktiven Modus wieder auf. Sie
weckt dann das UNIM aus dem Niederleistungs-Aussetzzustand und löst eine Fernwiederaufnahme auf dem USB unter
Verwendung des FSR-Registers aus. Die Knotenfirmware muß sicherstellen, daß wenigstens 5 ms Leerlauf auf dem USB
stattfanden. Im Wiederaufnahmezustand wird auf dem USB eine Konstante "K" angezeigt. Diese sollte wenigstens 1 ms
andauern, wobei danach der USB-Host damit fortfährt, das Wiederaufnahmesignal während wenigstens zusätzlicher
20 ms zu senden, und dann die Wiederaufnahmeoperation abschließt, indem er die Paketende-Sequenz ausgibt. Sollte innerhalb
von 100 ms kein Paketende-Signal vom Host empfangen werden, sollte die Fernwiederaufnahme erneut durch
Software gestartet werden.
USB-Wiederaufnahmeoperation
[0120] Bei Erfassung eines Wiederaufnahme- oder Reset-Signals während des Aussetzzustands ist das UNIM-Modul
dafür verantwortlich, Normandy aufzuwecken. Dies erfolgt, indem das UNIM ein Signal (ohne Beitrag irgendwelcher
Takte) an die MIWU sendet, das die Erfassung einer Wiederaufnahme auf dem USB anzeigt und den Normandy-Weckruf
anfordert, um den CR32A zu aktivieren und zu unterbrechen. Dabei werden die Takte für das USB-Modul erneut enabelt,
und der Rest des Chips wird aufgeweckt.
[0121] Die USB Spezifikation erfordert, daß eine Einrichtung innerhalb von 10 ms auf USB-Token antworten kann.
[0121] Die USB Spezifikation erfordert, daß eine Einrichtung innerhalb von 10 ms auf USB-Token antworten kann.
Einschalt-Resets
[0122] Es gibt zwei Fälle, in denen dieser Knoten aktiviert werden kann; wenn der Knoten in einen bereits aktivierten
USB-Verteilerport eingesteckt wird, und wenn bei dem Verteilerknoten die Energie eingeschaltet wird. Um eine Interoperabilität
zwischen den Bus-Geräten zu erreichen, erfordert die USB-Spezifikation, daß der Knoten innerhalb von
100 ms auf einen USB-Reset reagiert können muß, nachdem die Energie eingeschaltet und beim Verteilerport stabil ist.
Ähnlich muß ein Knoten, der in Betrieb eingesteckt wird, auf ein USB-Reset innerhalb von 100 ms reagieren, nachdem
seine Verbindung von einem Verteilerport erfaßt wurde. Der USB-Reset wird während wenigstens 10 ms beibehalten.
Nachdem der USB-Reset gelöst wurde, liefert der Verteiler 100 mA Busleistung an das Gerät. Erst nachdem das Gerät
konfiguriert wurde, darf es die in der USB-Standardkonfiguration beschriebene Energiemenge aufnehmen (bis zu
500 mA). Das UNIM führt eine USB-definierte, Bus-getriebene Hochleistungs-Funktion aus.
2.1.6 UNIM Programmiermodel
[0123] Das USB-Model enthält Register, die dazu verwendet werden, den Betrieb der USB-Einrichtung und ein Endpunktfeld
im Speicher zu steuern und zu überwachen, das zum Steuern der Endpunktparameter verwendet wird, die für
eine bestimmte Endpunktübertragung spezifisch sind. Die Beziehung zwischen den verschiedenen Registern und Speicherparametern
ist unten angegeben.
DE 199 OO 290 A 1
OCR FSR TCR EAR ECR ISR IMR EER EMR FNR BPA RCR TIR
UIR UDR EABAR BPA' " BPB' "
Speicher
Endpunktkanalfeld
| ι ► EPO |
CWO | - - H |
| EP1 | CWI | |
| EP2 | CWO | |
| CWI | ||
| CWO | ||
| CWI | ||
- Zustand
- Parameter
- Adresse .
-Größe'
-Größe'
l/0-Puffer
EP15
Endpunktkanalfeld
[0124] Das Endpuntkanalfeld besteht aus 32 Steuerworten, 2 für jeden Endpunktkanal. Das Endpunktkanalfeld liegt im
Speicher bei einer Adresse, auf die EABAR weist. Diese Adresse muß eine ausgerichtete 128-Byte Adresse sein (d. h.
7 LSBs der Adresse sind 0). Das Endpunktkanalfeld erhält über die 4-Bit Endkanalnummer einen Index, und das Steuerwort,
auf das zugegriffen wird, wird von dem 1-Bit Zeiger des Endpunktkanal-Steuerwortes bestimmt. Zusammen erzeugen
das 250-Bit EABR, das 4-Bit EP und das 1-Bit CW eine 32-Bit Adresse, die zu einer Doppelwort-(32-Bit)Grenze
ausgerichtet ist, und sie werden dazu verwendet, auf das 32-Bit Steuerwort zuzugreifen. Das Format jedes Eintrags in der
Tabelle ist unten beschrieben.
S teuerwortformat
[0125] Das 32-Bit Steuerwort enthält die gesamte Information, die zum Betreiben dieses Endpunktkanals notwendig
ist, wenn er aktiv ist. Es gibt zwei solche Einträge für jeden Endpunktkanal.
[0126] Das Steuerwort, auf das als nächstes zugegriffen werden soll, wird von dem Wert des Endpunktkanal-Steuerwortzeigers
(CWP) bestimmt. Unmittelbar nach dem Empfang eines Tokens IN, OUT oder SETUP durch einen Endpunktkanal,
der momentan in einem betriebsbereiten Zustand ist, wird das Steuerwort des ausgewählten Endpunktkanals
bei dem aktuellen Steuerwortzeiger gelesen, um zu ermitteln, wie auf den Token reagiert werden soll. Am Ende einer
Übertragung, wenn ein Beendigungsstatus geschrieben wird, wird das Steuerwort mit dem aktuellen Status aktualisiert,
der CWP wird inkrementiert, und das nächste Steuerwort wird gelesen. Wenn ein Zwischenstatus geschrieben wird, wird
nur das höchstwertige Byte des Steuerwortes aktualisiert.
| 31 8 | 27 | 26 16 | BP | 14 | 13 | 12 | 11 | 10 | 9 0 |
| BS | res | BA | BR | TE | TI | IC | IE | BC | |
BS Pufferzustand
4-Bit-Wert. Von Software und EPC aktualisiert, um die Steuerung dieses Puffers zwischen ihnen zu synchronisieren. Der
EPC schreibt den Status, der die Verwendung des EPCs angibt. Dieses Feld wird von der Knoten-Firmware auf Ausgang
bereit (Output Ready), Eingang bereit (Input Ready) Setup bereit (Setup Ready), Überspringen (Skip), Unterbrechen
(Stall) und Disable eingestellt. Alle anderen Werte werden von dem EPC eingestellt. Der EPC kann auch die Werte von
Stall und Disable bei Fehlerbedingungen schreiben. Der Puffer kann von der Knoten-Firmware wieder beansprucht werden,
wenn der Pufferzustand den Wert eines Fertig-Status hat; dies umfaßt den Eingabe/Ausgabe-Fertigstatus und die
DE 199 OO 290 A 1
Fehler Codes.
0: Skip Skip. Wird zusammen mit dem Ausgabe-Fertigbefehl verwendet. Skip bewirkt, daß das nächste empfangene Datenpaket
ignoriert und der Steuerwortzeiger inkrementiert wird. Bei Steuerendpunkten bewirkt es auch, daß der Endpunktkanalzustand
von dem Eingabe/Ausgabe-Bereitzustand auf den Eingabe/Ausgabe-Wartezustand schaltet. Das Einstellen
von TE und TI bestimmt, welche Quittung (Handshake) zurückgegeben wird, sowie den nächsten Zustand des
Endpunktkanals. NAK wird zurückgegeben, wenn entweder TE oder TI gesetzt ist. Wenn TI gesetzt ist und nicht TE,
wird keine Quittung zurückgegeben. Wenn TE gesetzt ist, wird ACK zurückgegeben, und ein vollständiger Status wird
geschrieben, wenn ein Paket mit der richtigen PID empfangen wird.
1: IRDY Input Ready (Eingang bereit). In den Puffer wurden Daten geschrieben, die abhängig von einem IN-Token gesendet
werden sollen. 2: ORDY Output Ready (Ausgang bereit). Der Puffer wurde für das Schreiben zugewiesen.
3: SRDY Setup Ready. Der Puffer wurde für das Schreiben zugewiesen. Dies wird nur während der ersten Übertragung
von Steuerlese- und Schreiboperationen bei einem Steuerendpunkt verwendet. Es wird nur in das Steuerwort 0 geschrieben.
4: OWT Output Wait (Ausgabe warten). Gibt an, daß ein Fehler aufgetreten ist, während OUT-Daten von dem Host empfangen
wurden. Dies umfaßt die Erfassung eines Bit-Stuffing-Fehlers. Ein erneuter Versuch wird erwartet, weil dies als
Zwischenzustand betrachtet wird, außer in dem Fall eines isochronen OUT-Endpunkts, wo es als Beendigungsstatus behandelt
wird.
5: CRCE CRC Error. Gibt an, daß ein fehlerhafter CRC am Ende einer Ausgabetransaktion erfaßt wurde. Ein erneuter
Versuch wird erwartet, weil dies als Zwischenzustand betrachtet wird, außer in dem Fall eines isochronen OUT-Endpunkts,
wo es als ein Beendigungszustand behandelt wird.
6: BUFE Buffer Error (Pufferfehler). Während einer Ausgabetransaktion, wurden Daten von dem USB schneller Empfangen,
als sie in den Speicher geschrieben werden konnten. Während einer Eingabe wurden Daten aus dem Speicher
nicht schnell genug gelesen, um mit der USB-Datenrate mitzuhalten. An diesem Endpunkt wird ein erneuter Versuch erwartet.
7: IWT Input Wait (Eingabe warten). Der Puffer wird von dem Endpunkt-Controller angehalten und wartet darauf, diesen
Puffer bei der nächsten Gelegenheit zu senden oder erneut zu senden. Dies gilt für den Fall einer fehlenden Bestätigung
(ACK).
8: ICMP Input Complete (Eingabe beendet). Erfolgreiche Beendigung der Eingabe-Operation. Der Puffer kann freigegeben
werden. 9: OCMP Output Complete (Ausgabe beendet). Der Puffer ist mit Daten gefüllt, und es wurde kein Fehler erfaßt.
10: TKNE Token Error. Ein Token des falschen Typs für den momentanen Kontext des Steuerendpunktkanals wurde empfangen. Wenn es ein Ausgangspuffer war, wird der Endpunkt angehalten. Wenn es ein Eingangspuffer war, wird NAK gesendet, und der Zustand des anderen Steuerworts wird untersucht. Dies wird als ein Beendigungsstatus angesehen. 11: SYNE Iso Synchronisation Error. Daten wurden in einem Puffer mit TE = 1 und TI = 1 empfangen, der CWP war jedoch nicht gleich dem LSB des FNR. Dies wird als ein Beendigungsstatus angesehen.
10: TKNE Token Error. Ein Token des falschen Typs für den momentanen Kontext des Steuerendpunktkanals wurde empfangen. Wenn es ein Ausgangspuffer war, wird der Endpunkt angehalten. Wenn es ein Eingangspuffer war, wird NAK gesendet, und der Zustand des anderen Steuerworts wird untersucht. Dies wird als ein Beendigungsstatus angesehen. 11: SYNE Iso Synchronisation Error. Daten wurden in einem Puffer mit TE = 1 und TI = 1 empfangen, der CWP war jedoch nicht gleich dem LSB des FNR. Dies wird als ein Beendigungsstatus angesehen.
12: DATE Data Error (Datenfehler). Für OUT-Daten, wenn CW.BR nicht gesendet wurde und die Menge der vom Host
empfangenen Daten geringer als erwartet war oder der zugewiesene Puffer war nicht groß genug, um die OUT-Daten zu
speichern. Für Eingangsdaten wird es gesetzt, wenn ein Pufferfehler aufgetreten ist und CW.TE nicht gesetzt oder CWTI
gesetzt war. Dies wird als ein Beendigungsstatus angesehen.
13: rsvd Reserviert.
13: rsvd Reserviert.
14: HALT Halt. Bewirkt, daß der aktuelle Endpunktkanal in seinen Halt-Zustand geht, oder gibt an, daß der Endpunkt in
den Halt-Zustand gegangen ist.
15: DIS Disable. Bewirkt, das der aktuelle Endpunktkanal in seinen Disable-Zustand geht, oder zeigt an, daß der Endpunktkanal
in den Disable-Zustand gegangen ist.
TI Type isochron. 1 isochron, 0 Steuerung, Bulk, Interrupt.
TI Type isochron. 1 isochron, 0 Steuerung, Bulk, Interrupt.
TE Toggle Enable. Wird zum Vergleichen/Erzeugen des Wertes des Datenpaket-Identifikators (PID) (DataO/Datal) mit
dem Steuerwortzeiger verwendet.
0: Der Daten-Toggle-Pa wird bei Ausgangstransaktionen nicht überprüft, und er wird gestützt auf den aktuellen Wert des
CWP abhängig von HM-Token erzeugt. Der CWP wird nach jeder Transaktion inkrementiert (invertiert), selbst wenn kein
ACK empfangen wurde. Bei isochronen Endpunkten werden Ausgangsdaten nicht in den Speicher geschrieben, bis der
CWP gleich dem niedrigstwertigem Bit der Blocknummer FNR.FN(O) ist. Dies hat keinen Einfluß auf Daten, die abhängig
von HM-Token gesendet werden. Daten-Toggle sollte für Puffer nicht enabelt werden, die dafür bestimmt sind, mit
dem SETUP-Token gesendete Daten zu empfangen.
1: Der Daten-Toggle-PID wird bei Ausgangstransaktionen überprüft und gestützt auf den aktuellen Wert von CWP abhängig
von HM-Token erzeugt. Bei Ausgangstransaktionen wird ein ACK abhängig von Ausgangspaketen gesendet, deren
PID-Wert (Data 0/1) nicht mit dem CWP übereinstimmt. Bei Eingangstransaktionen wird CWP nach jeder Transaktion
nur inkrementiert (invertiert), wenn eine ACK-Quittung abhängig von einer Zeitablaufperiode zurückgegeben
wurde. Bei isochronen Endpunkten werden die Ausgangsdaten immer in den Speicher geschrieben, wenn jedoch
FNR.FN(O) nicht gleich CWP ist, wird der ISO-Sync-Fehlerpufferzustand zurückgeschrieben.
BR Buffer Rounding (Pufferrundung). Gibt für Ausgangstransaktionen an, ob es zulässig ist, einen Puffer mit einer anderen
Größe als der des empfangenen Datenpakets zu verwenden.
0: Das Datenpaket sollte den definierten Datenpuffer genau füllen. Der Pufferüberlauf- oder Unterlaufstatus wird zurückgegeben,
wenn das Datenpaket nicht genau in den Puffer paßt. 1: Das Datenpaket kann kleiner als der definierte Puffer sein, ohne eine Fehlerbedingung am Endpunkt zu erzeugen.
Wenn es zusammen mit einem Ausgabeende- oder Datenfehlerpuffer-Status gelesen wird, gibt dieses Feld den Wert des empfangenen PID an - 0 für DataO,l für Datal.
Wenn es zusammen mit einem Ausgabeende- oder Datenfehlerpuffer-Status gelesen wird, gibt dieses Feld den Wert des empfangenen PID an - 0 für DataO,l für Datal.
DE 199 OO 290 A 1
IC Interrupt on Packet Complete (bei Paketende). Dies bewirkt, daß an diesem Endpunkt ein Ereignis gesetzt wird,
(EER.EPn), wenn der Pufferstatus mit Eingabeende oder Ausgabeende beschrieben wird, bei einem Paketfehler, oder
wenn der Endpunktkanal unterbrochen wird.
IE Interrupt on Packet Error (bei Paketfehler). Dies bewirkt, daß an diesem Endpunkt ein Ereignis gesetzt wird
(EER.Epn), wenn der Pufferzustand einem der Pufferfehlercodes entspricht, oder wenn der Endpunkt unterbrochen wird.
Wenn sowohl IC als auch JE gesetzt sind, bewirken auch CRC- und Bit-Stuffingfehler, daß ein Ereignis erzeugt wird und
diese Puffer nicht mehr verwendet werden, wie im normalen Betrieb. Dies dient hauptsächlich der Diagnose,
res Reserviert. 1 Bit.
BP Buffer Page (Pufferseite).
res Reserviert. 1 Bit.
BP Buffer Page (Pufferseite).
0: Verwende Pufferseite A als obere Adresse des Eingabe/Ausgabepuffers.
1: Verwende Pufferseite B als obere Adresse des Eingabe/Ausgabepuffers.
1: Verwende Pufferseite B als obere Adresse des Eingabe/Ausgabepuffers.
BA Buffer Address (Pufferadresse). 11 Bit. Die unteren 11 Bit der Pufferadresse. Der Puffer muß bei einer ausgerichteten
Doppelwortgrenze beginnen, und er kann bei jeder Byte-Grenze enden. Am Ende aller vollständigen Übertragungen
wird der Restwert der Pufferadresse geschrieben. Am Ende unvollständiger Übertragungen, z. B. wenn der Status mit
Eingabe- oder Ausgabe-Warten beschrieben wird, wird dieses Feld nicht überschrieben. Bei OUT-Puffern ist das erste
gespeicherte Byte das Byte, daß dem PID folgt. Ähnlich zeigt bei IN-Puffern die Adresse auf das erste Byte der zu übertragenden
Daten, d. h. das Byte, das dem PID in dem Paket unmittelbar folgt. Der CRC wird automatisch berechnet und
an das Paket angehängt, außer wenn der IN-Token aus dem IS RDY-Zustand empfangen wird und das IS-Feld des Steuerworts
nicht auf 1 gesetzt ist.
BC Byte Count. 10 Bit. Die Größe des zu verwendenden Datenpuffers. Der Puffer beginnt bei einer geraden Doppelwortgrenze,
und er kann bei jeder Bytegrenze enden. Bei IN-Transaktionen zeigt dies die Größe der zu übertragenden Daten
an. Bei OUT-Transaktionen gibt dies die Größe des Puffers an, in dem Daten empfangen werden können. 0 ist ein zulässiger
Wert für den Byte-Zählwert. Am Ende aller vollständigen Übertragungen wird der Restwert des Bytezählers geschrieben.
Am Ende unvollständiger Übertragungen, z. B. wenn der Zustand als Eingabe-Warten oder Ausgabe-Warten
beschrieben wird, wird dieses Feld nicht überschrieben.
2.1.7 Endpunktkanalbetrieb
Endpunktkanalzustände
30
30
[0127] Um den Betrieb und die Steuerung aufrechtzuerhalten, hält jeder Endpunktkanal einen Zustand mit genau definierten
Bedingungen für Übertragungen zwischen den Zuständen aufrecht, die eine implizite Hardware/Software-Synchronisierung
benötigen. Endpunktkanal-Zustandsübergänge treten auf:
- bei expliziten Softwarebefehlen an einen Endpunkt über das Endpunktbefehlsregister (ECR)
- durch Lesen des Pufferstatus des anderen Puffers in dem anderen Steuerwort für diesen Endpunkt am Ende einer
Übertragung, und
- als eine Folge von Ereignissen auf dem USB, wie dem Empfang von ΓΝ, OUT und SETUP-Token und ACK-Quittungen.
[0128] Fig. 2^1 zeigt eine vereinfache Endpunktkanal-Ablaufsteuereinrichtung zum Verarbeiten von IN und OUT-Transaktionen.
Die Verarbeitung von Steuer-Lese- und Schreibtransaktionen erfolgt auf ähnliche Weise.
DE 199 OO 290 A 1
DISABLE
CMD.DI
BUF.DISAB or
reset j. _
JcMD.OENB
CMD.7ENB
CMD.HALTor
BUF.HALT
iMO.OSENB
OUT Iso Data
In Iso Data
Figur 2-4. Vereinfachtes Endpunktzustandsdiagramm
[0129] Der aktuelle Endpunktkanalzustand ist im Endpunktzustandsregister sichtbar, auf das über den USB-Index und
Datenregister zugegriffen werden kann. Maximal ist immer ein Endpunktkanal zu einer gegebenen Zeit in einem der aktiven
Zustände. Dies ermöglicht eine gemeinsame Nutzung der aktiven Zustandslogik durch alle Endpunktkanäle.
Disable. Der Disable-Zustand wird bei einem Reset, bei einem Disable-Befehl an diesen Endpunktkanal und bei Erfassung eines Disable-Zustands im Pufferzustand eines Steuerwortes ausgelöst. Jeder Token, der von diesem Endpunktkanal empfangen wird, während er in diesem Zustand ist, wird ohne Handshake zurückgegeben. Ein Eingreifen mittels Software ist notwendig, um den Endpunktkanal aus diesem Zustand zu holen, üblicherweise über einen Enable-Befehl an einen der Wartezustände.
Disable. Der Disable-Zustand wird bei einem Reset, bei einem Disable-Befehl an diesen Endpunktkanal und bei Erfassung eines Disable-Zustands im Pufferzustand eines Steuerwortes ausgelöst. Jeder Token, der von diesem Endpunktkanal empfangen wird, während er in diesem Zustand ist, wird ohne Handshake zurückgegeben. Ein Eingreifen mittels Software ist notwendig, um den Endpunktkanal aus diesem Zustand zu holen, üblicherweise über einen Enable-Befehl an einen der Wartezustände.
Halt. Der Halt-Zustand wird aktiviert, wenn der Stall-Befehl (Unterbrechen) an den Endpunktkanal geht, wenn ein Stall-Zustand
im Pufferzustand eines Steuerworts erfaßt wird, sowie bei bestimmten Fehlerbedingungen. Jeder von diesem
Endpunktkanal empfangene Token wird als Stall-Handshake zurückgegeben, während dieser in diesem Zustand ist, um
anzuzeigen, daß der Endpunkt momentan unterbrochen ist. Ein Eingreifen mittels Software ist erforderlich, um den Endpunktkanal
aus diesem Zustand zu bringen, üblicherweise über einen Enablebefehl an einen der Wartezustände.
Input Idle I IDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugewiesen wird. Ein NAK-Handshake wird zurückgegeben, wenn ein HM-Token auf diesen Endpunktkanal abgebildet wird. Keine Antwort wird bei Out-Token von diesem Endpunktkanal zurückgegeben.
Input Idle I IDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugewiesen wird. Ein NAK-Handshake wird zurückgegeben, wenn ein HM-Token auf diesen Endpunktkanal abgebildet wird. Keine Antwort wird bei Out-Token von diesem Endpunktkanal zurückgegeben.
Input Ready I RD Y. Dieser Zustand wird über einen Eingang-Bereit-Befehl an diesen Endpunktkanal oder bei Erfassung
eines anderen Eingabepuffers am Ende einer Übertragung aktiviert. Der Befehl sollte nur erfolgen, nachdem diesem
Endpunkt ein Puffer zugewiesen wurde, indem das Steuerwort bei der richtigen Position in dem Endpunktfeld geschrieben
wird. Diese Steuerwort sollte auf einen Datenpuffer zeigen, der Daten enthält, die abhängig von dem nächsten HM-Token,
welcher von diesem Endpunktkanal empfangen wird, an den Host zurückgegeben werden sollen. Der PID-Wert
wird als DataO übertragen, wenn CWP gleich 0 ist, und als Datal, wenn CWP gleich 1 ist.
Input Active IACT. Dieser Zustand wird bei Empfang eines IN-Tokens aktiviert, wenn der ausgewählte Endpunktzustand
momentan Eingang-Bereit ist. In diesem Zustand werden Daten von dem Speicher an den USB übertragen. Bei Beendigung
der Datenübertragung sollte ein ACK-Handshake innerhalb von 16 Bitzeiten empfangen werden. Am Ende
dieser Zeitablaufperiode wird der Pufferwartezustand in das Steuerwort zurückgeschrieben, wenn kein ACK empfangen
wurde. Der Adreß- und Bytezähler werden jedoch nicht überschrieben, weil eine erneute Übertragung erfolgt und die
momentanen Werte nicht neu verwendet werden müssen. Wenn ein ACK empfangen wird, werden der Pufferstatus zusammen
mit dem aktuellen Wert des Adreß- und Bytezählers geschrieben. Dann wird das andere Steuerwort an diesem
Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu ermitteln, der das nächste Mal verwendet werden soll,
wenn ein Token an diesen Endpunktkanal gerichtet wird. Wenn dieser Endpunkt für eine Steuerübertragung verwendet
wird, kann ein Übergang zu dem Ausgang-Bereit- oder Ausgang-Ruhe-Zustand erfolgen, um die Statusphase der Steuer-Leseübertragung
zu beenden.
Input ISO Ready ISJRDY. Dieser Zustand wird über einen Eingang-Bereit-Befehl an diesen Endpunktkanal oder bei Erfassung
eines weiteren Eingangspuffers am Ende einer Übertragung aktiviert. Der Befehl sollte nur erfolgen, nachdem
diesem Endpunkt ein Puffer zugewiesen wurde, indem das Steuerwort an die geeignete Stelle in dem Endpunktfeld geschrieben
wird. Dieses Steuerwort sollte zu einem Datenpuffer weisen, der Daten enthält, die abhängig von dem nächsten,
von diesem Endpunktkanal empfangenen HM-Token an den Host zurückgegeben werden sollen. Der PID-Wert wird
unabhängig vom Wert des CWP immer als DATO übertragen.
DE 199 OO 290 A 1
Input ISO Active IS_ACT. Dieser Zustand wird bei Empfang eines HM-Tokens aktiviert, wenn der ausgewählte Endpunktzustand
Eingang-momentan-bereit ist. Während dieses Zustands werden Daten vom Speicher zu dem USB übertragen.
Bei Beendigung der Datenübertragung werden der Pufferstatus zusammen mit dem aktuellen Wert des Adreß-
und Bytezählers am Ende der Übertragung geschrieben. Dann wird das andere Steuerwort bei diesem Endpunkt gelesen,
um den nächsten Zustand des Endpunktes zu bestimmen, der das nächste Mal verwendet werden soll, wenn ein Token an
diesen Endpunktkanal gerichtet wird.
Output Idle OJTDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugewiesen wird. Ein NAK-Handshake
wird zurückgegeben, wenn ein OUT-Token auf diesen Endpunkt kanal abgebildet wird. Keine Antwort wird zurückgegeben,
wenn HM-Token an diesen Endpunktkanal gehen.
Output Ready O_RD Y. Dieser Zustand wird aktiviert, nachdem dem Endpunktkanal ein Puffer zugewiesen wurde, in den
Daten geschrieben werden sollen. Er kann über einen Ausgangs-Bereit-Befehl von dem OJTDL-Zustand aktiviert werden,
nachdem das passende Wort aus dem Endpunktfeld geschrieben wurde, oder bei Erfassung eines weiteren Ausgabepuffers
am Ende einer Übertragung.
[0130] Output Active O_ACT. Dieser Zustand wird bei Empfang eines OUT-Tokens aktiviert. Während dieses Zustandes werden Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status in das Steuerwort bei dem CWP geschrieben. Wenn die Übertragung nicht erfolgreich war, d. h. wenn ein CRC oder Bitstuffing-Fehler erfaßt wurde, wird dies als Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war, wird der Ausgabe-Beendet-Pufferstatus geschrieben, CWP wird invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Gestützt auf den Pufferzustand erfolgt der richtige Übergang. Wenn dieser Endpunkt für eine Steuerübertragung verwendet wird, kann ein Übergang zu dem Eingang-Bereit- oder zu dem Eingang-Warte-Zustand erfolgen, um die Statusphase einer Steuer-Schreibübertragung zu beenden.
[0130] Output Active O_ACT. Dieser Zustand wird bei Empfang eines OUT-Tokens aktiviert. Während dieses Zustandes werden Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status in das Steuerwort bei dem CWP geschrieben. Wenn die Übertragung nicht erfolgreich war, d. h. wenn ein CRC oder Bitstuffing-Fehler erfaßt wurde, wird dies als Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war, wird der Ausgabe-Beendet-Pufferstatus geschrieben, CWP wird invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Gestützt auf den Pufferzustand erfolgt der richtige Übergang. Wenn dieser Endpunkt für eine Steuerübertragung verwendet wird, kann ein Übergang zu dem Eingang-Bereit- oder zu dem Eingang-Warte-Zustand erfolgen, um die Statusphase einer Steuer-Schreibübertragung zu beenden.
Output ISO Idle OSJTDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugewiesen wird. Kein Handshake
wird zurückgegeben, wenn ein OUT-Token auf diesen Endpunkt ausgebildet wird. Keine Daten oder Handshakes
wird bei HM-Token auf diesem Endpunktkanal zurückgegeben.
Output ISO Ready OSJRDY. Dieser Zustand wird aktiviert, nachdem diesem Endpunktkanal ein Puffer zugewiesen
wurde, in den Daten geschrieben werden sollen. Er kann über einen OS-Bereit-Befehl von dem OS JTDL-Zustand aktiviert
werden, nachdem das entsprechende Wort aus dem Endpunktfeld geschrieben wurde, oder bei Erfassung eines weiteren
Ausgabepuffers am Ende einer Übertragung.
Output ISO Active OS_ACT. Dieser Zustand wird bei Empfang eines OUT-Tokens von dem OS JRDY-Zustand aktiviert.
Output ISO Active OS_ACT. Dieser Zustand wird bei Empfang eines OUT-Tokens von dem OS JRDY-Zustand aktiviert.
Während dieses Zustandes werden Daten in dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung
wird der Status bei dem CWP in das Steuerwort geschrieben. Wenn die Übertragung nicht erfolgreich war, d. h.
wenn ein CRC oder Bitstuffing-Fehler erfaßt wurde, wird dies als der Pufferstatus geschrieben. Wenn die Übertragung
erfolgreich war, wird der Ausgabe-Beendet-Pufferstatus geschrieben. Am Ende der Statusübertragung wird CWP invertiert,
und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Der richtige Übergang erfolgt gestützt auf den
Pufferzustand.
Setup Ready SJRDY Dieser Zustand wird aktiviert, nachdem diesem Endpunktkanal ein Puffer zugewiesen wurde, in
den Daten geschrieben werden sollen. Dieser Zustand wird über einen Setup-Bereit-Befehl aktiviert, nachdem das richtige
Wort aus dem Endpunktfeld geschrieben wurde, oder bei Erfassung des Setup-Bereit-Pufferzustands.
Setup Active S_ACT. Dieser Zustand wird bei Empfang eines Setup-Tokens von dem Setup-Bereit-Zustand aktiviert. In diesem Zustand werden Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status bei CWP in das Steuerwort geschrieben, CWP wird invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Der richtige Übergang erfolgt gestützt auf den Pufferzustand zu Ausgang-Warten, Ausgang-Bereit, Eingang-Warten oder Eingang-Bereit, abhängig vom Typ der Steuerübertragung und des gelesenen Pufferzustands.
Setup Active S_ACT. Dieser Zustand wird bei Empfang eines Setup-Tokens von dem Setup-Bereit-Zustand aktiviert. In diesem Zustand werden Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status bei CWP in das Steuerwort geschrieben, CWP wird invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Der richtige Übergang erfolgt gestützt auf den Pufferzustand zu Ausgang-Warten, Ausgang-Bereit, Eingang-Warten oder Eingang-Bereit, abhängig vom Typ der Steuerübertragung und des gelesenen Pufferzustands.
Hardware/Software-Synchronisierung
[0131] Nach dem Reset werden alle Endpunkte disabelt. Ein Endpunkt wird enabelt, indem ein Enable-Befehl an den
Endpunkt geschickt wird. Dies sollte nur erfolgen, wenn die Eingabe- und/oder Ausgabepuffer diesem Endpunkt bald
zugewiesen werden. Alle Endpunkte, die momentan nicht auf einem Endpunktkanal abgebildet sind, werden als disabelt
angesehen.
[0132] Die Software weist den Endpunktkanälen Puffer nach Bedarf zu. Nachdem jeder Puffer zugewiesen ist, führt er
den Eingang- oder Ausgang-Bereit-Befehl an dem Endpunktkanal durch. Wenn der Endpunktkanal momentan im Ruhezustand
ist, geht er in den geeigneten Bereit-Zustand. Wenn der Endpunktkanal momentan in einem Bereit- oder Aktiv-Zustand
ist, ignoriert er alle Befehle außer den Disable- und Stall-Befehlen an den Endpunktkanal, die er sofort verarbeitet.
Die Software muß diese Schreiboperation durchführen, um mögliche Synchronisierungsprobleme zu verhindern,
weil die Behandlung des Endpunktkanals durch das UNIM zu den Softwareoperationen asynchron erfolgt.
[0133] Da jedem Endpunkt bis zu zwei Puffer zugewiesen werden können, kann der nächste Puffer vorbereitet werden, während der aktuelle abgearbeitet wird, um die Datenübertragung zu beschleunigen und unnötige NAK-Handshakes zu vermeiden.
[0133] Da jedem Endpunkt bis zu zwei Puffer zugewiesen werden können, kann der nächste Puffer vorbereitet werden, während der aktuelle abgearbeitet wird, um die Datenübertragung zu beschleunigen und unnötige NAK-Handshakes zu vermeiden.
2.1.8 UNIM-Register
[0134] Beim Lesen sollten Daten aus reservierten Registern ignoriert werden, und beim Schreiben sollten diese Bits
auf 0 geschrieben werden. - Dieser Vermerk ist in dem Chip global gültig.
65
65
Gerätesteuerregister (DCR)
[0135] Ein ein Wort breites Lese/Schreibregister. Das Gerätesteuerregister steuert die Einschaltsequenz des USB-Kno-
DE 199 OO 290 A 1
tens. Bei einem Reset wird dieses Register gelöscht. Das DCR-Registerformat ist unten angegeben:
| 15 | 14 | 13 | 12 | 11-9 | 8 | 7-5 | 4 | 3-2 | 1 | 0 |
| res- DIAG |
SFM | res_ | ETE | res bei anderen EPMS |
EPMS | res bei DEF3-1 |
DEFO | res | ECE | NAT |
NAT. Node Attached (Knoten angeschlossen). Gibt an, daß dieser Knoten bereit ist und als an den USB angeschlossen erfaßt
werden kann. Wenn es nicht gesetzt ist, erzwingt der Transceiver, daß das SEO an dem USB-Port verhindert, daß der
Verteiler (Hub), mit dem dieser Knoten verbunden ist, eine Verbindung erfaßt. Nach einem Reset ist es nicht gesetzt, so
daß das Gerät Zeit hat, bevor es auf Befehle reagieren muß. Nachdem dieses Bit gesetzt ist, steuert das Gerät den USB
nicht mehr an und sollte bereit sein, Reset-Befehle von dem Verteiler zu empfangen.
ECE. Endpunkt Controller Enable. Enabelt den Betrieb der Endpunktkanäle des Endpunktcontrollers, der die Endpunktfeld-Basisadresse
und die Einstellung des Kanalabbildungs-Auswahlregisters verwendet. Wenn nicht gesetzt, werden
alle Endpunkte als disabelt angenommen.
DEF 0-3. Default Address (Voreinstellungsadresse) 0-3. Enabelt die Voreinstellungsadresse und ignoriert den aktuellen
Wert von FA. Dieses Bit wird gelöscht, wenn das entsprechende Adreß-Enable-Bit (AE) gesetzt wird, wenn das nächste
Mal ein ACK abhängig von dem nächsten HM-Token empfangen wird, der seinerseits von einem Endpunktkanal empfangen
wird, der für Steueroperationen verwendet wird. Wenn kein ACK innerhalb der Zeitablaufperiode empfangen wird,
wird das nächste Mal auch dieses Bit zurückgesetzt, wenn ein Setup unmittelbar vor dem neuen Adreßfeld empfangen
wird.
[0136] Man beachte, daß dann, wenn mehr als eine Adresse unterstützt wird, das niedrigstwertige DEF-Bit, für dass
das entsprechende AE-Bit gesetzt ist, das DEF-Bit ist, das beim nächsten Eintritt in den aktiven Eingabezustand auf einem
Steuerendpunktkanal gelöscht wird. Es wird empfohlen, daß dann, wenn mehrere Funktionsadressen zugewiesen
werden, dies von der niedrigsten zur höchsten Zahl erfolgt.
EPMS. Endpoint Pipe Map Select (Endpunktkanal-Abbildungsauswahl). Wählt die aktuelle Einstellung der Kanalabbildungstabelle
aus. Eine Funktionsadreßübereinstimmung wird als gültig betrachtet, wenn das entsprechende AE-Bit gesetzt
ist und das entsprechende DEF-Bit nicht gesetzt ist und die empfangene Adresse mit dem FA übereinstimmt. Wenn
das DEF-Bit gesetzt ist, wird eine Übereinstimmung angenommen, wenn die 0-Adresse empfangen wird. Sollte mehr als
eine Adresse realisiert sein, hat im Falle, daß mehrere DEF-Bits gesetzt sind, die niedrigste Zahl Priorität. In dem UNIM
wird das Blocknummernregister als der SOF-Kanal (Paketanfang) angesehen. Bei anderen Ausführungsformen ist denkbar,
sie an andere SOF-Kanäle zu senden. ETE. External Transceiver Enable. Enabelt die Verwendung eines externen USB-Transceivers, im Gegensatz zu dem internen
USB-Transceiver. Die Voreinstellung ist 0. Wenn sie nicht enabelt sind, werden alle Ausgaben der externen Transceiver-Schnittstelle
bestätigt und alle Eingaben werden ignoriert. Dieses Bit kann nur modifiziert werden, wenn der
Funktionszustand rückgesetzt ist (FSR.FS = 0).
SFM. Short Frame (Kurzblock) Enable. Enabelt die Verwendung kürzerer Blockgrößen. Dies wird exklusiv für die Diagnose
und Prüfung verwendet, um die Zeit zum Emulieren eines gesamten Blockes zu reduzieren.
DIAG. Diagnostic Mode (Dioagnosemodus). Enabelt den Diagnosemodus, in dem zusätzliche Diagnosefunktionen zugänglich sind. Dies umfaßt den Zugriff auf Diagnoseregister und die Möglichkeit in solche Register, wie das TCR (siehe unten), zu schreiben.
DIAG. Diagnostic Mode (Dioagnosemodus). Enabelt den Diagnosemodus, in dem zusätzliche Diagnosefunktionen zugänglich sind. Dies umfaßt den Zugriff auf Diagnoseregister und die Möglichkeit in solche Register, wie das TCR (siehe unten), zu schreiben.
45 Funktions-Zustandsregister (FSR)
[0137] Ein ein Wort breites Lese/Schreibregister. Es wird zum Steuern des Funktionszustands des Gerätes verwendet.
Beim Reset wird dieses Register gelöscht. Das FSR-Registerformat ist unten angegeben:
| 15 2 | 1 | 0 |
res
FSl
FSO
[0138] FS 1, FSO wird von der Software verwendet, um den Funktionszustand des Gerätes zu steuern.
Funktionszustand
00: USB-Reset. Dies ist der USB-Reset-Zustand. Er wird bei einem Modulreset oder mittels Software bei Erfassung eines
USB-Resets aktiviert. Bei Aktivierung werden alle Endpunktkanäle disabelt. DCR.DEF und DCR.AE sollten mittels
Software bei Aktivierung dieses Zustandes gelöscht werden. Bei Verlassen dieses Zustandes sollte DCR.DEF gesetzt
werden, so daß das Gerät auf die voreingestellte Adresse anspricht.
01: Resume. In diesem Zustand wird eine Wiederaufnahme-"K"-Signal erzeugt. Dieser Zustand wird abhängig von einer
externen Weckanforderung von dem Gerät aktiviert. Der Knoten muß während wenigstens einer Millisekunde in diesem
Zustand sein und darf nicht länger als fünfzehn Millisekunden in diesem Zustand bleiben.
20
25
30
40
45
50
55
60
65
10: Operational. Dies ist der normale Betriebszustand. In diesem Zustand ist der Knoten für den Betrieb auf dem USB
konfiguriert.
11: Suspend. Der Aussetzzustand wird bei Erfassung eines Aussetzereignisses während des Betriebszustandes aktiviert.
Während des Aussetzzustandes arbeiten die Transceiver in ihrem Niederleistungs-Aussetzmodus, und es ist zulässig,
Takte von dem USB-Modul zu nehmen, um zusätzlich Energie zu sparen. Alle Endpunktfeld- und interne Zustände bleiben
konserviert. Bei Erfassung von Busaktivität werden die Takte wieder aufgenommen, und das Bit ISR.RSMD wird
gesetzt. Davon abhängig kann Software den Wiedereintritt in den Betriebszustand bewirken. Bei Erfassung einer externen
Weckanforderung durch das Gerät löst die Software die Fernwiederaufnahme aus und erzwingt den Eintritt in den
Wiederaufnahmezustand.
[0139] Man beachte: Bei Realisierungsformen mit der HUB-Funktion (Verteiler) kann der Übergang vom Aussetzen
zum Wiederaufnehmen und vom Wiederaufnehmen zum Betrieb automatisch erfolgen. Bei der Schnittstellendefinition
sollten Vorkehrungen für Signale getroffen werden, welche die Zeitbereiche überschreiten, um diese Übergänge zu erzeugen.
Transceiver-Konfigurationsregister (TCR)
[0140] Ein ein Wort breites Lese/Schreib-Register. Dieses Register steuert den Betrieb des Transceivers. Die unsymmetrischen
Empfängerschwellwerte und die Treiberflankensteigungen können eingestellt werden. Dieses Register kann
nur modifiziert werden, wenn DCR.DIAGE 1 ist. Bei HUB-Ausführungsformen steuert dieses Register alle Transceiver.
Der Rücksetzwert ist {8'bOOOOOOOO, 3'blOO, 5'blOOOO}. Das TCR-Registerformat ist unten gezeigt:
| 15 8 | 7 5 | 4 0 |
| res fur LS xcvr | VADJ | CADJ |
VADJ Spannungsschwellwert-Einstellung. Steuert die unsymmetrischen Empfängerschwellwerte.
CADJ Stromeinstellung. Steuert den Steuerstrom für die Treiberflankensteigung.
CADJ Stromeinstellung. Steuert den Steuerstrom für die Treiberflankensteigung.
Funktionsadreßregister (EAR)
[0141] Ein doppelwortbreites Lese/Schreibregister. Enthält das Adreß-Enablebit und die sieben Bit breite USB-Funktionsadresse,
die während des normalen Betriebs verwendet wird, nachdem alle Setup-Operationen beendet sind. Bei einem
USB-Reset wird dieses Register gelöscht. Bis zu vier Funktionsadressen können in diesem Register unterstützt werden
- FAO bis FA3. Das EAR-Registerformat ist unten gezeigt:
| 15 8 | 7 | 6 0 |
| reserviert | AE | FA |
[Entwurfsverbesserung für Mehrfachendpunktgerät]
| 31 | 30 24 | 23 | 22 16 | 15 | 14 8 | 7 | 6 0 |
| AE3 | FA3 | AE2 | FA2 | AEl | FAl | AEO | FAO |
FA[6:0] Funktionsadresse. Die 7 Bit breite Funktionsadresse wird von diesem Gerät verwendet.
AE Adreß-Enable. Enabelt die Verwendung der Funktionsadresse, die in EAR gesetzt ist, wenn das entsprechende Voreinstellungsadreßbit
(DEF) nicht gesetzt ist.
Endpunktsteuerregister (ECR)
[0142] Ein ein Wort breites Lese/Schreibregister. ECD wird verwendet, um Befehle bei einem spezifizierten Endpunkt
auszuführen. Bei einem Reset wird dieses Register gelöscht. Das ECR-Registerformat ist unten gezeigt:
| 15 8 | 7 4 | 3 0 |
| res | EPN | CMD |
CMD Command. Dieser Befehl betrifft den Betrieb eines Endpunktes. Ein Wert 0 zeigt an, daß der Befehlsprozessor bereit
für den nächsten Befehl ist.
DE 199 OO 290 A 1
0000: Complete. Gibt an, daß der vorhergehende Befehl abgeschlossen ist und der Endpunktcontroller bereit ist, einen
weiteren Befehl anzunehmen.
0001: Input Enable. Bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disable-Zustand in den Eingang-Wartezustand
geht. Der Steuerwortzeiger für den spezifizierten Endpunktkanal wird auf 0 zurückgesetzt. Wenn der aktuelle
Zustand nicht Disable oder Stall ist, wird ein "F" zurückgegeben, um anzuzeigen, daß ein unzulässiger Befehl bei
diesem Endpunkt versucht wurde, und der Befehl wird ignoriert.
0010: Input Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Eingang-Bereit-Zustand geht, wenn er momentan
in dem Eingang-Warte-Zustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Eingang-Bereit-Pufferzustand
in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird.
Dieser Befehl bewirkt nicht, daß das Steuerwort in dem Speicher gelesen wird, sondern er erlaubt vielmehr, daß es abhängig
von dem Empfang eines ΓΝ-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunkts nicht der Wartezustand
ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand der Ausgabe- oder Setup-Zustand oder Disable oder Stall
ist, wird ein "F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde.
0011: Input Iso Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Eingang-ISO-Bereit-Zustand geht, wenn er momentan in dem Eingang-Wartezustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei der Eingang-Bereit-Puffer-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird.
Dieser Befehl bewirkt nicht, daß das Steuerwort in dem Speicher gelesen wird, sondern erlaubt vielmehr, daß es abhängig von dem Empfang eines ΓΝ-Tokens gelesen wird. Es wird erwartet, daß das Typfeld des Steuerwortes (TI) auf isochron gesetzt wird, dies wird jedoch nicht überprüft. Wenn der aktuelle Zustand des Endpunktes nicht Eingang-Warten ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand einer der Ausgangs- oder Setupzustände oder Disabled oder Stall ist, wird "F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde.
0100: Output Enable. Bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disabled-Zustand in den Ausgang-Wartezustand geht. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Wenn der aktuelle Zustand nicht Disable oder Stall ist, wird ein "F" zurückgegeben, um anzuzeigen, daß ein unzulässiger Befehl bei diesem Endpunkt versucht wurde, und der Befehl wird ignoriert.
0011: Input Iso Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Eingang-ISO-Bereit-Zustand geht, wenn er momentan in dem Eingang-Wartezustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei der Eingang-Bereit-Puffer-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird.
Dieser Befehl bewirkt nicht, daß das Steuerwort in dem Speicher gelesen wird, sondern erlaubt vielmehr, daß es abhängig von dem Empfang eines ΓΝ-Tokens gelesen wird. Es wird erwartet, daß das Typfeld des Steuerwortes (TI) auf isochron gesetzt wird, dies wird jedoch nicht überprüft. Wenn der aktuelle Zustand des Endpunktes nicht Eingang-Warten ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand einer der Ausgangs- oder Setupzustände oder Disabled oder Stall ist, wird "F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde.
0100: Output Enable. Bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disabled-Zustand in den Ausgang-Wartezustand geht. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Wenn der aktuelle Zustand nicht Disable oder Stall ist, wird ein "F" zurückgegeben, um anzuzeigen, daß ein unzulässiger Befehl bei diesem Endpunkt versucht wurde, und der Befehl wird ignoriert.
0101: Output Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Ausgang-Bereit-Zustand geht, wenn er momentan
in dem Ausgang-Wartezustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Ausgang-Bereit-Zustand
in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird.
Dieser Befehl bewirkt nicht, daß das Steuerwort in dem Speicher gelesen wird, sondern erlaubt vielmehr, daß es abhängig
von dem Empfang eines OUT-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunktes nicht Ausgang-Warte
ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand einer der Eingangszustände, Stall oder Disable ist, wird ein "F"
zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde, und dieser Befehl
wird ignoriert.
0110: Output Iso Enable. Bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disable-Zustand in den Ausgang-Isochron-Wartezustand
geht. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt.
Wenn der aktuelle Zustand nicht Disable oder Stall ist, wird ein "F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt
ein unzulässiger Befehl versucht wurde, und der Befehl wird ignoriert.
Olli: Output Iso Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Ausgang-Iso-Bereit-Zustand geht, wenn er
momentan in dem Ausgang-Iso-Wartezustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein
Ausgang-Bereit-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird.
Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird, sondern er erlaubt vielmehr, daß es abhängig
von dem Empfang eines OUT-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunktes nicht Ausgang-Iso-Warten
ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand einer der Eingangszustände, Stall oder Disable ist, wird ein
"F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde.
1000: Setup Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Setup-Bereit-Zustand geht. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Ausgang-Bereit-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird.
1000: Setup Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Setup-Bereit-Zustand geht. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Ausgang-Bereit-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird.
Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird, sondern er erlaubt vielmehr, daß es abhängig
von dem Empfang eines SETUP-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunktes nicht Stall oder Disable
ist, wird der Befehl ignoriert. 1001: Disable. Bewirkt, daß der spezifizierte Endpunktkanal in den Disable-Zustand geht. Dies erfolgt unmittelbar nach
einem beliebigen anderen Zustand. Wenn der Endpunktkanal momentan aktiv ist, wird der Status bei der Steuerung geschrieben,
wodurch angezeigt wird, daß der Endpunkt disabelt wurde.
1010: Stall. Bewirkt, daß der spezifizierte Endpunkt aus einem beliebigen Zustand in den Stall-Zustand geht. Dies erfolgt
unmittelbar nach jedem beliebigen Zustand. Wenn der Endpunktkanal momentan aktiv ist, wird der Zustand in die Steuerung
geschrieben, wodurch angezeigt wird, daß der Endpunkt angehalten wurde.
1011-1101: Reserviert. Bewirkt die Ausführung keiner Funktion. Gibt 0 zurück.
1011-1101: Reserviert. Bewirkt die Ausführung keiner Funktion. Gibt 0 zurück.
1110: Toggle CWP. Bewirkt, daß der Steuerwortzeiger umgeschaltet (getoggelt) wird. Dies wird in Verbindung mit Steuerübertragungen
verwendet, wenn eine ungerade Anzahl Pakete während der Datenphase gesendet oder empfangen wird.
1111: Error. Gibt an, daß ein für den momentanen Zustand unzulässiger Befehl des aktuellen Endpunktkanals versucht
wurde, und daß ein neuer Befehl angenommen werden könnte.
EPN Enpoint Pipe Number (Endpunktkanalnummer) .Dieser Parameter bestimmt den Endpunktkanal, auf den der Befehl
ausgeführt werden soll.
[0143] Vermerk für den Entwurf: Dieses Register sollte in der Hochgeschwindigkeitsbus-Schnittstellenlogik realisiert
werden, wobei Daten über die asynchrone Schnittstelle weitergegeben werden. Zwei Signale werden von dem Endpunktcontroller
zurückgegeben - eines, um anzuzeigen, daß der Befehl verarbeitet wurde und daß der Befehlswert auf "0" gelöscht
werden sollte, und ein anderes, um anzuzeigen, daß der Befehl nicht verarbeitet werden konnte und auf "F" gesetzt
werden sollte.
Interrupt Status Register (ISR)
[0144] Ein ein Wort breites Lese/Schreibregister. Benachrichtigt die Software über Ereignisse, die aufgetreten sind, die
einen Interrupt verursacht haben und weitere Verarbeitung erfordern. Bits werden gelöscht, indem 1 in das Bit/die Bits
geschrieben wird, welche gelöscht werden sollen. Beim Reset wird dieses Register gelöscht. Das ISR-Registerformat ist
unten gezeigt:
| 15 11 | 11 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| reserviert | HAS | ULD | FCI | SOFD | EOPD | RSMD | SD5 | SD | RSTD | SECI | ECI |
ECI Endpoint Controller Interrupt (Endpunktcontroller-Interrupt). Es ist an einem der Endpunkte ein Ereignis aufgetreten,
daß Softwareunterstützung benötigt. Dies ist das ODER aller EER.Epn, die mit EEM.Epn UND-verknüpft sind.
SECI Synchronized Endpoint Controller Interrupt (synchronisierter ECI). Eine verzögerte Version des ECI, der bei einem Inkrement oder dem Laden von FNR.FN abgetastet wird.
SECI Synchronized Endpoint Controller Interrupt (synchronisierter ECI). Eine verzögerte Version des ECI, der bei einem Inkrement oder dem Laden von FNR.FN abgetastet wird.
RSTD Reset Detected (Reset erfaßt). Ein Übergang auf SEO wurde erfaßt und während minimal 2,5 ps gehalten, während
der Funktionszustand nicht USB Reset war. Als Reaktion sollte der Funktionszustand (DCR.FS) auf USB-Reset gesetzt
werden und während wenigstens 100 ps USB-Reset bleiben. Nach dem Reset kann der Funktionszustand auf dem
USB-Betriebszustand zurückgehen.
SD Suspend Detected (Aussetzen erfaßt). Ein Minimum von 3,0 ps Wartezustand wurde erfaßt, wodurch angezeigt wird,
daß der Betrieb dieses Gerätes ausgesetzt werden sollte. Das Aussetzen (Suspend) erfolgt softwaregesteuert durch
Schreiben von DCR.FS in den Aussetzwert.
SD5 Suspend Detected (Aussetzen erfaßt) 5. Ein Minimum von 5,0 ps Wartezustand wurde erfaßt, wodurch angezeigt
wird, daß dieses Gerät nun eine Fern-Weckrufoperation ausführen darf. Sollten die Takte in dem Intervall, nachdem SD
gesetzt, SD5 jedoch nicht gesetzt ist, disabled werden, dann sollte der verbleibende Teil der zusätzlichen 2 ms abgemessen
werden, wenn die Takte wieder aufgenommen werden.
RSMD Resume Detected (Wiederaufnahme erfaßt). Ein Wiederaufnahmesignal wurde auf dem USB erfaßt, während
dieses Gerät in dem Aussetzzustand (DCR.FS = Suspend) war, wodurch angezeigt wird, daß dieses Gerät seine Aufwecksequenz
beginnen und in den Betriebszustand gehen sollte. Wenn die Takte disabled sind, wenn die Wiederaufnahme
neu erfaßt wird, wird dieses Bit gesetzt, nachdem die Takte wieder enabelt sind. Diese Wiederaufnahmebedingung
sollte in dem USB-Modul ohne Taktunterstützung zwischengespeichert und dann gelöscht werden, wenn das Wiederaufnahme-Erfaßt-Bit
gesetzt ist.
EOPD End of Packet Detected. Eine gültige Packetendesequenz wurde auf dem USB erfaßt. Dies wird verwendet, wenn
das Gerät eine Fernwiederaufnahme auslöst, um anzuzeigen, daß die Wiederaufnahmesequenz bestätigt und von dem
Host beendet wurde.
SOFD Start of Frame Detected. Ein gültiges Blockanfangspacket wurde auf dem USB erfaßt.
FCI Frame Counter Interrupt. Der Blockzähler hat den programmierten Offset erreicht, d. h. TR.TI[7:0] = FNR.FN[7:0].
ULD Unlocked Locked Detected. Gibt an, daß der Blockzeitgeber aus einem verriegelten in einen unverriegelten Zustand
gegangen ist oder aus einem unverriegelten in den verriegelten Zustand zurückgegangen ist, was durch den aktuellen
Wert von FNR.UL bestimmt wird, das Unlocked-Statusbit.
[0145] Man beachte, daß eine Einstellung der isochronen Warteschlange bei isochronen Endpunkten notwendig sein
kann, weil FNR.FN[0] verwendet wird, um die nächste isochrone Übertragung zu wählen.
HST Holding Setup Token. Ein Setup-Token wurde empfangen, für den im voraus kein SRDY-Puffer zugewiesen wurde.
Dieses Setup-Paket wird in dem Datenpfad gehalten, während darauf gewartet wird, daß dem Steuerendpunkt ein SRDY-Puffer
zugewiesen wird.
[0146] Wenn dies bei mehr als einem Endpunkt möglich ist, muß der Endpunktzustand untersucht werden, um zu ermitteln,
welcher Endpunkt auf den Puffer wartet. In diesem Fall sollte ein SRDY-Puffer auf CWO gesetzt werden, ein
OCMP-Puffer wird auf CWl gesetzt, und ein SRDY-Befehl wird an den zugehörigen Endpunktkanal übergeben. Man
beachte, daß dieser Zustand vermieden wird, außer bei ungünstigen Bedingungen. Im Intervall zwischen dem Setzen dieses
Bits und dem Zuweisen des Puffers werden alle gültigen IN- und OUT-Token mit NAK quittiert.
[0147] Man beachte: Eines der reservierten Bits ist für einen Hub-Interrupt reserviert, falls diese Funktion enthalten ist.
[0147] Man beachte: Eines der reservierten Bits ist für einen Hub-Interrupt reserviert, falls diese Funktion enthalten ist.
Interrupt Maskenregister (IMR)
[0148] Ein ein Wort breites Lese/Schreibregister. IMR hat dasselbe Bitlayout wie das Interrupt-Statusregister. Die Bits
werden mit den entsprechenden Bits in dem Interrupt-Statusregister UND-verknüpft, das Ergebnis wird ODER-verknüpft,
um das USB INT-Signal zu erzeugen. Bei einem Reset wird dieses Register gelöscht.
Endpunkt Ereignisregister (EER)
[0149] Ein doppelwortbreites Lese/Schreibregister. EER wird verwendet, um anzuzeigen, auf welchem Endpunktkanal
Ereignisse aufgetreten sind, die einen Dienst erfordern. Bei einem Reset wird dieses Register gelöscht. Das EER-Registerformat
ist unten angegeben:
DE 199 OO 290 A 1
EE(0:15)
{Konzept für zukünftige Verbesserungen}:
| 31 | reserviert | 16 | 15 | EE(0:15) | 0 |
EE(0:15) Endpoint Event. Ein Bit pro Endpunkt. Das Bit 0 wird dem Endpunkt 0 zugewiesen. Das Bit 1 dem Endpunkt 1,
etc. Gibt an, daß ein Ereignis bei einem Endpunkt aufgetreten ist, daß Softwareunterstützung benötigen könnte. Die Bits
werden gelöscht, indem 1 in die zu löschenden Bits geschrieben wird.
[0150] Dieses Bit wird gesetzt, nachdem der Status von dem Endpunktcontroller in dem Speicher auf CWBS geschrieben
wurde.
[0151] Wenn das CW.IC-Bit des Steuerwortes für diesen Endpunkt gesetzt ist, tritt das Ereignis auf, wenn CWBS in
eine der Fertig- oder Fehlerbedingungen geschrieben wird oder disabled oder unterbrochen ist. {8, 9, 10, 11, 12, 13, 14,
15}. Für isochrone Übertragungen wird der Ausgangs-Wartestatus auch als Beendigungsstatus angesehen {4, 5, 6}.
[0152] Wenn das CW.IE-Bit des Steuerwortes für diesen Endpunkt gesetzt ist, tritt das Ereignis auf, wenn CW.IS in einen der Fehlercodes geschrieben wird oder disabelt {10, 11, 12, 13, 14, 15}. Dies umfaßt nicht den CRC-Fehler und Bitstuffingfehler-Codes außer für isochrone Übertragungen.
[0152] Wenn das CW.IE-Bit des Steuerwortes für diesen Endpunkt gesetzt ist, tritt das Ereignis auf, wenn CW.IS in einen der Fehlercodes geschrieben wird oder disabelt {10, 11, 12, 13, 14, 15}. Dies umfaßt nicht den CRC-Fehler und Bitstuffingfehler-Codes außer für isochrone Übertragungen.
[0153] Wenn sowohl das CWIC- als auch das CW.IE-Bit des Steuerwortes für diesen Endpunkt gesetzt sind, tritt das
Ereignis auf, wenn CW.IS in einen der Fehlercodes geschrieben wird oder disabled oder unterbrochen ist. Dies umfaßt
den CRC-Fehler und Bitstuffingfehler-Codes {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}.
[0154] Bemerkung für den Entwurf: Diese Ereignisbits sollten erst nach dem Aktualisieren des Speicherwortes im
Speicher gesetzt werden, nicht nach dem Schreiben des internen CWBS-Wertes. Dies dient dazu, zu verhindern, daß der
Software-Interrupt angezeigt wird, bevor die Software den richtigen Status lesen kann.
Endpunktmaskenregister (EMR)
[0155] Ein doppelwortbreites Lese/Schreibregister. Beim Reset wird dieses Register gelöscht. Das EMR-Registerformat
ist unten angezeigt:
EM(0:15)
{Entwurf für zukünftige Verbesserungen}:
| 31 | reserviert | 16 | 15 | EM(0:15) | 0 |
EM(0:15) Endpoint Mask. Wird für jeden Endpunkt enabelt, um zu ermitteln, ob ein Interrupt erzeugt werden sollte,
wenn das entsprechende Bit gesetzt ist. Das Bit 0 wird dem Endpunkt 0 zugeordnet, das Bit 1 dem Endpunkt 1, etc.
Blocknummernregister (FNR)
[0156] Ein ein Wort breites Nur-Lese-Register. FNR sieht die aktuelle Blocknummer vor, die in dem SOF-Packet empfangen
wird. Bei USB-Reset wird dieses Register auf COOOh gesetzt. Das FNR-Registerformat ist unten gezeigt:
| 15 | 14 | 13 11 | 10 0 |
| MF | UL | reserviert | FN |
20 25 30 35 40 45 50 55 60 65
FN Frame Number (Blocknummer). Die aktuelle Blocknummer, wie sie in dem letzten SOF-Paket empfangen wurde.
Der Wert wird inkrementiert, wenn ein SOF verpaßt wird. Wenn zwei aufeinanderfolgende Blöcke fehlen oder fehlerhaft
DE 199 OO 290 A 1
sind, wird die Blocknummer mit der nächsten Blocknummer aus einem gültigen SOF-Paket geladen. Das niedrigstwertige
Bit der Blocknummer wird dazu verwendet, zu ermitteln, welcher isochrone Puffer als nächstes verwendet werden
sollte.
UL Unlocked Flag. Das unlocked Flag (UL) wird gesetzt, um anzuzeigen, daß wenigstens zwei Blöcke ohne eine erwartete
Blocknummer empfangen wurden und daß diese Blocknummer aus dem nächsten SOF-Paket in FN geladen wird.
Bei einem Reset wird dieses Flag auf 1 gesetzt.
MF Missed SOF-Flag. Das verpaßte SOF-Flag (MF) wird gesetzt und zeigt eine Diskontinuität der Blocknummer an.
Dieses Flag wird gesetzt, wenn die Blocknummer in einem gültigen empfangen SOF nicht mit dem erwarteten nächsten
Wert übereinstimmt. Das Flag wird auch gesetzt, wenn innerhalb von 12060 Bitzeiten (FLMAX mit Toleranz) nach einer
vorhergehenden Änderung von FNR.FN kein SOF empfangen wird. Bei einem Reset wird dieses Flag auf 1 gesetzt.
Blocknummer-Operation
[0157] Bei Empfang eines gültigen SOF-Pakets:
[0157] Bei Empfang eines gültigen SOF-Pakets:
wenn ((revdSOF.framejiumber = FNR+1) oder (FNR.UL ist 1))
{FNR.FN <- revdSOF.framejiumber, FNR.MF
<- 0, FNR.UL <- 0}
sonst {
FNR.FN <- FNR.FN +1;
wenn (FNR.MF ist 1 und FNR.UL ist 0) {FNP UL <-1; ISR.ULD
<-1}
FNR.MF<-1;
FNR.MF<-1;
[0158] Ohne Empfang eines gültigen SOF-Pakets innerhalb von 12060 Bitzeiten (oder 796, wenn das Kurzblockbit
DCR.SFM gesetzt ist) seit dem vorhergehenden Laden von FNR.FN
FNR.FN <-FNR.FN+1;
FNR.FN <-FNR.FN+1;
wenn (FNR.MF ist 1 und FNR.UL ist 0) {FNR.UL <- 1; ISR.ULD <- 1}
FNR.MF<-1.
FNR.MF<-1.
Referenzzählregister (RCR)
[0159] Ein ein-Wort-breites Nur-Leseregister. Wird zum Überwachen eines externen Bezugstaktes verwendet. Bei Reset
wird dieses Register gelöscht. Das RCR-Registerformat ist unten gezeigt:
15 0
RC
RC Reference Count (Bezugszählwert). Dies ist ein Zählwert der Anzahl der steigenden Flanken, die bei dem Bezugseingangssignal
des Taktes des UNIM erfaßt werden (siehe TBD). Wenn es zusammen mit der Blocknummer gelesen wird,
kann es einen präzise Erfassung der relativen Frequenz des externen Bezugstaktes im Verhältnis zum USB-Takt liefern.
Die Differenz kann dem USB-Host über Feedback-Pakete angezeigt werden, um das SOF-Paket zu verzögern oder zu
beschleunigen, damit der USB-Takt sich mit dem externen Takt synchronisiert. Um für die Software einen gemeinsamen
Bezugspunkt aufrechtzuerhalten, wird der Referenzzählwert in dieses Register eingelesen, wenn FNR.FN mit einem
neuen Wert geladen oder inkrementiert wird.
Zeitintervallregister (TIR)
55
55
[0160] Ein ein Wort breites Lese/Schreibregister. Enthält eine Anforderung eines Interrupts, wenn der Blockzähler den
programmierten Offset das nächste Mal erreicht. Bei Reset wird dieses Register gelöscht. Das TIR-Registerformat ist unten
gezeigt:
| 15 8 | 7 0 |
| reserviert | \ TI |
TI Timer Interrupt Interval. Bewirkt, daß ISR.FCI das nächste Mal gesetzt wird, wenn der Blockzähler FNR.FN diesen
Wert erreicht.
DE 199 OO 290 A 1
USB-Indexregister (UIR)
[0161] Ein ein Wort breites Lese/Schreibregister. lndexiert die Register, die in dem USB-Bereich liegen und auf die
nicht häufig zugegriffen werden muß. Das UIR-Registerformat ist unten gezeigt:
| 15 10 | 9 8 | 7 0 |
| res | SEL | Index |
SEL Selector. Wählt den Block der Register, auf die zugegriffen werden soll.
0: Endpunktkanal-Zustandsregister 1: Kanalabbildungsregister
2: Reserviert für USB-Hubregister 3: Diagnoseregister
andere: reserviert.
[0162] Index Index. Sieht den Blockindex für den ausgewählten Registerblock gemäß nachstehender Beschreibung
USB-Datenregister (UDR)
20
[0163] Ein ein Wort breites Nur-Lese/Schreibregister. Lesezugriffe sind auf alle Stellen erlaubt. Das Datenregister wird
mit den Daten geladen, die für das von dem UIR zu jeder Zeit ausgewählte Register gelesen werden. Das Schreiben in
dieses Register ist in dem USB-Hubregister nur erlaubt, wenn UIR.SIL 2 ist. Ein Statusbit wird im Bit 15 definiert, um
anzuzeigen, daß eine Schreiboperation erfolgreich war. Dies ist nur notwendig, wenn die Hubfunktion enthalten ist.
Endpunktkanal-Zustandsindex [0164] lndexiert den Endpunktkanal-Zustandsvektor gemäß des unten gezeigten Indexierschemas:
40
| 7 4 | 3 0 |
| res | EPN |
EPN Endpoint Pipe Number (Endpunktkanalnummer). Gibt die Endpunktkanalnummer an, für die der Endpunktkanal-Zustandsvektor
in dem USB-Datenregister lesen kann.
Endpunktkanalzustand
[0165] Dies ist der 8 Bit-Endpunktkanalzustand, der für jeden Endpunktkanal gespeichert ist, und der für den momentan
indexierten Endpunktkanal zurückgegeben wird. Wenn ein ungültiger Endpunktkanal indexiert wird, wird 0 zurückgegeben.
| 7 | 6 | 5 4 | 3 0 |
| CTL | CWP | res | PES |
EPS Endpoint Pipe State (Endpunktkanalzustand). Der 4-Bit-Endpunktkanalzustand:
50
55
60
65
DE 199 OO 290 A
| Zustand | Symbol | Wert | Ausgang-ISO-Bereit | OS_RDY | 14 |
| Disable | DIS | 0 | Ausgang-ISO-Aktiv | OS_ACT | 15 |
| Eingang-Warten | I_IDL | 1 | |||
| Eingang-Bereit | I_RDY | 2 | |||
| Eingang-Aktiv | I_ACT | 3 | |||
| Angehalten | STL | 4 | |||
| Eingang hat ACK ver paßt |
I_MAK | 5 | |||
| Eingang-ISO-Bereit | ISJU)Y | 6 | |||
| Eingang-ISO-Aktiv | IS_ACT | 7 | |||
| Setup-Bereit | S_RDY | 8 | |||
| Ausgang-Warten | OJDL | .9 | |||
| Ausgang-Bereit | OJRDY | 10 | |||
| Ausgang-Aktiv | O_ACT | 11 | |||
| Setup-Aktiv | S_ACT | 12 | |||
| Ausgang-ISO-Warten | OSJDL | 13 | |||
[0166] Man beachte: Zu einer gegebenen Zeit ist nur ein Endpunktkanal aktiv.
CTL Control. Dies wird bestätigt, wenn der Endpunktkanal Steuerfolgen annehmen kann, welche den SETUP-Token be-50
treffen. Dieses Bit wird gesetzt, nachdem für diesen Endpunktkanal CMD.Setup-Bereit vorlag, und bleibt gesetzt, bis der
Endpunkt disabled wird.
CWP Control Word Pointer (Steuerwortzeiger). Wenn das Steuerwortbit 0 ist, wird auf das Steuerwort 0 dieses Endpunkts
in dem Endpunktfeld als nächstes zugegriffen. Wenn das Steuerwortbit 1 ist, wird auf das Steuerwort 1 für diesen
Endpunkt als nächstes zugegriffen. Es wird auf 0 gesetzt, wenn der Endpunkt enabelt wird.
Kanalabbildungsindex
[0167] Indexiert die Kanalabbildung, um die Abbildung auf den Endpunktkanal mit den folgenden Eingangsparametern
zu bestimmen:
| 7 6 | 5 4 | 3 0 |
| FAN | t TT' | EN |
FAN Function Address Number (Funktionsadreßnummer). Gibt bis zu einer von vier möglichen Funktionsadressen an.
Bei allen Ausführungsformen ist die Funktionsadresse 0 immer vorhanden.
28
DE 199 OO 290 A 1
TT Token Type. Gibt den Tokentyp an:
00 OUT
10 IN
11 SETUP
01 SOF.
[0168] EN Endpoint Number (Endpunktnummer). Gibt die Endpunktnummer an, die auf dem USB empfangen wird 0
bis 15 einschließlich.
Kanalabbildungsdaten
[0169] Ein ein Byte breites Register. Gibt dem Endpunktkanal den aktuellen Wert des USB-Indexregisters zurück, das
sich hierauf bezieht. Das Lesen und Schreiben dieses Registers ist nur gültig wenn DCR.ECE gleich 0 ist. In dieses Register
kann nicht bei allen Ausführungsformen geschrieben werden. Bestimmte Werte der Endpunktnummer sind reserviert.
[0170] 'h FF zeigt an, daß der Wert von PMIR nicht auf einen Endpunktkanal abgebildet wird, 'h FE zeigt an, daß der
Wert von PMIR auf den speziellen SOF-Kanal abgebildet wird, der das FNR-Register enthält.
EPPN
| 7 5 | 4 0 |
| res | HREG |
HREG Hub Register. Gibt die Hub-Register an, auf die über das USB-Datenregister zugegriffen werden soll. Für die tatsächlichen
Registerdefinitionen dieser Register
EPN Endpoint Pipe Number. Gibt die Endpunktkanalnummer an, auf welche die Funktionsadresse, der Tokentyp und die
Endpunktnummer abgebildet werden.
Hub-Register
[0171] Indexiert die USB-Hubregister gemäß dem folgenden Format:
40
50
55
60
65
DE 199 OO 290 A
| Hub-Register | Name |
| 0 | Hub Control A |
| 1 | Hub Control B-DR |
| 2 | Hub Control C-PPCM |
| 3 | Hub Test Control A |
| 4 | Hub Status |
| 6-15 | reserviert |
| 16 | Port 1 Status |
| 17 | Port 1 Status Change |
| 18 | Port 2 Status |
| 19 | Port 2 Status Change |
| 20 | Port 3 Status |
| : 21 | Port 3 Status Change |
| 22 | Port 4 Status |
| 23 | Port 4 Status Change |
| 24 | Port 5 Status |
| 25 | Port 5 Status Change |
| 26 | Port 6 Status |
| 27 | Port 6 Status Change |
| 28 | Port 7 Status |
| 29 | Port 7 Status Change |
| 30-31 | reserviert |
Hub Data. Ein ein Byte breites Register. Erlaubt das Lesen und Schreiben der einzelnen Hubregister. Siehe das LM1050-Datenblatt
für Einzelheiten dieser Register.
Diagnose-Register [0172] Indexiert die USB-Diagnoseregister gemäß dem folgenden Format:
30
DE 199 OO 290 A 1
| 7 5 | 4 0 |
| res | DREG |
DREG Diagnostic Register. Gibt die Diagnose-Register an, auf die durch das USB-Datenregister zugegriffen werden
soll.
soll.
| Diagnose-Register | Name | Reset-Wert | D7 | D6 | D5 | D4 | D3 | D2 | Dl | DO | res | INV | SOF | ACK | TXS | DO | reserviert | Dl | SU | OU T |
IN |
| 0 | i PortO | 00 | VP | VM | RCV | siehe LM1050 interne Spezifikation | OVR | BTE | C5 | MAC State | C16 | res | res | RXDPS | |||||||
| 1 | Hub Port 1 | reserviert | UDR | TXDPS | |||||||||||||||||
| 2 | Hub Port 2 | reserviert | |||||||||||||||||||
| 3 | Hub Port 3 | ||||||||||||||||||||
| 4 | Hub Port 4 | ||||||||||||||||||||
| 5 | Hub Port 5 | ||||||||||||||||||||
| 6 | Hub Port 6 | ||||||||||||||||||||
| 7 | Hub Port 7 | ||||||||||||||||||||
| 8 | Frame Timer 0 | ||||||||||||||||||||
| 9 | Frame Timer 1 | ||||||||||||||||||||
| 10 | Frame Timer 2 | ||||||||||||||||||||
| 11 | Frame Timer 3 | ||||||||||||||||||||
| 16 | PHYA | ||||||||||||||||||||
| 17 | MACA | ||||||||||||||||||||
| 18 | MACB | ||||||||||||||||||||
| 19 | MACC | ||||||||||||||||||||
| 20 | MACD |
31
DE 199 OO 290 A 1
10
15
| 21-23 | reserviert | reserviert | reserviert | cEPP | reserviert |
| 24 | EPCOTA | HS reserviert | rEPP | reserviert | |
| 25 | EPCOTB | DP | BS | Ol | |
| 26 | EPCOT C | ||||
| 27 | EPCOT D | ||||
| 28-30 | reserviert | ||||
| 31 | Revision | ||||
20
25
30
45
50
Endpunktfeld-Basisadreßregister (EABAR)
[0173] Ein Doppelwort-breites Lese/Schreibregister. Basisadresse im Speicher des Blocks, der das Endpunktfeld enthält.
Es muß zu einer 128-Bytegrenze ausgerichtet werden, d. h. die unteren sieben Bits werden auf 0 gesetzt (dies ist
eine 25 Bit-Adresse). Bei Reset wird dieses Register gelöscht. Das EABAR-Registerformat ist unten gezeigt:
| 31 7 | 6 0 |
| EABA | 0000000 |
[0174] Merke: Diese Basisadresse kann modifiziert werden, um schnell zwischen verschiedenen Konfigurationen umzuschalten.
Nach dem Aufwecken aus einem Aussetzmodus während der Konfiguration kann zum Beispiel eine Konfiguration
der Endpunkte wünschenswert sein, und nach der Konfiguration mehrerer verschiedener Konfigurationen kann
es wünschenswert sein, verschiedene Kombinationen aus Schnittstellen und Endpunkten zu verwenden. Beim Umschalten
der Konfigurationen sollten alle Endpunkte disabelt oder angehalten werden, und der Kontext aller Endpunkte wird
dann durch einen Schreib Vorgang in dieses Register verändert.
Pufferseite Α-Register (BPA)
[0175] Ein Doppelwort-breites Lese/Schreibregister. Die oberen Bits der Pufferseite A. Ein 21 Bit-Register, das eine
2K-Byte-Seite definiert, in der Puffer für die Datenübertragung definiert sind. Diese Pufferseite wird von dem Pufferseitenauswahl-Bitwert
in dem Steuerwort bestimmt, das in den Speicher des Endpunktfeldes geschrieben ist. Bei einem Reset
wird dieses Register gelöscht. Das BPA-Registerformat ist unten gezeigt:
| 31 11 | 10 0 |
| BPA | 00000000000 |
Pufferseite B-Register (BPB)
[0176] Ein Doppelwort-breites Lese/Schreibregister. Die oberen Bits der Pufferseite B. Ein 21-Bit-Register, das eine
2K-Byte-Seite definiert, in der Puffer für die Datenübertragung definiert sind. Diese Pufferseite wird von dem Pufferseitenauswahl-Bitwert von dem Steuerwort bestimmt, das in den Speicher in dem Endpunktfeld geschrieben ist. Bei einem
Reset wird dieses Register gelöscht. Das BPB-Registerformat ist unten gezeigt:
11 10
BPB
00000000000
65
DE 199 OO 290 A 1
2.1.9 Verwendungstips
[0177] Dieser Abschnitt sieht Anmerkungen vor, die zum Entwickeln von Treibern nützlich sind, welche das UNIM
verwenden. Dies umfaßt die Initialisierung, Setup/Aufzählung und Datenübertragung für die Steuerung, Bulk-Endpunkte,
Interrupt-Endpunkte und isochrone Endpunkte.
Initialisierung
[0178] Nach einem Modul-Reset erscheint das Modul als ein nichtangeschlossenes Gerät auf dem USB, weil beide
USB-Datenleitungen auf einen niedrigen Pegel gezogen sind. Zu dieser Zeit sind alle Endpunktkanäle disabelt, und der
Funktionszustand ist zurückgesetzt.
[0179] Um ein Gerät als an einen stromaufwärtigen USB-Port angeschlossen zu erfassen, muß DCR.NAT gesetzt sein.
Dadurch zieht das Gerät die USB-Datenleitung nicht mehr auf den niedrigen Pegel.
[0180] Wenn das Gerät einmal angeschlossen ist, muß der Endpunktkanalbetrieb initialisiert werden. Zunächst wird ermittelt,
wieviele Endpunkte für eine Anwendung notwendig sind, sowie die Arten der Endpunkte und die Speichermenge,
die für den Betrieb zugewiesen werden muß. Gestützt hierauf werden EABAR, BPA und BPB initialisiert. Das
EABAR ist der Basiszeiger für das Feld, welche die Steuerworte enthält. Für jeden Endpunkt werden zwei Doppelworte
zugewiesen. Dieser Zeiger muß in eine 128-Byte-Grenze fallen. Die BPA und BPB werden, wenn notwendig, zugewiesen,
um den Basiszeiger für alle Datenübertragungen vorzusehen.
[0181] Da zu dieser Zeit noch nicht ganz feststehen kann, welche Endpunkt enabelt werden sollen und wieviel Speieher
diesen zugewiesen werden soll, müssen nur EABAR und BPA geladen werden, damit die erste Steuerübertragung
verarbeitet werden kann.
[0182] Ein SRDY-Puffer wird in den CWO des Endpunktkanals 0 gelegt und ein SRDY-Befehl wird ausgegeben,
ECR.(SRDY, 0).
[0183] Zu dieser Zeit werden die anderen Bits in dem DCR-Register modifiziert, einschließlich ETE, EPMS nach Bedarf,
und ECE und DEFO werden gesetzt.
[0184] Danach wird das Funktionszustandsregister in den Betriebszustand gesetzt (FSR.Operational).
[0185] Der empfangene Setup wird in den SRDY-Puffer geladen. Nachdem der Setup empfangen wurde, wird er analysiert, um zu ermitteln, wie reagiert werden muß. Wenn es sich um ein SET-ADDRESS-Setup-Paket handelt, wird die Funktionsadresse (EAR) mit der empfangenen Adresse geladen und das Enable-Bit wird gesetzt (FAR.AE). Das DEF-Bit wird mittels Hardware beim nächsten ACK zurückgesetzt welches abhängig von einem IN-Token empfangen wird, oder bei dem nächsten Setup, der an diesem Endpunkt empfangen wird, falls das ACK verloren wurde.
[0185] Der empfangene Setup wird in den SRDY-Puffer geladen. Nachdem der Setup empfangen wurde, wird er analysiert, um zu ermitteln, wie reagiert werden muß. Wenn es sich um ein SET-ADDRESS-Setup-Paket handelt, wird die Funktionsadresse (EAR) mit der empfangenen Adresse geladen und das Enable-Bit wird gesetzt (FAR.AE). Das DEF-Bit wird mittels Hardware beim nächsten ACK zurückgesetzt welches abhängig von einem IN-Token empfangen wird, oder bei dem nächsten Setup, der an diesem Endpunkt empfangen wird, falls das ACK verloren wurde.
Interrupt Endpunkt Operation
[0186] Interrupt-Endpunkte sehen neue Interruptinformation für den Host vor, falls vorhanden. Wenn keine Interruptinformation
anhängig ist, wird NAK zurückgegeben. Zum Initialisieren eines Interrupt-Endpunktkanals wird ein Eingang-Enable-Befehl
an den richtigen Eingangskanal gegeben (ECR. (IRNR, EPN)). Dies bewirkt, daß der Endpunktkanal
in seinen Eingangs-Wartezustand geht, IJTDL. Abhängig von dem Empfang eines HM-Tokens bei einem Endpunkt, der
auf diesen Endpunktkanal abgebildet ist, wird NAK als Handshake zurückgegeben. Wenn Interruptdaten vorhanden sind,
werden sie in einen Puffer geschrieben, das nächste Steuerwort an dem Endpunkt wird in IRDY geschrieben, und ein
Befehl wird ausgegeben (ECR.(IRDY, EPN)), damit der Endpunktkanal in den IRDY-Zustand geht. Abhängig vom Empfang
des nächsten IN-Tokens wird das Steuerwort bei EABAR + EPN + CWP gelesen, und dann werden die Daten übertragen.
Wenn dem Toggle-Protokoll gefolgt wird, muß das Toggle-Enable-Bit des Steuerworts in dem Steuerwort gesetzt
werden. Wenn dieser Endpunkt für ein Ratensteuerungs-Feedback verwendet wird, muß das Toggle-Enable-Bit nicht gesetzt
werden.
[0187] Am Ende der Übertragung, wenn ACK vom Host empfangen wird, wird ein ICMP-Status in den Puffer geschrieben.
Dies bestätigt dann, daß die Übertragung beendet ist. Wenn kein ACK empfangen wurde und Toggle enabelt
ist, wird ein Zwischenstatus ACK-verpaßt (IMAK) geschrieben. Nach dem Schreiben des Status wir der andere Endpunktpuffer
gelesen. Falls der Status eine Beendigung anzeigt, beginnt der Eingang-Warte-Zustand. Wenn in der Zwischenzeit
ein weiteres Ereignis aufgetreten ist und ein weitere IRD Y-Puffer auf das andere Steuerwort gelegt wurde, wird
es zu dieser Zeit gelesen, und der Endpunkt geht wieder in den IRDY-Zustand.
Bulk-Endpunkt Operation
[0188] Bulk-Endpunkte arbeiten ähnlich wie die Interrupt-Endpunkte, abgesehen davon, daß üblicherweise größere
Datenübertragungen betroffen sind, und daß sie in der IN- und OUT-Richtung verlaufen. Bulk-Endpunkte folgen immer
dem Toggle-Protokoll, so daß in allen Steuerworten TE gesetzt ist.
[0189] Ein besonderer Bulk-Endpunkt wird entweder in der Eingangs- oder Ausgangsrichtung verwendet. Wenn ein
Endpunkt das erste Mal initialisiert wird, wird ein Eingangs- oder Ausgangs-Enable-Befehl an die richtige Endpunktkanalnummer
geschickt (ECR(IZOENB, EPN)).
[0190] Bei Eingangsendpunkten werden Daten, wenn sie vorhanden sind in einen Puffer geschrieben, und ein Steuerwort
wird mit einem IRDY-Zustand beschrieben, und TE wird gesetzt. Dann wird ein IRDY-Befehl ausgeführt. Maximal
können zwei Datenpuffer zu einer gegebenen Zeit auf einem Endpunktkanal anhängig sein. Dies ermöglicht ein Doppelpuffer-Verfahren,
falls nötig, um das Senden von NAKs während großer Datenübertragungen zu vermeiden. Die Software-Synchronisierung
erfolgt durch Untersuchen des Pufferzustandes. Nur die vollständigen Pufferzustände können
überschrieben werden.
[0191] Bei Ausgangsendpunkten muß ein Puffer vorbereitet werden, in den die Daten übertragen werden. Wenn dieser
[0191] Bei Ausgangsendpunkten muß ein Puffer vorbereitet werden, in den die Daten übertragen werden. Wenn dieser
DE 199 OO 290 A 1
Puffer vorhanden ist, wird ein Steuerwort mit einem Zeiger darauf in das richtige Steuerwort geschrieben. Das Toggle-Enable-Bit
sollte hier ebenfalls gesetzt werden. Ein ORDY-Befehl wird an den Endpunktkanal übergeben. Nachdem die
Daten für diesen Puffer als Teil des OUT-Tokens empfangen wurden, wird das Steuerwort im Speicher aktualisiert.
[0192] Wenn die Größe des Datenpakets nicht bekannt ist, sollte das Pufferrundungsbit des Steuerwortes gesetzt werden. Dies erlaubt, Pakete, die kleiner als die Puffergröße sind, zu empfangen, ohne daß ein Fehlerstatus geschrieben wird. Wenn das Pufferrundungsbit nicht gesetzt ist, werden empfangene Pakete, die den zugewiesenen Puffer nicht genau füllen, mit einem Datenfehler-Statusfehler geschrieben. In jedem Fall wird der Statusfehler geschrieben, wenn mehr Daten als erwartet für diesen Endpunkt empfangen werden.
[0192] Wenn die Größe des Datenpakets nicht bekannt ist, sollte das Pufferrundungsbit des Steuerwortes gesetzt werden. Dies erlaubt, Pakete, die kleiner als die Puffergröße sind, zu empfangen, ohne daß ein Fehlerstatus geschrieben wird. Wenn das Pufferrundungsbit nicht gesetzt ist, werden empfangene Pakete, die den zugewiesenen Puffer nicht genau füllen, mit einem Datenfehler-Statusfehler geschrieben. In jedem Fall wird der Statusfehler geschrieben, wenn mehr Daten als erwartet für diesen Endpunkt empfangen werden.
[0193] Wenn das Auftreten eines Fehlers während des Empfangs dieser Daten erfaßt wird, wird ein Pufferzwischenzustand
in den Speicher zurückgeschrieben, und beim nächsten OUT-Token wird der Puffer erneut verwendet. Dies bedeutet,
daß die Software sich nur mit dem Vorsehen der Puffer befassen muß, welche die Daten empfangen sollen, und nicht
mit den Verstrickungen der Protokolle für erneute Versuche.
Isochrone Endpunktoperation
[0194] Isochrone Endpunkte folgen demselben Schema wie Bulk-Endpunkte, sie folgen jedoch keinem Toggle-Protokoll.
Vielmehr werden sie zu dem niedrigstwertigen Bit des Blocknummernregisters synchronisiert.
[0195] Bei isochronen Eingangsendpunkten werden Daten in eine Warteschlange gelegt, wobei dieselben IRDY-Puffer verwendet werden. Wenn ein ΓΝ-Token bei einem isochronen Endpunkt empfangen wird, wird das Datenpaket gesendet, wenn das niedrigstwertige Bit des Blocknummernregisters mit dem Steuerwortzeiger übereinstimmt. Sonst werden keine Daten gesendet. Dies erlaubt die Synchronisierung der Datenübertragung zu einer bestimmten Blocknummer. Zum Auslösen der Übertragung bei einer bestimmten Blocknummer kann das Blocknummernregister gelesen werden. Ein Interrupt kann angefordert werden (ISR.FCI), indem TIR auf den angeforderten Wert des FNR gesetzt wird, zu dem die Übereinstimmung vorliegen muß. Ein Abgleich erfolgt nur mit den unteren acht Bit, so daß dieses Ereignis bis zu 256 ms in eine Warteschlange gelegt werden kann, bevor es benötigt wird. Wenn dieser Interrupt verarbeitet wird, kann der passende Puffer auf dem Endpunktkanal in eine Warteschlange gelegt werden.
[0195] Bei isochronen Eingangsendpunkten werden Daten in eine Warteschlange gelegt, wobei dieselben IRDY-Puffer verwendet werden. Wenn ein ΓΝ-Token bei einem isochronen Endpunkt empfangen wird, wird das Datenpaket gesendet, wenn das niedrigstwertige Bit des Blocknummernregisters mit dem Steuerwortzeiger übereinstimmt. Sonst werden keine Daten gesendet. Dies erlaubt die Synchronisierung der Datenübertragung zu einer bestimmten Blocknummer. Zum Auslösen der Übertragung bei einer bestimmten Blocknummer kann das Blocknummernregister gelesen werden. Ein Interrupt kann angefordert werden (ISR.FCI), indem TIR auf den angeforderten Wert des FNR gesetzt wird, zu dem die Übereinstimmung vorliegen muß. Ein Abgleich erfolgt nur mit den unteren acht Bit, so daß dieses Ereignis bis zu 256 ms in eine Warteschlange gelegt werden kann, bevor es benötigt wird. Wenn dieser Interrupt verarbeitet wird, kann der passende Puffer auf dem Endpunktkanal in eine Warteschlange gelegt werden.
[0196] Bei isochronen Ausgangs-Endpunkten bestimmt das Toggle-Enable-Bit, wie das LSB des Blocknummernregisters
verwendet wird. Wenn TE nicht gesetzt ist, werden alle Daten in den Speicher geschrieben, wenn jedoch FNR.LSB
nicht gleich CWP ist, wird ein Synchronisierungsfehlerstatus (SYNE) als Pufferzustand geschrieben. Wenn TE gesetzt
ist, werden Daten nur gespeichert, wenn FNR.LSB gleich CWP ist. Wenn ein isochroner Ausgangsstrom mit der Blocknummer
synchronisiert wird, kann der erste Puffer auf TE gesetzt werden, so daß das Schreiben nur beginnt, wenn eine
Übereinstimmung der Blocknummer vorliegt. Dann können alle nachfolgenden Blöcke erfassen, ob es einen Synchronisierungsfehler
gibt.
[0197] Man beachte, daß das Blocknummernregister bis zu zwei Blöcke weiterzählt, selbst wenn der SOF vorübergehend verlorengeht. Sollte der SOF für mehr als zwei Blöcke verlorengehen, wird Unlocked angezeigt (ISR.UL), wobei zu dieser Zeit alle nachfolgenden isochronen Übertragungen mit Vorsicht behandelt oder beendet werden sollen, bis der Blocknummernzähler wieder synchron läuft.
[0197] Man beachte, daß das Blocknummernregister bis zu zwei Blöcke weiterzählt, selbst wenn der SOF vorübergehend verlorengeht. Sollte der SOF für mehr als zwei Blöcke verlorengehen, wird Unlocked angezeigt (ISR.UL), wobei zu dieser Zeit alle nachfolgenden isochronen Übertragungen mit Vorsicht behandelt oder beendet werden sollen, bis der Blocknummernzähler wieder synchron läuft.
S teuerendpunkt- Operation
[0198] In einem üblichen System ist der Endpunkt 0 immer ein Steuerendpunkt. Andere Endpunkte dürfen auch Steuerendpunkte
werden. Diese Funktion wird unterstützt.
[0199] Bei einem Steuerendpunkt sollten das Steuerwort 1 und das Steuerwort 0 immer zusammengeschrieben werden.
Die Statusphase und das SRDY für die nächste Steuerübertragung sollten zum Beispiel immer zusammengeschrieben
werden. Erst nach der Erfassung eines OCMP in CWO aufgrund eines Empfangs eines neuen Setup sollten das Steuerwort
und/oder CWO aktualisiert werden. Wenn eine ungerade Anzahl Datenpakete während der Datenphase einer Steuerwort-Lese-
oder Schreiboperation gesendet werden, bevor die Statusphase gesendet wurde, kann es notwendig sein,
den Steuerwortzeiger einzustellen, weil die Statusphase in das Steuerwort 1 gelegt werden muß, und der nächste SRDY-Puffer
muß in das Steuerwort 0 gelegt werden. Um dies zu erreichen, ist es möglich, entweder einen SKIP-Puffer einzufügen
oder einen CWP-Toggle-Befehl auszuführen, bevor der ORDY/TRDY-Befehl für den Statusphasen-Puffer ausgeführt
wird.
[0200] Sollte ein SETUP-Token bei einem Steuerendpunkt erfaßt werden, für den momentan kein SRDY-Puffer zur
Verfügung steht, wird das Möglichste getan, den Setup zu empfangen und in dem Datenpfad zu speichern. Wenn ein gültiger
Setup empfangen wurde, wird das ISR.HST-Ereignis bestätigt. Abhängig von dem ISR.HST-Interrupt sollten ein
SRDY-Puffer in das Steuerwort 0 und ein SRDY-Befehl geschrieben werden. Dies bewirkt, daß der anhängige Setup in
den Speicher geschrieben wird. Der SRDY-Befehl bewirkt, das der Endpunkt als ein Steuerendpunkt behandelt wird, und
er bleibt gesetzt, bis ein Eingabe-Enable oder Ausgabe-Enable-Befehl ausgeführt wird. Der SRDY-Puffer sollte so
schnell wie möglich vorgesehen werden, weil dann, wenn das HST-Bit gesetzt ist, es den Datenpfad für mögliche zusätzliche
Datenübertragungen blockiert. In der Zwischenzeit werden alle Token mit NAK quittiert, falls anwendbar. Die Implikationen
dieses ISO-Verkehrs können beträchtlich sein und müssen beachtet werden, geradeso wie der Fall eines
Dienstverlustes.
[0201] Nach dem Empfang eines Setups wird er von der Firmware überprüft, um die richtige Antwort zu bestimmen.
An diesem Punkt setzt die Firmware zusätzliche Eingangs- oder Ausgangspuffer nach Bedarf ein. Wenn der Setup ein
von der Funktion nicht unterstützter Befehl ist, wird ein neuer SRDY-Puffer in das Steuerwort 0 gelegt, und der SRDY-Befehl
wird ausgegeben. Dies bewirkt, daß alle Token an diesem Endpunkt eine STALL-Quittung zurückgeben, bis der
nächste Setup empfangen wird. In der Zwischenzeit, während die Firmware den Setup analysiert, werden als Antwort auf
Token NAKs gesendet.
DE 199 OO 290 A 1
2.1.10 Bemerkungen für die Umsetzung
Registerschnittstelle
Registerschnittstelle
[0202] Man beachte, daß alle Register in dem Kernbus-Taktbereich realisiert sind. Register, auf die mit dem USB-Index
zugegriffen wird und Datenregister sind in dem USB-Taktbereich realisiert. Viele der Register erfordern asynchrone
Handshakes, um die Taktbereiche zu überschreiten. J
οίΐΤ^Η^ΐττΐ 7, EndPunkt A kanal ineinem sei^r Bereitzustände ist, muß abhängig von dem Empfang eines IN-OUT-
und SETUP-Tokens eine Antwort innerhalb von 6,5 USB-Bitzeiten gegeben werden. Für einen IN-Token besteh
diese Antwort aus einem STALL- oder NAK-Handshakepaket oder einem Datenpaket. Für OUT- und SETUP-Token
Ξ«? Ϊ" darauf vorbereiten, das Datenpaket zu empfangen. In allen Fällen wird das entsprechende
rn^ g verwendet, zu ermitteln, wie die Daten zu übertragen sind
[0204] Die Operation welche den Datenpfad am stärksten prüft, erfolgt bei Empfang eines IN-Tokens während der
ausgewählte Endpunkt in dem Eingabe-Bereit-Zustand ist. In diesem Fall muß das Steuerwort bereit se η und Datei
Kapitel 3
Gerätespezifikationen
Tabelle 3-1 Ausgangssignale
Tabelle 3-1 Ausgangssignale
| Symbol | Figur | Beschreibung | Referenz | Min* | Max* | USB Ausgangssignale | tUoh | USB-Ausgang-Haltezeit | NachR.E>12MHz Takt3 |
0 | 15 ns |
| tUov | USB-Ausgang-Gültigzeit | NachR.E>12MHz Takt3 |
|||||||||
a. Der USB-Takt von 12 MHz ist ein interner Takt und nur als Referenz angegeben.
Tabelle 3-1 Eingangssignale
| Symbol | Figur | Beschreibung | Referenz | Min* | Max* | USB Eingangssignale |
USB
too» (min 0 ns)
t( 15 ns)
t( 15 ns)
USB12MCLK
USBSUSPEND
Figur 3-1 USB-Aussetz-Zeitablauf
15
20
25
30
35
40
45 50 55 60 65
DE 199 OO 290 A
USB12MCLK
USBPOUT
USBNOUT
ΛI
Figur 3-2 Ablauf der USB-Sendesignale
USB12MCLK USBTXOE
USBPOUT USBNOUT
Figur 3-3 USB OE-Zeitablauf 0:8 ns Verzögerung
USB Bus
D+-
D--
0:8 ns Verzögerung
0:16 ns Verzögerung
USBRPlN
USBRNIN
USBRCV
Beachte: Systemanforderungen für USB-Transceiver Figur 3-4 Verzögerung der USB-Empfangssignale
[0205] Beachte: USBXCUO und USBXCUl, Wechselstrom und Gleichstrom erfüllen die Anforderung, die in Kapitel
7 der Universal Serial Bus Specification Version 1.0 spezifiziert sind.
ANHANG A REGISTERLISTE
[0206] Im folgenden wird eine Liste für die schnelle Bezugnahme auf die UNIM-Register angegeben. Der erste Abschnitt
listet Register des Moduls auf. Der zweite Abschnitt zeigt das Layout jedes Registers in derselben Reihenfolge.
36
DE 199 OO 290 A 1
A.I ZUSAMMENFASSENDE REGISTERLISTE
| i | Registername | Größe | Adresse | Zugriffs· typ |
Wert nach ; Reset S |
|
|
i
1 |
DCR | Wort | FFFF CSOO16 | R/W | 000O16 j | |
| I | FSR | Wort | FFFF C50416 | R/W | 000O16 ! | |
| I j |
TCR | Wort | FFFF C50816 | R/W | 009O16 | |
| I I |
FAR | Wort | FFFF C50C16 | R/W | 000O16 | |
| I i |
ECR | Wort | FFFF C510! 6 | R/W | 000O16 ι | |
| ISR | Wort | FFFF CSU16 | R/W | 000O16 i | ||
| IMR | Wort | FFFF CSIB16 | R/W | 000O16 ! | ||
| EER | Wort | FFFF C51C16 | R/W | 000O16 j | ||
| EMR | Wort | FFFF 052O16 | R/W | , 000O16 : | ||
| USB I/F | FNR | Wort | FFFF C52416 | R/W | COOO16 j | |
| reserviert | Wort . | , FFFF C52816 | . R | I 000O16 ■ | ||
| RCR ... | Wort | ; FFFF 052C16 | I R/W | ; 000O16 | ||
| TlR | Wort | ; FFFF 053O16 | ■ RW | : 000O16 | ||
| UIR | Wort | ' FFFF C53416 | R/W | 000O16 | ||
| UDR | . Wort | ' FFFF C53816 | R/W | 000O16 | ||
| reserviert | Wort | FFFF 053C16 | R | 000O16 | ||
| EABAR | Doppelwort | ! FFFF C54016 | FVW | 0000_00O016 | ||
| BPA | Doppelwort | : FFFF C54416 | R/W | 1 0O00_0OO016 | ||
| BPB | Doppelwort | FFFF C548ie | R/W | 0000_000016 |
37
DE 199 OO 290 A
A.2 REGISTER LAYOUT
UNIM Register
DCR
FSR TCR FAR ECR
IMR EER EMR FNR RCR
UDR EABAR BPA BPB
| 31 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | reserviert | reserviert | HST | ULD | FCI | VADJ | AE | 4 | 3 | 2 | res | 1 | O | CADJ | FA | EPN | SOFC | EdPC | RSMC | SD5 | T~ CMD | SD | RSTl | SEC | ECI | EM(0:15) | MF | UL | reserviert | FN | RC | reserviert | SEL | reserviert | TI | EABA | BPA | 0000000 | ooooooooooo |
| 'esDl· | SFM | res | ETE | reserviert | EPMS | reserviert | reserviert | HST | ULD | FCI | DEF | ECE | NAT | SOFC | EOPC | RSMC | SD5 | SD | RSTI | SEC | ECI | reserviert | Index | BPB | 00000000000 | |||||||||||||||||||||||||
| reserviert | FS1 | FSO | EE(0:15) | Daten | ||||||||||||||||||||||||||||||||||||||||||||||
| reserviert | ||||||||||||||||||||||||||||||||||||||||||||||||||
| reserviert | ||||||||||||||||||||||||||||||||||||||||||||||||||
Claims (1)
- Patentansprüche1 Verfahren zum Betreiben einer USB-Einrichtung, wobei die USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadressen-Enablebit aufweist, wobei das Voreinstellungsadressen-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht, mit folgenden Verfahrensschritten:Empfang eines EIN-Tokens von einem Host;Senden eines DATAl-Pakets an den Host;Empfangen einer ACK-Quittung von dem Host; undLöschen des Voreinstellungsadreßbits erst nach dem Empfang der ACK-Quittung.2 Verfahren zum Betreiben einer USB-Einrichtung, wobei die USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadressen-Enablebit aufweist, wobei das Voreinstellungsadressen-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht, mit folgenden Verfahrensschritten:Empfangen eines ΕΓΝ-Tokens von einem Host;Senden eines Null-Längen-DATAl-Pakets an den Host:Empfangen eines SETUP-Pakets von dem Host; undLöschen des Voreinstellungsadressen-Enablebits bei Empfang des SETUP-Pakets.3. Verfahren nach Anspruch 2, bei dem ferner während einer Zeitablaufperiode auf den Empfang einer ACK-QuitrVeSTefzunfBetreiben eines USB-Netzes, wobei das USB-Netz einen Host und mehrere Einrichtungen aufweist und wobei die Einrichtungen eine Voreinstellungsadresse und Voreinstellungsadressen-Enablebit aufweisen, wobei das Voreinstellungsadressen-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht, mit folgenden Verfahrensschritten: Senden eines EIN-Tokens von dem Host an eine erste Einrichtung; Empfangen des EIN-Tokens bei der ersten Einrichtung; Senden eines DATAl-Pakets von der ersten Einrichtung an den Host; Empfangen des DATAl-Pakets bei dem Host; Senden einer ACK-Quittung von dem Host an die erste Einrichtung;Senden eines SETUP-Tokens von dem Host an eine zweite Einrichtung; und »wn'ttnoLöschen des Voreinstellungsadressen-Enablebits der ersten Einrichtung bei Empfang entweder der ACK-Quittung oder des SETUP-Tokens.38DE 199 OO 290 A 15. USB-Einrichtung mit einem Voreinstellungsadressen-Enablebit, bei der dann, wenn das Voreinstellungsadressen-Enablebit gesetzt ist, die USB-Einrichtung auf eine Voreinstellungsadresse antwortet, und wenn das Voreinstellungsadressen-Enablebit gelöscht ist, die USB-Einrichtung auf die Voreinstellungsadresse nicht antwortet, und bei
der das Voreinstellungsadressen-Enablebit bei Empfang einer ACK-Quittung während einer Statusstufe einer Steuerübertragung gelöscht wird.6. USB-Einrichtung nach Anspruch 5, bei der das Voreinstellungsadressen-Enablebit auch gelöscht wird, nachdem
während der Statusstufe der Steuerübertragung ein DATAl-Paket gesendet wird und/oder ein SETUP-Token für
eine Steuerübertragung von einer anderen Einrichtung empfangen wird.Hierzu 7 Seite(n) Zeichnungen 1039
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US392598 | 1973-08-29 | ||
| US09/003,925 US6353866B1 (en) | 1998-01-07 | 1998-01-07 | Apparatus and method for initializing a universal serial bus device |
| US09/003925 | 1998-01-07 |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| DE19900290A9 true DE19900290A9 (de) | |
| DE19900290A1 DE19900290A1 (de) | 1999-07-08 |
| DE19900290B4 DE19900290B4 (de) | 2005-02-24 |
Family
ID=21708254
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19900290A Expired - Fee Related DE19900290B4 (de) | 1998-01-07 | 1999-01-07 | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung |
Country Status (3)
| Country | Link |
|---|---|
| US (2) | US6353866B1 (de) |
| KR (1) | KR100290945B1 (de) |
| DE (1) | DE19900290B4 (de) |
Families Citing this family (39)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6886055B2 (en) * | 1997-12-15 | 2005-04-26 | Clearcube Technology, Inc. | Computer on a card with a remote human interface |
| US6353866B1 (en) * | 1998-01-07 | 2002-03-05 | National Semiconductor Corporation | Apparatus and method for initializing a universal serial bus device |
| US7203787B2 (en) * | 1999-01-25 | 2007-04-10 | Canon Kabushiki Kaisha | Information processing apparatus and method that utilizes stored information about a mountable device |
| GB2350212B (en) * | 1999-02-09 | 2003-10-08 | Adder Tech Ltd | Data routing device and system |
| US6609167B1 (en) * | 1999-03-17 | 2003-08-19 | Adaptec, Inc. | Host and device serial communication protocols and communication packet formats |
| US6600739B1 (en) * | 1999-06-07 | 2003-07-29 | Hughes Electronics Corporation | Method and apparatus for switching among a plurality of universal serial bus host devices |
| US6708247B1 (en) * | 1999-07-21 | 2004-03-16 | Clearcube Technology, Inc. | Extending universal serial bus to allow communication with USB devices at a remote location |
| US6813251B1 (en) * | 1999-07-27 | 2004-11-02 | Intel Corporation | Split Transaction protocol for a bus system |
| US7836236B2 (en) | 2004-02-12 | 2010-11-16 | Super Talent Electronics, Inc. | Extended secure-digital (SD) devices and hosts |
| US7512082B1 (en) * | 1999-12-14 | 2009-03-31 | Intel Corporation | Tracking transaction status for a bus system providing legacy bus compatibility |
| US7165109B2 (en) * | 2001-01-12 | 2007-01-16 | Microsoft Corporation | Method and system to access software pertinent to an electronic peripheral device based on an address stored in a peripheral device |
| JP3497834B2 (ja) * | 2001-03-30 | 2004-02-16 | 株式会社東芝 | ルートリピータ、usb通信システム、usb通信制御方法 |
| KR100395664B1 (ko) * | 2001-08-20 | 2003-08-25 | 엠텍비젼 주식회사 | 범용 직렬 버스 장치 및 그의 초기화 방법 |
| US7028124B2 (en) * | 2001-09-26 | 2006-04-11 | Intel Corporation | Method and apparatus for dual queue head processing of interrupt endpoints |
| US7162306B2 (en) * | 2001-11-19 | 2007-01-09 | Medtronic Physio - Control Corp. | Internal medical device communication bus |
| US7139839B2 (en) * | 2001-11-26 | 2006-11-21 | Schneider Automation Inc. | Method and apparatus for assigning a network node address |
| US6792478B2 (en) * | 2002-03-29 | 2004-09-14 | Intel Corporation | System and method to configure input/output (IO) devices to use selected pairs of port addresses |
| US7080189B1 (en) * | 2002-05-31 | 2006-07-18 | Cypress Semiconductor Corp. | USB device communication |
| US20040043674A1 (en) * | 2002-08-28 | 2004-03-04 | Dunne Denise E. | DSX jack including contact |
| US6976105B1 (en) * | 2002-12-11 | 2005-12-13 | Cypress Semiconductor Corp. | Apparatus and method for attaching multiple devices to a host |
| US20040122651A1 (en) * | 2002-12-23 | 2004-06-24 | Samsung Electronics Co., Ltd | Apparatus and method for ethernet emulation in a 3RD generation wireless mobile station |
| JP4420647B2 (ja) * | 2003-04-15 | 2010-02-24 | シャープ株式会社 | 制御システム |
| TWI296083B (en) * | 2003-09-29 | 2008-04-21 | Sharp Kk | Communication controller, host-side controller, communication system, usb system, communication equipment, communication method, packet-based communication method, packet-based communication program, and storage medium |
| US7069369B2 (en) * | 2004-02-12 | 2006-06-27 | Super Talent Electronics, Inc. | Extended-Secure-Digital interface using a second protocol for faster transfers |
| US8060670B2 (en) * | 2004-03-17 | 2011-11-15 | Super Talent Electronics, Inc. | Method and systems for storing and accessing data in USB attached-SCSI (UAS) and bulk-only-transfer (BOT) based flash-memory device |
| US7188206B2 (en) * | 2004-10-22 | 2007-03-06 | Conwise Technology Corporation Ltd. | USB compound device without embedded hub and implement method in USB system |
| US20080126628A1 (en) * | 2006-11-29 | 2008-05-29 | Sony Ericsson Mobile Communications Ab | Methods, devices and computer program products for automatically providing an alternate usb configuration of a usb compliant peripheral device for exposure to a host computer |
| US8171502B2 (en) * | 2006-11-29 | 2012-05-01 | Sony Ericsson Mobile Communications Ab | Methods, devices and computer program products for automatically installing device drivers from a peripheral device onto a host computer |
| US8315269B1 (en) | 2007-04-18 | 2012-11-20 | Cypress Semiconductor Corporation | Device, method, and protocol for data transfer between host device and device having storage interface |
| US20080276009A1 (en) * | 2007-05-04 | 2008-11-06 | Joe Mesa | Enabling Efficient Communication Between a Host and Multiple USB Devices |
| TWI448902B (zh) * | 2007-08-24 | 2014-08-11 | Cypress Semiconductor Corp | 具頁存取基礎處理器介面之橋接裝置 |
| US8090894B1 (en) | 2007-09-21 | 2012-01-03 | Cypress Semiconductor Corporation | Architectures for supporting communication and access between multiple host devices and one or more common functions |
| US7895387B1 (en) | 2007-09-27 | 2011-02-22 | Cypress Semiconductor Corporation | Devices and methods for sharing common target device with two different hosts according to common communication protocol |
| US7908421B2 (en) * | 2008-09-30 | 2011-03-15 | Intel Corporation | Universal serial bus endpoint context caching |
| US8370550B2 (en) * | 2010-02-12 | 2013-02-05 | Microsoft Corporation | Rule-based assignment of control of peripherals of a computing device |
| US9104252B2 (en) | 2010-02-12 | 2015-08-11 | Microsoft Technology Licensing, Llc | Assignment of control of peripherals of a computing device |
| US8805855B2 (en) * | 2012-08-17 | 2014-08-12 | International Business Machines Corporation | Efficiently storing and retrieving data and metadata |
| US11023402B2 (en) * | 2019-07-02 | 2021-06-01 | National Instruments Corporation | Switch pruning in a switch fabric bus chassis |
| US11316741B1 (en) * | 2020-11-23 | 2022-04-26 | Netskope, Inc. | Multi-environment networking management system |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| ES2217267T3 (es) * | 1993-06-25 | 2004-11-01 | D2B Systems Co. Ltd. | Nueva inicializacion de direcciones de dispositivos d2b mediante el uso de una direccion por defecto. |
| WO1996041274A1 (en) | 1995-06-07 | 1996-12-19 | Advanced Micro Devices, Inc. | Dynamically reconfigurable data bus |
| US5675813A (en) * | 1995-10-26 | 1997-10-07 | Microsoft Corporation | System and method for power control in a universal serial bus |
| US5751951A (en) | 1995-10-30 | 1998-05-12 | Mitsubishi Electric Information Technology Center America, Inc. | Network interface |
| US5848293A (en) | 1995-11-03 | 1998-12-08 | Sun Microsystems, Inc. | Method and apparatus for transmission and processing of virtual commands |
| US5729721A (en) | 1995-11-13 | 1998-03-17 | Motorola, Inc. | Timebase synchronization in separate integrated circuits or separate modules |
| US5774680A (en) | 1995-12-11 | 1998-06-30 | Compaq Computer Corporation | Interfacing direct memory access devices to a non-ISA bus |
| US5835791A (en) | 1996-03-26 | 1998-11-10 | Vlsi Technology, Inc. | Versatile connection of a first keyboard/mouse interface and a second keyboard/mouse interface to a host computer |
| US5841471A (en) | 1996-09-12 | 1998-11-24 | Eastman Kodak Company | Timing control for a digitally interfaced camera using variable line readout intervals |
| US5818948A (en) | 1996-10-23 | 1998-10-06 | Advanced Micro Devices, Inc. | Architecture for a universal serial bus-based PC speaker controller |
| US5778218A (en) | 1996-12-19 | 1998-07-07 | Advanced Micro Devices, Inc. | Method and apparatus for clock synchronization across an isochronous bus by adjustment of frame clock rates |
| US6009480A (en) * | 1997-09-12 | 1999-12-28 | Telxon Corporation | Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device |
| US6353866B1 (en) * | 1998-01-07 | 2002-03-05 | National Semiconductor Corporation | Apparatus and method for initializing a universal serial bus device |
-
1998
- 1998-01-07 US US09/003,925 patent/US6353866B1/en not_active Expired - Fee Related
-
1999
- 1999-01-06 KR KR1019990000089A patent/KR100290945B1/ko not_active Expired - Fee Related
- 1999-01-07 DE DE19900290A patent/DE19900290B4/de not_active Expired - Fee Related
-
2001
- 2001-09-19 US US09/955,618 patent/US6415343B1/en not_active Expired - Lifetime
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE19900290A9 (de) | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung | |
| DE19900290B4 (de) | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung | |
| DE19900345B4 (de) | Schnittstellenmodul für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion und Vorrichtung zum Anschluß an einen universellen seriellen Bus | |
| DE19900369A9 (de) | Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus | |
| DE19900325B4 (de) | Vorrichtung und Verfahren zum Senden und Empfangen von Daten in eine und aus einer universellen seriellen Buseinrichtung | |
| DE19900369B4 (de) | Vorrichtung zum Anschluß an einen Universal Serial Bus (USB) und Verfahren zum Betreiben eines Steuerendpunktes an einem Universal Serial Bus (USB) | |
| DE19900245B4 (de) | Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host | |
| DE69836426T2 (de) | Steuergerät für einen universellen seriellen Bus | |
| DE3280451T2 (de) | Verfahren zur Initialisierung eines Datenverarbeitungssystems. | |
| DE69936060T2 (de) | Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten | |
| DE69711877T2 (de) | Paralleler, paketierter, intermodul-orientierter hochgeschwindigkeits-steuer- und datenbus | |
| DE69128503T2 (de) | Schnittstellenschaltung für intelligentes Netzwerk | |
| DE102012209016B4 (de) | System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten | |
| EP0929041B1 (de) | Verfahren und Anordnung zum Betreiben eines Bussystems | |
| DE60215833T2 (de) | Mehrkanalschnittstelle für die kommunikation zwischen einrichtungen | |
| DE3546683C3 (de) | Verfahren zum Betreiben einer Datenverarbeitungsanlage | |
| DE102012208803B4 (de) | System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten | |
| DE19581234B4 (de) | Bussteuereinrichtung und Verfahren für eine hierarchische serielle Busanordnung unter Verwendung von Kommunikationspaketen | |
| DE60035882T2 (de) | Protokoll einer zerteilten transaktion für ein bussystem | |
| DE69703732T2 (de) | Asynchrones datenübertragungsgerät zur verwaltung asynchroner datenübertragungen zwischen einem anwendungsprogramm und einer busstruktur | |
| DE3204905C2 (de) | ||
| DE19900331A9 (de) | Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung | |
| DE102007012054B4 (de) | Mehrmasterverkettungszweidrahtseriellbus | |
| DE60205809T2 (de) | Datensteueranlage, elektronisches Gerät und Datenübertragungssteuerverfahren | |
| DE60205305T2 (de) | Datensteueranlage, elektronisches Gerät und Verfahren zur Übertragungssteuerung |