DE19900290B4 - Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung - Google Patents

Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung Download PDF

Info

Publication number
DE19900290B4
DE19900290B4 DE19900290A DE19900290A DE19900290B4 DE 19900290 B4 DE19900290 B4 DE 19900290B4 DE 19900290 A DE19900290 A DE 19900290A DE 19900290 A DE19900290 A DE 19900290A DE 19900290 B4 DE19900290 B4 DE 19900290B4
Authority
DE
Germany
Prior art keywords
endpoint
usb
host
bit
state
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE19900290A
Other languages
English (en)
Other versions
DE19900290A1 (de
DE19900290A9 (de
Inventor
David J. Fensore
Kent Bruce Waterson
Gregory Lewis Dean
Robert Macomber
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Publication of DE19900290A9 publication Critical patent/DE19900290A9/de
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19900290A1 publication Critical patent/DE19900290A1/de
Application granted granted Critical
Publication of DE19900290B4 publication Critical patent/DE19900290B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • G06F13/426Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Small-Scale Networks (AREA)

Abstract

Verfahren zum Betreiben einer USB-Einrichtung, wobei die USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadressen-Enablebit aufweist, wobei das Voreinstellungsadressen-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht, mit folgenden Verfahrensschritten:
Empfang eines EIN-Tokens von einem Host;
Senden eines DATA1-Pakets an den Host;
Empfangen einer ACK-Quittung von dem Host; und
Löschen des Voreinstellungsadreßbits erst nach dem Empfang der ACK-Quittung.

Description

  • 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.
  • Figure 00190001
  • 1.1 Externe Schnittstelle
  • Tabelle 1-1. Modulpins, die mit externen Pins verbunden sind
    Figure 00200001
  • Figure 00210001
  • 1.2 Interne Architektur auf Chipebene
  • Figure 00210002
  • 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.
  • Figure 00240001
  • 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.
  • Wenn EPMS = 0:
    Figure 00280001
  • Wenn EPMS = 1:
    Figure 00280002
  • 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.
  • Figure 00300001
  • 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.
  • Figure 00340001
  • 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.
  • Figure 00350001
  • 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.
  • Figure 00400001
  • 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:
    Figure 00450001
  • 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:
    Figure 00460001
    Figure 00470001
  • 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:
    Figure 00480001
  • 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:
    Figure 00480002
    [Entwurfsverbesserung für Mehrfachendpunktgerät]
    Figure 00490001
  • 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:
    Figure 00490002
  • 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:
    Figure 00530001
  • 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:
    Figure 00550001
    {Konzept für zukünftige Verbesserungen}:
    Figure 00550002
  • 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:
    Figure 00570001
    {Entwurf für zukünftige Verbesserungen}:
    Figure 00570002
  • 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:
    Figure 00570003
  • 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:
    Figure 00580001
  • 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
    Figure 00580002
  • 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:
    Figure 00590001
  • 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:
    Figure 00590002
  • 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:
    Figure 00600001
  • 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:
    Figure 00600002
  • 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.
    Figure 00610001
  • EPS Endpoint Pipe State (Endpunktkanalzustand). Der 4-Bit-Endpunktkanalzustand:
    Figure 00610002
    Figure 00620001
  • 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:
    Figure 00620002
  • 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.
    Figure 00630001
  • 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:
    Figure 00630002
  • 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
    Figure 00640001
  • 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:
    Figure 00650001
  • DREG Diagnostic Register. Gibt die Diagnose-Register an, auf die durch das USB-Datenregister zugegriffen werden soll.
  • Figure 00650002
  • Figure 00660001
  • 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:
    Figure 00660002
  • 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:
    Figure 00670001
  • 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:
    Figure 00670002
  • 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
    Figure 00740001
  • Tabelle 3-1 Eingangssignale
    Figure 00740002
  • USB
  • Figure 00740003
  • Figure 00750001
  • 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
    Figure 00770001
    A.2 REGISTER LAYOUT
    Figure 00780001

Claims (6)

  1. Verfahren zum Betreiben einer USB-Einrichtung, wobei die USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadressen-Enablebit aufweist, wobei das Voreinstellungsadressen-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht, mit folgenden Verfahrensschritten: Empfang eines EIN-Tokens von einem Host; Senden eines DATA1-Pakets an den Host; Empfangen einer ACK-Quittung von dem Host; und Löschen des Voreinstellungsadreßbits erst nach dem Empfang der ACK-Quittung.
  2. Verfahren zum Betreiben einer USB-Einrichtung, wobei die USB-Einrichtung eine Voreinstellungsadresse und ein Voreinstellungsadressen-Enablebit aufweist, wobei das Voreinstellungsadressen-Enablebit die Verwendung der Voreinstellungsadresse ermöglicht, mit folgenden Verfahrensschritten: Empfangen eines EIN-Tokens von einem Host; Senden eines Null-Längen-DATA1-Pakets an den Host: Empfangen eines SETUP-Pakets von dem Host; und Löschen des Voreinstellungsadressen-Enablebits bei Empfang des SETUP-Pakets.
  3. Verfahren nach Anspruch 2, bei dem ferner während einer Zeitablaufperiode auf den Empfang einer ACK-Quittung gewartet wird.
  4. Verfahren zum Betreiben eines USB-Netzes, wobei das USB-Netz einen Host und mehrere Einrichtungen aufweist, und wobei die Einrichtungen eine Voreinstellungsadresse und Voreinstellungsadressen-Enablebit aufweisen, wobei das Voreinstellungsadressen-Enablebit die Verwendung der Voreinstellugnsadresse ermöglicht, mit folgenden Verfahrensschritten: Senden eines EIN-Tokens von dem Host an eine erste Einrichtung; Empfangen des EIN-Tokens bei der ersten Einrichtung; Senden eines DATA1-Pakets von der ersten Einrichtung an den Host; Empfang des DATA1-Pakets bei dem Host; Senden einer ACK-Quittung von dem Host an die erste Einrichtung; Senden eines SETUP-Tokens von dem Host an eine zweite Einrichtung; und Löschen des Voreinstellungsadressen-Enablebits der ersten Einrichtung bei Empfang entweder der ACK-Quittung oder des SETUP-Tokens.
  5. USB-Einrichtung mit einem Voreinstellungsadressen-Enablebit, bei der dann, wenn das Voreinstellungsadressen-Enablebit gesetzt ist, die USB-Einrichtung auf eine Voreinstel lungsadresse antwortet, und wenn das Voreinstellungsadressen-Enablebit gelöscht ist, die USB-Einrichtung auf die Voreinstellungsadresse nicht antwortet, und bei der das Voreinstellungsadressen-Enablebit bei Empfang einer ACK-Quittung während einer Statusstufe einer Steuerübertragung gelöscht wird.
  6. USB-Einrichtung nach Anspruch 5, bei der das Voreinstellungsadressen-Enablebit auch gelöscht wird, nachdem während der Statusstufe der Steuerübertragung ein DATA1-Paket gesendet wird und/oder ein SETUP-Token für eine Steuerübertragung von einer anderen Einrichtung empfangen wird.
DE19900290A 1998-01-07 1999-01-07 Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung Expired - Fee Related DE19900290B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US392598 1998-01-07
US09/003,925 US6353866B1 (en) 1998-01-07 1998-01-07 Apparatus and method for initializing a universal serial bus device
US09/003925 1998-01-07

Publications (3)

Publication Number Publication Date
DE19900290A9 DE19900290A9 (de)
DE19900290A1 DE19900290A1 (de) 1999-07-08
DE19900290B4 true DE19900290B4 (de) 2005-02-24

Family

ID=21708254

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19900290A Expired - Fee Related DE19900290B4 (de) 1998-01-07 1999-01-07 Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung

Country Status (3)

Country Link
US (2) US6353866B1 (de)
KR (1) KR100290945B1 (de)
DE (1) DE19900290B4 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6886055B2 (en) * 1997-12-15 2005-04-26 Clearcube Technology, Inc. Computer on a card with a remote human interface
US6353866B1 (en) * 1998-01-07 2002-03-05 National Semiconductor Corporation Apparatus and method for initializing a universal serial bus device
US7203787B2 (en) * 1999-01-25 2007-04-10 Canon Kabushiki Kaisha Information processing apparatus and method that utilizes stored information about a mountable device
GB2350212B (en) * 1999-02-09 2003-10-08 Adder Tech Ltd Data routing device and system
US6609167B1 (en) * 1999-03-17 2003-08-19 Adaptec, Inc. Host and device serial communication protocols and communication packet formats
US6600739B1 (en) * 1999-06-07 2003-07-29 Hughes Electronics Corporation Method and apparatus for switching among a plurality of universal serial bus host devices
US6708247B1 (en) * 1999-07-21 2004-03-16 Clearcube Technology, Inc. Extending universal serial bus to allow communication with USB devices at a remote location
US6813251B1 (en) * 1999-07-27 2004-11-02 Intel Corporation Split Transaction protocol for a bus system
US7836236B2 (en) * 2004-02-12 2010-11-16 Super Talent Electronics, Inc. Extended secure-digital (SD) devices and hosts
US7512082B1 (en) * 1999-12-14 2009-03-31 Intel Corporation Tracking transaction status for a bus system providing legacy bus compatibility
US7165109B2 (en) * 2001-01-12 2007-01-16 Microsoft Corporation Method and system to access software pertinent to an electronic peripheral device based on an address stored in a peripheral device
JP3497834B2 (ja) * 2001-03-30 2004-02-16 株式会社東芝 ルートリピータ、usb通信システム、usb通信制御方法
KR100395664B1 (ko) * 2001-08-20 2003-08-25 엠텍비젼 주식회사 범용 직렬 버스 장치 및 그의 초기화 방법
US7028124B2 (en) * 2001-09-26 2006-04-11 Intel Corporation Method and apparatus for dual queue head processing of interrupt endpoints
US7162306B2 (en) * 2001-11-19 2007-01-09 Medtronic Physio - Control Corp. Internal medical device communication bus
US7139839B2 (en) * 2001-11-26 2006-11-21 Schneider Automation Inc. Method and apparatus for assigning a network node address
US6792478B2 (en) * 2002-03-29 2004-09-14 Intel Corporation System and method to configure input/output (IO) devices to use selected pairs of port addresses
US7080189B1 (en) * 2002-05-31 2006-07-18 Cypress Semiconductor Corp. USB device communication
US20040043674A1 (en) * 2002-08-28 2004-03-04 Dunne Denise E. DSX jack including contact
US6976105B1 (en) * 2002-12-11 2005-12-13 Cypress Semiconductor Corp. Apparatus and method for attaching multiple devices to a host
US20040122651A1 (en) * 2002-12-23 2004-06-24 Samsung Electronics Co., Ltd Apparatus and method for ethernet emulation in a 3RD generation wireless mobile station
JP4420647B2 (ja) * 2003-04-15 2010-02-24 シャープ株式会社 制御システム
TWI296083B (en) * 2003-09-29 2008-04-21 Sharp Kk Communication controller, host-side controller, communication system, usb system, communication equipment, communication method, packet-based communication method, packet-based communication program, and storage medium
US7069369B2 (en) * 2004-02-12 2006-06-27 Super Talent Electronics, Inc. Extended-Secure-Digital interface using a second protocol for faster transfers
US8060670B2 (en) * 2004-03-17 2011-11-15 Super Talent Electronics, Inc. Method and systems for storing and accessing data in USB attached-SCSI (UAS) and bulk-only-transfer (BOT) based flash-memory device
US7188206B2 (en) * 2004-10-22 2007-03-06 Conwise Technology Corporation Ltd. USB compound device without embedded hub and implement method in USB system
US20080126628A1 (en) * 2006-11-29 2008-05-29 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically providing an alternate usb configuration of a usb compliant peripheral device for exposure to a host computer
US8171502B2 (en) * 2006-11-29 2012-05-01 Sony Ericsson Mobile Communications Ab Methods, devices and computer program products for automatically installing device drivers from a peripheral device onto a host computer
US8315269B1 (en) 2007-04-18 2012-11-20 Cypress Semiconductor Corporation Device, method, and protocol for data transfer between host device and device having storage interface
US20080276009A1 (en) * 2007-05-04 2008-11-06 Joe Mesa Enabling Efficient Communication Between a Host and Multiple USB Devices
TWI448902B (zh) * 2007-08-24 2014-08-11 Cypress Semiconductor Corp 具頁存取基礎處理器介面之橋接裝置
US8090894B1 (en) 2007-09-21 2012-01-03 Cypress Semiconductor Corporation Architectures for supporting communication and access between multiple host devices and one or more common functions
US7895387B1 (en) 2007-09-27 2011-02-22 Cypress Semiconductor Corporation Devices and methods for sharing common target device with two different hosts according to common communication protocol
US7908421B2 (en) * 2008-09-30 2011-03-15 Intel Corporation Universal serial bus endpoint context caching
US8370550B2 (en) * 2010-02-12 2013-02-05 Microsoft Corporation Rule-based assignment of control of peripherals of a computing device
US9104252B2 (en) 2010-02-12 2015-08-11 Microsoft Technology Licensing, Llc Assignment of control of peripherals of a computing device
US8805855B2 (en) * 2012-08-17 2014-08-12 International Business Machines Corporation Efficiently storing and retrieving data and metadata
US11023402B2 (en) * 2019-07-02 2021-06-01 National Instruments Corporation Switch pruning in a switch fabric bus chassis
US11316741B1 (en) * 2020-11-23 2022-04-26 Netskope, Inc. Multi-environment networking management system

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675813A (en) * 1995-10-26 1997-10-07 Microsoft Corporation System and method for power control in a universal serial bus
US5675571A (en) * 1993-06-25 1997-10-07 D2B Systems Company Limited D2B divice address initialization by use of default address

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996041274A1 (en) 1995-06-07 1996-12-19 Advanced Micro Devices, Inc. Dynamically reconfigurable data bus
US5751951A (en) 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5848293A (en) 1995-11-03 1998-12-08 Sun Microsystems, Inc. Method and apparatus for transmission and processing of virtual commands
US5729721A (en) 1995-11-13 1998-03-17 Motorola, Inc. Timebase synchronization in separate integrated circuits or separate modules
US5774680A (en) 1995-12-11 1998-06-30 Compaq Computer Corporation Interfacing direct memory access devices to a non-ISA bus
US5835791A (en) 1996-03-26 1998-11-10 Vlsi Technology, Inc. Versatile connection of a first keyboard/mouse interface and a second keyboard/mouse interface to a host computer
US5841471A (en) 1996-09-12 1998-11-24 Eastman Kodak Company Timing control for a digitally interfaced camera using variable line readout intervals
US5818948A (en) 1996-10-23 1998-10-06 Advanced Micro Devices, Inc. Architecture for a universal serial bus-based PC speaker controller
US5778218A (en) 1996-12-19 1998-07-07 Advanced Micro Devices, Inc. Method and apparatus for clock synchronization across an isochronous bus by adjustment of frame clock rates
US6009480A (en) * 1997-09-12 1999-12-28 Telxon Corporation Integrated device driver wherein the peripheral downloads the device driver via an I/O device after it is determined that the I/O device has the resources to support the peripheral device
US6353866B1 (en) * 1998-01-07 2002-03-05 National Semiconductor Corporation Apparatus and method for initializing a universal serial bus device

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675571A (en) * 1993-06-25 1997-10-07 D2B Systems Company Limited D2B divice address initialization by use of default address
US5675813A (en) * 1995-10-26 1997-10-07 Microsoft Corporation System and method for power control in a universal serial bus

Also Published As

Publication number Publication date
KR100290945B1 (ko) 2001-05-15
DE19900290A1 (de) 1999-07-08
US20020023189A1 (en) 2002-02-21
US6415343B1 (en) 2002-07-02
US6353866B1 (en) 2002-03-05
KR19990067734A (ko) 1999-08-25

Similar Documents

Publication Publication Date Title
DE19900290B4 (de) Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung
DE19900345B4 (de) Schnittstellenmodul für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion und Vorrichtung zum Anschluß an einen universellen seriellen Bus
DE19900325B4 (de) Vorrichtung und Verfahren zum Senden und Empfangen von Daten in eine und aus einer universellen seriellen Buseinrichtung
DE19900369B4 (de) Vorrichtung zum Anschluß an einen Universal Serial Bus (USB) und Verfahren zum Betreiben eines Steuerendpunktes an einem Universal Serial Bus (USB)
DE19900369A9 (de) Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus
DE19900290A9 (de) Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung
DE19900245B4 (de) Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
DE69836426T2 (de) Steuergerät für einen universellen seriellen Bus
EP0929041B1 (de) Verfahren und Anordnung zum Betreiben eines Bussystems
DE3280451T2 (de) Verfahren zur Initialisierung eines Datenverarbeitungssystems.
DE19900331A9 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE69936060T2 (de) Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten
DE3204905C2 (de)
DE102012209016B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE60215833T2 (de) Mehrkanalschnittstelle für die kommunikation zwischen einrichtungen
DE19900345A9 (de) Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses
DE60309391T2 (de) Datenübertragungssteuerungssystem, Programm und Datenübertragungssteuerungsverfahren
DE19962768B4 (de) Verfahren zum Übertragen von Daten über einen Datenbus mit minimierter digitaler Intersymbolstörung
DE3855599T2 (de) System, das die Auswechselbarkeit der peripheren Einheiten ermöglicht
DE60205305T2 (de) Datensteueranlage, elektronisches Gerät und Verfahren zur Übertragungssteuerung
DE19900331A1 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE4307449C2 (de) Verfahren und Schaltung zur Resynchronisation einer synchronen seriellen Schnittstelle
DE102012209011B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE602004012563T2 (de) Mehrfädiges DMA
DE102007012054B4 (de) Mehrmasterverkettungszweidrahtseriellbus

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8180 Miscellaneous part 1

Free format text: ES ERFOLGT ERGAENZUNGSDRUCK DES FEHLENDEN ANHANGS

8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee