DE19900245B4 - Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host - Google Patents

Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host Download PDF

Info

Publication number
DE19900245B4
DE19900245B4 DE19900245A DE19900245A DE19900245B4 DE 19900245 B4 DE19900245 B4 DE 19900245B4 DE 19900245 A DE19900245 A DE 19900245A DE 19900245 A DE19900245 A DE 19900245A DE 19900245 B4 DE19900245 B4 DE 19900245B4
Authority
DE
Germany
Prior art keywords
data
storage element
data storage
usb
controller
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.)
Expired - Fee Related
Application number
DE19900245A
Other languages
English (en)
Other versions
DE19900245A1 (de
Inventor
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
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19900245A1 publication Critical patent/DE19900245A1/de
Application granted granted Critical
Publication of DE19900245B4 publication Critical patent/DE19900245B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices

Abstract

Vorrichtung zum Senden von Daten von einem USB-Endpunkt (105) an einen USB-Host (115) über einen isochronen USB-Endpunktkanal (110),
gekennzeichnet durch
ein Pufferdatenspeicherelement (120),
ein Zeigerdaten-Speicherelement (125),
einen Zeiger-Controller (130), der im Zeigerdaten-Speicherelement (125) einen Adressenzeiger speichert, der dem Pufferdaten-Speicherelement entspricht,
ein Zählerdaten-Speicherelement (135), das einen Zählerwert speichert,
einen Datenprozessor (140), der eine Mehrzahl von Daten im Pufferdaten-Speicherelement erzeugt, und
einen Controller (150), der den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem Adressenzeiger ist, und dann die Mehrzahl von Daten schickt.

Description

  • Die Erfindung betrifft eine Vorrichtung und ein Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host nach dem Oberbegriff des Anspruchs 1 und 23.
  • Ein universeller serieller Bus (=USB= Universal Serial Bus) ist eine Standard-Pheripheriegerätschnittstelle für den Anschluß von Personalcomputern an viele verschiedene Geräte: z.B. digitale Telefonleitungen, Monitore, Modems, Mäuse, Drucker, Scanner, Spiel-Controller, Tastaturen und andere Peripheriegeräte, vgl. beispielsweise die Universal Serial Bus Specification Revision 1.0 vom 15.01.1996, www.peritek.com/matterhorn_usb10doc.pdf. Der USB ersetzt somit vorhandene Schnittstellen wie etwa die seriellen RS-232C-Ports, parallele Ports, PS/2-Schnittstellen sowie Game/MIDI-Ports.
  • Bei dem USB sind sämtliche angeschlossenen Vorrichtungen über einen einzelnen Verbindertyp unter Verwendung einer in Stufen geordneten Sterntopologie mit einem Personalcomputer verbunden. Ein Host-Personalcomputer enthält einen einzigen USB-Controller. Der Host-Controller bildet die Schnittstelle zwischen dem USB-Netz und dem Host-Personalcomputer. Der Host-Controller steuert sämtliche Zugriffe auf die USB-Betriebsmittel und überwacht die Bustopologie. Ein USB-Netzknoten stellt USB-Anschlußpunkte für USB-Vorrichtungen bereit.
  • Eine USB-Funktion ist eine USB-Vorrichtung, die Informationen auf dem Bus senden und empfangen kann. Eine Funktion kann eine oder mehrere Konfigurationen besitzen, wovon jede die Schnittstellen definiert, die die Vorrichtung bilden. Jede Schnittstelle ist ihrerseits aus einem oder mehreren Endpunkten gebildet.
  • Ein Endpunkt ist die letzte Datenquelle oder -senke. Ein Endpunktkanal ermöglicht die Bewegung von Daten zwischen dem USB und dem Speicher und vervollständigt den Pfad zwischen dem USB-Host und dem Funktionsendpunkt.
  • Die nachveröffentlichte WO 99108196 offenbart eine Vorrichtung zum Steuern eines USB-Endpunktkanals, der mit weiteren USB-Endpunktkanälen einen gemeinsamen FIFO-Puffer nutzt. Hierzu speichert eine Protokollsteuer- und Statuseinheit PCS den USB-Zustand, während eine Protokollablaufsteuereinheit PSM die Übertragung zwischen der Vorrichtung und einem USB-Host steuert. Dabei werden in der Protokollsteuer- und Statuseinheit PCS eine FIFO-Adresse und ein Bytezähler gespeichert. Die FIFO-Adresse zeigt auf den nächsten Eintrag im FIFO-Pufer, der gesendet werden soll, bzw. der empfangen worden ist. Der Bytezähler zeigt die Anzahl der im FIFO-Puffer gespeicherten Bytes an und wird inkrementiert, wenn ein Byte hinzugefügt wird, und dekrementiert, wenn ein Byte ausgelesen wird.
  • Die nachveröffentlichte DE 698 01 669 T2 zeigt ein Computersystem mit einem Erweiterungsbus, z.B. einem PCI-Bus, an den einerseits Standardkomponenten, z.B. eine CPU und ein Systemspeicher und andererseits ein USB-Host und eine damit verbundene Datenbereitstellung angekoppelt sind. Die Datenbereitstellung wird über den Erweiterungsbus mit Daten versorgt und leitet diese an einen Puffer im USB-Host weiter. Besteht ein Unterschied in der Taktrate zwischen der Datenbereitstellung und dem USB-Host, kann es zu einem Über- oder Unterlauf des Puffers kommen. Um den Über- oder Unterlauf des Puffers zu vermeiden, wird dessen Füllstand im USB-Host überwacht. Bei Über- bzw. Unterschreiten eines vorbestimmten Werts veranlaßt der USB-Host über einen Takt-Führe/Folge-Leiter eine Änderung des Takts der Datenbereitstellung.
  • Jeder Endpunkt ist eine adressierbare Entität auf dem USB und muß auf IN- und auf OUT-Tokens vom USB-Host (typischerweise ein PC) antworten. Die IN-Tokens geben an, daß der Host den Empfang von Informationen von einem Endpunkt angefordert hat, während die OUT-Tokens angeben, daß der Host im Begriff ist, Informationen an einen Endpunkt zu senden.
  • Bei Erfassung eines an einen Endpunkt adressierten IN-Token ist der Endpunkt für die Antwort durch ein Datenpaket verantwortlich. Falls der Endpunkt momentan blockiert (stalled) ist, wird ein STALL-Quittierungspaket geschickt. Falls der Endpunkt freigegeben (enabled) ist, jedoch keine Daten vorhanden sind, wird ein negatives Quittierungspaket (NAK-Paket) geschickt.
  • Ähnlich ist der Endpunkt bei Erfassung eines an einen Endpunkt adressierten OUT-Token für den Empfang eines vom Host geschickten Datenpakets und für dessen Speicherung in einen Puffer verantwortlich. Falls der Endpunktkanal momentan blockiert ist, wird am Ende der Datenübertragung ein STALL-Quittierungspaket geschickt. Falls der Endpunktkanal momentan gesperrt (disabled) ist, wird am Ende der Datenübertragung kein Quittierungspaket geschickt. Falls der Endpunktkanal freigegeben ist, jedoch kein Puffer vorhanden ist, in dem Daten gespeichert werden können, wird ein NAK-Paket geschickt.
  • Ein gesperrter Endpunkt oder gesperrte Endpunkte, die momentan nicht auf einen Endpunktkanal abgebildet sind, antworten nicht auf IN-, OUT- oder SETUP-Tokens.
  • Eine Anzahl von Anbietern haben Implementierungen des USB-Standards entwickelt. Beispielsweise hat die Intel Corp. die 8×931Ax-, 8×931Hx-, 8×930Ax- und 8×930Hx-Vorrichtungen freigegeben.
  • Diese Vorrichtungen besitzen jedoch eine Anzahl von Problemen. Sie verarbeiten nicht die Rahmenstart-Pakete für isochrone Daten. Es besteht ein Bedarf an einer Vorrichtung, die dies tut, so daß Fehler einfacher erfaßt werden können.
  • Sie sehen keinen Hardware-Support für die Datensynchronisation vor. Es besteht ein Bedarf hierfür, damit Paketübertragungen synchronisiert oder verzögert werden können.
  • Die erforderliche Puffergröße für isochrone Daten kann in Abhängigkeit von der Anwendung stark variieren. Beispielsweise erfordern Telephonanwendungen 8 Bytes, während Videoanwendungen 960 Bytes erfordern. Die Intel-Vorrichtungen besitzen für jeden Endpunkt einen hierfür vorgesehenen Puffer.
  • Aufgabe der Erfindung ist es, eine Vorrichtung und ein Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host nach dem Oberbegriff des Anspruchs 1 bzw. 23 zu schaffen, wobei eine größere Flexibilität bei der Definition der Pufferfähigkeiten der Endpunkte ermöglicht wird.
  • Diese Aufgabe wird entsprechend den Merkmalen des Anspruchs 1 bzw. 23 gelöst.
  • Die Erfindung hat darüber hinaus den Vorteil, daß Fehler einfacher erfaßt und Paketübertragungen synchronisiert oder verzögert werden können.
  • Weitere Ausgestaltungen der Erfindung sind der nachfolgenden Beschreibung und den Unteransprüchen zu entnehmen.
  • Die Erfindung wird nachstehend anhand von in den beigefügten Abbildungen dargestellten Ausführungsbeispielen näher erläutert.
  • 1 ist ein Blockschaltplan einer Ausführung zur Datenübertragung der Erfindung;
  • 2 ist ein Blockschaltplan einer weiteren Ausführung zur Datenübertragung der Erfindung;
  • 3 ist ein Blockschaltplan einer Ausführung zur Takteinstellung der Erfindung;
  • 4 ist ein Blockschaltplan einer Ausführung zum Datenempfang der Erfindung;
  • 5 ist ein Blockschaltplan einer weiteren Ausführung zum Datenempfang der Erfindung; und
  • 6 ist ein Blockschaltplan einer Ausführung eines gemeinsam genutzten Pufferspeichers der Erfindung.
  • 1 zeigt eine allgemeine Ausführung eines Aspekts der vorliegenden Erfindung. 1 zeigt einen Endpunkt 105, einen Endpunktkanal 110, einen Host 115, einen ersten Speicher 120, einen zweiten Speicher 122, einen Zeigerspeicher 125, einen Zeiger-Controller 130, einen Zählerspeicher 135, einen Datenprozessor 140 und einen Controller 150. Der Zeiger-Controller 130 speichert im Zeigerspeicher 125 einen Adressenzeiger, der einem ersten Speicher 120 entspricht. Der Zählerspeicher 135 speichert einen Zählerwert. Der Datenprozessor 140 erzeugt ein erstes Datenpaket im ersten Speicher 120. Der Controller 150 inkrementiert wahlweise den Zählerwert, bis er gleich dem Adressenzeiger ist, und sendet dann das erste Datenpaket. Alternativ ist der Endpunkt 105 einer von mehreren Endpunkten am Ende eines Endpunktkanals 110, die die Speicher, die Controller und den Datenprozessor gemeinsam nutzen.
  • Die in 1 gezeigte Ausführung arbeitet folgendermaßen. Der Zählerwert beginnt bei null. Falls der Adressenzeiger ebenfalls null ist, schickt der Controller 150 das erste Datenpaket. Andernfalls inkrementiert der Controller 150 wahlweise den Zählerwert, bis er gleich dem Adressenzeiger ist, und schickt dann das erste Datenpaket. In einer zweckmäßigen Ausführung wechselt der Adressenzeiger zwischen dem ersten Speicher 120 und dem zweiten Speicher 122. Somit findet vor dem Verschicken höchstens ein Inkrementieren statt.
  • Falls mehr als eine Dateneinheit zu verschicken sind, erzeugt der Datenprozessor 140 ein zweites Datenpaket im zweiten Speicher 122. Nachdem der Controller 150 das erste Datenpaket geschickt hat, speichert der Zeiger-Controller 130 im Zeigerspeicher 125 einen zweiten Adressenzeiger, der dem zweiten Speicher 122 entspricht, ferner inkrementiert der Controller 150 wahlweise den Zählerwert, bis er gleich dem zweiten Adressenzeiger ist, und schickt dann das zweite Datenpaket. In einer zweckmäßigen Ausführung wechselt der Adressenzeiger zwischen dem ersten Speicher 120 und dem zweiten Speicher 122. Damit kann das Schicken der beiden Pakete synchronisiert werden.
  • Wenn noch mehr Datenpakete zu verschicken sind, erzeugt der Datenprozessor 140 dann, wenn der Controller 150 das erste Datenpaket verschickt hat, ein drittes Datenpaket im ersten Speicher 120. Nachdem der Controller 150 das zweite Datenpaket geschickt hat, speichert der Zeiger-Controller 130 im Zeigerspeicher 125 einen dritten Adressenzeiger, der dem ersten Speicher 120 entspricht, ferner inkrementiert der Controller 150 wahlweise den Zählerwert, bis er gleich dem dritten Adressenzeiger ist, und schickt dann das dritte Datenpaket. Dies zeigt, wie in einer zweckmäßigen Ausführung eine Folge von Paketen in zwei Puffern synchronisiert werden kann.
  • Obwohl diese Beschreibung den Ausdruck "Datenpaket" verwendet, ist beabsichtigt, daß die Erfindung auch auf mehrere Dateneinheiten Anwendung findet, selbst wenn die Dateneinheiten nicht in einem diskreten Paket enthalten sind.
  • 2 zeigt eine allgemeine Ausführung eines weiteren Aspekts der vorliegenden Erfindung. 2 zeigt einen Endpunkt 205, einen Endpunktkanal 210, einen Host 215, einen ersten Speicher 220, einen zweiten Speicher 222, einen Zeigerspeicher 225, einen Zeiger-Controller 230, einen Zählerspeicher 235, einen Datenprozessor 240, einen Controller 250 und einen Verzögerungsspeicher 260. Der Datenprozessor 240 erzeugt ein erstes Datenpaket im ersten Speicher 220. Der Verzögerungsspeicher 260 speichert einen dem ersten Datenpaket entsprechenden Verzögerungswert. Der Zählerspeicher 235 speichert einen Zählerwert. Der Controller 250 inkrementiert wahlweise den Zählerwert, bis er gleich dem Verzögerungswert ist, und schickt dann das erste Datenpaket. Alternativ ist der Endpunkt 205 einer von mehreren Endpunkten am Ende eines Endpunktkanals 210, die die Speicher, die Controller und den Datenprozessor gemeinsam nutzen.
  • Die in 2 gezeigte Ausführung arbeitet in der folgenden Weise. Der Zählerwert beginnt bei null. Falls der Verzögerungswert ebenfalls null ist, schickt der Controller 250 anschließend das erste Datenpaket. Andernfalls inkrementiert der Controller 250 wahlweise den Zählerwert, bis er gleich dem Adressenzeiger ist, und schickt dann das erste Datenpaket. Dadurch kann das erste Datenpaket um eine Zeitperiode verzögert werden.
  • Falls mehr als eine Dateneinheit verschickt werden sollen, speichert der Zeiger-Controller 230 im Zeigerspeicher 225 einen dem zweiten Speicher 222 entsprechenden Adressenzeiger. Der Datenprozessor 240 erzeugt im zweiten Speicher 222 ein zweites Datenpaket. Nachdem der Controller 250 das erste Datenpaket geschickt hat, inkrementiert er wahlweise den Zählerwert, bis der Zählerwert gleich dem Adressenzeiger ist, und schickt dann das zweite Datenpaket. Dies zeigt, wie das zweite Datenpaket in der Weise synchronisiert werden kann, daß es dem ersten Datenpaket folgt.
  • Falls noch mehr Datenpakete verschickt werden sollen, erzeugt der Datenprozessor 250 dann, wenn der Controller 250 das erste Datenpaket geschickt hat, ein drittes Datenpaket im ersten Speicher 220. Nachdem der Controller 250 das zweite Datenpaket geschickt hat, speichert der Zeiger-Controller 230 im Zeigerspeicher 225 einen dem ersten Speicher 220 entsprechenden zweiten Adressenzeiger, ferner inkrementiert der Controller 250 wahlweise den Zählerwert, bis er gleich dem zweiten Adressenzeiger ist, und schickt dann das dritte Datenpaket. Dies zeigt, wie in einer zweckmäßigen Ausführung mit zwei Puffern mehrere Datenpakete synchronisiert werden können.
  • 3 zeigt eine allgemeine Ausführung eines weiteren Aspekts der vorliegenden Erfindung. 3 zeigt einen Endpunkt 305, einen Endpunktkanal 310, einen Host 315, einen Controller 350, einen Referenztaktsignalgenerator 370 und einen Signalprozessor 375. Der Referenztaktsignalgenerator 370 erzeugt ein Referenztaktsignal mit einer Referenztaktfrequenz. Der Signalprozessor 375 empfängt ein USB-Taktsignal und erfaßt dessen Frequenz. Der Controller 350 sendet ein Takterhöhungssignal, falls die Referenztaktfrequenz höher als die USB-Taktfrequenz ist, oder ein Takterniedrigungssignal, falls die Referenztaktfrequenz niedriger als die USB-Taktfrequenz ist.
  • Die in 3 gezeigte Ausführung arbeitet folgendermaßen. Der Host 315 schickt und empfängt Datenpakete über den Kanal 310 mit der USB-Taktfrequenz. Der Signalprozessor 375 erfaßt die USB-Taktfrequenz. Der Controller 350 vergleicht die USB-Taktfrequenz mit der Referenztaktfrequenz und erzeugt das Taktsteuersignal. Der Host 315 empfängt das Taktsteuersignal und kann die USB-Taktfrequenz entsprechend einstellen.
  • In einer zweckmäßigen Ausführung werden die Signale durch das Senden von Paketen zwischen dem Endpunkt 305 und dem Host 315 angegeben.
  • 4 veranschaulicht eine allgemeine Ausführung eines weiteren Aspekts der vorliegenden Erfindung. 4 zeigt einen Endpunkt 405, einen Endpunktkanal 410, einen Host 415, einen ersten Speicher 420, einen zweiten Speicher 422, einen Zeigerspeicher 425, einen Zeiger-Controller 430, einen Controller 450, einen Empfänger 480, einen Rahmennummernspeicher 485 und einen Schalt- oder Toggle-Speicher 490. Der Empfänger 480 empfängt sequentiell ein erstes Datenpaket mit einer ersten Sequenznummer und ein zweites Datenpaket mit einer zweiten Sequenznummer. Der Controller 450 erzeugt eine Unterbrechung, falls die Differenz zwischen der ersten Sequenznummer und der zweiten Sequenznummer größer als drei ist. Der erste Speicher 420 kann das erste Datenpaket speichern. Der zweite Speicher 422 kann das zweite Datenpaket speichern. Alternativ ist der Endpunkt 405 einer von mehreren Endpunkten am Ende eines Endpunktkanals 410, die die Speicher, die Controller und den Empfänger gemeinsam nutzen.
  • In einer zweckmäßigen Ausführung schickt der Host 415 Rahmungspakete, die Rahmennummern enthalten. Der Controller 450 kann bestimmen, ob Datenpakete fehlen, indem er die empfangene Rahmennummer mit der Rahmennummer vergleicht, die er aufgrund der vorher empfangenen Rahmennummern erwartet.
  • Außer der Erfassung fehlender Datenpakete kann die in 4 gezeigte Ausführung empfangene Datenpakete in den Speicher schreiben. Der Zeiger-Controller 430 speichert im Zeigerspeicher 425 einen dem ersten Speicher 420 entsprechenden Adressenzeiger. Der Schaltspeicher 490 speichert einen Schaltwert.
  • Die in 4 gezeigte Ausführung arbeitet folgendermaßen. Der Empfänger 480 empfängt ein Rahmungspaket mit einer Rahmennummer. Der Controller 450 speichert die Rahmennummer im Rahmennummernspeicher 485. Falls der Schaltwert gesetzt ist und falls wenigstens ein Teil der Rahmennummer wenigstens einem Teil des Adressenzeigers entspricht, schreibt der Controller 450 das erste Datenpaket in den ersten Speicher 420. Falls der Schaltwert nicht gesetzt ist, schreibt der Controller 450 das erste Datenpaket in den ersten Speicher 420, wobei dann, wenn nicht wenigstens ein Teil der Rahmennummer wenigstens einem Teil des Adressenzeigers entspricht, der Controller einen Fehlermerker erzeugt. Dadurch können Synchronisationsfehler einfach erfaßt werden.
  • In einer zweckmäßigen Ausführung ist der Adressenzeiger ein 1-Bit-Steuerwortzeiger, wobei der verglichene Teil der Rahmennummer das niedrigstwertige Bit ist.
  • 5 zeigt eine allgemeine Ausführung eines weiteren Aspekts der vorliegenden Erfindung. 5 zeigt einen Endpunkt 505, einen Endpunktkanal 510, einen Host 515, einen ersten Speicher 520, einen zweiten Speicher 522, einen Zeigerspeicher 525, einen Zeiger-Controller 530, einen Zählerspeicher 535, einen Controller 550, einen Verzögerungsspeicher 560 und einen Empfänger 580. Der Empfänger 580 empfängt mehrere Datenpakete und Verzögerungsinformationen, die einem spezifischen Datenpaket der mehreren Pakete entsprechen. Der Verzörgerungsspeicher 560 speichert die Verzögerungsinformationen. Der Zählerspeicher 535 speichert einen Zählerwert. Der Controller 550 inkrementiert wahlweise den Zählerwert, bis der Zählerwert gleich dem Verzögerungswert ist, und schreibt dann das spezifische Datenpaket in den ersten Speicher 520. Alternativ ist der Endpunkt 505 einer von mehreren Endpunkten am Ende eines Endpunktkanals 510, die die Speicher, die Controller und den Empfänger gemeinsam nutzen.
  • Die in 5 gezeigte Ausführung arbeitet folgendermaßen. Der Zählerwert beginnt bei null. Falls der Verzögerungswert ebenfalls null ist, schreibt der Controller 550 das erste Datenpaket in den ersten Speicher 520. Andernfalls inkrementiert der Controller 550 wahlweise den Zählerwert, bis er gleich dem Verzögerungswert ist, woraufhin er das erste Datenpaket in den ersten Speicher 520 schreibt. Dadurch kann das erste Datenpaket um eine Zeitperiode verzögert werden.
  • Falls mehr als eine Dateneinheit zu schreiben sind, ist der zweite Speicher 522 in der Weise konfiguriert, daß er ein zweites Datenpaket speichert. Ein Zeiger-Controller 530 speichert im Zeigerspeicher 525 einen dem zweiten Speicher 522 entsprechenden Adressenzeiger. Der Empfänger 580 empfängt ein zweites Datenpaket. Nachdem der Controller 550 das erste Datenpaket geschrieben hat, inkrementiert er wahlweise den Zählerwert, bis der Zählerwert gleich dem Adressenzeiger ist, und schreibt dann das zweite Datenpaket in den zweiten Speicher 522. Das zeigt, wie das zweite Datenpaket so synchronisiert werden kann, daß es dem ersten Datenpaket folgt.
  • Falls noch mehr Dateneinheiten zu verschicken sind, empfängt der Empfänger 580 ein zweites Datenpaket. Nachdem der Controller 550 das erste Datenpaket geschrieben hat, speichert der Zeiger-Controller 530 im Zeigerspeicher 525 einen zweiten Adressenzeiger, der dem ersten Speicher 520 entspricht. Nachdem der Controller 550 das zweite Datenpaket geschrieben hat, inkrementiert er wahlweise den Zählerwert, bis der Zählerwert gleich dem zweiten Adressenzeiger ist, und schreibt dann das dritte Datenpaket in den ersten Speicher 520. Dies zeigt, wie in einer zweckmäßigen Ausführung mit zwei Puffern mehrere Datenpakete synchronisiert werden können.
  • 6 zeigt eine allgemeine Ausführung eines weiteren Aspekts der vorliegenden Erfindung. 6 zeigt einen Host 610, ein Modul 630, mehrere Endpunktkanäle 620, mehrere Endpunkte 640, eine entsprechende Mehrzahl von Steuerspeichern 650, einen Pufferspeicher 660 und einen Controller 670. Der Pufferspeicher 660 ist so konfiguriert, daß er isochrone Datenpakete speichert. Der Pufferspeicher 660 wird von den Endpunkten 640 gemeinsam genutzt.
  • In einer zweckmäßigen Ausführung enthält der Pufferspeicher 660 einen Doppelpuffer, der in der Weise konfiguriert ist, daß er zwei isochrone Datenpakete speichert.
  • Die in 6 gezeigte Ausführung arbeitet folgendermaßen. Der Host 610 sendet ein Token auf einem der Endpunktkanäle 620. Der Controller 670 untersucht den Steuerspeicher für den entsprechenden Endpunkt. Falls der Endpunkt Daten empfangen soll, überträgt der Controller 670 ein Datenpaket vom Endpunktkanal an den Pufferspeicher 660. Falls der Endpunkt Daten schicken soll, überträgt der Controller 670 ein Datenpaket vom Pufferspeicher 660 an den Endpunktkanal.
  • Obwohl diese Beschreibung den Ausdruck "Speicher" verwendet, soll die Erfindung auch auf andere Typen von Datenablageelementen anwendbar sein. Diese allgemeine Beschreibung wird im folgenden Abschnitt, der zweckmäßige Ausführungen veranschaulicht, genauer erläutert.
  • In einer zweckmäßigen Ausführung ist die obenbeschriebene Erfindung in Form von Teilen eines USB-Knoten-Schnittstellenmoduls (= UNIM = USB node Interface module) implementiert. Die Abschnitte des UNIM, die für die Erfindung relevant sind, umfassen einen Endpunkt-Controller, einen Synchronisationsträger, ein Steuerwort, verschiedene Register und eine isochrone Endpunktoperation. Diese Abschnitte sind der USB-Knoten-Schnittstellenarchitektur-Spezifikation, Überarbeitung 0.6, entnommen.
  • Endpunkt-Controller
  • In einer zweckmäßigen Ausführung handhabt der Endpunkt-Controller die auf den Endpunkt bezogenen Operationen einschließlich des Endpunktkanal-Zustands, der Pufferung und der Übertragungen. In einer zweckmäßigen Ausführung können zu einem gegebenen Zeitpunkt bis zu sechzehn Endpunktkanäle unterstützt werden. Jedem Endpunktkanal können bis zu zwei Puffer im Kernbus-Adressenraum, die für Empfangs- und Sendeoperationen verwendet werden, zugeordnet werden. Falls einem Endpunktkanal keine Puffer zugewiesen sind, ist der Controller für die Erzeugung geeigneter Quittierungen für Input-Tokens und Output-Tokens verantwortlich.
  • Der Endpunkt-Controller enthält mehrere funktionale Blöcke. Die Endpunkt-Zustandsmaschine schafft die zentralisierte Steuerung für die Dienstprogrammblöcke des Datensynchronisations-Multiplexers (DALM), des Adressengenerators (ADGen) und des Teil-Endpunktkanal-Speichers (PEP-Speicher). Die Vorrichtungsfunktionen wie etwa die Adressenprüfung und die Adressenerzeugung werden in dem Vorrichtungsfunktionsblock erzielt. In einer zweckmäßigen Ausführung laufen sämtliche Zustandsmaschinen mit einem USB-Takt von 12 MHz. Sämtliche Datenübertragungen erfolgen mit einem Kernbustakt. Teile des ADGen-Blocks sowie der gesamte DALM-Block arbeiten unter Verwendung des Kernbustakts. Sämtliche anderen Blöcke des Endpunkt-Controllers verwenden ausschließlich den lokalen 12 MHz-Takt. Datenbytes zwischen den Bereichen werden bei der MAC-Anwenderschnittstelle mit einer asynchronen Quittierung für jedes übertragene Byte synchronisiert.
  • In einer zweckmäßigen Ausführung minimiert der Endpunkt-Controller die Anzahl der erforderlichen Speicherzugriffe. Nur beim Empfang eines Token ist für die Endpunktmatrix ein Speicherzugriff erforderlich. Ein einziger Doppelwort-Zugriff zusammen mit dem residenten Endpunktzustand ist ausreichend, damit der Endpunktkanal die Host-Anforderung verarbeitet. Dieser Zugriff liest die Lokalisierungs- und Größeninformationen für die Datenübertragung. Die Datenübertragung erfolgt nach Operationen des Lesens oder Schreibens eines Doppelworts. Das Modul besitzt die höchste Priorität auf dem Kernbus für Übertragungen, wobei die Übertragungsrate erheblich höher als jene des USB ist. Somit ist die Anforderung einer Datenpufferung innerhalb des Endpunkt-Controllers minimal, abgesehen von einem Extrawort, damit nachfolgende Zugriffe mit dem momentanen Zugriff überlappen.
  • Ein Bytezähler verfolgt die Anzahl der Bytes, die übertragen werden. Der letzte Zugriff einer Übertragung kann ein teilweises Lesen oder Schreiben im Speicher erfordern. Das teilweise Schreiben des letzten Zugriffs wird durch den endgültigen Bytezählstand bestimmt.
  • Am Ende einer Übertragung wird das momentane Steuerwort mit dem Status für die Übertragung geschrieben, während das andere Steuerwort für diesen Endpunkt gelesen wird, um zu prüfen, ob ein weiterer Puffer vorbereitet wurde. Nach den Steuerwort-Operationen ist der Endpunktkanal-Zustand aktualisiert.
  • Synchronisationsträger
  • Durch eine Kombination aus Hardware und Software unterstützt das UNIM alle drei für den USB definierten Synchronisationsklassen, nämlich asynchron, synchron und adaptiv. Der Endpunkt-Controller schafft eine Hardware-Unterstützung für die Überwachung des USB-Takts von 1 kHz relativ zu einem externen Referenztakt wie etwa einem Referenztakt von 8 kHz, und für die Überwachung der Qualität und der Konsistenz des USB-Takts von 1 kHz. Die Anstiegsflanken des externen Referenztakts werden in dem Referenzzählregister gezählt. Dies kann für den Vergleich mit der USB-Rahmennummer verwendet werden. Die Differenz zwischen den Frequenzen des Referenztakts und des USB-Takts kann in Paketen dem Host gemeldet werden, so daß der Host die USB-Taktfrequenz einstellen kann; dadurch kann der USB-Referenztakt auf den Referenztakt verriegelt werden.
  • Der Endpunkt-Controller behält außerdem den Status bei, um anzugeben, wenn er auf den USB-Takt von 1 kHz verriegelt ist und wenn aufgrund eines Fehlens oder eines inkorrekten Rahmenbeginn-Pakets im USB-Takt eine Diskontinuität auftritt.
  • Dies wird von der Software für die Einstellung der Warteschlangen für die isochronen Pakete verwendet. Die momentane Rahmennummer wird vom Endpunkt-Controller für die Bestimmung, welcher isochrone Puffer als nächstes senden soll, verwendet.
  • Steuerwort
  • In einer zweckmäßigen Ausführung enthält die Endpunktkanal-Matrix 32 Steuerwörter, 2 für jeden Endpunktkanal. Die Endpunktkanal-Matrix befindet sich in einem Speicher an einer Adresse, auf die ein Endpunktmatrix-Basisadressenregister EABAR zeigt. Diese Adresse muß 128-Byte-synchronisiert sein (d. h. die 7 LSBs der Adresse sind 0). Die Endpunktkanal-Matrix ist durch die 4-Bit-Endpunktkanal-Nummer EPN indexiert, ferner ist das Steuerwort, auf das zugegriffen wird, durch den 1-Bit-Endpunktkanal-Steuerwortzeiger CWP bestimmt. Das 25-Bit-EABAR, die 4-Bit-EPN und der 1-Bit-CWP erzeugen eine auf eine Doppelwortgrenze (32-Bit-Grenze) synchronisierte 32-Bit-Adresse und werden für den Zugriff auf das 32-Bit-Steuerwort verwendet.
  • Das 32-Bit-Steuerwort enthält sämtliche Informationen, die für den Betrieb dieses Endpunktkanals erforderlich sind, wenn dieser aktiv ist. Für jeden Endpunktkanal gibt es zwei derartige Einträge. Das Steuerwort, auf das als nächstes zugegriffen werden soll, ist durch den Wert des Endpunktkanal-Steuerwortzeigers CWP bestimmt. Sofort nach dem Empfang eines IN-Token, eines OUT-Token oder eines SETUP-Token durch einen momentan in Bereitschaftszustand befindlichen Endpunktkanal wird das Steuerwort des gewählten Endpunktkanals des momentanen Steuerwortzeigers gelesen, um zu bestimmen, wie auf das Token geantwortet werden soll. Am Ende einer Übertragung, wenn der Abschlußstatus geschrieben wird, wird das Steuerwort durch den momentanen Status aktualisiert, wird der CWP inkrementiert und wird das andere Steuerwort gelesen. Wenn ein Zwischenstatus geschrieben wird, wird nur das höchstwertige Byte des Steuerworts aktualisiert. Das Steuerwortformat ist im folgenden gezeigt:
    Figure 00180001
  • Der 4-Bit-Pufferzustand BS ist ein Teil des Steuerworts, der für die Erfindung relevant ist. Der Pufferzustand wird durch Software und den Endpunktkanal-Controller EPC aktualisiert um die Steuerung dieses Puffers zwischen ihnen zu synchronisieren. Der EPC schreibt den Status, der die Verwendung des Puffers angibt. Dieses Feld wird durch eine Knoten-Firmware auf Output Ready, Input Ready, Setup Ready, Skip, Stall und Disable gesetzt. Sämtliche anderen Werte werden durch den EPC gesetzt. Der EPC kann außerdem die Stall-Disable-Werte in Fehlerzuständen schreiben. Der Puffer kann durch die Knoten-Firmware erneut in Anspruch genommen werden, wenn der Pufferzustand irgendeiner der Abschlußwerte ist; diese umfassen den Eingangs-/Ausgangsabschluß-Status und die Fehlercodes.
  • Der Pufferzustand BS kann die folgenden Werte annehmen:
  • 0: Skip. Dieser Wert wird zusammen mit dem Output Ready-Befehl verwendet. Skip bewirkt, daß das nächste empfangene Datenpaket ignoriert wird und daß der Steuerwortzeiger inkrementiert wird. Für Steuerendpunkte bewirkt Skip außerdem, daß der Endpunktkanal-Zustand vom Input-Ready-Zustand zum Output/Input-Idle-Zustand geschaltet wird. Das Setzen von TE und TI bestimmt, welche Quittung zurückgeschickt wird, sowie den nächsten Zustand des Endpunktkanals. Eine NAK wird zurückgeschickt, falls weder TE noch TI gesetzt ist. Falls TI gesetzt ist und TE nicht gesetzt ist, wird keine Quittung zurückgeschickt. Falls TE gesetzt ist, wird eine ACK zurückgeschickt und der Abschlußstatus wird geschrieben, wenn ein Paket mit dem richtigen PID empfangen wird.
    • 1: Input Ready IRDY. Dieser Wert gibt an, daß in den Puffer Daten geschrieben worden sind, die als Antwort auf ein IN-Token gesendet werden sollen.
    • 2: Output Ready ORDY. Dieser Wert gibt an, daß der Puffer zum Schreiben vorgesehen ist.
    • 3: Setup Ready SRDY. Dieser Wert gibt an, daß der Puffer zum Schreiben vorgesehen worden ist. Dies wird nur an einem Steuerendpunkt während der ersten Übertragung von Steuerlese- und Steuerschreib-Operationen verwendet. Geschrieben wird nur in das Steuerwort 0.
    • 4: Output Wait OWT. Dieser Wert gibt an, daß während des Empfangs von OUT-Daten vom Host ein Fehler aufgetreten ist. Dies enthält die Erfassung eines Bitverstopfungsfehlers. Es wird eine Wiederholung erwartet, da dies als Zwischenstatus angesehen wird, es sei denn, es handelt sich um einen isochronen OUT-Endpunkt, wo der Status als Abschlußstatus behandelt wird.
    • 5: CRC Error CRCE. Dieser Wert gibt an, daß am Ende einer OUT-Transaktion ein fehlerhafter CRC erfaßt wurde. Es wird eine Wiederholung erwartet, da der Status als Zwischenstatus angesehen wird, es sei denn, es handelt sich um einen isochronen OUT-Endpunkt, wo der Status als Abschlußstatus behandelt wird.
    • 6: Buffer Error BUFE. Dieser Wert gibt an, daß während eines OUT Daten vom USB schneller empfangen wurden, als sie in den Speicher geschrieben werden können. Während eines IN wurden Daten nicht schnell genug aus dem Speicher ausgelesen, um mit der USB-Datenrate mitzuhalten. An diesem Endpunkt wird eine Wiederholung erwartet.
    • 7: Input Wait IWT. Dieser Wert gibt an, daß der Puffer vom Endpunkt-Controller gehalten wird und darauf wartet, ein Senden bei der nächsten Gelegenheit zu versuchen oder erneut zu versuchen. Dies tritt im Fall einer fehlenden Bestätigung auf.
    • 8: Input Complete ICMB. Dieser Wert gibt einen erfolgreichen Abschluß dieser Eingangsoperation an. Der Puffer kann freigegeben werden.
    • 9: Output Complete OCMB. Dieser Wert gibt an, daß der Puffer mit Daten gefüllt ist und kein Fehler erfaßt wurde.
    • 10: Token Error TKNE. Dieser Wert gibt an, daß ein Token des falschen Typs für den momentanen Kontext dieses Steuer-Endpunktkanals empfangen wurde. Falls es sich um einen Ausgangspuffer handelte, wird der Endpunkt angehalten. Falls es sich um einen Eingangspuffer handelte, wird eine NAK geschickt und der Zustand des anderen Steuerworts wird untersucht. Dies wird als ein Abschlußzustand angesehen.
    • 11: Isochronous Synchronization Error SYNE. Dieser Wert gibt an, daß im Puffer mit TE = 1 und TI = 1 Daten empfangen wurden, daß jedoch der CWP nicht gleich dem LSB des FNR war. Dies wird als Abschlußzustand angesehen.
    • 12: Data Error DATE. Für OUT-Daten, wenn CW.BR nicht gesetzt ist und die Datenmenge, die vom Host empfangen wurde, geringer als erwartet war, oder wenn der zugewiesene Puffer nicht groß genug war, um die OUT-Daten zu speichern. Für IN-Daten wird dies gesetzt, falls ein Pufferungsfehler auftrat und CW.TE nicht gesetzt war oder CW.TI gesetzt war. Dies wird als Abschlußzustand angesehen.
    • 13: (Reserviert). 14: Halt. Dies bewirkt, daß der momentane Endpunktkanal in seinen HALT-Zustand eintritt, oder es gibt an, daß der Endpunkt in den HALT-Zustand eingetreten ist.
    • 15: Disable. Bewirkt, daß der momentane Endpunktkanal in seinen DISABLE-Zustand eintritt, oder gibt an, daß der Endpunkt in den DISABLE-Zustand eingetreten ist.
  • Das Isochron-Typ-Bit TI wird verwendet, um eine isochrone Datenübertragung zu identifizieren. Der Wert 1 gibt isochrone Daten an, während der Wert 0 nicht-isochrone Daten angibt.
  • Das Schaltfreigabe-Bit (Toggle Enable Bit) TE wird verwendet, um den Wert (DATA0/DATA1) des Datenpaketidentifizierers (PID) zu erzeugen und mit dem Steuerwortzeiger zu vergleichen, wobei er die folgenden Werte annehmen kann:
    • 0: Der Datenschalt-PID wird bei OUT-Transaktionen nicht geprüft und anhand des momentanen Wertes des CWP als Antwort auf IN-Tokens erzeugt. Der CWP wird nach jeder Transaktion selbst dann, wenn eine ACK nicht empfangen wurde, inkrementiert (invertiert). Für isochrone Endpunkte werden OUT-Daten nicht in den Speicher geschrieben, bis der CWP gleich dem niedrigstwertigen Bit der Rahmennummer, FNR.FN(0), ist. Dies hat auf die Daten, die als Antwort auf IN-Tokens geschickt werden, keinen Einfluß. Das Datenschalten sollte für Puffer, die für den Empfang von mit dem SETUP-Token geschickten Daten vorgesehen sind, nicht freigegeben werden.
    • 1: Der Datenschalt-PID wird bei OUT-Transaktionen geprüft und anhand des momentanen Wertes des CWP als Antwort auf In-Tokens erzeugt. Für OUT-Transaktionen bewirkt dies, daß eine ACK als Antwort auf Ausgangspakete geschickt wird, deren PID-Wert (DATA0/DATA1) nicht mit CWP übereinstimmt. Für IN-Transaktionen wird der CWP nach jeder Transaktion nur dann inkrementiert (invertiert), wenn eine ACK-Quittung als Antwort auf eine Zeitüberschreitungsperiode zurückgeschickt wird. Für isochrone Endpunkte werden stets OUT-Daten in den Speicher geschrieben, falls jedoch FNR.FN(0) nicht gleich dem CWP ist, wird der Pufferzustand mit isochronem Synchronisationsfehler SYNE zurückgeschrieben.
  • Für IN-Transaktionen läßt TE eine Änderung des gesendeten Daten-PID-Wertes zu, selbst wenn eine gültige ACK während der Zeitüberschreitungsperiode nicht empfangen wird. Dies kann für bestimmte Anwendungen eines Unterbrechungs-IN-Endpunkts wichtig sein.
  • Für OUT-Transaktionen kann TE verwendet werden, um zu bestimmen, ob der DATA0- oder DATA1-PID bei der Entscheidung, ob das Paket akzeptiert wird oder nicht, geprüft werden soll. Dies kann für eine Unterbrechung eines Unterbrechungs-OUT-Endpunkts wichtig sein, wo die jüngsten Daten empfangen werden sollen.
  • Das Pufferrundung-Bit BR gibt für Ausgangstransaktionen an, ob es zulässig ist, daß Datenpuffer mit einer Größe, die von dem empfangenen Datenpaket verschieden ist, zulässig sind, und kann die folgenden Werte haben:
    • 0: Das Datenpaket soll den definierten Datenpuffer exakt füllen. Der Pufferüberlauf- oder Pufferunterlauf-Status liegt vor, falls das Paket nicht exakt in den Puffer paßt.
    • 1: Das Datenpaket kann kleiner als der definierte Puffer sein, ohne daß ein Fehlerzustand am Endpunkt hervorgerufen wird.
  • Wenn dieses Feld zusammen mit einem Ausgangsabschluß-Pufferstatus OCMB oder Datenfehler-Pufferstatus DATE gelesen wird, gibt es den Wert des empfangenen PID an: 0 für DATA0 und 1 für DATA1.
  • Die Unterbrechung bei dem Paketabschluß-PID IC bewirkt, daß an diesem Endpunkt ein Ereignis gesetzt wird (EER.EPn), wann immer der Pufferstatus bei einem Eingangsabschluß oder einem Ausgangsabschluß, bei einem Paketfehler oder bei einem Blockieren des Endpunktkanals geschrieben wird.
  • Die Unterbrechung des Paketfehlerbits IE bewirkt, daß an dem Endpunkt ein Ereignis gesetzt wird (EER.EPn), wann immer für den Pufferstatus einer der Pufferfehlercodes geschrieben wird oder der Endpunkt blockiert ist. Wenn sowohl IC als auch IE gesetzt sind, bewirken CRC- und Bitverstopfungsfehler ebenfalls die Erzeugung eines Ereignisses und bewirken nicht die erneute Verwendung dieser Puffer wie im Normalbetrieb. Dies ist hauptsächlich für diagnostische Zwecke vorgesehen.
  • Das Pufferseitenbit BP kann die folgenden Werte annehmen:
    • 0: Verwende Pufferseite A als obere Adresse des Eingangs/Ausgangspuffers.
    • 1: Verwende Pufferseite B als obere Adresse des Eingangs/Ausgangspuffers.
  • Die Pufferadressenbits BA halten die unteren 11 Bits der Pufferadresse. Die Puffer müssen bei einer synchronisierten Doppelwortgrenze beginnen und können an irgendeiner Bytegrenze enden. Am Ende sämtlicher abgeschlossenen Übertragungen wird der Restwert der Pufferadresse geschrieben. Am Ende der unvollständigen Übertragungen, etwa dann, wenn für den Status ein Input Wait oder ein Output Wait geschrieben wird, wird dieses Feld nicht überschrieben.
  • Für OUT-Puffer ist das erste gespeicherte Byte das dem PID folgende Byte. Ähnlich zeigt für IN-Puffer die Adresse auf das erste Byte von zu übertragenden Daten, d. h. auf das Byte, das dem PID im Paket unmittelbar folgt. Der CRC wird automatisch berechnet und an das Paket angehängt, es sei denn, daß das IN-Token vom IS_RDY-Zustand empfangen wird und im Steuerwort das IS-Feld nicht auf 1 gesetzt war.
  • Die Bytezählbits BC halten die Größe des zu verwendeten Datenpuffers. Die Puffer beginnen bei einer geraden Doppelwortgrenze und können an irgendeiner Bytegrenze enden. Für IN-Transaktionen gibt dies die Größe der zu übertragenden Daten an. Für OUT-Transaktionen gibt dies die Größe des Puffers an, in dem Daten empfangen werden können. Null ist ein legitimer Wert für den Bytezählstand. Am Ende sämtlicher abgeschlossener Übertragungen wird der Restwert des Bytezählers geschrieben. Am Ende unvollständiger Übertragungen, etwa dann, wenn für den Status Input Wait oder Output Wait geschrieben wird, wird dieses Feld nicht überschrieben.
  • Register
  • In einer zweckmäßigen Ausführung umfassen vier für die Erfindung relevante Register das Rahmennummernregister, das Referenzzählstandsregister, das Zeitgeberintervall-Register und das Unterbrechungsstatusregister.
  • In einer zweckmäßigen Ausführung ist das Rahmennummernregister (FNR) ein wortbreites Nur-Lese-Register. Das FNR stellt die momentane Rahmennummer, die im SOF-Paket empfangen wird, bereit. Bei einem USB Reset wird dieses Register auf C000h gesetzt. Das FNR-Registerformat ist im folgenden gezeigt:
    Figure 00250001
  • Der 1-Bit-Fehlmerker MF wird gesetzt, um eine Diskontinuität in der Rahmennummer anzugeben. Dieser Merker wird gesetzt, wenn die Rahmennummer in einem gültigen empfangenen SOF nicht mit dem erwarteten nächsten Wert übereinstimmt. Der Merker wird auch gesetzt, wenn das SOF innerhalb der 12060 Bitzeiten (FLMAX mit Toleranz) der vorhergehenden Änderung von FNR.FN nicht empfangen wird. Bei einem Rücksetzen wird dieser Merker auf 1 gesetzt.
  • Der 1-Bit-nicht-verriegelt-Merker UL wird gesetzt und gibt an, daß wenigstens zwei Rahmen ohne erwartete Rahmennummer empfangen wurden und daß die Rahmennummer vom nächsten SOF-Paket in die FN geladen wird. Bei einem Rücksetzen wird dieser Merker auf 1 gesetzt.
  • Die 11-Bit-Rahmennummer FN hält die momentane Rahmennummer, wie sie im letzten SOF-Paket empfangen wird. Der Wert wird inkrementiert, wenn ein SOF fehlt. Falls zwei aufeinanderfolgende Rahmen fehlen oder nicht korrekt sind, wird die Rahmennummer zusammen mit der nächsten Rahmennummer aus dem gültigen SOF-Paket geladen. Das niedrigstwertige Bit der Rahmennummer wird verwendet, um festzustellen, welcher isochrone Puffer als nächstes verwendet werden sollte.
  • Der folgende Programmcode veranschaulicht die Operation der Rahmennummer:
    Bei Empfang eines gültigen SOF-Pakets:
    Figure 00260001
  • Bei Nichtempfang eines gültigen SOF innerhalb der 12060 Bitzeiten (oder 796, wenn das Kurzrahmenbit DCR.SRM gesetzt ist) aus dem vorherigen Laden von FNR.FN:
    Figure 00270001
  • Das Referenzzählstandregister (RCR ist ein wortbreites Nur-Lese-Register. Es wird verwendet, um einen externen Referenztakt zu überwachen. Bei einem Rücksetzen wird dieses Register gelöscht. Das RCR-Registerformat ist im folgenden gezeigt:
    Figure 00270002
  • Der 16-Bit-Referenzzählstand RC ist ein Zählstand bezüglich der Anzahl der Anstiegsflanken, die in dem UNIM-Taktreferenzeingangssignal erfaßt werden. Wenn er zusammen mit der Rahmennummer gelesen wird, ergibt dies ein genaues Lesen der relativen Frequenz der externen Referenz gegenüber dem USB-Takt. Die Differenz kann dem USB-Host über Rückkopplungspakete gemeldet werden, um das SOF-Paket zu verzögern oder zu beschleunigen, damit der USB-Takt effektiv mit dem externen Referenztakt verriegelt wird. Um einen gemeinsamen Referenzpunkt für die Software aufrechtzuerhalten, wird der Referenzzählstand in dieses Register abgetastet, wenn FNR.FN mit einem neuen Wert geladen wird oder inkrementiert wird.
  • Das Zeitgeberintervallregister (TIR) ist ein wortweites Schreib-Lese-Register. Es enthält eine Anforderung einer Unterbrechung, wenn der Rahmenzähler FC den programmierten Offset zum nächsten Mal erreicht. Bei einem Rücksetzen wird dieses Register gelöscht. Das TIR-Registerformat ist im folgenden gezeigt:
    Figure 00280001
  • Das Zeitgeberunterbrechungsintervall TI bewirkt, daß ISR.FCI gesetzt wird, wenn der Rahmenzähler FNR.FN diesen Wert zum nächsten Mal erreicht.
  • Das Unterbrechungsstatusregister ISR ist ein wortbreites Schreib-Lese-Register. Es informiert die Software über Ereignisse, die aufgetreten sind und eine Unterbrechung sowie eine erforderliche zusätzliche Verarbeitung hervorriefen. Die Bits werden gelöscht, indem für die zu löschenden Bits eine 1 geschrieben wird. Bei einem Rücksetzen wird dieses Register gelöscht. Das ISR-Registerformat ist im folgenden gezeigt:
    Figure 00280002
  • Der für die Erfindung relevante Abschnitt ist die Erfassung von nicht-verriegelt/verriegelt ULD. Dies gibt an, daß der Rahmenzeitgeber aus einem verriegelten Zustand in den nichtverriegelten Zustand eingetreten ist, wie durch den momentanen Wert von FNR.UL, das Bit für nicht-verriegelten Status, bestimmt wird. Es wird angemerkt, daß, da FNR.FN(0) verwendet wird, um die nächste isochrone Übertragung zu wählen, die Einstellung der isochronen Warteschlange an isochronen Endpunkten notwendig sein kann.
  • Operation des isochronen Endpunkts
  • Isochrone Endpunkte folgen den gleichen Konturen wie Massenendpunkte, sie folgen jedoch keinem Schaltprotokoll (Toggle-Protokoll). Statt dessen sind sie auf das niedrigstwertige Bit des Rahmennummernregisters synchronisiert.
  • Für isochrone Eingangsendpunkte werden Daten unter Verwendung derselben IRDY-Puffer in einer Warteschlange angeordnet. Wenn ein IN-Token an einem isochronen Endpunkt empfangen wird und wenn das niedrigstwertige Bit des Rahmennummernregisters mit dem Steuerwortzeiger CWP übereinstimmt, wird das Datenpaket geschickt. Andernfalls werden keine Daten geschickt. Dadurch können die Datenübertragungen auf eine besondere Rahmennummer synchronisiert werden. Um die Übertragung bei einer besonderen Rahmennummer zu beginnen, kann das Rahmennummernregister gelesen werden. Eine Unterbrechung kann angefordert werden (ISR.FCI), indem TIR auf den angeforderten Wert von FNR, der angepaßt werden muß, gesetzt wird. Eine Anpassung erfolgt nur für die niedrigeren acht Bits, so daß dieses Ereignis bis zu 256 ms vor dem Zeitpunkt in einer Warteschlange angeordnet werden kann, zu dem es erforderlich ist. Wenn diese Unterbrechung verarbeitet wird, kann der geeignete Puffer im Endpunktkanal in einer Warteschlange angeordnet werden.
  • Für isochrone Ausgangsendpunkte bestimmt das Schaltfreigabebit, wie das LSB des Rahmennummernregisters verwendet wird. Falls TE nicht gesetzt ist, werden sämtliche Daten in den Speicher geschrieben, falls jedoch FNR.LSB nicht gleich CWP ist, wird ein Synchronisationsfehler-Status (SYNE) als Pufferzustand geschrieben. Falls TE gesetzt ist, werden Daten nur gespeichert, wenn FNR.LSB gleich dem CWP ist. Wenn ein isochroner Ausgangsstrom mit der Rahmennummer synchronisiert wird, kann der erste Puffer mit TE gesetzt werden, so daß das Schreiben nur beginnt, wenn eine Rahmennummer-Übereinstimmung vorliegt. Dann können alle nachfolgenden Rahmen erfassen, ob ein Synchronisationsfehler vorliegt.
  • Es wird angemerkt, daß das Rahmennummernregister fortgesetzt bis zu zwei Rahmen hochzählt, selbst wenn SOF vorübergehend verlorengeht. Sollte das SOF für mehr als zwei Rahmen verlorengehen, wird das nicht verriegelte Ereignis gemeldet (ISR.UL), wobei zu diesem Zeitpunkt sämtliche nachfolgenden isochronen Übertragungen mit Vorsicht behandelt oder beendet werden sollten, bis der Rahmennummerzähler erneut verriegelt wird.

Claims (35)

  1. Vorrichtung zum Senden von Daten von einem USB-Endpunkt (105) an einen USB-Host (115) über einen isochronen USB-Endpunktkanal (110), gekennzeichnet durch ein Pufferdatenspeicherelement (120), ein Zeigerdaten-Speicherelement (125), einen Zeiger-Controller (130), der im Zeigerdaten-Speicherelement (125) einen Adressenzeiger speichert, der dem Pufferdaten-Speicherelement entspricht, ein Zählerdaten-Speicherelement (135), das einen Zählerwert speichert, einen Datenprozessor (140), der eine Mehrzahl von Daten im Pufferdaten-Speicherelement erzeugt, und einen Controller (150), der den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem Adressenzeiger ist, und dann die Mehrzahl von Daten schickt.
  2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet, daß der Zählerwert das niedrigstwertige Bit eines Rahmennummernregisters (FNR) enthält und der Adressenzeiger einen Abschnitt eines von mehreren Steuerwörtern enthält.
  3. Vorrichtung nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der Controller (150) nach Verstreichen einer Zeitperiode wahlweise inkrementiert.
  4. Vorrichtung nach einem der Ansprüche 1 bis 3, gekennzeichnet durch mehrere USB-Endpunkte (105), die das Pufferdaten-Speicherelement, das Zeigerdaten-Speicherelement (125), den Zeiger-Controller (130), das Zählerdaten-Speicherelement (135), den Datenprozessor (140) und den Controller (150) gemeinsam nutzen.
  5. Vorrichtung nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß ein zweites Daten-Speicherelement (122) vorgesehen ist, der Datenprozessor (140) eine zweite Mehrzahl von Daten im zweiten Datenspeicherelement (122) erzeugt, der Zeiger-Controller (130), nachdem der Controller (150) die Mehrzahl von Daten geschickt hat, im Zeigerdaten-Speicherelement (125) einen zweiten Adressenzeiger speichert, der dem zweiten Daten-Speicherelement (122) entspricht, und der Controller (150), nachdem er die Mehrzahl von Daten geschickt hat, den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem zweiten Adressenzeiger ist, und dann die zweite Mehrzahl von Daten schickt.
  6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet, daß der Datenprozessor (140) dann, wenn der Controller (150) die Mehrzahl von Daten geschickt hat, eine dritte Mehrzahl von Daten in dem Pufferdaten-Speicherelement erzeugt, der Zeiger-Controller (130) dann, wenn der Controller (150) die zweite Mehrzahl von Daten geschickt hat, in dem Zeigerdaten-Speicherelement einen dritten Adressenzeiger speichert, der dem Pufferdaten-Speicherelement (120) entspricht, und der Controller (150) dann, wenn er die zweite Mehrzahl von Daten geschickt hat, den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem dritten Adressenzeiger ist, und dann die dritte Mehrzahl von Daten schickt.
  7. Vorrichtung zum Senden von Daten von einem USB-Endpunkt (205) an einen USB-Host (215) über einen isochronen USB-Endpunktkanal (210), insbesondere nach einem der Ansprüche 1 bis 6, gekennzeichnet durch ein Pufferdaten-Speicherelement (220), einen Datenprozessor (240), der eine Mehrzahl von Daten in dem Pufferdaten-Speicherelement (220) erzeugt, ein Verzögerungsdaten-Speicherelement (260), das einen der Mehrzahl von Daten entsprechenden Verzögerungswert speichert, ein Zählerdaten-Speicherelement (235), das einen Zählerwert speichert, und einen Controller (250), der den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem Verzögerungswert ist, und dann die mehreren Daten schickt.
  8. Vorrichtung nach Anspruch 7, dadurch gekennzeichnet, daß der Controller (250) nach Verstreichen einer Zeitperiode wahlweise inkrementiert.
  9. Vorrichtung nach Anspruch 7 oder 8, gekennzeichnet durch mehrere USB-Endpunkte, die das Pufferdaten-Speicherelement (220), den Datenprozessor (240), das Verzögerungsdaten-Speicherelement (260), das Zählerdaten-Speicherelement (235) und den Controller (250) gemeinsam nutzen.
  10. Vorrichtung nach einem der Ansprüche 7 bis 9, dadurch gekennzeichnet, daß ein zweites Datenspeicherelement (222), ein Zeigerdaten-Speicherelement (225) sowie ein Zeiger-Controller (230), der in dem Zeigerdaten-Speicherelement einen dem zweiten Datenspeicherelement (222) entsprechenden Adressenzeiger speichert, vorgesehen sind, der Datenprozessor (240) eine zweite Mehrzahl von Daten in dem zweiten Daten-Speicherelement (222) erzeugt und der Controller (250) nach dem Senden der Mehrzahl von Daten den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem Adressenzeiger ist, und dann die zweite Mehrzahl von Daten schickt.
  11. Vorrichtung nach Anspruch 10, dadurch gekennzeichnet, daß der Datenprozessor (240) dann, wenn der Controller (250) die Mehrzahl von Daten geschickt hat, eine dritte Mehrzahl von Daten im Pufferdaten-Speicherelement (220) erzeugt, der Zeiger-Controller (230) dann, wenn der Controller (250) die zweite Mehrzahl von Daten schickt, in dem Zeigerdaten-Speicherelement (225) einen zweiten Adressenzeiger speichert, der dem Pufferdaten-Speicherelement (220) entspricht, und der Controller (250) dann, wenn er die zweite Mehrzahl von Daten geschickt hat, den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem zweiten Adressenzeiger ist, und dann die dritte Mehrzahl von Daten schickt.
  12. Vorrichtung zum Melden einer USB-Taktfrequenzeinstellung, wenn Daten auf einem isochronen USB-Endpunktkanal (310) gesendet werden, insbesondere nach einem der Ansprüche 1 bis 11, gekennzeichnet durch einen Referenztaktsignalgenerator (370), der ein Referenztaktsignal mit einer Referenztaktfrequenz erzeugt, einen Signalprozessor (375), der so beschaffen ist, daß er ein USB-Taktsignal empfängt und eine USB-Taktfrequenz hiervon erfaßt, und einen Controller (350), der so beschaffen ist, daß er die Referenztaktfrequenz mit der USB-Taktfrequenz vergleicht und an einen USB-Host (315) ein Steuersignal sendet, wobei der Controller (350) dann, wenn die Referenztaktfrequenz höher als die USB-Taktfrequenz ist, ein Takterhöhungs-Steuersignal sendet, das eine Erhöhung der USB-Taktfrequenz anfordert, und wobei der Controller (350) dann, wenn die Referenztaktfrequenz niedriger als die USB-Taktfrequenz ist, ein Takterniedrigungs-Steuersignal sendet, das eine Erniedrigung der USB-Taktfrequenz anfordert.
  13. Vorrichtung zum Empfangen von Daten von einem USB-Host (415) über einen isochronen USB-Endpunktkanal (410) an einem USB-Endpunkt (405), insbesondere nach einem der Ansprüche 1 bis 12, gekennzeichnet durch einen Empfänger (480), der sequentiell eine erste Mehrzahl von Daten mit einer ersten Sequenznummer und eine zweite Mehrzahl von Daten mit einer zweiten Sequenznummer empfängt, einen Controller (450), der eine Unterbrechung erzeugt, falls die Differenz zwischen der ersten Sequenznummer und der zweiten Sequenznummer größer als drei ist, ein erstes Daten-Speicherelement (420), das so beschaffen ist, daß es die erste Mehrzahl von Daten speichert, und ein zweites Daten-Speicherelement, das so beschaffen ist, daß es die zweite Mehrzahl von Daten speichert.
  14. Vorrichtung nach Anspruch 13, gekennzeichnet durch mehrere USB-Endpunkte, die das erste Daten-Speicherelement (420), das zweite Daten-Speicherelement (422), den Empfänger (480) und den Controller (450) gemeinsam nutzen.
  15. Vorrichtung nach Anspruch 13 oder 14, dadurch gekennzeichnet, daß ein Zeigerdaten-Speicherelement (425), ein Zeiger-Controller (430), der in dem Zeigerdaten-Speicherelement (425) einen dem ersten Daten-Speicherelement (420) entsprechenden Adressenzeiger speichert, ein Schaltdaten-Speicherelement (490), das einen Schaltwert speichert, sowie ein Rahmennummerndaten-Speicherelement (485) vorgesehen sind, der Empfänger (480) ein Rahmungspaket mit einer Rahmennummer empfängt, der Controller (450) die Rahmennummer in dem Rahmennummerndaten-Speicherelement (485) speichert, der Controller (450) dann, wenn der Schaltwert gesetzt ist und wenn wenigstens ein Teil der Rahmennummer wenigstens einem Teil des Adressenzeigers entspricht, die erste Mehrzahl von Daten in das erste Daten-Speicherelement (420) schreibt, und der Controller (450) dann, wenn der Schaltwert nicht gesetzt ist, die erste Mehrzahl von Daten in das erste Daten-Speicherelement schreibt und, falls nicht wenigstens ein Teil der Rahmennummer wenigstens einem Teil des Adressenzeigers entspricht, einen Fehlermerker erzeugt.
  16. Vorrichtung zum Empfangen von Daten von einem USB-Host (515) über einen isochronen USB-Endpunktkanal (510) an einem USB-Endpunkt (505), insbesondere nach einem der Ansprüche 1 bis 15, gekennzeichnet durch einen Empfänger (580), der eine Mehrzahl von Daten, die mehrere Datenpakete enthalten, sowie Verzögerungsinformationen, die wenigstens einem spezifischen Datenpaket der mehreren Datenpakete entsprechen, empfängt, ein Pufferdaten-Speicherelement (520), ein Verzögerungsdaten-Speicherelement (560), das die Verzögerungsinformationen speichert, ein Zählerdaten-Speicherelement (535), das einen Zählerwert speichert, und einen Controller (550), der den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem Verzögerungswert ist, und daraufhin das wenigstens eine spezifische Datenpaket in das Pufferdaten-Speicherelement schreibt.
  17. Vorrichtung nach Anspruch 16, dadurch gekennzeichnet, daß der Controller (550) nach Verstreichen einer Zeitperiode wahlweise inkrementiert.
  18. Vorrichtung nach Anspruch 16 oder 17, gekennzeichnet durch mehrere USB-Endpunkte, die das Pufferdaten-Speicherelement (520), das Verzögerungsdaten-Speicherelement (560), das Zählerdaten-Speicherelement (535), den Empfänger (580) und den Controller (550) gemeinsam nutzen.
  19. Vorrichtung nach einem der Ansprüche 16 bis 18, dadurch gekennzeichnet, daß ein zweites Daten-Speicherelement (522), ein Zeigerdaten-Speicherelement (525) sowie ein Zeiger-Controller (530), der in dem Zeigerdaten-Speicherelement (525) einen dem zweiten Daten-Speicherelement (522) entsprechenden Adressenzeiger speichert, vorgesehen sind, der Empfänger (580) ein zweites Datenpaket der mehreren Datenpakete empfängt und der Controller (550) dann, wenn er das wenigstens eine spezifische Datenpaket geschrieben hat, den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem Adressenzeiger ist, woraufhin er das zweite Datenpaket in das zweite Daten-Speicherelement (522) schreibt.
  20. Vorrichtung nach Anspruch 19, dadurch gekennzeichnet, daß der Empfänger (580) ein drittes Datenpaket der mehreren Datenpakete empfängt, der Zeiger-Controller (530) dann, wenn der Controller (550) das wenigstens eine spezifische Datenpaket schreibt, in dem Zeigerdaten-Speicherelement (525) einen dem Pufferdaten-Speicherelement (520) entsprechenden zweiten Adressenzeiger speichert, und der Controller (550) dann, wenn er das zweite Datenpaket geschrieben hat, den Zählerwert wahlweise inkrementiert, bis der Zählerwert gleich dem zweiten Adressenzeiger ist, und dann das dritte Datenpaket in das Pufferdaten-Speicherelement (520) schreibt.
  21. Vorrichtung zum Senden isochroner Daten zwischen einem von mehreren USB-Endpunkten (640) und einem USB-Host (610) über einen von mehreren USB-Endpunktkanälen (620), insbesondere nach einem der Ansprüche 1 bis 20, gekennzeichnet durch mehrere USB-Endpunkte (640), die so beschaffen sind, daß sie Daten mit einem USB-Host (610) über mehrere USB-Endpunktkanäle (620) austauschen, ein Pufferdaten-Speicherelement (660), das von den mehrere Endpunkten (640) gemeinsam genutzt wird und so beschaffen ist, daß es eine Mehrzahl von isochronen Daten speichert, mehrere Steuerdaten-Speicherelemente, wovon jedes einem der mehreren USB-Endpunkte (640) entspricht, und einen Controller (670), der einen Endpunkt der mehreren Endpunkte (640) wählt, eines der mehreren Steuerdaten-Speicherelemente (650), das dem Endpunkt (640) zugewiesen ist, liest und die Mehrzahl von isochronen Daten auf der Grundlage der Inhalte des Steuerdaten-Speicherelements (650) über einen der mehreren USB-Endpunktkanäle austauscht.
  22. Vorrichtung nach Anspruch 21, dadurch gekennzeichnet, daß das Pufferdaten-Speicherelement (650) einen Doppelpuffer enthält, der so beschaffen ist, daß er zwei Sätze isochroner Daten speichert.
  23. Verfahren zum Senden von Daten von einem USB-Endpunkt (105) an einen USB-Host (115) über einen isochronen USB-Endpunktkanal (110), gekennzeichnet durch die folgenden Schritte: Erzeugen mehrerer Daten in einem Pufferdaten-Speicherelement (120), Erzeugen eines Adressenzeigers, der dem Pufferdaten-Speicherelement (120) entspricht, Inkrementieren eines Zählerwerts, bis der Zählerwert gleich dem Adressenzeiger ist, und dann Senden der mehreren Daten.
  24. Verfahren nach Anspruch 23, dadurch gekennzeichnet, daß der Zählerwert ein niedrigstwertiges Bit eines Rahmennummernregisters ist und der Adressenzeiger einen Abschnitt eines von mehreren Steuerwörtern enthält.
  25. Verfahren nach Anspruch 23 oder 24, gekennzeichnet durch die folgenden Schritte: Erzeugen einer zweiten Mehrzahl von Daten in einem zweiten Daten-Speicherelement (122) des USB-Endpunkts (105), Erzeugen eines zweiten Adressenzeigers, der dem zweiten Daten-Speicherelement (122) entspricht, und Inkrementieren des Zählerwerts, bis der Zählerwert gleich dem zweiten Adressenzeiger ist, und dann Senden der zweiten Mehrzahl von Daten.
  26. Verfahren nach Anspruch 25, gekennzeichnet durch die folgenden Schritte: Erzeugen einer dritten Mehrzahl von Daten im ersten Daten-Speicherelement (120), Erzeugen eines dritten Adressenzeigers, der dem ersten Daten-Speicherelement (120) entspricht, und Inkrementieren des Zählerwerts, bis der Zählerwert gleich dem dritten Adressenzeiger ist, und dann Senden der dritten Mehrzahl von Daten.
  27. Verfahren zum Senden von Daten von einem USB-Endpunkt (205) zu einem USB-Host über einen isochronen USB-Endpunktkanal (210), insbesondere nach einem der Ansprüche 23 bis 26, gekennzeichnet durch die folgenden Schritte: Erzeugen einer Mehrzahl von Daten in einem Pufferdaten-Speicherelement (220) eines USB-Endpunkts (205), Erzeugen eines Verzögerungswerts, der der Mehrzahl von Daten entspricht, und Inkrementieren eines Zählerwerts, bis der Zählerwert gleich dem Verzögerungswert ist, und dann Senden der Mehrzahl von Daten.
  28. Verfahren nach Anspruch 27, gekennzeichnet durch die folgenden Schritte: Erzeugen einer zweiten Mehrzahl von Daten in einem zweiten Daten-Speicherelement (222) des USB-Endpunkts (205), Erzeugen eines Adressenzeigers, der dem zweiten Daten-Speicherelement (222) entspricht, und Inkrementieren des Zählerwerts, bis der Zählerwert gleich dem Adressenzeiger ist, und dann Senden der zweiten Mehrzahl von Daten.
  29. Verfahren nach Anspruch 28, gekennzeichnet durch die folgenden Schritte: Erzeugen einer dritten Mehrzahl von Daten in dem ersten Daten-Speicherelement (220), Erzeugen eines zweiten Adressenzeigers, der dem ersten Daten-Speicherelement (220) entspricht, und Inkrementieren des Zählerwerts, bis der Zählerwert gleich dem zweiten Adressenzeiger ist, und dann Senden der dritten Mehrzahl von Daten.
  30. Verfahren zum Melden einer USB-Taktfrequenzeinstellung, wenn Daten über einen isochronen USB-Endpunktkanal (310) geschickt werden, insbesondere nach einem der Ansprüche 23 bis 29, gekennzeichnet durch die folgenden Schritte: Erzeugen eines Referenztaktsignals mit einer Referenztaktfrequenz, Empfangen eines USB-Taktsignals und Erfassen der USB-Taktfrequenz hiervon, Vergleichen der Referenztaktfrequenz mit der USB-Taktfrequenz, Senden eines Takterhöhungs-Steuersignals an einen USB-Host (315), wenn die Referenztaktfrequenz höher als die USB-Taktfrequenz ist, und Senden eines Takterniedrigungs-Steuersignals an den USB-Host (315), wenn die Referenztaktfrequenz niedriger als die USB-Taktfrequenz ist.
  31. Verfahren zum Empfangen von Daten von einem USB-Host (415) über einen isochronen USB-Endpunktkanal (410), insbesondere nach einem der Ansprüche 23 bis 30, gekennzeichnet durch die folgenden Schritte: Empfangen einer ersten Mehrzahl von Daten mit einer ersten Sequenznummer, anschließend Empfangen einer zweiten Mehrzahl von Daten mit einer zweiten Sequenznummer, und Erzeugen einer Unterbrechung, falls die Differenz zwischen der ersten Sequenznummer und der zweiten Sequenznummer größer als drei ist.
  32. Verfahren nach Anspruch 31, dadurch gekennzeichnet, daß der Schritt des Empfangens der ersten Mehrzahl von Daten die folgenden Schritte enthält: Empfangen eines Rahmungspakets Erzeugen eines Adressenzeigers, der einem Pufferdaten-Speicherelement (420) entspricht, Untersuchen eines Schaltwerts, Schreiben der ersten Mehrzahl von Daten in das Pufferdaten-Speicherelement (420), falls der Schaltwert gesetzt ist und falls wenigstens ein Teil des Rahmungspakets wenigstens einem Teil des Adressenzeigers entspricht, und Schreiben der ersten Mehrzahl von Daten in das Pufferdaten-Speicherelement (420), falls der Schaltwert nicht gesetzt ist, und Erzeugen eines Fehlermerkers, falls wenigstens ein Teil des Rahmungspakets nicht wenigstens einem Teil des Adressenzeigers entspricht.
  33. Verfahren zum Empfangen von Daten an einem USB-Endpunkt (505) von einem USB-Host über einen isochronen USB-Endpunktkanal (510), insbesondere nach einem der Ansprüche 23 bis 32, gekennzeichnet durch die folgenden Schritte: Erzeugen eines Verzögerungswerts, der einem zukünftigen Zeitpunkt entspricht, zu dem eine Mehrzahl von Daten empfangen werden soll, und Inkrementieren eines Zählerwerts, bis der Zählerwert gleich dem Verzögerungswert ist, und dann Empfangen der Mehrzahl von Daten in einem Pufferdaten-Speicherelement (520).
  34. Verfahren nach Anspruch 33, gekennzeichnet durch die folgenden Schritte: Erzeugen eines Adressenzeigers, der einem zweiten Daten-Speicherelement (522) entspricht, und wahlweises Inkrementieren des Zählerwerts, bis der Zählerwert gleich dem Adressenzeiger ist, und dann Empfangen einer zweiten Mehrzahl von Daten im zweiten Daten-Speicherelement (522).
  35. Verfahren nach Anspruch 34, gekennzeichnet durch die folgenden Schritte: Erzeugen eines zweiten Adressenzeigers, der dem Pufferdaten-Speicherelement (520) entspricht, und wahlweises Inkrementieren des Zählerwerts, bis der Zählerwert gleich dem zweiten Adressenzeiger ist, und dann Empfangen einer dritten Mehrzahl von Daten im Pufferdaten-Speicherelement (520).
DE19900245A 1998-01-07 1999-01-07 Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host Expired - Fee Related DE19900245B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US389798A 1998-01-07 1998-01-07
US09/003,897 1998-01-07

Publications (2)

Publication Number Publication Date
DE19900245A1 DE19900245A1 (de) 1999-07-15
DE19900245B4 true DE19900245B4 (de) 2005-09-15

Family

ID=21708124

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19900245A Expired - Fee Related DE19900245B4 (de) 1998-01-07 1999-01-07 Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host

Country Status (3)

Country Link
US (1) US6678760B2 (de)
KR (1) KR100290729B1 (de)
DE (1) DE19900245B4 (de)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3415567B2 (ja) * 2000-06-21 2003-06-09 エヌイーシーマイクロシステム株式会社 Usb転送制御方法およびusbコントローラ
KR100688477B1 (ko) * 2000-06-27 2007-03-08 삼성전자주식회사 Usb 디바이스 내 엔드포인트들의 메모리 관리 방법
JP3870717B2 (ja) * 2001-05-14 2007-01-24 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3680762B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
DE10141604B4 (de) * 2001-08-24 2005-02-03 Robert Bosch Gmbh Verfahren zur Übertragung von Daten über eine isochrone Schnittstelle mit einem ersten Takt und Vorrichtung zum Anschluss an eine iosochrone Schnittstelle, über die Daten mit einem ersten Takt übertragen werden
US20030053629A1 (en) * 2001-09-14 2003-03-20 Koninklijke Philips Electronics N.V. USB authentication interface
US7202981B2 (en) * 2001-11-01 2007-04-10 Kuo-Jeng Wang Method and system for increasing scanning speed
DE60239011D1 (de) * 2001-12-03 2011-03-03 St Ericsson Sa Kommunikationsbussystem
US7420715B2 (en) * 2001-12-11 2008-09-02 Transpacific Ip, Ltd. Method and system for promoting scanning speed
US20030184960A1 (en) * 2002-03-28 2003-10-02 Compaq Information Technologies Group, L.P. Enumeration, manageability, and security of a KVM extension device
US6931461B2 (en) * 2002-06-14 2005-08-16 Intel Corporation Bus optimization based on network device communication
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
US6757776B1 (en) * 2002-07-17 2004-06-29 Cypress Semiconductor Corp. Control transaction handling in a device controller
DE60323992D1 (de) * 2002-07-17 2008-11-20 Fiberbyte Pty Ltd Synchronisierter mehrkanaliger universeller serieller bus
US7220908B2 (en) * 2002-09-12 2007-05-22 Yamaha Corporation Waveform processing apparatus with versatile data bus
US7460257B2 (en) * 2002-11-04 2008-12-02 Chen-Ho Lee Technique for transferring image information from a scanning apparatus
US7069373B2 (en) * 2002-11-07 2006-06-27 Nec Electronics America, Inc. USB endpoint controller flexible memory management
US7114105B2 (en) * 2002-12-05 2006-09-26 Qualcomm, Inc. System and method for software download to wireless communication device
US7185126B2 (en) * 2003-02-24 2007-02-27 Standard Microsystems Corporation Universal serial bus hub with shared transaction translator memory
US6959355B2 (en) * 2003-02-24 2005-10-25 Standard Microsystems Corporation Universal serial bus hub with shared high speed handler
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
US20050097198A1 (en) * 2003-10-08 2005-05-05 Getler Robert M. Printer monitoring system and method
US7127628B2 (en) * 2004-02-24 2006-10-24 Alcor Micro, Corp. Method for automatically regulating an oscillator
US20060227759A1 (en) * 2004-09-14 2006-10-12 Bohm Mark R Peripheral Sharing USB Hub
US20060059293A1 (en) * 2004-09-14 2006-03-16 Henry Wurzburg Universal serial bus switching hub
US7433990B2 (en) * 2006-01-24 2008-10-07 Standard Microsystems Corporation Transferring system information via universal serial bus (USB)
US7523243B2 (en) * 2006-04-14 2009-04-21 Standard Microsystems Corporation Multi-host USB device controller
US7480753B2 (en) * 2006-04-27 2009-01-20 Standard Microsystems Corporation Switching upstream and downstream logic between ports in a universal serial bus hub
US8081184B1 (en) * 2006-05-05 2011-12-20 Nvidia Corporation Pixel shader program thread assembly
US20080005262A1 (en) * 2006-06-16 2008-01-03 Henry Wurzburg Peripheral Sharing USB Hub for a Wireless Host
US20070297433A1 (en) * 2006-06-26 2007-12-27 Mediatek Inc. Method and apparatus for double buffering
WO2008029206A2 (en) * 2006-09-05 2008-03-13 Nokia Corporation Device interface
CN101237445B (zh) 2007-01-30 2013-01-02 世意法(北京)半导体研发有限责任公司 缓冲器管理方法和用于缓冲器管理及封装wusb分组的设备
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
JPWO2010007798A1 (ja) * 2008-07-18 2012-01-05 パナソニック株式会社 送受信装置
US7908421B2 (en) * 2008-09-30 2011-03-15 Intel Corporation Universal serial bus endpoint context caching
US8566934B2 (en) 2011-01-21 2013-10-22 Gigavation, Inc. Apparatus and method for enhancing security of data on a host computing device and a peripheral device
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
KR102039113B1 (ko) 2011-08-10 2019-10-31 기타 스리바스타바 호스트 컴퓨팅 디바이스와 주변기기의 데이터의 보안을 강화하기 위한 장치 및 방법
KR20160121325A (ko) 2015-04-11 2016-10-19 박원준 다기능 이동식 메모리 장치
US10515430B2 (en) * 2015-11-03 2019-12-24 International Business Machines Corporation Allocating device buffer on GPGPU for an object with metadata using access boundary alignment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1999008196A1 (en) * 1997-08-12 1999-02-18 Atmel Corporation A universal serial bus device controller
US5958027A (en) * 1997-08-05 1999-09-28 Advanced Micro Devices, Inc. Method and system for optimizing the flow of isochronous data and clock rate information

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4292683A (en) 1979-11-06 1981-09-29 Satellite Business Systems Guard band reduction in open loop TDMA communications
DE2945331C2 (de) 1979-11-09 1984-05-30 Nixdorf Computer Ag, 4790 Paderborn Vorrichtung in einer Signal-oder Datenverarbeitungsanlage zur Einstellung einer Signalverarbeitungsschaltung
DE3069762D1 (en) * 1980-08-26 1985-01-17 Ibm System for the retransmission of incorrectly received numbered frames in a data transmission system
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
JPH0341522A (ja) * 1989-07-10 1991-02-22 Fujitsu Ltd メッセージ紛失検出処理方式
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
EP0633678B1 (de) * 1993-06-29 2000-07-19 Alcatel Verfahren und Gerät für sequentielle Rückordnung
US5754754A (en) * 1995-07-26 1998-05-19 International Business Machines Corporation Transmission order based selective repeat data transmission error recovery system and method
US5745685A (en) * 1995-12-29 1998-04-28 Mci Communications Corporation Protocol extension in NSPP using an acknowledgment bit
US6185641B1 (en) 1997-05-01 2001-02-06 Standard Microsystems Corp. Dynamically allocating space in RAM shared between multiple USB endpoints and USB host
FI972040A (fi) 1997-05-13 1998-11-14 Nokia Telecommunications Oy Menetelmä pakettivälitteiseen tiedonsiirtoon
US6070208A (en) 1998-01-07 2000-05-30 National Semiconductor Corporation Apparatus and method for implementing a versatile USB endpoint pipe
US6205501B1 (en) 1998-01-07 2001-03-20 National Semiconductor Corp. Apparatus and method for handling universal serial bus control transfers
US6157975A (en) 1998-01-07 2000-12-05 National Semiconductor Corporation Apparatus and method for providing an interface to a compound Universal Serial Bus controller
US6122676A (en) 1998-01-07 2000-09-19 National Semiconductor Corporation Apparatus and method for transmitting and receiving data into and out of a universal serial bus device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5958027A (en) * 1997-08-05 1999-09-28 Advanced Micro Devices, Inc. Method and system for optimizing the flow of isochronous data and clock rate information
DE69801669T2 (de) * 1997-08-05 2002-06-20 Advanced Micro Devices Inc System und verfahren zur stromoptimierung von isochronen daten und taktrateninformation
WO1999008196A1 (en) * 1997-08-12 1999-02-18 Atmel Corporation A universal serial bus device controller
US5974486A (en) * 1997-08-12 1999-10-26 Atmel Corporation Universal serial bus device controller comprising a FIFO associated with a plurality of endpoints and a memory for storing an identifier of a current endpoint

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
USB specification Revision 1.0 vom 15.01.1996,S.1/ Internet: Download unter: http://www.peritek.com/m atterhorn_usb10doc.pdf
USB specification Revision 1.0 vom 15.01.1996,S.1/Internet: Download unter: http://www.peritek.com/matterhorn_usb10doc.pdf *

Also Published As

Publication number Publication date
US6678760B2 (en) 2004-01-13
DE19900245A1 (de) 1999-07-15
KR100290729B1 (ko) 2001-05-15
KR19990067763A (ko) 1999-08-25
US20020065966A1 (en) 2002-05-30

Similar Documents

Publication Publication Date Title
DE19900245B4 (de) Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
DE19900290B4 (de) Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung
DE19900325B4 (de) Vorrichtung und Verfahren zum Senden und Empfangen von Daten in eine und aus einer universellen seriellen Buseinrichtung
DE3204905C2 (de)
DE19900369B4 (de) Vorrichtung zum Anschluß an einen Universal Serial Bus (USB) und Verfahren zum Betreiben eines Steuerendpunktes an einem Universal Serial Bus (USB)
DE19900345B4 (de) Schnittstellenmodul für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion und Vorrichtung zum Anschluß an einen universellen seriellen Bus
DE3300261C2 (de)
DE19900369A9 (de) Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus
DE69634358T2 (de) Verzögerungsverringerung in der übertragung von gepufferten daten zwischenzwei gegenseitig asynchronen bussen
DE69825915T2 (de) Verfahren und vorrichtung zur umschaltung zwischen quellen-synchron-takt/- und gemeinsam-takt-datenübertragungs-modi in einem mehragent-übertragungs-system
DE2647241C2 (de) Übertragungseinrichtung für die synchrone Datenübertragung
DE19900345A9 (de) Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses
DE19900331A1 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE3300260C2 (de)
DE69432726T2 (de) Verfahren und System zur seriellen Datenübertragung
DE3238532C2 (de)
DE3152435C2 (de)
DE60309391T2 (de) Datenübertragungssteuerungssystem, Programm und Datenübertragungssteuerungsverfahren
DE19900290A9 (de) Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung
DE60205305T2 (de) Datensteueranlage, elektronisches Gerät und Verfahren zur Übertragungssteuerung
DE19900251B4 (de) Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals
DE3301628A1 (de) Schaltungsanordnung fuer den datenaustausch zwischen zwei rechnern
EP0929041A2 (de) Verfahren und Anordnung zum Betreiben eines Bussystems
DE19539519A1 (de) Antriebssteuerbefehlseinheit, Synchronsteuersystem für eine Vielzahl von Antriebssteuerbefehlseinheiten, und Synchronsteuerverfahren für die Einheiten
DE4142756A1 (de) Datenweg-einrichtung zur kopplung zweier busse

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection
8170 Reinstatement of the former position
8364 No opposition during term of opposition
R082 Change of representative
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee