-
Das
Verfahren und die Einrichtung betreffen das Betreiben einer universellen
Buseinrichtung und insbesondere Zuordnung die einer eindeutigen
Funktionsadresse zu einer universellen seriellen Buseinrichtung.
-
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-2320, parallele Ports, PS/2-Schnitttstellen und Game/MIDI Ports.
-
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.
-
Ein
Beispiel der Sterntopologie eines USB-Netzes ist in 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 Verteilterknoten
(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.
-
Die
in 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.
-
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 Einrich tung 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 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.
-
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 Voreinstellungsbit (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.
-
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.
-
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.
-
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.
-
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. Dadurch kommt die Einrichtung in den konfigurierten
Zustand.
-
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.
-
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.
-
Das
Auftreten einer EIN- oder AUS-Datentransaktion in der Steuertransaktion
sieht drei mögliche Transkationsfolgen
vor: eine Steuerschreibfolge, eine Steuerlesefolge und eine Steuer-keine-Daten-Folge. Jede
dieser Folgen ist nun mit weiteren Einzelheiten beschrieben.
-
4A zeigt eine Steuerschreibfolge.
Die Steuerschreibfolge umfaßt
drei Stufen: eine Setup-Stufe, eine
Datenstufe und eine Statusstufe. Die Setup-Stufe besteht aus einer
SETUP-Transaktion 410 mit
einem DATA0 PID. Die SETUP-Transaktion 410 spezifiziert,
daß eine
AUS-Datenstufe folgt. Die Datenstufe besteht aus einer AUS-Transaktion 412 mit
einem DATA1 PID. Der AUS-Transaktion 410 folgt eine AUS-Transaktion 414 mit
einem DATA0 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 EIN-Transaktion 418 mit
einem DATA1 PID.
-
In 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 DATA0 PID. Die SETUP-Transaktion 420 spezifiziert,
daß eine
EIN-Datenstufe folgt. Die Datenstufe besteht aus einer EIN-Transaktion 422 mit
einem DATA1 PID. Der EIN-Transaktion 423 folgt eine EIN-Transaktion 424 mit
einem DATA0 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 DATA1 PID.
-
In 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 DATA0 PID. Die Statusstufe besteht aus einer einzigen AUS-Transaktion 428 mit
einem DATA1 PID.
-
3 zeigt ein Flußdiagramm,
das eine Setup-Transaktion wiedergibt. Die Transaktion beginnt mit
einem SETUP-Token 310, der von dem Host gesendet wird.
Eine Setup-Transaktion umfaßt
immer ein DATA0 PID für
das Datenfeld. Die Einrichtung antwortet durch Senden einer ACK-Quittung,
um die SETUP-Transaktion abzuschließen.
-
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 DATA0- oder ein
DATA1-Paket). Wenn die Einrichtung jedoch vorübergehend kein DATA-Paket zurückgeben
kann, sendet sie stattdessen 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.
-
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 DATA0- oder ein DATA1-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, um 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.
-
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-Transaktionen) enthalten die eindeutige Funktionsadresse
für die
Einrichtung. Die EIN-Transaktion besteht aus dem EIN-Token von dem
Host, einem Null-Längen-DATA1-Paket
von der Einrichtung an den Host und einer ACK-Quittung von dem Host
an die Einrichtung.
-
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 SETUP-Steuerübertragung
zum Zuweisen einer eindeutigen Funktionsadresse hat die Einrichtung
die eindeutige Funktionsadresse empfangen. Diese Adresse wird in
das Funktionsadressenregister der Einrichtung geladen, und das Adreßenablebit
wird gesetzt. Der Host sendet dann einen EIN-Token, um die Statussstufe
der Setup-Steuerübrtragung
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 DATA1-Paket an den Host.
Das DATA1-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 stattdessen ein NAK-Quittungspaket
senden. Wenn die Einrichtung eine Fehlerbedingung erfährt, kann
sie alternativ STALL senden, um anzuzeigen, daß der Host nicht versuchen
sollte, Daten wiederholt zu senden.
-
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.
-
Das
Null-Längen-DATA1-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 DATA1-Paket nicht richtig empfangen
hat.
-
Stattdessen
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.
-
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.
-
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.
-
Die
US-Patentschrift 5,675,571 offenbart ein Kommunikationsbussystem
mit einem einzigen Kanal, wie z.B. das System D2B,
mit dem eine Adressinitialisierung auf verläßliche und Rausch-unempfindliche
Weise ausgeführt
werden kann. Bei der Initialisierung von Geräten derselben Bauart kann es
vorkommen, daß diese Geräte anfangs
dieselbe vom Hersteller Installierte Adresse haben. Die Adresse
umfaßt
Folgebits, die geändert
werden können,
um andere Geräte
zu berücksichtigen.
Gemäß der Patentschrift
werden bei der Initialisierung alle Geräte auf eine Testadresse eingestellt,
während
die installierte Adresse gespeichert wird. Jede Station sucht dann
nach Geräten
mit seiner eigenen installierten Adresse. Falls nach drei Versuchen
keines gefunden wird, wird die gespeicherte Adresse verwendet. Falls
andere Geräte
mit der installierten Adresse gefunden werden, können zur Berücksichtigung
dieser Geräte
die Folgebits geändert
werden.
-
Die
US-Patentschrift 5,675,813 offenbart einen über einen Bus versorgten Hub
mit einer Schaltvorrichtung zur Steuerung der Leistungsverteilung
in einem USB (Universal Serial Bus). Eine einzige Schaltvorrichtung
wird zur Steuerung der Leistungsverteilung zu mehreren Peripheriegeräten, die
mit dem über
den Bus versorgten Hub verbunden sind, verwendet.
-
Es
ist eine Aufgabe der Erfindung, eine robuste Zuweisung einer Funktionsadresse
mit Hilfe einer SETUP-Steuerübertragung
vorzusehen.
-
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.
-
Diese
Aufgabe wird gelöst
durch die Verfahren mit den Merkmalen gemäß den Ansprüchen 1, 2 und 4 und durch die
USB-Einrichtung mit dem Merkmalen gemäß Anspruch 5.
-
Es
ist ein Vorteil der Erfindung, daß sie das undefinierte Zeitfenster
vermeidet, das dem Verlust oder der Beschädigung eines DATA1-Pakets der
Statusstufe folgt.
-
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).
-
Es
ist ein Merkmal der Erfindung, eine Adressenzuweisung in zusammengesetzten
Einrichtungen mit mehreren Funktionsadressen zuzulassen.
-
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 empfängt
einen EIN-Token von einem Host; sendet ein DATA1-Paket an den Host;
empfängt
ACK von dem Host; und löscht
das Voreinstellungsadreßbit
erst nach dem Empfang von ACK.
-
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-DATA1-Paket
an den Host; empfängt
ein SETUP-Paket von dem Host; und löscht das Voreinstellungsadreß-Enablebit
bei Empfang des SETUP-Pakets.
-
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 DATA1-Paket von der ersten Einrichtung an den Host; empfängt das
DATA1-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.
-
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.
-
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 Fig. zeigt:
-
1 ein Blockdiagramm eines
universellen seriellen Bus-Netzes;
-
2 zeigt ein Blockdiagramm
einer bevorzugten Ausführungsform
eines Schnittstellenmoduls für eine
universelle serielle Buseinrichtung gemäß der Erfindung;
-
3 ist ein Flußdiagramm
des Datenablaufs in einem USB-Netz während einer SETUP-Transaktion;
-
4A ist ein Flußdiagramm
des Datenablaufs in einem USB-Netz während einer Steuerschreibübertragung;
-
4B ist ein Flußdiagramm
des Datenablaufs in einem USB-Netz während einer Steuer-Leseübertragung;
-
4C ist ein Flußdiagramm
des Datenablaufs in einem USB-Netz während einer keine-Daten-Steuerübertragung;
-
5 ist ein Flußdiagramm
des Datenablaufs in einem USB-Netz während einer EIN-Transaktion;
-
6 ist ein Flußdiagramm
des Datenablaufs in einem USB-Netz während einer AUS-Transaktion;
-
7 zeigt ein Funktionsadreßregister
für eine
USB-Einrichtung gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
8 zeigt eine Gerätesteuereinrichtung
für eine
USB-Einrichtung gemäß einer
bevorzugten Ausführungsform
der Erfindung;
-
9 ist ein Flußdiagramm
der Zuweisung der Funktionsadressen gemäß einer bevorzugten Ausführungsform
der Erfindung; und
-
10 ist ein Flußdiagramm
einer Steuertransaktion, welche eine eindeutige Funktionsadresse
gemäß einer
Ausführungsform
der Erfindung zuweist und enabelt.
-
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".
-
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.
-
Mit
Bezug auf 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.
-
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.
-
Der
Registersatz 214 umfaßt
ein Funktionsadressenregister und ein Gerätesteuerregister. In 7 ist eine bevorzugte Ausführungsform
eines Funktionsadressenregisters 710 gezeigt. Das Funktionsadressenregister 710 ist
32 Bit lang und bietet Platz für
vier Funktionsadressen.
-
Die
Bits 0 bis 6 des Funktionsadressenregisters 710 bieten
Platz für
eine erste Funktionsadresse, die mit FA0 bezeichnet ist. Das Bit 7 bietet
Platz für
ein erstes Adreßenablebit,
das mit AE0 bezeichnet ist. Die Bits 8 bis 14 des
Funktionsadressenregisters 710 bieten Platz für eine zweite
Funktionsadresse, die mit FA1 bezeichnet ist. Das Bit 15 bietet
Platz für
ein zweites Adreßenabelbit,
das mit AE1 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.
-
Die
vier Funktionsadressen FA0, FA1, FA2 und FA3 zusammen mit den vier
Adreßenabelbits
AE0, AE1, 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, um die Verwendung der Funktionsadresse zu ermöglichen
(enabeln).
-
In 8 ist eine bevorzugte Ausführungsform
eines Gerätesteuerregisters 810 gezeigt.
Das Gerätesteuerregister 810 ist
16 Bit lang.
-
Das
Bit 4 bietet Platz für
ein erstes Voreinstellungsadressen-Enabelbit DEF0, das zu der ersten
Funktionsadresse FA0 gehört.
Das Bit 5 bietet Platz für
ein zweites Voreinstellungs-Enablebit
DEF1, das zu der zweiten Funktionsadresse FA1 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.
-
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.
-
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.
-
Mit
Bezug auf 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 FA0 zu und setzt AE0. DEF0 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 DEF0-Bit zurückgesetzt
wird.
-
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 FA1 zu und setzt AE1. DEF1 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.
-
Abhängig davon,
wie schnell die Funktionsadressen zugeordnet wurden, kann die Einrichtung 210 auf ein
oder mehrere Funktionsadressen und eine voreingestellte Adresse
reagieren.
-
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.
-
Die
Aktivierung (Enable) einer Funktionsadresse gemäß einer bevorzugten Ausführungsform
der Erfindung ist in 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 SETUP-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-DATA1-Paket
sendet. Nach dem Senden des DATA1-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.
-
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.
-
Durch
Löschen
des DEF-Bits erst nach dem Empfang einer ACK-Quittung eines EIN-Pakets
oder eines SETUP-Tokens vermeidet die Einrichtung Probleme im Zusammenhang
mit dem Verlust oder der Beschädigung
eines DATA1-Pakets oder dem Verlust oder der Beschädigung einer
ACK-Quittung.
-
Insbesondere
wenn das DATA1-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 EIN-Token an die voreingestellte Adresse sendet.
-
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.
-
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.
-
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.
-
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
-
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.
-
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 Slavezugang wird dazu verwendet,
auf interne Steuerregister zuzugreifen, und der Masterzugang wird
dazu verwendet, Endpunktdaten zu und von einem RAM zu übertragen.
-
-
1.1 Externe Schnittstelle
-
Tabelle
1-1. Modulpins, die mit externen Pins verbunden sind
-
-
1.2 Interne Architektur
auf Chipebene
-
-
1.2.1 Endpunktcontroller
-
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
Empfangs- und 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
-
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
-
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 μA)
und dennoch der Walk-up-Übergang
auf den Bus erfassen kann.
-
Das
Modul unterstützt
auch eine Verbindung zu einem externen Stand-Alone USB-Transceiver,
wie dem PDIUSBP11 von Phillips.
-
1.2.4 Zukünftige Modulerweiterungen
-
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.
-
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.
-
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.
-
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
-
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
-
- • 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
-
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.
-
2-1 zeigt die obere Ebene dieses Moduls.
-
-
2.1.3 Transceiver
-
Der
interne USB-Transceiver umfaßt
drei Hauptfunktionsblöcke:
Den Differenzialempfä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.
-
Normandy
unterstützt
nur einen Hochgeschwindigkeitstransceiver. Die Leistungserfordernisse
dieses Transceivers sind im Kapitel 7 der Universal Serial Bus Specification
Version 1.0 angegeben.
-
Um
die Signalverschiebung zu minimieren, werden Differentialausgangsschwingungen
des Senders gut ausgeglichen. Für
den Treiber wird eine Anstiegsgeschwindigkeitssteuerung verwendet,
um abgestrahltes Rauschen und Übersprechen
zu minimieren. Die Treiber unterstützen den TRI-STATE-Betrieb,
um einen bi-direktionalen Half-Duplex-Betrieb des Transceivers zu
ermöglichen.
-
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.
-
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
-
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)
-
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 11SB-spezifischen
Ereignissen, wie Reset, Warten und Wiederaufnehmen. Die Ausgangssignale
des Senders des UNIM-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)
-
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.
-
Eine
USB-Funktion ist eine USB-Einrichtung, die Informationen auf dem
Bus senden und empfangen kann. 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.
-
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.
-
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.
-
Ä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.
-
Ein
disabelter Endpunkt oder Endpunkte, die momentan nicht auf einen
Endpunktkanal abgebildet sind, reagieren nicht auf IN-, OUT- oder
SETUP-Token.
-
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.
-
Bei
IN-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
-
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.
-
-
-
Endpunktsteuerung
-
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.
-
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.
-
Wenn
eine IN- oder OUT-Übertragung
von einem Endpunktkanal angefordert 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
-
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.
-
Alle
Ablaufsteuereinrichtungen laufen mit dem USB-Takt von 12MHz. 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.
-
-
Speicherzugriffsleistung
-
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 Zugriff liest die Positions- und Größeninformation
für die
Datenübertragung.
Die Datenübertragung
erfolgt in aufeinanderfolgenden Doppelwort-Lese- oder Schreib-Operationen.
-
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
-
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.
-
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.
-
Der
Endpunkt-Controller hält
auch einen Status aufrecht, um anzuzeigen, wenn er zu demUSB-Bustakt
von 1 kHz sychronisiert 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.
-
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 Ereignis 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.SDS).
-
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.
-
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.
-
Man
beachte, daß eine
Einrichtung im Aussetzbetrieb maximal 500 μA von dem Bus ziehen darf, siehe „GERÄTESPEZIFIKATIONEN" auf Seite 3-55 für Einzelheiten
des Stromverbrauchs von Normandy.
-
Fernwiederaufnahme
-
Wenn
der Host Fernweckrufe von diesem Knoten enabelt hat, sendet Normandy
einen solchen abhängig
von einem lokalen Ereignis, wie einem Interrupt.
-
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
-
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.
-
Die
USB Spezifikation erfordert, daß eine
Einrichtung innerhalb von 10 ms auf USB-Token antworten kann.
-
Einschalt-Resets
-
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
-
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 Endpunkparameter verwendet wird, die für eine bestimmte
Endpunktübertragung
spezifisch sind. Die Beziehung zwischen den verschiedenen Registern
und Speicherparametern ist unten angegeben.
-
-
Endpunktkanalfeld
-
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.
-
Steuerwortformat
-
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.
-
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 Beendigungsstaatus
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.
-
-
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 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.
- 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 CW.TI gesetzt war. Dies wird als
ein Beendigungsstatus angesehen.
- 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.
- TE Toggle Enable. Wird zum Vergleichen/Erzeugen des Wertes des
Datenpaket-Identifikators
(PID) (Data0/Data1) mit dem Steuerwortzeiger verwendet.
0:
Der Daten-Toggle-PID wird bei Ausgangstransaktionen nicht überprüft, und
er wird gestützt
auf den aktuellen Wert des CWP abhängig von IN-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(0) ist.
Dies hat keinen Einfluß auf
Daten, die abhängig
von IN-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 IN-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(0) 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 Data0,1
für Data1.
- 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 IE 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).
0: Verwende Pufferseite A
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 Eingab- 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
-
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 IN,
OUT und SETUP-Token und ACK-Quittungen.
-
2-4 zeigt eine vereinfache Endpunktkanal-Ablaufsteuereinrichtung
zum Verarbeiten von IN und OUT-Transaktionen. Die Verarbeitung von
Steuer-Lese- und Schreibtransaktionen erfolgt auf ähnliche
Weise.
-
-
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.
-
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 IN-Token auf diesen Endpunktkanal abgebildet wird. Keine Antwort
wird bei Out-Token von diesem Endpunktkanal zurückgegeben.
-
Input
Ready I_RDY. 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
IN-Token, welcher von diesem Endpunktkanal empfangen wird, an den
Host zurückgegeben
werden sollen. Der PID-Wert wird als Data0 übertragen, wenn CWP gleich
0 ist, und als Data1, wenn CWP gleich 1 ist.
-
Input
Active I_ACT. 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 emfpangen wird, werden der Pufferstatus zusammen mit dem
aktuellen Wert des Adreß-
und Bytezählers
geschrieben. Dann wird das andere Steuerwort an die sem 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 IS_RDY. 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 IN-Token an den Host zurückgegeben
werden sollen. Der PID-Wert wird unabhängig vom Wert des CWP immer
als DAT0 übertragen.
-
Input
ISO Active IS_ACT. Dieser Zustand wird bei Empfang eines IN-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 O_IDL. In diesem Zustand erwartet der Endpunkt, daß bald ein
Puffer zugewiesen wird. Ein NAK-Handshake wird zurückgegeben,
wenn ein OUT-Token auf diesen Endpunktkanal abgebildet wird. Keine
Antwort wird zurückgegeben,
wenn IN-Token an diesen Endpunktkanal gehen.
-
Output
Ready O_RDY. 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 O_IDL-Zustand aktiviert werden,
nachdem das passende Wort aus dem Endpunktfeld geschrieben wurde, oder
bei Erfassung eines weiteren Ausgabepuffers am Ende einer Übertragung.
-
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 OS_IDL. 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 IN-Token auf diesem Endpunktkanal zurückgegeben.
-
Output
ISO Ready OS_RDY. 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_IDL-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 RDY-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 S_RDY. 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, wird
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
-
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.
-
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.
-
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
-
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.
-
Gerätesteuerregister (DCR)
-
Ein
ein Wort breites Lese/Schreibregister. Das Gerätesteuerregister steuert die
Einschaltsequenz des USB-Knotens. Bei einem Reset wird dieses Register
gelöscht.
Das DCR-Registerformat
ist unten angegeben:
-
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 SE0
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
IN-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.
-
Man
beachte, daß dann,
wenn mehr als eine Adresse unterstützt wird, das niedrigstwertige
DEF-Bit, für
das 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 O-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.
-
Funktions-Zustandsregister
(FSR)
-
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:
-
FS1,
FS0 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.
- 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.
-
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 Übergange
zu erzeugen.
-
Transceiver-Konfigurationsregister
(TCR)
-
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'b00000000, 3'b100, 5'b10000}. Das TCR-Registerformat
ist unten gezeigt:
-
VADJ
Spannungsschwellwert-Einstellung. Steuert die unsymmetrischen Empfängerschwellwerte.
-
CADJ
Stromeinstellung. Steuert den Steuerstrom für die Treiberflankensteigung.
-
Funktionsadreßregister
(FAR)
-
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 – FA0
bis FA3. Das FAR-Registerformat ist unten gezeigt:
[Entwurfsverbesserung
für Mehrfachendpunktgerät]
-
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 FAR gesetzt
ist, wenn das entsprechende Voreinstellungsadreßbit (DEF) nicht gesetzt ist.
-
Endpunktsteuerregister
(ECR)
-
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:
-
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.
- 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 IN-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 IN-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.
- 0111: 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.
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.
- 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.
-
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 anzu zeigen, 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)
-
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:
-
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.
-
RSTD
Reset Detected (Reset erfaßt).
Ein Übergang
auf SE0 wurde erfaßt
und während
minimal 2,5 μs
gehalten, während
der Funktionszustand nicht USB Reset war. Als Reaktion sollte der
Funktionszustand (DCR.FS) auf USBReset gesetzt werden und während wenigstens
100 μs USBReset
bleiben. Nach dem Reset kann der Funktionszustand auf dem USB-Betriebszustand zurückgehen.
-
SD
Suspend Detected (Aussetzen erfaßt). Ein Minimum von 3,0 μs 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 μs 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, SDS
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.
-
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.
-
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 CW0 gesetzt werden,
ein OCMP-Puffer wird auf CW1 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.
-
Man
beachte: Eines der reservierten Bits ist für einen Hub-Interrupt reserviert,
falls diese Funktion enthalten ist.
-
Interrupt Maskenregister
(IMR)
-
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)
-
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:
{Konzept
für zukünftige Verbesserungen}:
-
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.
-
Dieses
Bit wird gesetzt, nachdem der Status von dem Endpunktcontroller
in dem Speicher auf CW.BS geschrieben wurde.
-
Wenn
das CW.IC-Bit des Steuerwortes für
diesen Endpunkt gesetzt ist, tritt das Ereignis auf, wenn CW.BS
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}.
-
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.
-
Wenn
sowohl das CW.IC- 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}.
-
Bemerkung
für den
Entwurf Diese Ereignisbits sollten erst nach dem Aktualisieren des
Speicherwortes im Speicher gesetzt werden, nicht nach dem Schreiben
des internen CW.BS-Wertes.
Dies dient dazu, zu verhindern, daß der Software-Interrupt angezeigt
wird, bevor die Software den richtigen Status lesen kann.
-
Endpunktmaskenregister
(EMR)
-
Ein
doppelwortbreites Lese/Schreibregister. Beim Reset wird dieses Register
gelöscht.
Das EMR-Registerformat ist unten angezeigt:
{Entwurf
für zukünftige Verbesserungen}:
-
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)
-
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 C000h gesetzt. Das FNR-Registerformat ist unten gezeigt:
-
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
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:
-
Bei
Empfang eines gültigen
SOF-Pakets:
-
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
-
Referenzzählregister
(RCR)
-
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:
-
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)
-
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:
-
TI
Timer Interrupt Interval. Bewirkt, daß ISR.FCI das nächste Mal
gesetzt wird, wenn der Blockzähler FNR.FN
diesen Wert erreicht.
-
USB-Indexregister (UIR)
-
Ein
ein Wort breites Lese/Schreibregister. Indexiert die Register, die
in dem USB-Bereich liegen und auf die nicht häufig zugegriffen werden muß. Das UIR-Registerformat
ist unten gezeigt:
-
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
-
Index
Index. Sieht den Blockindex für
den ausgewählten
Registerblock gemäß nachstehender
Beschreibung vor.
-
USB-Datenregister (UDR)
-
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
-
Indexiert
den Endpunktkanal-Zustandsvektor gemäß des unten gezeigten Indexierschemas:
-
EPN
Endpoint Pipe Number (Endpunktkanalnummer). Gibt die Endpunktkanalnummer
an, für
die der Endpunktkanal-Zustandsvektor in dem USB-Datenregister lesen
kann.
-
Endpunktkanalzustand
-
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.
-
EPS
Endpoint Pipe State (Endpunktkanalzustand). Der 4-Bit-Endpunktkanalzustand:
-
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
betreffen. 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
-
Indexiert
die Kanalabbildung, um die Abbildung auf den Endpunktkanal mit den
folgenden Eingangsparametern zu bestimmen:
-
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.
-
TT
Token Type. Gibt den Tokentyp an:
- 00: OUT
- 10: IN
- 11: SETUP
- 01: SOF
-
EN
Endpoint Number (Endpunktnummer). Gibt die Endpunktnummer an, die
auf dem USB empfangen wird – 0
bis 15 einschließlich.
-
Kanalabbildungsdaten
-
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.
-
'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.
-
EPN
Endpoint Pipe Number. Gibt die Endpunktkanalnummer an, auf welche
die Funktionsadresse, der Tokentyp und die Endpunktnummer abgebildet
werden.
-
Hub-Register
-
Indexiert
die USB-Hubregister gemäß dem folgenden
Format:
-
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
-
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
-
Indexiert
die USB-Diagnoseregister gemäß dem folgenden
Format:
-
DREG
Diagnostic Register. Gibt die Diagnose-Register an, auf die durch
das USB-Datenregister
zugegriffen werden soll.
-
-
-
Endpunktfeld-Basisadreßregister
(EABAR)
-
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:
-
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 Schreibvorgang in dieses Register verändert.
-
Pufferseite A-Register
(BPA)
-
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:
-
Pufferseite B-Register
(BPB)
-
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:
-
2.1.9 Verwendungstips
-
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
-
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.
-
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.
-
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 initialisert. 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.
-
Da
zu dieser Zeit noch nicht ganz feststehen kann, welche Endpunkt
enabelt werden sollen und wieviel Speicher diesen zugewiesen werden
soll, müssen
nur EABAR und BPA geladen werden, damit die erste Steuerübertragung
verarbeitet werden kann.
-
Ein
SRDY-Puffer wird in den CW0 des Endpunktkanals 0 gelegt und ein
SRDY-Befehl wird ausgegeben, ECR.(SRDY,0).
-
Zu
dieser Zeit werden die anderen Bits in dem DCR-Register modifiziert,
einschließlich
ETE, EPMS nach Bedarf, und ECE und DEF0 werden gesetzt.
-
Danach
wird das Funktionszustandsregister in den Betriebszustand gesetzt
(FSR.Operational).
-
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
(FAR) 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
-
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.(IENB, EPN)). Dies bewirkt, daß der Endpunktkanal
in seinen Eingangs-Wartezustand
geht, I_IDL. Abhängig
von dem Empfang eines IN-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 I_RDY 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.
-
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 IRDY-Puffer auf das andere Steuerwort gelegt wurde,
wird es zu dieser Zeit gelesen, und der Endpunkt geht wieder in
den I_RDY-Zustand.
-
Bulk-Endpunkt
Operation
-
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.
-
Ein
besonderer Bulk-Endpunkt wird entweder in der Eingangs- oder Ausgangsrichtung
verwendet. Wenn ein Endpunkt das erste Mal initialisiert wird, wird
ein Eingangs- oder Aus gangs-Enable-Befehl an die richtige Endpunktkanalnummer
geschickt (ECR.(I/OENB, EPN)).
-
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.
-
Bei
Ausgangsendpunkten muß ein
Puffer vorbereitet werden, in den die Daten übertragen werden. Wenn dieser
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.
-
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.
-
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
-
Isochrone
Endpunkte folgen demselben Schema wie Bulk-Endpunkte, sie folgen
jedoch keinem Toggle-Protokoll. Vielmehr werden sie zu dem niedrigstwertigen
Bit des Blocknummernregisters synchronisiert.
-
Bei
isochronen Eingangsendpunkten werden Daten in eine Warteschlange
gelegt, wobei dieselben IRDY-Puffer verwendet werden. Wenn ein IN-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.
-
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.
-
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.
-
Steuerendpunkt-Operation
-
In
einem üblichen
System ist der Endpunkt 0 immer ein Steuerendpunkt. Andere Endpunkte
dürfen auch
Steuerendpunkte werden. Diese Funktion wird unterstützt.
-
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 CW0 aufgrund eines Empfangs eines neuen
Setup sollten das Steuerwort und/oder CW0 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/IRDY-Befehl
für den
Statusphasen-Puffer ausgeführt
wird.
-
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.
-
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ückge ben, bis der nächste Setup
empfangen wird. In der Zwischenzeit, während die Firmware den Setup
analysien, werden als Antwort auf Token NAKs gesendet.
-
2.1.10 Bemerkungen für die Umsetzung
-
Registerschnittstelle
-
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.
-
Während ein
Endpunktkanal in einem seiner 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 besteht diese Antwort aus einem STALL- oder NAK-Handshakepaket oder
einem Datenpaket. Für OUT-
und SETUP-Token muß sich
der Endpunktkanal darauf vorbereiten, das Datenpaket zu empfangen.
In allen Fällen
wird das entsprechende Steuerwort gelesen und dazu verwendet, zu
ermitteln, wie die Daten zu übertragen
sind.
-
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 sein, und Daten müssen
bis zu der Zeit bei der MAC-Schnittstelle
zur Verfügung
stehen, bei der die PID fertig übertragen
ist. Der Entwurf sollte für
diesen Fall optimiert werden.
-
Kapitel 3
-
Gerätespezifikationen
-
Tabelle
3-1 Ausgangssignale
-
Tabelle
3-1 Eingangssignale
-
USB
-
-
-
Beachte:
USBXCU0 und USBXCU1, Wechselstrom und Gleichstrom erfüllen die
Anforderung, die in Kapitel 7 der Universal Serial Bus Specification
Version 1.0 spezifiziert sind.
-
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. A.1
ZUSAMMENFASSENDE REGISTERLISTE
A.2
REGISTER LAYOUT