DE19900331A1 - Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung - Google Patents
Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter PufferunterstützungInfo
- Publication number
- DE19900331A1 DE19900331A1 DE19900331A DE19900331A DE19900331A1 DE 19900331 A1 DE19900331 A1 DE 19900331A1 DE 19900331 A DE19900331 A DE 19900331A DE 19900331 A DE19900331 A DE 19900331A DE 19900331 A1 DE19900331 A1 DE 19900331A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- storage element
- data storage
- endpoint
- amount
- 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.)
- Withdrawn
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/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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1835—Buffer management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/12—Arrangements for detecting or preventing errors in the information received by using return channel
- H04L1/16—Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
- H04L1/18—Automatic repetition systems, e.g. Van Duuren systems
- H04L1/1829—Arrangements specially adapted for the receiver end
- H04L1/1848—Time-out mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L2001/0092—Error control systems characterised by the topology of the transmission link
- H04L2001/0094—Bus
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (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 das Universal Serial Bus (USB)-Protokoll. Insbesondere betrifft die
Erfindung das Nutzen eines gemeinsamen Puffers für das Senden und Empfangen von Daten.
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, eine "Tiered-Star"-Topologie. 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.
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 hiervon die Schnittstellen definiert, die das Gerät bilden. Jede Schnittstelle
ist ihrerseits 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.
Jeder Endpunkt ist eine adressierbare Einheit auf dem USB und muß auf die IN- und OUT-
Token (Eingangs- oder Ausgangs-Token) von dem USB-Host (typischerweise ein PC) ant
worten. IN-Token zeigen an, daß der Host den Empfang von Daten von einem Endpunkt ver
langt. OUT-Token zeigen an, daß der Host Informationen zu einem 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 gesendet. Wenn der
Endpunktkanal am Ende einer Datenübertragung zeitweise nicht freigegeben 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.
Einige Hersteller haben Implementierungen der USB-Norm entwickelt. Zum Beispiel hat die
Intel Corp. die Geräte 8x931Ax, 8x931Hx, 8x930Ax und 8x930Hx herausgegeben.
Diese Geräte haben jedoch eine Anzahl von Grenzen. Der 8x930 und der 8x931 haben einen
Übertragungspuffer und einen Empfangspuffer, die jedem Endpunktpaar ausschließlich zuge
ordnet sind. Deshalb kann die Anzahl von Endpunkten den Bereich des Puffers beschränken,
oder umgekehrt. Es besteht ein Bedarf die Anzahl von Endpunkten ohne eine entsprechende
Vergrößerung des Gesamtpufferbereiches zu erhöhen.
Darüberhinaus verlangen der 8x930 und der 8x931 das Einschreiten des Prozessors, nachdem
Daten empfangen wurden, um die Daten aus dem Puffer zu entfernen, bevor dieser voll wird.
Es besteht ein Bedarf das Einschreiten des Prozessors nach dem Datenempfang zu vermin
dern.
Zur Lösung dieser und anderer Probleme sieht die Erfindung einen Puffer vor, den sich eine
Anzahl von Endpunkten teilen können.
Gemäß einer Ausführungsform weist eine erfindungsgemaße Vorrichtung zum Senden von
Daten von einem USB-Endpunkt an einen USB-Host einen ersten Speicher, einen zweiten
Speicher, einen Datenprozessor, einen Zeigerspeicher und einen Controller auf. Der Daten
prozessor ist so konfiguriert, daß wenigstens ein erstes Datenpaket in dem ersten Speicher und
ein zweites Datenpaket in dem zweiten Speicher erzeugbar sind. Der Zeigerspeicher ist so
konfiguriert, daß er einen einem Speicher entsprechenden Zeiger aufweisen kann. Der Con
troller ist so konfiguriert, daß ein Datenpaket von einem USB-Endpunkt an einen USB-Host
auf einem USB-Endpunktkanal gesendet werden kann, und daß ein Signal empfangen werden
kann. Der Datenprozessor erzeugt ein erstes Datenpaket in dem ersten Speicher und ein
zweites Datenpaket in dem zweiten Speicher. Der Controller erzeugt in dem Zeigerspeicher
einen Zeiger auf den ersten Speicher, sendet das Datenpaket, auf welchen der Zeiger gerichtet
ist, und wartet dann auf ein Quittiersignal von dem Host. Wenn der Controller das Signal
nicht empfangt, sendet er das Datenpaket erneut. Wenn der Controller das Signal empfängt,
erzeugt er einen zweiten Zeiger auf den zweiten Speicher in dem Zeigerspeicher und sendet
das Datenpaket, auf welches der Zeiger gerichtet ist.
Gemäß einer weiteren Ausführung erzeugt der Datenprozessor ein drittes Datenpaket in dem
ersten Speicher, nachdem er das Signal empfangen hat. Nachdem der Controller das Signal
empfängt und das zweite Datenpaket sendet, wartet er auf ein zweites Quittiersignal. Wenn
der Controller das zweite Signal nicht empfangt, sendet er das zweite Datenpaket erneut.
Wenn der Controller das Signal empfängt, erzeugt er in dem Zeigerspeicher einen dritten Zei
ger auf den ersten Speicher und sendet das Datenpaket, auf welches der Zeiger gerichtet ist.
Bei einer anderen Ausführung umfaßt eine Vorrichtung zum Empfangen von Daten von ei
nem USB-Host einen ersten Speicher, einen zweiten Speicher, einen Datenprozessor, einen
Zeigerspeicher und einen Controller. Der Datenprozessor ist so konfiguriert, daß Daten aus
wenigstens einem ersten Datenpaket in dem ersten Speicher erzeugbar sind. Der Speicherzei
ger ist so konfiguriert, daß er einen einem Speicher entsprechenden Zeiger enthalten kann.
Den Controller ist so konfiguriert, daß ein Datenpaket von einem USB-Host an einem USB-
Endpunkt auf einem USB-Endpunktkanal empfangen werden kann, und daß ein Fehler er
kennbar ist. Der Controller erzeugt in dem Zeigerspeicher einen ersten Zeiger auf den ersten
Speicher, empfängt das erste Datenpaket in den Speicher, auf welchen der Zeiger gerichtet ist,
und erkennt dann, ob ein erster Fehler aufgetreten ist. Wenn der Fehler erkannt wurde, setzt
der Controller den Empfang fort. Wenn kein Fehler erkannt wurde, erzeugt der Datenprozes
sor die Daten aus dem ersten Datenpaket, und der Controller erzeugt einen zweiten Zeiger auf
den zweiten Speicher und empfangt ein zweites Datenpaket in den Speicher, auf welchen der
Zeiger gerichtet ist.
Nach einer weiteren Ausführung erkennt der Controller, ob ein zweiter Fehler aufgetreten ist,
nachdem das zweite Datenpaket empfangen wurde. Wenn der zweite Fehler erkannt wurde,
setzt der Controller den Empfang fort. Wenn kein zweiter Fehler erkannt wurde, erzeugt der
Datenprozessor die Daten aus dem zweiten Datenpaket, und der Controller erzeugt einen drit
ten Zeiger auf den ersten Speicher und empfängt ein drittes Datenpaket in den Speicher, auf
welchen der Zeiger gerichtet ist.
Nach einer weiteren Ausführungsform umfaßt ein erfindungsgemäßes Verfahren zum Senden
von Daten von einem USB-Endpunkt an einen USB-Host die folgenden Schritte: Erzeugen
eines ersten Datenpaketes in einem ersten Speicher, Erzeugen eines zweiten Datenpaketes in
einem zweiten Speicher, Erzeugen eines ersten Zeigers auf den ersten Speicher, und Senden
des Datenpaketes, auf welches der Zeiger gerichtet ist. Das Verfahren umfaßt weiterhin das
Warten auf ein Quittiersignal von dem Host und das Fortsetzen des Sendens des Datenpake
tes, wenn das Signal nicht empfangen wird. Das Verfahren umfaßt nach dem Empfangen des
Signals weiterhin das Erzeugen eines zweiten Zeigers auf den zweiten Speicher, und an
schließend das Senden des Datenpaketes, auf welches der Zeiger gerichtet ist.
Gemäß einer weiteren Ausführungsform umfaßt das Verfahren nach dem Signalempfang
weiterhin den Schritt zur Erzeugung eines dritten Datenpaketes in dem ersten Speicher. Nach
dem Empfangen des Signals und dem Senden des Datenpakets, umfaßt das Verfahren weiter
hin das Warten auf ein zweites Quittiersignal vom Host und das Fortsetzen des Sendens des
zweiten Datenpaketes, wenn das zweite Signal nicht empfangen wird. Nach dem Empfang des
zweiten Signals, umfaßt das Verfahren weiterhin Schritte zur Erzeugung eines dritten Zeigers
auf den ersten Speicher und zum Senden des Datenpaketes, auf welches der Zeiger gerichtet
ist.
Nach einer weiteren Ausführungsform umfaßt ein erfindungsgemäßes Verfahren zum Emp
fang von Daten an einem USB-Endpunkt von einem USB-Host Schritte zur Erzeugung eines
ersten Zeigers auf einen ersten Speicher und zum Empfang eines ersten Datenpaketes in den
ersten Speicher. Das Verfahren umfaßt weiterhin das Erkennen eines Fehlers, die Fortsetzung
des Empfangs des ersten Datenpakets, bis der Fehler nicht erkannt wurde, und die anschlie
ßend Erzeugung von Daten aus dem ersten Datenpaket. Das Verfahren umfaßt weiterhin,
wenn der Fehler nicht erkannt wurde, Schritte zum Erzeugen eines zweiten Zeigers auf den
zweiten Speicher, und zum anschließenden Empfangen des zweiten Datenpakets in den Spei
cher, auf welchen der zweite Zeiger gerichtet ist.
Nach einer weiteren Ausführungsform umfaßt das Verfahren nach dem Empfang des zweiten
Datenpakets weiterhin Schritte zum Erkennen eines zweiten Fehlers, zur Fortsetzung des
Empfangs des zweiten Datenpakets, solange der zweite Fehler nicht erkannt wurde, und zum
anschließenden Erzeugen von Daten aus dem zweiten Datenpaket. Das Verfahren umfaßt,
nachdem der zweite Fehler nicht erkannt wurde, weiterhin Schritte zur Erzeugung eines drit
ten Zeigers auf den ersten Speicher, wobei anschließend das dritte Datenpaket in den Spei
cher, auf welchen der dritte Zeiger gerichtet ist, empfangen wird.
Ein besseres Verständnis der Merkmale und Vorteile der Erfindung ergibt sich aus der fol
genden detaillierten Beschreibung und den zugehörigen Zeichnungen, in welchen Ausfüh
rungsformen veranschaulicht sind, dies die Prinzipien der Erfindung verwirklichen
Fig. 1 zeigt in einem Blockdiagramm die Struktur einer Ausführungsform der Erfin
dung.
Fig. 2 zeigt in einem Zustandsdiagramm den Betrieb einer erfindungsgemäßen Da
tenübertragung.
Fig. 3 zeigt in einem Zustandsdiagramm den Betrieb einer anderen erfindungsgemä
ßen Datenübertragung.
Fig. 4 zeigt in einem Zustandsdiagramm den Betrieb eines erfindungsgemäßen Da
tenempfangs.
Fig. 5 zeigt in einem Zustandsdiagramm den Betrieb eines anderen erfindungsgemä
ßen Datenempfangs.
Fig. 6 zeigt ein Zustandsdiagramm entsprechend einer bevorzugten Ausführungsform
der Erfindung.
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-
Patentamneldung 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", (iii) US-Patentanmeldung
Nr. 09/003,897 mit dem Titel "Apparatus und Method of Transmitting and Reiceiving USB
Isochronous Data", (iv) US-Patentanmeldung Nr. 09/004,002 mit dem Titel "An Apparatus
and Method for Handling Universal Serial Bus Control Transfer", (v) US-Patentanmeldung
Nr. 09/004,005 mit dem Titel "An Apparatus and Method for Providing an Interface to a
Compound Universal Serial Bus Controller", 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.
Fig. 1 zeigt eine allgemeine Ausführungsform eines Aspektes der Erfindung. Fig. 1 zeigt ei
nen Endpunkt 110, einen Datenprozessor 120, einen ersten Speicher 130, einen zweiten Spei
cher 140, einen Controller 150, einen Zeigerspeicher 160, einen Endpunktkanal 170 und einen
Host 180. Der Datenprozessor 120 verarbeitet die Daten in Datenpakete im Speicher 130 und
im Speicher 140. Der Controller 150 steuert den Fluß von Datenpaketen auf dem Endpunkt
kanal 170. Der Speicher 160 hält einen Zeiger auf den Speicher 130 oder den Speicher 140.
Am anderen Ende des Endpunktkanals 170 ist der Host 180 angeordnet. Der Host 180 tauscht
Datenpakete mit dem Endpunkt 110 aus.
Der in Fig. 1 dargestellte Aufbau kann so konfiguriert werden, daß die folgenden Methoden
gemäß den Fig. 2-5 ausgeführt werden können.
In Fig. 2 ist ein Zustandsdiagramm eines Verfahrens zum Senden von Datenpaketen vom
Endpunkt zum Host dargestellt. Fig. 2 zeigt einen Zeige- und Erzeugungszustand 210, einen
Sendezustand 220, einen Empfangszustand 230, einen Zeigezustand 240 und einen zweiten
Sendezustand 250.
In Fig. 3 ist dargestellt, wie das Verfahren gemäß Fig. 2 weitere Schritte umfassen kann. Fig.
3 zeigt einen Zeige- und Erzeugungszustand 310, einen Sendezustand 320, einen Empfangs
zustand 330, einen zweiten Zeige- und Erzeugungszustand 340, einen zweiten Sendezustand
350, einen zweiten Empfangszustand 360, einen Zeigezustand 370 und einen dritten Sendezu
stand 380.
In Fig. 4 ist ein Zustandsdiagramm eines Verfahrens zum Empfang von Datenpaketen von
dem Host am Endpunkt dargestellt. Fig. 4 zeigt einen Zeigezustand 410, einen Empfangszu
stand 420, einen Bestimmungszustand 430, einen Zeige- und Erzeugungszustand 440 und
einen zweiten Empfangszustand 450.
In Fig. 5 ist dargestellt, wie das in Fig. 4 gezeigte Verfahren weitere Schritte umfassen kann.
Fig. 5 zeigt einen Zeigezustand 510, einen Empfangszustand 520, einen Bestimmungszustand
530, einen Zeige- und Erzeugungszustand 540, einen zweiten Empfangszustand 550, einen
zweiten Bestimmungszustand 560, einen zweiten Zeige- und Erzeugungszustand 570 und
einen dritten Empfangszustand 580.
Im folgenden wird beschrieben, wie die Erfindung gemaß den Fig. 1 und 2 arbeitet. Im Zu
stand 210 erzeugt der Datenprozessor 120 aus Daten am Endpunkt 110 wenigstens ein Daten
paket im Speicher 130 und wenigstens ein anderes Datenpaket im Speicher 140, und der
Controller 150 veranlaßt den im Speicher 160 gespeicherten Zeiger, auf den Speicher 130 zu
zeigen. Im Zustand 220 sendet der Controller 150 das Datenpaket aus dem Speicher, auf wel
chen der Zeiger im Speicher 160 gerichtet ist, über den Endpunktkanal 170 zum Host 180. Im
Zustand 230 empfängt der Controller 150 entweder ein Quittiersignal vom Host innerhalb
eines Zeitlimits, oder der Controller 150 geht in den Zustand 220 zurück, um das Datenpaket
erneut zu senden. Im Zustand 240 hat der Host 180 die Quittierung gesendet, so daß der Con
troller den Zeiger veranlaßt, auf den Speicher 140 zu zeigen. Im Zustand 250 sendet der Con
troller 150 an den Host 180 das Datenpaket aus dem Speicher, auf welchen der Zeiger ge
richtet ist.
Obwohl in der Beschreibung die Bezeichnung "Datenpaket" benutzt wird, soll die Erfindung
auch auf eine Vielzahl von Daten, sogar auf Daten, die nicht in einem diskreten Paket enthal
ten sind, anwendbar sein.
Im folgenden wird beschrieben, wie die Erfindung gemäß den Fig. 1 und 3 arbeitet. Die Zu
stände 310-350 entsprechen mit den folgenden Ergänzungen den Zuständen 210-250. Im Zu
stand 340 erzeugt der Datenprozessor wenigstens ein drittes Datenpaket im Speicher 130 aus
Daten am Endpunkt 110 im Zustand 360 empfangt der Controller 150 entweder ein Quittier
signal von dem Host innerhalb eines Zeitlimits, oder er geht in den Zustand 350 zurück, um
das Datenpaket erneut zu senden. Im Zustand 370 hat der Host 180 die Quittierung ab
gesendet, so daß der Controller den Zeiger veranlaßt, auf den Speicher 130 zu zeigen. Im Zu
stand 380 sendet der Controller das Datenpaket aus dem Speicher, auf welchen der Zeiger ge
richtet ist, an den Host 180.
Im folgenden wird beschrieben, wie die Erfindung gemäß den- Fig. 1 und 4 arbeitet. Im Zu
stand 410 veranlaßt der Controller den im Speicher 160 gespeicherten Zeiger, auf den Spei
cher 130 zu zeigen. Im Zustand 420 empfängt der Controller 150 das erste Datenpaket vom
Host 180 in den Speicher, auf den der Zeiger gerichtet ist. Im Zustand 430 erkennt der Con
troller entweder, daß im ersten Datenpaket kein Fehler aufgetreten ist, oder er geht zurück in
den Zustand 420, um das ersten Datenpaket erneut zu empfangen. Im Zustand 440 ist kein
Fehler aufgetreten, so daß der Controller 150 den Zeiger veranlaßt, auf den Speicher 140 zu
zeigen, und so daß der Controller aus dem ersten Datenpaket Daten an dem Endpunkt 110
erzeugt. Im Zustand 450 empfängt der Controller das zweite Datenpaket vom Host 180 in den
Speicher, auf welche der Zeiger gerichtet ist.
Im folgenden wird beschrieben, wie die Erfindung gemäß den Fig. 1 und 5 arbeitet. Die Zu
stände 510-550 entsprechen den Zuständen 410-450. Im Zustand 560 bestimmt der Controller
entweder, daß kein Fehler im zweiten Datenpaket aufgetreten ist, oder er geht zurück in den
Zustand 550, um das zweite Datenpaket erneut zu empfangen. Im Zustand 570 ist kein Fehler
aufgetreten, so daß der Controller den Zeiger veranlaßt, auf den Speicher 130 zu zeigen, und
so daß der Controller aus dem zweiten Datenpaket Daten am Endpunkt 110 erzeugt. Im Zu
stand 580 empfängt der Controller das dritte Datenpaket vom Host 180 in den Speicher, auf
welchen der Zeiger gerichtet ist.
Obwohl in der Beschreibung die Bezeichnung "Speicher" benutzt wird, soll die Erfindung
auch für andere Arten von Datenspeicherelementen anwendbar sein.
Diese allgemeine Beschreibung ist im folgenden anhand bevorzugter Ausführungsformen von
Aspekten der Erfindung detaillierter dargestellt.
Bei einer bevorzugten Ausführungsform ist die beschriebene Erfindung als Teil eines USB-
Knoten-Schnittstellenmoduls. (USB Node Interface Module (UNIM)) implementiert. Die für
die Erfindung relevanten Teile des UNIMs umfassen einen Endpunkt-Controller, eine serielle
Schnittstellen-Maschine, einen Endpunktkanal-Controller, ein Steuerwort, verschiedene Regi
ster, ein Zustandsdiagramm und einen Bulk-Endpunktbetrieb. Diese Teile werden dem Do
kument aus Anhang A entnommen ("USB Node Interface Architecture Specification", Versi
on 0.6).
Bei einer bevorzugten Ausführungsform handhabt der Endpunkt-Controller die mit dem End
punkt verbundenen Operationen, wozu der Endpunktkanal-Zustand, das Puffern und Übertra
gungen gehören. Bei einer bevorzugten Ausführungsform können zu jeder beliebigen Zeit bis
zu 16 Endpunktkanäle und ihre zugehörigen Endpunkte unterstützt werden. Jedem Endpunkt
kanal können bis zu zwei Puffer in dem Kernbereich der Busadressen zugeordnet werden,
wobei diese für Empfangs- und Übertragungsoperationen genutzt werden. Wenn einem End
punktkanal keine Puffer zugeordnet sind, ist der Controller dafür verantwortlich, daß geeig
nete Handshakes für Eingangs- und Ausgangs-Token bereitgestellt werden.
Der Endpunkt-Controller umfaßt mehrere funktionelle Blöcke. Die Endpunkt-
Zustandsmaschine liefert die zentrale Steuerung für die Nutzblöcke des Datenausrichtungs-
Multiplexer (DALM), den Adressgenerator (ADGen) und die teilweise Endpunktkanal (PEP)-
Speicherung. Gerätefunktionen, wie die Adressüberprüfung und -erzeugung werden in dem
Gerätefunktionsblock ausgeführt. Bei einer bevorzugten Ausführungsform sind alle Zu
standsmaschinen durch einen 12 MHz-USB-Taktgeber getaktet. Alle Datenübertragungen
arbeiten mit einem Kernbus-Taktgeber. Teile des ADGen-Blocks und alle DALM-Blöcke
arbeiten mit dem Kernbus-Taktgeber. Alle anderen Blöcke des Endpunkt-Controllers nutzen
ausschließlich den lokalen 12 MHz-Taktgeber. Datenbytes zwischen den Domänen werden an
der MAC-Nutzerschnittstelle mit einem asynchronen Handshake für jedes übertragene Byte
synchronisiert.
Bei einer bevorzugten Ausführung minimiert der Controller die Anzahl der verlangten Spei
cherzugriffe. Nur auf den Empfang eines Tokens wird ein Speicherzugriff auf die Endpunkt-
Anordnung verlangt. Ein einzelner Doppelwortzugriff ist zusammen mit einem vorhandenen
Endpunkt-Zustand ausreichend, um dem Endpunktkanal die Abarbeitung der Host-Anfrage zu
erlauben. Dieser Zugriff liest die Standort- und Größeninformation für die Datenübertragung.
Die Datenübertragung läuft in aufeinanderfolgenden Doppelwort-Lese- und Doppelwort-
Schreib-Operationen ab. Das Modul hat für die Übertragung die höchste Priorität auf dem
Kernbus, und die Übertragungsrate ist beträchtlich höher als jene auf dem USB. Deshalb be
steht, abgesehen von einem Extrawort zur Überlappung späterer Zugriffe mit dem gegen
wärtigen Zugriff, ein minimaler Bedarf an der Pufferung von Daten innerhalb des Endpunkt-
Controllers.
Ein Byte-Zähler registriert die Anzahl der übertragenen Bytes. Der letzte Zugriff einer Über
tragung kann einen teilweisen Lese- oder Schreibspeicher verlangen. Das teilweise Schreiben
beim letzten Zugriff ist durch die letzte Byte-Anzahl bestimmt.
Am Ende einer Übertragung wird das gegenwärtige Steuerwort mit dem Status der Übertra
gung geschrieben und das andere Steuerwort für diesen Endpunkt wird gelesen, um zu über
prüfen, ob ein anderer Puffer vorbereitet war. Nach der Steuerwort-Operation wird der Zu
stand des Endpunktkanals aktualisiert.
Durch eine Kombination von Hardware und Software unterstützt das UNIM alle drei für
USBs definierte Synchronisationsklassen: Asynchron, synchron und adaptiv. Der Endpunkt-
Controller liefert Hardware-Unterstützung für die Überwachung des USB-1 KHz-Bus
taktgebers relativ zu einer externen Referenz, wie einer 8 KHz-Referenz, und für die Überwa
chung der Qualität und Konsistenz des USB-1 KHz-Bustaktgebers. Ansteigende Flanken ei
nes externen Referenz-Taktgebers werden in dem Referenz-Zählregister gezählt. Dieses kann
für einen Vergleich mit der USB-Frame-Zahl genutzt werden. Die Frequenzdifferenz zwi
schen dem Referenz-Taktgeber und dem USB-Taktgeber kann dem Host in Paketen übermit
telt werden, so daß der Host die USB-Bustaktgeber-Frequenz anpassen kann, wodurch die
USB-Referenz an den Referenz-Taktgeber gebunden werden kann.
Der Endpunkt-Controller bewahrt auch den Status, um anzuzeigen, wann er an den USB-1
KHz-Bustaktgeber gebunden ist, und wann durch ein Verpassen oder ein inkorrektes
Start_Of_Frame-Paket eine Unstetigkeit des USB-Bustaktgebers auftritt. Dieses wird von der
Software genutzt, um das Warten von isochronen Paketen anzupassen. Die gegenwärtige
Frame-Zahl wird von dem Endpunkt-Controller genutzt, um zu bestimmen, welcher isochrone
Puffer als nächstes zu übertragen ist.
In einer bevorzugten Ausführungsform ist die serielle USB-Schnittstellen-Maschine (SIE) aus
einem PHY- und einem MAC-Niveau zusammengesetzt. Das PHY-Niveau umfaßt einen di
gitalen Wiederaufnahme-Taktgeber-Schaftkreis, einen digitalen Pannenfilter End_Of_Packet-
Erkennungsschaltungen und Logik zum Auffüllen und Entnehmen von Bits. Das MAC-
Niveau umfaßt die Paketformatierung, die CRC-Erzeugung und -Überprüfung und die End
punkt-Adresserkennung, und liefert die notwendige Steuerung, um die durch den EPC für den
speziellen Endpunktkanal bestimmten NAK-, ACK- und STALL-Antworten zu geben. Die
SIE ist ebenfalls für die Erkennung und die Meldung von Ereignissen verantwortlich, die im
Zusammenhang mit der Erkennung von USB-spezifischen Ereignissen, wie "Reset", "Sus
pend" und "Resume" auftreten. Die Senderausgänge des UNIM-Moduls zum Sender-
Empfänger sind angepaßt (unter 1 ns), um Schrägverzerrungen der USB-Signale zu minimie
ren.
Bei einer bevorzugten Ausführungsform liefert der Endpunktkanal-Controller (EPC) die
Schnittstelle für die USB-Funktionsendpunkte. Bei einer bevorzugten Ausführungsform kön
nen zu jeder Zeit bis zu 16 solcher Endpunktkanäle unterstützt werden, wobei jeder dieselbe
Funktionsadresse aufweist. Der EPC bewahrt separate Zustandsinformationen für jeden End
punktkanal.
Zustandsinformationen für eine unverzügliche Entscheidung (beispielsweise das Antworten
mit einem NAK- oder einem STALL-Handshake) wird für jeden Endpunktkanal zu allen
Zeiten in dem Modul bewahrt. Andere für den Betrieb des Endpunktes notwendige Informa
tionen werden in einer Endpunkt-Anordnung im Speicher aufbewahrt. Bei einer bevorzugten
Ausführungsform ist zu jeder beliebigen Zeit nur ein Endpunktkanal aktiv, wodurch der Dop
pelpuffer und die Endpunktkanal-Zustandsmaschine von allen Endpunktkanälen gemeinsam
genutzt werden können.
Für IN-Token ist der EPC für die Übertragung der Daten von dem bestimmten Puffer zu dem
Host verantwortlich. Für OUT-Token ist der EPC für die Übertragung der Daten von dem
Host zu dem bestimmten Puffer verantwortlich. Um mehr Flexibilität bei der Zuordnung von
Puffern zu einem Endpunktkanal zu ermöglichen, ist bei einer bevorzugten Ausführungsform
ein Doppelpuffer-Schema an jedem Endpunktkanal erlaubt. Dieses erlaubt dem EPC eine un
verzügliche Antwort auf alle Transaktionen zu diesem Modul, ohne die NAKs neu zu sortie
ren.
Daten werden für OUT-Übertragungen nicht in den Speicher übertragen, wenn die Toggle
(Umschalt-)-Zahl in dem Paket-Identifizierer PID (d. h., 0 für DATA0 und 1 für DATA1)
nicht mit dem gegenwärtigen Steuerwort-Zeiger CWP übereinstimmt. Wenn der Puffer
zustand OCMP oder ORDY ist, dann wird trotzdem ein ACK am Ende der Übertragung ge
sendet, und der CWP wird nicht aktualisiert.
Im Fall einer fehlenden Quittierung I_MAK kann ein neuer Endpunktkanal (EPP)-Zustand
definiert werden. Aus dem I_ACT-Zustand kann in diesen Zustand übergegangen werden,
wenn dieses ein EPP-Befehl ist, und wenn der Host nicht mit einem ACK geantwortet hat,
oder wenn des Host's ACK auf seinem Weg zu dem Knoten unbrauchbar gemacht wurde. In
beiden Fällen wird der Pufferstatus in I_WT geschrieben, und der CWP wird nicht inkremen
tiert.
Der Endpunkt wird die Daten erneut senden, wenn in dem I_MAK-Zustand ein IN-Token
empfangen wird.
Wenn im I_MAK-Zustand ein OUT-Token empfangen wird, bestätigt dies, daß das vorherge
hende ACK auf seinem Weg zurück zu dem Knoten unbrauchbar gemacht wurde. In der mo
mentanen OUT-Übertragung wird ein NAK erzeugt. Die Daten werden ignoriert (aber der
I_CMP-Pufferstatus wird geschrieben). Der CWP wird invertiert, und das Steuerwort wird
gelesen, was seinerseits eine Aktualisierung des Zustandes des Endpunktes verursacht (die
normale Status-Verarbeitung). Der Pufferstatus sollte entweder O_RDY oder SKIP (siehe
unten) sein.
Wenn der Pufferstatus O_RDY ist, wird das nächste Datenpaket in einer normalen Operation
empfangen. Wenn der Pufferstatus SKIP ist, wird ein anderes NAK gesendet werden. Daten
werden bei dem gegenwärtigen CWP erneut gesendet.
Bei einer bevorzugten Ausführungsform werden alle von den Endpunktkanälen während der
Datenübertragungen genutzten Informationen in der Endpunkt-Anordnung, welche im RAM
angeordnet ist, bewahrt. Diese Anordnung ist mittels der Endpunktkanäle von der Basis aus
gehend indiziert, welche in dem Basis-Adressregister der Endpunkt-Anordnung definiert ist
(EABAR). Diese Anordnung enthält zwei Doppelwörter pro Endpunkt. Jedes Doppelwort ist
ein Steuerwort, welches Befehls- und Statusinformationen für den Endpunktkanal enthält,
beispielsweise einen Zeiger auf den Anfang des Puffers, den Bereich des Puffers, den Zustand
des Puffers oder andere relevante Parameter.
Der Pufferzustand definiert, ob der Puffer für Eingangs- oder Ausgangsübertragungen genutzt
werden soll, ob auf ihn im Moment zugegriffen wird, oder ob die verlangte Operation beendet
worden ist.
Wenn eine IN- oder OUT-Übertragung von einem Endpunktkanal mit einem Puffer verlangt
wird, wird das passende Steuerwort gelesen. Das Steuerwort teilt dem Endpunkt-Controller
mit, wie die Transaktion zu beenden ist. Am Ende einer Transaktion wird das Steuerwort mit
einem Status geschrieben, welcher von der Software als ein Indikator benutzt wird, diesen
Puffer freizugeben und einen neuen zu liefern.
Bei einer bevorzugten Ausführungsform enthält die Endpunktkanal-Anordnung 32 Steuer
worte, zwei für jeden Endpunktkanal. Die Endpunktkanal-Anordnung ist im Speicher auf ei
ner Adresse angeordnet, auf welche ein Endpunkt-Anordnungs-Basisadressregister EABAR
zeigt. Diese Adresse muß 128 Byte aufweisen (d. h. die 7 LSBs der Adresse sind 0). Die End
punktkanal-Anordnung ist mittels der 4-Bit-Endpunktkanal-Zahl EPN indiziert. Das Steuer
wort, auf welches zugegriffen wird, ist mittels des 1-Bit-Endpunktkanal-Steuerwortzeigers
CWP bestimmt. Zusammen erzeugen das 25-Bit-EABAR, das 4-Bit-EPN und ein Bit CW
eine 32-Bit-Adresse, welche auf eine Doppelwort (32-Bit)-Grenze aufgefüllt ist, und werden
genutzt, um auf das 32-Bit-Steuerwort zuzugreifen.
Das 32-Bit-Steuerwort enthält alle Informationen, die notwendig sind, diesen Endpunktkanal
zu betreiben, wenn er aktiv ist. Es gibt zwei solche Zugänge für jeden Endpunktkanal. Das
Steuerwort, auf welches als nächstes zugegriffen werden soll, ist durch den Wert des End
punktkanal-Steuerwort-Zeigers CWP bestimmt. Unmittelbar, nachdem ein IN-, OUT- oder
SETUP-Token an einem im Moment im Bereitschaftszustand befindlichen Endpunktkanal
empfangen wurde, wird das Steuerwort des ausgewählten Endpunktkanals am gegenwärtigen
Steuerwort-Zeiger gelesen, um zu bestimmen, wie auf den Token zu antworten ist. Nachdem
der Fertigstellungsstatus am Ende einer Übertragung geschrieben wurde, wird das Steuerwort
mit dem gegenwärtigen Status aktualisiert, der CWP wird inkrementiert, und das andere Steu
erwort wird gelesen. Wenn der Zwischenstatus geschrieben wurde, wird nur das am meisten
signifikante Byte des Steuerworts aktualisiert. Das Format des Steuerwortes ist im folgenden
gezeigt:
Bits | |
Funktionsbezeichnung | |
31-28 | Buffer State (Pufferzustand) |
27 | (Reserviert) |
26-16 | Buffer Address BA (Pufferadresse) |
15 | Buffer Page BP (Pufferseite) |
14 | Buffer Rounding (Pufferrunden) |
13 | Toggle Enable TE (Umschaltaktivierung) |
12 | Type Isochronous TI |
11 | Interrupt on Packet Complete (Interrupt auf Paketabschluß) |
10 | Interrupt on Packet Error IE (Interrupt auf Paketfehler) |
9-0 | Byte Count BC (Byte-Zähler) |
Der 4-Bit-Pufferzustand BS ist ein Paket des Steuerwortes, welches für die Anwendung der
Erfindung relevant ist. Der Pufferzustand wird mittels Software und mittels des Endpunkt-
Controllers (EPC) aktualisiert, um die Steuerung dieses Puffers und zwischen den Puffern zu
synchronisieren. Der EPC schreibt den die Nutzung des Puffers anzeigenden Status. Dieses
Feld wird mittels Firmware für den Knoten auf Output Ready, Input Ready, Setup Ready,
Skip, Stall und Disable (siehe unten) gesetzt. Alle anderen Werte werden mittels des EPC
gesetzt. Der STALL- und der Disable-Wert können von dem EPC bei Fehlerbedingungen
geschrieben werden. Der Puffer kann mittels Knoten-Firmware wieder beansprucht werden,
wenn der Pufferzustand irgendein Complete (Fertigstellungs-)-Wert ist. Dieses umfaßt den
Eingangs-/Ausgangs-Complete-Status und die Fehlercode.
Der Pufferzustand BS kann die folgenden Werte annehmen:
0: Skip. Dieser Wert wird zusammen mit dem Output Ready-Befehl genutzt. Skip führte dazu,
daß das nächste empfangene Datenpaket ignoriert wird, und daß der Steuerwort-Zeiger in
krementiert wird. Für Steuer-Endpunkte führt es weiterhin dazu, daß der Endpunktkanal-
Zustand von dem Input/Ready-Zustand in den Output/Input-Idle (Leerlauf)-Zustand geschal
tet wird. Das Setzen von TE und TI bestimmt, welcher Handshake zurückgesendet wird, und
bestimmt den nächsten Zustand des Endpunktkanals. Ein NAK wird zurückgesendet, wenn
entweder 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.
Das Toggle Enable Bit TE (Umschaltaktivierungs-Bit) wird genutzt, um den Datenpaket-
Identifizierungs (PID)-Wert (DATA0/DATA1) zu erzeugen, und um diesen mit dem Steuer
wort-Zeiger zu vergleichen. Es kann die folgenden Werte annehmen:
0: Der Daten-Toggle-PID wird bei einer OUT-Transaktion nicht überprüft, und wird auf der
Basis des gegenwärtigen Wertes des CWPs als Antwort auf die IN-Token erzeugt. Der CWP
wird nach jeder Transaktion inkrementiert (invertiert), auch wenn ein ACK nicht empfangen
wurde. Für isochrone Endpunkte werden OUT-Daten solange nicht in den Speicher geschrie
ben, bis der CWP gleich dem letzten signifikanten Bit der Frame-Zahl, FNR.FN(0), ist. Die
ses hat keine Auswirkungen auf das Senden der Daten als Reaktion auf IN-Token. Das Da
tenumschalten sollte nicht für Puffer aktiviert werden, welche für den Empfang von Daten,
die mit einem SETUP-Token gesendet werden, zugeordnet sind.
1: Der Daten-Toggle-PID wird bei einer OUT-Transaktion überprüft und wird auf der Basis des gegenwärtigen Wertes des CWPs als Antwort auf IN-Token erzeugt. Für OUT- Transaktionen führt dies zum Senden eines ACK als Antwort auf OUT-Pakete, dessen PID- Wert (DATA0/DATA1) nicht mit dem CWP übereinstimmt. Für IN-Transaktionen wird der CWP nach jeder Transaktion nur inkrementiert (invertiert), wenn ein ACK-Handshake in der Antwortzeit zurückgesendet wird. Für isochrone Endpunkte werden die OUT-Daten immer in den Speicher geschrieben. Wenn FNR.FN(0) nicht gleich dem CWP ist, wird der isochrone Synchronisationsfehler (SYNE)-Pufferstatus zurückgeschrieben.
1: Der Daten-Toggle-PID wird bei einer OUT-Transaktion überprüft und wird auf der Basis des gegenwärtigen Wertes des CWPs als Antwort auf IN-Token erzeugt. Für OUT- Transaktionen führt dies zum Senden eines ACK als Antwort auf OUT-Pakete, dessen PID- Wert (DATA0/DATA1) nicht mit dem CWP übereinstimmt. Für IN-Transaktionen wird der CWP nach jeder Transaktion nur inkrementiert (invertiert), wenn ein ACK-Handshake in der Antwortzeit zurückgesendet wird. Für isochrone Endpunkte werden die OUT-Daten immer in den Speicher geschrieben. Wenn FNR.FN(0) nicht gleich dem CWP ist, wird der isochrone Synchronisationsfehler (SYNE)-Pufferstatus zurückgeschrieben.
Für IN-Transaktionen erlaubt TE, den übertragenen Daten-PID-Wert zu verändern, auch
wenn ein gültiges ACK nicht innerhalb der Antwortzeit empfangen wurde. Dieses kann für
bestimmte Anwendungen eines Interrupt-IN-Endpunktes von Bedeutung sein.
Für OUT-Transaktionen kann TE genutzt werden, um zu bestimmen, ob bei der Entscheidung
über die Akzeptanz des Paketes der DATA0- oder DATA1-PID überprüft wird, oder nicht.
Dieses kann für einen Interrupt-OUT-Endpunkt von Bedeutung sein, wobei die jüngsten Da
ten empfangen sein sollten.
Das Pufferrundungs-Bit BR zeigt für Ausgangstransaktionen an, ob es erlaubt ist, Puffer mit
einem Umfang zu haben, der vom Umfang des empfangenen Datenpaketes verschieden ist. Es
kann die folgenden Werte aufweisen:
0: Das Datenpaket sollte exakt den definierten Datenpuffer auffüllen. Wenn das Paket nicht
exakt in den Puffer paßt, wird angezeigt, daß der Puffer überläuft oder nicht vollständig aus
gefüllt ist.
1: Das Datenpaket kann kleiner als der definierte Puffer sein, ohne daß eine Fehlerbedingung an dem Endpunkt verursacht wird.
1: Das Datenpaket kann kleiner als der definierte Puffer sein, ohne daß eine Fehlerbedingung an dem Endpunkt verursacht wird.
Dieses Feld zeigt den Wert des empfangenen PIDs an, wenn es zusammen mit einem Output
Complete (OCMP)- oder Datenfehler (DATE)-Pufferstatus gelesen wird: 0 für DATA0 und 1
für DATA1.
Das Pufferseiten-Bit BP kann die folgenden Werte annehmen:
0: Nutze die Pufferseite A als die obere Adresse des Eingangs-/Ausgangspuffers.
1: Nutze die Pufferseite B als die obere Adresse des Eingangs-/Ausgangspuffers.
1: Nutze die Pufferseite B als die obere Adresse des Eingangs-/Ausgangspuffers.
Die Puffer-Adressen-Bits BA halten die unteren 11 Bits der Pufferadresse. Puffer müssen an
einer ausgerichteten Doppelwort-Grenze beginnen und können an jeder Byte-Grenze enden.
Am Ende aller abgeschlossenen Übertragungen wird der verbleibende Wert der Pufferadresse
geschrieben. Dieses Feld wird am Ende von nicht vollständig ausgeführten Übertragungen
nicht überschrieben, z. B. wenn der Status auf Eingangs- oder Ausgangswarten geschrieben
ist.
Für OUT-Puffer ist das erste gespeicherte Byte das dem PID folgende Byte. Ähnlich ist es für
IN-Puffer. Die Adresse zeigt auf das erste Byte der zu übertragenden Daten, d. h. das Byte,
welches im Paket unmittelbar auf das PID folgt. Der CRC wird automatisch berechnet und an
das Paket angehangen, es sei denn, ein IN-Token wird vom IS_RDY-Zustand empfangen, und
in dem Steuerwort ist das IS-Feld nicht auf 1 gesetzt.
Die Byte-Zähl-Bits BC halten den Umfang des zu nutzenden Datenpuffers. Die Puffer begin
nen an einer geraden Doppelwort-Grenze und können an jeder Byte-Grenze enden. Für IN-
Transaktionen zeigt dies den Umfang der zu übertragenden Daten an. Für OUT-Transaktionen
zeigt dies den Umfang des Puffers an, in welchem die Daten empfangen werden können. Der
Normalwert des Byte-Zählers ist null. Am Ende von allen abgeschlossenen Übertragungen
wird der Restwert des Byte-Zählers geschrieben. Am Ende von nicht abgeschlossenen Über
tragungen, z. B., wenn der Status auf Eingangs- oder Ausgangswarten geschrieben ist, wird
dieses Feld nicht überschrieben.
Bei einer bevorzugten Ausführungsform sind die folgenden vier Register für die Erfindung
von Bedeutung: Das Endpunkt-Befehl-Register, das USB-Datenregister, das Puffer-Seiten-A-
Register und das Puffer-Seiten-B-Register.
Bei einer bevorzugten Ausführungsform weist das Endpunkt-Befehl-Register (ECR) die
Breite eines Wortes auf und ist ein Lese-/Schreibregister.
Das ECR wird genutzt, um Befehle an einem spezifizierten Endpunkt auszuführen. Durch ein
Reset wird das Register geleert. Das ECR-Registerformat ist im folgenden dargestellt:
Bits | |
Funktionsbezeichnung | |
15-8 | (Reserviert) |
7-4 | Endpoint Pipe Number (EPN) (Endpunktkanal-Zahl) |
3-0 | Endpoint Command (CMD) (Endpunkt-Befehl) |
Die Endpunktkanal-Zahl EPN bestimmt den Endpunktkanal, auf welchem der Befehl ausge
führt wird. Bei einer bevorzugten Ausführungsform kann dieses Register in die Hochge
schwindigkeits-Bus-Schnittstellenlogik implementiert sein. Die Daten laufen über die asyn
chrone Schnittstelle. Zwei Signale werden vom Endpunkt-Controller zurückgeschickt, wobei
eines anzeigt, daß der Befehl ausgeführt wurde, und daß der Befehlswert auf "0" gesetzt wer
den sollte, und wobei ein weiteres anzeigt, daß der Befehl nicht ausgeführt werden konnte,
und daß es auf "F" gesetzt werden sollte.
Der Endpunkt-Befehl CMD kann die folgenden Werte annehmen:
0000: Complete. Dieser Wert zeigt an, daß der vorhergehende Befehl abgeschlossen ist, und
daß der Endpunkt-Controller zur Aufnahme eines anderen Befehls bereit ist.
0001: Input Enable (CMD.IENB). Dieser Wert veranlaßt den spezifizierten Endpunktkanal
aus dem Stall (Halt)- oder Disable-Zustand in den Input Idle-Zustand I_IDL zu gehen. Der
Steuerwort-Zeiger für den spezifizierten Endpunktkanal wird auf 0 zurückgesetzt. Wenn der
momentane Zustand nicht der Disable- oder Stall-Zustand ist, wird ein "F" zurückgeschickt,
um anzuzeigen, daß versucht wurde, einen nicht erlaubten Befehl an diesem Endpunkt auszu
führen, und daß der Befehl ignoriert wird.
0010: Input Ready (CMD.IRDY). Dieser Wert veranlaßt den spezifizierten Endpunktkanal in
den Input Ready-Zustand I_RDY zu gehen, wenn dieser momentan in dem Input Idle-Zustand
I_IDL ist. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Input Ready-
Pufferzustand I_RDY in die Endpunkt-Anordnung des entsprechenden Endpunktes geschrie
ben wurde. Dieser Befehl veranlaßt nicht, daß das Steuerwort im Speicher gelesen wird; es
erlaubt hingegen, daß es als Antwort auf den Empfang eines IN-Tokens gelesen wird. Wenn
der gegenwärtige Zustand des Endpunktes nicht Input Idle I_IDL ist, wird der Befehl igno
riert. Wenn der gegenwärtige Zustand der Output-, der Setup-, der Disable- oder der Stall-
Zustand ist, wird ein "F" zurückgesendet, um anzuzeigen, daß versucht wurde, einen nicht
ausführbaren Befehl an diesem Endpunkt auszuführen.
0011: Input Isochronous Ready (CMD.ISRDY). Dieser Wert veranlaßt den spezifizierten
Endpunktkanal in den Input Isochronous Ready-Zustand IS_RDY zu gehen, wenn er mo
mentan in dem Input Idle-Zustand 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 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 gegenwartige 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.
Bei einer bevorzugten Ausführungsform weist das USB-Datenregister (UDR) die Breite eines
Wortes auf, und ist als Lese-/Schreibregister ausgebildet. Lesezugriffe sind in allen Speicher
stellen erlaubt. Das Datenregister wird mit Daten geladen, die für das Register gelesen wur
den, welches zu jeder Zeit mittels eines USB-Indexregisters (UIR) ausgewählt wird. Das
Schreiben auf des Registers ist nur in dem USB-Hub-Register erlaubt, wenn die Auswahlbits
des UIR (UIR.SEL) einen Wert von 2 haben. Ein Statusbit ist in Bit 15 des UIR definiert, um
anzuzeigen, daß eine Schreiboperation erfolgreich ausgeführt wurde. Dieses ist nur dann not
wendig, wenn eine Hub-Funktionalität umfaßt ist.
Der für die Erfindung in der vorliegenden Anwendung relevante Teil des UDR ist der 8-Bit-
Entpunktkana1-Zustand. Dieser Zustand wird für jeden Endpunkt gespeichert, der für den ge
genwärtig 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 weist das Puffer-Seiten-A-Register (BPA) die Breite
eines Doppelwortes auf, und ist als Lese-/Schreibspeicher ausgebildet. Die oberen 21 Bits des
BPA definieren eine 2K Byte Seite, in welcher Puffer für die Datenübertragung definiert sind.
Diese Pufferseite ist mittels des Pufferseiten-Auswählbit-Wertes in dem Steuerwort CW.BP
ist bestimmt, welches in den Speicher der Endpunkt-Anordnung geschrieben ist. Auf ein Re
set wird das Register geleert. Das BPA-Registerformat ist wie folgt:
Bits | |
Funktionsbezeichnung | |
31-11 | BPA |
10-0 | 00000000000 |
Bei einer bevorzugten Ausführung weist das Puffer-Seiten-B-Register (BPB) die Breite eines
Doppelwortes auf, und ist als ein Lese-/Schreibregister ausgebildet. Die oberen 21 Bit des
BPB definieren eine 2K Byte Seite, in welcher Puffer für die Datenübertragung definiert sind.
Diese Pufferseite ist mittels des Pufferseiten-Auswahlbit-Wertes in dem Steuerwort CW.BP
bestimmt, welches in den Speicher der Endpunkt-Anordnung geschrieben ist. Auf ein Reset
wird das Register entleert. Das BPB-Registerformat ist wie folgt:
Bits | |
Funktionsbezeichnung | |
31-11 | BPB |
10-0 | 00000000000 |
Bei einer bevorzugten Ausführungsform kann ein Endpunkt die folgenden Zustände aufwei
sen. Um den Betrieb und die Steuerung aufrechtzuerhalten, bewahrt jeder Endpunktkanal ei
nen Zustand mit definierten Bedingungen für die Übertragung zwischen dem Zustand, was
eine implizite Hardware/Software-Synchronisation umfaßt. Ü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. 6 zeigt die vereinfachte Endpunktkanal-Zustandsmaschine für die Handhabung von IN- und
OUT-Transaktionen. Die Handhabung von Steuer-Lese- und Steuer-Schreib-
Transaktionen erfolgt in einer ähnlichen Weise.
Der gegenwärtige Endpunktkanal-Zustand ist in einem Endpunkt-Zustandsregister sichtbar,
auf welches mit einem USB-Index- und einem Daten-Register zugegriffen werden kann. Bei
einer bevorzugten Ausführungsform ist zu jeder Zeit stets höchstens ein Endpunktkanal in
irgendeinem der aktiven Zustände. Dies ermöglicht das gemeinsame Nutzen der aktiven Zu
standslogik durch alle Endpunktkanäle.
Wie in Fig. 6 gezeigt ist, kann ein Endpunktkanal die folgenden Zustände aufweisen:
Disable. Der DISABLE-Zustand 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: Der HALT-Zustand wird auf den Stall-Befehl an diesen Endpunkt, auf das Erkennen
eines Stall-Zustandes in dem Pufferzustand eines Steuerwortes, und bei bestimmten Feh
lerbedingungen eingenommen. Während dieser Endpunktkanal in diesem Zustand ist, wird
jeder an diesem Endpunkt empfangene Token als ein Stall-Handshake zurückgesendet, um
anzuzeigen, daß der Endpunkt gegenwärtig blockiert ist. Eine Software-Intervention ist not
wendig, um den Endpunktkanal aus diesem Zustand zu bringen. Typischerweise geschieht
dies durch einen Enable-Befehl an einen der Idle-Zustände.
Input Idle I_IDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugeordnet
wird. Ein NAK-Handshake wird als Antwort auf einen IN-Token, welcher diesem Endpunkt
kanal zugeordnet ist, zurückgesendet. Für OUT-Token wird von diesem Endpunktkanal keine
Antwort zurückgesendet.
Input Ready I_RDY. Dieser Zustand wird über einen Input Ready-Befehl an diesen End
punktkanal 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 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 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.
Input Isochronous Ready IS_RDY. Dieser Zustand wird über einen Input Ready-Befehl an
diesen Endpunkt oder auf das Erkennen eines anderen Eingabepuffers am Ende einer Über
tragung eingenommen. Dieser Befehl sollte nur angewendet werden, nachdem diesem End
punkt 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. Dieser Zustand 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
Anschluß der Datenübertragung wird der Pufferstatus zusammen mit den gegenwärtigen Wer
ten 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 Idle 0_IDL. In diesem Zustand erwartet der Endpunktkanal, daß bald ein Puffer zuge
ordnet 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 eingenommen werden, nachdem das passende Wort in
die Endpunkt-Anordnung geschrieben wurde.
Output Active 0_ACT. Dieser Zustand wird auf den Empfang eines OUT-Tokens einge
nommen. 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.
Output Isochronous Idle OS_IDL. In diesem Zustand 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. Dieser Zustand 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. Dieser Zustand 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 Steu
erwort für diesen Endpunktkanal wird gelesen. Der passende Übergang wird basierend auf
dem Pufferzustand gemacht.
Setup Ready S_RDY. Dieser Zustand wird eingenommen, nachdem dieser Endpunktkanal
einen Puffer erhalten hat, in welchen die Daten zu schreiben sind. Dieser Zustand wird auf das
Erkennen des Setup Ready-Pufferzustandes oder mittels eines Setup Ready-Befehls einge
nommen, nachdem das geeignete Wort in die Endpunkt-Anordnung geschrieben wurde.
Setup Active S_ACT. Dieser Zustand 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 End
punktkanal 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.
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.
Bei einer bevorzugten Ausführungsform arbeiten Bulk (Vielfach)-Endpunkte ähnlich zu Inter
rupt-Endpunkten, mit der Ausnahme, daß typischerweise große Datenübertragungen einge
schlossen sind, wobei diese in IN- und OUT-Richtung auftreten. Für Bulk-Endpunkte folgt
immer das Umschaltprotokoll, so daß in allen Steuerwörtern TE gesetzt wird. Ein bestimmter
Bulk-Endpunkt wird entweder in Eingangs- oder Ausgangsrichtung genutzt. Wenn ein Bulk-
Endpunkt zunächst initialisiert wird, wird an die geeignete Endpunktkanal-Zahl
(ECR.(I/OENB,EPN)) ein Input-Enable- oder Output-Enable-Befehl gegeben.
Für die als Eingänge genutzten Endpunkte werden Daten, wenn diese verfügbar sind, auf ei
nen Puffer geschrieben, wird ein Steuerwort mit einem IRDY-Zustand beschrieben und wird
TE gesetzt. Danach wird ein IRDY-Befehl ausgeführt. Zu jeder Zeit können höchstens zwei
Datenpuffer an einem Endpunktkanal hängen. Dieses erlaubt ein Doppelpuffer-Schema, wenn
es notwendig ist, daß Senden irgendwelcher NAKs während einer großen Datenübertragung
zu vermeiden. Die Synchronisation der Software erfolgt mittels des Überprüfens des Puffer-
Zustandes. Nur ein vollständiger Puffer-Zustand kann überschrieben werden.
Für die als Ausgänge genutzten Endpunkte muß ein Puffer vorbereitet werden, in welchen die
Daten zu übertragen sind. Wenn dieser Puffer verfügbar ist, wird ein Steuerwort mit einem
Zeiger auf den Puffer in ein geeignetes Steuerwort geschrieben. Das Toggle-Enable-Bit sollte
in diesem Zusammenhang auch gesetzt werden. Es wird ein ORDY-Befehl an den Endpunkt
kanal gegeben. Nachdem die Daten als Teil des Out-Tokens in diesem Puffer empfangen
wurden, wird das Steuerwort im Speicher aktualisiert. Wenn der Bereich des Datenpaketes
nicht bekannt ist, sollte das Puffer-Rundungsbit des Steuerwortes gesetzt sein. Dies ermög
licht es, Pakete zu empfangen, die kleiner als der Pufferbereich sind. In diesem Fall wird kein
Fehlerstatus geschrieben. Wenn das Puffer-Rundungsbit nicht gesetzt ist, werden empfangene
Pakete, welche den zugeordneten Puffer nicht exakt ausfüllen, mit einem Datenfehler-Status
geschrieben. Der Datenfehler-Status wird in allen Fällen geschrieben, wenn mehr Daten als
erwartet an diesem Endpunkt empfangen wurden. Wenn während des Empfangs dieser Daten
ein Fehler erkannt wird, wird ein Zwischenpuffer-Zustand in den Speicher zurückgeschrieben,
und beim nächsten OUT-Token wird der Puffer noch einmal genutzt. D.h., daß die Software
nur mit der Bereitstellung von Puffern beschäftigt ist, in welchen Daten empfangen werden
sollen, und nicht mit der Kompliziertheit des Wiederholungsprotokolls.
Bei einer bevorzugten Ausführungsform führt der Endpunktkanal-Controller zusammenfas
send die folgenden Schritte aus. Erstens wird der ECR basierend auf dem gegenwärtigen EPP-
Zustand aktualisiert. Der ECR kann die Aktualisierung des Endpunktkanal-Zustandes veran
lassen, während ein anderer Endpunktkanal aktiv bleibt.
Als nächstes empfangt der Endpunkt einen Token. Die Adresse wird mit der funktionellen
Adresse verglichen. Die Endpunkt-Zahl EPN wird als ein Index in der Endpunktkanal-
Abbildung genutzt. Die empfangene Endpunktkanal-Zahl wird bestimmt. Der veränderbare
Puffer-Zustand wird auf dem Stand des gegenwärtigen Zustandes des Puffers gehalten. Der
Pufferzustand kann während einer Transaktion dreimal aktualisiert werden, und der verblei
bende Wert wird dann zurück in das Steuerwort geschrieben. Dieser Wert kann später mit
einem korrekteren Status überschrieben werden.
Als nächstes liest der Endpunkt ein Steuerwort als Antwort auf den Token. Der Phase 1-
Puffer-Zustand wird auf IWT oder OWT gesetzt. In diesen Fällen wird das Steuerwort von
dem Speicher gelesen, und wird anschließend genutzt, um zu bestimmen, ob eine Datenüber
tragung zu beginnen ist, wobei die Adresse und der Bereich durch das Steuerwort definiert
sind. Weiterhin wird der nächste Wert des Puffer-Zustandes bestimmt. Dieser wird genutzt,
um den früher gesetzten Puffer-Zustand zu überschreiben. Wenn ein IN-Token empfangen
wurde, werden Daten auf der Adresse gelesen und an den USB übertragen. Wenn ein OUT- oder
SETUP-Token empfangen wurde, wird eine Datenübertragung an der Adresse des Steu
erwortes begonnen, wenn 32-Bit-Daten vom USB empfangen wurden.
Danach werden am Ende der Übertragung der Puffer-Zustand und die Handshakes HS aktua
lisiert. Wenn eine Aufforderung zur Aktualisierung des Steuerwortes in EABAR+cEPP+CWP
gemacht wurde, werden BS und HS unverzüglich aktualisiert.
Nachdem das letzte Byte des IN-Paketes gesendet wurde, wird eine Uhr gestartet, um auf ein
rückkehrendes ACK zu warten. Es wird eine Unterbrechung signalisiert, wenn ein ACK nicht
innerhalb einer 16 Bit-Zeit empfangen wurde, die zu dem Zeitpunkt beginnt, zu dem das Ende
des Paketes gesendet wurde. Dieser Wert kann vergrößert werden, um Kanalverzögerungen
zu berücksichtigen. Ein Puffer-Fehler tritt auf, wenn die Daten nicht schnell genug abgerufen
werden können, um mit der USB-Übertragungsrate mitzuhalten, so daß Unterschreitungsbe
dingungen auftreten.
Am Ende eines OUT-Paketes setzt sich das End-of-Write-Signal EOW durch, wenn das letzte
erwartete Byte von dem Endpunkt-Controller übertragen wurde. Ein Puffer-Fehler tritt auf,
wenn die Daten nicht schnell genug in den Speicher geschrieben werden konnten, und ein
Überlauf auftritt. Ein Datenfehler tritt auf, wenn ein Daten-Überlauf oder ein Rundungsfehler
auftritt. Daten-Überlauf tritt auf, wenn das empfangene Paket größer als der zugeordnete Puf
fer ist, d. h. ein Byte wurde empfangen, nachdem das EOW sich durchgesetzt hat. Ein Run
dungsfehler tritt auf, wenn die Pufferrundung CW.BR nicht gesetzt ist, und der Puffer-Zähler
am Beginn des CRC nicht Null ist (d. h. das Paket füllt den Puffer nicht exakt auf).
Abschließend wird der Endpunktkanal-Zustand für diesen Endpunkt aktualisiert. Wenn der
CWP inkrementiert ist, kommt der nächste Endpunktkanal-Zustand von dem neuen Steuer
wort, welches unmittelbar nach der CWP-Inkrementierung (Invertierung) gelesen wurde.
Bei der Umsetzung der Erfindung können verschiedene Alternativen auf die beschriebenen
erfindungsgemäßen Ausführungsformen angewendet werden. Die folgenden Ansprüche sol
len den Umfang der Erfindung definieren, wobei auch Äquivalente umfaßt sein sollen.
Die Architektur der USB-Knotenschnittstelle ist in dem folgenden Anhang, der Teil der
Beschreibung ist, näher spezifiziert.
Claims (24)
1. Vorrichtung zum Senden von Daten auf einem nicht-isochronen Endpunktkanal von
einem USB-Endpunkt zu einem USB-Host, aufweisend:
wobei der Controller die erste Datenmenge erneut sendet, bis das Host-Signal emp fangen ist; und
wobei der Controller in dem Zeiger-Datenspeicherelement einen zweiten Zeiger auf das zweite Datenspeicherelement erzeugt und die zweite Datenmenge sendet, wenn das Host-Signal empfangen worden ist.
- - ein erstes Datenspeicherelement;
- - ein zweites Datenspeicherelement;
- - einen Datenprozessor, der so konfiguriert ist, daß wenigstens eine erste Da tenmenge in dem ersten Datenspeicherelement und wenigstens eine zweite Datenmenge in dem zweiten Datenspeicherelement erzeugt werden können;
- - ein Zeiger-Datenspeicherelement, das so konfiguriert ist, daß es einen einem Datenspeicherelement entsprechenden Zeiger enthalten kann; und
- - einen Controller, der so konfiguriert ist, daß eine Datenmenge von einem USB-Endpunkt an einen USB-Host auf einem USB-Endpunktkanal gesendet werden kann, und daß ein Signal empfangen werden kann,
wobei der Controller die erste Datenmenge erneut sendet, bis das Host-Signal emp fangen ist; und
wobei der Controller in dem Zeiger-Datenspeicherelement einen zweiten Zeiger auf das zweite Datenspeicherelement erzeugt und die zweite Datenmenge sendet, wenn das Host-Signal empfangen worden ist.
2. Vorrichtung nach Anspruch 1, wobei der Endpunktkanal als wenigstens einer von
mehreren Endpunktkanälen ausgebildet ist, wobei der Endpunkt als wenigstens einer
von mehreren Endpunkten ausgebildet ist, und wobei das erste Datenspeicherelement
und das zweite Datenspeicherelement von den mehreren Endpunkten gemeinsam ge
nutzt werden können.
3. Vorrichtung nach Anspruch 1, wobei der Endpunktkanal einer von 16 Endpunktkanä
len ist, wobei der Endpunkt einer von 16 Endpunkten ist, und wobei das erste Daten
speicherelement und das zweite Datenspeicherelement von den 16 Endpunkten ge
meinsam genutzt werden kann.
4. Vorrichtung nach Anspruch 1, wobei das erste Datenspeicherelement und das zweite
Datenspeicherelement Puffer umfassen, die einen Doppelpuffer bilden.
5. Vorrichtung nach Anspruch 1, wobei das Host-Signal als ein Quittiersignal ausgebil
det ist.
6. Vorrichtung zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
auf einem nicht-isochronen Endpunktkanal, aufweisend:
wobei der Controller die erste Datenmenge erneut sendet, bis das Host-Signal emp fangen wurde;
wobei der Datenprozessor eine dritte Datenmenge in dem ersten Datenspeicherelement erzeugt, wenn das Host-Signal empfangen wurde, und wobei der Controller in dem Zeiger-Datenspeicherelement einen zweiten Zeiger auf das zweite Datenspeicherele ment erzeugt, die zweite Datenmenge sendet, und anschließend ein zweites Signal empfängt, das ein zweites Host-Signal von dem USB-Host oder ein zweites Unterbre chungssignal ist;
wobei der Controller die zweite Datenmenge erneut sendet, bis das zweite Host-Signal empfangen wurde; und
wobei der Controller in dem Zeiger-Datenspeicherelement einen dritten Zeiger auf das erste Datenspeicherelement erzeugt, wenn das zweite Host-Signal empfangen wurde, und wobei der Controller die dritte Datenmenge sendet.
- - ein erstes Datenspeicherelement;
- - ein zweites Datenspeicherelement;
- - einen Datenprozessor, der so konfiguriert ist, daß wenigstens eine erste Da tenmenge in dem ersten Datenspeicherelement und wenigstens eine zweite Datenmenge in dem zweiten Datenspeicherelement erzeugt werden können;
- - ein Zeiger-Datenspeicherelement, das so konfiguriert ist, daß es einen einem Datenspeicherelement entsprechenden Zeiger enthalten kann; und
- - einen Controller, der so konfiguriert ist, daß eine Datenmenge von einem USB-Endpunkt an einen USB-Host auf einem USB-Endpunktkanal gesendet werden kann, und daß ein Signal empfangen werden kann,
wobei der Controller die erste Datenmenge erneut sendet, bis das Host-Signal emp fangen wurde;
wobei der Datenprozessor eine dritte Datenmenge in dem ersten Datenspeicherelement erzeugt, wenn das Host-Signal empfangen wurde, und wobei der Controller in dem Zeiger-Datenspeicherelement einen zweiten Zeiger auf das zweite Datenspeicherele ment erzeugt, die zweite Datenmenge sendet, und anschließend ein zweites Signal empfängt, das ein zweites Host-Signal von dem USB-Host oder ein zweites Unterbre chungssignal ist;
wobei der Controller die zweite Datenmenge erneut sendet, bis das zweite Host-Signal empfangen wurde; und
wobei der Controller in dem Zeiger-Datenspeicherelement einen dritten Zeiger auf das erste Datenspeicherelement erzeugt, wenn das zweite Host-Signal empfangen wurde, und wobei der Controller die dritte Datenmenge sendet.
7. Vorrichtung nach Anspruch 6, wobei der Endpunktkanal als wenigstens einer von
mehreren Endpunktkanälen ausgebildet ist, wobei der Endpunkt als wenigstens einer
von mehreren Endpunkten ausgebildet ist, und wobei das erste Datenspeicherelement
und das zweite Datenspeicherelement von den mehreren Endpunkten gemeinsam ge
nutzt werden können.
8. Vorrichtung nach Anspruch 6, wobei der Endpunktkanal einer von 16 Endpunktkanä
len ist, wobei der Endpunkt einer von 16 Endpunkten ist, und wobei das erste Daten
speicherelement und das zweite Datenspeicherelement von den 16 Endpunkten ge
meinsam genutzt werden kann.
9. Vorrichtung nach Anspruch 6, wobei das erste Datenspeicherelement und das zweite
Datenspeicherelement Puffer umfassen, die einen Doppelpuffer bilden.
10. Vorrichtung nach Anspruch 6, wobei das Host-Signal und das zweite Host-Signal je
weils als ein Quittiersignal ausgebildet sind.
11. Vorrichtung zum Empfangen von Daten von einem USB-Host auf einem nicht-iso
chronen Endpunktkanal an einem USB-Endpunkt, aufweisend:
wobei der Controller den Empfang fortsetzt, wenn der erste Fehler erkannt worden ist; und
wobei der Datenprozessor Daten aus der ersten Datenmenge erzeugt, sofern der erste Fehler nicht erkannt worden ist, und wobei der Controller in dem Zeiger-Daten speicherelement einen zweiten Zeiger auf das zweite Datenspeicherelement erzeugt und die zweite Datenmenge in das zweite Datenspeicherelement empfängt.
- - ein erstes Datenspeicherelement; ein zweites Datenspeicherelement;
- - einen Datenprozessor, der so konfiguriert ist, daß aus wenigstens einer ersten Datenmenge in dem ersten Datenspeicherelement Daten erzeugt werden kön nen;
- - ein Zeiger-Datenspeicherelement, das so konfiguriert ist, daß es einen einem Datenspeicherelement entsprechenden Zeiger enthalten kann; und
- - einen Controller, der so konfiguriert ist, daß an einem USB-Endpunkt eine Datenmenge von einem USB-Host auf einem USB-Endpunktkanal empfangen werden kann, und daß ein Fehler erkannt werden kann,
wobei der Controller den Empfang fortsetzt, wenn der erste Fehler erkannt worden ist; und
wobei der Datenprozessor Daten aus der ersten Datenmenge erzeugt, sofern der erste Fehler nicht erkannt worden ist, und wobei der Controller in dem Zeiger-Daten speicherelement einen zweiten Zeiger auf das zweite Datenspeicherelement erzeugt und die zweite Datenmenge in das zweite Datenspeicherelement empfängt.
12. Vorrichtung nach Anspruch 11, wobei der erste Fehler ein CRC-Fehler, ein Bit-Stuff-
Fehler oder ein Puffer-Fehler ist.
13. Vorrichtung nach Anspruch 11, wobei der Endpunktkanal als wenigstens einer von
mehreren Endpunktkanälen ausgebildet ist, wobei der Endpunkt als wenigstens einer
von mehreren Endpunkten ausgebildet ist, und wobei das erste Datenspeicherelement
und das zweite Datenspeicherelement von den mehreren Endpunkten gemeinsam ge
nutzt werden können.
14. Vorrichtung nach Anspruch 11, wobei der Endpunktkanal einer von 16 Endpunktka
nälen ist, wobei der Endpunkt einer von 16 Endpunkten ist, und wobei das erste Da
tenspeicherelement und das zweite Datenspeicherelement von den 16 Endpunkten ge
meinsam genutzt werden können.
15. Vorrichtung nach Anspruch 11, wobei das erste Datenspeicherelement und das zweite
Datenspeicherelement Puffer umfassen, die einen Doppelpuffer bilden.
16. Vorrichtung zum Empfangen von Daten von einem USB-Host auf einem nicht-iso
chronem Endpunktkanal an einem USB-Endpunkt, aufweisend:
wobei der Controller den Empfang fortsetzt, wenn der erste Fehler erkannt worden ist;
wobei der Datenprozessor Daten aus der ersten Datenmenge erzeugt, sofern der erste Fehler nicht erkannt worden ist, und wobei der Controller in dem Zeiger- Speicherelement einen zweiten Zeiger auf das zweite Datenspeicherelement erzeugt, die zweite Datenmenge in das zweite Datenspeicherelement empfängt, und anschlie ßend erkennt, ob ein zweiter Fehler aufgetreten ist;
wobei der Controller den Empfang fortsetzt, wenn der zweite Fehler erkannt worden ist; und
wobei der Datenprozessor Daten aus der zweiten Datenmenge erzeugt, sofern der zweite Fehler nicht erkannt worden ist, und wobei der Controller in dem Zeiger- Datenspeicherelement einen dritten Zeiger auf das erste Datenspeicherelement er zeugt, und die dritte Datenmenge in das ersten Datenspeicherelement empfängt.
- - ein erstes Datenspeicherelement;
- - ein zweites Datenspeicherelement;
- - einen Datenprozessor, der so konfiguriert ist, daß aus wenigstens einer ersten Datenmenge in dem ersten Datenspeicherelement und aus wenigstens einer zweiten Datenmenge in dem zweiten Datenspeicherelement Daten erzeugt werden können;
- - ein Zeiger-Datenspeicherelement, das so konfiguriert ist, daß es einen einem Datenspeicherelement entsprechenden Zeiger enthalten kann; und
- - einen Controller, der so konfiguriert ist, daß an einem USB-Endpunkt eine Datenmenge von einem USB-Host auf einem USB-Endpunktkanal empfangen werden kann, und daß ein Fehler erkannt werden kann;
wobei der Controller den Empfang fortsetzt, wenn der erste Fehler erkannt worden ist;
wobei der Datenprozessor Daten aus der ersten Datenmenge erzeugt, sofern der erste Fehler nicht erkannt worden ist, und wobei der Controller in dem Zeiger- Speicherelement einen zweiten Zeiger auf das zweite Datenspeicherelement erzeugt, die zweite Datenmenge in das zweite Datenspeicherelement empfängt, und anschlie ßend erkennt, ob ein zweiter Fehler aufgetreten ist;
wobei der Controller den Empfang fortsetzt, wenn der zweite Fehler erkannt worden ist; und
wobei der Datenprozessor Daten aus der zweiten Datenmenge erzeugt, sofern der zweite Fehler nicht erkannt worden ist, und wobei der Controller in dem Zeiger- Datenspeicherelement einen dritten Zeiger auf das erste Datenspeicherelement er zeugt, und die dritte Datenmenge in das ersten Datenspeicherelement empfängt.
17. Vorrichtung nach Anspruch 16, wobei der erste Fehler und/oder der zweite Fehler ein
CRC-Fehler, ein Bit-Stuff-Fehler oder ein Puffer-Fehler sind.
18. Vorrichtung nach Anspruch 16, wobei der Endpunktkanal als wenigstens einer von
mehreren Endpunktkanälen ausgebildet ist, wobei der Endpunkt als wenigstens einer
von mehreren Endpunkten ausgebildet ist, und wobei das erste Datenspeicherelement
und das zweite Datenspeicherelement von den mehreren Endpunkten gemeinsam ge
nutzt werden können.
19. Vorrichtung nach Anspruch 16, wobei der Endpunktkanal einer von 16 Endpunktka
nälen ist, wobei der Endpunkt einer von 16 Endpunkten ist, und wobei das erste Da
tenspeicherelement und das zweite Datenspeicherelement von den 16 Endpunkten ge
meinsam genutzt werden können.
20. Vorrichtung nach Anspruch 16, wobei das erste Datenspeicherelement und das zweite
Datenspeicherelement Puffer umfassen, die einen Doppelpuffer bilden.
21. Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host auf
einem nicht-isochronen Endpunktkanal, die folgenden Verfahrensschritte aufweisend:
- - Erzeugen einer ersten Datenmenge in einem ersten Datenspeicherelement und eines ersten Zeigers in dem ersten Datenspeicherelement;
- - Erzeugen einer zweiten Datenmenge in einem zweiten Datenspeicherelement;
- - Senden der ersten Datenmenge von einem USB-Endpunkt an einen USB-Host, und anschließendes Empfangen eines Signals, welches ein Host-Signal von dem USB-Host oder ein Unterbrechungssignal ist;
- - Fortsetzen des Sendens der ersten Datenmenge, bis das Host-Signal empfangen wird; und
- - Erzeugen eines zweiten Zeigers auf das zweite Datenspeicherelement, wenn das Host-Signal empfangen wurde, und anschließendes Senden der zweiten Datenmenge von dem USB-Endpunkt an den USB-Host.
22. Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host auf
einem nicht-isochronen Endpunktkanal, die folgenden Verfahrensschritte aufweisend:
- - Erzeugen einer ersten Datenmenge in einem ersten Datenspeicherelement und eines ersten Zeigers in dem ersten Datenspeicherelement;
- - Erzeugen einer zweiten Datenmenge in einem zweiten Datenspeicherelement;
- - Senden der ersten Datenmenge von einem USB-Endpunkt an einen USB-Host, und anschließendes Empfangen eines Signals, welches ein Host-Signal von dem USB-Host oder ein Unterbrechungssignal ist;
- - Fortsetzen des Sendens der ersten Datenmenge, bis das Host-Signal empfangen wird; und
- - Erzeugen eines zweiten Zeigers auf das zweite Datenspeicherelement und einer dritten Datenmenge der Daten im ersten Datenspeicherelement, wenn das Host-Signal empfangen wurde, und anschließendes Senden der zweiten Da tenmenge von dem USB-Endpunkt an den USB-Host und Empfangen eines zweiten Signals, welches ein zweites Host-Signal oder ein zweites Unterbre chungssignal ist,
- - Fortsetzen des Sendens der zweiten Datenmenge, bis das zweite Host-Signal empfangen wurde; und
- - Erzeugen eines dritten Speichers auf das erste Datenspeicherelement, wenn das zweite Host-Signal empfangen wurde, und anschließendes Senden der dritten Datenmenge von dem USB-Endpunkt an den USB-Host.
23. Verfahren zum Empfangen von Daten von einem USB-Host auf einem nicht-iso
chronen Endpunktkanal an einem USB-Endpunkt, die folgenden Schritte aufweisend:
- - Erzeugen eines ersten Zeigers auf ein erstes Datenspeicherelement;
- - Empfangen einer ersten Datenmenge von einem USB-Host in das erste Daten speicherelement, und anschließendes Erkennen, ob ein Fehler aufgetreten ist;
- - Fortsetzen des Empfangs der ersten Datenmenge, wenn der Fehler erkannt wurde, und anschließendes Erzeugen von Daten aus der ersten Datenmenge; und
- - Erzeugen eines zweiten Zeigers auf das zweite Datenspeicherelement, und anschließendes Empfangen einer zweiten Datenmenge von dem USB-Host in das zweite Datenspeicherelement, sofern der Fehler nicht erkannt wurde.
24. Verfahren zum Empfangen von Daten von einem USB-Host auf einem nicht-iso
chronen Endpunktkanal an einem USB-Endpunkt, die folgenden Schritte aufweisend:
- - Erzeugen eines ersten Zeigers auf ein erstes Datenspeicherelement;
- - Empfangen einer ersten Datenmenge von einem USB-Host in das erste Daten speicherelement, und anschließendes Erkennen, ob ein Fehler aufgetreten ist;
- - Fortsetzen des Empfangs der ersten Datenmenge, wenn der Fehler erkannt wurde, und anschließendes Erzeugen von Daten aus der ersten Datenmenge;
- - Erzeugen eines zweiten Zeigers auf das zweite Datenspeicherelement, sofern der Fehler nicht erkannt wurde, und anschließendes Empfangen einer zweiten Datenmenge von dem USB-Host in das zweite Datenspeicherelement und Er kennen, ob ein zweiter Fehler aufgetreten ist;
- - Fortsetzen des Empfangs der zweiten Datenmenge, wenn der zweite Fehler erkannt wurde, und anschließendes Erzeugen der Daten aus der zweiten Da tenmenge; und
- - Erzeugen eines dritten Zeigers auf das erste Datenspeicherelement, sofern der zweite Fehler nicht erkannt wurde, und anschließendes Empfangen einer drit ten Datenmenge von dem USB-Host in das erste Datenspeicherelement.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US400398 | 1998-01-07 | ||
US09/004,003 US6145045A (en) | 1998-01-07 | 1998-01-07 | System for sending and receiving data on a Universal Serial Bus (USB) using a memory shared among a number of end points |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19900331A9 DE19900331A9 (de) | |
DE19900331A1 true DE19900331A1 (de) | 1999-07-08 |
Family
ID=21708652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19900331A Withdrawn DE19900331A1 (de) | 1998-01-07 | 1999-01-07 | Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung |
Country Status (3)
Country | Link |
---|---|
US (2) | US6145045A (de) |
KR (1) | KR100290597B1 (de) |
DE (1) | DE19900331A1 (de) |
Cited By (4)
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 |
US8078813B2 (en) | 2004-09-30 | 2011-12-13 | Emc Corporation | Triangular asynchronous replication |
DE102005036291B4 (de) | 2004-09-30 | 2019-03-07 | Emc Corporation | Verfahren zum Speichern von Wiederherstelldaten in einem System |
Families Citing this family (82)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6307543B1 (en) * | 1998-09-10 | 2001-10-23 | Silicon Image, Inc. | Bi-directional data transfer using two pair of differential lines as a single additional differential pair |
US6311294B1 (en) * | 1998-10-20 | 2001-10-30 | Cypress Semiconductor Corp. | Device and method for efficient bulk data retrieval using a universal serial bus |
US6721805B1 (en) * | 1998-11-12 | 2004-04-13 | International Business Machines Corporation | Providing shared-medium multiple access capability in point-to-point communications |
US6618782B1 (en) | 1998-11-23 | 2003-09-09 | Advanced Micro Devices, Inc. | Computer interconnection bus link layer |
US6457081B1 (en) | 1998-11-23 | 2002-09-24 | Advanced Micro Devices, Inc. | Packet protocol for reading an indeterminate number of data bytes across a computer interconnection bus |
US6470410B1 (en) * | 1998-11-23 | 2002-10-22 | Advanced Micro Devices, Inc. | Target side concentrator mechanism for connecting multiple logical pipes to a single function utilizing a computer interconnection bus |
US6499079B1 (en) | 1998-11-23 | 2002-12-24 | Advanced Micro Devices, Inc. | Subordinate bridge structure for a point-to-point computer interconnection bus |
US6611891B1 (en) | 1998-11-23 | 2003-08-26 | Advanced Micro Devices, Inc. | Computer resource configuration mechanism across a multi-pipe communication link |
US6457084B1 (en) * | 1998-11-23 | 2002-09-24 | Advanced Micro Devices, Inc. | Target side distributor mechanism for connecting multiple functions to a single logical pipe of a computer interconnection bus |
JP3228249B2 (ja) * | 1998-12-04 | 2001-11-12 | 日本電気株式会社 | ルータ装置 |
US6233628B1 (en) * | 1999-01-08 | 2001-05-15 | Oak Technology, Inc. | System and method for transferring data using separate pipes for command and data |
US6389495B1 (en) * | 1999-01-16 | 2002-05-14 | Cypress Semiconductor Corp. | Dedicated circuit and method for enumerating and operating a peripheral device on a universal serial bus |
US6321350B1 (en) * | 1999-02-22 | 2001-11-20 | International Business Machines Corporation | Method and apparatus for error detection using a queued direct Input-Output device |
US6148354A (en) | 1999-04-05 | 2000-11-14 | M-Systems Flash Disk Pioneers Ltd. | Architecture for a universal serial bus-based PC flash disk |
US6671765B1 (en) * | 1999-11-22 | 2003-12-30 | Texas Instruments Incorporated | Architecture enabling code overlay using a dedicated endpoint |
US6502097B1 (en) * | 1999-12-23 | 2002-12-31 | Microsoft Corporation | Data structure for efficient access to variable-size data objects |
GB2371653B (en) * | 2000-02-21 | 2003-08-06 | Trek Technology | A portable data storage device |
FI113606B (fi) * | 2000-05-03 | 2004-05-14 | Nokia Corp | Menetelmä sanomien välittämiseksi, tiedonsiirtojärjestelmä ja päätelaite |
US6718412B2 (en) * | 2000-12-14 | 2004-04-06 | Agilent Technologies, Inc. | Apparatus and method for universal serial bus communications |
US7401126B2 (en) * | 2001-03-23 | 2008-07-15 | Neteffect, Inc. | Transaction switch and network interface adapter incorporating same |
US6931465B1 (en) | 2001-03-31 | 2005-08-16 | Cypress Semiconductor Corp. | Intelligent, extensible SIE peripheral device |
WO2003003295A1 (en) * | 2001-06-28 | 2003-01-09 | Trek 2000 International Ltd. | A portable device having biometrics-based authentication capabilities |
GB2393007B (en) | 2001-06-28 | 2005-08-03 | Trek 2000 Int Ltd | Method and devices for data transfer |
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 |
US6718405B2 (en) * | 2001-09-20 | 2004-04-06 | Lsi Logic Corporation | Hardware chain pull |
ATE487986T1 (de) * | 2001-09-27 | 2010-11-15 | Nxp Bv | Bussytem und busschnittstelle zum anschliessen an einen bus |
WO2003029997A1 (en) * | 2001-09-27 | 2003-04-10 | Koninklijke Philips Electronics N.V. | Bus system and bus interface |
WO2003029998A1 (en) * | 2001-09-28 | 2003-04-10 | Koninklijke Philips Electronics N.V. | Bus system and bus interface for connection to a bus |
US7110389B2 (en) * | 2001-11-19 | 2006-09-19 | International Business Machines Corporation | Fanning route generation technique for multi-path networks |
ATE488840T1 (de) * | 2002-02-07 | 2010-12-15 | Trek 2000 Int Ltd | Tragbare datenspeicher- und bildaufzeichnungs einrichtung mit der fähigkeit zur direkt verbindung mit einem computer-usb-port |
US20030167347A1 (en) * | 2002-02-11 | 2003-09-04 | Combs James Lee | Home network printer adapter |
US7987007B2 (en) * | 2002-03-18 | 2011-07-26 | Creative Technology Ltd | Memory module with audio playback mode |
US20030184960A1 (en) * | 2002-03-28 | 2003-10-02 | Compaq Information Technologies Group, L.P. | Enumeration, manageability, and security of a KVM extension device |
CN1822204B (zh) * | 2002-05-13 | 2010-10-13 | 特科2000国际有限公司 | 对便携式数据存储设备中存储的数据进行压缩及解压缩的系统和方法 |
ES2256470T3 (es) | 2002-05-13 | 2006-07-16 | Trek 2000 International Ltd | Sistema y aparato para comprimir y descomprimir datos almacenados destinados a un dispositivo portatil de almacenamiento de datos. |
US7478235B2 (en) * | 2002-06-28 | 2009-01-13 | Microsoft Corporation | Methods and systems for protecting data in USB systems |
US6745264B1 (en) * | 2002-07-15 | 2004-06-01 | Cypress Semiconductor Corp. | Method and apparatus for configuring an interface controller wherein ping pong FIFO segments stores isochronous data and a single circular FIFO stores non-isochronous data |
TW588243B (en) * | 2002-07-31 | 2004-05-21 | Trek 2000 Int Ltd | System and method for authentication |
US6985977B2 (en) | 2002-08-30 | 2006-01-10 | National Instruments Corporation | System and method for transferring data over a communication medium using double-buffering |
US7069373B2 (en) * | 2002-11-07 | 2006-06-27 | Nec Electronics America, Inc. | USB endpoint controller flexible memory management |
JP4050135B2 (ja) * | 2002-11-25 | 2008-02-20 | 富士通株式会社 | 通信デバイス、ホスト装置、及び通信方法 |
US6959355B2 (en) * | 2003-02-24 | 2005-10-25 | Standard Microsystems Corporation | Universal serial bus hub with shared high speed handler |
US7185126B2 (en) * | 2003-02-24 | 2007-02-27 | Standard Microsystems Corporation | Universal serial bus hub with shared transaction translator memory |
US7823133B2 (en) * | 2003-04-23 | 2010-10-26 | Stmicroelectronics, Inc. | Smart card device and method for debug and software development |
US7044390B2 (en) * | 2003-06-02 | 2006-05-16 | Stmicroelectronics, Inc. | Smart card emulator and related methods using buffering interface |
US7127649B2 (en) * | 2003-06-09 | 2006-10-24 | Stmicroelectronics, Inc. | Smartcard test system and related methods |
CN1302382C (zh) * | 2003-06-13 | 2007-02-28 | 联想(北京)有限公司 | 基于usb闪存盘存储介质私有空间的验证方法 |
TWI296083B (en) * | 2003-09-29 | 2008-04-21 | Sharp Kk | Communication controller, host-side controller, communication system, usb system, communication equipment, communication method, packet-based communication method, packet-based communication program, and storage medium |
US20050097198A1 (en) * | 2003-10-08 | 2005-05-05 | Getler Robert M. | Printer monitoring system and method |
US7562360B2 (en) * | 2003-12-01 | 2009-07-14 | Texas Instruments Incorporated | Method and system for firmware downloads |
US20060020721A1 (en) * | 2004-05-26 | 2006-01-26 | Microchip Technology Incorporated | Configurable ping-pong buffers for USB buffer descriptor tables |
US20050278472A1 (en) * | 2004-06-14 | 2005-12-15 | Gierke Justin T | USB extender |
US20060059293A1 (en) * | 2004-09-14 | 2006-03-16 | Henry Wurzburg | Universal serial bus switching hub |
US20060227759A1 (en) * | 2004-09-14 | 2006-10-12 | Bohm Mark R | Peripheral Sharing USB Hub |
US8458280B2 (en) * | 2005-04-08 | 2013-06-04 | Intel-Ne, Inc. | Apparatus and method for packet transmission over a high speed network supporting remote direct memory access operations |
US20060268691A1 (en) * | 2005-05-31 | 2006-11-30 | International Business Machines Corporation | Divide and conquer route generation technique for distributed selection of routes within a multi-path network |
US7978719B2 (en) * | 2005-06-10 | 2011-07-12 | International Business Machines Corporation | Dynamically assigning endpoint identifiers to network interfaces of communications networks |
US7889762B2 (en) * | 2006-01-19 | 2011-02-15 | Intel-Ne, Inc. | Apparatus and method for in-line insertion and removal of markers |
US7782905B2 (en) * | 2006-01-19 | 2010-08-24 | Intel-Ne, Inc. | Apparatus and method for stateless CRC calculation |
US7433990B2 (en) * | 2006-01-24 | 2008-10-07 | Standard Microsystems Corporation | Transferring system information via universal serial bus (USB) |
US8316156B2 (en) * | 2006-02-17 | 2012-11-20 | Intel-Ne, Inc. | Method and apparatus for interfacing device drivers to single multi-function adapter |
US7849232B2 (en) | 2006-02-17 | 2010-12-07 | Intel-Ne, Inc. | Method and apparatus for using a single multi-function adapter with different operating systems |
US8078743B2 (en) * | 2006-02-17 | 2011-12-13 | Intel-Ne, Inc. | Pipelined processing of RDMA-type network transactions |
US7526590B2 (en) * | 2006-03-31 | 2009-04-28 | Intel Corporation | Systems and methods for remote pipe resource management in wireless adapters |
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 |
US20080005262A1 (en) * | 2006-06-16 | 2008-01-03 | Henry Wurzburg | Peripheral Sharing USB Hub for a Wireless Host |
US20080034106A1 (en) * | 2006-08-02 | 2008-02-07 | Sanjay Bakshi | Reducing power consumption for bulk data transfers |
US8315269B1 (en) | 2007-04-18 | 2012-11-20 | Cypress Semiconductor Corporation | Device, method, and protocol for data transfer between host device and device having storage interface |
TWI448902B (zh) * | 2007-08-24 | 2014-08-11 | Cypress Semiconductor Corp | 具頁存取基礎處理器介面之橋接裝置 |
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 |
US8090894B1 (en) | 2007-09-21 | 2012-01-03 | Cypress Semiconductor Corporation | Architectures for supporting communication and access between multiple host devices and one or more common functions |
US7895387B1 (en) | 2007-09-27 | 2011-02-22 | Cypress Semiconductor Corporation | Devices and methods for sharing common target device with two different hosts according to common communication protocol |
US7908421B2 (en) * | 2008-09-30 | 2011-03-15 | Intel Corporation | Universal serial bus endpoint context caching |
US8166225B2 (en) * | 2009-04-09 | 2012-04-24 | Tenx Technology Inc. | USB interface data transmission device and USB interface data communication system |
JP5456434B2 (ja) | 2009-10-22 | 2014-03-26 | ルネサスエレクトロニクス株式会社 | パイプ調停回路、パイプ調停方法 |
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 |
US9807161B2 (en) * | 2013-09-16 | 2017-10-31 | Axis Ab | Distributed events in an access control system |
CN105335320B (zh) | 2014-08-14 | 2020-05-15 | 恩智浦美国有限公司 | 具有可动态配置的端点分配的usb设备 |
US20160232119A1 (en) * | 2014-09-17 | 2016-08-11 | Thomson Licensing | SHARING MEMORY BETWEEN USB Enabled Devices |
GB2539445A (en) | 2015-06-16 | 2016-12-21 | Nordic Semiconductor Asa | Data processing |
US20220070018A1 (en) * | 2020-09-02 | 2022-03-03 | Cypress Semiconductor Corporation | Usb type-c/pd port real time monitoring and control in an automotive or industrial ecosystem |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0648822B2 (ja) * | 1985-03-04 | 1994-06-22 | 株式会社日立製作所 | デイジタル伝送系における異常処理方法 |
US4858112A (en) * | 1985-12-17 | 1989-08-15 | General Electric Company | Interface comprising message and protocol processors for interfacing digital data with a bus network |
US5058110A (en) * | 1989-05-03 | 1991-10-15 | Ultra Network Technologies | Protocol processor |
US5243596A (en) * | 1992-03-18 | 1993-09-07 | Fischer & Porter Company | Network architecture suitable for multicasting and resource locking |
US5438575A (en) * | 1992-11-16 | 1995-08-01 | Ampex Corporation | Data storage system with stale data detector and method of operation |
-
1998
- 1998-01-07 US US09/004,003 patent/US6145045A/en not_active Expired - Lifetime
-
1999
- 1999-01-06 KR KR1019990000088A patent/KR100290597B1/ko not_active IP Right Cessation
- 1999-01-07 DE DE19900331A patent/DE19900331A1/de not_active Withdrawn
- 1999-12-22 US US09/469,663 patent/US6173355B1/en not_active Expired - Lifetime
Cited By (12)
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 | 精工爱普生株式会社 | 数据传送控制装置、电子装置和数据传送控制方法 |
US8078813B2 (en) | 2004-09-30 | 2011-12-13 | Emc Corporation | Triangular asynchronous replication |
US8185708B2 (en) | 2004-09-30 | 2012-05-22 | Emc Corporation | Host implementation of triangular asynchronous replication |
DE102005036291B4 (de) | 2004-09-30 | 2019-03-07 | Emc Corporation | Verfahren zum Speichern von Wiederherstelldaten in einem System |
DE102005036291B9 (de) * | 2004-09-30 | 2019-08-29 | Emc Corporation | Verfahren zum Speichern von Wiederherstelldaten in einem System |
Also Published As
Publication number | Publication date |
---|---|
US6173355B1 (en) | 2001-01-09 |
KR100290597B1 (ko) | 2001-05-15 |
KR19990067733A (ko) | 1999-08-25 |
US6145045A (en) | 2000-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
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 | |
DE3587493T2 (de) | Betriebssicheres Datenverarbeitungsbussystem. | |
DE19900245B4 (de) | Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host | |
DE68926725T2 (de) | Atomare Sequenz für Phasenübergänge | |
DE102004004796B4 (de) | Vorrichtung zur Datenübertragung zwischen Speichern | |
DE19900345A9 (de) | Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses | |
DE19900290B4 (de) | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung | |
DE69327703T2 (de) | Mikroprozessor mit Busbreite-Wechselfunktion | |
DE3114961C2 (de) | ||
DE3204905C2 (de) | ||
DE3685876T2 (de) | Meister-sklave-mikroprozessorsystem mit einem virtuellen speicher. | |
DE3855599T2 (de) | System, das die Auswechselbarkeit der peripheren Einheiten ermöglicht | |
DE2829550C2 (de) | ||
DE3152435C2 (de) | ||
DE68927394T2 (de) | Paritätsprüfgerät | |
DE69507360T2 (de) | Parallelschlussschnittstellenschaltkreise in Rechnersystemen | |
DE2854397A1 (de) | Pufferspeichereinheit fuer ein datenverarbeitungssystem | |
DE19900369A9 (de) | Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus | |
DE69726302T2 (de) | Busschnittstellensteuerungsschaltung | |
DE3851676T2 (de) | Datenpaketierungsverfahren. | |
DE3889511T2 (de) | Speicherung von Grenzzeitüberschreitungen und Quittungsantworten nach Ein-/Ausgabebefehlen. | |
DE19900251B4 (de) | Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals |
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 |
|
8125 | Change of the main classification |
Ipc: G06F 13/00 |
|
8130 | Withdrawal |