DE19900345B4 - 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 - Google Patents

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 Download PDF

Info

Publication number
DE19900345B4
DE19900345B4 DE19900345A DE19900345A DE19900345B4 DE 19900345 B4 DE19900345 B4 DE 19900345B4 DE 19900345 A DE19900345 A DE 19900345A DE 19900345 A DE19900345 A DE 19900345A DE 19900345 B4 DE19900345 B4 DE 19900345B4
Authority
DE
Germany
Prior art keywords
endpoint
state
usb
buffer
channel
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
DE19900345A
Other languages
English (en)
Other versions
DE19900345A9 (de
DE19900345A1 (de
Inventor
David Brief
Kent Bruce Waterson
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 DE19900345A9 publication Critical patent/DE19900345A9/de
Application filed by National Semiconductor Corp filed Critical National Semiconductor Corp
Publication of DE19900345A1 publication Critical patent/DE19900345A1/de
Application granted granted Critical
Publication of DE19900345B4 publication Critical patent/DE19900345B4/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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

Schnittstellenmodul (120) für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion, das Schnittstellenmodul (120) aufweisend:
– eine Endpunktkanal-Anordnung (522) zum Halten eines Steuerworts für jeden einer Vielzahl von Endpunktkanälen, wobei jedes Steuerwort Informationen über den Endpunktkanal-Zustand und eine Adresse zum Zeigen auf einen Speicherpuffer (526) umfaßt; und
– ein Endpunkt-Befehlsregister (510) zum Empfangen von Befehlen von einer USB-Funktion, wobei das Endpunkt-Befehlsregister (510) einen ersten und einen zweiten Teil aufweist, die Daten enthalten, die eine Endpunkt-Nummer bzw. einen Befehl darstellen, und wobei der Empfang eines Befehls das Schnittstellenmodul veranlaßt, die Information über den Endpunktkanal-Zustand eines mittels der Endpunkt-Nummer angezeigten Endpunktkanals dem Befehl entsprechend zu verändern.

Description

  • Die Erfindung betrifft ein Schnittstellenmodul für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion, insbesondere die Bereitstellung einer Synchronisation zwischen einem Hardware-Schnittstellenmodul und der Steuersoftware.
  • Der USB ist eine normierte Peripherieschnittstelle für den Anschluß von Personalcomputern an eine große Vielzahl von Geräten, beispielsweise digitale Telefonleitungen, Monitore, Modems, Mäuse, Drucker, Scanner, Spielcontroller, Tastaturen und andere Peripheriegeräte. Der USB ersetzt deshalb bekannte Schnittstellen, wie serielle Anschlüsse RS-232C, parallele Anschlüsse, PS/2-Schnittstellen und Spiel/MIDI-Anschlüsse.
  • Beim USB nutzen alle angeschlossenen Geräte, die mit einem Personalcomputer mit Hilfe einer einzigen Verbindungsart verbunden sind, einen "Tiered Star"-Aufbau. Ein Host-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.
  • Die USB-Hubs und -Geräte können ohne einen kompletten Neustart des USB-Netzwerkes miteinander verbunden oder voneinander getrennt werden. Auf die Verbindung eines Gerätes oder eines Hubs an einen Aufwärts-Hub wird der Aufwärts-Hub den Host-Controller über eine Statusänderung informieren. Gemäß dem USB-Protokoll wird der Host-Controller den Anschluß des Hubs aktivieren, an welchen das Gerät angeschlossen wurde. Der Host-Controller wird anschließend jedem Gerät eine einmalige funktionelle Adresse zuweisen. Die Anschlüsse werden bei der Zuweisung der einmaligen funktionellen Adressen durch den Host-Controller, 102 der Reihe nach aktiviert. Nach dem Anschluß eines Verbindungsgerätes weist der Host-Controller jedem Gerät in dem Verbindungsgerät eine einmalige funktionelle Adresse zu.
  • Eine USB-Funktion ist ein Teil eines USB-Gerät, welches in der Lage ist, Informationen auf dem Bus zu übertragen und zu empfangen. Eine Funktion kann eine oder mehrere Konfigurationen haben, wobei jede aus einem oder mehreren Endpunkten gebildet ist.
  • Ein Endpunkt ist das Datenzuflußende oder Datenabflußende. Ein Endpunktkanal dient der Bewegung der Daten zwischen USB und Speicher, und vervollständigt den Weg zwischen dem USB-Host und dem Endpunkt der Funktion. Ein USB-Gerät kann zu jeder Zeit bis zu 16 derartige Endpunktkanäle unterstützen. Jeder Endpunktkanal hat dieselbe funktionelle Adresse.
  • Bei der Initialisierung eines Gerätes assoziiert der Host-Controller einen Kanal mit den Endpunkt-Funktionen. Der Kanal ermöglicht es dem Host-Controller Daten in und aus einem Host-Speicherpuffer an die und von den Endpunkten zu bewegen. Auf dem USB können zwei Arten von Kanal-Kommunikationsbetriebsarten implementiert werden: Strom und Nachricht. Stromdaten haben keine definierte USB-Struktur. Nachrichtendaten haben eine definierte USB-Struktur.
  • Nachdem der Initialisierungsprozeß abgeschlossen ist, können die Endpunktkanäle speziellen Endpunkten zugeordnet werden. Entsprechend wird Geräten mit einer Vielzahl von Endpunkt-Funktionen eine Vielzahl von Kanälen zugeordnet, die jeder mit einem speziellen Endpunkt verbunden sind.
  • Jeder Endpunkt ist eine adressierbare Einheit auf dem USB. Von ihnen wird verlangt, daß sie auf Token von dem USB-Host-Controller antworten.
  • Obwohl ein Gerät ein Vielzahl von Endpunkt-Funktionen umfassen kann, arbeiten diese Endpunkt-Funktionen nicht notwendigerweise gleichzeitig. Beispielsweise kann ein Multi-Funktionsgerät eine Fax- und eine Digitaltelefon-Funktion umfassen. Im Verlauf der Initialisierung wird dem Multi-Funktionsgerät eine einmalige funktionelle Adresse zugewiesen, und die Fax- und die Digitaltelefonfunktion werden jeweils mit unterscheidbaren Endpunkt-Zahlen verbunden. Während der Initialisierung werden in gleicher Weise Ausganskanäle zur Datenübertragung jeder Funktion zugeordnet. Ein Ausgangskanal ist mit einer Endpunkt-Nummer für die Fax-Funktion assoziiert und ein Ausgangskanal ist mit einer Endpunkt-Nummer für die Druckerfunktion assoziiert. Ein Fax und ein Digitaltelefon werden typischerweise jeder einen isochronen Ausgangskanal verlangen, weil ihre Transaktionen im Echtzeitbetrieb erfolgen sollten.
  • Das Betreiben eines USB-Geräts schließt typischerweise ein Schnittstellenmodul ein, welches mit einem USB-Netzwerk verbunden ist. Das Schnittstellenmodul umfaßt eine Programmierschnittstelle, auf welche für jede Operation einer Endpunkt-Funktion zugegriffen werden kann. Die Endpunkt-Funktion schickt Daten an einen Endpunktkanal, so daß diese über ein USB- Netzwerk übertragen werden können. In gleicher Weise empfängt die Endpunkt-Funktion Daten von einem Endpunktkanal zur Nutzung durch die Funktion.
  • Um derartige Operationen über ein USB-Netzwerk ausführen zu können, muß die Funktion die Aktionen auf dem Schnittstellenmodul sorgfältig koordinieren. Beispielsweise muß die Funktion sichern, daß Bulk (Massen-)-Übertragungen ohne Fehler abgeschlossen werden. Dieses verlangt das Bereitstellen und Akzeptieren passender Handshakes (Quittierungen) mit einem Host-Controller. Die Zeit, die eine Funktion zur Ausführung derartiger Handshakes benutzt, begrenzt deren Fähigkeit, andere Operationen auszuführen. Weiterhin können auf einem verrauschten USB-Netzwerk viele der übertragenen Daten beschädigt werden. Dies erschwert die Arbeit der Funktion, welche passende Antworten auf beschädigte Daten liefern muß.
  • WO 99/08196 offenbart einen Mehrzweck-USB-Controller mit einer seriellen Schnittstelle zur Verbindung mit einem Host. Die Schnittstelle kann eine Trennungs-Nerbindungssequenz simulieren, wenn ein Reboot der Vorrichtung vorgesehen ist. Der USB-Controller umfaßt Endpunkt-Steuerregister, die für jeden Endpunkt Steuerinformationen enthalten. Diese Steuerinformationen sind in einem Byte pro Endpunkt gespeichert. Die Anmeldung wurde nach dem Prioritätstag dieser Anmeldung veröffentlicht.
  • Die Druckschrift EP 0 772 130 A1 betrifft die Übertragung von Kommentaren und zugehörigen Daten für einen Cache-Speicher. Einzeldaten werden übertragen, die mit einem Befehl verknüpft sind, welcher zu einer Einrichtung übertragen wird, die einen Cache-Speicher umfaßt, welcher eine Vielzahl virtueller Geräte vorsieht. Der Puffer ist für eine ATM-Netzschnittstelle vorgeehen.
  • Deshalb besteht Bedarf an einem USB-Schnittstellenmodul, welches eine effiziente Programmierschnittstelle für eine Funktion liefert, und welches von der Funktion einen minimalen Aufwand für die Ausführung der Antworten auf typische USB-Netzwerk Bedingungen erlaubt.
  • Aufgabe der Erfindung ist es, eine effiziente Schnittstelle für eine Funktion zu schaffen.
  • Aufgabe der Erfindung ist es, die Synchronisation zwischen der Hardware eines USB-Geräts und der Steuersoftware zu verbessern.
  • Aufgabe der Erfindung ist es weiterhin, ein Programmiermodel mit definierten Endpunkt-Zuständen zu schaffen.
  • Es ist weiterhin Aufgabe der Erfindung, ein Endpunkt-Befehlsregister zur Steuerung von Operationen eines Endpunktes mittels einer Funktion zu schaffen.
  • Es ist Aufgabe der Erfindung, auf Datentransaktionen ohne die Intervention einer Funktion zu antworten.
  • Es ist weiterhin Aufgabe der Erfindung, einer Funktion zu ermöglichen, alle Pakete für eine Transaktion gleichzeitig zu etablieren.
  • Aufgabe der Erfindung ist es weiterhin, ein einzelnes leicht erweiterbares Programmiermodel zur Handhabung aller Arten von Endpunkten und Schnittstellen zu schaffen.
  • Die Erfindung sieht ein Schnittstellenmodul für einen Universellen Seriellen Bus mit den Merkmalen von Anspruch 1 und eine Vorrichtung zum Anschluß an einen Universellen Seriellen Bus (USB), gemäß Anspruch 17 vor.
  • Dies und andere Aufgaben, Eigenschaften und Vorteile sind in der folgenden Beschreibung und den dazugehörigen Zeichnungen offenbart.
  • 1 zeigt ein Blockdiagramm eines USB-Geräts mit einem erfindungsgemäßen Schnittstellenmodul.
  • 2 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform eines erfindungsgemäßen Schnittstellenmoduls für ein USB-Gerät.
  • 3 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform des Endpunkt-Controllers gemäß 2.
  • 4 zeigt ein Blockdiagramm einer bevorzugten Ausführungsform eines Abbildungsregisters.
  • 5 zeigt ein Blockdiagramm mit einer bevorzugten Ausführungsform eines Programmiermodels für ein USB-Gerät.
  • 6 zeigt ein Flußdiagramm einer bevorzugten Ausführungsform von Zuständen und Zustandsübergängen des Endpunktes während einer Steuertransaktion.
  • 7 zeigt ein Flußdiagramm einer bevorzugten Ausführungsform mit Zuständen und Zustandsübergängen des Endpunktes.
  • Die in dieser Anmeldung beschriebene Erfindung ist Bestandteil einer größeren Anzahl von Erfindungen, die in weiteren Patent-anmeldungen desselben Anmelders offenbart sind, und die mittels Referenz zum Bestandteil der vorliegenden Anmeldung gemacht werden. Es handelt sich um die folgenden Patentanmeldungen: (i) US-Patentanmeldung Nr. 09/003,963 mit dem Titel "Apparatus and Method of Implementing a Versatile USB Endpoint Pipe", (ii) US-Patentanmeldung Nr. 09/004,003 mit dem Titel "An Apparatus and Method for Implementing a USB Endpoint Pipe with Double Buffering Support", (iii) US-Patentanmeldung Nr. 09/004,004 mit dem Titel "An Apparatus and Method for Transmitting and Receiving Data Into and Out of a Universal Serial Bus Device", (iv) US-Patentanmeldung Nr. 09/003,897 mit dem Titel "Apparatus und Method of Transmitting and Reiceiving USB Isochronous Data", (v) US- Patentanmeldung Nr. 09/004,002 mit dem Titel "An Apparatus and Method for Handling Universal Serial Bus Control Transfers", und (vi) US-Patentanmeldung Nr. 09/003,925 mit dem Titel "An Apparatus and Method for Initializing a Universal Serial Bus Device".
  • Darüberhinaus ist das Dokument "USB Node Interface Architecture Specification" (Version 0.6) der National Semiconductor Corporation als Anhang A Bestandteil der vorliegenden Anmeldung.
  • Unter Bezugnahme auf 1 wird ein erfindungsgemäßes USB-Gerät 110 beschrieben. Die bevorzugte Ausführungsform des Geräts erfüllt die USB-Vorschrift, Version 1.0. Sie weist jedoch gegenüber herkömmlichen USB-Geräten eine Anzahl von Vorteilen auf. Das USB-Gerät 110 umfaßt ein USB-Schnittstellenmodul 120, eine Registergruppe 114, einen RAM 112 und eine Bus-Schnittstelleneinheit (BIU) 116. Das Schnittstellenmodul ist mit einem USB-Netzwerk verbunden, um Daten senden und empfangen zu können.
  • Das Schnittstellenmodul 120 ist auch mit der Registergruppe 114, dem RAM 112 und der BIU 116 über einen Kernbus 118 verbunden. Der Kernbus 118 ermöglicht dem Schnittstellenmodul 120 den Zugriff auf die Registergruppe 114 und den RAM 112. Die BIU 216 liefert mittels der Ausführung von Schreib- und Leseübertragungen als ein Master Zugriff auf den Kern-Adressraum, und liefert Registerzugriff als ein Slave. Zusätzlich stellt die BIU eine Datenleitung zur Verfügung. Die Datenleitung kann genutzt werden, um Daten zeitweise auf Ihren Weg zu einem Speicherstelle zu halten.
  • In 2 ist das USB-Schnittstellenmodul 120 aus 1 beschrieben. Das USB-Schnittstellenmodul 120 liefert die Schnittstelle, um ein USB-Gerät 110 mit einem USB-Netzwerk zu verbinden. Das Schnittstellenmodul 120 umfaßt einen integrierten USB-Sender-Empfänger 214, eine serielle Schnittstellenmasehine (SIE) (212) und den Endpunkt-Controller 210.
  • Der Sender-Empfänger 214 liefert die physikalische Schnittstelle mit einem USB-Netzwerk. Der Sender-Empfänger umfaßt zwei Treiber und Empfänger, welche die physikalischen Schichtvorschriften der Version 1.0 der USB-Vorschriften erfüllen.
  • Die serielle Schnittstellenmaschine 212 ist betreibbar mit dem Sender-Empfänger 214 verbunden und weist ein physikalisches (PHY)-Niveau und ein Medienzugriffs-Steuer (MAC)-Niveau auf. Das physikalische Niveau umfaßt einen digitalen Zeittakt-Wiederaufnahmeschaltkreis, einen digitalen Pannenfilter, einen End_Of_Packet-Erkennungsschaltkreis und einen Bit-Stuff-und Bit-Destuff-Logikschaltkreis auf.
  • Das Medienzugriffs-Steuerniveau umfaßt ein Paket zur Formatierung, zur Erzeugung und zur Überprüfung der zyklischen Redundanzüberprüfung, und zur Erkennung der Endpunktadresse, und liefert die notwendige Steuerung, für das Geben der durch den Endpunkt-Controller 210 für den spezifizierten Endpunktkanal bestimmten NAK-, ACK- und STALL-Antworten. Die serielle Schnittstellenmaschine 212 ist auch dafür verantwortlich, daß USB-spezifische Ereignisse, wie ein Reset, Suspend und Resume erkannt und übermittelt werden.
  • Der Endpunkt-Controller 210 ist betreibbar mit der seriellen Schnittstellenmaschine 212 verbunden und liefert die Schnitt-stelle für die USB-Funktionsendpunkte.
  • Der Endpunkt-Controller 210 arbeitet als ein Master/Slave auf dem Kernbus 118 und unterstützt alle USB-Endpunkt-Klassen: Steuerung, Bulk, Isochron und Interrupt. Der Slave-Zugriff wird benutzt, um auf interne Steuerregister der Registergruppe 114 zuzugreifen. Der Master-Zugriff wird benutzt, um Daten zwischen Endpunkten und einem RAM 112 zu übertragen.
  • Der Endpunkt-Controller 210 bewahrt separate Zustandsinformation für jeden Endpunktkanal. Zustandsinformation, die für unmittelbare Entscheidungen verlangt wird, wie z.B. zum Antworten mit einem NAK- oder STALL-Handshake, wird in dem Endpunkt-Controller 210 zu jeder Zeit für alle Endpunktkanäle in einem teilweisen Endpunktkanal-Speicher gehalten.
  • Diese Information wird benutzt, um die Medienzugriffs-Steuerschicht der seriellen Schnittstellenmaschine 212 beim Geben der passenden ACK-, NAK- und STALL-Antwort zu führen. Andere für den Endpunkt-Betrieb notwendige Information wird in einer Entpunkt-Anordnung des RAMs 112 gehalten.
  • Unter Bezugnahme auf 3 wird die Struktur des Endpunkt-Controllers 210 im Detail beschrieben. Der Endpunkt-Controller 210 umfaßt einige funktionelle Blöcke. Insbesondere umfaßt der Endpunkt-Controller 210 eine Medienzugriffs-Steuerschnittstelle 302, einen Gerätefunktionsblock 304, eine Endpunkt-Zu-standsmaschine 306, einen Endpunktkanal-Teilspeicher (PEPS) 308, einen Adressgenerator 310 und ein Daten-Ausrichtungsmultiplexer 312.
  • Die Medienzugriffs-Steuerschnittstelle 302 ist mit der Endpunkt-Zustandsmaschine 306 und dem Daten-Ausrichtungsmultiplexer 312 verbunden, um für das Medienzugriffs-Steuerniveau der seriellen Schnittstellenmaschine 212 eine Schnittstelle zu liefern. Einige Bereiche des Endpunkt-Controllers 202 arbeiten mit einem Taktgeber auf dem Kernbus 118. Andere Bereiche arbeiten mit einem lokalen Taktgeber des Endpunkt-Controllers 210. Die Medienzugriffs-Steuerschnittstelle 302 synchronisiert die Datenbytes zwischen den verschiedenen Bereichen mit einem asynchronen Handshake für jedes aus dem Endpunkt-Controller 210 übertragene Byte.
  • Der Gerätefunktionsblock 304 führt Gerätefunktionen aus, wie die Adressüberprüfung und – erzeugung. Der Gerätefunktionsblock ist betreibbar mit der Endpunkt-Zustandsmaschine 306 verbunden, um Informationen in Bezug auf den Endpunktkanal zu liefern, auf welchen gegenwärtig zugegriffen wird.
  • Die Endpunkt-Zustandsmaschine 306 führt Funktionen bezüglich der Bewahrung des Zustandes eines aktiven Endpunktkanals aus. Die Zustandsmaschine 306 bewahrt den Zustand eines aktiven Endpunktkanals mit definierten Übergängen, um Hardware- und Software-Wechselwirkungen zu synchronisieren. Der gegenwärtige Zustand ist für einen Host- Controller über ein Endpunkt-Zustandsregister sichtbar. Alle Endpunktkanäle teilen sich deshalb die Endpunkt-Zustandsmaschine 306.
  • Der Endpunktkanal-Teilspeicher 308 speichert zu jeder Zeit für jeden Endpunktkanal Zustandsinformationen, welche für unverzügliche Entscheidungen, wie das Antworten mit einem NAK- oder STALL-Handshake verlangt wird.
  • Der Adressgenerator 310 liefert die Adressen, die für das Lesen und Schreiben in den RAM über den Kernbus notwendig sind.
  • Der Daten-Ausrichtungsmultiplexer 312 stellt die vor der Übertragung auf dem Kernbus notwendigen Datenbyte-Ausrichtungen zur Verfügung.
  • Eine bevorzugte Ausführungsform der erwähnten Endpunktkanal-Anordnung wird im folgenden im Detail beschrieben. In 5 ist ein bevorzugtes Programmierungsmodell gezeigt. Das Programmierungsmodel zeigt eine Vielzahl von Registern 510, welche dazu genutzt werden, die Operationen auf einem USB-Gerät zu steuern und zu überwachen. Das Modell umfaßt weiterhin eine in dem Speicher 520 angeordnete Endpunktkanal-Anordnung 522. Die Endpunktkanal-Anordnung 522 wird benutzt, um die für eine bestimmte Endpunkt-Übertragung spezifischen Endpunkt-Parameter zu steuern.
  • Teile der Registergruppe 510 und Teile des Speichers 520 sind aufeinander abgestimmt, um eine spezielle Endpunkt-Übertragung zu überwachen und zu steuern. In 5 ist auch eine bevorzugte Ausführungsform der Beziehung zwischen der Registergruppe 510 und dem Speicher 520 dargestellt.
  • Die Endpunktkanal-Anordnung 522 umfaßt für jeden der sechzehn Endpunktkanäle ein erstes Steuerwort CW0 und ein zweites Steuerwort CW1. Die Endpunktkanal-Anordnung 522 ist in dem Speicher auf einer Adresse angeordnet, die in einem Endpunkt-Anordnungs-Basisadressregister (EABAR) 512 gespeichert ist. Diese Endpunktkanal-Anordnung ist mit tels einer vier-Bit-Endpunktkanal-Zahl und eines Ein-Bit-Endpunktkanal-Steuerwortzeigers indiziert. Wie dargestellt ist, zeigt eine Endpunkt-Zahl von null, EP0 532 auf das erste Paar Steuerwörter in der Endpunktkanal-Anordnung 522. In gleicher Weise zeigt EP1 534 auf das zweite Paar Steuerwörter, und EP2 536 zeigt auf das dritte Paar usw. EP15 538 zeigt auf das letzte Paar der Steuerwörter in der bevorzugten Ausführungsform.
  • Die Steuerwörter umfassen die gesamte verlangte Information, um einen aktiven Endpunktkanal zu betreiben. Wie in dem Block 524 dargestellt ist, weist jedes Steuerwort die Information über den Zustand, den Parameter, die Adresse und den Umfang eines Endpunktkanales auf. Es existieren zwei solche Einträge für jeden Endpunktkanal. Mittels des Wertes des Endpunktkanal-Steuerwortzeigers CWP wird das Steuerwort bestimmt, auf welches als nächstes zugegriffen wird.
  • Unmittelbar nach dem Empfang eines IN-, OUT- oder SETUP-Tokens an einem gegenwärtig in einem Ready-Zustand befindlichen Endpunktkanal wird das Steuerwort des ausgewählten Endpunktkanales am gegenwärtigen Steuerwort-Zeiger gelesen, um zu bestimmen, wie auf den Token zu antworten ist. Wenn am Ende einer Übertragung der Abschluß-Status geschrieben ist, wird das Steuerwort mit dem gegenwärtigen Status aktualisiert, das CWP wird inkrementiert, und das andere Steuerwort wird gelesen. Wenn ein Zwischenstatus geschrieben wird, wird nur das signifikanteste Byte des Steuerworts aktualisiert. Das Format des Steuerwortes ist im folgenden dargestellt:
    Bits Funktionsbezeichnung
    31 – 28 Buffer State (Pufferzustand)
    27 (Reserviert)
    26 – 16 Buffer Address BA (Pufferadresse)
    15 Buffer Page BP (Pufferseite)
    14 Buffer Rounding (Pufferrunden)
    13 Toggle Enable TE (Umschaltaktivierung)
    12 Type Isochronous TI
    11 Interrupt on Packet Complete (Interrupt auf Paketabschluß)
    10 Interrupt on Packet Error IE (Interrupt auf Paketfehler)
    9 – 0 Byte Count BC (Byte-Zähler)
  • Der 4-Bit-Pufferzustand BS ist ein Paket des Steuerwortes, welches für die Anwendung der Erfindung relevant ist. Der Pufferzustand wird mittels Software und mittels des Endpunkt-Controllers (EPC) aktualisiert, um die Steuerung dieses Puffers und zwischen den Puffern zu synchronisieren. Der EPC schreibt den die Nutzung des Puffers anzeigenden Status. Dieses Feld wird mittels Firmware für den Knoten auf Output Ready, Input Ready, Setup Ready, Skip, Stall und Disable (siehe unten) gesetzt. Alle anderen Werte werden mittels des EPC gesetzt. Der STALL- und der Disable-Wert können von dem EPC bei Fehlerbedingungen geschrieben werden. Der Puffer kann mittels Knoten-Firmware wieder beansprucht werden, wenn der Pufferzustand irgendein Complete (Fertigstellungs-)-Wert ist. Dieses umfaßt den Eingangs-/Ausgangs-Complete-Status und die Fehlercode.
  • 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 inkrementiert 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 geschaltet 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 zurü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 behandelt 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 betracht wird, wird ein erneuter Versuch erwartet. Die Ausnahme ist der Fall eines isochronen Out-Endpunktes, bei dem es als ein Fertigstellungs-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 gelesen, 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 Eingabeoperation 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 momentanen Kontext dieses Steuer-Endpunktkanals empfangen wurde. Wenn dieses ein Ausgabepuffer 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 Abschlußstatus betrachtet.
    • 11: Isochronous Synchronization Error SYNE. Dieser Wert zeigt an, daß Daten in einem Puffer 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 einzunehmen, oder zeigt an, daß der Endpunkt den HALT-Zustand eingenommen hat.
    • 15: Disable. Dieses bringt den momentanen Endpunktkanal dazu, seinen DISABLE-Zustand einzunehmen, oder zeigt an, daß der Endpunktkanal den DISABLE-Zustand eingenommen hat.
  • Die Puffer-Adresse BA hält die unteren 11 Bits der Pufferadresse. Puffer müssen an einer ausgerichteten Doppelwort-Grenze beginnen und können an jeder Byte-Grenze enden. Am Ende aller abgeschlossenen Übertragungen wird der verbleibende Wert der Pufferadresse 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.
  • Das Puffer-Seiten-Bit, BP, wählt zwischen einem Puffer-Seiten-A-Register, BPA 512, und einem Puffer-Seiten-B-Register, BPB 516 aus. Das BP wählt das BPA in einem Null-Zustand und wählt das BPB in einem Zustand, in dem es als die obere Speicheradresse des gegenwärtigen Eingangs-/Ausgangspuffers benutzt wird.
  • Das Pufferrundungsbit BR wird für Out-Transaktionen genutzt. Es zeigt an, ob ein empfangenes Datenpaket kleiner als der Datenpuffer sein kann. Wenn das BR null ist, sollte das Datenpaket den definierten Datenpuffer exakt füllen. Ein Pufferüberlauf- oder Pufferunterschreitungs-Status wird angezeigt, wenn das Paket nicht exakt in den Puffer paßt.
  • Wenn das BR zusammen mit einem Ausgangsabschluß- oder Datenfehler-Pufferstatus gelesen wird, zeigt das BR den Wert des empfangenen PIDs an. Es ist null für DATA0 und 1 für DATA1.
  • Das Toggle-Enable-Bit (Umschaltaktivierungs-Bit), TE, wird benutzt, um den. Steuerwort-Zeiger für ein OUT-Token mit dem Datenpaket-Identifizierer, PID, welcher einen Wert von entweder DATA0 oder DATA1 hat, zu vergleichen, und wird benutzt, um einen Datenpaket-Identifizierer für einen IN-Token zu erzeugen.
  • Wenn das TE in einem Null-Zustand ist, wird das Daten-Toggle-PID einer OUT-Transaktion nicht überprüft. Das Daten-Toggle-PID wird auf der Basis des gegenwärtigen Wertes des CWP als Antwort auf IN-Token erzeugt. Das CWP wird nach jeder Transaktion inkrementiert (invertiert), auch wenn ein ACK nicht empfangen wurde. Für Isochrone Endpunkte werden OUT-Daten nicht in dem Speicher geschrieben, bis das CWP gleich dem letzten signifikanten Bit der Frame-Zahl, FNR, ist. Dieses hat keinen Einfluß auf die als Antwort auf die IN-Token gesendeten Daten. Das Datenumschalten sollte nicht für Puffer aktiviert werden, die zugeordnet wurden, um Daten mit einem SETUP-Token zu empfangen.
  • Wenn das TE in einem Eins-Zustand ist, wird das Daten-Toggle-PID einer OUT-Transaktion geprüft. Das Daten-Toggle-PID wird auf der Basis des gegenwärtigen Wertes des CWP als Antwort auf IN-Token erzeugt. Für OUT-Transaktionen verursacht das TE, daß ein ACK als Antwort auf die OUT-Pakete gesendet wird, dessen PID-Wert (DATA0 oder DATA1) nicht mit dem CWP übereinstimmt. Für IN-Transaktionen wird das CWP nur nach jeder Transaktion inkrementiert (invertiert), wenn innerhalb der Antwortzeitperiode ein ACK-Handshake zurückgesendet wurde. Für Isochrone Endpunkte werden die OUT-Daten immer in den Speicher geschrieben. Wenn jedoch das letzte signifikante Bit der FNR nicht gleich dem CWP ist, wird der ISO-Sync-Fehlerpufferzustand zurückgeschrieben.
  • Das Isochron-Typenbit TI zeigt an, ob der Endpunktkanal isochron ist. Wenn das TI in einem Eins-Zustand ist, sind die Daten isochron. Wenn das TI in einem Null-Zustand ist, kann der Endpunktkanal ein Steuer-, Bulk- oder Interrupt-Endpunktkanal sein.
  • Ein Interrupt-Paketabschluß-Bit, IC, wird immer gesetzt, wenn der Pufferstatus nach einem Paketfehler auf Eingangs- oder Ausgangsabschluß geschrieben wird, oder wenn der Endpunktkanal verstopft ist.
  • Ein Interrupt-Paketfehler-Bit, IE, wird immer gesetzt, wenn der Pufferstatus auf einen der Puffer-Fehlercodes geschrieben wird, oder wenn der Endpunkt verstopft ist.
  • Wenn das IC und der IE gesetzt sind, veranlassen die CRC- und Bit-Stuff-Fehler, daß die entsprechenden Puffer nicht in einer normalen Operation erneut genutzt werden. Dieses ermöglicht die nachfolgende diagnostische Überprüfung der entsprechenden Puffer.
  • Byte-Zählbits, BC, zeigen den Umfang des zu nutzenden Datenpuffers an. Ein Puffer muß an einer geraden Doppelwortgrenze beginnen, kann jedoch an jeder beliebigen Byte-Grenze enden. Für IN-Transaktionen zeigt das BC den Umfang der zu übertragenden Daten an. Für OUT-Transaktionen zeigt das BC den Umfang des Puffers an, in welchem die Daten empfangen werden können. Das BC kann eine Null halten, um ein Null-Längen-Datenpaket anzuzeigen. Am Ende aller abgeschlossenen Übertragungen wird der Restwert des Byte-Zählers geschrieben. Am Ende einer nicht abgeschlossenen Übertragung, z.B., wenn der Status Eingangs- oder Ausgangswarten anzeigt, wird dieses Feld nicht überschrieben.
  • Bei einer bevorzugten Ausführungsform weist das Endpunkt-Befehl-Register, ECR 518, die Breite eines Wortes auf, und ist ein Lese-/Schreibregister. Das ECR 518 wird genutzt, um Befehle an einem spezifizierten Endpunkt auszuführen. Durch ein Reset wird das Register geleert. Das ECR-Registerformat ist im folgenden dargestellt:
    Bits Funktionsbezeichnung
    15 – 8 (Reserviert)
    7 – 4 Endpoint Pipe Number (EPN) (Endpunktkanal-Zahl)
    3 – 0 Endpoint Command (CMD) (Endpunkt-Befehl)
  • Die Endpunktkanal-Zahl EPN bestimmt den Endpunktkanal, auf welchem der Befehl ausgeführt wird. Bei einer bevorzugten Ausführungsform kann dieses Register in die Hochgeschwindigkeits-Bus-Schnittstellenlogik implementiert sein. Die Daten laufen über die asynchrone 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 auszufü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 geschrieben 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 ignoriert. 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 momentan 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. Diese Befehk1 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 Zustand 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 Steuerwort-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 anzuzeigen, 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 Output Ready-Zustand in die Endpunkt-Anordnung für den entsprechenden Endpunkt geschrieben 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 ignoriert. Wenn der gegenwärtige Zustand der Input-, der Stall- oder der Disable-Zustand ist, dann wird ein "F" zurückgesendet, um anzuzeigen, daß versucht wurde, einen nicht ausführbaren Befehl an diesen Endpunkt auszuführen.
    • 0110: Output Isochronous Enable (CMD.OSENB). Dieser Wert veranlaßt den spezifizierten Endpunktkanal aus dem Stall- oder Disable-Zustand in den Output Isochronous Idle-Zustand OS_IDL zu gehen. Der Steuerwort-Zeiger führt den spezifizierten Endpunkt wird auf 0 ge setzt. Wenn der gegenwärtige Zustand nicht der Disable- oder Stall-Zustand ist, wird ein "F" zurückgesendet, um anzuzeigen, daß versucht wurde, einen nicht ausführbaren Befehl an diesem 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 veranlaß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" zurü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 entsprechenden 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 Endpunktkanal gegenwärtig aktiv ist, wird der Status in die Steuerung geschrieben, so daß angezeigt ist, daß der Endpunkt nicht aktiviert ist.
    • 1010: Stall (CMD.HALT). Dieser Wert veranlaßt den spezifizierten Endpunkt aus einem beliebigen 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ärtigen Endpunktkanals nicht ausführbaren Befehl auszuführen, und daß ein neuer Befehl aufgenommen werden kann.
  • Der für die Erfindung in der vorliegenden Anwendung relevante Teil des UDR 519 ist der 8-Bit-Entpunktkanal-Zustand. Dieser Zustand wird für jeden Endpunkt gespeichert, der für den gegenwärtig indizierten Endpunktkanal zurückgesendet wird. Wenn ein ungültiger Endpunktkanal indiziert ist, wird eine 0 zurückgesendet. Das UDR-Registerformat ist im folgenden dargestellt:
  • Bits Funktionsbezeichnung
    7 Control (CTL)
    6 Control Word Pointer (CWP) (Steuerwort-Zeiger)
    5 – 4 (Reserviert)
    3 – 0 Endpoint Pipe State (EPS) (Endpunktkanal-Zustand)
  • Control CTL: Dieses wird geltend gemacht, wenn dieser Endpunktkanal in der Lage ist, Steuersequenzen 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 gesetzt, wenn der Endpunkt aktiviert ist.
  • Der Endpunktkanal-Zustand (EPS) kann die folgenden Werte annehmen:
    Wert Zustand
    0 Disabled DIS
    1 Input Idle I_IDL
    2 Input Ready I_RDY
    3 Input Active I_ACT
    4 Stalled HALT
    5 Input Missed ACK I_MAK
    6 Input Isochronous Ready IS_RDY
    7 Input Isochronous Active IS_ACT
    8 Setup Ready S_RDY
    9 Output Idle O_IDL
    10 Output Ready O_RDY
    11 Output Active O_ACT
    12 Setup Active S_ACT
    13 Output Isochronous Idle OS_IDL
    14 Output Isochronous Ready OS_RDY
    15 Output Isochronous Active OS_ACT
  • Bei einer bevorzugten Ausführungsform ist zu jeder Zeit nur ein Endpunktkanal aktiv.
  • Bei einer bevorzugten Ausführungsform bewahrt jeder Endpunktkanal einen Zustand mit definierten Bedingungen für die Übertragung zwischen den Zuständen, welche eine impliziete Hardware/Software-Synchronisation umfassen.
  • Übergänge zwischen Endpunkt-Zuständen erfolgen:
    • – auf einen expliziten Software-Befehl an einen Endpunkt durch das Endpunkt-Befehlsregister ECR;
    • – durch das Lesen des Pufferstatus des anderen Puffers in dem anderen Steuerwort für diesen Endpunkt am Ende einer Übertragung; und
    • – als Ergebnis von Ereignissen auf dem USB, wie der Empfang von IN, OUT- und SETUP-Token und von ACK-Handshakes.
  • 7 zeigt die vereinfachte Endpunktkanal-Zustandsmaschine für die Handhabung von SETUP-Transaktionen. 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 Zustandslogik durch alle Endpunktkanäle.
  • Wie in 7 gezeigt ist, kann ein Endpunktkanal die folgenden Zustände aufweisen:
    Disable. Der DIS-Zustand 710 wird auf ein Reset, auf einen Disable-Befehl an diesen Endpunktkanal, und auf das Erkennen eines Disable-Zustandes in dem Pufferzustand des Steuerwortes 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. Typischerweise geschieht dies durch einen Enable-Befehl (Aktivierungsbefehl) an einen der Idle-Zustände.
    Halt/Stall: Der HALT/STL-Zustand 770 wird auf den Stall-Befehl an diesen Endpunkt, auf das Erkennen eines Stall-Zustandes in dem Pufferzustand eines Steuerwortes, und bei bestimmten Fehlerbedingungen 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 notwendig, um den Endpunktkanal aus diesem Zustand zu bringen. Typischerweise geschieht dies durch einen Enable-Befehl an einen der Idle-Zustände.
    Setup Ready S_RDY. Dieser Zustand 720 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 eingenommen, nachdem das geeignete Wort in die Endpunkt-Anordnung geschrieben wurde.
    Setup Active S_ACT. Dieser Zustand 730 wird auf den Empfang eines Setup-Tokens aus dem Setup Ready-Zustand eingenommen. In diesem Zustand werden die Daten vom USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status in das Steuerwort am CWP geschrieben, das CWP wird invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Es wird der passende Übergang in den Output Idle-, Output Ready, Input Idle oder Input Ready-Zustand gemacht. Er hängt von der An der Steuerübertragung und dem gelesenen Pufferzustand ab, und basiert weiterhin auf dem Pufferstatus.
    Input Idle I_IDL. In diesem Zustand 750 erwartet der Endpunkt, daß bald ein Puffer zugeordnet wird. Ein NAK-Handshake wird als Antwort auf einen IN-Token, welcher diesem Endpunktkanal zugeordnet ist, zurückgesendet. Für OUT-Token wird von diesem Endpunktkanal keine Antwort zurückgesendet.
    Input Ready I_RDY. Dieser Zustand 752 wird über einen Input Ready-Befehl an diesen Endpunktkanal oder auf das Erkennen eines anderen Eingangspuffers am Ende einer Übertragung eingenommen. Der Befehl sollte nur gegeben werden, wenn diesem Endpunkt mit Hilfe des Schreibens des Steuerwortes an einem geeigneten Ort in der Endpunkt-Anordnung ein Puffer zugeordnet worden ist. Dieses Steuerwort sollte auf einen Datenpuffer mit Daten zeigen, die an den Host als Antwort auf den nächsten an diesem Endpunktkanal empfangenen IN-Token zurückgesendet werden sollen. Der PID-Wert wird als DATA0 übertragen, wenn der CWP 0 ist und wird als DATA1 übertragen, wenn der CWP gleich 1 ist.
    Input Active I_ACT. Dieser Zustand 754 wird auf den Empfang eines IN-Tokens eingenommen, wenn der ausgewählte Endpunkt-Zustand gegenwärtig Input Ready ist. In diesem Zustand werden die Daten von dem Speicher auf den USB übertragen. Auf den Abschluß der Datenübertragung sollte ein ACK-Handshake innerhalb der 16 Bit-Zeit empfangen werden. Am Ende dieses Zeitlimits wird der Puffer-Wartestatus in das Steuerwort zurückgeschrieben, wenn ein ACK nicht empfangen wurde. Die Adress- und Byte-Zähler werden jedoch nicht überschrieben, da eine erneute Übertragung erfolgen wird und die gegenwärtigen Werte erneut gebraucht werden. Wenn ein ACK empfangen wird, wird der Pufferstatus zusammen mit den gegenwärtigen Werten des Adress- und Byte-Zählers geschrieben. Danach wird das andere Steuerwort an diesem Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu bestimmen, welcher benutzt werden wird, wenn das nächste Mal ein Token an diesen Endpunkt gerichtet ist. Wenn dieser Endpunkt für eine Steuerübertragung genutzt wird, kann eine Übertragung auf den Ausgangs-Ready- oder Output-Idle-Zustand erfolgen, um die Statusphase einer Steuer-Lese-Übertragung zu vervollständigen.
    Output Idle 0_IDL. In diesem Zustand 740 erwartet der Endpunktkanal, daß bald ein Puffer zugeordnet wird. Ein NAK-Handshake wird als Antwort auf ein OUT-Token, welcher diesem Endpunktkanal zugeordnet ist, zurückgesendet. Für IN-Token auf diesem Endpunktkanal wird keine Antwort zurückgesendet.
    Output Ready 0_IDL. Dieser Zustand 742 wird eingenommen, nachdem dieser Endpunktkanal einen Puffer erhalten hat, in welchen die Daten geschrieben werden. Dieser kann auf das Erkennen eines anderen Ausgangspuffers am Ende einer Übertragung oder über einen Output Ready-Befehl von dem 0_IDL-Zustand 740 eingenommen werden, nachdem das passende Wort in die Endpunkt-Anordnung geschrieben wurde.
    Output Active 0_ACT. Dieser Zustand 744 wird auf den Empfang eines OUT-Tokens eingenommen. In diesem Zustand werden die Daten aus dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status auf das Steuerwort am CWP geschrieben. Wenn die Übertragung nicht erfolgreich war, d. h. ein CRC- oder Bit-Blockier-Fehler wurde erkannt, wird dieses als der Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war, wird der Output Complete-Pufferstatus geschrieben, wird der CWP invertiert, und wird das andere Steuerwort für diesen Endpunktkanal gelesen. Die geeignete Übertragung wird basierend auf den Pufferzustand ausgeführt. Wenn dieser Endpunkt für eine Steuerübertragung genutzt wird, kann ein Übergang in den Input Ready- oder Input Idle-Zustand erfolgen, um die Statusphase eines Steuer-Schreib-Überganges zu vollenden.
  • Zusätzlich zu den oben beschriebenen Zuständen, werden die folgenden Zustände für In(Eingangs-) und Out-(Ausgangs-) Daten-Transaktionen genutzt. Dieses wird unter Bezugnahme auf 6 beschrieben:
    Input Isochronous Ready IS_RDY. Der IS_RDY-Zustand 610 wird über einen Input Ready-Befehl an diesen Endpunkt oder auf das Erkennen eines anderen Eingabepuffers am Ende einer Übertragung eingenommen. Dieser Befehl sollte nur angewendet werden, nachdem diesem Endpunkt mit Hilfe des Schreibens des Steuerwortes an einen geeigneten Ort in der Endpunkt-Anordnung ein Puffer zugeordnet worden ist. Dieses Steuerwort sollte auf einen Datenpuffer mit Daten zeigen, die an den Host als Antwort auf den als nächstes an diesem Endpunktkanal zu empfangenden IN-Token zurückzusenden sind. Der PID-Wert wird unabhängig von dem Wert des CWP immer als DATA0 übertragen.
    Input Isochronous Active IS_ACT. Der IS_ACT-Zustand 612 wird auf den Empfang eines IN-Tokens eingenommen, wenn der ausgewählte Endpunkt-Zustand gegenwärtig in Input Ready ist. In diesem Zustand werden die Daten von. dem Speicher auf. den USB übertragen: Auf den Aschluß der Datenübertragung wird der Pufferstatus zusammen mit den gegenwärtigen Werten des Adress- und Byte-Zählers am Ende einer Übertragung geschrieben. Danach wird das andere Steuerwort an diesem Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu bestimmen, wobei dieser nächste Zustand genutzt wird, wenn das nächste Mal ein Token an diesen Endpunktkanal gerichtet ist.
    Output Isochronous Idle OS_IDL. In dem OS_IDL-Zustand 620 erwartet der Endpunkt, daß bald ein Puffer zugeordnet wird. Als Antwort auf einen OUT-Token, welcher diesem Endpunktkanal zugeordnet ist, wird kein Handshake zurückgesendet. Auf diesem Endpunktkanal werden für IN-Token keine Daten oder Handshakes zurückgesendet.
    Output Isochronous Ready OS_RDY. Der OS_RDY-Zustand 622 wird eingenommen, nachdem dieser Endpunktkanal einen Puffer erhalten hat, in welchen die Daten zu schreiben sind. Dieser kann auf das Erkennen eines anderen Ausgangspuffers am Ende einer Übertragung oder über ein OSRDY-Befehl aus dem OS_IDL-Zustand eigenommen werden, nachdem das geeignete Wort in die Endpunktanordnung geschrieben worden ist.
    Output Isochronous Active OS_ACT. Der OS_ACT-Zustand 624 wird auf den Empfang eines OUT-Tokens aus dem OS_RDY-Zustand eingenommen. In diesem Zustand werden die Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status auf ein Steuerwort am CWP geschrieben. Wenn die Übertragung nicht erfolgreich war, d. h. ein CRC- oder ein Bit-Blockier-Fehler wurde erkannt, wird dieses als der Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war, wird der Ausgangs-Complete-Pufferstatus geschrieben. Am Ende der Statusübertragung wird der CWP invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Der passende Übergang wird basierend auf dem Pufferzustand gemacht.
  • Nach einem Reset sind alle Endpunkte inaktiviert. Ein Endpunkt ist mittels eines Aktivierungsbefehls an den Endpunkt aktiviert. Dieses sollte nur dann getan werden, wenn die Eingangs- und/oder Ausgangspuffer diesem Endpunkt bald zugeordnet werden. Alle Endpunkte, die gegenwärtig nicht einem Endpunktkanal zugeordnet sind, werden als inaktiviert betrachtet.
  • Die Software ordnet den Endpunktkanälen Puffer nach Bedarf zu. Nachdem jeder Puffer zugeordnet ist, führt sie den Input Ready- oder Output Ready-Befehl an dem Endpunktkanal aus. Wenn der Endpunktkanal gegenwärtig im Idle-Zustand ist, nimmt er den geeigneten Ready-Zustand ein. Wenn der Endpunktkanal gegenwärtig im Ready- oder Active-Zustand ist, werden alle Befehle ignoriert, mit Ausnahme der Disable- und Stall-Befehle an den Endpunktkanal, welche dieser unverzüglich ausführt. Dieses Schreiben muß von der Software ausgeführt werden, um in der Lage zu sein, potentielle Synchronisationsprobleme zu verhindern, da das Handling des UNIM-Endpunktkanals asynchron zum Betrieb der Software ist.
  • Weil jedem Endpunkt bis zu zwei Puffer zugeordnet werden können, kann der nächste Puffer vorbereitet werden, während der gegenwärtige Puffer abgearbeitet wird, um die Datenübertragung zu beschleunigen, und um unnötige NAK-Handshakes zu vermeiden.
  • Eine bevorzugte Ausführungsform der Erfindung umfaßt weiterhin einen Abbildungsmechanismus für Token. Der Endpunkt-Controller 210 liefert an einen der Endpunktkanäle speziell ein Abbild der funktionellen Adresse, der Tokenart (In, Out, Setup), und der Endpunkt-Zahl. Eine bevorzugte Ausführungsform unterstützt zwei feste Abbildungen auf die Endpunktkanäle. Die Auswahl dieses Abbildens wird mittels des Setzens von Endpunktkanal-Abbildungs-Auswahlbits eines in der Registergruppe 114 angeordneten Gerätekonfigurationsregisters gesteuert. Ein Host-Controller kann das Setzen der Kanal-Abbildungs-Auswalbits steuern.
  • Wie in 4 dargestellt ist, nutzt der Endpunkt-Controller 210 ein Tokenpaket, um einen Kanal-Abbildungsindex 400 mit einer Breite von einem Byte zu erzeugen. Die Bits 0-3 des Kanal-Abbildungsindex 400 werden zur Identifizierung der Endpunkt-Zahl (EN) genutzt. Die Bits 4-5 werden zur Identifizierung der Tokenart genutzt, wobei 00 einen Out-Token, 10 einen IN-Token, 11 einen Setup-Token und 01 einen SOF-Token anzeigt. Die Bits 6-7 werden benutzt, um die letzten signifikanten Bits der funktionellen Adresse anzuzeigen.
  • Auf den Empfang eines Tokens erzeugt der Endpunkt-Controller 210 den Kanal-Abbildungsindex 400. Der Endpunkt-Controller 210 greift danach auf die Endpunkt-Abbildungs-Auswahlbits zu, um das passende Abbilden für den Token auszuwählen.
  • Eine bevorzugte Ausführungsform des USB-Geräts 110 unterstützt zwei feste Abbildungen. Dementsprechend umfassen die Endpunktkanal-Auswahlbits ein einzelnes Bit. Wenn das Bit in einem ersten Zustand ist, wird der Token direkt nach der funktionellen Adresse und der Endpunkt-Zahl abgebildet. Wenn das Bit in einem zweiten Zustand ist, wird jeder der ersten acht Endpunkte auf zwei Endpunktkanäle abgebildet, wobei einer für den Eingang und einer für den Ausgang genutzt wird.
  • Mittels des Änderns des Endpunktkanal-Auswahlbits kann der Host-Controller die Abbildung der Endpunktkanäle über die Funktionen verändern. Deshalb ist der Host-Controller in der Lage ein Gerät so zu konfigurieren, daß es Mehrfachidentitäten hat. Der Host-Controller kann die Geräteidentität mittels des Zugriffs auf die Endpunkt-Abbildungs-Auswahlbits dynamisch ändern. Dieses ermöglicht dem Host-Controller weiterhin, Endpunktkanäle über die funktionellen Adressen, die Tokenart und den Endpunkt dort zuzuordnen, wo der Endpunktkanal als Betriebsmittel am meisten gebraucht wird.
  • Ein bevorzugte Ausführungsform eines derartigen Geräts mit einer Vielzahl funktioneller Adressen bildet alle Steuerfunktionen zusammen auf einen Endpunktkanal ab.
  • Wenn ein Token empfangen wird, bildet der Endpunkt-Controller 202 den Token zuerst auf den entsprechenden Endpunktkanal ab. Wenn der Token auf einen Endpunktkanal mit einem Puffer abgebildet ist, liest der Endpunkt-Controller 210 das entsprechende Steuerwort. Dieses Steuerwort teilt dem Endpunkt-Controller 210 mit, wie die Transaktion zu beenden ist. Am Ende einer Transaktion schreibt der Endpunkt-Controller das Steuerwort mit dem Status, welcher mittels Software als ein Indikator für die Freigabe dieses Puffers genutzt wird, und liefert ein neues Steuerwort.
  • In Anbetracht der vorhergehenden Beschreibung wird im folgenden der Betrieb des Geräts aus der Sicht der funktionellen Steuersoftware im Detail beschrieben. Als erstes wird die Initialisierung beschrieben. Danach werden Interrupt-, Bulk-, Isochron- und Steuerendpunkte beschrieben. Nach einem Reset eines Moduls erscheint ein Gerät als ein nicht angeschlossenes Gerät auf dem USB. Zu diesem Zeitpunkt sind alle Endpunktkanäle deaktiviert und der funktionelle Zustand ist reset. Um die Erkennung eines Gerätes als ein an ein Aufwärts-USB-Anschluß angeschlossenes Gerät zu ermöglichen, wird ein Knoten-Anschluß-Bit des Geräte-Steuerregisters gesetzt. Wenn das Gerät angeschlossen ist, müssen die Endpunktkanal-Operationen initialisiert werden. In Abhängigkeit von der speziellen Anwendung muß die Software bestimmen, wieviele Endpunkte für die Anwendung notwendig sind, weiterhin sind die Arten der Endpunkte und der Umfang des für die Operation zuzuweisenden Speichers zu bestimmen. Hierauf basierend werden die EABAR, BPA und BPB initialisiert. Für jeden Endpunkt werden zwei Doppelwörter als Steuerwörter zugeordnet. Der EABAR-Zeiger muß innerhalb einer 128-Byte-Grenze liegen. Der BPA und BPB werden zugeordnet, wenn notwendig, um einen Basiszeiger für alle Datenübertragungen zu liefern.
  • Da zu diesem Zeitpunkt nicht exakt klar sein kann, welche Endpunkte aktiviert sind und wieviel Speicher ihnen zuzuordnen ist, muß die Software nur EABAR und BPA laden, so daß der erste Steuerübergang ausgeführt werden kann. Die Software muß dann einen SRDY-Puffer in CW0 des Endpunktkanals 0 anordnen, und ein SRDY-Befehl an den Endpunktkanal ausgeben. Danach wird der Zustand in einen Betriebszustand gesetzt. Ein von einem Host empfangenes Setup wird dann in den SRDY-Puffer geladen.
  • Nachdem das Setup empfangen wurde, wird es überprüft, um festzustellen, wie zu antworten ist. Wenn es ein Set Adress-Setup-Paket ist, wird die funktionelle Adresse (FA) mit der empfangenen Adresse geladen, und das Aktivierungsbit wird gesetzt. Das DEF-Bit wird mittels der Hardware auf das nächste als Antwort auf IN-Token empfangene ACK oder auf das nächste durch diesen Endpunkt im Fall des Verlustes des ACK empfangene Setup neu gesetzt.
  • Auf den Empfang eines IN-Tokens liefern die Interrupt-Endpunkte neue Interrupt-Informationen an den Host, wenn derartige Information verfügbar ist. Wenn keine Interrupt-Information anhängig ist, wird ein NAK zurückgesendet. Die Software gibt ein Input-Enable-Befehl an den entsprechenden Eingangskanal aus, um einen Interrupt-Endpunktkanal zu initialisieren. Dieses veranlaßt den Endpunktkanal seinen Input-Idle-Zustand (I_IDL) einzunehmen. In diesem Zustand wird ein NAK als der Handshake der Antwort auf irgendein auf diesen Endpunktkanal abgebildeten IN-Token zurückgesendet.
  • Wenn Interrupt-Daten verfügbar sind, werden diese in einen Puffer geschrieben, das nächste Steuerwort an dem Endpunkt wird auf den IRDY geschrieben und die Software gibt einen Befehl, um den Endpunktkanal zu veranlassen, in den I_RDY-Zustand zu gehen.
  • Als Antwort auf den nächsten empfangenen IN-Token wird das Steuerwort an EABAR + EBN + CWP gelesen und die Daten werden danach übertragen. Wenn das Umschaltprotokoll folgt, muß das Umschaltaktivierungsbit des Steuerwortes in dem Steuerwort gesetzt sein. Wenn der Endpunkt als ein Ratensteuer-Feedback genutzt wird, muß das Umschaltaktivierungsbit nicht gesetzt sein. Wenn am Ende der Übertragung das ACK von de Host empfangen wird, wird der Abschlußstatus in den Puffer geschrieben. Dieses liefert eine Bestätigung an die Software, daß die Übertragung abgeschlossen ist. Wenn kein ACK empfangen wurde, und die Umschaltung es aktiviert, wird ein Zwischen-Verlust-ACK-Status geschrieben.
  • Nachdem der Status geschrieben wurde, wird der andere Endpunkt-Puffer gelesen. Wenn dieses ein Abschlußstatus ist, dann wird der Input-Idle-Zustand eingenommen. Wenn in der Zwischenzeit ein anderes Ereignis aufgetreten ist, und ein anderer IRDY-Puffer wurde in dem anderen Steuerwort angeordnet, dann wird es zu diesem Zeitpunkt gelesen und der Endpunkt geht erneut in den I_RDY-Zustand.
  • Bulk-Endpunkte arbeiten ähnlich wie Interrupt-Endpunkte, mit der Ausnahme, daß typischerweise größere Datenübertragungen involviert sind, und daß diese in In-(Eingangs-) und Out-(Ausgangs-)Richtungen erfolgen. Für Bulk-Endpunkte folgt stets das Umschaltprotokoll, so daß in allen Steuerwörtern TE gesetzt ist. Ein spezieller Bulk-Endpunkt wird entweder in Eingangs- oder Ausgangsrichtung benutzt. Zur Initialisierung eines Bulk-Endpunktes gibt die Software einen Eingangs- oder Ausgangs-Aktivierungsbefehl an die geeignete Endpunktkanal-Zahl.
  • Wenn Daten für Bulk-Eingangsendpunkte verfügbar sind, sollte die Software diese in einen Puffer schreiben, und einen Befehl zum Übergang in einen IRDY-Zustand ausgeben. Das TE sollte gesetzt werden. Die Software gibt dann einen IRDY-Befehl aus. Zu einer beliebigen Zeit können höchstens zwei Puffer mit Daten an einem Endpunktkanal hängen. Dieses erlaubt ein Doppelpuffer-Schema, wenn dieses notwendig ist, um während einer großen Datenübertragung das Senden irgendeines NAKs zu verhindern. Die Software-Synchronisation erfolgt mit Hilfe der Überprüfung des Pufferzustands. Nur ein abgeschlossener Pufferzustand kann überschrieben werden. Für Bulk-Ausgangsendpunkte muß die Software einen Puffer vorbereiten, in welchen die empfangenen Daten zu übertragen sind. Wenn dieser Puffer verfügbar ist, wird ein Steuerwort mit einem Zeiger auf diesem Puffer in ein geeignetes Steuerwort geschrieben. Das Umschalt-Aktivierungsbit (Toggle Enable Bit) sollte ebenfalls gesetzt werden. Anschließend gibt die Software einen ORDY-Befehl an den Endpunktkanal aus.
  • Nachdem Daten als Teil eines Out-Tokens in diesem Puffer empfangen wurden, wird das Steuerwort im Speicher aktualisiert. Wenn der Umfang des Datenpakets bekannt ist, sollte das Puffer-Rundungsbit des Steuerworts gesetzt sein. Dieses erlaubt, daß Pakete, die kleiner als der Pufferumfang sind, empfangen werden können, ohne daß ein Fehlerstatus geschrieben wird. Wenn das Puffer-Rundungsbit nicht gesetzt ist, werden empfangene Pakete, die den zugeordneten Puffer nicht exakt auffüllen, mit einem Daten-Statusfehler geschrieben. In allen Fällen wird der Daten-Statusfehler geschrieben, wenn mehr Daten als erwartet für diesen Endpunktkanal empfangen wurden. Wenn das Auftreten eines Fehlers während des Empfangs dieser Daten erkannt wird, wird ein Zwischen-Pufferstatus in den Speicher zurück geschrieben, und beim nächsten Out-Token wird der Puffer erneut genutzt. Deshalb muß sich die Software nur um die Bereitstellung von Puffern kümmern, in welche die Daten empfangen werden. Die Software muß sich nicht um Interna des Wiederholungsprotokolls kümmern.
  • Isochrone Endpunkte folgen dem Programmiermodel für Bulk-Endpunkte, mit der Ausnahme, daß sie nicht einem Umschaltprotokoll folgen. Statt dessen sind sie zu dem letzten signifikanten Bit des Frame-Zahkegisters synchronisiert.
  • Für isochrone Eingangsendpunkte werden die Daten mittels desselben IRDY-Puffers in der Warteschlange gehalten. Wenn ein IN-Token an einem isochronen Endpunkt empfangen wird, wird das Datenpaket gesendet, wenn das letzte signifikante Bit des Frame-Zahkegisters mit dem Steuerwort-Zeiger übereinstimmt. Wenn dies nicht der Fall ist, werden keine Daten gesendet. Dieses ermöglicht es, die Datenübertragung mit einer speziellen Frame-Zahl zu synchronisieren. Um die Übertragung einer speziellen Frame-Zahl auszulösen, kann das Frame-Zahlregister gelesen werden. Die Software kann mit dem Wert einer Frame-Zahl, welche übereinstimmen muß, einen Interrupt verlangen. Eine Anpassung wird nur für die unteren acht Bits ausgeführt. Dieses ermöglicht das Halten dieses Ereignisses in der Warteschlange bis zu 256 ms, bevor die Frame-Zahl über das USB-Netzwerk empfangen wird. Wenn dieser Interrupt ausgeführt wird, kann die Software den passenden Puffer in der Warteschlange auf dem Endpunktkanal halten.
  • Für isochrone Ausgangsendpunkte bestimmt das Umschaltaktivierungsbit, wie das LSB des Frame-Zahlregisters genutzt wird. Wenn das Umschalt-Aktivierungsbit nicht besetzt ist, werden alle Daten in den Speicher geschrieben. Wenn das letzte signifikante Bit des Frame-Zahlregisters jedoch nicht gleich dem CWP ist, wird ein Synchronisations-Fehlerstatus als Pufferzustand geschrieben. Wenn das TE gesetzt ist, werden die Daten nur gespeichert, wenn das letzte signifikante Bit des Frame-Zahlregisters gleich dem CWP ist. Bei der Synchronisation eines isochronen Ausgangsdatenstroms mit der Frame-Zahl, kann die Software den ersten Puffer mit TE setzen, so daß das Schreiben nur beginnt, wenn eine Frame-Zahl-Übereinstimmung gegeben ist. Es können dann alle folgenden Frames mittels eines einfachen Vergleichs der Frame-Zahlen erkennen, ob ein Synchronisationsfehler aufgetreten ist.
  • Das Frame-Zahkegister wird für bis zu zwei Frames weiter nötig sein, auch wenn das SOF zeitweise verloren wird. Sollte das SOF für mehr als zwei Frames verloren gehen, wird der Software ein Freigabeereignis signalisiert. Hierauf sollten alle folgenden isochronen Übertragungen mit besonderer Beachtung behandelt werden, oder unterbrochen werden, bis der Frame-Zahl-Zähler erneut geschlossen wird.
  • Endpunkt 0 ist typischerweise ein Steuerendpunkt. Zusätzlich erlaubt es der beschriebene Abbildungsmechanismus, daß andere Endpunkte Steuerendpunkte werden. Für einen Steuerendpunkt sollten das Steuerwort 1 und das Steuerwort 0 stets zusammen geschrieben werden. Beispielsweise sollte das SRDY für die nächste Steuerübertragung zusammen mit dem Puffer oder dem Paket für die Statusübertragung der momentanen Steuerübertragung geschrieben werden. Wenn während einer Datenphase einer Steuer-Lese- oder Steuer-Schreib-Operation eine ungerade Anzahl von Datenpaketen gesendet wird, bevor die Statusphase gesendet ist, muß die Software den Steuerwortzeiger anpassen, weil die Statusphase in dem Steuerwort 1 und der nächste SRDY-Puffer in dem Steuerwort 0 abgelegt werden müssen. Um dies zu erreichen, kann die Software einen SKIP-Puffer einfügen oder einen Umschalt-CWP-Befehl ausgeben. Die Software kann danach den Ready-Befehl für den Statusphasen-Puffer ausgeben. Sollte ein Setup-Token an einem Steuerendpunkt, für welchen ein SRDY-Puffer gegenwärtig nicht verfügbar ist, erkannt werden, wird ein beträchtlicher Aufwand betrieben, um den Setup-Token zu empfangen. Der Setup-Token wird in der Datenleitung gespeichert, während darauf gewartet wird, daß die Software einen Puffer zuordnet.
  • Wenn ein gültiges Setup empfangen wird, wird ein Interrupt durchgesetzt. Als Antwort sollte die Software einen Puffer auf Steuerwort 0 schreiben, und einen SRDY-Befehl ausgeben. Dieses veranlaßt, daß das anhängende Setup in den Speicher geschrieben wird. Der SRDY-Befehl verursacht, daß der Endpunkt als ein Steuerendpunkt betrachtet wird und daß er gesetzt bleibt, bie ein Eingangsaktivierungs- oder Ausgangsaktivierungs-Befehl ausgeführt wird. Der SRDY-Puffer sollte so schnell wie möglich bereitgestellt werden, da der Datenweg für jede zusätzliche Datenübertragung blockiert ist, wenn der Interrupt durchgesetzt ist. Allen über des USB-Netzwert empfangenen Token wird ein NAK zurückgesendet, während auf den Puffer gewartet wird.
  • Nachdem ein Setup empfangen wurde, muß es überprüft werden, und es ist eine passende Antwort zu bestimmen. Zu diesem Zeitpunkt plaziert die Firmware geeigneterweise zusätzliche Eingangs- oder Ausgangspuffer. Wenn das Setup ein Befehl ist, welcher durch die Funktion nicht unterstützt wird, wird ein neuer SRDY-Puffer auf das Steuerwort 0 gegeben, und der SRDY-Befehl wird ausgegeben. Dieses verursacht, daß allen Token an diesem Endpunkt ein NAK-Handshake zurückgesendet wird, bis das nächste Setup empfangen wird. Während die Software in der Zwischenzeit das Setup analysiert, werden NAKs als Antwort auf die Token gesendet.
  • Obwohl die Ausführungsformen unter Bezugnahme auf spezielle Gerätestrukturen, Programmierzustände und Programmiermodelle beschrieben wurden, kann die Erfindung auf eine Vielzahl anderer Geräte angewendet werden, welche verschiedene Programmierzustände und -modelle implementieren. Der Fachmann entnimmt den Ausführungsformen, daß viele Modifikationen möglich sind, ohne deren Lehre zu verlassen. All diese Modifikationen sollen von den folgenden Ansprüchen umfaßt sein.
  • Die Architektur der USB-Knotenschnittstelle ist in dem folgenden Anhang, der Teil der Beschreibung ist, näher spezifiziert.
  • Vorläufige Version
  • Spezifikation für USB-Knotenschnittstellenarchitekturs
  • Überarbeitete Version 0.6
  • Kapitel 1
  • Einführung
  • Das USB-Schnittstellenmodul (UNIM) bildet eine Schnittstelle zu dem universellen seriellen Bus für einen Hochgeschwindigkeitsknoten auf einem USB-Bus. Das Modul entspricht der Version 1.0 der USB-Spezifikation.
  • Das Modul umfaßt einen integrierten USB-Transceiver, eine vollständige serielle Schnittstelleneinrichtung und den Endpunkt-Controller. Der Endpunkt-Controller arbeitet als Master und Slave auf dem Kernbus (Core Bus) und unterstützt alle USB-Endpunktklassen: Steuerung, große Mengen (Bulk), Isochron und Unterbrechung (Interrupt). Der Slavezugang wird dazu verwendet, auf interne Steuerregister zuzugreifen, und der Masterzugang wird dazu verwendet, Endpunktdaten zu und von einem RAM zu übertragen.
  • Figure 00380001
    1-1. Anwendungsbeispiel
  • 1.1 Externe Schnittstelle
  • Tabelle 1-1. Modulpins, die mit externen Pins verbunden sind
    Figure 00390001
  • Figure 00400001
  • 1.2 Interne Architektur auf Chipebene
  • Figure 00400002
    1-2. Blockdiagramm des USB-Knotenschnittstellenmoduls
  • 1.2.1 Endpunktcontroller
  • Der Endpunktcontroller verarbeitet auf den Endpunkt bezogene Operationen einschließlich des Endpunktkanalzustands, der Pufferung und Übertragungen. Bis zu 16 Endpunktkanäle können zu jeder gegebenen Zeit unterstützt werden. Jeder Endpunktkanal kann in dem Adreßraum des Kernbusses zwei Puffern zugewiesen werden, die für Empfangs- und Sendeoperationen verwendet werden. Wenn einem Endpunktkanal keine Puffer zugewiesen sind, ist der Controller verantwortlich, die richtigen Handshakes (Quittungen) für Eingangs- und Ausgangstoken vorzusehen.
  • 1.2.2 Serielle USB-Schnittstelleneinrichtung
  • Die serielle USB-Schnittstelleneinrichtung umfaßt USB PHY und USB MAC. USB-PHY ist verantwortlich für die NRZI-Codierung, die Erfassung des Anfangs und Endes von Paketen, Bitstuffing und Unstuffing und für die Parallel-Seriell- und Seriell-Parallel-Wandlung. USB MAC ist verantwortlich für das Erkennen und Erzeugen geeigneter Paketformate und für das Verarbeiten der Handshakesequenzen zusammen mit dem Endpunktkanal-Controller. USB MAC ist auch verantwortlich zum Erzeugen und Überprüfen der geeigneten CRCs in den Paketformaten. Es gibt eine eng gekoppelte Schnittstelle zwischen dem USB MAC und dem Endpunkt-Controller.
  • 1.2.3 USB-Transceiver
  • Der USB-Transceiver sieht die analoge Verbindbarkeit zu dem USB-Bus gemäß Kapitel 7 der Universal Serial Bus Specification Version 1.0 vor. Dies umfaßt die notwendige Signalformung und Erfassungsfunktionen. Das Modul unterstützt den Hochgeschwindigkeitsbetrieb. Der Betrieb mit niedriger Geschwindigkeit ist für diese Anwendung kein Erfordernis. Das Modul unterstützt auch einen Niederleistungsbetrieb, bei dem der Transceiver sehr wenig Leistung benötigt (die ganze USB-Einrichtung erhält nur 100 μA) und dennoch der Walk-up-Übergang auf den Bus erfassen kann.
  • Das Modul unterstützt auch eine Verbindung zu einem externen Stand-Alone USB-Transceiver, wie dem PDIUSBP11 von Phillips.
  • 1.2.4 Zukünftige Modulerweiterungen
  • Da die Architektur des Endpunktcontrollers modular ist, kann die Anzahl der unterstützten Endpunktkanäle verändert werden, indem die Anzahl der gespeicherten Teilendpunktkanal-Zustandsvektoren verändert wird. Zusätzlich kann die Abbildung von
    • a) bis zu vier Funktionsadressens
    • b) des Tokentyps
    • c) der Endpunktnummer
    auf die Endpunktkanalnummer über die Kanalabbildungsfunktion programmiert werden.
  • Ein USB HUB-Schnittstellenmodul kann hinzugefügt werden, um eine HUB-Funktion mit bis zu vier zusätzlichen stromabwärtigen Ports zu ermöglichen. Dieses Modul wird zwischen dem USB SIE-Modul und dem USB-Transceivermodul eingefügt. Dadurch kann die Einrichtung die Verbindungsmöglichkeit zu einem oder mehreren zusätzlichen Peripheriegeräten schaffen.
  • Die Architektur ermöglicht eine Realisierung eines Stand-Alone-USB-Knotencontrollers mit internem oder externem RAM. Zusätzlich könnte die Architektur für Peripheriegeräte mit unterschiedlichem Leistungsniveau und für einen 16-Bit-Bus oder den Peripheriebus mit einem privaten Speicher verwendet werden. Zusätzlich könnten mehrere solche Zellen in einer Ausführung eingerichtet werden, um zusammengesetzte Multifunktionsgeräte zu unterstützen.
  • Das Design ist für Niedergeschwindigkeits-Knoten nicht optimiert, es könnte jedoch modifiziert werden, um auch mit Niedergeschwindigkeits-Geräten zu arbeiten.
  • Kapitel 2 UNIM Modul
  • 2.1 USB-Knotenschnittstelle
  • Das USB-Knotenschnittstellenmodul (UNIM) bildet die Schnittstelle zu einem universellen seriellen Bus (USB). Das Modul umfaßt einen integrierten USB-Transceiver, eine vollständige serielle Schnittstelleneinrichtung (SIE; Serial Interface Engine) und den Endpunktcontroller. Der Endpunktcontroller arbeitet als Master und Slave auf dem Kernbus und unterstützt alle USB-Entpunktklassen: Steuerung, Bulk, Isochron und Interrupt. Der Slavezugang wird dazu verwendet, auf interne Steuerregister zuzugreifen, und der Masterzugang wird dazu verwendet, Daten zwischen Endpunkten und dem RAM zu übertragen.
  • 2.1.1 Merkmale
    • • Kompatibilität mit der USB 1.0 Spezifikation
    • • Unterstützt eine USB-Funktion und bis zu 16 Endpunktkanäle
    • • Unterstützt alle Klassen der USB-Endpunkte
    • • Unterstützt Doppelpuffer auf jedem Endpunktkanal
    • • Unterstützt Betrieb als eine Bus-getriebene Einrichtung
    • • Optimiert für Hochgeschwindigkeitsknotenbetrieb
    • • USB-kompatible serielle Schnittstelleneinrichtung (SIE)
    • • USB-kompatible Hochgeschwindigkeitstransceiver
    • • Unterstützt Niederleistungs-Aussetzbetrieb
    • • Unterstützt Aufwecken von Normandy aufgrund USB-Wiederaufnahme
    • • Unterstüzt Auslösung von Wiederaufnahme durch Fern-Weckruf
    • • Unterstützt Synchronisierung des USB-Takts zu externem Bezugstakt.
  • 2.1.2 Funktionsbeschreibung
  • Das USB-Knotenschnittstellenmodul sieht eine Schnittstelle zum USB für verschiedene Anwendungen vor. Der Endpunkt-Controller sieht eine vielseitige Anordnung zum Steuern mehrere USB-Endpunkte vor. Die USB-Knotenschnittstelle umfaßt eine voll anpassungsfähige serielle Schnittstelleneinrichtung (SIE) und einen intgrierten Transceiver. Zusätzlich unterstützt sie einen externen Transceiver.
  • Figur 2-1 zeigt die obere Ebene dieses Moduls.
  • Figure 00430001
    Figur 2-1. Diagramm des USB-Knotenmoduls
  • 2.1.3 Transceiver
  • Der interne USB-Transceiver umfaßt drei Hauptfunktionsblöcke: Den Differentialempfänger, den unsymmetrischen Empfänger und den Sender. Zusätzlich sind eine Bezugsspannung für den unsymmetrischen Empfänger und eine Stromquelle für den Sender vorgesehen.
  • Normandy unterstützt nur einen Hochgeschwindigkeitstransceiver. Die Leistungserfordernisse dieses Transceivers sind im Kapitel 7 der Universal Serial Bus Specification Version 1.0 angegeben.
  • Um die Signalverschiebung zu minimieren, werden Differentialausgangsschwingungen des Senders gut ausgeglichen. Für den Treiber wird eine Anstiegsgeschwindigkeitssfeuerung verwendet, um abgestrahltes Rauschen und Übersprechen zu minimieren. Die Treiber unterstützen den TRI-STATE-Betrieb, um einen bi-direktionalen Half-Duplex-Betrieb des Transceivers zu ermöglichen.
  • Der Differentialempfänger muß im gesamten Gleichtaktbereich arbeiten, und er muß eine Verzögerung aufweisen, die sicher größer als die des unsymmetrischen Empfängers ist, um Spannungsspitzen in der seriellen Schnittstelleneinrichtung (SIE) nach unsymmetrischen Nullen (Single-Ended Zeros) zu vermeiden.
  • Unsymmetrische Empfänger sind auf jeder der beiden Datenleitungen vorhanden. Diese sind zusätzlich zu den Differentialempfängern erforderlich, um eine Absolutspannung mit einer Schaltschwelle zwischen 0,8 V und 2,0 V (TTL-Eingänge) zu erfassen. Zur Erhöhung der Vcc-Unterdrückung ohne Spannungsspitzen wird der unsymmetrische Schalt-Bezugswert mit einer Bezugsspannung eingestellt. Ein externer 1,5 ± 5 % kOhm Widerstand, der mit einer Spannungsquelle zwischen 3,0 V und 3,6 V bezogen auf lokale Masse verbunden ist, ist an D+ erforderlich, um anzuzeigen, daß es sich um einen Hochgeschwindigkeitsknoten handelt.
  • Verwendung eines externen Transceivers
  • Es kann auch ein externer Transceiver verwendet werden. Um den Betrieb für einen externen Transceiver zu konfigurieren, muß das externe Transceiver-Enable-Bit (NCR.ETE) gesetzt werden. Wenn es gesetzt ist, gibt es an, daß die Ausgänge ihre „1"-Zustände verlassen sollten, und alle Eingänge sollten gewählt sein.
  • 2.1.4 Serielle Schnittstelleneinrichtung (SIE; serial interface engine)
  • Die serielle Schnittstelleneinrichtung des USB besteht aus einer PHY und einer MAC-Ebene. Die PHY-Ebene umfaßt die digitale Taktwiedergewinnungsschaltung, ein digitales Spannungsspitzenfilter, eine Paket-Ende-Erfassungsschaltung und eine bit-stuffing und de-stuffing Logik. Die MAC-Ebene umfaßt die Paketformatierung, CRC-Erzeugung und -Überprüfung, Endpunktadressenerfassung, und sie sieht die notwendige Steuerung vor, um NAK, ACK und STALL Antworten zu liefern, die von dem Endpunktcontroller für den spezifizierten Endpunktkanal ermittelt werden. Die SIE ist auch verantwortlich für die Erfassung und Mitteilung von Ereignissen bei Erfassung von 11SB-spezifischen Ereignissen, wie Reset, Warten und Wiederaufnehmen. Die Ausgangssignale des Senders des UNIM-Moduls, die zu dem Transceiver gehen, sind gut abgeglichen (unter 1 ns), um Verschiebungen auf den USB-Signalen zu minimieren.
  • 2.1.5 Endpunktkanal-Controller (EPC)
  • Der Endpunktkanal-Controller (EPC) bildet die Schnittstelle für USB-Funktionsendpunkte vor. Ein Endpunkt ist die letztendliche Quelle oder der Ursprung der Daten. Ein Endpunktkanal sorgt für die Bewegung der Daten zwischen dem USB und dem Speicher und vervollständigt den Weg zwischen dem USB-Host und dem Funktionsendpunkt. Bis zu 16 solche Endpunktkanäle werden zu jeder gegebenen Zeit unterstützt, jeder mit derselben Funktionsadresse.
  • Eine USB-Funktion ist eine USB-Einrichtung, die Informationen auf dem Bus senden und empfangen kann. Eine Funktion kann eine oder mehrere Konfigurationen haben, von denen jede die Schnittstellen definiert, welche die Einrichtung umfaßt. Jede Schnittstelle weist ihrerseits einen oder mehrere Endpunkte auf.
  • Jeder Endpunkt ist eine adressierbare Einheit auf dem USB und ist erforderlich, um auf IN- und OUT-Token von dem USB-Host (üblicherweise ein PC) zu reagieren. IN Token geben an, daß der Host angefordert hat, von einem Endpunkt Informationen zu empfangen, und OUT-Token geben an, daß der Host dabei ist, Information zu einem Endpunkt zu senden.
  • Bei Erfassung eines IN-Tokens, der an einen Endpunkt gerichtet ist, ist dieser Endpunkt dafür verantwortlich, mit einem Datenpaket zu antworten. Wenn der Endpunkt momentan unterbrochen ist, wird ein STALL-Handshakepaket gesendet. Wenn der Endpunkt enabelt ist, jedoch keine Daten vorliegen, wird ein NAK (negative Bestätigung) zum Handshakepaket gesendet.
  • Ähnlich ist bei der Erfassung eines OUT-Tokens, der an einen Endpunkt gerichtet ist, der Endpunkt dafür verantwortlich, ein Datenpaket zu empfangen, das von dem Host gesendet wird, und in einem Puffer zu speichern. Wenn der Endpunktkanal momentan blockiert ist, wird am Ende der Datenübertragung ein STALL-Handshakepaket gesendet. Wenn der Endpunktkanal momentan disabled ist, wird am Ende der Datenübertragung kein Handshakepaket gesendet. Wenn der Endpunktkanal enabled ist, jedoch kein Puffer vorhanden ist, in dem die Daten gespeichert werden können, wird ein NAK- (negative Bestätigung) Handshakepaket gesendet.
  • Ein disabelter Endpunkt oder Endpunkte, die momentan nicht auf einen Endpunktkanal abgebildet sind, reagieren nicht auf IN-, OUT- oder SETUP-Token.
  • Der EPC bewahrt getrennte Zustandsinformation für jeden Endpunktkanal auf. Die Zustandsinformation, die für unmittelbare Entscheidungen erforderlich ist (z. B. für das Antworten mit einer NAK oder STALL-Quittung) wird zu allen Zeiten für jeden Endpunkt in dem Modul bereitgehalten. Andere Information, die für den Endpunktbetrieb notwendig ist, wird in dem Endpunktfeld (Array) aufbewahrt. Da zu einer gegebenen Zeit nur ein Endpunktkanal aktiv ist, wird die Endpunktkanal-Ablaufsteuereinheit (state machine) von allen Endpunktkanälen gemeinsam benutzt.
  • Bei IN-Token ist der EPC für die Übertragung der Daten von dem definierten Puffer zum Host verantwortlich. Bei OUT-Token ist der EPC für die Übertragung von Daten von dem Host zu dem definierten Puffer verantwortlich. Um eine größere Flexibilität zu ermöglichen, wenn Puffer einem Endpunktkanal zugewiesen werden, ist für jeden Endpunktkanal ein Doppelpufferverfahren zulässig. Dadurch dann der EPC eine schnelle Antwort auf alle Transaktionen an dieses Modul liefern, ohne auf NAKs zurückzugreifen.
  • Abbildung auf Endpunktkanäle
  • Der EPC sieht die Abbildung der Funktionsadresse, Tokentyp (IN, OUT, SETUP) und Endpunktnummer auf einen der Endpunktkanäle vor. Zwei feste Abbildungen auf Endpunktkanä le werden unterstützt und von den Einstellungen des Endpunktkanal-Abbildungsauswahl-Bits des Einrichtungs-Konfigurationsregisters (DCR.EPMS) gesteuert.
  • Wenn EPMS = 0:
    Figure 00470001
  • Wenn EPMS = 1:
    Figure 00470002
  • Endpunktsteuerung
  • Alle von den Endpunktkanälen während der Datenübertragungen verwendete Information wird in dem Endpunktfeld aufbewahrt, das im RAM liegt. Dieses Feld ist durch den Endpunktkanal auf der Basis indexiert, die in dem Endpunktfeld-Basisadressen-Register (EABA) definiert ist. Dieses Feld enthält zwei Doppelworte pro Endpunkt. Jedes Doppelwort ist ein Steuerwort, das Steuer- und Statusinformation für den Endpunktkanal enthält, wie einen Zeiger zum Anfang des Puffers, die Größe des Puffers, den Zustand des Puffers und andere relevante Parameter.
  • Der Pufferzustand definiert, ob der Puffer für Eingangs- oder Ausgangstransaktionen verwendet werden soll und ob auf ihn momentan zugegriffen wird oder ob er die gewünschte Operation beendet hat.
  • Wenn eine IN- oder OUT-Übertragung von einem Endpunktkanal angefordert wird und ein Puffer vorhanden ist, wird das geeignete Steuerwort gelesen. Dieses Steuerwort teilt dem Endpunkt-Controller mit, wie die Transaktion zu beenden ist. Am Ende einer Transaktion wird in das Steuerwort der Status geschrieben, der von der Software als Anzeige zum Freigeben dieses Puffers verwendet wird, und ein neues wird vorgesehen.
  • Endpunkt-Controller-Blockdiagramm
  • Der Endpunkt-Controller besteht aus mehreren Funktionsblöcken. Die Endpunkt-Ablaufsteuereinrichtung (state machine) sieht die zentralisierte Steuerung für die Dienstblöcke des Datenausricht-Mux (DALM; data alignment max), Adressengenerators (ADGen), Teilendpunktkanal-Speichers (PEP-Speichers) vor. Die Gerätefunktion, wie die Adreßüberprüfung und -erzeugung werden in dem Gerätefunktionsblock realisiert.
  • Alle Ablaufsteuereinrichtungen laufen mit dem USB-Takt von 12MHz. Alle Datenübertragungen arbeiten mit dem Kernbus-Takt. Teile des ADGen-Blocks und der gesamte DALM-Block arbeiten mit dem Kernbus-Takt. Alle anderen Blöcke des Endpunkt-Controllers verwenden ausschließlich den lokalen Takt von 12 MHz. Datenbytes zwischen den Bereichen werden bei der MAC-Benutzerschnittstelle mit einem asynchronen Handshake für jedes übertragene Byte synchronisiert.
  • Figure 00490001
    Figur 2-2. Vereinfachtes Blockdiagramm des Endpunkt-Controllers
  • Speicherzugriffsleistung
  • Der Endpunktcontroller minimiert die Anzahl der erforderlichen Speicherzugriffe. Nur bei Empfang eines Tokens ist ein Speicherzugriff auf das Endpunktfeld notwendig. Ein einzelner Doppelwort-Zugriff, zusammen mit dem systemeigenen Endpunktzustand, ist ausreichend, damit der Endpunktkanal die Hostanfrage verarbeiten kann. Dieser Zugriff liest die Positions- und Größeninformation für die Datenübertragung. Die Datenübertragung erfolgt in aufeinanderfolgenden Doppelwort-Lese- oder Schreib-Operationen.
  • Das Modul hat die höchste Priorität auf dem Kernbus für Übertragungen, und die Übertragungsrate ist deutlich höher als die des USB. Es besteht somit eine minimale Notwendigkeit der Datenpufferung innerhalb des Endpunkt-Controllers, abgesehen von einem extra Wort, um nachfolgende Zugriffe mit dem aktuellen Zugriff überlappen zu lassen. Ein Bytezähler überwacht die Anzahl der Bytes, die übertragen werden. Der letzte Zugriff einer Übertragung kann ein teilweises Lesen oder Schreiben des Speichers erfordern. Das teilweise Schreiben des letzten Zugriffs wird von dem letzten Bytezählwert bestimmt. Am Ende einer Übertragung wird der Status für die Übertragung in das aktuelle Steuerwort geschrieben, und das andere Steuerwort für diesen Endpunkt wird gelesen, um zu überprüfen, ob ein weiterer Puffer vorbereitet wurde. Nach den Steuerwort-Operationen wird der Zustand des Endpunktkanals akualisiert.
  • Synchronisationssupport
  • Durch eine Kombination aus Hardware und Software unterstützt das UNIM alle drei USB- definierten Synchronisationsklassen, asynchron, synchron und adaptiv. Der Endpunkt-Controller sieht eine Hardwareunterstützung für die Überwachung des USB-Bustaktes von 1 kHz im Verhältnis zu einem externen Bezugstakt, von z. B. 8 kHz, und zum Überwachen der Qualität und Konsistenz des USB-Bustaktes von 1 kHz vor.
  • Steigende Flanken eines externen Bezugstaktes werden in dem Bezugs-Zähkegister gezählt. Es kann dazu verwendet werden, die USB-Blocknummer zu vergleichen. Die Frequenzdifferenz zwischen dem Bezugstakt und dem USB-Takt kann dem Host in Paketen signalisiert werden, so daß der Host die USB-Bustaktfrequenz einstellen kann; somit kann der USB-Takt mit dem Bezugstakt synchronisiert werden.
  • Der Endpunkt-Controller hält auch einen Status aufrecht, um anzuzeigen, wenn er zu dem USB-Bustakt von 1 kHz sychronisiert ist und wenn aufgrund eines fehlenden oder falschen Block-Anfang-Pakets eine Diskontinuität in dem USB-Bustakt auftritt. Er wird von der Software dazu verwendet, die Warteschlange der isochronen Pakete einzustellen. Die aktuelle Blocknummer wird von dem Endpunkt-Controller dazu verwendet, zu ermitteln, welcher isochrone Puffer als nächstes gesendet werden soll.
  • Betrieb aussetzen/wieder aufnehmen
  • Aussetzbetrieb.
  • Es wird erwartet, daß eine USB-Einrichtung abhängig von dem Aussetzereignis, das auftritt, nachdem 3 ms verstrichen sind, ohne daß irgendwelche Busaktivität erfaßt wurde, in den Aussetzzustand geht. Das UNIM erfaßt dieses Ereignis und zeigt es dem CR32A an, indem das ISR.SD Bit gesetzt und ein Intenupt gesendet wird, wenn es enabelt ist. Das CR32A sollte abhängig davon das UNIM in den Aussetzzustand versetzen und nach 5 ms ohne Erfassung irgendwelcher Aktivität in den Haltemodus umschalten (ISR.SDS).
  • Im Aussetzzustand geht der Transceiver in einen speziellen Niederleistungsmodus, und die Takte können unterbrochen werden. Der gespeicherte Zustand und das Kernbus-RAM bleiben statisch, so daß bei der Wiederaufnahme keine weiteren Operationen notwendig sind.
  • Normandy kann aufgrund eines für den CR32A lokalen Ereignisses den Betrieb nach dem Aussetzzustand wieder aufnehmen, wodurch seinerseits der USB-Bus über eine Fern-Wiederaufnahme oder bei Erfassung eines Fern-Befehls auf dem USB-Bus, der den CR32A über die MIWU unterbricht, geweckt werden kann.
  • Man beachte, daß eine Einrichtung im Aussetzbetrieb maximal 500 μA von dem Bus ziehen darf, siehe „GERÄTESPEZIFIKATIONEN" auf Seite 3-55 für Einzelheiten des Stromverbrauchs von Normandy.
  • Fernwiederaufnahme
  • Wenn der Host Fernweckrufe von diesem Knoten enabelt hat, sendet Normandy einen solchen abhängig von einem lokalen Ereignis, wie einem Interrupt.
  • Wenn die Firmware das Ereignis erfaßt, nimmt sie die Prozessoraktivität im aktiven Modus wieder auf. Sie weckt dann das UNIM aus dem Niederleistungs-Aussetzzustand und löst eine Fernwiederaufnahme auf dem USB unter Verwendung des FSR-Registers aus. Die Knotenfirmware muß sicherstellen, daß wenigstens 5 ms Leerlauf auf dem USB stattfanden. Im Wiederaufnahmezustand wird auf dem USB eine Konstante „K" angezeigt. Diese sollte wenigstens 1 ms andauern, wobei danach der USB-Host damit fortfährt, das Wiederaufnahmesignal während wenigstens zusätzlicher 20 ms zu senden, und dann die Wiederaufnahmeoperation abschließt, indem er die Paketende-Sequenz ausgibt. Sollte innerhalb von 100 ms kein Paketende-Signal vom Host empfangen werden, sollte die Fernwiederaufnahme erneut durch Software gestartet werden.
  • USB-Wiederaufnahmeoperation
  • Bei Erfassung eines Wiederaufnahme- oder Reset-Signals während des Aussetzzustands ist das UNIM-Modul dafür verantwortlich, Normandy aufzuwecken. Dies erfolgt, indem das UNIM ein Signal (ohne Beitrag irgendwelcher Takte) an die MIWU sendet, das die Erfassung einer Wiederaufnahme auf dem USB anzeigt und den Normandy-Weckruf anfordert, um den CR32A zu aktivieren und zu unterbrechen. Dabei werden die Takte für das USB-Modul erneut enabelt, und der Rest des Chips wird aufgeweckt.
  • Die USB Spezifikation erfordert, daß eine Einrichtung innerhalb von 10 ms auf USB-Token antworten kann.
  • Einschalt-Resets
  • Es gibt zwei Fälle, in denen dieser Knoten aktiviert werden kann; wenn der Knoten in einen bereits aktivierten USB-Verteilerport eingesteckt wird, und wenn bei dem Verteilerknoten die Energie eingeschaltet wird. Um eine Interoperabilität zwischen den Bus-Geräten zu erreichen, erfordert die USB-Spezifikation, daß der Knoten innerhalb von 100 ms auf einen USB-Reset reagiert können muß, nachdem die Energie eingeschaltet und beim Verteilerport stabil ist. Ähnlich muß ein Knoten, der in Betrieb eingesteckt wird, auf ein USB-Reset innerhalb von 100 ms reagieren, nachdem seine Verbindung von einem Verteilerport erfaßt wurde. Der USB-Reset wird während wenigstens 10 ms beibehalten. Nachdem der USB-Reset gelöst wurde, liefert der Verteiler 100 mA Busleistung an das Gerät. Erst nachdem das Gerät konfiguriert wurde, darf es die in der USB-Standardkonfiguration beschriebene Energiemenge aufnehmen (bis zu 500 mA). Das UNIM führt eine USB-definierte, Bus-getriebene Hochleistungs-Funktion aus.
  • 2.1.6 UNIM Programmiermodel
  • Das USB-Model enthält Register, die dazu verwendet werden, den Betrieb der USB-Einrichtung und ein Endpunktfeld im Speicher zu steuern und zu überwachen, das zum Steuern der Endpunkparameter verwendet wird, die für eine bestimmte Endpunktübertragung spezifisch sind. Die Beziehung zwischen den verschiedenen Registern und Speicherparametern ist unten angegeben.
  • Figure 00530001
    Figur 2-3 USB-Modul-Programmiermodel
  • Endpunktkanalfeld
  • Das Endpuntkanalfeld besteht aus 32 Steuerworten, 2 für jeden Endpunktkanal. Das Endpunktkanalfeld liegt im Speicher bei einer Adresse, auf die EABAR weist. Diese Adresse muß eine ausgerichtete 128-Byte Adresse sein (d. h. 7 LSBs der Adresse sind 0). Das Endpunktkanalfeld erhält über die 4-Bit Endkanalnummer einen Index, und das Steuerwort, auf das zugegriffen wird, wird von dem 1-Bit Zeiger des Endpunktkanal-Steuerwortes bestimmt. Zusammen erzeugen das 250-Bit EABR, das 4-Bit EP und das 1-Bit CW eine 32-Bit Adresse, die zu einer Doppelwort- (32-Bit) Grenze ausgerichtet ist, und sie werden dazu verwendet, auf das 32-Bit Steuerwort zuzugreifen. Das Format jedes Eintrags in der Tabelle ist unten beschrieben.
  • Steuerwortformat
  • Das 32-Bit Steuerwort enthält die gesamte Information, die zum Betreiben dieses Endpunktkanals notwendig ist, wenn er aktiv ist. Es gibt zwei solche Einträge für jeden Endpunktkanal.
  • Das Steuerwort, auf das als nächstes zugegriffen werden soll, wird von dem Wert des Endpunktkanal-Steuerwortzeigers (CWP) bestimmt. Unmittelbar nach dem Empfang eines Tokens IN, OUT oder SETUP durch einen Endpunktkanal, der momentan in einem betriebsbereiten Zustand ist, wird das Steuerwort des ausgewählten Endpunktkanals bei dem aktuellen Steuerwortzeiger gelesen, um zu ermitteln, wie auf den Token reagiert werden soll. Am Ende einer Übertragung, wenn ein Beendigungsstaatus geschrieben wird, wird das Steuerwort mit dem aktuellen Status aktualisiert, der CWP wird inkrementiert, und das nächste Steuerwort wird gelesen. Wenn ein Zwischenstatus geschrieben wird, wird nur das höchstwertige Byte des Steuerwortes aktualisiert.
  • Figure 00540001
  • BS Pufferzustand.
  • 4-Bit-Wert. Von Software und EPC aktualisiert, um die Steuerung dieses Puffers zwischen ihnen zu synchronisieren. Der EPC schreibt den Status, der die Verwendung des EPCs angibt. Dieses Feld wird von der Knoten-Firmware auf Ausgang bereit (Output Ready), Eingang bereit (Input Ready) Setup bereit (Setup Ready), Überspringen (Skip), Unterbrechen (Stall) und Disable eingestellt . Alle anderen Werte werden von dem EPC eingestellt. Der EPC kann auch die Werte von Stall und Disable bei Fehlerbedingungen schreiben. Der Puffer kann von der Knoten-Firmware wieder beansprucht werden, wenn der Pufferzustand den Wert eines Fertig-Status hat; dies umfaßt den Eingabe/Ausgabe-Fertigstatus und die Fehler Codes.
    • 0: Skip Skip. Wird zusammen mit dem Ausgabe-Fertigbefehl verwendet. Skip bewirkt, daß das nächste empfangene Datenpaket ignoriert und der Steuerwortzeiger inkrementiert wird. Bei Steuerendpunkten bewirkt es auch, daß der Endpunktkanalzustand von dem Eingabe/Ausgabe-Bereitzustand auf den Eingabe/Ausgabe-Wartezustand schaltet. Das Einstellen von TE und TI bestimmt, welche Quittung (Handshake) zurückgegeben wird, sowie den nächsten Zustand des Endpunktkanals. NAK wird zurückgegeben, wenn entweder TE oder TI gesetzt ist. Wenn TI gesetzt ist und nicht TE, wird keine Quittung zurückgegeben. Wenn TE gesetzt ist, wird ACK zurückgegeben, und ein vollständiger Status wird geschrieben, wenn ein Paket mit der richtigen PID empfangen wird.
    • 1: IRDY Input Ready (Eingang bereit). In den Puffer wurden Daten geschrieben, die abhängig von einem IN-Token gesendet werden sollen.
    • 2: ORDY Output Ready (Ausgang bereit). Der Puffer wurde für das Schreiben zugewiesen.
    • 3: SRDY Setup Ready. Der Puffer wurde für das Schreiben zugewiesen. Dies wird nur während der ersten Übertragung von Steuerlese- und Schreiboperationen bei einem Steuerendpunkt verwendet. Es wird nur in das Steuerwort 0 geschrieben.
    • 4: OWT Output Wait (Ausgabe warten). Gibt an, daß ein Fehler aufgetreten ist, während OUT-Daten von dem Host empfangen wurden. Dies umfaßt die Erfassung eines Bit-Stuffing-Fehlers. Ein erneuter Versuch wird erwartet, weil dies als Zwischenzustand betrachtet wird, außer in dem Fall eines isochronen OUT-Endpunkts, wo es als Beendigungsstatus behandelt wird.
    • 5: CRCE CRC Error. Gibt an, daß ein fehlerhafter CRC am Ende einer Ausgabetransaktion erfaßt wurde. Ein erneuter Versuch wird erwartet, weil dies als Zwischenzustand betrachtet wird, außer in dem Fall eines isochronen OUT-Endpunkts, wo es als ein Beendigungszustand behandelt wird.
    • 6: BUFE Buffer Error (Pufferfehler). Während einer Ausgabetransaktion, wurden Daten von dem USB schneller Empfangen, als sie in den Speicher geschrieben werden konnten. Während einer Eingabe wurden Daten aus dem Speicher nicht schnell genug gelesen, um mit der USB-Datenrate mitzuhalten. An diesem Endpunkt wird ein erneuter Versuch erwartet.
    • 7: IWT Input Wait (Eingabe warten). Der Puffer wird von dem Endpunkt-Controller angehalten und wartet darauf, diesen Puffer bei der nächsten Gelegenheit zu senden oder erneut zu senden. Dies gilt für den Fall einer fehlenden Bestätigung (ACK).
    • 8: ICMP Input Complete (Eingabe beendet). Erfolgreiche Beendigung der Eingabe-Operation. Der Puffer kann freigegeben werden.
    • 9: OCMP Output Complete (Ausgabe beendet). Der Puffer ist mit Daten gefüllt, und es wurde kein Fehler erfaßt.
    • 10: TKNE Token Error. Ein Token des falschen Typs für den momentanen Kontext des Steuerendpunktkanals wurde empfangen. Wenn es ein Ausgangspuffer war, wird der Endpunkt angehalten. Wenn es ein Eingangspuffer war, wird NAK gesendet, und der Zustand des anderen Steuerworts wird untersucht. Dies wird als ein Beendigungsstatus angesehen.
    • 11: SYNE Iso Synchronisation Error. Daten wurden in einem Puffer mit TE = 1 und TI = 1 empfangen, der CWP war jedoch nicht gleich dem LSB des FNR. Dies wird als ein Beendigungsstatus angesehen.
    • 12: DATE Data Error (Datenfehler). Für OUT-Daten, wenn CW.BR nicht gesendet wurde und die Menge der vom Host empfangenen Daten geringer als erwartet war oder der zugewiesene Puffer war nicht groß genug, um die OUT-Daten zu speichern. Für Eingangsdaten wird es gesetzt, wenn ein Pufferfehler aufgetreten ist und CW.TE nicht gesetzt oder CW.TI gesetzt war. Dies wird als ein Beendigungsstatus angesehen.
    • 13: rsvd Reserviert.
    • 14: HALT Halt. Bewirkt, daß der aktuelle Endpunktkanal in seinen Halt-Zustand geht, oder gibt an, daß der Endpunkt in den Halt-Zustand gegangen ist.
    • 15: DIS Disable. Bewirkt, das der aktuelle Endpunktkanal in seinen Disable-Zustand geht, oder zeigt an, daß der Endpunktkanal in den Disable-Zustand gegangen ist.
  • TI Type isochron. 1 isochron, 0 Steuerung, Bulk, Interrupt.
  • TE Toggle Enable. Wird zum Vergleichen/Erzeugen des Wertes des Datenpaket-Identifikators (PID) (Data0/Datal) mit dem Steuerwortzeiger verwendet.
    • 0: Der Daten-Toggle-PID wird bei Ausgangstransaktionen nicht überprüft, und er wird gestützt auf den aktuellen Wert des CWP abhängig von IN-Token erzeugt. Der CWP wird nach jeder Transaktion inkrementiert (invertiert), selbst wenn kein ACK empfangen wurde. Bei isochronen Endpunkten werden Ausgangsdaten nicht in den Speicher geschrieben, bis der CWP gleich dem niedrigstwertigem Bit der Blocknummer FNR.FN(0) ist. Dies hat keinen Einfluß auf Daten, die abhängig von IN-Token gesendet werden. Daten-Toggle sollte für Puffer nicht enabelt werden, die dafür bestimmt sind, mit dem SETUP-Token gesendete Daten zu empfangen.
    • 1: Der Daten-Toggle-PID wird bei Ausgangstransaktionen überprüft und gestützt auf den aktuellen Wert von CWP abhängig von IN-Token erzeugt. Bei Ausgangstransaktionen wird ein ACK abhängig von Ausgangspaketen gesendet, deren PID-Wert (Data 0/1) nicht mit dem CWP übereinstimmt. Bei Eingangstransaktionen wird CWP nach jeder Transaktion nur inkrementiert (invertiert), wenn eine ACK-Quittung abhängig von einer Zeitablaufperiode zurückgegeben wurde. Bei isochronen Endpunkten werden die Ausgangsdaten immer in den Speicher geschrieben, wenn jedoch FNR.FN(0) nicht gleich CWP ist, wird der ISO-Sync-Fehlerpufferzustand zurückgeschrieben.
  • BR Buffer Rounding (Pufferrundung). Gibt für Ausgangstransaktionen an, ob es zulässig ist, einen Puffer mit einer anderen Größe als der des empfangenen Datenpakets zu verwenden.
    • 0: Das Datenpaket sollte den definierten Datenpuffer genau füllen. Der Pufferüberlauf- oder Unterlaufstatus wird zurückgegeben, wenn das Datenpaket nicht genau in den Puffer paßt.
    • 1: Das Datenpaket kann kleiner als der definierte Puffer sein, ohne eine Fehlerbedingung am Endpunkt zu erzeugen.
  • Wenn es zusammen mit einem Ausgabeende- oder Datenfehlerpuffer-Status gelesen wird, gibt dieses Feld den Wert des empfangenen PID an – 0 für Data0,1 für Data1.
  • IC Interrupt on Packet Complete (bei Paketende). Dies bewirkt, daß an diesem Endpunkt ein Ereignis gesetzt wird, (EER.EPn), wenn der Pufferstatus mit Eingabeende oder Ausgabeende beschrieben wird, bei einem Paketfehler, oder wenn der Endpunktkanal unterbrochen wird.
  • IE Interrupt on Packet Error (bei Paketfehler). Dies bewirkt, daß an diesem Endpunkt ein Ereignis gesetzt wird (EER.Epn), wenn der Pufferzustand einem der Pufferfehlercodes entspricht, oder wenn der Endpunkt unterbrochen wird. Wenn sowohl IC als auch IE gesetzt sind, bewirken auch CRC- und Bit-Stuffingfehler, daß ein Ereignis erzeugt wird und diese Puffer nicht mehr verwendet werden, wie im normalen Betrieb. Dies dient hauptsächlich der Diagnose.
  • res Reserviert. 1 Bit.
  • BP Buffer Page (Pufferseite).
    • 0: Verwende Pufferseite A als obere Adresse des Eingabe/Ausgabepuffers.
    • 1: Verwende Pufferseite B als obere Adresse des Eingabe/Ausgabepuffen.
  • BA Buffer Address (Pufferadresse). 11 Bit. Die unteren 11 Bit der Pufferadresse. Der Puffer muß bei einer ausgerichteten Doppelwortgrenze beginnen, und er kann bei jeder Byte-Grenze enden. Am Ende aller vollständigen Übertragungen wird der Restwert der Pufferadresse geschrieben. Am Ende unvollständiger Übertragungen, z. B. wenn der Status mit Eingab- oder Ausgabe-Warten beschrieben wird, wird dieses Feld nicht überschrieben. Bei OUT-Puffern ist das erste gespeicherte Byte das Byte, daß dem PID folgt. Ähnlich zeigt bei IN-Puffern die Adresse auf das erste Byte der zu übertragenden Daten, d. h. das Byte, das dem PID in dem Paket unmittelbar folgt. Der CRC wird automatisch berechnet und an das Paket angehängt, außer wenn der IN-Token aus dem IS RDY-Zustand empfangen wird und das IS-Feld des Steuerworts nicht auf 1 gesetzt ist.
  • BC Byte Count. 10 Bit. Die Größe des zu verwendenden Datenpuffers. Der Puffer beginnt bei einer geraden Doppelwortgrenze, und er kann bei jeder Bytegrenze enden. Bei IN-Transaktionen zeigt dies die Größe der zu übertragenden Daten an. Bei OUT-Transaktionen gibt dies die Größe des Puffers an, in dem Daten empfangen werden können. 0 ist ein zulässiger Wert für den Byte-Zählwert. Am Ende aller vollständigen Übertragungen wird der Restwert des Bytezählers geschrieben. Am Ende unvollständiger Übertragungen, z. B. wenn der Zustand als Eingabe-Warten oder Ausgabe-Warten beschrieben wird, wird dieses Feld nicht überschrieben.
  • 2.1.7 Endpunktkanalbetrieb
  • Endpunktkanalzustände
  • Um den Betrieb und die Steuerung aufrechtzuerhalten, hält jeder Endpunktkanal einen Zustand mit genau definierten Bedingungen für Übertragungen zwischen den Zuständen aufrecht, die eine implizite Hardware/Software-Synchronisierung benötigen. Endpunktkanal-Zustandsübergänge treten auf:
    • – bei expliziten Softwarebefehlen an einen Endpunkt über das Endpunktbefehlsregister (ECR)
    • – durch Lesen des Pufferstatus des anderen Puffers in dem anderen Steuerwort für diesen Endpunkt am Ende einer Übertragung, und
    • – als eine Folge von Ereignissen auf dem USB, wie dem Empfang von IN, OUT und SETUP-Token und ACK-Quittungen.
  • 2-4 zeigt eine vereinfache Endpunktkanal-Ablaufsteuereinrichtung zum Verarbeiten von IN und OUT-Transaktionen. Die Verarbeitung von Steuer-Lese- und Schreibtransaktionen erfolgt auf ähnliche Weise.
  • Figure 00590001
    Figur 2-4. Vereinfachtes Endpunktzustandsdiagramm
  • Der aktuelle Endpunktkanalzustand ist im Endpunktzustandsregister sichtbar, auf das über den USB-Index und Datenregister zugegriffen werden kann. Maximal ist immer ein Endpunktkanal zu einer gegebenen Zeit in einem der aktiven Zustände. Dies ermöglicht eine gemeinsame Nutzung der aktiven Zustandslogik durch alle Endpunktkanäle.
  • Disable. Der Disable-Zustand wird bei einem Reset, bei einem Disable-Befehl an diesen Endpunktkanal und bei Erfassung eines Disable-Zustands im Pufferzustand eines Steuerwortes ausgelöst. Jeder Token, der von diesem Endpunktkanal empfangen wird, während er in diesem Zustand ist, wird ohne Handshake zurückgegeben. Ein Eingreifen mittels Software ist notwendig, um den Endpunktkanal aus diesem Zustand zu holen, üblicherweise über einen Enable-Befehl an einen der Wartezustände.
  • Halt. Der Halt-Zustand wird aktiviert, wenn der Stall-Befehl (Unterbrechen) an den Endpunktkanal geht, wenn ein Stall-Zustand im Pufferzustand eines Steuerworts erfaßt wird, sowie bei bestimmten Fehlerbedingungen. Jeder von diesem Endpunktkanal empfangene Token wird als Stall-Handshake zurückgegeben, während dieser in diesem Zustand ist, um anzuzeigen, daß der Endpunkt momentan unterbrochen ist. Ein Eingreifen mittels Software ist erforderlich, um den Endpunktkanal aus diesem Zustand zu bringen, üblicherweise über einen Enablebefehl an einen der Wartezustände.
  • Input Idle I_IDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugewiesen wird. Ein NAK-Handshake wird zurückgegeben, wenn ein IN-Token auf diesen Endpunktkanal abgebildet wird. Keine Antwort wird bei Out-Token von diesem Endpunktkanal zurückgegeben.
  • Input Ready I_RDY. Dieser Zustand wird über einen Eingang-Bereit-Befehl an diesen Endpunktkanal oder bei Erfassung eines anderen Eingabepuffers am Ende einer Übertragung aktiviert. Der Befehl sollte nur erfolgen, nachdem diesem Endpunkt ein Puffer zugewiesen wurde, indem das Steuerwort bei der richtigen Position in dem Endpunktfeld geschrieben wird. Diese Steuerwort sollte auf einen Datenpuffer zeigen, der Daten enthält, die abhängig von dem nächsten IN-Token, welcher von diesem Endpunktkanal empfangen wird, an den Host zurückgegeben werden sollen. Der PID-Wert wird als Data0 übertragen, wenn CWP gleich 0 ist, und als Data1, wenn CWP gleich 1 ist.
  • Input Active I_ACT. Dieser Zustand wird bei Empfang eines IN-Tokens aktiviert, wenn der ausgewählte Endpunktzustand momentan Eingang-Bereit ist. In diesem Zustand werden Daten von dem Speicher an den USB übertragen. Bei Beendigung der Datenübertragung sollte ein ACK-Handshake innerhalb von 16 Bitzeiten empfangen werden. Am Ende dieser Zeitablaufperiode wird der Pufferwartezustand in das Steuerwort zurückgeschrieben, wenn kein ACK empfangen wurde. Der Adreß- und Bytezähler werden jedoch nicht überschrieben, weil eine erneute Übertragung erfolgt und die momentanen Werte nicht neu verwendet werden müssen. Wenn ein ACK emfpangen wird, werden der Pufferstatus zusammen mit dem aktuellen Wert des Adreß- und Bytezählers geschrieben. Dann wird das andere Steuerwort an die sem Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu ermitteln, der das nächste Mal verwendet werden soll, wenn ein Token an diesen Endpunktkanal gerichtet wird. Wenn dieser Endpunkt für eine Steuerübertragung verwendet wird, kann ein Übergang zu dem Ausgang-Bereit- oder Ausgang-Ruhe-Zustand erfolgen, um die Statusphase der Steuer-Leseübertragung zu beenden.
  • Input ISO Ready IS_RDY. Dieser Zustand wird über einen Eingang-Bereit-Befehl an diesen Endpunktkanal oder bei Erfassung eines weiteren Eingangspuffers am Ende einer Übertragung aktiviert. Der Befehl sollte nur erfolgen, nachdem diesem Endpunkt ein Puffer zugewiesen wurde, indem das Steuerwort an die geeignete Stelle in dem Endpunktfeld geschrieben wird. Dieses Steuerwort sollte zu einem Datenpuffer weisen, der Daten enthält, die abhängig von dem nächsten, von diesem Endpunktkanal empfangenen IN-Token an den Host zurückgegeben werden sollen. Der PID-Wert wird unabhängig vom Wert des CWP immer als DAT0 übertragen.
  • Input ISO Active IS_ACT. Dieser Zustand wird bei Empfang eines IN-Tokens aktiviert, wenn der ausgewählte Endpunktzustand Eingang-momentan-bereit ist. Während dieses Zustands werden Daten vom Speicher zu dem USB übertragen. Bei Beendigung der Datenübertragung werden der Pufferstatus zusammen mit dem aktuellen Wert des Adreß- und Bytezählers am Ende der Übertragung geschrieben. Dann wird das andere Steuerwort bei diesem Endpunkt gelesen, um den nächsten Zustand des Endpunktes zu bestimmen, der das nächste Mal verwendet werden soll, wenn ein Token an diesen Endpunktkanal gerichtet wird.
  • Output Idle O_IDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugewiesen wird. Ein NAK-Handshake wird zurückgegeben, wenn ein OUT-Token auf diesen Endpunktkanal abgebildet wird. Keine Antwort wird zurückgegeben, wenn IN-Token an diesen Endpunktkanal gehen.
  • Output Ready O_RDY. Dieser Zustand wird aktiviert, nachdem dem Endpunktkanal ein Puffer zugewiesen wurde, in den Daten geschrieben werden sollen. Er kann über einen Ausgangs-Bereit-Befehl von dem O_IDL-Zustand aktiviert werden, nachdem das passende Wort aus dem Endpunktfeld geschrieben wurde, oder bei Erfassung eines weiteren Ausgabepuffers am Ende einer Übertragung.
  • Output Active O_ACT. Dieser Zustand wird bei Empfang eines OUT-Tokens aktiviert. Während dieses Zustandes werden Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status in das Steuerwort bei dem CWP geschrieben. Wenn die Übertragung nicht erfolgreich war, d.h. wenn ein CRC oder Bitstuffing-Fehler erfaßt wurde, wird dies als Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war, wird der Ausgabe-Beendet-Pufferstatus geschrieben, CWP wird invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Gestützt auf den Pufferzustand erfolgt der richtige Übergang. Wenn dieser Endpunkt für eine Steuerübertragung verwendet wird, kann ein Übergang zu dem Eingang-Bereit- oder zu dem Eingang-Warte-Zustand erfolgen, um die Statusphase einer Steuer-Schreibübertragung zu beenden.
  • Output ISO Idle OS_IDL. In diesem Zustand erwartet der Endpunkt, daß bald ein Puffer zugewiesen wird. Kein Handshake wird zurückgegeben, wenn ein OUT-Token auf diesen Endpunkt ausgebildet wird. Keine Daten oder Handshakes wird bei IN-Token auf diesem Endpunktkanal zurückgegeben.
  • Output ISO Ready OS_RDY. Dieser Zustand wird aktiviert, nachdem diesem Endpunktkanal ein Puffer zugewiesen wurde, in den Daten geschrieben werden sollen. Er kann über einen OS-Bereit-Befehl von dem OS_IDL-Zustand aktiviert werden, nachdem das entsprechende Wort aus dem Endpunktfeld geschrieben wurde, oder bei Erfassung eines weiteren Ausgabepuffers am Ende einer Übertragung.
  • Output ISO Active OS_ACT. Dieser Zustand wird bei Empfang eines OUT-Tokens von dem OS_RDY-Zustand aktiviert. Während dieses Zustandes werden Daten in dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status bei dem CWP in das Steuerwort geschrieben. Wenn die Übertragung nicht erfolgreich war, d.h. wenn ein CRC oder Bitstuffing-Fehler erfaßt wurde, wird dies als der Pufferstatus geschrieben. Wenn die Übertragung erfolgreich war, wird der Ausgabe-Beendet-Pufferstatus geschrieben. Am Ende der Statusübertragung wird CWP invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Der richtige Übergang erfolgt gestützt auf den Pufferzustand.
  • Setup Ready S_RDY. Dieser Zustand wird aktiviert, nachdem diesem Endpunktkanal ein Puffer zugewiesen wurde, in den Daten geschrieben werden sollen. Dieser Zustand wird über einen Setup-Bereit-Befehl aktiviert, nachdem das richtige Wort aus dem Endpunktfeld geschrieben wurde, oder bei Erfassung des Setup-Bereit-Pufferzustands.
  • Setup Active S_ACT. Dieser Zustand wird bei Empfang eines Setup-Tokens von dem Setup-Bereit-Zustand aktiviert. In diesem Zustand werden Daten von dem USB in den Speicher geschrieben. Am Ende einer Ausgangsübertragung wird der Status bei CWP in das Steuerwort geschrieben, CWP wird invertiert, und das andere Steuerwort für diesen Endpunktkanal wird gelesen. Der richtige Übergang erfolgt gestützt auf den Pufferzustand zu Ausgang-Warten, Ausgang-Bereit, Eingang-Warten oder Eingang-Bereit, abhängig vom Typ der Steuerübertragung und des gelesenen Pufferzustands.
  • Hardware/Software-Synchronisierung
  • Nach dem Reset werden alle Endpunkte disabelt. Ein Endpunkt wird enabelt, indem ein Enable-Befehl an den Endpunkt geschickt wird. Dies sollte nur erfolgen, wenn die Eingabe- und/oder Ausgabepuffer diesem Endpunkt bald zugewiesen werden. Alle Endpunkte, die momentan nicht auf einem Endpunktkanal abgebildet sind, werden als disabelt angesehen.
  • Die Software weist den Endpunktkanälen Puffer nach Bedarf zu. Nachdem jeder Puffer zugewiesen ist, führt er den Eingang- oder Ausgang-Bereit-Befehl an dem Endpunktkanal durch. Wenn der Endpunktkanal momentan im Ruhezustand ist, geht er in den geeigneten Bereit-Zustand. Wenn der Endpunktkanal momentan in einem Bereit- oder Aktiv-Zustand ist, ignoriert er alle Befehle außer den Disable- und Stall-Befehlen an den Endpunktkanal, die er sofort verarbeitet. Die Software muß diese Schreiboperation durchführen, um mögliche Synchronisierungsprobleme zu verhindern, weil die Behandlung des Endpunktkanals durch das UNIM zu den Softwareoperationen asynchron erfolgt.
  • Da jedem Endpunkt bis zu zwei Puffer zugewiesen werden können, kann der nächste Puffer vorbereitet werden, während der aktuelle abgearbeitet wird, um die Datenübertragung zu beschleunigen und unnötige NAK-Handshakes zu vermeiden.
  • 2.1.8 UNIM-Register
  • Beim Lesen sollten Daten aus reservierten Registern ignoriert werden, und beim Schreiben sollten diese Bits auf 0 geschrieben werden. – Dieser Vermerk ist in dem Chip global gültig.
  • Gerätesteuerregister (DCR)
  • Ein ein Wort breites Lese/Schreibregister. Das Gerätesteuerregister steuert die Einschaltsequenz des USB-Knotens. Bei einem Reset wird dieses Register gelöscht. Das DCR-Registerformat ist unten angegeben:
    Figure 00640001
  • NAT. Node Attached (Knoten angeschlossen). Gibt an, daß dieser Knoten bereit ist und als an den USB angeschlossen erfaßt werden kann. Wenn es nicht gesetzt ist, erzwingt der Transceiver, daß das SE0 an dem USB-Port verhindert, daß der Verteiler (Hub), mit dem dieser Knoten verbunden ist, eine Verbindung erfaßt. Nach einem Reset ist es nicht gesetzt, so daß das Gerät Zeit hat, bevor es auf Befehle reagieren muß. Nachdem dieses Bit gesetzt ist, steuert das Gerät den USB nicht mehr an und sollte bereit sein, Reset-Befehle von dem Verteiler zu empfangen.
  • ECE. Endpunkt Controller Enable. Enabelt den Betrieb der Endpunktkanäle des Endpunktcontrollers, der die Endpunktfeld-Basisadresse und die Einstellung des Kanalabbildungs-Auswahlregisters verwendet. Wenn nicht gesetzt, werden alle Endpunkte als disabelt angenommen.
  • DEF 0-3. Default Address (Voreinstellungsadresse) 0-3. Enabelt die Voreinstellungsadresse und ignoriert den aktuellen Wert von FA. Dieses Bit wird gelöscht, wenn das entsprechende Adreß-Enable-Bit (AE) gesetzt wird, wenn das nächste Mal ein ACK abhängig von dem nächsten IN-Token empfangen wird, der seinerseits von einem Endpunktkanal empfangen wird, der für Steueroperationen verwendet wird. Wenn kein ACK innerhalb der Zeitablaufperiode empfangen wird, wird das nächste Mal auch dieses Bit zurückgesetzt, wenn ein Setup unmittelbar vor dem neuen Adreßfeld empfangen wird.
  • Man beachte, daß dann, wenn mehr als eine Adresse unterstützt wird, das niedrigstwertige DEF-Bit, für das das entsprechende AE-Bit gesetzt ist, das DEF-Bit ist, das beim nächsten Eintritt in den aktiven Eingabezustand auf einem Steuerendpunktkanal gelöscht wird. Es wird empfohlen, daß dann, wenn mehrere Funktionsadressen zugewiesen werden, dies von der niedrigsten zur höchsten Zahl erfolgt.
  • EPMS. Endpoint Pipe Map Select (Endpunktkanal-Abbildungsauswahl). Wählt die aktuelle Einstellung der Kanalabbildungstabelle aus. Eine Funktionsadreßübereinstimmung wird als gültig betrachtet, wenn das entsprechende AE-Bit gesetzt ist und das entsprechende DEF-Bit nicht gesetzt ist und die empfangene Adresse mit dem FA übereinstimmt. Wenn das DEF-Bit gesetzt ist, wird eine Übereinstimmung angenommen, wenn die 0-Adresse empfangen wird. Sollte mehr als eine Adresse realisiert sein, hat im Falle, daß mehrere DEF-Bits gesetzt sind, die niedrigste Zahl Priorität. In dem UNIM wird das Blocknummernregister als der SOF-Kanal(Paketanfang) angesehen. Bei anderen Ausführungsformen ist denkbar, sie an andere SOF-Kanäle zu senden.
  • ETE. External Transceiver Enable. Enabelt die Verwendung eines externen USB-Transceivers, im Gegensatz zu dem internen USB-Transceiver. Die Voreinstellung ist 0. Wenn sie nicht enabelt sind, werden alle Ausgaben der externen Transceiver-Schnittstelle bestätigt und alle Eingaben werden ignoriert. Dieses Bit kann nur modifiziert werden, wenn der Funktionszustand rückgesetzt ist (FSR.FS = 0).
  • SFM. Short Frame (Kurzblock) Enable. Enabelt die Verwendung kürzerer Blockgrößen. Dies wird exklusiv für die Diagnose und Prüfung verwendet, um die Zeit zum Emulieren eines gesamten Blockes zu reduzieren.
  • DIAG. Diagnostic Mode (Dioagnosemodus). Enabelt den Diagnosemodus, in dem zusätzliche Diagnosefunktionen zugänglich sind. Dies umfaßt den Zugriff auf Diagnoseregister und die Möglichkeit in solche Register, wie das TCR (siehe unten), zu schreiben.
  • Funktions-Zustandsregister (FSR)
  • Ein ein Wort breites Lese/Schreibregister. Es wird zum Steuern des Funktionszustands des Gerätes verwendet. Beim Reset wird dieses Register gelöscht. Das FSR-Registerformat ist unten angegeben:
    Figure 00650001
    Figure 00660001
  • FS1, FS0 wird von der Software verwendet, um den Funktionszustand des Gerätes zu steuern.
  • Funktionszustand
    • 00: USB-Reset. Dies ist der USB-Reset-Zustand. Er wird bei einem Modulreset oder mittels Software bei Erfassung eines USB-Resets aktiviert. Bei Aktivierung werden alle Endpunktkanäle disabelt. DCR.DEF und DCR.AE sollten mittels Software bei Aktivierung dieses Zustandes gelöscht werden. Bei Verlassen dieses Zustandes sollte DCR.DEF gesetzt werden, so daß das Gerät auf die voreingestellte Adresse anspricht.
    • 01: Resume. In diesem Zustand wird eine Wiederaufnahme-„K"-Signal erzeugt. Dieser Zustand wird abhängig von einer externen Weckanforderung von dem Gerät aktiviert. Der Knoten muß während wenigstens einer Millisekunde in diesem Zustand sein und darf nicht länger als fünfzehn Millisekunden in diesem Zustand bleiben.
    • 10: Operational. Dies ist der normale Betriebszustand. In diesem Zustand ist der Knoten für den Betrieb auf dem USB konfiguriert.
    • 11: Suspend. Der Aussetzzustand wird bei Erfassung eines Aussetzereignisses während des Betriebszustandes aktiviert. Während des Aussetzzustandes arbeiten die Transceiver in ihrem Niederleistungs-Aussetzmodus, und es ist zulässig, Takte von dem USB-Modul zu nehmen, um zusätzlich Energie zu sparen. Alle Endpunktfeld- und interne Zustände bleiben konserviert. Bei Erfassung von Busaktivität werden die Takte wieder aufgenommen, und das Bit ISR.RSMD wird gesetzt. Davon abhängig kann Software den Wiedereintritt in den Betriebszustand bewirken. Bei Erfassung einer externen Weckanforderung durch das Gerät löst die Software die Fernwiederaufnahme aus und erzwingt den Eintritt in den Wiederaufnahmezustand.
  • Man beachte: Bei Realisierungsformen mit der HUB-Funktion (Verteiler) kann der Übergang vom Aussetzen zum Wiederaufnehmen und vom Wiederaufnehmen zum Betrieb automatisch erfolgen. Bei der Schnittstellendefinition sollten Vorkehrungen für Signale getroffen werden, welche die Zeitbereiche überschreiten, um diese Übergange zu erzeugen.
  • Transceiver-Konfigurationsregister (TCR)
  • Ein ein Wort breites Lese/Schreib-Register. Dieses Register steuert den Betrieb des Transceivers. Die unsymmetrischen Empfängerschwellwerte und die Treiberflankensteigungen können eingestellt werden. Dieses Register kann nur modifiziert werden, wenn DCR.DIAGE 1 ist. Bei HUB-Ausführungsformen steuert dieses Register alle Transceiver. Der Rücksetzwert ist {8'b00000000, 3'b100, 5'b10000}. Das TCR-Registerformat ist unten gezeigt:
    Figure 00670001
  • VADJ Spannungsschwellwert-Einstellung. Steuert die unsymmetrischen Empfängerschwellwerte.
  • CADJ Stromeinstellung. Steuert den Steuerstrom für die Treiberflankensteigung.
  • Funktionsadreßregister (FAR)
  • Ein doppelwortbreites Lese/Schreibregister. Enthält das Adreß-Enablebit und die sieben Bit breite USB-Funktionsadresse, die während des normalen Betriebs verwendet wird, nachdem alle Setup-Operationen beendet sind. Bei einem USB-Reset wird dieses Register gelöscht. Bis zu vier Funktionsadressen können in diesem Register unterstützt werden – FA0 bis FA3. Das FAR-Registerformat ist unten gezeigt:
    Figure 00670002
    [Entwurfsverbesserung für Mehrfachendpunktgerät]
    Figure 00680001
  • FA[6:0] Funktionsadresse. Die 7 Bit breite Funktionsadresse wird von diesem Gerät verwendet.
  • AE Adreß-Enable. Enabelt die Verwendung der Funktionsadresse, die in FAR gesetzt ist, wenn das entsprechende Voreinstellungsadreßbit (DEF) nicht gesetzt ist.
  • Endpunktsteuerregister (ECR)
  • Ein ein Wort breites Lese/Schreibregister. ECD wird verwendet, um Befehle bei einem spezifizierten Endpunkt auszuführen. Bei einem Reset wird dieses Register gelöscht. Das ECR-Registerformat ist unten gezeigt:
    Figure 00680002
  • CMD Command. Dieser Befehl betrifft den Betrieb eines Endpunktes. Ein Wert 0 zeigt an, daß der Befehlsprozessor bereit für den nächsten Befehl ist.
    • 0000: Complete. Gibt an, daß der vorhergehende Befehl abgeschlossen ist und der Endpunktcontroller bereit ist, einen weiteren Befehl anzunehmen.
    • 0001: Input Enable. Bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disable-Zustand in den Eingang-Wartezustand geht. Der Steuerwortzeiger für den spezifizierten Endpunktkanal wird auf 0 zurückgesetzt. Wenn der aktuelle Zustand nicht Disable oder Stall ist, wird ein „F" zurückgegeben, um anzuzeigen, daß ein unzulässiger Befehl bei diesem Endpunkt versucht wurde, und der Befehl wird ignoriert.
    • 0010: Input Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Eingang-Bereit-Zustand geht, wenn er momentan in dem Eingang-Warte-Zustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Eingang-Bereit-Pufferzustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort in dem Speicher gelesen wird, sondern er erlaubt vielmehr, daß es abhängig von dem Empfang eines IN-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunkts nicht der Wartezustand ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand der Ausgabe- oder Setup-Zustand oder Disable oder Stall ist, wird ein „F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde.
    • 0011: Input Iso Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Eingang-ISO-Bereit-Zustand geht, wenn er momentan in dem Eingang-Wartezustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei der Eingang-Bereit-Puffer-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort in dem Speicher gelesen wird, sondern erlaubt vielmehr, daß es abhängig von dem Empfang eines IN-Tokens gelesen wird. Es wird erwartet, daß das Typfeld des Steuerwortes (TI) auf isochron gesetzt wird, dies wird jedoch nicht überprüft. Wenn der aktuelle Zustand des Endpunktes nicht Eingang-Warten ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand einer der Ausgangs- oder Setupzustände oder Disabled oder Stall ist, wird „F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde.
    • 0100: Output Enable. Bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disabled-Zustand in den Ausgang-Wartezustand geht. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Wenn der aktuelle Zustand nicht Disable oder Stall ist, wird ein „F" zurückgegeben, um anzuzeigen, daß ein unzulässiger Befehl bei diesem Endpunkt versucht wurde, und der Befehl wird ignoriert.
    • 0101: Output Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Ausgang-Bereit-Zustand geht, wenn er momentan in dem Ausgang-Wartezustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Ausgang-Bereit-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort in dem Speicher gelesen wird, sondern erlaubt vielmehr, daß es abhängig von dem Empfang eines OUT-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunktes nicht Ausgang-Warte ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand einer der Eingangszustände, Stall oder Disable ist, wird ein „F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde, und dieser Befehl wird ignoriert.
    • 0110: Output Iso Enable. Bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disable-Zustand in den Ausgang-Isochron-Wartezustand geht. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Wenn der aktuelle Zustand nicht Disable oder Stall ist, wird ein „F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde, und der Befehl wird ignoriert.
    • 0111: Output Iso Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Ausgang-Iso-Bereit-Zustand geht, wenn er momentan in dem Ausgang-Iso-Wartezustand ist. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Ausgang-Bereit-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird, sondern er erlaubt vielmehr, daß es abhängig von dem Empfang eines OUT-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunktes nicht Ausgang-Iso-Warten ist, wird der Befehl ignoriert. Wenn der aktuelle Zustand einer der Eingangszustände, Stall oder Disable ist, wird ein „F" zurückgegeben, um anzuzeigen, daß bei diesem Endpunkt ein unzulässiger Befehl versucht wurde.
    • 1000: Setup Ready. Bewirkt, daß der spezifizierte Endpunktkanal in den Setup-Bereit-Zustand geht. Dieser Befehl wird nach einem Steuerwort ausgegeben, wobei ein Ausgang-Bereit-Zustand in das Endpunktfeld für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird, sondern er erlaubt vielmehr, daß es abhängig von dem Empfang eines SETUP-Tokens gelesen wird. Wenn der aktuelle Zustand des Endpunktes nicht Stall oder Disable ist, wird der Befehl ignoriert.
    • 1001: Disable. Bewirkt, daß der spezifizierte Endpunktkanal in den Disable-Zustand geht. Dies erfolgt unmittelbar nach einem beliebigen anderen Zustand. Wenn der Endpunktkanal momentan aktiv ist, wird der Status bei der Steuerung geschrieben, wodurch angezeigt wird, daß der Endpunkt disabelt wurde.
    • 1010: Stall. Bewirkt, daß der spezifizierte Endpunkt aus einem beliebigen Zustand in den Stall-Zustand geht. Dies erfolgt unmittelbar nach jedem beliebigen Zustand. Wenn der Endpunktkanal momentan aktiv ist, wird der Zustand in die Steuerung geschrieben, wodurch angezeigt wird, daß der Endpunkt angehalten wurde.
    • 1011-1101: Reserviert. Bewirkt die Ausführung keiner Funktion. Gibt 0 zurück.
    • 1110: Toggle CWP. Bewirkt, daß der Steuerwortzeiger umgeschaltet (getoggelt) wird. Dies wird in Verbindung mit Steuerübertragungen verwendet, wenn eine ungerade Anzahl Pakete während der Datenphase gesendet oder empfangen wird.
    • 1111: Error. Gibt an, daß ein für den momentanen Zustand unzulässiger Befehl des aktuellen Endpunktkanals versucht wurde, und daß ein neuer Befehl angenommen werden könnte.
  • EPN Enpoint Pipe Number (Endpunktkanalnummer). Dieser Parameter bestimmt den Endpunktkanal, auf den der Befehl ausgeführt werden soll.
  • Vermerk für den Entwurf: Dieses Register sollte in der Hochgeschwindigkeitsbus-Schnittstellenlogik realisiert werden, wobei Daten über die asynchrone Schnittstelle weitergegeben werden. Zwei Signale werden von dem Endpunktcontroller zurückgegeben – eines, um anzu zeigen, daß der Befehl verarbeitet wurde und daß der Befehlswert auf „0" gelöscht werden sollte, und ein anderes, um anzuzeigen, daß der Befehl nicht verarbeitet werden konnte und auf „F" gesetzt werden sollte.
  • Interrupt Status Register (ISR)
  • Ein ein Wort breites Lese/Schreibregister. Benachrichtigt die Software über Ereignisse, die aufgetreten sind, die einen Interrupt verursacht haben und weitere Verarbeitung erfordern. Bits werden gelöscht, indem 1 in das Bit/die Bits geschrieben wird, welche gelöscht werden sollen. Beim Reset wird dieses Register gelöscht. Das ISR-Registerformat ist unten gezeigt:
    Figure 00720001
  • ECI Endpoint Controller Interrupt (Endpunktcontroller-Interrupt). Es ist an einem der Endpunkte ein Ereignis aufgetreten, daß Softwareunterstützung benötigt. Dies ist das ODER aller EER.Epn, die mit EEM.Epn UND-verknüpft sind.
  • SECI Synchronized Endpoint Controller Interrupt (synchronisierter ECI. Eine verzögerte Version des ECI, der bei einem Inkrement oder dem Laden von FNR.FN abgetastet wird.
  • RSTD Reset Detected (Reset erfaßt). Ein Übergang auf SEO wurde erfaßt und während minimal 2,5 μs gehalten, während der Funktionszustand nicht USB Reset war. Als Reaktion sollte der Funktionszustand (DCR.FS) auf USBReset gesetzt werden und während wenigstens 100 μs USBReset bleiben. Nach dem Reset kann der Funktionszustand auf dem USB-Betriebszustand zurückgehen.
  • SD Suspend Detected (Aussetzen erfaßt). Ein Minimum von 3,0 μs Wartezustand wurde erfaßt, wodurch angezeigt wird, daß der Betrieb dieses Gerätes ausgesetzt werden sollte. Das Aussetzen (Suspend) erfolgt softwaregesteuert durch Schreiben von DCR.FS in den Aussetzwert.
  • SDS Suspend Detected (Aussetzen erfaßt) 5. Ein Minimum von 5,0 μs Wartezustand wurde erfaßt, wodurch angezeigt wird, daß dieses Gerät nun eine Fern-Weckrufoperation ausführen darf. Sollten die Takte in dem Intervall, nachdem SD gesetzt, SDS jedoch nicht gesetzt ist, disabled werden, dann sollte der verbleibende Teil der zusätzlichen 2 ms abgemessen werden, wenn die Takte wieder aufgenommen werden.
  • RSMD Resume Detected (Wiederaufnahme erfaßt). Ein Wiederaufnahmesignal wurde auf dem USB erfaßt, während dieses Gerät in dem Aussetzzustand (DCR.FS = Suspend) war, wodurch angezeigt wird, daß dieses Gerät seine Aufwecksequenz beginnen und in den Betriebszustand gehen sollte. Wenn die Takte disabled sind, wenn die Wiederaufnahme neu erfaßt wird, wird dieses Bit gesetzt, nachdem die Takte wieder enabelt sind. Diese Wiederaufnahmebedingung sollte in dem USB-Modul ohne Taktunterstützung zwischengespeichert und dann gelöscht werden, wenn das Wiederaufnahme-Erfaßt-Bit gesetzt ist.
  • EOPD End of Packet Detected. Eine gültige Packetendesequenz wurde auf dem USB erfaßt. Dies wird verwendet, wenn das Gerät eine Fernwiederaufnahme auslöst, um anzuzeigen, daß die Wiederaufnahmesequenz bestätigt und von dem Host beendet wurde.
  • SOFD Start of Frame Detected. Ein gültiges Blockanfangspacket wurde auf dem USB erfaßt.
  • FCI Frame Counter Interrupt. Der Blockzähler hat den programmierten Offset erreicht, d.h. TR.TI[7:0] = FNR.FN[7:0].
  • ULD Unlocked Locked Detected. Gibt an, daß der Blockzeitgeber aus einem verriegelten in einen unverriegelten Zustand gegangen ist oder aus einem unverriegelten in den verriegelten Zustand zurückgegangen ist, was durch den aktuellen Wert von FNR.UL bestimmt wird, das Unlocked-Statusbit.
  • Man beachte, daß eine Einstellung der isochronen Warteschlange bei isochronen Endpunkten notwendig sein kann, weil FNR.FN[0] verwendet wird, um die nächste isochrone Übertragung zu wählen.
  • HST Holding Setup Token. Ein Setup-Token wurde empfangen, für den im voraus kein SRDY-Puffer zugewiesen wurde. Dieses Setup-Paket wird in dem Datenpfad gehalten, während darauf gewartet wird, daß dem Steuerendpunkt ein SRDY-Puffer zugewiesen wird.
  • Wenn dies bei mehr als einem Endpunkt möglich ist, muß der Endpunktzustand untersucht werden, um zu ermitteln, welcher Endpunkt auf den Puffer wartet. In diesem Fall sollte ein SRDY-Puffer auf CW0 gesetzt werden, ein OCMP-Puffer wird auf CW1 gesetzt, und ein SRDY-Befehl wird an den zugehörigen Endpunktkanal übergeben. Man beachte, daß dieser Zustand vermieden wird, außer bei ungünstigen Bedingungen. Im Intervall zwischen dem Setzen dieses Bits und dem Zuweisen des Puffers werden alle gültigen IN- und OUT-Token mit NAK quittiert.
  • Man beachte: Eines der reservierten Bits ist für einen Hub-Interrupt reserviert, falls diese Funktion enthalten ist.
  • Interrupt Maskenregister (IMR)
  • Ein ein Wort breites Lese/Schreibregister. IMR hat dasselbe Bitlayout wie das Interrupt-Statusregister. Die Bits werden mit den entsprechenden Bits in dem Interrupt-Statusregister UND-verknüpft, das Ergebnis wird ODER-verknüpft, um das USB INT-Signal zu erzeugen. Bei einem Reset wird dieses Register gelöscht.
  • Endpunkt Ereignisregister (EER)
  • Ein doppelwortbreites Lese/Schreibregister. EER wird verwendet, um anzuzeigen, auf welchem Endpunktkanal Ereignisse aufgetreten sind, die einen Dienst erfordern. Bei einem Reset wird dieses Register gelöscht. Das EER-Registerformat ist unten angegeben:
    Figure 00740001
    {Konzept für zukünftige Verbesserungen}:
    Figure 00740002
  • EE(0:15) Endpoint Event. Ein Bit pro Endpunkt. Das Bit 0 wird dem Endpunkt 0 zugewiesen. Das Bit 1 dem Endpunkt 1, etc. Gibt an, daß ein Ereignis bei einem Endpunkt aufgetreten ist, daß Softwareunterstützung benötigen könnte. Die Bits werden gelöscht, indem 1 in die zu löschenden Bits geschrieben wird.
  • Dieses Bit wird gesetzt, nachdem der Status von dem Endpunktcontroller in dem Speicher auf CW.BS geschrieben wurde.
  • Wenn das CW.IC-Bit des Steuerwortes für diesen Endpunkt gesetzt ist, tritt das Ereignis auf, wenn CW.BS in eine der Fertig- oder Fehlerbedingungen geschrieben wird oder disabled oder unterbrochen ist. {8, 9, 10, 11,12, 13, 14, 15}. Für isochrone Übertragungen wird der Ausgangs-Wartestatus auch als Beendigungsstatus angesehen {4, 5, 6}.
  • Wenn das CW.IE-Bit des Steuerwortes für diesen Endpunkt gesetzt ist, tritt das Ereignis auf, wenn CW.IS in einen der Fehlercodes geschrieben wird oder disabelt {10, 11,12, 13, 14, 15}. Dies umfaßt nicht den CRC-Fehler und Bitstuffingfehler-Codes außer für isochrone Übertragungen.
  • Wenn sowohl das CW.IC- als auch das CW.IE-Bit des Steuerwortes für diesen Endpunkt gesetzt sind, tritt das Ereignis auf, wenn CW.IS in einen der Fehlercodes geschrieben wird oder disabled oder unterbrochen ist. Dies umfaßt den CRC-Fehler und Bitstuffingfehler-Codes {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}.
  • Bemerkung für den Entwurf Diese Ereignisbits sollten erst nach dem Aktualisieren des Speicherwortes im Speicher gesetzt werden, nicht nach dem Schreiben des internen CW.BS-Wertes. Dies dient dazu, zu verhindern, daß der Software-Interrupt angezeigt wird, bevor die Software den richtigen Status lesen kann.
  • Endpunktmaskenregister (EMR)
  • Ein doppelwortbreites Lese/Schreibregister. Beim Reset wird dieses Register gelöscht. Das EMR-Registerformat ist unten angezeigt:
    Figure 00760001
    {Entwurf für zukünftige Verbesserungen}:
    Figure 00760002
  • EM(0:15) Endpoint Mask. Wird für jeden Endpunkt enabelt, um zu ermitteln, ob ein Interrupt erzeugt werden sollte, wenn das entsprechende Bit gesetzt ist. Das Bit 0 wird dem Endpunkt 0 zugeordnet, das Bit 1 dem Endpunkt 1, etc.
  • Blocknummernregister (FNR)
  • Ein ein Wort breites Nur-Lese-Register. FNR sieht die aktuelle Blocknummer vor, die in dem SOF-Packet empfangen wird. Bei USB-Reset wird dieses Register auf C000h gesetzt. Das FNR-Registerformat ist unten gezeigt:
    Figure 00760003
  • FN Frame Number (Blocknummer). Die aktuelle Blocknummer, wie sie in dem letzten SOF-Paket empfangen wurde. Der Wert wird inkrementiert, wenn ein SOF vergaßt wird. Wenn zwei aufeinanderfolgende Blöcke fehlen oder fehlerhaft sind, wird die Blocknummer mit der nächsten Blocknummer aus einem gültigen SOF-Paket geladen. Das niedrigstwertige Bit der Blocknummer wird dazu verwendet, zu ermitteln, welcher isochrone Puffer als nächstes verwendet werden sollte.
  • UL Unlocked Flag. Das unlocked Flag (UL) wird gesetzt, um anzuzeigen, daß wenigstens zwei Blöcke ohne eine erwartete Blocknummer empfangen wurden und daß diese Blocknummer aus dem nächsten SOF-Paket in FN geladen wird. Bei einem Reset wird dieses Flag auf 1 gesetzt.
  • MF Missed SOF-Flag. Das verpaßte SOF-Flag (MF) wird gesetzt und zeigt eine Diskontinuität der Blocknummer an. Dieses Flag wird gesetzt, wenn die Blocknummer in einem gültigen empfangen SOF nicht mit dem erwarteten nächsten Wert übereinstimmt. Das Flag wird auch gesetzt, wenn innerhalb von 12060 Bitzeiten (FLMAX mit Toleranz) nach einer vorhergehenden Änderung von FNR.FN kein SOF empfangen wird. Bei einem Reset wird dieses Flag auf 1 gesetzt.
  • Blocknummer-Operation:
  • Bei Empfang eines gültigen SOF-Pakets:
    Figure 00770001
  • Ohne Empfang eines gültigen SOF-Pakets innerhalb von 12060 Bitzeiten (oder 796, wenn das Kurzblockbit DCR.SFM gesetzt ist) seit dem vorhergehenden Laden von FNR.FN
    Figure 00770002
  • Referenzzählregister (RCR)
  • Ein ein-Wort-breites Nur-Leseregister. Wird zum Überwachen eines externen Bezugstaktes verwendet. Bei Reset wird dieses Register gelöscht. Das RCR-Registerformat ist unten gezeigt:
    Figure 00780001
  • RC Reference Count (Bezugszählwert). Dies ist ein Zählwert der Anzahl der steigenden Flanken, die bei dem Bezugseingangssignal des Taktes des UNIM erfaßt werden (siehe TBD). Wenn es zusammen mit der Blocknummer gelesen wird, kann es einen präzise Erfassung der relativen Frequenz des externen Bezugstaktes im Verhältnis zum USB-Takt liefern. Die Differenz kann dem USB-Host über Feedback-Pakete angezeigt werden, um das SOF-Paket zu verzögern oder zu beschleunigen, damit der USB-Takt sich mit dem externen Takt synchronisiert. Um für die Software einen gemeinsamen Bezugspunkt aufrechtzuerhalten, wird der Referenzzählwert in dieses Register eingelesen, wenn FNR.FN mit einem neuen Wert geladen oder inkrementiert wird.
  • Zeitintervallregister (TIR)
  • Ein ein Wort breites Lese/Schreibregister. Enthält eine Anforderung eines Interrupts, wenn der Blockzähler den programmierten Offset das nächste Mal erreicht. Bei Reset wird dieses Register gelöscht. Das TIR-Registerformat ist unten gezeigt:
    Figure 00780002
  • TI Timer Interrupt Interval. Bewirkt, daß ISR.FCI das nächste Mal gesetzt wird, wenn der Blockzähler FNR.FN diesen Wert erreicht.
  • USB-Indexregister (UIR)
  • Ein ein Wort breites Lese/Schreibregister. Indexiert die Register, die in dem USB-Bereich liegen und auf die nicht häufig zugegriffen werden muß. Das UIR-Registerformat ist unten gezeigt:
    Figure 00790001
  • SEL Selector. Wählt den Block der Register, auf die zugegriffen werden soll.
    • 0: Endpunktkanal-Zustandsregister
    • 1: Kanalabbildungsregister
    • 2: Reserviert für USB-Hubregister
    • 3: Diagnoseregister
    • andere: reserviert
  • Index Index. Sieht den Blockindex für den ausgewählten Registerblock gemäß nachstehender Beschreibung vor.
  • USB-Datenregister (LTDR)
  • Ein ein Wort breites Nur-Lese/Schreibregister. Lesezugriffe sind auf alle Stellen erlaubt. Das Datenregister wird mit den Daten geladen, die für das von dem UIR zu jeder Zeit ausgewählte Register gelesen werden. Das Schreiben in dieses Register ist in dem USB-Hubregister nur erlaubt, wenn UIR.SIL 2 ist. Ein Statusbit wird im Bit 15 definiert, um anzuzeigen, daß eine Schreiboperation erfolgreich war. Dies ist nur notwendig, wenn die Hubfunktion enthalten ist.
  • Endpunktkanal-Zustandsindex
  • Indexiert den Endpunktkanal-Zustandsvektor gemäß des unten gezeigten Indexierschemas:
    Figure 00790002
  • EPN Endpoint Pipe Number (Endpunktkanalnummer). Gibt die Endpunktkanalnummer an, für die der Endpunktkanal-Zustandsvektor in dem USB-Datenregister lesen kann.
  • Endpunktkanalzustand
  • Dies ist der 8 Bit-Endpunktkanalzustand, der für jeden Endpunktkanal gespeichert ist, und der für den momentan indexierten Endpunktkanal zurückgegeben wird. Wenn ein ungültiger Endpunktkanal indexiert wird, wird 0 zurückgegeben.
  • Figure 00800001
  • EPS Endpoint Pipe State (Endpunktkanalzustand). Der 4-Bit-Endpunktkanalzustand:
    Figure 00800002
    Figure 00810001
  • Man beachte: Zu einer gegebenen Zeit ist nur ein Endpunktkanal aktiv.
  • CTL Control. Dies wird bestätigt, wenn der Endpunktkanal Steuerfolgen annehmen kann, welche den SETUP-Token betreffen. Dieses Bit wird gesetzt, nachdem für diesen Endpunktkanal CMD.Setup-Bereit vorlag, und bleibt gesetzt, bis der Endpunkt disabled wird.
  • CWP Control Word Pointer (Steuerwortzeiger). Wenn das Steuerwortbit 0 ist, wird auf das Steuerwort 0 dieses Endpunkts in dem Endpunktfeld als nächstes zugegriffen. Wenn das Steuerwortbit 1 ist, wird auf das Steuerwort 1 für diesen Endpunkt als nächstes zugegriffen. Es wird auf 0 gesetzt, wenn der Endpunkt enabelt wird.
  • Kanalabbildungsindex
  • Indexiert die Kanalabbildung, um die Abbildung auf den Endpunktkanal mit den folgenden Eingangsparametern zu bestimmen:
    Figure 00810002
  • FAN Function Address Number (Funktionsadreßnummer). Gibt bis zu einer von vier möglichen Funktionsadressen an. Bei allen Ausführungsformen ist die Funktionsadresse 0 immer vorhanden.
  • TT Token Type. Gibt den Tokentyp an:
    00 OUT
    10 IN
    11 SETUP
    01 SOF
  • EN Endpoint Number (Endpunktnummer). Gibt die Endpunktnummer an, die auf dem USB empfangen wird – 0 bis 15 einschließlich.
  • Kanalabbildungsdaten
  • Ein ein Byte breites Register. Gibt dem Endpunktkanal den aktuellen Wert des USB-Indexregisters zurück, das sich hierauf bezieht. Das Lesen und Schreiben dieses Registers ist nur gültig wenn DCR.ECE gleich 0 ist. In dieses Register kann nicht bei allen Ausführungsformen geschrieben werden. Bestimmte Werte der Endpunktnummer sind reserviert.
  • 'h FF zeigt an, daß der Wert von PMIR nicht auf einen Endpunktkanal abgebildet wird. 'h FE zeigt an, daß der Wert von PMIR auf den speziellen SOF-Kanal abgebildet wird, der das FNR-Register enthält.
    Figure 00820001
  • EPN Endpoint Pipe Number. Gibt die Endpunktkanalnummer an, auf welche die Funktionsadresse, der Tokentyp und die Endpunktnummer abgebildet werden.
  • Hub-Register
  • Indexiert die USB-Hubregister gemäß dem folgenden Format:
    Figure 00820002
  • HREG Hub Register. Gibt die Hub-Register an, auf die über das USB-Datenregister zugegriffen werden soll. Für die tatsächlichen Registerdefinitionen dieser Register
    Figure 00830001
  • Hub Data. Ein ein Byte breites Register. Erlaubt das Lesen und Schreiben der einzelnen Hubregister. Siehe das LM1050-Datenblatt für Einzelheiten dieser Register.
  • Diagnose-Register
  • Indexiert die USB-Diagnoseregister gemäß dem folgenden Format:
    Figure 00840001
  • DREG Diagnostic Register. Gibt die Diagnose-Register an, auf die durch das USB-Datenregister zugegriffen werden soll.
  • Figure 00840002
  • Figure 00850001
  • Endpunktfeld-Basisadreßregister (EABAR)
  • Ein Doppelwort-breites Lese/Schreibregister. Basisadresse im Speicher des Blocks, der das Endpunktfeld enthält. Es muß zu einer 128-Bytegrenze ausgerichtet werden, d.h. die unteren sieben Bits werden auf 0 gesetzt (dies ist eine 25 Bit-Adresse). Bei Reset wird dieses Register gelöscht. Das EABAR-Registerformat ist unten gezeigt:
    Figure 00850002
  • Merke: Diese Basisadresse kann modifiziert werden, um schnell zwischen verschiedenen Konfigurationen umzuschalten. Nach dem Aufwecken aus einem Aussetzmodus während der Konfiguration kann zum Beispiel eine Konfiguration der Endpunkte wünschenswert sein, und nach der Konfiguration mehrerer verschiedener Konfigurationen kann es wünschenswert sein, verschiedene Kombinationen aus Schnittstellen und Endpunkten zu verwenden. Beim Umschalten der Konfigurationen sollten alle Endpunkte disabelt oder angehalten werden, und der Kontext aller Endpunkte wird dann durch einen Schreibvorgang in dieses Register verändert.
  • Pufferseite A-Register (BPA)
  • Ein Doppelwort-breites Lese/Schreibregister. Die oberen Bits der Pufferseite A. Ein 21 Bit-Register, das eine 2K-Byte-Seite definiert, in der Puffer für die Datenübertragung definiert sind. Diese Pufferseite wird von dem Pufferseitenauswahl-Bitwert in dem Steuerwort bestimmt, das in den Speicher des Endpunktfeldes geschrieben ist. Bei einem Reset wird dieses Register gelöscht. Das BPA-Registerformat ist unten gezeigt:
    Figure 00860001
  • Pufferseite B-Register (BPB)
  • Ein Doppelwort-breites Lese/Schreibregister. Die oberen Bits der Pufferseite B. Ein 21-Bit-Register, das eine 2K-Byte-Seite definiert, in der Puffer für die Datenübertragung definiert sind. Diese Pufferseite wird von dem Pufferseitenauswahl-Bitwert von dem Steuerwort bestimmt, das in den Speicher in dem Endpunktfeld geschrieben ist. Bei einem Reset wird dieses Register gelöscht. Das BPB-Registerformat ist unten gezeigt:
    Figure 00860002
  • 2.1.9 Verwendungstips
  • Dieser Abschnitt sieht Anmerkungen vor, die zum Entwickeln von Treibern nützlich sind, welche das UNIM verwenden. Dies umfaßt die Initialisierung, Setup/Aufzählung und Datenübertragung für die Steuerung, Bulk-Endpunkte, Interrupt-Endpunkte und isochrone Endpunkte.
  • Initialisierung
  • Nach einem Modul-Reset erscheint das Modul als ein nichtangeschlossenes Gerät auf dem USB, weil beide USB-Datenleitungen auf einen niedrigen Pegel gezogen sind. Zu dieser Zeit sind alle Endpunktkanäle disabelt, und der Funktionszustand ist zurückgesetzt.
  • Um ein Gerät als an einen stromaufwärtigen USB-Port angeschlossen zu erfassen, muß DCR.NAT gesetzt sein. Dadurch zieht das Gerät die USB-Datenleitung nicht mehr auf den niedrigen Pegel.
  • Wenn das Gerät einmal angeschlossen ist, muß der Endpunktkanalbetrieb initialisiert werden. Zunächst wird ermittelt, wieviele Endpunkte für eine Anwendung notwendig sind, sowie die Arten der Endpunkte und die Speichermenge, die für den Betrieb zugewiesen werden muß. Gestützt hierauf werden EABAR, BPA und BPB initialisert. Das EABAR ist der Basiszeiger für das Feld, welche die Steuerworte enthält. Für jeden Endpunkt werden zwei Doppelworte zugewiesen. Dieser Zeiger muß in eine 128-Byte-Grenze fallen. Die BPA und BPB werden, wenn notwendig, zugewiesen, um den Basiszeiger für alle Datenübertragungen vorzusehen.
  • Da zu dieser Zeit noch nicht ganz feststehen kann, welche Endpunkt enabelt werden sollen und wieviel Speicher diesen zugewiesen werden soll, müssen nur EABAR und BPA geladen werden, damit die erste Steuerübertragung verarbeitet werden kann.
  • Ein SRDY-Puffer wird in den CW0 des Endpunktkanals 0 gelegt und ein SRDY-Befehl wird ausgegeben, ECR.(SRDY,0).
  • Zu dieser Zeit werden die anderen Bits in dem DCR-Register modifiziert, einschließlich ETE, EPMS nach Bedarf, und ECE und DEF0 werden gesetzt.
  • Danach wird das Funktionszustandsregister in den Betriebszustand gesetzt (FSR.Operational).
  • Der empfangene Setup wird in den SRDY-Puffer geladen. Nachdem der Setup empfangen wurde, wird er analysiert, um zu ermitteln, wie reagiert werden muß. Wenn es sich um ein SET-ADDRESS-Setup-Paket handelt, wird die Funktionsadresse (FAR) mit der empfangenen Adresse geladen und das Enable-Bit wird gesetzt (FAR.AE). Das DEF-Bit wird mittels Hardware beim nächsten ACK zurückgesetzt, welches abhängig von einem IN-Token empfangen wird, oder bei dem nächsten Setup, der an diesem Endpunkt empfangen wird, falls das ACK verloren wurde.
  • Interrupt Endpunkt Operation
  • Interrupt-Endpunkte sehen neue Interruptinformation für den Host vor, falls vorhanden. Wenn keine Interruptinformation anhängig ist, wird NAK zurückgegeben. Zum Initialisieren eines Interrupt-Endpunktkanals wird ein Eingang-Enable-Befehl an den richtigen Eingangskanal gegeben (ECR.(IENB, EPN)). Dies bewirkt, daß der Endpunktkanal in seinen Eingangs-Wartezustand geht, I_IDL. Abhängig von dem Empfang eines IN-Tokens bei einem Endpunkt, der auf diesen Endpunktkanal abgebildet ist, wird NAK als Handshake zurückgegeben. Wenn Interruptdaten vorhanden sind, werden sie in einen Puffer geschrieben, das nächste Steuerwort an dem Endpunkt wird in I_RDY geschrieben, und ein Befehl wird ausgegeben (ECR.(IRDY, EPN)), damit der Endpunktkanal in den IRDY-Zustand geht. Abhängig vom Empfang des nächsten IN-Tokens wird das Steuerwort bei EABAR + EPN + CWP gelesen, und dann werden die Daten übertragen. Wenn dem Toggle-Protokoll gefolgt wird, muß das Toggle-Enable-Bit des Steuerworts in dem Steuerwort gesetzt werden. Wenn dieser Endpunkt für ein Ratensteuerungs-Feedback verwendet wird, muß das Toggle-Enable-Bit nicht gesetzt werden.
  • Am Ende der Übertragung, wenn ACK vom Host empfangen wird, wird ein ICMP-Status in den Puffer geschrieben. Dies bestätigt dann, daß die Übertragung beendet ist. Wenn kein ACK empfangen wurde und Toggle enabelt ist, wird ein Zwischenstatus ACK-verpaßt (IMAK) geschrieben. Nach dem Schreiben des Status wir der andere Endpunktpuffer gelesen. Falls der Status eine Beendigung anzeigt, beginnt der Eingang-Warte-Zustand. Wenn in der Zwischenzeit ein weiteres Ereignis aufgetreten ist und ein weitere IRDY-Puffer auf das andere Steuerwort gelegt wurde, wird es zu dieser Zeit gelesen, und der Endpunkt geht wieder in den I_RDY-Zustand.
  • Bulk-Endpunkt Operation
  • Bulk-Endpunkte arbeiten ähnlich wie die Interrupt-Endpunkte, abgesehen davon, daß üblicherweise größere Datenübertragungen betroffen sind, und daß sie in der IN- und OUT-Richtung verlaufen. Bulk-Endpunkte folgen immer dem Toggle-Protokoll, so daß in allen Steuerworten TE gesetzt ist.
  • Ein besonderer Bulk-Endpunkt wird entweder in der Eingangs- oder Ausgangsrichtung verwendet. Wenn ein Endpunkt das erste Mal initialisiert wird, wird ein Eingangs- oder Aus gangs-Enable-Befehl an die richtige Endpunktkanalnummer geschickt (ECR.(I/OENB, EPN)).
  • Bei Eingangsendpunkten werden Daten, wenn sie vorhanden sind in einen Puffer geschrieben, und ein Steuerwort wird mit einem IRDY-Zustand beschrieben, und TE wird gesetzt. Dann wird ein IRDY-Befehl ausgeführt. Maximal können zwei Datenpuffer zu einer gegebenen Zeit auf einem Endpunktkanal anhängig sein. Dies ermöglicht ein Doppelpuffer-Verfahren, falls nötig, um das Senden von NAKs während großer Datenübertragungen zu vermeiden. Die Software-Synchronisierung erfolgt durch Untersuchen des Pufferzustandes. Nur die vollständigen Pufferzustände können überschrieben werden.
  • Bei Ausgangsendpunkten muß ein Puffer vorbereitet werden, in den die Daten übertragen werden. Wenn dieser Puffer vorhanden ist, wird ein Steuerwort mit einem Zeiger darauf in das richtige Steuerwort geschrieben. Das Toggle-Enable-Bit sollte hier ebenfalls gesetzt werden. Ein ORDY-Befehl wird an den Endpunktkanal übergeben. Nachdem die Daten für diesen Puffer als Teil des OUT-Tokens empfangen wurden, wird das Steuerwort im Speicher aktualisiert.
  • Wenn die Größe des Datenpakets nicht bekannt ist, sollte das Pufferrundungsbit des Steuerwortes gesetzt werden. Dies erlaubt, Pakete, die kleiner als die Puffergröße sind, zu empfangen, ohne daß ein Fehlerstatus geschrieben wird. Wenn das Pufferrundungsbit nicht gesetzt ist, werden empfangene Pakete, die den zugewiesenen Puffer nicht genau füllen, mit einem Datenfehler-Statusfehler geschrieben. In jedem Fall wird der Statusfehler geschrieben, wenn mehr Daten als erwartet für diesen Endpunkt empfangen werden.
  • Wenn das Auftreten eines Fehlers während des Empfangs dieser Daten erfaßt wird, wird ein Pufferzwischenzustand in den Speicher zurückgeschrieben, und beim nächsten OUT-Token wird der Puffer erneut verwendet. Dies bedeutet, daß die Software sich nur mit dem Vorsehen der Puffer befassen muß, welche die Daten empfangen sollen, und nicht mit den Verstrickungen der Protokolle für erneute Versuche.
  • Isochrone Endpunktoperation
  • Isochrone Endpunkte folgen demselben Schema wie Bulk-Endpunkte, sie folgen jedoch keinem Toggle-Protokoll. Vielmehr werden sie zu dem niedrigstwertigen Bit des Blocknummernregisters synchronisiert.
  • Bei isochronen Eingangsendpunkten werden Daten in eine Warteschlange gelegt, wobei dieselben IRDY-Puffer verwendet werden. Wenn ein IN-Token bei einem isochronen Endpunkt empfangen wird, wird das Datenpaket gesendet, wenn das niedrigstwertige Bit des Blocknummernregisters mit dem Steuerwortzeiger übereinstimmt. Sonst werden keine Daten gesendet. Dies erlaubt die Synchronisierung der Datenübertragung zu einer bestimmten Blocknummer. Zum Auslösen der Übertragung bei einer bestimmten Blocknummer kann das Blocknummernregister gelesen werden. Ein Interrupt kann angefordert werden (ISR.FCI), indem TIR auf den angeforderten Wert des FNR gesetzt wird, zu dem die Übereinstimmung vorliegen muß. Ein Abgleich erfolgt nur mit den unteren acht Bit, so daß dieses Ereignis bis zu 256 ms in eine Warteschlange gelegt werden kann, bevor es benötigt wird. Wenn dieser Interrupt verarbeitet wird, kann der passende Puffer auf dem Endpunktkanal in eine Warteschlange gelegt werden.
  • Bei isochronen Ausgangs-Endpunkten bestimmt das Toggle-Enable-Bit, wie das LSB des Blocknummernregisters verwendet wird. Wenn TE nicht gesetzt ist, werden alle Daten in den Speicher geschrieben, wenn jedoch FNR.LSB nicht gleich CWP ist, wird ein Synchronisierungsfehlerstatus (SYNE) als Pufferzustand geschrieben. Wenn TE gesetzt ist, werden Daten nur gespeichert, wenn FNR.LSB gleich CWP ist. Wenn ein isochroner Ausgangsstrom mit der Blocknummer synchronisiert wird, kann der erste Puffer auf TE gesetzt werden, so daß das Schreiben nur beginnt, wenn eine Übereinstimmung der Blocknummer vorliegt. Dann können alle nachfolgenden Blöcke erfassen, ob es einen Synchronisierungsfehler gibt.
  • Man beachte, daß das Blocknummernregister bis zu zwei Blöcke weiterzählt, selbst wenn der SOF vorübergehend verlorengeht. Sollte der SOF für mehr als zwei Blöcke verlorengehen, wird Unlocked angezeigt (ISR.UL), wobei zu dieser Zeit alle nachfolgenden isochronen Übertragungen mit Vorsicht behandelt oder beendet werden sollen, bis der Blocknummernzähler wieder synchron läuft.
  • Steuerendpunkt-Operation
  • In einem üblichen System ist der Endpunkt 0 immer ein Steuerendpunkt. Andere Endpunkte dürfen auch Steuerendpunkte werden. Diese Funktion wird unterstützt.
  • Bei einem Steuerendpunkt sollten das Steuerwort 1 und das Steuerwort 0 immer zusammengeschrieben werden. Die Statusphase und das SRDY für die nächste Steuerübertragung sollten zum Beispiel immer zusammengeschrieben werden. Erst nach der Erfassung eines OCMP in CW0 aufgrund eines Empfangs eines neuen Setup sollten das Steuerwort und/oder CW0 aktualisiert werden. Wenn eine ungerade Anzahl Datenpakete während der Datenphase einer Steuerwort-Lese- oder Schreiboperation gesendet werden, bevor die Statusphase gesendet wurde, kann es notwendig sein, den Steuerwortzeiger einzustellen, weil die Statusphase in das Steuerwort 1 gelegt werden muß, und der nächste SRDY-Puffer muß in das Steuerwort 0 gelegt werden. Um dies zu erreichen, ist es möglich, entweder einen SKIP-Puffer einzufügen oder einen CWP-Toggle-Befehl auszuführen, bevor der ORDY/IRDY-Befehl für den Statusphasen-Puffer ausgeführt wird.
  • Sollte ein SETUP-Token bei einem Steuerendpunkt erfaßt werden, für den momentan kein SRDY-Puffer zur Verfügung steht, wird das Möglichste getan, den Setup zu empfangen und in dem Datenpfad zu speichern. Wenn ein gültiger Setup empfangen wurde, wird das ISR.HST-Ereignis bestätigt. Abhängig von dem ISR.HST-Interrupt sollten ein SRDY-Puffer in das Steuerwort 0 und ein SRDY-Befehl geschrieben werden. Dies bewirkt, daß der anhängige Setup in den Speicher geschrieben wird. Der SRDY-Befehl bewirkt, das der Endpunkt als ein Steuerendpunkt behandelt wird, und er bleibt gesetzt, bis ein Eingabe-Enable oder Ausgabe-Enable-Befehl ausgeführt wird. Der SRDY-Puffer sollte so schnell wie möglich vorgesehen werden, weil dann, wenn das HST-Bit gesetzt ist, es den Datenpfad für mögliche zusätzliche Datenübertragungen blockiert. In der Zwischenzeit werden alle Token mit NAK quittiert, falls anwendbar. Die Implikationen dieses ISO-Verkehrs können beträchtlich sein und müssen beachtet werden, geradeso wie der Fall eines Dienstverlustes.
  • Nach dem Empfang eines Setups wird er von der Firmware überprüft, um die richtige Antwort zu bestimmen. An diesem Punkt setzt die Firmware zusätzliche Eingangs- oder Ausgangspuffer nach Bedarf ein. Wenn der Setup ein von der Funktion nicht unterstützter Befehl ist, wird ein neuer SRDY-Puffer in das Steuerwort 0 gelegt, und der SRDY-Befehl wird ausgegeben. Dies bewirkt, daß alle Token an diesem Endpunkt eine STALL-Quittung zurückge ben, bis der nächste Setup empfangen wird. In der Zwischenzeit, während die Firmware den Setup analysiert, werden als Antwort auf Token NAKs gesendet.
  • 2.1.10 Bemerkungen für die Umsetzung
  • Registerschnittstelle
  • Man beachte, daß alle Register in dem Kernbus-Taktbereich realisiert sind. Register, auf die mit dem USB-Index zugegriffen wird, und Datenregister sind in dem USB-Taktbereich realisiert. Viele der Register erfordern asynchrone Handshakes, um die Taktbereiche zu überschreiten.
  • Während ein Endpunktkanal in einem seiner Bereitzustände ist, muß abhängig von dem Empfang eines IN-, OUT- und SETUP-Tokens eine Antwort innerhalb von 6,5 USB-Bitzeiten gegeben werden. Für einen IN-Token besteht diese Antwort aus einem STALL- oder NAK-Handshakepaket oder einem Datenpaket. Für OUT- und SETUP-Token muß sich der Endpunktkanal darauf vorbereiten, das Datenpaket zu empfangen. In allen Fällen wird das entsprechende Steuerwort gelesen und dazu verwendet, zu ermitteln, wie die Daten zu übertragen sind.
  • Die Operation, welche den Datenpfad am stärksten prüft, erfolgt bei Empfang eines IN-Tokens, während der ausgewählte Endpunkt in dem Eingabe-Bereit-Zustand ist. In diesem Fall muß das Steuerwort bereit sein, und Daten müssen bis zu der Zeit bei der MAC-Schnittstelle zur Verfügung stehen, bei der die PID fertig übertragen ist. Der Entwurf sollte für diesen Fall optimiert werden.
  • Kapitel 3
  • Gerätespezifikationen
  • Tabelle 3-1 Ausgangssignale
    Figure 00930001
  • Tabelle 3-1 Eingangssignale
    Figure 00930002
  • USB
  • Figure 00930003
    Figur 3-1 USB-Aussetz-Zeitablauf
  • Figure 00940001
    Figur 3-2 Ablauf der USB-Sendesignale
  • Figure 00940002
    Figur 3-3 USB OE-Zeitablauf
  • Figure 00940003
    Figur 3-4 Verzögerung der USB-Empfangssignale
  • Beachte: USBXCU0 und USBXCU1, Wechselstrom und Gleichstrom erfüllen die Anforderung, die in Kapitel 7 der Universal Serial Bus Specification Version 1.0 spezifiziert sind.
  • ANHANG A REGISTERLISTE
  • Im folgenden wird eine Liste für die schnelle Bezugnahme auf die UNIM-Register angegeben. Der erste Abschnitt listet Register des Moduls auf. Der zweite Abschnitt zeigt das Layout jedes Registers in derselben Reihenfolge.
  • A.1 ZUSAMMENFASSENDE REGISTERLISTE USM-Knoten (UNIM) Register
    Figure 00960001
  • A.2 REGISTER LAYOUT
    Figure 00970001

Claims (18)

  1. Schnittstellenmodul (120) für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion, das Schnittstellenmodul (120) aufweisend: – eine Endpunktkanal-Anordnung (522) zum Halten eines Steuerworts für jeden einer Vielzahl von Endpunktkanälen, wobei jedes Steuerwort Informationen über den Endpunktkanal-Zustand und eine Adresse zum Zeigen auf einen Speicherpuffer (526) umfaßt; und – ein Endpunkt-Befehlsregister (510) zum Empfangen von Befehlen von einer USB-Funktion, wobei das Endpunkt-Befehlsregister (510) einen ersten und einen zweiten Teil aufweist, die Daten enthalten, die eine Endpunkt-Nummer bzw. einen Befehl darstellen, und wobei der Empfang eines Befehls das Schnittstellenmodul veranlaßt, die Information über den Endpunktkanal-Zustand eines mittels der Endpunkt-Nummer angezeigten Endpunktkanals dem Befehl entsprechend zu verändern.
  2. Schnittstellenmodul nach Anspruch 1, das Handshake-Pakete der Information über den Endpunktkanal-Zustand entsprechend bereitstellt und annimmt.
  3. Schnittstellenmodul nach Anspruch 2, wobei die Endpunktkanal-Anordnung (522) so konfiguriert ist, daß erste und zweite Steuerwörter für jeden der Vielzahl der Endpunktkanäle gehalten werden können.
  4. Schnittstellenmodul nach Anspruch 3, wobei das Schnittstellenmodul (120) eine Schnittstelle zur Verbindung mit einer Vielzahl von Speicherpuffern (526) umfaßt, wobei das erste Steuerwort erste Informationen über den Endpunktkanal-Zustand und eine erste Adresse zum Zeigen auf einen ersten Speicherpuffer in der Vielzahl von Speicherpuffern (526) umfaßt, und wobei weiterhin das zweite Steuerwort zweite Informationen über den Endpunktkanal-Zustand und eine Adresse zum Zeigen auf einen zweiten Speicherpuffer in der Vielzahl von Speicherpuffern (526) umfaßt.
  5. Schnittstellenmodul nach Anspruch 4, weiterhin aufweisend ein Basisadressregister (512) der Endpunktkanal-Anordnung (522), welches Daten enthält, die eine Basisadresse der Endpunktkanal-Anordnung darstellen, wobei auf die Steuerwörter eines Endpunktkanals mittels einer Endpunktkanal-Nummer und der Basisadresse zugegriffen werden kann.
  6. Schnittstellenmodul nach Anspruch 5, das weiterhin ein Steuerwort-Zeigerregister mit Daten umfaßt, welche einen ersten und einen zweiten Wert aufweisen, wobei der erste Wert auf das erste Steuerwort und der zweite Wert auf das zweite Steuerwert zeigen, und wobei weiterhin das Steuerwort-Zeigerregister den ersten Wert aufweist, wenn eine Paketidentifizierung Null ist, und wobei das Steuerwort-Zeigerregister den zweiten Wert aufweist, wenn eine Paketidentifizierung Eins ist.
  7. Schnittstellenmodul nach Anspruch 1, wobei der Empfang eines Input-Enable-Befehls einen Endpunktkanal veranlaßt, aus dem Stall- oder Disable-Zustand in einen Input-Idle-Zustand zu gehen.
  8. Schnittstellenmodul nach Anspruch 7, wobei der Empfang eines Input- Ready-Befehls einen Endpunktkanal veranlaßt, einen Ready-Zustand einzunehmen.
  9. Schnittstellenmodul nach Anspruch 8, wobei der Empfang eines Input-Isochronous-Ready-Befehls einen Endpunktkanal veranlaßt, in einen Input-Isochronous-Ready-Zustand zu gehen.
  10. Schnittstellenmodul nach Anspruch 1, wobei der Empfang eines Output-Enable-Befehls einen Endpunktkanal veranlaßt, aus einem Stall- oder Disable-Zustand in einen Output-Idle-Zustand zu gehen.
  11. Schnittstellenmodul nach Anspruch 10, wobei der Empfang eines Output-Ready-Befehls einen Endpunktkanal veranlaßt, in einen Output-Ready-Zustand zu gehen.
  12. Schnittstellenmodul nach Anspruch 11, wobei der Empfang eines Output-Isochronous-Enable-Befehls einen Endpunktkanal veranlaßt, in einen Output-Isochronous-Idle-Zustand zu gehen.
  13. Schnittstellenmodul nach Anspruch 12, wobei der Empfang eines Output-Isochronous-Ready-Befehls einen Endpunktkanal veranlaßt, in einen Output-Isochronous-Ready-Zustand zu gehen.
  14. Schnittstellenmodul nach Anspruch 1, wobei der Empfang eines Setup-Ready-Befehls den Endpunktkanal veranlaßt, aus einen Stall- oder Disable-Zustand in einen Setup-Ready-Zustand zu gehen.
  15. Schnittstellenmodul nach Anspruch 1, wobei der Empfang eines Disable-Befehls einen Endpunktkanal veranlaßt, in einen Disable-Zustand zu gehen.
  16. Schnittstellenmodul nach Anspruch 1, wobei der Empfang eines Stall-Befehls einen Endpunktkanal veranlaßt, in einen Stall-Zustand zu gehen.
  17. Vorrichtung zum Anschluß an einen Universellen Seriellen Bus (USB), die Vorrichtung aufweisend: – einen Puffer (526) mit einer IN-Bulk-Konfiguration, einer Out-Bulk-Konfiguration, einer IN-Isochron-Konfiguration, einer OUT-Isochron-Konfiguration, einer Interrupt-Konfiguration und einer Steuerkonfiguration, wobei die Konfigurationen dynamische Änderungen erlauben; – ein Schnittstellenmodul (120) mit einem Sender-Empfänger (214) zum Anschluß an einen USB und eine Programmierschnittstelle, wobei das Schnittstellenmodul (120) funktionell mit dem Puffer (526) verbunden ist; und – eine Funktion, welche funktionell mit der Programmierschnittstelle und dem Puffer (526) verbunden ist, wobei die Funktion das Schnittstellenmodul (120) zum Senden und Empfangen der Daten des Puffers (526) steuert, wobei die Funktion empfangene Daten aus dem Puffer (526) bewegt, wobei die Funktion durch das Schnittstellenmodul (120) zu übertragende Daten in den Puffer bewegt und wobei weiterhin das Schnittstellenmodul (120) auf Paketwiederholungen antwortet, Handshakes akzeptiert und bereitstellt, und eine Antwort auf Fehlerbedingungen liefert.
  18. nach Anspruch 17, wobei der Puffer einen ersten und einen zweiten Teil zur Speicherung von Datenpaketen umfaßt, und wobei der zweite Teil nach einer ersten Setup-Transaktion zugeordnet wird.
DE19900345A 1998-01-07 1999-01-07 Schnittstellenmodul für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion und Vorrichtung zum Anschluß an einen universellen seriellen Bus Expired - Fee Related DE19900345B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/004,005 US6157975A (en) 1998-01-07 1998-01-07 Apparatus and method for providing an interface to a compound Universal Serial Bus controller
US400598 1998-01-07
US09/004,005 1998-01-07

Publications (3)

Publication Number Publication Date
DE19900345A9 DE19900345A9 (de)
DE19900345A1 DE19900345A1 (de) 1999-07-08
DE19900345B4 true DE19900345B4 (de) 2005-06-23

Family

ID=21708668

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19900345A Expired - Fee Related DE19900345B4 (de) 1998-01-07 1999-01-07 Schnittstellenmodul für einen Universellen Seriellen Bus (USB) zur Verbindung mit einem USB über eine Programmierschnittstelle für eine USB-Funktion und Vorrichtung zum Anschluß an einen universellen seriellen Bus

Country Status (3)

Country Link
US (1) US6157975A (de)
KR (1) KR100290944B1 (de)
DE (1) DE19900345B4 (de)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19900245B4 (de) 1998-01-07 2005-09-15 National Semiconductor Corp.(N.D.Ges.D.Staates Delaware), Santa Clara Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
EP1185920A4 (de) * 1998-11-09 2005-07-06 Broadcom Corp Gemischtes signal, einzelchip, integrierte system-elektronics für magnetische festplatten
US6233628B1 (en) * 1999-01-08 2001-05-15 Oak Technology, Inc. System and method for transferring data using separate pipes for command and data
US6343260B1 (en) * 1999-01-19 2002-01-29 Sun Microsystems, Inc. Universal serial bus test system
US6389560B1 (en) * 1999-01-19 2002-05-14 Sun Microsystems, Inc. Universal serial bus interpreter
US6360278B1 (en) * 1999-05-27 2002-03-19 3Com Corporation FIFO queued entry point circuit for a network interface card
US6480948B1 (en) * 1999-06-24 2002-11-12 Cirrus Logic, Inc. Configurable system memory map
US6523081B1 (en) * 1999-11-22 2003-02-18 Texas Instruments Incorporated Architecture using dedicated endpoints and protocol for creating a multi-application interface and improving bandwidth over universal serial bus
US6804243B1 (en) * 1999-11-22 2004-10-12 Texas Instruments Incorporated Hardware acceleration for segmentation of message packets in a universal serial bus peripheral device
US6671765B1 (en) * 1999-11-22 2003-12-30 Texas Instruments Incorporated Architecture enabling code overlay using a dedicated endpoint
US6959257B1 (en) * 2000-09-11 2005-10-25 Cypress Semiconductor Corp. Apparatus and method to test high speed devices with a low speed tester
US6718412B2 (en) * 2000-12-14 2004-04-06 Agilent Technologies, Inc. Apparatus and method for universal serial bus communications
KR100422586B1 (ko) * 2001-04-30 2004-03-12 주식회사 하이닉스반도체 유에스비 마이크로 컨트롤러 유닛 디버깅 방법
JP3680762B2 (ja) * 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3680763B2 (ja) 2001-05-14 2005-08-10 セイコーエプソン株式会社 データ転送制御装置及び電子機器
SG107128A1 (en) * 2001-07-13 2004-11-29 Prolific Technology Inc Usb compound device and the method for implementation thereof
TW569013B (en) * 2002-02-21 2004-01-01 Via Tech Inc Chip test method for testing host controller of universal serial bus
AU2003250235A1 (en) * 2002-06-03 2003-12-19 Thomson Licensing S.A. Dsl modem and method for establishing a data transfer mode therefore
US7478235B2 (en) * 2002-06-28 2009-01-13 Microsoft Corporation Methods and systems for protecting data in USB systems
US6757776B1 (en) * 2002-07-17 2004-06-29 Cypress Semiconductor Corp. Control transaction handling in a device controller
US7114105B2 (en) * 2002-12-05 2006-09-26 Qualcomm, Inc. System and method for software download to wireless communication device
US6783078B1 (en) 2003-05-09 2004-08-31 Stmicroelectronics, Inc. Universal serial bus (USB) smart card having read back testing features and related system, integrated circuit, and methods
US7080789B2 (en) * 2003-05-09 2006-07-25 Stmicroelectronics, Inc. Smart card including a JTAG test controller and related methods
US7181649B2 (en) * 2003-05-09 2007-02-20 Stmicroelectronics, Inc. Universal serial bus (USB) smart card having enhanced testing features and related system, integrated circuit, and methods
US7373522B2 (en) * 2003-05-09 2008-05-13 Stmicroelectronics, Inc. Smart card with enhanced security features and related system, integrated circuit, and methods
US7143224B2 (en) * 2003-05-09 2006-11-28 Stmicroelectronics, Inc. Smart card for performing advance operations to enhance performance and related system, integrated circuit, and methods
US7369982B2 (en) * 2003-06-04 2008-05-06 Stmicroelectronics, Inc. Multi-mode smart card emulator and related methods
KR100480084B1 (ko) * 2003-07-23 2005-04-06 엘지전자 주식회사 범용 직렬버스를 이용한 데이터 전송 시스템
US8234421B2 (en) * 2004-04-21 2012-07-31 Stmicroelectronics, Inc. Smart card with selectively allocatable data buffers and associated methods
US7904607B2 (en) * 2004-04-21 2011-03-08 Stmicroelectronics, Inc. Smart card with self-reconfiguration features and related methods
US8046508B2 (en) 2004-04-21 2011-10-25 Stmicroelectronics, Inc. Smart card with self-detachment features and related methods
US7328849B2 (en) * 2004-04-21 2008-02-12 Stmicroelectronics, Inc. Smart card providing data mapping for multiple applications and related methods
JP2005328280A (ja) * 2004-05-13 2005-11-24 Canon Inc データ処理装置
US7188206B2 (en) * 2004-10-22 2007-03-06 Conwise Technology Corporation Ltd. USB compound device without embedded hub and implement method in USB system
US7906982B1 (en) 2006-02-28 2011-03-15 Cypress Semiconductor Corporation Interface apparatus and methods of testing integrated circuits using the same
US8332557B2 (en) * 2008-12-12 2012-12-11 Qualcomm, Incorporated System, apparatus, and method for broadcasting USB data streams
EP2202662A1 (de) * 2008-12-24 2010-06-30 Gemalto SA Tragbare Sicherheitsvorrichtung, die gegen Keylogger-Programme schützt
US9759772B2 (en) 2011-10-28 2017-09-12 Teradyne, Inc. Programmable test instrument
US10776233B2 (en) 2011-10-28 2020-09-15 Teradyne, Inc. Programmable test instrument
TWI582599B (zh) * 2012-12-22 2017-05-11 群聯電子股份有限公司 資料傳輸方法、記憶體控制器、資料傳輸系統
CN115883645A (zh) * 2022-11-24 2023-03-31 百富计算机技术(深圳)有限公司 通信配置方法、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0772130A1 (de) * 1995-11-03 1997-05-07 Sun Microsystems, Inc. Verfahren und Vorrichtung zur Übertragung und Verarbeitung virtueller Befehle
WO1999008196A1 (en) * 1997-08-12 1999-02-18 Atmel Corporation A universal serial bus device controller

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996041274A1 (en) * 1995-06-07 1996-12-19 Advanced Micro Devices, Inc. Dynamically reconfigurable data bus
US5751951A (en) * 1995-10-30 1998-05-12 Mitsubishi Electric Information Technology Center America, Inc. Network interface
US5729721A (en) * 1995-11-13 1998-03-17 Motorola, Inc. Timebase synchronization in separate integrated circuits or separate modules
US5774680A (en) * 1995-12-11 1998-06-30 Compaq Computer Corporation Interfacing direct memory access devices to a non-ISA bus
US5835791A (en) * 1996-03-26 1998-11-10 Vlsi Technology, Inc. Versatile connection of a first keyboard/mouse interface and a second keyboard/mouse interface to a host computer
US5841471A (en) * 1996-09-12 1998-11-24 Eastman Kodak Company Timing control for a digitally interfaced camera using variable line readout intervals
US5818948A (en) * 1996-10-23 1998-10-06 Advanced Micro Devices, Inc. Architecture for a universal serial bus-based PC speaker controller
US5778218A (en) * 1996-12-19 1998-07-07 Advanced Micro Devices, Inc. Method and apparatus for clock synchronization across an isochronous bus by adjustment of frame clock rates

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0772130A1 (de) * 1995-11-03 1997-05-07 Sun Microsystems, Inc. Verfahren und Vorrichtung zur Übertragung und Verarbeitung virtueller Befehle
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 (3)

* Cited by examiner, † Cited by third party
Title
USB specification Revision 1.0 January 15, 1996 (Seite 1) Internet-Adresse: http://www.peritek.com /matterhorn.usb10doc.pdf
USB specification Revision 1.0 January 15, 1996 (Seite 1) Internet-Adresse: http://www.peritek.com/matterhorn.usb10doc.pdf *
WO 99/08 196 (ältere Anmeldung für DE)

Also Published As

Publication number Publication date
KR100290944B1 (ko) 2001-05-15
US6157975A (en) 2000-12-05
KR19990067732A (ko) 1999-08-25
DE19900345A1 (de) 1999-07-08

Similar Documents

Publication Publication Date Title
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
DE19900369B4 (de) Vorrichtung zum Anschluß an einen Universal Serial Bus (USB) und Verfahren zum Betreiben eines Steuerendpunktes an einem Universal Serial Bus (USB)
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
DE19900369A9 (de) Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus
DE19900290A9 (de) Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung
DE69836426T2 (de) Steuergerät für einen universellen seriellen Bus
DE19900245B4 (de) Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host
DE19900345A9 (de) Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses
DE69936060T2 (de) Verfahren und Vorrichtung für eine verbesserte Schnittstelle zwischen Computerkomponenten
EP0929041B1 (de) Verfahren und Anordnung zum Betreiben eines Bussystems
DE19900331A9 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE102012209016B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE19580707C2 (de) PCI-ZU-ISA-Interrupt-Protokoll-Konverter und -Auswahlmechanismus
DE102012208803B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE602004012563T2 (de) Mehrfädiges DMA
DE69828074T2 (de) Direkt-speicherzugriff / transaktionen auf ein bus mit niedriger pinanzahl
DE19900331A1 (de) Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung
DE102012209011B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE102012209009B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE4129205A1 (de) Verfahren zum aufbau von botschaften fuer den datenaustausch und/oder fuer die synchronisation von prozessen in datenverarbeitungsanlagen
DE4018481C2 (de)
DE19900251B4 (de) Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals
DE102005048584A1 (de) FlexRay-Kommunikationsbaustein, FlexRay-Kommunikationscontroller und Verfahren zur Botschaftsübertragung zwischen einer FlexRay-Kommunikationsverbindung und einem FlexRay-Teilnehmer
DE10061770B4 (de) Zugriffsregelung für Steuerchipsätzen bei Bustransaktion

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8180 Miscellaneous part 1

Free format text: IM ANSCHLUSS AN DIE BESCHREIBUNG IST DER ANHANG SEITE 2-59 EINZUFUEGEN. ES FOLGT ERGAENZUNGSDRUCK

8364 No opposition during term of opposition
R082 Change of representative
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee