DE19900345A9 - Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses - Google Patents
Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen BusesInfo
- Publication number
- DE19900345A9 DE19900345A9 DE1999100345 DE19900345A DE19900345A9 DE 19900345 A9 DE19900345 A9 DE 19900345A9 DE 1999100345 DE1999100345 DE 1999100345 DE 19900345 A DE19900345 A DE 19900345A DE 19900345 A9 DE19900345 A9 DE 19900345A9
- Authority
- DE
- Germany
- Prior art keywords
- endpoint
- state
- buffer
- channel
- endpoint channel
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000006870 function Effects 0.000 claims abstract description 45
- 239000000872 buffer Substances 0.000 claims description 136
- 230000004044 response Effects 0.000 claims description 26
- 230000008859 change Effects 0.000 claims description 6
- 239000012536 storage buffer Substances 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 17
- 238000000034 method Methods 0.000 abstract description 10
- 238000012546 transfer Methods 0.000 description 35
- 238000013507 mapping Methods 0.000 description 13
- 230000007704 transition Effects 0.000 description 10
- 230000004913 activation Effects 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 208000035139 partial with pericentral spikes epilepsy Diseases 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Abstract
Verfahren und Vorrichtung zur Bereitstellung einer Programmierschnittstelle für ein Gerät an einem Universellen Seriellen Bus. Die Programmierschnittstelle ist so unterteilt, daß ein externer Controller Zwischenübertragungen wie Paketwiederholungen, Handshake-Pakete oder Zwischenantworten auf Fehlerbedinungen nicht handhabt. Das Programmiermodel umfaßt eine Anzahl von Endpunktkanälen, wobei jeder dieser Endpunktkanäle konfiguriert werden kann, um eine von verschiedenen Funktionen bereitzustellen.
Description
DE 199 OO 345 A 1
Beschreibung
Die Erfindung betrifft eine Vorrichtung und ein Verfahren für die Bereitstellung einer Schnittstelle für einen Verbund-Controller
(Verbundsteuereinheit) eines Universellen Seriellen Buses (USB), insbesondere die Bereitstellung einer Synchronisation
zwischen einem Hardware-Schnittstellenmodul und der Steuersoftware.
Der USB ist eine normierte Peripherieschnittstelle für den Anschluß von Personalcomputern an eine große Vielzahl
von Geräten, beispielsweise digitale Telefonleitungen, Monitore, Modems, Mäuse, Drucker, Scanner, Spielcontroller,
Tastaturen und andere Peripheriegeräte. Der USB ersetzt deshalb bekannte Schnittstellen, wie serielle Anschlüsse
RS-232C, parallele Anschlüsse, PS/2-Schnittstellen und Spiel/MTDI-Anschlüsse.
Beim USB nutzen alle angeschlossenen Geräte, die mit einem Personalcomputer mit Hilfe einer einzigen Verbindungsart
verbunden sind, einen "Tiered Star"-Aufbau. Ein Host-Personalcomputer umfaßt einen einzigen USB-Controller.
Der Host-Controller bildet die Schnittstelle zwischen dem USB-Netzwerk und dem Host-Personalcomputer. Der
Host-Controller steuert alle Zugriffe auf USB-Mittel und überwacht die Bus-Topologie. Ein USB-Hub bildet USB-Anschlußpunkte
für USB-Geräte.
Die USB-Hubs und -Geräte können ohne einen kompletten Neustart des USB-Netzwerkes miteinander verbunden
oder voneinander getrennt werden. Auf die Verbindung eines Gerätes oder eines Hubs an einen Aufwärts-Hub wird
der Aufwärts-Hub den Host-Controller über eine Statusänderung informieren. Gemäß dem USB-Protokoll wird der
Host-Controller den Anschluß des Hubs aktivieren, an welchen das Gerät angeschlossen wurde. Der Host-Controller
wird anschließend jedem Gerät eine einmalige funktionelle Adresse zuweisen. Die Anschlüsse werden bei der Zuweisung
der einmaligen funktionellen Adressen durch den Host-Controller 102 der Reihe nach aktiviert. Nach dem Anschluß
eines Verbindungsgerätes weist der Host-Controller jedem Gerät in dem Verbindungsgerät eine einmalige funktionelle
Adresse zu.
Eine USB-Funktion ist ein Teil eines USB-Gerät, welches in der Lage ist, Informationen auf dem Bus zu übertragen
und zu empfangen. Eine Funktion kann eine oder mehrere Konfigurationen haben, wobei jede aus einem oder mehreren
Endpunkten gebildet ist.
Ein Endpunkt ist das Datenzuflußende oder Datenabflußende.
Ein Endpunktkanal dient der Bewegung der Daten zwischen USB und Speicher, und vervollständigt den Weg
zwischen dem USB-Host und dem Endpunkt der Funktion. Ein USB-Gerät kann zu jeder Zeit bis zu 16 derartige Endpunktkanäle
unterstützen. Jeder Endpunktkanal hat dieselbe funktionelle Adresse.
Bei der Initialisierung eines Gerätes assoziiert der Host-Controller
einen Kanal mit den Endpunkt-Funktionen. Der Kanal ermöglicht es dem Host-Controller Daten in und aus
einem Host-Speicherpuffer an die und von den Endpunkten zu bewegen. Auf dem USB können zwei Arten von Kanal-Kommunikationsbetriebsarten
implementiert werden: Strom und Nachricht. Stromdaten haben keine definierte USB-Struktur. Nachrichtendaten haben eine definierte USB-Struktur.
Nachdem der Initialisierungsprozeß abgeschlossen ist, können die Endpunktkanäle speziellen Endpunkten zugeordnet
werden. Entsprechend wird Geräten mit einer Vielzahl von Endpunkt-Funktionen eine Vielzahl von Kanälen
zugeordnet, die jeder mit einem speziellen Endpunkt verbunden sind.
Jeder Endpunkt ist eine adressierbare Einheit auf dem USB. Von ihnen wird verlangt, daß sie auf Token von dem
USB-Host-Controller antworten.
Obwohl ein Gerät ein Vielzahl von Endpunkt-Funktionen umfassen kann, arbeiten diese Endpunkt-Funktionen nicht
notwendigerweise gleichzeitig. Beispielsweise kann ein Multi-Funktionsgerät eine Fax- und eine Digitaltelefon-Funktion
umfassen. Im Verlauf der Initialisierung wird dem Multi-Funktionsgerät eine einmalige funktionelle Adresse
zugewiesen, und die Fax- und die Digitaltelefonfunktion werden jeweils mit unterscheidbaren Endpunkt-Zahlen verbunden.
Während der Initialisierung werden in gleicher Weise Ausganskanäle zur Datenübertragung jeder Funktion
zugeordnet. Ein Ausgangskanal ist mit einer Endpunkt-Nummer für die Fax-Funktion assoziiert und ein Ausgangskanal
ist mit einer Endpunkt-Nummer für die Druckerfunktion assoziiert. Ein Fax und ein Digitaltelefon werden typischerweise
jeder einen isochronen Ausgangskanal verlangen, weil ihre Transaktionen im Echtzeitbetrieb erfolgen
sollten.
Das Betreiben eines USB-Geräts schließt typischerweise ein Schnittstellenmodul ein, welches mit einem USB-Netzwerk
verbunden ist. Das Schnittstellenmodul umfaßt eine Programmierschnittstelle, aufweiche für jede Operation einer
Endpunkt-Funktion zugegriffen werden kann. Die Endpunkt-Funktion schickt Daten an einen Endpunktkanal, so
daß diese über ein USB-Netzwerk übertragen werden können. In gleicherweise empfängt die Endpunkt-Funktion Daten
von einem Endpunktkanal zur Nutzung durch die Funktion.
Um derartige Operationen über ein USB-Netzwerk ausführen zu können, muß die Funktion die Aktionen auf dem
Schnittstellenmodul sorgfältig koordinieren. Beispielsweise muß die Funktion sichern, daß Bulk (Massen-) -Übertragungen
ohne Fehler abgeschlossen werden. Dieses verlangt das Bereitstellen und Akzeptieren passender Handshakes (Quittierungen)
mit einem Host-Controller. Die Zeit, die eine Funktion zur Ausführung derartiger Handshakes benutzt,
begrenzt deren Fähigkeit, andere Operationen auszuführen. Weiterhin können auf einem verrauschten USB-Netzwerk
viele der übertragenen Daten beschädigt werden. Dies erschwert die Arbeit der Funktion, welche passende Antworten
auf beschädigte Daten liefern muß.
Deshalb besteht Bedarf an einem USB-Schnittstellenmodul, welches eine effiziente Programmierschnittstelle für
eine Funktion liefert, und welches von der Funktion einen minimalen Aufwand für die Ausführung der Antworten auf
typische USB-Netzwerk Bedingungen erlaubt.
Aufgabe der Erfindung ist es, eine effiziente Schnittstelle für eine Funktion zu schaffen.
Aufgabe der Erfindung ist es, die Synchronisation zwischen der Hardware eines USB-Geräts und der Steuersoftware
zu verbessern.
Aufgabe der Erfindung ist es weiterhin, ein Programmiermodel mit definierten Endpunkt-Zuständen zu schaffen.
Es ist weiterhin Aufgabe der Erfindung, ein Endpunkt-Befehlsregister
zur Steuerung von Operationen eines Endpunktes mittels einer Funktion zu schaffen.
Es ist Aufgabe der Erfindung, auf Datentransaktionen ohne die Intervention einer Funktion zu antworten.
Es ist weiterhin Aufgabe der Erfindung, einer Funktion zu ermöglichen, alle Pakete für eine Transaktion gleichzeitig
zu etablieren.
Aufgabe der Erfindung ist es weiterhin, ein einzelnes leicht erweiterbares Programmiermodel zur Handhabung aller
Arten von Endpunkten und Schnittstellen zu schaffen.
Nach einem Aspekt der Erfindung nutzt ein USB-Schnittstellenmodul eine Endpunktkanal-Anordnung zum Halten
eines Steuerwortes für jeden einer Vielzahl von Endpunkt-
DE 199 OO 345 A 1
kanälen, wobei jedes Steuerwort Information über den Endpunktkanal-Zustand
und eine Adresse zum Zeigen auf einen Speicherpuffer umfaßt; und ein Endpunkt-Befehlsregister
zum Empfang von Befehlen von einer USB-Funktion, wobei das Endpunkt-Befehlsregister einen ersten und zweiten
Teil mit Daten aufweist, welche eine Endpunkt-Zahl beziehungsweise einen Befehl darstellen, und wobei der Empfang
eines Befehls das Schnittstellenmodul veranlaßt, die Information über den Endpunktkanal-Zustand eines mittels
der Endpunkt-Zahl angezeigten Endpunktkanals dem Befehl entsprechend zu ändern.
Nach einem anderen Aspekt der Erfindung nutzt ein Gerät für den Anschluß an einen USB einen Puffer mit einer HM-Bulk-Konfiguration,
einer Out-Bulk-Konfiguration, einer IN-Isochron-Konfiguration, einer Out-Isochron-Konfiguration,
einer Interrupt-Konfiguration und einer Steuerkonfiguration, wobei die Konfigurationen dynamische Änderungen
erlauben; ein Schnittstellenmodul mit einem Sender-Empfänger zum Anschluß an einen USB und eine Programmierschnittstelle,
wobei das Schnittstellenmodul betreibbar mit dem Puffer verbunden ist; und eine Funktion, welche funktionell
mit der Programmierschnittstelle und dem Puffer verbunden ist, wobei die Funktion das Schnittstellenmodul
für die Übertragung und Empfang von Daten aus dem Puffer steuert, wobei die Funktion empfangene Daten aus dem Puffer
bewegt, wobei die Funktion durch das Schnittstellenmodul zu übertragende Daten in den Puffer bewegt, und wobei
das Schnittstellenmodul auf Paketwiederholungen antwortet, Handshakes akzeptiert und liefert, und eine Antwort auf
Fehlerbedingungen bereitstellt.
Dies und andere Aufgaben, Eigenschaften und Vorteile sind in der folgenden Beschreibung und den dazugehörigen
Zeichnungen offenbart.
Fig. 1 zeigt ein Blockdiagramm eines USB-Geräts mit einem erfindungsgemäßen Schnittstellenmodul.
Fig. 2 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform
eines erfindungsgemäßen Schnittstellenmoduls für ein USB-Gerät.
Fig. 3 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform
des Endpunkt-Controllers gemäß Fig. 2.
Fig. 4 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform
eines Abbildungsregisters.
Fig. 5 zeigt ein Blockdiagramm mit einer bevorzugten Ausführungsform eines Programmiermodels für ein USB-Gerät.
Fig. 6 zeigt ein Flußdiagramm einer bevorzugten Ausführungsform
von Zuständen und Zustandsübergängen des Endpunktes während einer Steuertransaktion.
Fig. 7 zeigt ein Flußdiagramm einer bevorzugten Ausführungsform
mit Zuständen und Zustandsübergängen des Endpunktes.
Die in dieser Anmeldung beschriebene Erfindung ist Bestandteil einer größeren Anzahl von Erfindungen, die in weiteren
Patentanmeldungen desselben Anmelders offenbart sind, und die mittels Referenz zum Bestandteil der vorliegenden
Anmeldung gemacht werden. Es handelt sich um die folgenden Patentanmeldungen: (i) US-Patentanmeldung Nr.
09/003,963 mit dem Titel "Apparatus and Method of Implementing a Versatile USB Endpoint Pipe", (ii) US-Patentanmeldung
Nr. 09/004,003 mit dem Titel "An Apparatus and Method for Implementing a USB Endpoint Pipe with Double
Buffering Support", (iii) US-Patentanmeldung Nr. 09/004,004 mit dem Titel "An Apparatus and Method for
Transmitting and Receiving Data Into and Out of a Universal Serial Bus Device", (iv) US-Patentanmeldung Nr.
09/003,897 mit dem Titel "Apparatus und Method of Transmitting and Reiceiving USB Isochronous Data", (ν) US-Patentanmeldung
Nr. 09/004,002 mit dem Titel "An Apparatus and Method for Handling Universal Serial Bus Control
Transfers", und (vi) US-Patentanmeldung Nr. 09/003,925 mit dem Titel "An Apparatus and Method for Initializing a
Universal Serial Bus Device".
Darüberhinaus ist das Dokument "USB Node Interface Architecture Specification" (Version 0.6) der National Semiconductor
Corporation als Anhang A Bestandteil der vorliegenden Anmeldung.
Unter Bezugnahme auf Fig. 1 wird ein erfindungsgemäßes USB-Gerät 110 beschrieben. Die bevorzugte Ausführungsform
des Geräts erfüllt die USB-Vorschrift, Version 1.0. Sie weist jedoch gegenüber herkömmlichen USB-Geräten
eine Anzahl von Vorteilen auf. Das USB-Gerät UO umfaßt ein USB-Schnittstellenmodul 120, eine Registergruppe
114, einen RAM 112 und eine Bus-Schnittstelleneinheit (BIU) 116. Das Schnittstellenmodul ist mit einem USB-Netzwerk
verbunden, um Daten senden und empfangen zu können.
Das Schnittstellenmodul 120 ist auch mit der Registergruppe
114, dem RAM 112 und der BIU 116 über einen Kernbus 118 verbunden. Der Kernbus 118 ermöglicht dem
Schnittstellenmodul 120 den Zugriff auf die Registergruppe 114 und den RAM 112. Die BIU 216 liefert mittels der Ausführung
von Schreib- und Leseübertragungen als ein Master Zugriff auf den Kern-Adressraum, und liefert Registerzugriff
als ein Slave. Zusätzlich stellt die BIU eine Datenleitung zur Verfügung. Die Datenleitung kann genutzt werden,
um Daten zeitweise auf Ihren Weg zu einem Speicherstelle zu halten.
In Fig. 2 ist das USB-Schnittstellenmodul 120 aus Fig. 1
beschrieben. Das USB-Schnittstellenmodul 120 liefert die Schnittstelle, um ein USB-Gerät 110 mit einem USB-Netzwerk
zu verbinden. Das Schnittstellenmodul 120 umfaßt einen integrierten USB-Sender-Empfänger 214, eine serielle
Schnittstellenmaschine (SIE) (212) und den Endpunkt-Controller 210.
Der Sender-Empfänger 214 liefert die physikalische Schnittstelle mit einem USB-Netzwerk. Der Sender-Empfänger
umfaßt zwei Treiber und Empfänger, welche die physikalischen Schichtvorschriften der Version 1.0 der USB-Vorschriften
erfüllen.
Die serielle Schnittstellenmaschine 212 ist betreibbar mit dem Sender-Empfänger 214 verbunden und weist ein physikalisches
(PHY)-Niveau und ein Medienzugriffs-Steuer (MAC)-Niveau auf. Das physikalische Niveau umfaßt einen
digitalen Zeittakt-Wiederaufnahmeschaltkreis, einen digitalen Pannenfilter, einen EndOfJPacket-Erkennungsschaltkreis
und einen Bit-Stuff-und Bit-Destuff-Logikschaltkreis auf.
Das Medienzugriffs-Steuerniveau umfaßt ein Paket zur Formatierung, zur Erzeugung und zur Überprüfung der zyklischen
Redundanzüberprüfung, und zur Erkennung der Endpunktadresse, und liefert die notwendige Steuerung, für
das Geben der durch den Endpunkt-Controller 210 für den spezifizierten Endpunktkanal bestimmten NAK-, ACK- und
STALL-Antworten. Die serielle Schnittstellenmaschine 212 ist auch dafür verantwortlich, daß USB-spezifische Ereignisse,
wie ein Reset, Suspend und Resume erkannt und übermittelt werden.
Der Endpunkt-Controller 210 ist betreibbar mit der seriellen
Schnittstellenmaschine 212 verbunden und liefert die Schnitt-steile für die USB-Funktionsendpunkte.
Der Endpunkt-Controller 210 arbeitet als ein Master/ Slave auf dem Kernbus 118 und unterstützt alle USB-Endpunkt-Klassen:
Steuerung, Bulk, Isochron und Interrupt. Der Slave-Zugriff wird benutzt, um auf interne Steuerregister
der Registergruppe 114 zuzugreifen. Der Master-Zugriff wird benutzt, um Daten zwischen Endpunkten und einem
DE 199 OO 345 A 1
RAM 112 zu übertragen.
Der Endpunkt-Controller 210 bewahrt separate Zustandsinformation
für jeden Endpunktkanal. Zustandsinformation, die für unmittelbare Entscheidungen verlangt wird, wie z. B.
zum Antworten mit einem NAK- oder STALL-Handshake, wird in dem Endpunkt-Controller 210 zu jeder Zeit für alle
Endpunktkanäle in einem teilweisen Endpunktkanal-Speicher gehalten.
Diese Information wird benutzt, um die Medienzugriffs-Steuerschicht
der seriellen Schnittstellenmaschine 212 beim Geben der passenden ACK-, NAK- und STALL-Antwort zu
führen. Andere für den Endpunkt-Betrieb notwendige Information wird in einer Endpunkt-Anordnung des RAMs 112
gehalten.
Unter Bezugnahme auf Fig. 3 wird die Struktur des Endpunkt-Controllers
210 im Detail beschrieben. Der Endpunkt-Controller 210 umfaßt einige funktionelle Blöcke.
Insbesondere umfaßt der Endpunkt-Controller 210 eine Medienzugriffs-Steuerschnittstelle
302, einen Gerätefunktionsblock 304, eine Endpunkt-Zustandsmaschine 306, einen
Endpunktkanal-Teilspeicher (PEPS) 308, einen Adressgenerator 310 und ein Daten-Ausrichtungsmultiplexer 312.
Die Medienzugriffs-Steuerschnittstelle 302 ist mit der Endpunkt-Zustandsmaschine 306 und dem Daten-Ausrichtungsmultiplexer
312 verbunden, um für das Medienzugriffs-Steuerniveau
der seriellen Schnittstellenmaschine 212 eine Schnittstelle zu liefern. Einige Bereiche des Endpunkt-Controllers
202 arbeiten mit einem Taktgeber auf dem Kernbus 118. Andere Bereiche arbeiten mit einem lokalen Taktgeber
des Endpunkt-Controllers 210. Die Medienzugriffs-Steuerschnittstelle 302 synchronisiert die Datenbytes zwischen
den verschiedenen Bereichen mit einem asynchronen Handshake für jedes aus dem Endpunkt-Controller 210
übertragene Byte.
Der Gerätefunktionsblock 304 führt Gerätefunktionen aus, wie die Adressüberprüfung und -erzeugung. Der Gerätefunktionsblock
ist betreibbar mit der Endpunkt-Zustandsmaschine 306 verbunden, um Informationen in Bezug auf
den Endpunktkanal zu liefern, auf welchen gegenwartig zugegriffen wird.
Die Endpunkt-Zustandsmaschine 306 führt Funktionen bezüglich der Bewahrung des Zustandes eines aktiven Endpunktkanals
aus. Die Zustandsmaschine 306 bewahrt den Zustand eines aktiven Endpunktkanals mit definierten Übergängen,
um Hardware- und Software-Wechselwirkungen zu synchronisieren. Der gegenwärtige Zustand ist für einen
Host-Controller über ein Endpunkt-Zustandsregister sichtbar. Alle Endpunktkanäle teilen sich deshalb die Endpunkt-Zustandsmaschine
306.
Der Endpunktkanal-Teilspeicher 308 speichert zu jeder Zeit für jeden Endpunktkanal Zustandsinformationen, welche
für unverzügliche Entscheidungen, wie das Antworten mit einem NAK- oder STALL-Handshake verlangt wird.
Der Adressgenerator 310 liefert die Adressen, die für das Lesen und Schreiben in den RAM über den Kernbus notwendig
sind.
Der Daten-Ausrichtungsmultiplexer 312 stellt die vor der
Übertragung auf dem Kernbus notwendigen Datenbyte-Ausrichtungen zur Verfügung.
Eine bevorzugte Ausführungsform der erwähnten Endpunktkanal-Anordnung
wird im folgenden im Detail beschrieben. In Fig. 5 ist ein bevorzugtes Programmierungsmodell gezeigt. Das Programmierungsmodell zeigt eine
Vielzahl von Registern 510, welche dazu genutzt werden, die Operationen auf einem USB-Gerät zu steuern und zu
überwachen. Das Modell umfaßt weiterhin eine in dem Speicher 520 angeordnete Endpunktkanal-Anordnung 522.
Die Endpunktkanal-Anordnung 522 wird benutzt, um die für eine bestimmte Endpunkt-Übertragung spezifischen
Endpunkt-Parameter zu steuern.
Teile der Registergruppe 510 und Teile des Speichers 520
sind aufeinander abgestimmt, um eine spezielle Endpunkt-Übertragung zu überwachen und zu steuern. In Fig. 5 ist
auch eine bevorzugte Ausführungsform der Beziehung zwischen der Registergruppe 510 und dem Speicher 520 dargestellt.
Die Endpunktkanal-Anordnung 522 umfaßt für jeden der
sechzehn Endpunktkanäle ein erstes Steuerwort CWO und ein zweites Steuerwort CWl. Die Endpunktkanal-Anordnung
522 ist in dem Speicher auf einer Adresse angeordnet, die in einem Endpunkt-Anordnungs-Basisadressregister
(EABAR) 512 gespeichert ist. Diese Endpunktkanal-Anordnung ist mittels einer vier-Bit-Endpunktkanal-Zahl und eines
Ein-Bit-Endpunktkanal-Steuerwortzeigers indiziert. Wie dargestellt ist, zeigt eine Endpunkt-Zahl von null, EPO
532 auf das erste Paar Steuerwörter in der Endpunktkanal-Anordnung 522. In gleicher Weise zeigt EPl 534 auf das
zweite Paar Steuerwörter, und EP2 536 zeigt auf das dritte Paar usw. EP15 538 zeigt auf das letzte Paar der Steuerwörter
in der bevorzugten Ausführungsform.
Die Steuerwörter umfassen die gesamte verlangte Information, um einen aktiven Endpunktkanal zu betreiben. Wie
in dem Block 524 dargestellt ist, weist jedes Steuerwort die Information über den Zustand, den Parameter, die Adresse
und den Umfang eines Endpunktkanales auf. Es existieren zwei solche Einträge für jeden Endpunktkanal. Mittels des
Wertes des Endpunktkanal-Steuerwortzeigers CWP wird das Steuerwort bestimmt, auf welches als nächstes zugegriffen
wird.
Unmittelbar nach dem Empfang eines IN-, OUT- oder SETUP-Tokens an einem gegenwärtig in einem Ready-Zustand
befindlichen Endpunktkanal wird das Steuerwort des ausgewählten Endpunktkanales am gegenwärtigen Steuerwort-Zeiger
gelesen, um zu bestimmen, wie auf den Token zu antworten ist. Wenn am Ende einer Übertragung der Abschluß-Status
geschrieben ist, wird das Steuerwort mit dem gegenwärtigen Status aktualisiert, das CWP wird inkrementiert,
und das andere Steuerwort wird gelesen. Wenn ein Zwischenstatus geschrieben wird, wird nur das signifikanteste
Byte des Steuerworts aktualisiert. Das Format des Steuerwortes ist im folgenden dargestellt:
Funktionsbezeichnung
| 31-28 | Buffer State (Pufferzustand) |
| 27 | (Reserviert) |
| 26-16 | Buffer Address BA (Pufferadresse) |
| 15 | Buffer Page BP (Pufferseite) |
| 14 | Buffer Rounding (Pufferrunden) |
| 13 | Toggle Enable TE (Umschaltaktivierung) |
| 12 | Type Isochronous TI |
| 11 | Interrupt on Packet Complete (Interrupt auf |
| Paketabschluß) | |
| 10 | Interrupt on Packet Error JE (Interrupt auf |
| Paketfehler) | |
| 9-0 | Byte Count BC (Byte-Zähler) |
Der 4-Bit-Pufferzustand BS ist ein Paket des Steuerwortes, welches für die Anwendung der Erfindung relevant ist.
Der Pufferzustand wird mittels Software und mittels des Endpunkt-Controllers (EPC) aktualisiert, um die Steuerung
dieses Puffers und zwischen den Puffern zu synchronisieren. Der EPC schreibt den die Nutzung des Puffers anzeigenden
Status. Dieses Feld wird mittels Firmware für den Knoten auf Output Ready, Input Ready, Setup Ready, Skip, Stall und
Disable (siehe unten) gesetzt. Alle anderen Werte werden
DE 199 OO 345 A 1
mittels des EPC gesetzt. Der STALL- und der Disable-Wert
können von dem EPC bei Fehlerbedingungen geschrieben werden. Der Puffer kann mittels Knoten-Firmware wieder
beansprucht werden, wenn der Pufferzustand irgendein Complete (Fertigstellungs-)-Wert ist. Dieses umfaßt den
EingangS'/Ausgangs-Complete-Status und die Fehlercode.
Der Pufferzustand BS kann die folgenden Werte annehmen:
0: Skip. Dieser Wert wird zusammen mit dem Output Ready-Befehl genutzt. Skip führte dazu, daß das nächste
empfangene Datenpaket ignoriert wird, und daß der Steuerwort-Zeiger inkrementiert wird. Für Steuer-Endpunkte führt
es weiterhin dazu, daß der Endpunktkanal-Zustand von dem Input/Ready-Zustand in den Output/Input-Idle (Leerlauf) Zustand
geschaltet wird. Das Setzen von TE und TI bestimmt, welcher Handshake zurückgesendet wird, und bestimmt
den nächsten Zustand des Endpunktkanals. Ein NAK wird zurückgesendet, wenn entweder TB oder TI gesetzt
ist. Wenn TI und nicht TB gesetzt ist, wird kein Handshake zurückgesendet. Wenn TE gesetzt ist, wird ein ACK
zurückgesendet, und der komplette Status wird geschrieben, wenn ein Paket mit einem geeigneten PID empfangen
wurde.
1: Input Ready IRDY. Dieser Wert zeigt an, daß in den Puffer Daten geschrieben wurden, um diese als Reaktion auf
einen ΓΝ-Token zu übertragen.
2: Output Ready ORDY. Dieser Wert zeigt an, daß der Puffer für das Schreiben zugeordnet wurde.
3: Setup Ready SRDY Dieser Wert zeigt an, daß der Puffer für das Schreiben zugeordnet wurde. Dieses wird an einem
Steuerendpunkt nur während der ersten Übertragung von Steuer-Lese- und Steuer-Schreib-Operationen genutzt.
Schreib nur in das Steuerwort 0.
4: Output Wait OWT. Dieser Wert zeigt an, daß ein Fehler während des Empfangs der OUT-Daten von dem Host aufgetreten
ist. Dieses umfaßt das Erkennen eines Bit-Überlauf-Fehlers. Da dies als ein Zwischenstatus betrachtet wird,
wird ein erneuter Versuch erwartet. Ausnahme ist der Fall eines isochronen OUT-Endpunktes, bei dem es als ein Fertigstellungs-Status
behandelt wird.
5: CRC Error CRCE. Dieser Wert zeigt an, daß am Ende einer Out-Transaktion ein schlechtes CRC erkannt wurde.
Da dies als ein Zwischenstatus betrachtet wird, wird ein erneuter Versuch erwartet. Die Ausnahme ist der Fall eines
isochronen Out-Endpunktes, bei dem es als ein Fertigstellungs-Status behandelt wird.
6: Buffer Error BUFE. Dieser Wert zeigt an, daß während
einer OUT-Transaktion, Daten von dem USB schneller empfangen wurden, als sie in den Speicher geschrieben werden
konnten. Während einer ΓΝ-Transaktion wurden die Daten
aus dem Speicher nicht schnell genug gelesen, um mit der USB-Datenrate mitzuhalten. An diesem Endpunkt wird eine
Wiederholung erwartet.
7: Input Wait IWT. Dieser Wert zeigt an, daß der Puffer durch einen Endpunkt-Controller gehalten wird, und daß der
Puffer auf die nächste Gelegenheit wartet, um zu versuchen oder erneut zu versuchen, diesen Puffer zu übertragen. Dieses
tritt auf, wenn eine Quittierung fehlt.
8: Input Complete ICMP. Dieser Wert zeigt den erfolgreichen Abschluß dieser Eingabeoperation an. Der Puffer kann
freigegeben werden.
9: Output Complete OCMP Dieser Wert zeigt an, daß der Puffer mit Daten voll ist, und daß kein Fehler erkannt
wurde.
10: Token Error TKNE. Dieser Wert zeigt an, daß ein Token des falschen Typs für den momentanen Kontext dieses
Steuer-Endpunktkanals empfangen wurde. Wenn dieses ein Ausgabepuffer war, wird der Endpunkt gehalten. Wenn dies
ein Eingabepuffer war, wird ein NAK gesendet, und der Zustand des anderen Steuerwortes wird untersucht. Dieses
wird als Abschlußstatus betrachtet.
11: Isochronous Synchronization Error SYNE. Dieser Wert zeigt an, daß Daten in einem Puffer mit TE = 1 und TI
= 1 empfangen wurden, wobei der CWP nicht gleich dem LSB des FNR war. Dies wird als ein Abschlußstatus betrachtet.
12: Data Error DATE. Dies tritt für OUT-Daten auf, wenn CW.BR nicht gesetzt ist, und der vom Host empfangene Datenumfang
geringer als erwartet war, oder der zugeordnete Puffer nicht groß genug war, um die OUT-Daten zu speichern.
Für ΓΝ-Daten wird dieses gesetzt, wenn ein Pufferfehler auftritt, und CW.TE nicht gesetzt oder CW.TI gesetzt
war. Dies wird als ein Abschlußstatus betrachtet.
13: (Reserviert).
14: Halt. Dieses bringt den gegenwärtigen Endpunktkanal dazu, seinen HALT-Zustand einzunehmen, oder zeigt an,
daß der Endpunkt den HALT-Zustand eingenommen hat.
15: Disable. Dieses bringt den momentanen Endpunktkanal dazu, seinen DISABLE-Zustand einzunehmen, oder
zeigt an, daß der Endpunktkanal den DISABLE-Zustand eingenommen hat.
Die Puffer-Adresse BA hält die unteren 11 Bits der Pufferadresse.
Puffer müssen an einer ausgerichteten Doppelwort-Grenze beginnen und können an jeder Byte-Grenze enden.
Am Ende aller abgeschlossenen Übertragungen wird der verbleibende Wert der Pufferadresse geschrieben. Dieses
Feld wird am Ende von nicht vollständig ausgeführten Übertragungen nicht überschrieben, z. B. wenn der Status
auf Eingangs- oder Ausgangswarten geschrieben ist. Für OUT-Puffer ist das erste gespeicherte Byte das dem PID folgende
Byte. Ahnlich ist es für ΓΝ-Puffer. Die Adresse zeigt
auf das erste Byte der zu übertragenden Daten, d. h. das Byte, welches im Paket unmittelbar auf das PID folgt. Der
CRC wird automatisch berechnet und an das Paket angehangen, es sei denn, ein ΓΝ-Token wird vom IS_RDY-Zustand
empfangen, und in dem Steuerwort ist das IS-Feld nicht auf 1 gesetzt.
Das Puffer-Seiten-Bit, BP, wählt zwischen einem Puffer-Seiten-A-Register,
BPA 512, und einem Puffer-Seiten-B-Register, BPB 516 aus. Das BP wählt das BPA in einem
Null-Zustand und wählt das BPB in einem Zustand, in dem es als die obere Speicheradresse des gegenwärtigen Eingangs-/Ausgangspuffers
benutzt wird.
Das Pufferrundungsbit BR wird für Out-Transaktionen genutzt. Es zeigt an, ob ein empfangenes Datenpaket kleiner
als der Datenpuffer sein kann. Wenn das BR null ist, sollte das Datenpaket den definierten Datenpuffer exakt füllen.
Ein Pufferüberlauf- oder Pufferunterschreitungs-Status wird angezeigt, wenn das Paket nicht exakt in den Puffer paßt.
Wenn das BR zusammen mit einem Ausgangsabschlußoder Datenfehler-Pufferstatus gelesen wird, zeigt das BR
den Wert des empfangenen PIDs an. Es ist null für DATAO und 1 für DATAl.
Das Toggle-Enable-Bit (Umschaltaktivierungs-Bit), TE,
wird benutzt, um den Steuerwort-Zeiger für ein OUT-Token mit dem Datenpaket-Identifizierer, PID, welcher einen Wert
von entweder DATAO oder DATAl hat, zu vergleichen, und wird benutzt, um einen Datenpaket-Identifizierer für einen
ΓΝ-Token zu erzeugen.
Wenn das TE in einem Null-Zustand ist, wird das Daten-Toggle-PrD
einer OUT-Transaktion nicht überprüft. Das Daten-Toggle-PrD wird auf der Basis des gegenwärtigen
Wertes des CWP als Antwort auf ΓΝ-Token erzeugt. Das CWP wird nach jeder Transaktion inkrementiert (invertiert),
auch wenn ein ACK nicht empfangen wurde. Für Tsochrone
DE 199 OO 345 A 1
Endpunkte werden OUT-Daten nicht in dem Speicher geschrieben, bis das CWP gleich dem letzten signifikanten Bit
der Frame-Zahl, FNR, ist. Dieses hat keinen Einfluß auf die als Antwort auf die IN-Token gesendeten Daten. Das Datenumschalten
sollte nicht für Puffer aktiviert werden, die zugeordnet wurden, um Daten mit einem SETUP-Token zu
empfangen.
Wenn das TE in einem Eins-Zustand ist, wird das Daten-Toggle-PID
einer OUT-Transaktion geprüft. Das Daten-Toggle-PID wird auf der Basis des gegenwärtigen Wertes
des CWP als Antwort auf IN-Token erzeugt. Für OUT-Transaktionen verursacht das TE, daß ein ACK als Antwort
auf die OUT-Pakete gesendet wird, dessen PID-Wert (DATAO oder DATAl) nicht mit dem CWP übereinstimmt.
Für IN-Transaktionen wird das CWP nur nach jeder Transaktion inkrementiert (invertiert), wenn innerhalb der Antwortzeitperiode
ein ACK-Handshake zurückgesendet wurde. Für Isochrone Endpunkte werden die OUT-Daten
immer in den Speicher geschrieben. Wenn jedoch das letzte signifikante Bit der FNR nicht gleich dem CWP ist, wird der
ISO-Sync-Fehlerpufferzustand zurückgeschrieben.
Das Isochron-Typenbit TI zeigt an, ob der Endpunktkanal isochron ist. Wenn das TI in einem Eins-Zustand ist, sind die
Daten isochron. Wenn das TI in einem Null-Zustand ist, kann der Endpunktkanal ein Steuer-, Bulk- oder Interrupt-Endpunktkanal
sein.
Ein Interrupt-Paketabschluß-Bit, IC, wird immer gesetzt, wenn der Pufferstatus nach einem Paketfehler auf Eingangsoder Ausgangsabschluß geschrieben wird, oder wenn der
Endpunktkanal verstopft ist.
Ein Interrupt-Paketfehler-Bit, IE, wird immer gesetzt, wenn der Pufferstatus auf einen der Puffer-Fehlercodes geschrieben
wird, oder wenn der Endpunkt verstopft ist.
Wenn das IC und der ΓΕ gesetzt sind, veranlassen die
CRC- und Bit-Stuff-Fehler, daß die entsprechenden Puffer nicht in einer normalen Operation erneut genutzt werden.
Dieses ermöglicht die nachfolgende diagnostische Überprüfung der entsprechenden Puffer.
Byte-Zählbits, BC, zeigen den Umfang des zu nutzenden Datenpuffers an. Ein Puffer muß an einer geraden Doppelwortgrenze
beginnen, kann jedoch an jeder beliebigen Byte-Grenze enden. Für IN-Transaktionen zeigt das BC den Umfang
der zu übertragenden Daten an. Für OUT-Transaktionen zeigt das BC den Umfang des Puffers an, in welchem
die Daten empfangen werden können. Das BC kann eine Null halten, um ein Null-Längen-Datenpaket anzuzeigen.
Am Ende aller abgeschlossenen Übertragungen wird der Restwert des Byte-Zählers geschrieben. Am Ende einer
nicht abgeschlossenen Übertragung, z. B., wenn der Status Eingangs- oder Ausgangswarten anzeigt, wird dieses Feld
nicht überschrieben.
Bei einer bevorzugten Ausführungsform weist das Endpunkt-Befehl-Register,
ECR 518, die Breite eines Wortes auf, und ist ein Lese-/Schreibregister. Das ECR 518 wird genutzt,
um Befehle an einem spezifizierten Endpunkt auszuführen. Durch ein Reset wird das Register geleert. Das ECR-Registerformat
ist im folgenden dargestellt:
Bits Funktionsbezeichnung
15-8 (Reserviert)
Ί^\ Endpoint Pipe Number (EPN) (Endpunkt
kanal-Zahl)
3-0 Endpoint Command (CMD) (Endpunkt-
Befehl)
Die Endpunktkanal-Zahl EPN bestimmt den Endpunktkanal, auf welchem der Befehl ausgeführt wird. Bei einer bevorzugten
Ausführungsform kann dieses Register in die Hochgeschwindigkeits-Bus-S chnittstellenlogik implementiert
sein. Die Daten laufen über die asynchrone Schnittstelle. Zwei Signale werden vom Endpunkt-Controller zurückgeschickt,
wobei eines anzeigt, daß der Befehl ausgeführt wurde, und daß der Befehlswert auf "0" gesetzt werden
sollte, und wobei ein weiteres anzeigt, daß der Befehl nicht ausgeführt werden konnte, und daß es auf "F" gesetzt werden
sollte.
Der Endpunkt-Befehl CMD kann die folgenden Werte annehmen:
0000: Complete. Dieser Wert zeigt an, daß der vorhergehende Befehl abgeschlossen ist, und daß der Endpunkt-Controller
zur Aufnahme eines anderen Befehls bereit ist.
0001: Input Enable (CMD.IENB). Dieser Wert veranlaßt
den spezifizierten Endpunktkanal aus dem Stall (Halt)- oder Disable-Zustand in den Input Idle-Zustand IJTDL zu gehen.
Der Steuerwort-Zeiger für den spezifizierten Endpunktkanal wird auf 0 zurückgesetzt. Wenn der momentane Zustand
nicht der Disable- oder Stall-Zustand ist, wird ein "F" zurückgeschickt,
um anzuzeigen, daß versucht wurde, einen nicht erlaubten Befehl an diesem Endpunkt auszuführen,
und daß der Befehl ignoriert wird.
0010: Input Ready (CMD.IRDY). Dieser Wert veranlaßt
den spezifizierten Endpunktkanal in den Input Ready-Zustand IRDY zu gehen, wenn dieser momentan in dem Input
Idle-Zustand LJDL ist. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Input Ready-Pufferzustand
IRDY in die Endpunkt-Anordnung des entsprechenden Endpunktes geschrieben wurde. Dieser Befehl veranlaßt
nicht, daß das Steuerwort im Speicher gelesen wird; es erlaubt hingegen, daß es als Antwort auf den Empfang eines
HM-Tokens gelesen wird. Wenn der gegenwärtige Zustand
des Endpunktes nicht Input Idle LJDL ist, wird der Befehl ignoriert. Wenn der gegenwärtige Zustand der Output-, der
Setup-, der Disable- oder der Stall-Zustand ist, wird ein "F" zurückgesendet, um anzuzeigen, daß versucht wurde, einen
nicht ausführbaren Befehl an diesem Endpunkt auszuführen.
0011: Input Isochronous Ready (CMD.ISRDY). Dieser
Wert veranlaßt den spezifizierten Endpunktkanal in den Input Isochronous Ready-Zustand ISJRDY zu gehen, wenn er
momentan in dem Input Idle-Zustand IJTDL ist. Dieser Befehl
wird ausgegeben, nachdem ein Steuerwort mit dem Input Ready-Puffer-Zustand in die Endpunkt-Anordnung für
den entsprechenden Endpunkt geschrieben wurde. Dieser Befehl veranlaßt nicht, daß das Steuerwort in dem Speicher
gelesen wird; es erlaubt hingegen, daß es als Antwort auf den Empfang eines IN-Tokens gelesen wird. Es wird erwartet,
daß das Typenfeld des Steuerwortes (TI) auf Isochron gesetzt ist. Dieses wird jedoch nicht überprüft. Wenn der gegenwärtige
Zustand des Endpunktes nicht Input Idle IJTDL ist, wird der Befehl ignoriert. Wenn der gegenwärtige Zustand
der Output-, Setup-, Disable- oder der Stall-Zustand ist, wird ein "F" zurückgesendet, um anzuzeigen, daß versucht
wurde, einen nicht ausführbaren Befehl an diesem Endpunkt auszuführen.
0100: Output Enable (CMD.OENB). Dieser Wert veranlaßt den spezifizierten Endpunktkanal aus dem Stall- oder
Disable-Zustand in den Output Idle-Zustand OJTDL zu gehen. Der Steuerwort-Zeiger für den spezifizierten Endpunkt
wird auf 0 gesetzt. Wenn der gegenwärtige Zustand nicht der Disable- oder Stall-Zustand ist, wird ein "F" zurückgesendet,
um anzuzeigen, daß versucht wurde, an diesem Endpunkt einen nicht ausführbaren Befehl auszuführen, und der
Befehl wird ignoriert.
0101: Output Ready (CMD.ORDY). Dieser Wert veran-
DE 199 OO 345 A 1
laßt den spezifizierten Endpunktkanal in den Output Ready-Zustand OJRDY zu gehen, wenn er gegenwärtig in dem
Output Idle-Zustand O_IDL ist. Dieser Befehl wird ausgegeben,
nachdem ein Steuerwort mit einem Output Ready-Zustand in die Endpunkt-Anordnung für den entsprechenden
Endpunkt geschrieben wurde. Dieser Befehl verursacht nicht, daß das Steuerwort in dem Speicher gelesen wird; es
erlaubt hingegen, daß es als Antwort auf den Empfang eines OUT-Tokens gelesen wird. Wenn der gegenwärtige Zustand
des Endpunktes nicht Output Idle ist, wird der Befehl ignoriert. Wenn der gegenwärtige Zustand der Input-, der Stalloder
der Disable-Zustand ist, dann wird ein "F" zurückgesendet, um anzuzeigen, daß versucht wurde, einen nicht ausführbaren
Befehl an diesen Endpunkt auszuführen.
0110: Output Isochronous Enable (CMD.OSENB). Dieser Wert veranlaßt den spezifizierten Endpunktkanal aus
dem Stall- oder Disable-Zustand in den Output Isochronous Idle-Zustand OSJDL zu gehen. Der Steuerwort-Zeiger
führt den spezifizierten Endpunkt wird auf 0 gesetzt. Wenn der gegenwärtige Zustand nicht der Disable- oder Stall-Zustand
ist, wird ein "F" zurückgesendet, um anzuzeigen, daß versucht wurde, einen nicht ausführbaren Befehl an diesem
Endpunkt auszuführen, und der Befehl wird ignoriert.
Olli: Output Isochronous Ready (CMD.OSRDY). Dieser
Wert veranlaßt den spezifizierten Endpunktkanal in den Output Isochronous Ready-Zustand OSJRDY zu gehen,
wenn dessen momentaner Zustand der Output Isochronous Idle-Zustand OSJTDL ist. Diese Befehl wird ausgegeben,
nachdem ein Steuerwort mit einem Output Ready-Zustand in die Endpunkt-Anordnung für den entsprechenden Endpunkt
geschrieben wurde. Dieses Kommando veranlaßt nicht, daß das Steuerwort in dem Speicher gelesen wird; es
erlaubt hingegen, daß es als Antwort auf den Empfang eines OUT-Tokens gelesen wird. Wenn der momentane Zustand
des Endpunktes nicht der Output Isochronous Idle-Zustand ist, wird der Befehl ignoriert. Wenn der gegenwärtige Zustand
der Input-, Stall- oder Disable-Zustand ist, wird ein "F" zurückgesendet, um anzuzeigen, daß versucht wurde, einen
nicht ausführbaren Befehl an diesem Endpunkt auszuführen.
1000: Setup Ready (CMD.SRDY). Dieser Wert veranlaßt den spezifizierten Endpunktkanal in den Setup Ready-Zustand
SJlDY zu gehen. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Output Ready-Zustand
in die Endpunkt-Anordnung für den entsprechenden Endpunkt geschrieben wurde. Diese Befehl veranlaßt nicht, daß
das Steuerwort in dem Speicher gelesen wird; es erlaubt hingegen, daß es als Antwort auf den Empfang eines SETUP-Tokens
gelesen wird. Wenn der gegenwärtige Zustand des Endpunktes nicht der Stall- oder Disable-Zustand ist, wird
der Befehl ignoriert.
1001: Disable (CMD.DISAB). Dieser Wert veranlaßt den spezifizierten Endpunktkanal in den DISABLE-Zustand zu
gehen. Dieses erfolgt unmittelbar aus jedem Zustand. Wenn der Endpunktkanal gegenwärtig aktiv ist, wird der Status in
die Steuerung geschrieben, so daß angezeigt ist, daß der Endpunkt nicht aktiviert ist.
1010: Stall (CMD.HALT). Dieser Wert veranlaßt den spezifizierten Endpunkt aus einem beliebigen Zustand in den
Stall-Zustand HALT zu gehen. Dieses erfolgt unmittelbar aus jedem Zustand. Wenn der Endpunktkanal gegenwärtig
aktiv ist, wird der Status in die Steuerung geschrieben, so daß angezeigt ist, daß der Endpunkt blockiert ist.
1011-1101: Reserviert. Diese Werte verursachen nicht die Ausführung von Aktionen und senden eine 0 zurück.
1110: Toggle CWP. Dieser Wert veranlaßt ein Umschalten des Steuerwort-Zeigers. Dieses wird im Zusammenhang
mit Steuerübertragungen mit einer ungeraden Anzahl gesendeter oder empfangener Pakete während einer Datenphase
genutzt.
1111: Error. Dieser Wert zeigt an, daß versucht wurde, einen
für den Zustand des gegenwärtigen Endpunktkanals nicht ausführbaren Befehl auszuführen, und daß ein neuer
Befehl aufgenommen werden kann.
Der für die Erfindung in der vorliegenden Anwendung relevante Teil des UDR 519 ist der 8-Bit-Entpunktkanal-Zustand.
Dieser Zustand wird für jeden Endpunkt gespeichert, der für den gegenwärtig indizierten Endpunktkanal zurückgesendet
wird. Wenn ein ungültiger Endpunktkanal indiziert ist, wird eine 0 zurückgesendet. Das UDR-Registerformat
ist im folgenden dargestellt:
Bits Funktionsbezeichnung
7 Control (CTL)
6 Control Word Pointer (CWP) (Steuerwort-
Zeiger)
5-4 (Reserviert)
3-0 Endpoint Pipe State (EPS) (Endpunktka-
nal-Zustand)
Control CTL: Dieses wird geltend gemacht, wenn dieser Endpunktkanal in der Lage ist, Steuersequenzen aufzunehmen,
die mit SETUP-Token zu tun haben. Dieses Bit wird gesetzt, nachdem der CMD.SRDY für diesen Endpunktkanal
ausgeführt wurde, und verbleibt gesetzt, bis der Endpunkt deaktiviert (Disable) wird.
Control Word Pointer CWP: Wenn das Steuerwort-Bit 0 ist, wird auf das Steuerwort 0 dieses Endpunktes in der Endpunkt-Anordnung
als nächstes zugegriffen. Wenn das Steuerwort 1 ist, wird auf das Steuerwort 1 für diesen Endpunkt
als nächstes zugegriffen. Dieses ist auf 0 gesetzt, wenn der Endpunkt aktiviert ist.
Der Endpunktkanal-Zustand (EPS) kann die folgenden Werte annehmen:
Wert Zustand
0 Disabled DIS
1 Input Idle IJTDL
2 Input Ready LRDY
3 Input Active I_ACT
4 Stalled HALT
5 Input Missed ACKIJV1AK
6 Input Isochronous Ready ISJRDY
7 Input Isochronous Active IS_ACT
8 Setup Ready SJRDY
9 Output Idle OJDL
10 Output Ready OJRDY
11 Output Active O ACT
12 Setup Active S_ACT
13 Output Isochronous Idle OST JTDL
14 Output Isochronous Ready OSJRDY
15 Output Isochronous Active OS_ACT
Bei einer bevorzugten Ausführungsform ist zu jeder Zeit nur ein Endpunktkanal aktiv.
Bei einer bevorzugten Ausführungsform bewahrt jeder Endpunktkanal einen Zustand mit definierten Bedingungen
für die Übertragung zwischen den Zuständen, welche eine impliziete Hardware/Software-Synchronisation umfassen.
Übergänge zwischen Endpunkt-Zuständen erfolgen:
- auf einen expliziten Software-Befehl an einen Endpunkt durch das Endpunkt-Befehlsregister ECR;
- durch das Lesen des Pufferstatus des anderen Puffers
DE 199 OO 345 A 1
in dem anderen Steuerwort für diesen Endpunkt am Ende einer Übertragung; und
- als Ergebnis von Ereignissen auf dem USB, wie der Empfang von IN, OUT- und SETUP-Token und von
ACK-Handshakes.
Fig. 7 zeigt die vereinfachte Endpunktkanal-Zustandsmaschine
für die Handhabung von SETUP-Transaktionen. Der gegenwärtige Endpunktkanal-Zustand ist in einem Endpunkt-Zustandsregister
sichtbar, auf welches mit einem USB-Index- und einem Daten-Register zugegriffen werden
kann. Bei einer bevorzugten Ausführungsform ist zu jeder Zeit stets höchstens ein Endpunktkanal in irgendeinem der
aktiven Zustände. Dies ermöglicht das gemeinsame Nutzen der aktiven Zustandslogik durch alle Endpunktkanäle.
Wie in Fig. 7 gezeigt ist, kann ein Endpunktkanal die folgenden
Zustände aufweisen:
Disable. Der DIS-Zustand 710 wird auf ein Reset, auf einen
Disable-Befehl an diesen Endpunktkanal, und auf das Erkennen eines Disable-Zustandes in dem Pufferzustand des
Steuerwortes eingenommen. Während dieser Endpunktkanal in diesem Zustand ist, wird jeder an diesem Endpunkt
empfangene Token ohne Handshake zurückgesendet. Eine Software-Intervention ist notwendig, um den Endpunktkanal
aus diesem Zustand zu entfernen. Typischerweise geschieht dies durch einen Enable-Befehl (Aktivierungsbefehl)
an einen der Idle-Zustände.
Halt/Stall: Der HALT/STL-Zustand 770 wird auf den
Stall-Befehl an diesen Endpunkt, auf das Erkennen eines Stall-Zustandes in dem Pufferzustand eines Steuerwortes,
und bei bestimmten, Fehlerbedingungen eingenommen. Während dieser Endpunktkanal in diesem Zustand ist, wird
jeder an diesem Endpunkt empfangene Token als ein Stall-Handshake zurückgesendet, um anzuzeigen, daß der Endpunkt
gegenwärtig blockiert ist. Eine Software-Intervention ist notwendig, um den Endpunktkanal aus diesem Zustand
zu bringen. Typischerweise geschieht dies durch einen Enable-Befehl an einen der Idle-Zustände.
Setup Ready SJRDY Dieser Zustand 720 wird eingenommen, nachdem dieser Endpunktkanal einen Puffer erhalten
hat, in welchen die Daten zu schreiben sind. Dieser Zustand wird auf das Erkennen des Setup Ready-Pufferzustandes
oder mittels eines Setup Ready-Befehls eingenommen, nachdem das geeignete Wort in die Endpunkt-Anordnung
geschrieben wurde.
Setup Active S_ACT. Dieser Zustand 730 wird auf den Empfang eines Setup-Tokens aus dem Setup Ready-Zustand
eingenommen. In diesem Zustand werden die Daten vom USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung
wird der Status in das Steuerwort am CWP geschrieben, das CWP wird invertiert, und das andere
Steuerwort für diesen Endpunktkanal wird gelesen. Es wird der passende Übergang in den Output Idle-, Output Ready,
Input Idle oder Input Ready-Zustand gemacht. Er hängt von der Art der Steuerübertragung und dem gelesenen Pufferzustand
ab, und basiert weiterhin auf dem Pufferstatus.
Input Idle IJTDL. In diesem Zustand 750 erwartet der
Endpunkt, daß bald ein Puffer zugeordnet wird. Ein NAK-Handshake wird als Antwort auf einen IN-Token, welcher
diesem Endpunktkanal zugeordnet ist, zurückgesendet. Für OUT-Token wird von diesem Endpunktkanal keine Antwort
zurückgesendet.
Input Ready I RDY. Dieser Zustand 752 wird über einen
Input Ready-Befehl an diesen Endpunktkanal oder auf das Erkennen eines anderen Eingangspuffers am Ende einer
Übertragung eingenommen. Der Befehl sollte nur gegeben werden, wenn diesem Endpunkt mit Hilfe des Schreibens
des Steuerwortes an einem geeigneten Ort in der Endpunkt-Anordnung ein Puffer zugeordnet worden ist. Dieses Steuerwort
sollte auf einen Datenpuffer mit Daten zeigen, die an den Host als Antwort auf den nächsten an diesem Endpunktkanal
empfangenen IN-Token zurückgesendet werden sollen. Der PID-Wert wird als DATAO übertragen, wenn der
CWP 0 ist und wird als DATAl übertragen, wenn der CWP gleich 1 ist.
Input Active IACT. Dieser Zustand 754 wird auf den Empfang eines HM-Tokens eingenommen, wenn der ausgewählte
Endpunkt-Zustand gegenwärtig Input Ready ist. In diesem Zustand werden die Daten von dem Speicher auf den
USB übertragen. Auf den Abschluß der Datenübertragung sollte ein ACK-Handshake innerhalb der 16 Bit-Zeit empfangen
werden. Am Ende dieses Zeitlimits wird der Puffer-Wartestatus in das Steuerwort zurückgeschrieben, wenn ein
ACK nicht empfangen wurde. Die Adress- und Byte-Zähler werden jedoch nicht überschrieben, da eine erneute Übertragung
erfolgen wird und die gegenwärtigen Werte erneut gebraucht werden. Wenn ein ACK empfangen wird, wird der
Pufferstatus zusammen mit den gegenwärtigen Werten des Adress- und Byte-Zählers geschrieben. Danach wird das andere
Steuerwort an diesem Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu bestimmen, welcher benutzt
werden wird, wenn das nächste Mal ein Token an diesen Endpunkt gerichtet ist. Wenn dieser Endpunkt für eine
Steuerübertragung genutzt wird, kann eine Übertragung auf den Ausgangs-Ready- oder Output-Idle-Zustand erfolgen,
um die Statusphase einer Steuer-Lese-Übertragung zu vervollständigen.
Output Idle 0_IDL. In diesem Zustand 740 erwartet der Endpunktkanal, daß bald ein Puffer zugeordnet wird. Ein
NAK-Handshake wird als Antwort auf ein OUT-Token, welcher diesem Endpunktkanal zugeordnet ist, zurückgesendet.
Für IN-Token auf diesem Endpunktkanal wird keine Antwort zurückgesendet.
Output Ready 0_RDY. Dieser Zustand 742 wird eingenommen,
nachdem dieser Endpunktkanal einen Puffer erhalten hat, in welchen die Daten geschrieben werden. Dieser
kann auf das Erkennen eines anderen Ausgangspuffers am Ende einer Übertragung oder über einen Output Ready-Befehl
von dem 0_IDL-Zustand 740 eingenommen werden, nachdem das passende Wort in die Endpunkt-Anordnung
geschrieben wurde.
Output Active 0_ACT. Dieser Zustand 744 wird auf den Empfang eines OUT-Tokens eingenommen. In diesem Zustand
werden die Daten aus dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der
Status auf das Steuerwort am CWP geschrieben. Wenn die Übertragung nicht erfolgreich war, d. h. ein CRC- oder Bit-Blockier-Fehler
wurde erkannt, wird dieses als der Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war,
wird der Output Complete-Pufferstatus geschrieben, wird der CWP invertiert, und wird das andere Steuerwort für diesen
Endpunktkanal gelesen. Die geeignete Übertragung wird basierend auf den Pufferzustand ausgeführt. Wenn dieser
Endpunkt für eine Steuerübertragung genutzt wird, kann ein Übergang in den Input Ready- oder Input Idle-Zustand
erfolgen, um die Statusphase eines Steuer-Schreib-Überganges zu vollenden.
Zusätzlich zu den oben beschriebenen Zuständen, werden die folgenden Zustände für In-(Eingangs-) und Out- (Ausgangs-)
Daten-Transaktionen genutzt. Dieses wird unter Bezugnahme auf Fig. 6 beschrieben:
Input Isochronous Ready ISJRDY Der ISJRDY-Zustand 610 wird über einen Input Ready-Befehl an diesen Endpunkt
oder auf das Erkennen eines anderen Eingabepuffers am Ende einer Übertragung eingenommen. Dieser Befehl
sollte nur angewendet werden, nachdem diesem Endpunkt
DE 199 OO 345 A 1
mit Hilfe des Schreibens des Steuerwortes an einen geeigneten Ort in der Endpunkt-Anordnung ein Puffer zugeordnet
worden ist. Dieses Steuerwort sollte auf einen Datenpuffer mit Daten zeigen, die an den Host als Antwort auf den als
nächstes an diesem Endpunktkanal zu empfangenden IN-Token zurückzusenden sind. Der PID-Wert wird unabhängig
von dem Wert des CWP immer als DATAO übertragen.
Input Isochronous Active IS_ACT. Der IS_ACT-Zustand 612 wird auf den Empfang eines IN-Tokens eingenommen,
wenn der ausgewählte Endpunkt-Zustand gegenwärtig in Input Ready ist. In diesem Zustand werden die Daten von dem
Speicher auf den USB übertragen. Auf den Aschluß der Datenübertragung wird der Pufferstatus zusammen mit den gegenwärtigen
Werten des Adress- und Byte-Zählers am Ende einer Übertragung geschrieben. Danach wird das andere
Steuerwort an diesem Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu bestimmen, wobei dieser nächste
Zustand genutzt wird, wenn das nächste Mal ein Token an diesen Endpunktkanal gerichtet ist.
Output Isochronous Idle OSJDL. In dem OSJTDL-Zustand
620 erwartet der Endpunkt, daß bald ein Puffer zugeordnet wird. Als Antwort auf einen OUT-Token, welcher
diesem Endpunktkanal zugeordnet ist, wird kein Handshake zurückgesendet. Auf diesem Endpunktkanal werden für IN-Token
keine Daten oder Handshakes zurückgesendet.
Output Isochronous Ready OSJRDY Der OSJRDY-Zustand 622 wird eingenommen, nachdem dieser Endpunktkanal
einen Puffer erhalten hat, in welchen die Daten zu schreiben sind. Dieser kann auf das Erkennen eines anderen
Ausgangspuffers am Ende einer Übertragung oder über ein OSRDY-Befehl aus dem OSJTDL-Zustand eingenommen
werden, nachdem das geeignete Wort in die Endpunktanordnung geschrieben worden ist.
Output Isochronous Active OS_ACT. Der OS_ACT-Zustand
624 wird auf den Empfang eines OUT-Tokens aus dem OSJRDY-Zustand eingenommen. In diesem Zustand werden
die Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status auf
ein Steuerwort am CWP geschrieben. Wenn die Übertragung nicht erfolgreich war, d. h. ein CRC- oder ein Bit-Blockier-Fehler
wurde erkannt, wird dieses als der Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war,
wird der Ausgangs-Complete-Pufferstatus geschrieben. Am Ende der Statusübertragung wird der CWP invertiert, und
das andere Steuerwort für diesen Endpunktkanal wird gelesen. Der passende Übergang wird basierend auf dem Pufferzustand
gemacht.
Nach einem Reset sind alle Endpunkte inaktiviert. Ein Endpunkt ist mittels eines Aktivierungsbefehls an den Endpunkt
aktiviert. Dieses sollte nur dann getan werden, wenn die Eingangs- und/oder Ausgangspuffer diesem Endpunkt
bald zugeordnet werden. Alle Endpunkte, die gegenwärtig nicht einem Endpunktkanal zugeordnet sind, werden als inaktiviert
betrachtet.
Die Software ordnet den Endpunktkanälen Puffer nach Bedarf zu. Nachdem jeder Puffer zugeordnet ist, führt sie
den Input Ready- oder Output Ready-Befehl an dem Endpunktkanal aus. Wenn der Endpunktkanal gegenwärtig im
Idle-Zustand ist, nimmt er den geeigneten Ready-Zustand
ein. Wenn der Endpunktkanal gegenwärtig im Ready- oder Active-Zustand ist, werden alle Befehle ignoriert, mit Ausnahme
der Disable- und Stall-Befehle an den Endpunktkanal, welche dieser unverzüglich ausführt. Dieses Schreiben
muß von der Software ausgeführt werden, um in der Lage zu sein, potentielle Synchronisationsprobleme zu verhindern,
da das Handling des UNIM-Endpunktkanals asynchron zum
Betrieb der Software ist.
Weil jedem Endpunkt bis zu zwei Puffer zugeordnet werden können, kann der nächste Puffer vorbereitet werden,
während der gegenwärtige Puffer abgearbeitet wird, um die Datenübertragung zu beschleunigen, und um unnötige
NAK-Handshakes zu vermeiden.
Eine bevorzugte Ausführungsform der Erfindung umfaßt weiterhin einen Abbildungsmechanismus für Token. Der
Endpunkt-Controller 210 liefert an einen der Endpunktkanäle
speziell ein Abbild der funktionellen Adresse, der Tokenart (In, Out, Setup), und der Endpunkt-Zahl. Eine bevorzugte
Ausführungsform unterstützt zwei feste Abbildungen auf die Endpunktkanäle. Die Auswahl dieses Abbildens
wird mittels des Setzens von Endpunktkanal-Abbildungs-Auswahlbits eines in der Registergruppe 114 angeordneten
Gerätekonfigurationsregisters gesteuert. Ein Host-Controller
kann das Setzen der Kanal-Abbildungs-Auswalbits steuern.
Wie in Fig. 4 dargestellt ist, nutzt der Endpunkt-Controller
210 ein Tokenpaket, um einen Kanal-Abbildungsindex 400 mit einer Breite von einem Byte zu erzeugen. Die Bits
0-3 des Kanal-Abbildungsindex 400 werden zur Identifizierung
der Endpunkt-Zahl (EN) genutzt. Die Bits 4-5 werden zur Identifizierung der Tokenart genutzt, wobei 00 einen
Out-Token, 10 einen IN-Token, Il einen Setup-Token und
01 einen SOF-Token anzeigt. Die Bits 6-7 werden benutzt,
um die letzten signifikanten Bits der funktionellen Adresse anzuzeigen.
Auf den Empfang eines Tokens erzeugt der Endpunkt-Controller 210 den Kanal-Abbildungsindex 400. Der Endpunkt-Controller
210 greift danach auf die Endpunkt-Abbildungs-Auswahlbits
zu, um das passende Abbilden für den Token auszuwählen.
Eine bevorzugte Ausführungsform des USB-Geräts 110 unterstützt zwei feste Abbildungen. Dementsprechend umfassen
die Endpunktkanal-Auswahlbits ein einzelnes Bit.
Wenn das Bit in einem ersten Zustand ist, wird der Token direkt nach der funktionellen Adresse und der Endpunkt-Zahl
abgebildet. Wenn das Bit in einem zweiten Zustand ist, wird jeder der ersten acht Endpunkte auf zwei Endpunktkanäle
abgebildet, wobei einer für den Eingang und einer für den Ausgang genutzt wird.
Mittels des Ändern des Endpunktkanal-Auswahlbits kann
der Host-Controller die Abbildung der Endpunktkanäle über die Funktionen verändern. Deshalb ist der Host-Controller
in der Lage ein Gerät so zu konfigurieren, daß es Mehrfachidentitäten hat. Der Host-Controller kann die Geräteidentität
mittels des Zugriffs auf die Endpunkt-Abbildungs-Auswahlbits dynamisch ändern. Dieses ermöglicht dem Host-Controller
weiterhin, Endpunktkanäle über die funktionellen Adressen, die Tokenart und den Endpunkt dort zuzuordnen,
wo der Endpunktkanal als Betriebsmittel am meisten gebraucht wird.
Ein bevorzugte Ausführungsform eines derartigen Geräts mit einer Vielzahl funktioneller Adressen bildet alle Steuerfunktionen
zusammen auf einen Endpunktkanal ab.
Wenn ein Token empfangen wird, bildet der Endpunkt-Controller 202 den Token zuerst auf den entsprechenden
Endpunktkanal ab. Wenn der Token auf einen Endpunktkanal mit einem Puffer abgebildet ist, liest der Endpunkt-Controller
210 das entsprechende Steuerwort. Dieses Steuerwort teilt dem Endpunkt-Controller 210 mit, wie die Transaktion
zu beenden ist. Am Ende einer Transaktion schreibt der Endpunkt-Controller das Steuerwort mit dem Status, welcher
mittels Software als ein Indikator für die Freigabe dieses Puffers genutzt wird, und liefert ein neues Steuerwort.
In Anbetracht der vorhergehenden Beschreibung wird im folgenden der Betrieb des Geräts aus der Sicht der , funktionellen
Steuersoftware im Detail beschrieben. Als erstes wird die Initialisierung beschrieben. Danach werden Interrupt-,
DE 199 OO 345 A 1
Bulk-, Isochron- und Steuerendpunkte beschrieben. Nach einem Reset eines Moduls erscheint ein Gerät als ein nicht
angeschlossenes Gerät auf dem USB. Zu diesem Zeitpunkt sind alle Endpunktkanäle deaktiviert und der funktionelle
Zustand ist reset. Um die Erkennung eines Gerätes als ein an ein Aufwärts-USB-Anschluß angeschlossenes Gerät zu ermöglichen,
wird ein Knoten-Anschluß-Bit des Geräte-Steuerregisters gesetzt. Wenn das Gerät angeschlossen ist, müssen
die Endpunktkanal-Operationen initialisiert werden. In Abhängigkeit von der speziellen Anwendung muß die Software
bestimmen, wieviele Endpunkte für die Anwendung notwendig sind, weiterhin sind die Arten der Endpunkte und
der Umfang des für die Operation zuzuweisenden Speichers zu bestimmen. Hierauf basierend werden die EABAR, BPA
und BPB initialisiert. Für jeden Endpunkt werden zwei Doppelwörter als Steuerwörter zugeordnet. Der EABAR-Zeiger
muß innerhalb einer 128-Byte-Grenze liegen. Der BPA und BPB werden zugeordnet, wenn notwendig, um einen Basiszeiger
für alle Datenübertragungen zu liefern.
Da zu diesem Zeitpunkt nicht exakt klar sein kann, welehe
Endpunkte aktiviert sind und wieviel Speicher ihnen zuzuordnen ist, muß die Software nur EABAR und BPA laden,
so daß der erste Steuerübergang ausgeführt werden kann. Die Software muß dann einen SRDY-Puffer in CWO des
Endpunktkanals 0 anordnen, und ein SRDY-Befehl an den Endpunktkanal ausgeben. Danach wird der Zustand in einen
Betriebszustand gesetzt. Ein von einem Host empfangenes Setup wird dann in den SRDY-Puffer geladen.
Nachdem das Setup empfangen wurde, wird es überprüft, um festzustellen, wie zu antworten ist. Wenn es ein
SetAdress-Setup-Paket ist, wird die funktionelle Adresse (FA) mit der empfangenen Adresse geladen, und das Aktivierungsbit
wird gesetzt. Das DEF-Bit wird mittels der Hardware auf das nächste als Antwort auf IN-Token empfangene
ACK oder auf das nächste durch diesen Endpunkt im Fall des Verlustes des ACK empfangene Setup neu gesetzt.
Auf den Empfang eines IN-Tokens liefern die Interrupt-Endpunkte
neue Interrupt-Informationen an den Host, wenn derartige Information verfügbar ist. Wenn keine Interrupt-Information
anhängig ist, wird ein NAK zurückgesendet. Die Software gibt ein Input-Enable-Befehl an den entsprechenden
Eingangskanal aus, um einen Interrupt-Endpunktkanal zu initialisieren. Dieses veranlaßt den Endpunktkanal
seinen Input-Idle-Zustand (IJTDL) einzunehmen. In diesem
Zustand wird ein NAK als der Handshake der Antwort auf irgendein auf diesen Endpunktkanal abgebildeten IN-Token
zurückgesendet.
Wenn Interrupt-Daten verfügbar sind, werden diese in einen Puffer geschrieben, das nächste Steuerwort an dem Endpunkt
wird auf den IRDY geschrieben und die Software gibt einen Befehl, um den Endpunktkanal zu veranlassen, in den
IRD Y-Zustand zu gehen.
Als Antwort auf den nächsten empfangenen HM-Token
wird das Steuerwort an EABAR + EBN + CWP gelesen und die Daten werden danach übertragen. Wenn das Umschaltprotokoll
folgt, muß das Umschaltaktivierungsbit des Steuerwortes in dem Steuerwort gesetzt sein. Wenn der Endpunkt
als ein Ratensteuer-Feedback genutzt wird, muß das Umschaltaktivierungsbit nicht gesetzt sein. Wenn am Ende
der Übertragung das ACK von dem Host empfangen wird, wird der Abschlußstatus in den Puffer geschrieben. Dieses
liefert eine Bestätigung an die Software, daß die Übertragung abgeschlossen ist. Wenn kein ACK empfangen wurde,
und die Umschaltung es aktiviert, wird ein Zwischen-Verlust-ACK-Status
geschrieben.
Nachdem der Status geschrieben wurde, wird der andere Endpunkt-Puffer gelesen. Wenn dieses ein Abschlußstatus
ist, dann wird der Input-Idle-Zustand eingenommen. Wenn in der Zwischenzeit ein anderes Ereignis aufgetreten ist, und
ein anderer IRDY-Puffer wurde in dem anderen Steuerwort
angeordnet, dann wird es zu diesem Zeitpunkt gelesen und der Endpunkt geht erneut in den IRDY-Zustand.
Bulk-Endpunkte arbeiten ähnlich wie Interrupt-Endpunkte,
mit der Ausnahme, daß typischerweise größere Datenübertragungen involviert sind, und daß diese in In-(Eingangs-)
und Out-(Ausgangs-)Richtungen erfolgen. Für Bulk-Endpunkte folgt stets das Umschaltprotokoll, so daß in
allen Steuerwörtern TE gesetzt ist. Ein spezieller Bulk-Endpunkt wird entweder in Eingangs- oder Ausgangsrichtung
benutzt. Zur Initialisierung eines Bulk-Endpunktes gibt die Software einen Eingangs- oder Ausgangs-Aktivierungsbefehl
an die geeignete Endpunktkanal-Zahl.
Wenn Daten für Bulk-Eingangsendpunkte verfügbar sind,
sollte die Software diese in einen Puffer schreiben, und einen Befehl zum Übergang in einen IRDY-Zustand ausgeben.
Das TE sollte gesetzt werden. Die Software gibt dann einen IRDY-Befehl aus. Zu einer beliebigen Zeit können
höchstens zwei Puffer mit Daten an einem Endpunktkanal hängen. Dieses erlaubt ein Doppelpuffer-Schema, wenn dieses
notwendig ist, um während einer großen Datenübertragung das Senden irgendeines NAKs zu verhindern. Die
Software-Synchronisation erfolgt mit Hilfe der Überprüfung des Pufferzustands. Nur ein abgeschlossener Pufferzustand
kann überschrieben werden. Für Bulk-Ausgangsendpunkte muß die Software einen Puffer vorbereiten, in welchen
die empfangenen Daten zu übertragen sind. Wenn dieser Puffer verfügbar ist, wird ein Steuerwort mit einem Zeiger
auf diesem Puffer in ein geeignetes Steuerwort geschrieben. Das Umschalt-Aktivierungsbit (Toggle Enable Bit)
sollte ebenfalls gesetzt werden. Anschließend gibt die Software einen ORDY-Befehl an den Endpunktkanal aus.
Nachdem Daten als Teil eines Out-Tokens in diesem Puffer empfangen wurden, wird das Steuerwort im Speicher aktualisiert.
Wenn der Umfang des Datenpakets bekannt ist, sollte das Puffer-Rundungsbit des Steuerworts gesetzt sein.
Dieses erlaubt, daß Pakete, die kleiner als der Pufferumfang sind, empfangen werden können, ohne daß ein Fehlerstatus
geschrieben wird. Wenn das Puffer-Rundungsbit nicht gesetzt ist, werden empfangene Pakete, die den zugeordneten
Puffer nicht exakt auffüllen, mit einem Daten-Statusfehler geschrieben. In allen Fällen wird der Daten-Statusfehler geschrieben,
wenn mehr Daten als erwartet für diesen Endpunktkanal empfangen wurden. Wenn das Auftreten eines
Fehlers während des Empfangs dieser Daten erkannt wird, wird ein Zwischen-Pufferstatus in den Speicher zurück geschrieben,
und beim nächsten Out-Token wird der Puffer erneut genutzt. Deshalb muß sich die Software nur um die Bereitstellung
von Puffern kümmern, in welche die Daten empfangen werden. Die Software muß sich nicht um Interna
des Wiederholungsprotokolls kümmern.
Isochrone Endpunkte folgen dem Programmiermodel für Bulk-Endpunkte, mit der Ausnahme, daß sie nicht einem
Umschaltprotokoll folgen. Statt dessen sind sie zu dem letzten signifikanten Bit des Frame-Zahlregisters synchronisiert.
Für isochrone Eingangsendpunkte werden die Daten mittels desselben IRDY-Puffers in der Warteschlange gehalten.
Wenn ein IN-Token an einem isochronen Endpunkt empfangen wird, wird das Datenpaket gesendet, wenn das letzte signifikante
Bit des Frame-Zahlregisters mit dem Steuerwort-Zeiger übereinstimmt. Wenn dies nicht der Fall ist, werden
keine Daten gesendet. Dieses ermöglicht es, die Datenübertragung mit einer speziellen Frame-Zahl zu synchronisieren.
Um die Übertragung einer speziellen Frame-Zahl auszulösen, kann das Frame-Zahlregister gelesen werden. Die Soft-
Claims (18)
- DE 199 OO 345 A 1Befehlsregister einen ersten und einen zweiten Teil aufweist, die Daten enthalten, die eine Endpunkt-Nummer bzw. einen Befehl darstellen, und wobei der Empfang eines Befehls das Schnittstellenmodul veranlaßt, die Information über den Endpunktkanal-Zustand eines mittels der Endpunkt-Nummer angezeigten Endpunktkanals dem Befehl entsprechend zu verändern.
- 2. Vorrichtung nach Anspruch 1, wobei das Schnittstellenmodul Handshake-Pakete der Information über den Endpunktkanal-Zustand entsprechend bereitstellt und annimmt.
- 3. Vorrichtung nach Anspruch 2, wobei die Endpunktkanal-Anordnung so konfiguriert ist, daß erste und zweite Steuerwörter für jeden der Vielzahl der Endpunktkanäle gehalten werden können.
- 4. Vorrichtung nach Anspruch 3, wobei das Schnittstellenmodul eine Schnittstelle zur Verbindung mit einer Vielzahl von Speicherpuffern umfaßt, wobei das erste Steuerwort erste Informationen über den Endpunktkanal-Zustand und eine erste Adresse zum Zeigen auf einen ersten Speicherpuffer in der Vielzahl von Speicherpuffern umfaßt, und wobei weiterhin das zweite Steuerwort zweite Informationen über den Endpunktkanal-Zustand und eine Adresse zum Zeigen auf einen zweiten Speicherpuffer in der Vielzahl von Speicherpuffern umfaßt.
- 5. Vorrichtung nach Anspruch 4, weiterhin aufweisend ein Basisadressregister der Endpunktkanal-Anordnung, welches Daten enthält, die eine Basisadresse der Endpunktkanal-Anordnung darstellen, wobei auf die Steuerwörter eines Endpunktkanals mittels einer Endpunktkanal-Nummer und der Basisadresse zugegriffen werden kann.
- 6. Vorrichtung nach Anspruch 5, die weiterhin ein Steuerwort-Zeigerregister mit Daten umfaßt, welche einen ersten und einen zweiten Wert aufweisen, wobei der erste Wert auf das erste Steuerwort und der zweite Wert auf das zweite Steuerwert zeigen, und wobei weiterhin das Steuerwort-Zeigerregister den ersten Wert aufweist, wenn eine Paketidentifizierung Null ist, und wobei das Steuerwort-Zeigerregister den zweiten Wert aufweist, wenn eine Paketidentifizierung Eins ist.
- 7. Vorrichtung nach Anspruch 1, wobei der Empfang eines Input-Enable-Befehls einen Endpunktkanal veranlaßt, aus dem Stall- oder Disable-Zustand in einen Input-Idle-Zustand zu gehen.
- 8. Vorrichtung nach Anspruch 7, wobei der Empfang eines Input- Ready-Befehls einen Endpunktkanal veranlaßt, einen Ready-Zustand einzunehmen.
- 9. Vorrichtung nach Anspruch 8, wobei der Empfang eines Input-Isochronous-Ready-Befehls einen Endpunktkanal veranlaßt, in einen Input-Isochronous-Ready-Zustand zu gehen.
- 10. Vorrichtung nach Anspruch 1, wobei der Empfang eines Output-Enable-Befehls einen Endpunktkanal veranlaßt, aus einem Stall- oder Disable-Zustand in einen Output-Idle-Zustand zu gehen.
- 11. Vorrichtung nach Anspruch 10, wobei der Empfang eines Output-Ready-Befehls einen Endpunktkanal veranlaßt, in einen Output-Ready-Zustand zu gehen.
- 12. Vorrichtung nach Anspruch 11, wobei der Empfang eines Output-Isochronous-Enable-Befehls einen Endpunktkanal veranlaßt, in einen Output-Isochronous-Idle-Zustand zu gehen.
- 13. Vorrichtung nach Anspruch 12, wobei der Empfang eines Output-Isochronous-Ready-Befehls einen Endpunktkanal veranlaßt, in einen Output-Isochronous-Ready-Zustand zu gehen.
- 14. Vorrichtung nach Anspruch 1, wobei der Empfang eines Setup-Ready-Befehls den Endpunktkanal veranlaßt, aus einen Stall- oder Disable-Zustand in einen Setup-Ready-Zustand zu gehen.
- 15. Vorrichtung nach Anspruch 1, wobei der Empfang eines Disable-Befehls einen Endpunktkanal veranlaßt, in einen Disable-Zustand zu gehen.
- 16. Vorrichtung nach Anspruch 1, wobei der Empfang eines Stall-Befehls einen Endpunktkanal veranlaßt, in einen Stall-Zustand zu gehen.
- 17. Vorrichtung zum Anschluß an einen Universellen Seriellen Bus (USB), die Vorrichtung aufweisend:- einen Puffer mit einer IN-BuIk-Konfiguration, einer Out-Bulk-Konfiguration, einer HM-Isochron-Konfiguration, einer OUT-Isochron-Konfiguration, einer Interrupt-Konfiguration und einer Steuerkonfiguration, wobei die Konfigurationen dynamische Änderungen erlauben;- ein Schnittstellenmodul mit einem Sender-Empfänger zum Anschluß an einen USB und eine Programmierschnittstelle, wobei das Schnittstellenmodul funktionell mit dem Puffer verbunden ist; und- eine Funktion, welche funktionell mit der Programmierschnittstelle und dem Puffer verbunden ist, wobei die Funktion das Schnittstellenmodul zum Senden und Empfangen der Daten des Puffers steuert, wobei die Funktion empfangene Daten aus dem Puffer bewegt, wobei die Funktion durch das Schnittstellenmodul zu übertragende Daten in den Puffer bewegt und wobei weiterhin das Schnittstellenmodul auf Paketwiederholungen antwortet, Handshakes akzeptiert und bereitstellt, und eine Antwort auf Fehlerbedingungen liefert.
- 18. Vorrichtung nach Anspruch 7, wobei der Puffer einen ersten und einen zweiten Teil zur Speicherung von Datenpaketen umfaßt, und wobei der zweite Teil nach einer ersten Setup-Transaktion zugeordnet wird.55Hierzu 4 Seite(n) Zeichnungen- Leerseite -
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/004,005 | 1998-01-07 | ||
| US400598 | 1998-01-07 | ||
| US09/004,005 US6157975A (en) | 1998-01-07 | 1998-01-07 | Apparatus and method for providing an interface to a compound Universal Serial Bus controller |
Publications (3)
| Publication Number | Publication Date |
|---|---|
| DE19900345A9 true DE19900345A9 (de) | |
| DE19900345A1 DE19900345A1 (de) | 1999-07-08 |
| DE19900345B4 DE19900345B4 (de) | 2005-06-23 |
Family
ID=21708668
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19900345A Expired - Fee Related DE19900345B4 (de) | 1998-01-07 | 1999-01-07 | 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 |
Country Status (3)
| Country | Link |
|---|---|
| US (1) | US6157975A (de) |
| KR (1) | KR100290944B1 (de) |
| DE (1) | DE19900345B4 (de) |
Families Citing this family (42)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR100290729B1 (ko) | 1998-01-07 | 2001-05-15 | 클라크 3세 존 엠. | 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법 |
| JP2002531883A (ja) * | 1998-11-09 | 2002-09-24 | サーラスロジック、アイ・エヌ・シー | 磁気ハードディスクドライブ用混合信号単一チップ集積システム電子装置 |
| US6233628B1 (en) * | 1999-01-08 | 2001-05-15 | Oak Technology, Inc. | System and method for transferring data using separate pipes for command and data |
| US6389560B1 (en) * | 1999-01-19 | 2002-05-14 | Sun Microsystems, Inc. | Universal serial bus interpreter |
| US6343260B1 (en) * | 1999-01-19 | 2002-01-29 | Sun Microsystems, Inc. | Universal serial bus test system |
| US6360278B1 (en) * | 1999-05-27 | 2002-03-19 | 3Com Corporation | FIFO queued entry point circuit for a network interface card |
| US6480948B1 (en) * | 1999-06-24 | 2002-11-12 | Cirrus Logic, Inc. | Configurable system memory map |
| US6804243B1 (en) * | 1999-11-22 | 2004-10-12 | Texas Instruments Incorporated | Hardware acceleration for segmentation of message packets in a universal serial bus peripheral device |
| US6523081B1 (en) * | 1999-11-22 | 2003-02-18 | Texas Instruments Incorporated | Architecture using dedicated endpoints and protocol for creating a multi-application interface and improving bandwidth over universal serial bus |
| US6671765B1 (en) * | 1999-11-22 | 2003-12-30 | Texas Instruments Incorporated | Architecture enabling code overlay using a dedicated endpoint |
| US6959257B1 (en) * | 2000-09-11 | 2005-10-25 | Cypress Semiconductor Corp. | Apparatus and method to test high speed devices with a low speed tester |
| US6718412B2 (en) * | 2000-12-14 | 2004-04-06 | Agilent Technologies, Inc. | Apparatus and method for universal serial bus communications |
| KR100422586B1 (ko) * | 2001-04-30 | 2004-03-12 | 주식회사 하이닉스반도체 | 유에스비 마이크로 컨트롤러 유닛 디버깅 방법 |
| JP3680763B2 (ja) * | 2001-05-14 | 2005-08-10 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
| JP3680762B2 (ja) * | 2001-05-14 | 2005-08-10 | セイコーエプソン株式会社 | データ転送制御装置及び電子機器 |
| SG107128A1 (en) * | 2001-07-13 | 2004-11-29 | Prolific Technology Inc | Usb compound device and the method for implementation thereof |
| TW569013B (en) * | 2002-02-21 | 2004-01-01 | Via Tech Inc | Chip test method for testing host controller of universal serial bus |
| AU2003250235A1 (en) * | 2002-06-03 | 2003-12-19 | Thomson Licensing S.A. | Dsl modem and method for establishing a data transfer mode therefore |
| US7478235B2 (en) | 2002-06-28 | 2009-01-13 | Microsoft Corporation | Methods and systems for protecting data in USB systems |
| US6757776B1 (en) * | 2002-07-17 | 2004-06-29 | Cypress Semiconductor Corp. | Control transaction handling in a device controller |
| US7114105B2 (en) * | 2002-12-05 | 2006-09-26 | Qualcomm, Inc. | System and method for software download to wireless communication device |
| CN100468348C (zh) * | 2002-12-05 | 2009-03-11 | 高通股份有限公司 | 用于将软件下载到无线通信设备的系统和方法 |
| US7143224B2 (en) * | 2003-05-09 | 2006-11-28 | Stmicroelectronics, Inc. | Smart card for performing advance operations to enhance performance and related system, integrated circuit, and methods |
| US7080789B2 (en) * | 2003-05-09 | 2006-07-25 | Stmicroelectronics, Inc. | Smart card including a JTAG test controller and related methods |
| US6783078B1 (en) | 2003-05-09 | 2004-08-31 | Stmicroelectronics, Inc. | Universal serial bus (USB) smart card having read back testing features and related system, integrated circuit, and methods |
| US7181649B2 (en) * | 2003-05-09 | 2007-02-20 | Stmicroelectronics, Inc. | Universal serial bus (USB) smart card having enhanced testing features and related system, integrated circuit, and methods |
| US7373522B2 (en) * | 2003-05-09 | 2008-05-13 | Stmicroelectronics, Inc. | Smart card with enhanced security features and related system, integrated circuit, and methods |
| US7369982B2 (en) * | 2003-06-04 | 2008-05-06 | Stmicroelectronics, Inc. | Multi-mode smart card emulator and related methods |
| KR100480084B1 (ko) * | 2003-07-23 | 2005-04-06 | 엘지전자 주식회사 | 범용 직렬버스를 이용한 데이터 전송 시스템 |
| US8046508B2 (en) * | 2004-04-21 | 2011-10-25 | Stmicroelectronics, Inc. | Smart card with self-detachment features and related methods |
| US7904607B2 (en) * | 2004-04-21 | 2011-03-08 | Stmicroelectronics, Inc. | Smart card with self-reconfiguration features and related methods |
| US8234421B2 (en) * | 2004-04-21 | 2012-07-31 | Stmicroelectronics, Inc. | Smart card with selectively allocatable data buffers and associated methods |
| US7328849B2 (en) * | 2004-04-21 | 2008-02-12 | Stmicroelectronics, Inc. | Smart card providing data mapping for multiple applications and related methods |
| JP2005328280A (ja) * | 2004-05-13 | 2005-11-24 | Canon Inc | データ処理装置 |
| US7188206B2 (en) * | 2004-10-22 | 2007-03-06 | Conwise Technology Corporation Ltd. | USB compound device without embedded hub and implement method in USB system |
| US7906982B1 (en) | 2006-02-28 | 2011-03-15 | Cypress Semiconductor Corporation | Interface apparatus and methods of testing integrated circuits using the same |
| US8332557B2 (en) * | 2008-12-12 | 2012-12-11 | Qualcomm, Incorporated | System, apparatus, and method for broadcasting USB data streams |
| EP2202662A1 (de) * | 2008-12-24 | 2010-06-30 | Gemalto SA | Tragbare Sicherheitsvorrichtung, die gegen Keylogger-Programme schützt |
| US9759772B2 (en) | 2011-10-28 | 2017-09-12 | Teradyne, Inc. | Programmable test instrument |
| US10776233B2 (en) | 2011-10-28 | 2020-09-15 | Teradyne, Inc. | Programmable test instrument |
| TWI582599B (zh) * | 2012-12-22 | 2017-05-11 | 群聯電子股份有限公司 | 資料傳輸方法、記憶體控制器、資料傳輸系統 |
| CN115883645B (zh) * | 2022-11-24 | 2024-07-12 | 百富计算机技术(深圳)有限公司 | 通信配置方法、电子设备及存储介质 |
Family Cites Families (10)
| 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 |
| US5974486A (en) * | 1997-08-12 | 1999-10-26 | Atmel Corporation | Universal serial bus device controller comprising a FIFO associated with a plurality of endpoints and a memory for storing an identifier of a current endpoint |
-
1998
- 1998-01-07 US US09/004,005 patent/US6157975A/en not_active Expired - Lifetime
-
1999
- 1999-01-06 KR KR1019990000087A patent/KR100290944B1/ko not_active Expired - Fee Related
- 1999-01-07 DE DE19900345A patent/DE19900345B4/de not_active Expired - Fee Related
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE19900345A9 (de) | Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses | |
| DE19900345A1 (de) | Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses | |
| DE19900245B4 (de) | Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host | |
| DE19900369B4 (de) | Vorrichtung zum Anschluß an einen Universal Serial Bus (USB) und Verfahren zum Betreiben eines Steuerendpunktes an einem Universal Serial Bus (USB) | |
| DE19900290B4 (de) | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung | |
| DE19900331A9 (de) | Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung | |
| DE68927214T2 (de) | Verfahren zur Datenübertragung zwischen einem Medienzugriffskontroller und einem Pufferspeicher in einem Tokenring-Netz | |
| DE69028462T2 (de) | Vorrichtung zur Verbindung von einer Steuereinheit mit parallelem Bus mit einem Kanal mit serieller Verbindung | |
| DE19900369A9 (de) | Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus | |
| DE2647241C2 (de) | Übertragungseinrichtung für die synchrone Datenübertragung | |
| DE69836426T2 (de) | Steuergerät für einen universellen seriellen Bus | |
| DE69825915T2 (de) | Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system | |
| DE3751091T2 (de) | Übertragungsprotokoll zwischen Prozessoren. | |
| DE3650092T2 (de) | E/a-steuerung mit zwei funktionen. | |
| DE69505871T2 (de) | Taktfehlererkennungsschaltung | |
| DE102004004796B4 (de) | Vorrichtung zur Datenübertragung zwischen Speichern | |
| DE3855599T2 (de) | System, das die Auswechselbarkeit der peripheren Einheiten ermöglicht | |
| DE19900325A1 (de) | Vorrichtung und Verfahren zum Senden und Empfangen von Daten in eine und aus einer universellen seriellen Buseinrichtung | |
| DE3687367T2 (de) | Ein/ausgabe-steuerungssystem. | |
| DE3688408T2 (de) | Drucker-magnetbanddatenverbindungsprozessor. | |
| DE69331449T2 (de) | Hochleistungskanäle für Datenverarbeitungssysteme | |
| DE4142756A1 (de) | Datenweg-einrichtung zur kopplung zweier busse | |
| DE102007012054B4 (de) | Mehrmasterverkettungszweidrahtseriellbus | |
| DE3146356A1 (de) | Datenverarbeitungssystem | |
| DE19900251B4 (de) | Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals |