DE19900345A1 - 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 Buses

Info

Publication number
DE19900345A1
DE19900345A1 DE19900345A DE19900345A DE19900345A1 DE 19900345 A1 DE19900345 A1 DE 19900345A1 DE 19900345 A DE19900345 A DE 19900345A DE 19900345 A DE19900345 A DE 19900345A DE 19900345 A1 DE19900345 A1 DE 19900345A1
Authority
DE
Germany
Prior art keywords
endpoint
state
buffer
channel
command
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
Application number
DE19900345A
Other languages
English (en)
Other versions
DE19900345A9 (de
DE19900345B4 (de
Inventor
David Brief
Kent Bruce Waterson
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 DE19900345A9 publication Critical patent/DE19900345A9/de
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19900345A1 publication Critical patent/DE19900345A1/de
Application granted granted Critical
Publication of DE19900345B4 publication Critical patent/DE19900345B4/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/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation

Description

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/MIDI-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-Personalcom­ puter 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 Programmier­ schnittstelle, auf welche 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 gleicher Weise 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 Endpunktkanä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 IN-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 Schnitt­ stellenmodul 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", (v) 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 110 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 ver­ bunden und weist ein physikalisches (PHY)-Niveau und ein Medienzugriffs-Steuer (MAC)- Niveau auf. Das physikalische Niveau umfaßt einen digitalen Zeittakt-Wie­ deraufnahmeschaltkreis, einen digitalen Pannenfilter, einen End_Of_Packet- 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 Endpunktadres­ se, 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 ver­ bunden und liefert die Schnitt-stelle für die USB-Funktionsendpunkte.
Der Endpunkt-Controller 210 arbeitet als ein Master/Slave auf dem Kernbus 118 und unter­ stü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 RAM 112 zu über­ tragen.
Der Endpunkt-Controller 210 bewahrt separate Zustandsinformation für jeden Endpunktkanal. Zustandsinformation, die für unmittelbare Entscheidungen verlangt wird, wie z. B. zum Ant­ worten 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 Schnitt­ stellenmaschine 212 beim Geben der passenden ACK-, NAK- und STALL-Antwort zu füh­ ren. 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 be­ schrieben. Der Endpunkt-Controller 210 umfaßt einige funktionelle Blöcke. Insbesondere umfaßt der Endpunkt-Controller 210 eine Medienzugriffs-Steuerschnittstelle 302, einen Ge­ rä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 Berei­ che 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 ge­ genwartig zugegriffen wird.
Die Endpunkt-Zustandsmaschine 306 führt Funktionen bezüglich der Bewahrung des Zustan­ des 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 des­ halb die Endpunkt-Zustandsmaschine 306.
Der Endpunktkanal-Teilspeicher 308 speichert zu jeder Zeit für jeden Endpunktkanal Zu­ standsinformationen, 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 not­ wendigen Datenbyte-Ausrichtungen zur Verfügung.
Eine bevorzugte Ausführungsform der erwähnten Endpunktkanal-Anordnung wird im folgen­ den 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 End­ punktkanal-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 Spei­ cher 520 dargestellt.
Die Endpunktkanal-Anordnung 522 umfaßt für jeden der sechzehn Endpunktkanäle ein erstes Steuerwort CW0 und ein zweites Steuerwort CW1. 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 mit­ tels einer vier-Bit-Endpunktkanal-Zahl und eines Ein-Bit-Endpunktkanal-Steuerwortzeigers indiziert. Wie dargestellt ist, zeigt eine Endpunkt-Zahl von null, EP0 532 auf das erste Paar Steuerwörter in der Endpunktkanal-Anordnung 522. In gleicher Weise zeigt EP1 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 Endpunkt­ kanal zu betreiben. Wie in dem Block 524 dargestellt ist, weist jedes Steuerwort die Informa­ tion ü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 End­ punktkanal-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 geschrie­ ben ist, wird das Steuerwort mit dem gegenwärtigen Status aktualisiert, das CWP wird inkre­ mentiert, und das andere Steuerwort wird gelesen. Wenn ein Zwischenstatus geschrieben wird, wird nur das signifikanteste Byte des Steuerworts aktualisiert. Das Format des Steuer­ wortes ist im folgenden dargestellt:
Bits
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 IE (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 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 in­ krementiert 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 geschal­ tet 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 zu­ rü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 IN-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 be­ handelt 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 Fer­ tigstellungs-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 IN-Transaktion wurden die Daten aus dem Speicher nicht schnell genug gele­ sen, 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 Eingabeope­ ration 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 mo­ mentanen Kontext dieses Steuer-Endpunktkanals empfangen wurde. Wenn dieses ein Ausga­ bepuffer 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 Ab­ schlußstatus betrachtet.
11: Isochronous Synchronization Error SYNE. Dieser Wert zeigt an, daß Daten in einem Puf­ fer 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 IN-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 einzu­ nehmen, 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 ge­ schrieben. Dieses Feld wird am Ende von nicht vollstandig 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 IN- Puffer. Die Adresse zeigt auf das erste Byte der zu übertragenden Daten, d. h. das Byte, wel­ ches im Paket unmittelbar auf das PID folgt. Der CRC wird automatisch berechnet und an das Paket angehangen, es sei denn, ein IN-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är­ tigen Eingangs-/Ausgangspuffers benutzt wird.
Das Pufferrundungsbit BR wird für Out-Transaktionen genutzt. Es zeigt an, ob ein empfange­ nes Datenpaket kleiner als der Datenpuffer sein kann. Wenn das BR null ist, sollte das Daten­ paket den definierten Datenpuffer exakt füllen. Ein Pufferüberlauf- oder Pufferunterschrei­ tungs-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 DATA0 und 1 für DATA1.
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 DATA0 oder DATA1 hat, zu vergleichen, und wird benutzt, um einen Datenpaket- Identifizierer für einen IN-Token zu erzeugen.
Wenn das TE in einem Null-Zustand ist, wird das Daten-Toggle-PID einer OUT-Transaktion nicht überprüft. Das Daten-Toggle-PID wird auf der Basis des gegenwärtigen Wertes des CWP als Antwort auf IN-Token erzeugt. Das CWP wird nach jeder Transaktion inkrementiert (invertiert), auch wenn ein ACK nicht empfangen wurde. Für Isochrone 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 zugeord­ net 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 (DATA0 oder DATA1) nicht mit dem CWP übereinstimmt. Für IN-Transaktionen wird das CWP nur nach jeder Transakti­ on inkrementiert (invertiert), wenn innerhalb der Antwortzeitperiode ein ACK-Handshake zurückgesendet wurde. Für Isochrone Endpunkte werden die OUT-Daten immer in den Spei­ cher 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 Eingangs- oder Ausgangsabschluß geschrieben wird, oder wenn der End­ punktkanal 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 IE gesetzt sind, veranlassen die CRC- und Bit-Stuff-Fehler, daß die ent­ sprechenden Puffer nicht in einer normalen Operation erneut genutzt werden. Dieses er­ mö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 en­ den. 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 empfan­ gen werden können. Das BC kann eine Null halten, um ein Null-Längen-Datenpaket anzuzei­ gen. Am Ende aller abgeschlossenen Übertragungen wird der Restwert des Byte-Zählers ge­ schrieben. Am Ende einer nicht abgeschlossenen Übertragung, z. B., wenn der Status Ein­ gangs- 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)
7-4 Endpoint Pipe Number (EPN) (Endpunktkanal-Zahl)
3-0 Endpoint Command (CMD) (Endpunkt-Befehl)
Die Endpunktkanal-Zahl EPN bestimmt den Endpunktkanal, auf welchem der Befehl ausge­ führt wird. Bei einer bevorzugten Ausführungsform kann dieses Register in die Hochge­ schwindigkeits-Bus-Schnittstellenlogik implementiert sein. Die Daten laufen über die asyn­ chrone 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 wer­ den 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 I_IDL 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 auszu­ führen, und daß der Befehl ignoriert wird.
0010: Input Ready (CMD.IRDY). Dieser Wert veranlaßt den spezifizierten Endpunktkanal in den Input Ready-Zustand I_RDY zu gehen, wenn dieser momentan in dem Input Idle-Zustand I_IDL ist. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Input Ready- Pufferzustand I_RDY in die Endpunkt-Anordnung des entsprechenden Endpunktes geschrie­ ben wurde. Dieser Befehl veranlaßt nicht, daß das Steuerwort im Speicher gelesen wird; es erlaubt hingegen, daß es als Antwort auf den Empfang eines IN-Tokens gelesen wird. Wenn der gegenwärtige Zustand des Endpunktes nicht Input Idle I_IDL ist, wird der Befehl igno­ riert. 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 IS_RDY zu gehen, wenn er mo­ mentan in dem Input Idle-Zustand 1_IDL ist. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit dem Input Ready-Puffer-Zustand in die Endpunkt-Anordnung für den entspre­ chenden 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 I_IDL ist, wird der Befehl ignoriert. Wenn der gegenwärtige Zu­ stand 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 O_IDL zu gehen. Der Steu­ erwort-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 anzuzei­ gen, 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 veranlaßt den spezifizierten Endpunktkanal in den Output Ready-Zustand O_RDY zu gehen, wenn er gegenwärtig in dem Output Idle- Zustand O_IDL ist. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Out­ put Ready-Zustand in die Endpunkt-Anordnung für den entsprechenden Endpunkt geschrie­ ben 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 igno­ riert. Wenn der gegenwärtige Zustand der Input-, der Stall- oder 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 OS_IDL zu gehen. Der Steuerwort-Zeiger führt den spezifizierten Endpunkt wird auf 0 ge­ setzt. 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 die­ sem Endpunkt auszuführen, und der Befehl wird ignoriert.
0111: Output Isochronous Ready (CMD.OSRDY). Dieser Wert veranlaßt den spezifizierten Endpunktkanal in den Output Isochronous Ready-Zustand OS_RDY zu gehen, wenn dessen momentaner Zustand der Output Isochronous Idle-Zustand OS_IDL 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 veran­ laß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" zu­ rü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 S_RDY zu gehen. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Output Ready-Zustand in die Endpunkt-Anordnung für den entspre­ chenden 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 End­ punktkanal gegenwärtig aktiv ist, wird der Status in die Steuerung geschrieben, so daß ange­ zeigt ist, daß der Endpunkt nicht aktiviert ist.
1010: Stall (CMD.HALT). Dieser Wert veranlaßt den spezifizierten Endpunkt aus einem be­ liebigen 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ärti­ gen Endpunktkanals nicht ausführbaren Befehl auszuführen, und daß ein neuer Befehl auf­ genommen 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 Endpunkt­ kanal 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) (Endpunktkanal-Zustand)
Control CTL: Dieses wird geltend gemacht, wenn dieser Endpunktkanal in der Lage ist, Steu­ ersequenzen 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 ge­ setzt, wenn der Endpunkt aktiviert ist.
Der Endpunktkanal-Zustand (EPS) kann die folgenden Werte annehmen:
Wert
Zustand
0 Disabled DIS
1 Input Idle I_IDL
2 Input Ready LRDY
3 Input Active I_ACT
4 Stalled HALT
5 Input Missed ACK I_MAK
6 Input Isochronous Ready IS_RDY
7 Input Isochronous Active IS_ACT
8 Setup Ready S_RDY
9 Output Idle O_IDL
10 Output Ready O_RDY
11 Output Active O_ACT
12 Setup Active S_ACT
13 Output Isochronous Idle OST_IDL
14 Output Isochronous Ready OS_RDY
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 de­ finierten 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 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-Zu­ standsregister sichtbar, auf welches mit einem USB-Index- und einem Daten-Register zuge­ griffen 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 End­ punktkanal, und auf das Erkennen eines Disable-Zustandes in dem Pufferzustand des Steuer­ wortes 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. Typi­ scherweise 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 be­ stimmten, Fehlerbedingungen eingenommen. Während dieser Endpunktkanal in diesem Zu­ stand ist, wird jeder an diesem Endpunkt empfangene Token als ein Stall-Handshake zurück­ gesendet, um anzuzeigen, daß der Endpunkt gegenwärtig blockiert ist. Eine Software- Intervention ist notwendig, um den Endpunktkanal aus diesem Zustand zu bringen. Typi­ scherweise geschieht dies durch einen Enable-Befehl an einen der Idle-Zustände.
Setup Ready S_RDY. Dieser Zustand 720 wird eingenommen, nachdem dieser Endpunktka­ nal 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 ein­ genommen, 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 I_IDL. 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 DATA0 übertragen, wenn der CWP 0 ist und wird als DATA1 übertragen, wenn der CWP gleich 1 ist.
Input Active I_ACT. Dieser Zustand 754 wird auf den Empfang eines IN-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 IS_RDY. Der IS_RDY-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 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 DATA0 ü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 OS_IDL. In dem OS_IDL-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 OS_RDY. Der OS_RDY-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 OS_IDL-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 OS_RDY-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 ge­ schrieben. 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ühertragung 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äte­ konfigurationsregisters 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, 11 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-, 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, welche 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 CW0 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 Set_Adress-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 (I_IDL) 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 I_RDY-Zustand zu gehen.
Als Antwort auf den nächsten empfangenen IN-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 I_RDY-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 Software kann mit dem Wert einer Frame-Zahl, welche übereinstimmen muß, einen Interrupt verlangen. Eine Anpassung wird nur für die unteren acht Bits ausgeführt. Dieses ermöglicht das Halten dieses Ereignisses in der Warteschlange bis zu 256 ms, bevor die Frame-Zahl über das USB-Netzwerk empfangen wird. Wenn dieser Interrupt ausgeführt wird, kann die Software den passenden Puffer in der Warteschlange auf dem Endpunktkanal halten.
Für isochrone Ausgangsendpunkte bestimmt das Umschaltaktivierungsbit, wie das LSB des Frame-Zahlregisters genutzt wird. Wenn das Umschalt-Aktivierungsbit nicht besetzt ist, werden alle Daten in den Speicher geschrieben. Wenn das letzte signifikante Bit des Frame-Zahlregisters jedoch nicht gleich dem CWP ist, wird ein Synchronisations-Fehlerstatus als Pufferzustand geschrieben. Wenn das TE gesetzt ist, werden die Daten nur gespeichert, wenn das letzte signifikante Bit des Frame-Zahlregisters gleich dem CWP ist. Bei der Synchronisation eines isochronen Ausgangsdatenstroms mit der Frame-Zahl, kann die Software den ersten Puffer mit TE setzen, so daß das Schreiben nur beginnt, wenn eine Frame-Zahl-Übereinstimmung gegeben ist. Es können dann alle folgenden Frames mittels eines einfachen Vergleichs der Frame-Zahlen erkennen, ob ein Synchronisationsfehler aufgetreten ist.
Das Frame-Zahlregister wird für bis zu zwei Frames weiter nötig sein, auch wenn das SOF zeitweise verloren wird. Sollte das SOF für mehr als zwei Frames verloren gehen, wird der Software ein Freigabeereignis signalisiert. Hierauf sollten alle folgenden isochronen Übertragungen mit besonderer Beachtung behandelt werden, oder unterbrochen werden, bis der Frame-Zahl-Zähler erneut geschlossen wird.
Endpunkt 0 ist typischerweise ein Steuerendpunkt. Zusätzlich erlaubt es der beschriebene Abbildungsmechanismus, daß andere Endpunkte Steuerendpunkte werden. Für einen Steuerendpunkt sollten das Steuerwort 1 und das Steuerwort 0 stets zusammen geschrieben werden. Beispielsweise sollte das SRDY für die nächste Steuerübertragung zusammen mit dem Puffer oder dem Paket für die Statusübertragung der momentanen Steuerübertragung geschrieben werden. Wenn während einer Datenphase einer Steuer-Lese- oder Steuer-Schreib- Operation eine ungerade Anzahl von Datenpaketen gesendet wird, bevor die Statusphase gesendet ist, muß die Software den Steuerwortzeiger anpassen, weil die Statusphase in dem Steuerwort 1 und der nächste SRDY-Puffer in dem Steuerwort 0 abgelegt werden müssen. Um dies zu erreichen, kann die Software einen SKIP-Puffer einfügen oder einen Umschalt-CWP- Befehl ausgeben. Die Software kann danach den Ready-Befehl für den Statusphasen-Puffer ausgeben. Sollte ein Setup-Token an einem Steuerendpunkt, für welchen ein SRDY-Puffer gegenwärtig nicht verfügbar ist, erkannt werden, wird ein beträchtlicher Aufwand betrieben, um den Setup-Token zu empfangen. Der Setup-Token wird in der Datenleitung gespeichert, während darauf gewartet wird, daß die Software einen Puffer zuordnet.
Wenn ein gültiges Setup empfangen wird, wird ein Interrupt durchgesetzt. Als Antwort sollte die Software einen Puffer auf Steuerwort 0 schreiben, und einen SRDY-Befehl ausgeben. Dieses veranlaßt, daß das anhängende Setup in den Speicher geschrieben wird. Der SRDY-Befehl verursacht, daß der Endpunkt als ein Steuerendpunkt betrachtet wird und daß er gesetzt bleibt, die ein Eingangsaktivierungs- oder Ausgangsaktivierungs-Befehl ausgeführt wird. Der SRDY- Puffer sollte so schnell wie möglich bereitgestellt werden, da der Datenweg für jede zusätzliche Datenübertragung blockiert ist, wenn der Interrupt durchgesetzt ist. Allen über des USB- Netzwert empfangenen Token wird ein NAK zurückgesendet, während auf den Puffer gewartet wird.
Nachdem ein Setup empfangen wurde, muß es überprüft werden, und es ist eine passende Antwort zu bestimmen. Zu diesem Zeitpunkt plaziert die Firmware geeigneterweise zusätzliche Eingangs- oder Ausgangspuffer. Wenn das Setup ein Befehl ist, weicher durch die Funktion nicht unterstützt wird, wird ein neuer SRDY-Puffer auf das Steuerwort 0 gegeben, und der SRDY-Befehl wird ausgegeben. Dieses verursacht, daß allen Token an diesem Endpunkt ein NAK-Handshake zurückgesendet wird, bis das nächste Setup empfangen wird. Während die Software in der Zwischenzeit das Setup analysiert, werden NAKs als Antwort auf die Token gesendet.
Obwohl die Ausführungsformen unter Bezugnahme auf spezielle Gerätestrukturen, Program­ mierzustände und Programmiermodelle beschrieben wurden, kann die Erfindung auf eine Vielzahl anderer Geräte angewendet werden, welche verschiedene Programmierzustände und -modelle implementieren. Der Fachmann entnimmt den Ausführungsformen, daß viele Modi­ fikationen möglich sind, ohne deren Lehre zu verlassen. All diese Modifikationen sollen von den folgenden Ansprüchen umfaßt sein.
Die Architektur der USB-Knotenschnittstelle ist in dem folgenden Anhang, der Teil der Be­ schreibung ist, näher spezifiziert.

Claims (18)

1. Schnittstellenmodul für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion, das Schnittstellenmodul aufweisend:
  • - eine Endpunktkanal-Anordnung zum Halten eines Steuerworts für jeden einer Vielzahl von Endpunktkanälen, wobei jedes Steuerwort Informationen über den Endpunktkanal- Zustand und eine Adresse zum Zeigen auf einen Speicherpuffer umfaßt; und
  • - ein Endpunkt-Befehlsregister zum Empfangen von Befehlen von einer USB-Funktion, wobei das Endpunkt-Befehlsregister 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 Zei­ gen 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 End­ punktkanal-Anordnung, welches Daten enthält, die eine Basisadresse der Endpunktka­ nal-Anordnung darstellen, wobei auf die Steuerwörter eines Endpunktkanals mittels ei­ ner 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 wo­ bei weiterhin das Steuerwort-Zeigerregister den ersten Wert aufweist, wenn eine Paket­ identifizierung 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 End­ punktkanal veranlaßt, in einen Disable-Zustand zu gehen.
16. Vorrichtung nach Anspruch 1, wobei der Empfang eines Stall-Befehls einen Endpunkt­ kanal 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-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 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.
DE19900345A 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 Expired - Fee Related DE19900345B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
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
US09/004,005 1998-01-07
US400598 1998-01-07

Publications (3)

Publication Number Publication Date
DE19900345A9 DE19900345A9 (de)
DE19900345A1 true 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1258798A2 (de) * 2001-05-14 2002-11-20 Seiko Epson Corporation Datentransfersteueranlage, elektronisches Gerät und Datentransfersteuerverfahren
EP1260909A2 (de) * 2001-05-14 2002-11-27 Seiko Epson Corporation Datensteueranlage, elektronisches Gerät und Datenübertragungssteuerverfahren

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100290729B1 (ko) 1998-01-07 2001-05-15 클라크 3세 존 엠. 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법
KR100676556B1 (ko) * 1998-11-09 2007-01-30 사이러스 로직, 인코포레이티드 자기 하드 디스크 드라이브를 위한 혼합-신호 싱글-칩집적 시스템 전자장치
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
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
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
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 주식회사 하이닉스반도체 유에스비 마이크로 컨트롤러 유닛 디버깅 방법
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
US7773732B2 (en) * 2002-06-03 2010-08-10 Thomson Licensing 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
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
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
US7373522B2 (en) * 2003-05-09 2008-05-13 Stmicroelectronics, Inc. Smart card with enhanced security features 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
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 엘지전자 주식회사 범용 직렬버스를 이용한 데이터 전송 시스템
US8234421B2 (en) * 2004-04-21 2012-07-31 Stmicroelectronics, Inc. Smart card with selectively allocatable data buffers and associated methods
US8046508B2 (en) * 2004-04-21 2011-10-25 Stmicroelectronics, Inc. Smart card with self-detachment features and related methods
US7328849B2 (en) * 2004-04-21 2008-02-12 Stmicroelectronics, Inc. Smart card providing data mapping for multiple applications and related methods
US7904607B2 (en) * 2004-04-21 2011-03-08 Stmicroelectronics, Inc. Smart card with self-reconfiguration features 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 群聯電子股份有限公司 資料傳輸方法、記憶體控制器、資料傳輸系統
CN115883645A (zh) * 2022-11-24 2023-03-31 百富计算机技术(深圳)有限公司 通信配置方法、电子设备及存储介质

Family Cites Families (10)

* 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
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

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1258798A2 (de) * 2001-05-14 2002-11-20 Seiko Epson Corporation Datentransfersteueranlage, elektronisches Gerät und Datentransfersteuerverfahren
EP1260909A2 (de) * 2001-05-14 2002-11-27 Seiko Epson Corporation Datensteueranlage, elektronisches Gerät und Datenübertragungssteuerverfahren
EP1260909A3 (de) * 2001-05-14 2003-05-07 Seiko Epson Corporation Datensteueranlage, elektronisches Gerät und Datenübertragungssteuerverfahren
EP1258798A3 (de) * 2001-05-14 2003-05-21 Seiko Epson Corporation Datentransfersteueranlage, elektronisches Gerät und Datentransfersteuerverfahren
US7007112B2 (en) 2001-05-14 2006-02-28 Seiko Epson Corporation Data transfer control device, electronic equipment, and data transfer control method
US7051124B2 (en) 2001-05-14 2006-05-23 Seiko Epson Corporation Data transfer control device, electronic equipment, and data transfer control method
US7237047B2 (en) 2001-05-14 2007-06-26 Seiko Espon Corporation Data transfer control device, electronic equipment, and data transfer control method
CN100351816C (zh) * 2001-05-14 2007-11-28 精工爱普生株式会社 数据传送控制装置、电子装置和数据传送控制方法

Also Published As

Publication number Publication date
US6157975A (en) 2000-12-05
KR100290944B1 (ko) 2001-05-15
DE19900345B4 (de) 2005-06-23
KR19990067732A (ko) 1999-08-25

Similar Documents

Publication Publication Date Title
DE19900345A1 (de) Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses
DE19900369A1 (de) Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus
DE19900345A9 (de) Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses
DE19900331A1 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE19900331A9 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE19900245B4 (de) Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
DE60309391T2 (de) Datenübertragungssteuerungssystem, Programm und Datenübertragungssteuerungsverfahren
DE19900325B4 (de) Vorrichtung und Verfahren zum Senden und Empfangen von Daten in eine und aus einer universellen seriellen Buseinrichtung
DE19900369A9 (de) Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE2854485C2 (de) Datenverarbeitungsanlage
DE3043894C2 (de)
DE4003759C2 (de) Verfahren und Anordnung zur Übertragung von Daten über einen Bus zwischen selektiv ankoppelbaren Stationen
DE2829550C2 (de)
EP1776807B1 (de) Verfahren und vorrichtung zum zugriff auf daten eines botschaftsspeichers eines kommunikationsbausteins
DE4142756A1 (de) Datenweg-einrichtung zur kopplung zweier busse
EP1787204B1 (de) Botschaftsverwalter und verfahren zur steuerung des zugriffs auf daten eines botschaftsspeichers eines kommunikationsbausteins
DE60205809T2 (de) Datensteueranlage, elektronisches Gerät und Datenübertragungssteuerverfahren
DE19900290A9 (de) Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung
DE102005048581B4 (de) Teilnehmerschnittstelle zwischen einem FlexRay-Kommunikationsbaustein und einem FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle
DE69935065T2 (de) Datenübertragungssteuerinrichtung und elektronisches gerät
WO2007134955A1 (de) Kommunikationsbaustein
DE60106929T2 (de) Methode und vorrichtung zur ankopplung von single master geräten an eine multimaster wired-and busumgebung
EP1941377A2 (de) Teilnehmerschnittstelle zwischen einem mikrocontroller und einem flexray-kommunikationsbaustein, flexray-teilnehmer und verfahren zur übertragung von botschaften über eine solche schnittstelle
DE69726302T2 (de) Busschnittstellensteuerungsschaltung

Legal Events

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

Free format text: IM ANSCHLUSS AN DIE BESCHREIBUNG IST DER ANHANG SEITE 2-59 EINZUFUEGEN. ES FOLGT ERGAENZUNGSDRUCK

8364 No opposition during term of opposition
R082 Change of representative
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee