DE19900369A1 - Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus - Google Patents
Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial BusInfo
- Publication number
- DE19900369A1 DE19900369A1 DE19900369A DE19900369A DE19900369A1 DE 19900369 A1 DE19900369 A1 DE 19900369A1 DE 19900369 A DE19900369 A DE 19900369A DE 19900369 A DE19900369 A DE 19900369A DE 19900369 A1 DE19900369 A1 DE 19900369A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- memory
- endpoint
- controller
- usb
- 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
- 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
-
- 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/4247—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
- G06F13/426—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Description
Die Erfindung betrifft eine Vorrichtung und ein Verfahren zur Ausführung einer Steuerüber
tragung über einen Universal Serial Bus (USB), insbesondere das Antworten auf ein Setup,
auf Daten und auf Statustransaktionen einer Steuerübertragung.
Der USB ist eine normierte Peripherieschnittstelle für den Anschluß von Personalcomputern
an eine große Vielzahl von Geräten, beispielsweise digitale Telefonleitungen, Monitore, Mo
dems, Mäuse, Drucker, Scanner, Spielcontroller, Tastaturen und andere Peripheriegeräte. Der
USB ersetzt deshalb bekannte Schnittstellen, wie serielle Anschlüsse RS-232C, parallele An
schlü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-
Personalcomputer umfaßt einen einzigen USB-Controller. Der Host-Controller bildet die
Schnittstelle zwischen dem USB-Netzwerk und dem Host-Personalcomputer. Der Host-
Controller steuert alle Zugriffe auf USB-Mittel und überwacht die Bus-Topologie. Ein USB-
Hub bildet USB-Anschlußpunkte für USB-Geräte.
Ein Beispiel eines "Tiered Star"-Aufbaus eines USB-Netzwerks ist in Fig. 1 dargestellt. Der
Host PC 100 ist ein typischer Personal Computer mit einer USB-Anschlußverbindung über
den Host-Controller 102. Der Host-Controller 102 ist direkt mit dem Basis-Hub 110 verbun
den, welcher typischerweise als Teil des Host-PCs 100 implementiert ist. Das Verbindungs
gerät 120, der Hub 130 und das Gerät 140 sind mit dem Host-Controller 102 durch den Basis-
Hub 110 verbunden. Die Geräte 132 und 134 sind mit dem Host-Controller 102 durch den
Hub 130 und den Hub 110 verbunden.
Das Verbindungsgerät 120 umfaßt die Geräte 124, 126 und den Hub 122. Der Hub 122 des
Verbindungsgerätes 120 ist mit dem Host-Controller durch den Hub 110 verbunden. Die Ge
räte 124 und 126 des Verbindungsgerätes 120 sind mit dem Host-Controller 102 durch den
Hub 122 und den Hub 110 verbünden. Ein praktisches Beispiel für ein Verbindungsgerät ist
ein integriertes Drucker- und Faxgerät. Der Drucker könnte das Gerät 124 sein, und das Fax
gerät könnte das Gerät 126 sein.
Der in Fig. 1 dargestellte verbundene "Star-Aufbau" erlaubt die Datenübertragung von ver
schiedenen Geräten in den und aus dem Host-PC 100. Wenn Daten von dem Host an ein Ge
rät übermittelt werden, so ist dies ein Abwärtstransport durch die miteinander verbundenen
Hubs. Wenn Daten von den Geräten an den Host übermittelt werden, ist dies ein Auf
wärtstransport durch die miteinander verbundenen Hubs.
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. In Fig. I wird den Geräten 124, 126, 132, 134 und 140 zusammen mit den Hubs
110, 122 und 130 nach der Verbindung mit das USB-Netzwerk eine einmalige funktionelle
Adresse zugewiesen.
Eine USB-Funktion ist ein 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 die Schnittstellen definiert, die das Gerät bilden. Jede Schnittstelle ist ihrer
seits von einem oder mehreren Endpunkten gebildet.
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 Adres
se.
Bei der Initialisierung eines Gerätes assoziiert der Host-Controller einen Kanal mit den End
punkt-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.
Bei der Initialisierung wird einem Kanal ein Anspruch auf USB-Buszugriff und
-Bandbreitennutzung zugewiesen. Diese Zuweisung bestimmt die Priorität bei der Übertragung
von Daten über einen speziellen Kanal zu einem Endpunkt. Die Eigenschaften des Endpunk
tes werden bei der Initialisierung auch mit dem Kanal assoziiert. Derartige Eigenschaften um
fassen den maximalen Datennutzlastenbereich, die Direktionalität der Übertragungen und
andere geeignete, charakterisitische Daten. Diesen Eigenschaften werden von dem Host bei
der Datenübertragung über den Kanal benutzt.
Die Zuweisung eines Anspruchs auf USB-Buszugriff und -Bandbreite an einen Kanal, er
möglicht es dem Host-Controller, Aufwand zu betreiben, um zu sichern, daß alle Eingangs-
/Ausgangsdaten-Anftagen an die Endpunkte, über die verfügbare Bandbreite des USB-Busses
angemessen bedient werden können. Die Zuweisung von Ansprüchen auf Buszugriff und
-bandbreite zu einem Kanal, begrenzt die Zuordnung zu später konfigurierten Geräten. Wenn
die Bandbreite eines USB-Busses vollständig zugeordnet ist, kann nachfolgend konfigurierten
Geräten keine Bus-Bandbreite zugeordnet werden. Hieraus folgt, daß nachfolgend konfigu
rierte Geräte keine Kanäle zugeordnet werden können.
Nachdem der Initialisierungsprozeß abgeschlossen ist, ist die Zuordnung der Kanäle zu spezi
ellen Endpunkten eines Gerätes fest, und kann nicht verändert werden, bis das Gerät getrennt
wird, oder ein Reset ausgeführt wird. Entsprechend wird Geräten mit einer Vielzahl von End
punkt-Funktionen eine Vielzahl von Kanälen zugeordnet, die jeder mit einem speziellen End
punkt verbunden sind.
Jeder Endpunkt ist eine adressierbare Einheit auf dem USB und muß auf IN- und OUT-Token
(Eingangs- und Ausgangs-Token) von dem USB-Host-Controller antworten. Die IN-Token
zeigen an, daß der Host den Empfang von Informationen von einem Endpunkt verlangt. Die
OUT-Token zeigen an, daß der Host Informationen an einen Endpunkt senden wird.
Auf das Erkennen eines an einen Endpunkt adressierten IN-Tokens ist der Endpunkt für das
Antworten mit einem Datenpaket verantwortlich. Wenn der Endpunkt momentan verstopft ist,
wird ein STALL-Handshake-Paket gesendet. Wenn der Endpunkt freigegeben ist, aber keine
Daten anliegen, wird ein negatives Quittier-Handshake-Paket (NAK) gesendet.
In ähnlicher Weise ist der Endpunkt beim Erkennen eines an einen Endpunkt adressierten
OUT-Tokens für den Empfang eines von dem Host gesendeten Datenpaketes und dessen
Speicherung in einem Puffer verantwortlich. Wenn der Endpunktkanal am Ende einer Daten
übertragung zeitweise blockiert ist, wird ein STALL-Handshake-Paket (Quittier-Paket) ge
sendet. Wenn der Endpunktkanal am Ende einer Datenübertragung zeitweise nicht freigege
ben ist, so wird kein Handshake-Paket gesendet. Wenn der Endpunktkanal empfangsbereit ist,
aber kein Puffer vorhanden ist, in welchem die Daten gespeichert werden können, wird ein
NAK-Handshake-Paket gesendet.
Ein nicht aktivierter Endpunkt oder ein Endpunkt, welcher momentan nicht auf einen End
punktkanal abgebildet ist, antworten nicht auf IN-, OUT- oder SETUP-Token.
Der USB definiert vier Arten der Datenübertragung über einen Kanal: Steuer-, Bulk-, Inter
rupt- und Isochron-Übertragung.
Steuer-Übertragungen werden von dem Host zur Konfigurierung eines Gerätes nach dem An
schluß an einen Hub genutzt. Steuerübertragungen können von dem Host-Controller auch für
die Implementierung spezieller Transaktionen mit einem Gerät genutzt werden.
Bulk-Übertragungen sind sequentielle Übertragungen, im allgemeinen Übertragungen von
großen Datenmengen. Bulk-Übertragungen liefern zuverlässige Transaktionen durch die Nut
zung von Fehlererkennung und dem erneuten Senden von fehlerhaften Daten. Die Busband
breite, welche für eine Bulk-Übertragung zugeordnet wird, kann jede verfügbare Bandbreite
sein, da Bulk-Übertragungen nicht zeitempfindlich sind.
Interrupt-Übertragungen sind kleine spontane Datentransaktionen, die von einem Gerät ausge
hen.
Isochron-Übertragungen sind kontinuierliche Echtzeitdatentransaktionen. Isochron-
Übertragungen sind einem Teil einer USB-Netzwerk-Bandbreite ausschließlich zugeordnet,
um einen rechtzeitigen Abschluß der Isochronen-Übertragungen zu sichern.
Die USB-Vorschrift definiert ein Steuer-Übertragungsprotokoll zur Nutzung bei der Konfigu
rierung, Führung und Überprüfung des Status eines Gerätes. Eine Steuerübertragung setzt sich
aus einer Setup-Transaktion, welche angeforderte Informationen von dem Host zu dem Gerät
bewegt, optionalen Daten-Transaktionen, welche Daten in einer durch die Setup-Transaktion
angezeigte Richtung senden, und einer Status-Transaktion, welche Status-Informationen von
dem Gerät zu dem Host zurücksendet, zusammen. Die Setup-Transaktion spezifiziert den
Umfang der Daten, welche während der Daten-Transaktion gesendet werden sollen.
Das Auftreten einer IN- oder OUT-Daten-Transaktion (Eingangs- oder Ausgangs-Daten-
Transaktionen) in der Steuer-Transaktion liefert drei mögliche Transaktionssequenzen: eine
Steuer-Schreib-Sequenz, eine Steuer-Lese-Sequenz und eine Steuer-"No-Data"-Sequenz. Jede
dieser Sequenzen wird im folgenden im Detail beschrieben.
In Fig. 4A ist eine Steuer-Schreib-Sequenz dargestellt. Die Steuer-Schreib-Sequenz umfaßt
drei Stufen: Eine Setup-Stufe, eine Daten-Stufe und eine Status-Stufe. Die Setup-Stufe um
faßt ehe SETUP-Transaktion 410 mit einem DATA0-PID. Die SETUP-Transaktion 410 legt
fest, daß eine OUT-Daten-Stufe folgen wird. Die Daten-Stufe umfaßt eine OUT-Transaktion
412 mit einem DATA1-PID. Die OUT-Transaktion 412 wird gefolgt von einer OUT-
Transaktion 414 mit einem DATA0-PID. Dieser Transaktion folgen so viele Transaktionen,
wie benötigt werden, um die notwendigen Daten von dem Host zu übertragen. Dieses hängt
vom Umfang der Daten in dem Host und vom Umfang der übertragenen Pakete ab. Der
DATA-PID wechselt zwischen 1 und 0 für die in der Daten-Stufe genutzten OUT-
Transaktionen. Die abschließende OUT-Transaktion 416 beendet die Daten-Stufe. Die Status-
Stufe umfaßt eine einzelne IN-Transaktion 418 mit einem DATA1-PID.
Fig. 4B zeigt eine Steuer-Lese-Sequenz. Die Steuer-Daten-IN-Sequenz umfaßt drei Stufen:
eine Setup-Stufe, eine Daten-Stufe und eine Status-Stufe. Die Setup-Stufe umfaßt eine
SETUP-Transaktion 420 mit einem DATA0-PID. Die SETUP-Transaktion legt fest, daß ein
IN-Daten-Stufe folgen wird. Die Daten-Stufe umfaßt eine IN-Transaktion 422 mit einem
DATA1-PID. Auf die IN-Transaktion 422 folgt eine IN-Transaktion 424 mit einem DATA0-
PID. Diesem Token folgen so viele Transaktionen, wie benötigt werden, um die notwendigen
Daten von dem Gerät zu übertragen. Dieses hängt vom Umfang der Daten in dem Gerät und
dem-Umfang der übertragenen Pakete ab. Der DATA-PID wechselt zwischen 1 und 0 für die
in der Daten-Stufe genutzten IN-Transaktionen. Die abschließende IN-Transaktion 426 been
det die Daten-Stufe. Die Status-Stufe umfaßt eine einzelne OUT-Transaktion 428 mit einem
DATA1-PID.
Fig. 4C zeigt eine Steuer-"No-Data"-Sequenz. Die Steuer-"No-Data"-Sequenz umfaßt zwei
Stufen: eine Setup-Stufe und eine Status-Stufe. Die Setup-Stufe umfaßt eine SETUP-
Transaktion 420 mit einem DATA0-PID. Die Status-Stufe umfaßt eine einzelne IN-
Transaktion 428 mit einem DATA1-PID.
In Fig. 3 ist ein Flußdiagramm einer Setup-Transaktion dargestellt. Die Transaktion beginnt
mit der Sendung des SETUP-Tokens 310 von dem Host. Eine Setup-Transaktion umfaßt im
mer einen DATA0-PID für das Datenfeld. Das Gerät antwortet anschließend durch das Sen
den eines ACK-Handshakes, um die SETUP-Transaktion zu vervollständigen.
Fig. 5 zeigt ein Flußdiagramm einer IN-Transaktion. Die IN-Transaktion beginnt mit dem
Senden eines IN-Tokens 510 von dem Host an das Gerät. Das Gerät sollte dann mit dem pas
senden DATA-Paket 512 (entweder ein DATA0 oder ein DATA1-Paket) antworten. Wenn
das Gerät jedoch zeitweise nicht in der Lage ist, ein DATA-Paket zurückzusenden, so wird es
statt dessen ein NAK-Handshake 514 zurücksenden. Wenn das Gerät nicht in der Lage ist, ein
DATA-Paket zurückzusenden, und eine Host-Intervention für die Wiederaufnahme verlangt,
wird es einen STALL-Handshake 516 zurücksenden. Auf den Empfang des DATA-Paketes
512 wird der Host mit einem ACK-Handshake 518 antworten.
Fig. 6 zeigt ein Flußdiagramm einer OUT-Transaktion. Die OUT-Transaktion beginnt mit
dem Senden eines OUT-Tokens 610 von dem Host an das Gerät. Der Host sendet danach das
passende DATA-Paket 612 (entweder ein DATA0- oder ein DATA1-Paket). Wenn das Gerät
das DATA-Paket 612 ohne Fehler empfangt, und wenn es zum Empfang eines anderen Pake
tes bereit ist, sendet es ein ACK-Handshake 614 zurück. Wenn das Gerät das DATA-Paket
612 ohne Fehler empfängt, dieses Paket jedoch erneut vom Host gesendet haben möchte, sen
det es ein NAK-Handshake 614 zurück. Der NAK-Handshake wird benutzt, wenn ein für ein
DATA-Paket vorgesehener Endpunkt in einem Zustand ist, welcher zeitweise den Empfang
des DATA-Paketes verhindert. Wenn das Gerät das DATA-Paket 612 empfängt, jedoch noch
in einem STALL-Zustand ist, sendet es einen STALL-Handshake zurück, um anzuzeigen, daß
der Host nicht versuchen sollte, das Paket erneut zu senden. Wenn das Datenpaket 612 mit
einem CRC- oder einem Bit-Stuff-Fehler ('Verstopft-Fehler') empfangen wurde, wird kein
Handshake zurückgesendet.
Der USB verlangt, daß ein angeschlossenes Gerät einen unerwarteten SETUP-Token akzep
tiert.
Um SETUP-Token und das entsprechende DATA0-Paket zu akzeptieren, ordnen USB-Geräte
Speicher ausschließlich für den Empfang dieser Daten zu. Für den Empfang von Token ord
nen USB-Geräte zusätzlich wenigstens einem anderen Endpunkt Speicher zu. Da ein USB-
Gerät bis zu sechzehn Endpunkte unterstützen kann, ist jedem Endpunkt Speicher für den
Empfang von Token für diesen Endpunkt und für das Senden und Empfangen von Daten oft
ausschließlich zugeordnet.
Zu jedem Zeitpunkt kann nur ein Endpunkt aktiv sein. Dementsprechend wird Speicher, der
mit einem inaktiven Endpunkt verbunden ist, nicht gelesen, um Daten über den USB zu über
tragen. In gleicher Weise wird der mit einem inaktiven Endpunkt verbundene Speicher nicht
mit Daten von dem USB beschrieben. Trotzdem bewahrt jeder Endpunkt typischerweise aus
schließlich zugeordneten Speicher.
Deshalb besteht Bedarf an einem USB-Gerät, welches keine jedem Endpunkt ausschließlich
zugeordnete Speicherpuffer verlangt. Darüberhinaus besteht Bedarf an einem USB-Gerät,
welches keinen ausschließlich einem Steuer-Endpunkt zugeordneten Speicher verlangt, aber
in der Lage ist, unerwartete SETUP-Token zu akzeptieren.
Aufgabe der Erfindung ist es, einen Speicherraum zu schaffen, auf den eine Vielzahl von
Endpunktkanälen zur Datenübertragung zugreifen kann.
Eine weitere Aufgabe der Erfindung ist es, einen Speicherraum zu schaffen, auf den eine
Vielzahl von Endpunktkanälen für den Datenempfang zugreifen kann.
Eine weitere Aufgabe der Erfindung ist es, daß ein SETUP-Token in einem Ready-Zustand
immer akzeptiert wird.
Eine weitere Aufgabe der Erfindung ist es, den Speicherumfang zu reduzieren, welcher einem
Steuer-Endpunktkanal ausschließlich zugeordnet werden muß.
Es ist eine weitere Aufgabe der Erfindung, einen Speichenraum zu schaffen, der von verschie
denen Arten von Endpunktkanälen gemeinsam genutzt werden kann.
Es ist eine weitere Aufgabe der Erfindung, einem Datenprozessor die Überprüfung eines Set
up-Paketes einer Steuer-Übertragung in einen Speicher zu erlauben, und dem Prozessor an
schließend die Vorbereitung des Resets der Steuerübertragung zu erlauben.
Es ist eine weitere Aufgabe der Erfindung, einen Controller zu schaffen, welcher die Steuer
übertragung ausführt und welcher automatisch mit einem geeigneten Handshake antwortet.
Es ist Aufgabe der Erfindung, einen Doppelpufferspeicher zum Senden und Empfangen von
Daten zu schaffen.
Es ist eine weitere Aufgabe der Erfindung, eine Speicherleitung für die Übertragung von Da
ten von einem USB zu einem Speicher zu schaffen.
Gemäß einem Aspekt der Erfindung umfaßt ein Verfahren zum Betreiben eines Steuerend
punktes auf einem USB die folgenden Schritte:
- - Bereitstellen eines Sender-Empfängers, welcher zum Senden und Empfangen von Daten betreibbar mit dem USB verbunden ist;
- - Bereitstellen eines Controllers, welcher mit dem Sender-Empfänger funktionell verbun den ist, wobei der Controller Daten an den Sender-Empfänger zur Übertragung über den USB liefert, und wobei der Controller Daten annimmt, welche der Sender-Empfänger über den USB empfängt;
- - Bereitstellen eines Speichers, welcher betreibbar mit dem Controller verbunden ist, wo bei der Controller Daten in dem ersten Speicher sichern kann und Daten aus dem ersten Speicher kopieren kann;
- - Bereitstellen einer Funktion, welche funktionell mit dem Speicher und dem Controller verbunden ist, wobei die Funktion Befehle an den Controller liefern kann, Daten in dem Speicher sichern kann und Daten aus dem Speicher kopieren kann;
- - Empfangen eines SETUP-Tokens von einem Host an dem USB, wobei der SETUP- Token anzeigt, daß der Host eine Steuerübertragung ausführen wird;
- - Empfangen eines ersten DATA0-Paketes von dem Host auf dem USB, wobei das erste DATA0-Paket anzeigt, daß die Steuerübertragung einer Datenstufe mit wenigstens einer Datentransaktion umfassen wird; und
- - Zuordnen eines Teiles des Speichers für die wenigstens eine Datentransaktion, wobei die Funktion die Zuordnung ausführt und eine erste Speicheradresse an den Controller liefert, und wobei die erste Speicheradresse auf eine erste Speicherstelle innerhalb des Teiles des Speichers zeigt.
Gemäß einem anderen Aspekt der Erfindung umfaß ein Gerät zur Verbindung mit einem
USB:
- - einen Pufferspeicher zur Speicherung von Daten;
- - einen Controller, welcher funktionell mit dem Pufferspeicher und einem USB ver
bunden ist, der Controller aufweisend:
- - einen ersten und einen zweiten Speicheradressen-Zeiger, wobei der erste und der zweite Speicheradressen-Zeiger eine Adresse innerhalb des Pufferspeichers halten;
- - Logik für einen Endpunktkanal-Zustand zur Bewahrung des gegenwärtigen Zustandes eines Endpunktkanales, wobei die Logik anzeigt, ob der Endpunkt kanal Daten zur Übertragung über den USB enthält;
- - eine Funktion, welche funktionell mit dem Controller und dem Pufferspeicher verbun den ist, wobei die Funktion Daten in dem Pufferspeicher speichert und die entsprechen de Adresse dem ersten und zweiten Pufferspeicher-Zeiger zuweist, wobei der Controller automatisch ein NAK sendet, wenn der Controller einen IN-Token einer Steuer-Lese- Übertragung empfängt, und wenn die Logik des Endpunktkanal-Zustandes anzeigt, daß der Endpunktkanal keine Daten enthält, und wobei der Controller automatisch die Daten sendet, wenn die Logik des Endpunktkanal-Zustandes anzeigt, daß der Endpunktkanal keine Daten enthält.
Diese und andere Aufgaben, Merkmale und Vorteile sind in der folgenden Beschreibung und
den zugehörigen Zeichnungen offenbart.
Fig. 1 zeigt ein Blockdiagramm eines USB-Netzwerkes.
Fig. 2 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform eines erfin
dungsgemäßen Schnittstellenmoduls für ein USB-Gerät.
Fig. 3 zeigt ein Flußdiagramm des Datenflusses über ein USB-Netzwerk während
einer SETUP-Transaktion.
Fig. 4A zeigt ein Flußdiagramm des Datenflusses über ein USB-Netzwerk während
einer Steuer-Schreib-Übertragung.
Fig. 4B zeigt ein Flußdiagramm des Datenflusses über ein USB-Netzwerk während
einer Steuer-Lese-Übertragung.
Fig. 4C zeigt ein Flußdiagramm des Datenflusses über ein USB-Netzwerk während
eines Steuer-"No-Data"-Übertragung.
Fig. 5 zeigt ein Flußdiagramm des Datenflusses über ein USB-Netzwerk während
einer IN-Transaktion.
Fig. 6 zeigt ein Flußdiagramm des Datenflusses über ein USB-Netzwerk während
einer OUT-Transaktion.
Fig. 7 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform eines erfin
dungsgemäßen Schnittstellenmoduls für ein USB-Gerät.
Fig. 8 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform eines Endpunkt-
Controllers aus Fig. 7.
Fig. 9 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform eines erfin
dungsgemäßen Programmiermodells für ein USB-Gerät.
Fig. 10 zeigt ein Flußdiagramm der Zustände und Zustandsübergänge eines Endpunk
tes während einer erfindungsgemäßen Steuertransaktion.
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 han
delt 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 of 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,005 mit dem Titel "An Apparatus and Method for Provi
ding an Interface to a Compound Universal Serial Bus Controller", und (vi) US-Patentan
meldung 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.
Im folgenden wird unter Bezugnahme auf Fig. 2 ein erfindungsgemäßes USB-Gerät 210 be
schrieben. Die bevorzugte Ausführungsform des Gerätes erfüllt die USB-Vorschrift, Version
1.0, wobei sie eine Anzahl von Vorteilen gegenüber herkömmlichen USB-Geräten aufweist.
Das USB-Gerät 210 umfaßt ein USB-Schnittstellenmodul 220, eine Registergruppe 214, ei
nen RAM 212 und eine Bus-Schnittstelleneinheit (BIU) 216.
Das Schnittstellenmodul 220 ist mit einem USB-Netzwerk zum Senden und Empfangen von
Daten verbunden. Das Schnittstellenmodul 220 ist auch mit der Registergruppe 214, dem
RAM 212 und der BIU 216 verbunden. Der Kernbus 218 ermöglicht es dem Schnittstellen
modul 220, auf die Registergruppe 214 und den RAM 212 zuzugreifen.
Die BIU 216 liefert den Zugang zum Adreßraum des Kernbusses 218 mittels der Ausführung
von Lese- und Schreibübertragungen als ein Master und des Registerzugriffs als ein Slave.
Zusätzlich stellt die BIU eine Datenleitung zur Verfügung. Die Datenleitung kann dazu ge
nutzt werden, Daten auf ihrem Weg zu einer Speicherstelle zeitweise zu halten.
In Fig. 7 ist das USB-Schnittstellenmodul 220 aus Fig. 1 beschrieben. Das USB-
Schnittstellenmodul 220 liefert die Schnittstelle, um ein USB-Gerät 210 mit einem USB-
Netzwerk zu verbinden. Das Schnittstellenmodul 220 umfaßt einen integrierten USB-Sender-
Empfänger 714, eine serielle Schnittstellenmaschine (SIE) (712) und den Endpunkt-
Controller 710.
Der Sender-Empfänger 714 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 712 ist betreibbar mit dem Sender-Empfänger 714 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
202 für den spezifizierten Endpunktkanal bestimmten NAK-, ACK- und STALL-Antworten.
Die serielle Schnittstellenmaschine 712 ist auch dafür verantwortlich, daß USB-spezifische
Ereignisse, wie ein Reset, Suspend und Resume erkannt und übermittelt werden.
Der Endpunkt-Controller 710 ist betreibbar mit der seriellen Schnittstellenmaschine 712 ver
bunden und liefert die Schnittstelle für die USB-Funktionsendpunkte.
Der Endpunkt-Controller 710 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 214 zuzugreifen. Der
Master-Zugriff wird benutzt, um Daten zwischen Endpunkten und einem RAM 212 zu über
tragen.
Der Endpunkt-Controller 710 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 710 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 712 beim Geben der passenden ACK-, NAK- und STALL-Antwort zu füh
ren. Andere für den Endpunkt-Betrieb notwendige Information wird in einer Entpunkt-
Anordnung des RAMs 212 gehalten.
Unter Bezugnahme auf Fig. 8 wird die Struktur des Endpunkt-Controllers 710 im Detail be
schrieben. Der Endpunkt-Controller 710 umfaßt einige funktionelle Blöcke. Insbesondere
umfaßt der Endpunkt-Controller 710 eine Medienzugriffs-Steuerschnittstelle 802, einen Ge
rätefunktionsblock 804, eine Endpunkt-Zustandsmaschine 806, einen Endpunktkanal-
Teilspeicher (PEPS) 808, einen Adressgenerator 810 und ein Daten-Ausrichtungsmultiplexer
812.
Die Medienzugriffs-Steuerschnittstelle 802 ist mit der Endpunkt-Zustandsmaschine 806 und
dem Daten-Ausrichtungsmultiplexer 812 verbunden, um für das Medienzugriffs-Steuerniveau
der seriellen Schnittstellenmaschine 712 eine Schnittstelle zu liefern. Einige Bereiche des
Endpunkt-Controllers 202 arbeiten mit einem Taktgeber auf dem Kernbus 218. Andere Berei
che arbeiten mit einem lokalen Taktgeber des Endpunkt-Controllers 710. Die Medienzugriffs-
Steuerschnittstelle 802 synchronisiert die Datenbytes zwischen den verschiedenen Bereichen
mit einem asynchronen Handshake für jedes aus dem Endpunkt-Controller 710 übertragene
Byte.
Der Gerätefunktionsblock 804 führt Gerätefunktionen aus, wie die Adressüberprüfung und
-erzeugung. Der Gerätefunktionsblock ist betreibbar mit der Endpunkt-Zustandsmaschine 806
verbunden, um Informationen in Bezug auf den Endpunktkanal zu liefern, auf welchen ge
genwärtig zugegriffen wird.
Die Endpunkt-Zustandsmaschine 806 führt Funktionen bezüglich der Bewahrung des Zustan
des eines aktiven Endpunktkanals aus. Die Zustandsmaschine 806 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 806.
Der Endpunktkanal-Teilspeicher 808 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 810 liefert die Adressen, die für das Lesen und Schreiben in den RAM
über den Kernbus notwendig sind.
Der Daten-Ausrichtungsmultiplexer 812 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. 9 ist ein bevorzugtes Programmierungsmodell gezeigt. Das
Programmierungsmodel zeigt eine Vielzahl von Registern 910, 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 920 angeordnete Endpunktkanal-Anordnung 922. Die End
punktkanal-Anordnung 922 wird benutzt, um die für eine bestimmte Endpunkt-Übertragung
spezifischen Endpunkt-Parameter zu steuern.
Das Programmierungsmodell gemäß Fig. 6 umfaßt eine Registergruppe 910 und einen Spei
cher 920. Teile der Registergruppe 910 und Teile des Speichers 920 sind aufeinander abge
stimmt, um eine spezielle Endpunkt-Übertragung zu überwachen und zu steuern. In Fig. 9 ist
auch eine bevorzugte Ausführungsform der Beziehung zwischen der Registergruppe 910 und
dem Speicher 920 dargestellt.
Die Endpunktkanal-Anordnung 922 umfaßt für jeden der sechzehn Endpunktkanäle ein erstes
Steuerwort CW0 und ein zweites Steuerwort CW1. Die Endpunktkanal-Anordnung 922 ist in
dem Speicher auf einer Adresse angeordnet, die in einem Endpunkt-Anordnungs-
Basisadressregister (EABAR) 912 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 932 auf das erste Paar
Steuerwörter in der Endpunktkanal-Anordnung 922. In gleicher Weise zeigt EP1 auf das
zweite Paar Steuerwörter, und EP2 zeigt auf das dritte Paar usw. EP15 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 924 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 be
stimmen, wie auf den Token zu antworten ist. Wenn am Ende einer Übertragung der Ab
schluß-Status geschrieben ist, wird das Steuerwort mit dem gegenwärtigen Status aktualisiert,
das CWP wird inkrementiert, und das andere Steuerwort wird gelesen. Wenn ein Zwischen
status geschrieben wird, wird nur das signifikanteste Byte des Steuerworts aktualisiert. Das
Format des Steuerwortes 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 TE oder TI gesetzt ist. Wenn TI und nicht TE 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 vollständig ausgeführten Übertragungen nicht
überschrieben, z. B. wenn der Status auf Eingangs- oder Ausgangswarten geschrieben ist. Für
OUT-Puffer ist das erste gespeicherte Byte das dem PID folgende Byte. Ahnlich ist es für 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 912, und
einem Puffer-Seiten-B-Register, BPB 916 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 918, die
Breite eines Wortes auf, und ist ein Lese-/Schreibregister. Das ECR 918 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_DL 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 I_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 gegenwartige
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 gegenwartig 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.
4110: 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 ist der 8-Bit-
Entpunktkanal-Zustand. Dieser Zustand wird für jeden Endpunkt gespeichert, der für den ge
genwartig indizierten Endpunktkanal zurückgesendet wird. Wenn ein ungültiger Endpunktka
nal indiziert ist, wird eine 0 zurückgesendet. Das UDR-Registerformat ist im folgenden dar
gestellt:
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 I_RDY |
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 OS_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. 10 zeigt die vereinfachte Endpunktkanal-Zustandsmaschine für die Handhabung von
SETUP-Transaktionen.
Der gegenwärtige Endpunktkanal-Zustand ist in einem Endpunkt-Zustandsregister sichtbar,
auf weiches mit einem USB-Index- und einem -Daten-Register zugegriffen werden kann. Bei
einer bevorzugten Ausführungsform ist zu jeder Zeit stets höchstens ein Endpunktkanal in
irgendeinem der aktiven Zustände. Dies ermöglicht das gemeinsame Nutzen der aktiven Zu
standslogik durch alle Endpunktkanäle.
Wie in Fig. 10 gezeigt ist, kann ein Endpunktkanal die folgenden Zustände aufweisen:
Disable. Der DIS-Zustand 1010 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 1010 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 1070 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 1020 wird eingenommen, nachdem dieser Endpunkt
kanal einen Puffer erhalten hat, in welchen die Daten zu schreiben sind. Dieser Zustand wird
auf das Erkennen des Setup Ready-Pufferzustandes oder mittels eines Setup Ready-Befehls
eingenommen, nachdem das geeignete Wort in die Endpunkt-Anordnung geschrieben wurde.
Setup Active S_ACT. Dieser Zustand 1030 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 Steu
erwort 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übertra
gung und dem gelesenen Pufferzustand ab, und basiert weiterhin auf dem Pufferstatus.
Input Idle I_IDL. In diesem Zustand 1050 erwartet der Endpunkt, daß bald ein Puffer zuge
ordnet 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 Endpunkt
kanal keine Antwort zurückgesendet.
Input Ready I_RDY. Dieser Zustand 1052 wird über einen Input Ready-Befehl an diesen
Endpunktkanal oder auf das Erkennen eines anderen Eingangspuffers am Ende einer Übertra
gung 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 zei
gen, 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 1054 wird auf den Empfang eines IN-Tokens einge
nommen, 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 er
neut 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 ande
re Steuerwort an diesem Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu be
stimmen, 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 Statuspha
se einer Steuer-Lese-Übertragung zu vervollständigen.
Output Idle 0_IDL. In diesem Zustand 1040 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 wird eingenommen, nachdem dieser Endpunktkanal
einen Puffer erhalten hat, in welchen die Daten geschrieben werden. Dieser kann auf das Er
kennen eines anderen Ausgangspuffers am Ende einer Übertragung oder über einen Output
Ready-Befehl von dem 0_IDL-Zustand 1040 eingenommen werden, nachdem das passende
Wort in die Endpunkt-Anordnung geschrieben wurde.
Output Active 0_ACT. Dieser Zustand 1044 wird auf den Empfang eines OUT-Tokens ein
genommen. 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 geschrie
ben. 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 erfolg
reich 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über
tragung genutzt wird, kann ein Übergang in den Input Ready- oder Input Idle-Zustand er
folgen, um die Statusphase eines Steuer-Schreib-Überganges zu vollenden.
Nach einem Reset sind alle Endpunkte inaktiviert. Ein Endpunkt ist mittels eines Aktivie
rungsbefehls an den Endpunkt aktiviert. Dieses sollte nur dann getan werden, wenn die Ein
gangs- und/oder Ausgangspuffer diesem Endpunkt bald zugeordnet werden. Alle Endpunkte,
die gegenwärtig nicht einem Endpunktkanal zugeordnet sind, werden als inaktiviert betrach
tet.
Die Software ordnet den Endpunktkanälen Puffer nach Bedarf zu. Nachdem jeder Puffer zu
geordnet 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 End
punktkanal, welche dieser unverzüglich ausführt. Dieses Schreiben muß von der Software
ausgeführt werden, um in der Lage zu sein, potentielle Synchronisationsprobleme zu verhin
dern, da das Handling des UNIM-Endpunktkanals asynchron zum Betrieb der Software ist.
Weil bis zu zwei Puffer jedem Endpunkt zugeordnet werden können, kann der nächste Puffer
vorbereitet werden, während der gegenwärtige Puffer abgearbeitet wird, um die Datenüber
tragung zu beschleunigen, und um unnötige NAK-Handshakes zu vermeiden.
Ausgehend von der vorhergehenden Beschreibung und aus Sicht einer funktionellen Steuer
software wird der Betrieb eines Gerätes als ein Steuerendpunkt im Detail beschrieben. End
punkt 0 ist typischerweise ein Steuerendpunkt. Zusätzlich ermöglicht ein Abbildungsmecha
nismus, daß andere Endpunkte Steuerendpunkte werden. Beispielsweise sollte der SRDY-
Befehl für die nächste Steuerübertragung zusammen mit dem Puffer oder dem Paket der Sta
tus-Übertragung der gegenwärtigen 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ß Software den Steuer
wort-Zeiger anpassen, weil die Statusphase in das Steuerwort 1 abgelegt werden muß, und
weil der nächste SRDY-Puffer in das Steuerwort 0 abgelegt werden muß. Um dieses zu errei
chen, kann die Software einen SKIP-Puffer einfügen oder ein Toggle-CWP-Befehl erzeugen.
Die Software kann dann den Ready-Befehl für den Statusphasen-Puffer ausgeben.
Sollte an einem Steuer-Endpunkt, für welchen ein SRDY-Puffer momentan nicht verfügbar
ist, ein SETUP-Token erkannt werden, wird ein beträchtlicher Aufwand betrieben, um den
SETUP-Token zu empfangen. Der SETUP-Token wird in der Datenleitung eines Speicherka
nals gespeichert, während darauf gewartet wird, daß die Software einen Puffer zuordnet.
Wenn ein gültiger SETUP empfangen wird, wird ein Interrupt über ein Interrupt-Bit durchge
setzt. Als Antwort auf den Interrupt sollte die Software einen Puffer in das Steuerwort 0
schreiben, und sollte einen SRDY-Befehl ausgeben. Hierdurch wird das anhängige SETUP in
den Speicher geschrieben. Der SRDY-Befehl verursacht, daß der Endpunkt als ein Steuerend
punkt betrachtet wird, und er bleibt gesetzt, bis ein Eingangsaktivierungs- oder Ausgangsakti
vierungsbefehl ausgeführt wird. Der SDRY-Puffer sollte so schnell wie möglich bereitgestellt
werden, da es den Datenweg für jede weitere Datenübertragung blockiert, wenn der Interrupt
durchgesetzt ist. Allen über das USB-Netzwerk empfangenen Token wird während des War
tens auf den Puffer ein NAK zurückgesendet.
Nachdem ein Setup empfangen wurde, muß es überprüft werden, und eine passende Antwort
bestimmt werden. Zu diesem Zeitpunkt stellt die Firmware passend zusätzliche Eingangs- und
Ausgangspuffer zur Verfügung. Wenn Setup ein Befehl ist, der nicht durch die Funktion un
terstützt wird, wird ein neuer SRDY-Puffer auf das Steuerwort 0 gegeben, und ein SRDY-
Befehl wird ausgegeben. Hierdurch wird allen Token an diesem Endpunkt ein NAK-
Handshake zurückgesendet, bis das nächste Setup empfangen wird. Während in der Zwi
schenzeit die Software das Setup analysiert, werden als Antwort auf die Token NAKs gesen
det.
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
Beschreibung ist, näher spezifiziert.
Claims (18)
1. Verfahren zum Betreiben eines Steuer-Endpunktes an einem Universeller Serieller
Bus (USB), mit den folgenden Verfahrensschritten:
- - Bereitstellen eines Sender-Empfängers, welcher zum Senden und Empfangen von Daten betreibbar mit dem USB verbunden ist;
- - Bereitstellen eines Controllers, welcher mit dem Sender-Empfänger betreibbar verbunden ist, wobei der Controller Daten an den Sender-Empfänger zur Über tragung über den USB liefert, und wobei der Controller Daten annimmt, wel cher der Sender-Empfänger über den USB empfängt;
- - Bereitstellen eines Speichers, welcher funktionell mit dem Controller verbun den ist, wobei der Controller Daten in dem ersten Speicher sichern kann und Daten aus dem ersten Speicher kopieren kann;
- - Bereitstellen einer Funktion, welche betreibbar mit dem Speicher und dem Controller verbunden ist, wobei die Funktion Befehle an den Controller liefern kann, Daten in dem Speicher sichern kann und Daten aus dem Speicher kopie ren kann;
- - Empfangen eines SETUP-Tokens von einem Host an dem USB, wobei der SETUP-Token anzeigt, daß der Host eine Steuerübertragung ausführen wird;
- - Empfangen eines ersten DATA0-Paketes von dem Host auf dem USB, wobei das erste DATA0-Paket anzeigt, daß die Steuerübertragung eine Datenstufe mit wenigstens einer Datentransaktion umfassen wird; und
- - Zuordnen eines Teiles des Speichers für die wenigstens eine Datentransaktion,
2. Verfahren nach Anspruch 1, wobei das erste DATA0-Paket anzeigt, daß die Daten
transaktionen IN-Transaktionen sind.
3. Verfahren nach Anspruch 2, wobei die Zuordnung eines Teiles des Speichers weiter
hin die Zuordnung eines Teiles des Speichers umfaßt, der ausreichend ist, um die Da
ten für alle Transaktionen in der Datenstufe zu halten.
4. Verfahren nach Anspruch 3, wobei an der ersten Speicherstelle Daten für eine erste
Datentransaktion gehalten werden.
5. Verfahren nach Anspruch 4, wobei die Zuordnung eines Teiles des Speichers weiter
hin die Bereitstellung einer zweiten Speicheradresse an den Controller umfaßt, wobei
die zweite Speicheradresse auf eine zweite Speicherstelle innerhalb des Teiles des
Speichers zeigt.
6. Verfahren nach Anspruch 5, wobei der Controller Daten von der ersten Speicherstelle
liest, und die Daten an den Sender liefert, um diese über den USB zu senden.
7. Verfahren nach Anspruch 6, wobei die Zuordnung eines Teiles des Speichers weiter
hin die Bereitstellung einer dritten Speicheradresse an den Controller umfaßt, wobei
die dritte Speicheradresse auf einen dritten Speicherstandort innerhalb des Teiles des
Speichers zeigt, und wobei weiterhin die dritte Speicheradresse an den Controller nur
geliefert wird, nachdem der Controller Daten von der ersten Speicherstelle kopiert hat.
8. Verfahren nach Anspruch 7, wobei auf der dritten Speicheradresse Daten für ein drit
tes Datenpaket gehalten werden.
9. Verfahren nach Anspruch l, mit einem Schritt zum Empfangen eines unerwarteten
SETUP-Tokens, und einem Speichern des unerwarteten SETUP-Tokens in einer Da
tenleitung.
10. Verfahren nach Anspruch 9, mit einem Schritt zur Benachrichtigung der Funktion
über den unerwarteten SETUP-Token durch den Controller.
11. Verfahren nach Anspruch 10, mit einem Schritt zum Bereitstellen einer Speicheradres
se an den Controller durch die Funktion, wobei die Speicheradresse auf einen Puffer
im Speicher zeigt.
12. Vorrichtung zum Anschluß an einen Universal Serial Bus (USB), aufweisend:
- - einen Pufferspeicher zur Speicherung von Daten;
- - einen Controller, welcher funktionell mit dem Pufferspeicher und einem USB
verbunden ist, der Controller aufweisend:
- - einen ersten und einen zweiten Speicheradressen-Zeiger, wobei der erste und der zweite Speicheradressen-Zeiger eine Adresse innerhalb des Pufferspeichers halten;
- - Logik für einen Endpunktkanal-Zustand zur Bewahrung des gegenwär tigen Zustandes eines Endpunktkanales, wobei die Logik anzeigt, ob der Endpunktkanal Daten zur Übertragung über den USB enthält;
- - eine Funktion, welche funktionell mit dem Controller und dem Pufferspeicher verbunden ist, wobei die Funktion Daten in dem Pufferspeicher speichert und die entsprechende Adresse dem ersten und zweiten Pufferspeicher-Zeiger zu weist, wobei der Controller automatisch ein NAK sendet, wenn der Controller einen IN-Token einer Steuer-Lese-Übertragung empfängt, und wenn die Logik des Endpunktkanal-Zustandes anzeigt, daß der Endpunktkanal keine Daten enthält, und wobei der Controller automatisch die Daten sendet, wenn die Lo gik des Endpunktkanal-Zustandes anzeigt, daß der Endpunktkanal keine Daten enthält.
13. Vorrichtung nach Anspruch 12, wobei der Controller weiterhin eine Datenleitung für
die temporäre Speicherung von Daten, die von dem USB empfangen wurden, auf
weist, und wobei die Logik des Endpunktkanal-Zustandes weiterhin anzeigt, wenn der
Endpunktkanal in einem Ready-Zustand zum Empfang einer SETUP-Transaktion ist,
und wobei der SETUP-Token in der Datenleitung gespeichert wird, wenn ein SETUP-
Token über den USB empfangen wird und die Logik des Endpunktkanal-Zustandes
anzeigt, daß der Endpunktkanal nicht in einem Ready-Zustand ist.
14. Vorrichtung nach Anspruch 13, wobei der Controller weiterhin ein Interrupt-Bit auf
weist, um anzuzeigen, daß der Kanalspeicher gegenwärtig einen SETUP-Token spei
chert.
15. Vorrichtung nach Anspruch 14, wobei die Funktion einen Puffer in dem Speicher zu
ordnet und den ersten Speicherzeiger einer Adresse in dem Puffer zuweist, wenn das
Interrupt-Bit anzeigt, daß der Speicherkanal gegenwärtig einen SETUP-Token spei
chert.
16. Vorrichtung nach Anspruch 15, wobei die Funktion den ersten Speicherzeiger so zu
weist, daß dieser auf einen Puffer zur Speicherung des SETUP-Tokens zeigt.
17. Vorrichtung nach Anspruch 13, wobei der Controller automatisch ein NAK sendet,
während der SETUP-Token in der Datenleitung gehalten wird.
18. Vorrichtung nach Anspruch 17, wobei der Controller automatisch das in der Leitung
gespeicherte Setup-Paket auf einen Speicherpuffer überträgt, und die Abarbeitung fol
gender Transaktionen fortsetzt.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/004002 | 1998-01-07 | ||
US09/004,002 US6205501B1 (en) | 1998-01-07 | 1998-01-07 | Apparatus and method for handling universal serial bus control transfers |
US400298 | 1998-01-07 |
Publications (3)
Publication Number | Publication Date |
---|---|
DE19900369A9 DE19900369A9 (de) | |
DE19900369A1 true DE19900369A1 (de) | 1999-07-08 |
DE19900369B4 DE19900369B4 (de) | 2005-04-21 |
Family
ID=21708649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19900369A Expired - Fee Related DE19900369B4 (de) | 1998-01-07 | 1999-01-07 | Vorrichtung zum Anschluß an einen Universal Serial Bus (USB) und Verfahren zum Betreiben eines Steuerendpunktes an einem Universal Serial Bus (USB) |
Country Status (3)
Country | Link |
---|---|
US (1) | US6205501B1 (de) |
KR (1) | KR100290943B1 (de) |
DE (1) | DE19900369B4 (de) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19935512A1 (de) * | 1999-07-28 | 2001-02-08 | Siemens Ag | Vorrichtung zur Verbindung einer industriellen Steuereinheit mit einem industriellen Bedienpanel |
EP1126378A1 (de) * | 1999-08-06 | 2001-08-22 | NTT DoCoMo, Inc. | Elektronische vorrichtungmit usb-interface |
FR2817058A1 (fr) * | 2000-11-21 | 2002-05-24 | St Microelectronics Sa | Dispositif et procede de traitement des interruptions dans une transmission d'informations sur un bus |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19900245B4 (de) | 1998-01-07 | 2005-09-15 | National Semiconductor Corp.(N.D.Ges.D.Staates Delaware), Santa Clara | Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host |
US6324625B1 (en) * | 1999-03-16 | 2001-11-27 | Fujitsu Network Communications, Inc. | Rotating rationed buffer refresh |
US6574231B1 (en) * | 1999-05-21 | 2003-06-03 | Advanced Micro Devices, Inc. | Method and apparatus for queuing data frames in a network switch port |
JP3409749B2 (ja) * | 1999-09-09 | 2003-05-26 | エヌイーシーマイクロシステム株式会社 | Usbファンクションの評価装置及びその方法 |
US7215670B1 (en) * | 1999-11-22 | 2007-05-08 | Texas Instruments Incorporated | Hardware acceleration for reassembly of message packets in a universal serial bus peripheral device |
US6804243B1 (en) * | 1999-11-22 | 2004-10-12 | Texas Instruments Incorporated | Hardware acceleration for segmentation of message packets in a universal serial bus peripheral device |
US6523081B1 (en) * | 1999-11-22 | 2003-02-18 | Texas Instruments Incorporated | Architecture using dedicated endpoints and protocol for creating a multi-application interface and improving bandwidth over universal serial bus |
US7512082B1 (en) * | 1999-12-14 | 2009-03-31 | Intel Corporation | Tracking transaction status for a bus system providing legacy bus compatibility |
JP3415567B2 (ja) * | 2000-06-21 | 2003-06-09 | エヌイーシーマイクロシステム株式会社 | Usb転送制御方法およびusbコントローラ |
US6718412B2 (en) * | 2000-12-14 | 2004-04-06 | Agilent Technologies, Inc. | Apparatus and method for universal serial bus communications |
US7076536B2 (en) * | 2000-12-21 | 2006-07-11 | Microsoft Corporation | Method and system to access software pertinent to an electronic peripheral device at an address based on a peripheral device identifier |
US7165109B2 (en) * | 2001-01-12 | 2007-01-16 | Microsoft Corporation | Method and system to access software pertinent to an electronic peripheral device based on an address stored in a peripheral device |
US6883047B2 (en) * | 2001-05-25 | 2005-04-19 | Intel Corporation | Concurrent asynchronous USB data stream destuffer with variable width bit-wise memory controller |
US6775733B2 (en) * | 2001-06-04 | 2004-08-10 | Winbond Electronics Corp. | Interface for USB host controller and root hub |
US7228366B2 (en) * | 2001-06-29 | 2007-06-05 | Intel Corporation | Method and apparatus for deterministic removal and reclamation of work items from an expansion bus schedule |
TW518502B (en) * | 2001-07-13 | 2003-01-21 | Prolific Technology Inc | USB compound device and the realization method thereof |
US7028124B2 (en) * | 2001-09-26 | 2006-04-11 | Intel Corporation | Method and apparatus for dual queue head processing of interrupt endpoints |
TW536900B (en) * | 2001-10-09 | 2003-06-11 | Prolific Technology Inc | Local area network in compliance with universal serial bus standard |
US6889265B2 (en) | 2001-11-05 | 2005-05-03 | Intel Corporation | Apparatus and method to allow and synchronize schedule changes in a USB enhanced host controller |
US7222240B2 (en) * | 2001-11-06 | 2007-05-22 | Safenet, Inc. | Token for storing installation software and drivers |
JP3609051B2 (ja) * | 2001-11-21 | 2005-01-12 | Necエレクトロニクス株式会社 | Usb−hubデバイスおよびその制御方法 |
US20030167347A1 (en) * | 2002-02-11 | 2003-09-04 | Combs James Lee | Home network printer adapter |
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 |
US7185126B2 (en) * | 2003-02-24 | 2007-02-27 | Standard Microsystems Corporation | Universal serial bus hub with shared transaction translator memory |
US6959355B2 (en) * | 2003-02-24 | 2005-10-25 | Standard Microsystems Corporation | Universal serial bus hub with shared high speed handler |
US20060227759A1 (en) * | 2004-09-14 | 2006-10-12 | Bohm Mark R | Peripheral Sharing USB Hub |
US20060059293A1 (en) * | 2004-09-14 | 2006-03-16 | Henry Wurzburg | Universal serial bus switching hub |
TWI297439B (en) * | 2006-01-20 | 2008-06-01 | Via Tech Inc | Method for exchanging data with an usb device |
US7433990B2 (en) * | 2006-01-24 | 2008-10-07 | Standard Microsystems Corporation | Transferring system information via universal serial bus (USB) |
US7523243B2 (en) * | 2006-04-14 | 2009-04-21 | Standard Microsystems Corporation | Multi-host USB device controller |
US7480753B2 (en) * | 2006-04-27 | 2009-01-20 | Standard Microsystems Corporation | Switching upstream and downstream logic between ports in a universal serial bus hub |
US8081184B1 (en) * | 2006-05-05 | 2011-12-20 | Nvidia Corporation | Pixel shader program thread assembly |
US20080005262A1 (en) * | 2006-06-16 | 2008-01-03 | Henry Wurzburg | Peripheral Sharing USB Hub for a Wireless Host |
WO2008038266A1 (en) * | 2006-09-28 | 2008-04-03 | Sandisk Il Ltd. | Devices and methods for a device-mapping connectivity hub |
US8131890B1 (en) * | 2007-03-23 | 2012-03-06 | Cypress Semiconductor Corporation | Circuit and method for increasing universal serial bus (USB) device endpoints |
US20090063717A1 (en) * | 2007-08-28 | 2009-03-05 | Bohm Mark R | Rate Adaptation for Support of Full-Speed USB Transactions Over a High-Speed USB Interface |
US7908421B2 (en) * | 2008-09-30 | 2011-03-15 | Intel Corporation | Universal serial bus endpoint context caching |
JP5456434B2 (ja) | 2009-10-22 | 2014-03-26 | ルネサスエレクトロニクス株式会社 | パイプ調停回路、パイプ調停方法 |
US8689240B2 (en) | 2011-06-10 | 2014-04-01 | International Business Machines Corporation | Transmitting operator message commands to a coupling facility |
US8918797B2 (en) | 2011-06-10 | 2014-12-23 | International Business Machines Corporation | Processing operator message commands |
US8799522B2 (en) | 2011-06-10 | 2014-08-05 | International Business Machines Corporation | Executing a start operator message command |
US9037907B2 (en) | 2011-06-10 | 2015-05-19 | International Business Machines Corporation | Operator message commands for testing a coupling facility |
US8560737B2 (en) * | 2011-06-10 | 2013-10-15 | International Business Machines Corporation | Managing operator message buffers in a coupling facility |
US8799532B2 (en) | 2011-07-07 | 2014-08-05 | Smsc Holdings S.A.R.L. | High speed USB hub with full speed to high speed transaction translator |
US8805855B2 (en) * | 2012-08-17 | 2014-08-12 | International Business Machines Corporation | Efficiently storing and retrieving data and metadata |
US20140208134A1 (en) * | 2013-01-21 | 2014-07-24 | Texas Instruments Incorporated | Host controller interface for universal serial bus (usb) power delivery |
US10127181B2 (en) | 2014-04-30 | 2018-11-13 | Microchip Technology Incorporated | Port disconnect charging function for USB hub |
US9971395B2 (en) | 2014-08-20 | 2018-05-15 | Microchip Technology Incorporated | Low power connection detect method and system for USB charging |
US10042784B2 (en) | 2014-10-13 | 2018-08-07 | Microchip Technology Incorporated | Side channel access through USB streams |
US9804977B2 (en) | 2015-04-28 | 2017-10-31 | Microchip Technology Incorporated | Universal serial bus smart hub |
US10191874B2 (en) | 2015-12-22 | 2019-01-29 | Microchip Technology Incorporated | Method and apparatus for providing USB power delivery negotiated through a dedicated transmission channel |
US10162788B2 (en) | 2016-08-19 | 2018-12-25 | Microchip Technology Incorporated | USB on the go (OTG) multi-hub endpoint reflector hub |
US11336791B2 (en) | 2020-08-31 | 2022-05-17 | Xerox Corporation | Printer USB hub for peripheral connections |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1996041274A1 (en) | 1995-06-07 | 1996-12-19 | Advanced Micro Devices, Inc. | Dynamically reconfigurable data bus |
US5911152A (en) * | 1995-09-05 | 1999-06-08 | Compaq Computer Corporation | Computer system and method for storing data in a buffer which crosses page boundaries utilizing beginning and ending buffer pointers |
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 |
US5933611A (en) * | 1997-06-23 | 1999-08-03 | Opti Inc. | Dynamic scheduler for time multiplexed serial bus |
US5987530A (en) * | 1997-07-10 | 1999-11-16 | National Instruments Coporation | Method for caching data and generating only one read request to read the requested data and additional data in universal serial bus system |
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,002 patent/US6205501B1/en not_active Expired - Lifetime
-
1999
- 1999-01-06 KR KR1019990000086A patent/KR100290943B1/ko not_active IP Right Cessation
- 1999-01-07 DE DE19900369A patent/DE19900369B4/de not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19935512A1 (de) * | 1999-07-28 | 2001-02-08 | Siemens Ag | Vorrichtung zur Verbindung einer industriellen Steuereinheit mit einem industriellen Bedienpanel |
EP1126378A1 (de) * | 1999-08-06 | 2001-08-22 | NTT DoCoMo, Inc. | Elektronische vorrichtungmit usb-interface |
EP1126378A4 (de) * | 1999-08-06 | 2002-10-23 | Ntt Docomo Inc | Elektronische vorrichtungmit usb-interface |
KR100403915B1 (ko) * | 1999-08-06 | 2003-10-30 | 엔티티 도꼬모 인코퍼레이티드 | 범용 직렬 버스 인터페이스를 구비한 전자기기 |
US7000035B1 (en) | 1999-08-06 | 2006-02-14 | Ntt Docomo, Inc. | Electronic device with USB interface |
US7167928B2 (en) | 1999-08-06 | 2007-01-23 | Ntt Docomo, Inc. | Electronic device with USB interface |
FR2817058A1 (fr) * | 2000-11-21 | 2002-05-24 | St Microelectronics Sa | Dispositif et procede de traitement des interruptions dans une transmission d'informations sur un bus |
EP1213654A1 (de) * | 2000-11-21 | 2002-06-12 | STMicroelectronics S.A. | Vorrichtung und Verfahren zur Verarbeitung von Unterbrechungen während der Datenübertragung auf einen Bus |
Also Published As
Publication number | Publication date |
---|---|
KR19990067731A (ko) | 1999-08-25 |
US6205501B1 (en) | 2001-03-20 |
DE19900369B4 (de) | 2005-04-21 |
KR100290943B1 (ko) | 2001-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19900369A1 (de) | Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus | |
DE19900345A1 (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 | |
DE19900290B4 (de) | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung | |
DE19900345A9 (de) | Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses | |
DE19900325B4 (de) | Vorrichtung und Verfahren zum Senden und Empfangen von Daten in eine und aus einer universellen seriellen Buseinrichtung | |
DE19900245B4 (de) | Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host | |
DE19900331A9 (de) | Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung | |
DE19900369A9 (de) | Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus | |
DE3043894C2 (de) | ||
DE19581234B4 (de) | Bussteuereinrichtung und Verfahren für eine hierarchische serielle Busanordnung unter Verwendung von Kommunikationspaketen | |
DE60213616T2 (de) | Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung | |
DE60132872T2 (de) | Anordnung und Verfahren für eine Schnittstelleneinheit um Daten zwischen einem Hauptprozessor und einem digitalen Signalprozessor im asynchronen Übertragungsmodus zu übertragen | |
DE2829550C2 (de) | ||
DE19900290A9 (de) | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung | |
DE3331233C3 (de) | ||
DE69935065T2 (de) | Datenübertragungssteuerinrichtung und elektronisches gerät | |
DE102005048581B4 (de) | Teilnehmerschnittstelle zwischen einem FlexRay-Kommunikationsbaustein und einem FlexRay-Teilnehmer und Verfahren zur Übertragung von Botschaften über eine solche Schnittstelle | |
EP1941377A2 (de) | Teilnehmerschnittstelle zwischen einem mikrocontroller und einem flexray-kommunikationsbaustein, flexray-teilnehmer und verfahren zur übertragung von botschaften über eine solche schnittstelle | |
DE19900251B4 (de) | Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals | |
DE102007029833B4 (de) | Mikrocontroller mit Datenmodifikationsmodul und System umfassend ein Datenmodifikationsmodul | |
DE102005048584A1 (de) | FlexRay-Kommunikationsbaustein, FlexRay-Kommunikationscontroller und Verfahren zur Botschaftsübertragung zwischen einer FlexRay-Kommunikationsverbindung und einem FlexRay-Teilnehmer | |
DE60224700T2 (de) | Methode und verfahren für seitenband-leseantwortkopf in einem speicher-verbindungsnetzwerk | |
EP0350016A1 (de) | Verfahren und Einrichtung zum Duplizieren des Inhalts von Datenträgern | |
DE60036121T2 (de) | Hochgeschwindigkeitsverbindung für eingebettete Systeme in einem Rechnernetzwerk |
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 |