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ützung

Info

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
Application number
DE19900331A
Other languages
English (en)
Other versions
DE19900331A9 (de
Inventor
Ohad Folik
David Brief
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Semiconductor Corp
Original Assignee
National Semiconductor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Publication of DE19900331A9 publication Critical patent/DE19900331A9/de
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19900331A1 publication Critical patent/DE19900331A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements 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/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1835Buffer management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/901Buffering arrangements using storage descriptor, e.g. read or write pointers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements 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/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1829Arrangements specially adapted for the receiver end
    • H04L1/1848Time-out mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L2001/0092Error control systems characterised by the topology of the transmission link
    • H04L2001/0094Bus

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).
Endpunkt-Controller
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.
Serielle Schnittstellen-Maschine
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.
Endpunktkanal-Controller
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.
Steuerwort
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.
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.
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.
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.
Register
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
Endpunktkanal-Zustände
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.
Bulk-Endpunkt-Operation
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:
  • - 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 Datenprozessor die erste Datenmenge in dem ersten Datenspeicherelement und die zweite Datenmenge in dem zweiten Datenspeicherelement erzeugt, und wobei der Controller in dem Zeiger-Datenspeicherelement einen ersten Zeiger auf das erste Datenspeicherelement erzeugt, die erste Datenmenge sendet, und anschließend ein er­ stes Signal empfängt, welches ein Host-Signal von dem USB-Host oder ein Unterbre­ chungssignal ist;
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:
  • - 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 Datenprozessor die erste Datenmenge in dem ersten Datenspeicherelement und die zweite Datenmenge in dem zweiten Datenspeicherelement erzeugt, und wobei der Controller in dem Zeiger-Datenspeicherelement einen ersten Zeiger auf das erste Datenspeicherelement erzeugt, die erste Datenmenge sendet, und anschließend ein er­ stes Signal empfängt, welches ein Host-Signal von dem USB-Host oder ein Unterbre­ chungssignal ist;
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:
  • - 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 in dem Zeiger-Datenspeicherelement einen ersten Zeiger auf das erste Datenspeicherelement erzeugt, die erste Datenmenge in das erste Daten­ speicherelement empfängt und anschließend erkennt, ob ein erster Fehler aufgetreten ist;
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:
  • - 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 in dem Zeiger-Datenspeicherelement einen ersten Zeiger auf das erste Datenspeicherelement erzeugt, die erste Datenmenge in das erste Daten­ speicherelement empfangt, und anschließend erkennt, ob ein erster Fehler aufgetreten ist;
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.
DE19900331A 1998-01-07 1999-01-07 Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung Withdrawn DE19900331A1 (de)

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)

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

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (12)

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