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 BusesInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4295—Bus 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.
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.
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.
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 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.
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)
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)
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)
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 IP Right Cessation
- 1999-01-07 DE DE19900345A patent/DE19900345B4/de not_active Expired - Fee Related
Cited By (8)
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 |