DE19900251A1 - Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals - Google Patents
Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-EndpunktkanalsInfo
- Publication number
- DE19900251A1 DE19900251A1 DE19900251A DE19900251A DE19900251A1 DE 19900251 A1 DE19900251 A1 DE 19900251A1 DE 19900251 A DE19900251 A DE 19900251A DE 19900251 A DE19900251 A DE 19900251A DE 19900251 A1 DE19900251 A1 DE 19900251A1
- Authority
- DE
- Germany
- Prior art keywords
- command
- state
- endpoint
- isochronous
- ready
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4295—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4247—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
- G06F13/426—Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus using an embedded synchronisation, e.g. Firewire bus, Fibre Channel bus, SSA bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Description
Die Erfindung betrifft eine Vorrichtung zum Steuern eines
vielseitigen USB-Endpunktkanals nach dem Oberbegriff des
Anspruchs 1 und ein Verfahren nach dem Oberbegriff des
Anspruchs 11.
Ein universeller serieller Bus (= USB = Universal Serial Bus)
ist eine Standard-Peripheriegerätschnittstelle für den
Anschluß von Personalcomputern an viele verschiedene Geräte:
z. B. digitale Telephonleitungen, Monitore, Modems, Mäuse,
Drucker, Scanner, Spiele-Controller, Tastaturen und andere
Peripheriegeräte. Der USB ersetzt somit vorhandene Schnitt
stellen wie etwa die seriellen RS-232C-Ports, parallele
Ports, PS/2-Schnittstellen sowie Game/MIDI-Ports.
Bei dem USB sind sämtliche angeschlossenen Vorrichtungen über
einen einzelnen Verbindertyp unter Verwendung einer in Stufen
geordneten Sterntopologie mit einem Personalcomputer
verbunden. Ein Host-Personalcomputer enthält einen einzigen
USB-Controller. Der Host-Controller bildet die Schnittstelle
zwischen dem USB-Netz und dem Host-Personalcomputer. Der
Host-Controller steuert sämtliche Zugriffe auf die USB-
Betriebsmittel und überwacht die Bustopologie. Ein USB-
Netzknoten stellt USB-Anschlußpunkte für USB-Vorrichtungen
bereit.
Eine USB-Funktion ist eine USB-Vorrichtung, die Informationen
auf dem Bus senden und empfangen kann. Eine Funktion kann
eine oder mehrere Konfigurationen besitzen, wovon jede die
Schnittstellen definiert, die die Vorrichtung bilden. Jede
Schnittstelle ist ihrerseits aus einem oder mehreren
Endpunkten gebildet.
Ein Endpunkt ist die letzte Datenquelle oder -senke. Ein
Endpunktkanal ermöglicht die Bewegung von Daten zwischen dem
USB und dem Speicher und vervollständigt den Pfad zwischen
dem USB-Host und dem Funktionsendpunkt.
Jeder Endpunkt ist eine adressierbare Entität auf dem USB und
muß auf IN- und auf OUT-Tokens vom USB-Host (typischerweise
ein PC) antworten. Die IN-Tokens geben an, daß der Host den
Empfang von Informationen von einem Endpunkt angefordert hat,
während die OUT-Tokens angeben, daß der Host im Begriff ist,
Informationen an einen Endpunkt zu senden.
Bei Erfassung eines an einen Endpunkt adressierten TN-Token
ist der Endpunkt für die Antwort durch ein Datenpaket ver
antwortlich. Falls der Endpunkt momentan blockiert (Stalled)
ist, wird ein STALL-Quittierungspaket geschickt. Falls der
Endpunkt freigegeben (enabled) ist, jedoch keine Daten
vorhanden sind, wird ein negatives Quittierungspaket (NAK-
Paket) geschickt.
Ähnlich ist der Endpunkt bei Erfassung eines an einen End
punkt adressierten OUT-Token für den Empfang eines vom Host
geschickten Datenpakets und für dessen Speicherung in einen
Puffer verantwortlich. Falls der Endpunktkanal momentan
blockiert ist, wird am Ende der Datenübertragung ein STALL-
Quittierungspaket geschickt. Falls der Endpunktkanal momentan
gesperrt (disabled) ist, wird am Ende der Datenübertragung
kein Quittierungspaket geschickt. Falls der Endpunktkanal
freigegeben ist, jedoch kein Puffer vorhanden ist, in dem
Daten gespeichert werden können, wird ein NAK-Paket
geschickt.
Ein gesperrter Endpunkt oder gesperrte Endpunkte, die momen
tan nicht auf einen Endpunktkanal abgebildet sind, antworten
nicht auf IN-, OUT- oder SETUP-Tokens.
Eine Anzahl von Anbietern haben Implementierungen des USB-
Standards entwickelt. Beispielsweise hat die Intel Corp. die
8×931Ax-, 8×931Hx-, 8×930Ax- und 8×930Hx-Vorrichtungen
freigegeben.
Diese Vorrichtungen besitzen jedoch eine Anzahl von Be
schränkungen. Beispielsweise ist die 8×931Ax-Vorrichtung auf
drei Endpunktpaare eines Sende-Endpunkts und eines Empfangs-
Endpunkts eingeschränkt, wovon jeder einen im voraus defi
nierten und zugeordneten Datenspeicher (zugeordnete FIFOs)
besitzt. Die anderen Intel-Vorrichtungen besitzen ähnliche
Beschränkungen. Ferner kann jedes Endpunkt-Paar nur unter
einer Untermenge der verfügbaren USB-Sendetypen arbeiten.
Weiterhin verwendet die 8×931Ax eine große Anzahl von Regi
stern, um Steuerinformationen zu speichern.
Aufgabe der Erfindung ist es, eine Vorrichtung zum Steuern
eines vielseitigen USB-Endpunktkanals nach dem Oberbegriff
des Anspruchs 1 und ein Verfahren nach dem Oberbegriff des
Anspruchs 11 zu schaffen, wobei die Anzahl von Endpunkten,
deren Typen und Datenspeicher je nach Anforderung definiert
werden können, vergrößert und die Anzahl der Register
verringert wird.
Diese Aufgabe wird entsprechend dem kennzeichnenden Teil des
Anspruchs 1 bzw. des Anspruchs 11 gelöst.
Weitere Ausgestaltungen der Erfindung sind der nachfolgenden
Beschreibung und den Unteransprüchen zu entnehmen.
Die Erfindung wird nachstehend anhand von in den beigefügten
Abbildungen dargestellten Ausführungsbeispielen näher erläu
tert.
Fig. 1a ist ein Blockschaltplan eines Aspekts der Erfindung;
Fig. 1b ist ein Zustandsdiagramm, das dem Blockschaltplan
nach Fig. 1a entspricht;
Fig. 1c ist ein Zustandsdiagramm, das eine weitere Ausführung
zeigt, die dem Blockschaltplan nach Fig. 1a
entspricht;
Fig. 2a ist ein Blockschaltplan eines weiteren Aspekts der
Erfindung;
Fig. 2b ist ein Zustandsdiagramm, das dem Blockschaltplan
nach Fig. 2a entspricht;
Fig. 3a ist ein Blockschaltplan eines nochmals weiteren
Aspekts der Erfindung;
Fig. 3b ist ein Zustandsdiagramm, das dem Blockschaltplan
nach Fig. 3a entspricht,
Fig. 4 ist ein Zustandsdiagramm, das einer zweckmäßigen
Ausführung entspricht.
Die Fig. 1a-1b veranschaulichen eine allgemeine Ausführung
eines Aspekts der vorliegenden Erfindung für einen Endpunkt
kanal. Fig. 1a zeigt einen ersten Speicher 110, einen zweiten
Speicher 120 und eine Steuerschaltungsanordnung 130. Der
Speicher 110 speichert einen Zustand des Endpunktkanals,
während der Speicher 120 einen Endpunktbefehl speichert. Der
Endpunktkanal besitzt einen Typ, der unbestimmt sein kann.
Fig. 1b zeigt einen Wartezustand (WAIT-Zustand) 150 und einen
Leerlaufzustand (IDLE-Zustand) 160.
Die Vorrichtung der Fig. 1a-1b arbeitet folgendermaßen.
Zunächst ist der Endpunkttyp undefiniert, wobei der Speicher
110 angibt, daß sich der Endpunkt im Wartezustand 150 befin
det. Der im Speicher 120 gespeicherte Endpunktbefehl wird
durch Firmware in einen Freigabebefehl (enable command)
CMD.EMB geändert. Die Steuerschaltungsanordnung 130 ändert
den Zustand vom Wartezustand 150 in den Leerlaufzustand 160.
Schließlich bestimmt die Steuerschaltungsanordnung 130 auf
der Grundlage einer Untermenge des Freigabebefehls den
Endpunktkanal-Typ.
Fig. 1c zeigt eine weitere Ausführung. Der im Speicher 120
gespeicherte Endpunktbefehl wird durch Firmware in einen
Bereit-Befehl (ready command) CMD.RDY geändert. Die Steuer
schaltungsanordnung 130 ändert den Zustand vom Leerlaufzu
stand 160 in einen Bereitzustand 170. Auf der Grundlage einer
Untermenge des Freigabebefehls bestimmt die Steuer
schaltungsanordnung 130 ferner den Endpunktkanal-Typ.
Die Fig. 2a-2b veranschaulichen eine allgemeine Ausführung
eines Endpunktkanals. Fig. 2a zeigt einen ersten Speicher
210, einen zweiten Speicher 220 und eine Steuerschaltungsan
ordnung 230. Der Speicher 210 speichert einen Zustand des
Endpunktkanals, während der Speicher 220 einen Pufferbefehl
speichert.
Fig. 2b zeigt einen aktiven Zustand (ACTIVE-Zustand) 280 und
einen Differenz-Zustand (DIFFERENT-Zustand) 290.
Die Ausführung der Fig. 2a-2b arbeitet folgendermaßen.
Zunächst gibt der Speicher 210 an, daß der Endpunkt in einem
aktiven Zustand 280 ist. Der im Speicher 220 gespeicherte
Pufferbefehl wird in einen Pufferbefehl (buffer command)
BUF.CMD geändert. Die Steuerschaltungsanordnung 230 ändert
den Zustand vom aktiven Zustand 280 in den Differenz-Zustand
290.
Dieser Aspekt ermöglicht das Lesen von Zustandsübergangsbe
fehlen aus einem Speicher.
Die Fig. 3a-3b veranschaulichen eine allgemeine Ausführung
einer Kombination der Ausführungen der Fig. 1a-1c und 2a-2b
für einen Endpunktkanal. Fig. 3a zeigt einen ersten Speicher
310, einen zweiten Speicher 320, einen dritten Speicher 330
und eine Steuerschaltungsanordnung 340. Der Speicher 310
speichert einen Zustand des Endpunktkanals, der Speicher 320
speichert einen Endpunktbefehl und der Speicher 330 speichert
einen Pufferbefehl. Der Endpunktkanal ist von einem Typ, der
unbestimmt sein kann.
Fig. 3b zeigt einen Wartezustand 350, einen Leerlaufzustand
360, einen Bereitzustand 370, einen aktiven Zustand 380 und
einen Differenz-Zustand 390.
Die Erfindung gemäß den Fig. 3a-3b arbeitet folgendermaßen.
Zunächst ist der Endpunkt-Typ nicht definiert und der Spei
cher 310 gibt an, daß sich der Endpunkt im Wartezustand 350
befindet. Der im Speicher 320 gespeicherte Endpunkt-Befehl
wird durch Firmware in einen Freigabebefehl CMD.ENB geändert.
Die Steuerschaltungsanordnung 340 ändert den Zustand vom
Wartezustand 350 in den Leerlaufzustand 360. Auf der
Grundlage einer Untermenge des Freigabebefehls bestimmt die
Steuerschaltungsanordnung 130 den Endpunktkanal-Typ.
Dann wird der im Speicher 320 gespeicherte Endpunkt-Befehl
durch Firmware in einen Bereit-Befehl CMD.RDY geändert. Die
Steuerschaltungsanordnung 340 ändert den Zustand vom Leer
laufzustand 360 in den Bereitzustand 370. Auf der Grundlage
einer Untermenge des Freigabebefehls bestimmt die Steuer
schaltungsanordnung 130 ferner den Endpunktkanal-Typ.
An einem weiteren Punkt in der Operation des Endpunktkanals
gibt der Speicher 310 an, daß der Endpunkt sich in einem
aktiven Zustand 380 befindet. Der im Speicher 330 gespei
cherte Pufferbefehl wird in einen Pufferbefehl BUF.CMD
geändert. Die Steuerschaltungsanordnung 340 ändert den
Zustand vom aktiven Zustand 380 in den anderen Zustand 390.
Obwohl diese Beschreibung den Ausdruck "Speicher" verwendet,
soll die Erfindung auch auf andere Typen von Datenablageele
menten anwendbar sein.
Diese allgemeine Beschreibung wird im folgenden Abschnitt,
der zweckmäßige Ausführungen veranschaulicht, genauer erläu
tert.
In einer zweckmäßigen Ausführung ist die obenbeschriebene
Erfindung durch Teile eines USB-Knoten-Schnittstellenmoduls
(= UNIM = USB note interface modul) implementiert. Die Teile
des UNIM, die für die Erfindung relevant sind, umfassen einen
Endpunkt-Controller, einen Endpunktkanal-Controller,
verschiedene Register, ein Steuerwort und ein Zustandsdia
gramm. Diese Abschnitte sind der USB-Knoten-Schnittstellen
architektur-Spezifikation, Überarbeitung 0.6, entnommen.
In einer zweckmäßigen Ausführung handhabt der Endpunkt-
Controller die auf den Endpunkt bezogenen Operationen ein
schließlich des Endpunktkanal-Zustands, der Pufferung und der
Übertragungen. In einer zweckmäßigen Ausführung können zu
einem gegebenen Zeitpunkt bis zu sechzehn Endpunktkanäle
unterstützt werden. Jedem Endpunktkanal können bis zu zwei
Puffer im Kernbus-Adressenraum, die für Empfangs- und Sen
deoperationen verwendet werden, zugeordnet werden. Falls
einem Endpunktkanal keine Puffer zugewiesen sind, ist der
Controller für die Erzeugung geeigneter Quittierungen für
Input-Tokens und Output-Tokens verantwortlich.
Der Endpunkt-Controller enthält mehrere funktionale Blöcke.
Die Endpunkt-Zustandsmaschine schafft die zentralisierte
Steuerung für die Dienstprogrammblöcke des Datensynchronisa
tions-Multiplexers (DALM), des Adressengenerators (ADGen) und
des Teil-Endpunktkanal-Speichers (PEP-Speicher). Die
Vorrichtungsfunktionen wie etwa die Adressenprüfung und die
Adressenerzeugung werden in dem Vorrichtungsfunktionsblock
erzielt. In einer zweckmäßigen Ausführung laufen sämtliche
Zustandsmaschinen mit einem USB-Takt von 12 MHz. Sämtliche
Datenübertragungen erfolgen mit einem Kernbustakt. Teile des
ADGen-Blocks sowie der gesamte DALM-Block arbeiten unter
Verwendung des Kernbustakts. Sämtliche anderen Blöcke des
Endpunkt-Controllers verwenden ausschließlich den lokalen
12 MHz-Takt. Datenbytes zwischen den Bereichen werden bei der
MAC-Anwenderschnittstelle mit einer asynchronen Quittierung
für jedes übertragene Byte synchronisiert.
In einer zweckmäßigen Ausführung minimiert der Endpunkt-
Controller die Anzahl der erforderlichen Speicherzugriffe.
Nur beim Empfang eines Token ist für die Endpunktmatrix ein
Speicherzugriff erforderlich. Ein einziger Doppelwort-Zugriff
zusammen mit dem residenten Endpunkt zustand ist ausreichend,
damit der Endpunktkanal die Host-Anforderung verarbeitet.
Dieser Zugriff liest die Lokalisierungs- und
Größeninformationen für die Datenübertragung. Die Datenüber
tragung erfolgt nach Operationen des Lesens oder Schreibens
eines Doppelworts. Das Modul besitzt die höchste Priorität
auf dem Kernbus für Übertragungen, wobei die Übertragungsrate
erheblich höher als jene des USB ist. Somit ist die
Anforderung einer Datenpufferung innerhalb des Endpunkt-
Controllers minimal, abgesehen von einem Extrawort, damit
nachfolgende Zugriffe mit dem momentanen Zugriff überlappen.
Ein Bytezähler verfolgt die Anzahl der Bytes, die übertragen
werden. Der letzte Zugriff einer Übertragung kann ein teil
weises Lesen oder Schreiben im Speicher erfordern. Das teil
weise Schreiben des letzten Zugriffs wird durch den endgül
tigen Bytezählstand bestimmt.
Am Ende einer Übertragung wird das momentane Steuerwort mit
dem Status für die Übertragung geschrieben, während das
andere Steuerwort für diesen Endpunkt gelesen wird, um zu
prüfen, ob ein weiterer Puffer vorbereitet wurde. Nach den
Steuerwort-Operationen ist der Endpunktkanal-Zustand aktua
lisiert.
Durch eine Kombination aus Hardware und Software unterstützt
das UNIM alle drei für den USB definierten Synchronisations
klassen, nämlich asynchron, synchron und adaptiv. Der End
punkt-Controller schafft eine Hardware-Unterstützung für die
Überwachung des USB-Takts von 1 kHz relativ zu einem externen
Referenztakt wie etwa einem Referenztakt von 8 kHz, und für
die Überwachung der Qualität und der Konsistenz des USB-Takts
von 1 kHz. Die Anstiegsflanken des externen Referenztakts
werden in dem Referenzzählregister gezählt. Dies kann für den
Vergleich mit der USB-Rahmennummer verwendet werden. Die
Differenz zwischen den Frequenzen des Referenztakts und des
USB-Takts kann in Paketen dem Host gemeldet werden, so daß
der Host die USB-Taktfrequenz einstellen kann; dadurch kann
der USB-Referenztakt auf den Referenztakt verriegelt werden.
Der Endpunkt-Controller behält außerdem den Status bei, um
anzugeben, wenn er auf den USB-Takt von 1 kHz verriegelt ist
und wenn aufgrund eines Fehlens oder eines inkorrekten
Rahmenbeginn-Pakets im USB-Takt eine Diskontinuität auftritt.
Dies wird von der Software für die Einstellung der
Warteschlangen für die isochronen Pakete verwendet. Die
momentane Rahmennummer wird vom Endpunkt-Controller für die
Bestimmung, welcher isochrone Puffer als nächstes senden
soll, verwendet.
In einer zweckmäßigen Ausführung schafft der Endpunkt-Con
troller (EPC) die Schnittstelle für die USB-Funktionsend
punkte. In einer zweckmäßigen Ausführung werden bis zu
sechzehn derartige Endpunktkanäle zu irgendeinem gegebenen
Zeitpunkt unterstützt, wobei jeder die gleiche Funktions
adresse besitzt. Der EPC behält getrennte Zustandsinforma
tionen für jeden Endpunktkanal bei.
Zustandsinformationen, die für sofortige Entscheidungen
erforderlich sind (etwa Antwort auf NAK- oder STALL-Quittie
rungen) werden im Modul jederzeit für jeden Endpunktkanal
gehalten. Andere Informationen, die für eine Endpunktopera
tion notwendig sind, werden in einer Endpunktmatrix im
Speicher gehalten. In einer zweckmäßigen Ausführung ist nur
ein Endpunktkanal zu irgendeinem gegebenen Zeitpunkt aktiv,
wodurch eine einzige Endpunktkanal-Zustandsmaschine von
sämtlichen Endpunktkanälen gemeinsam genutzt werden kann.
Für IN-Token ist der EPC für die Übertragung von Daten vom
definierten Puffer zum Host verantwortlich. Für OUT-Token ist
der EPC für die Übertragung von Daten vom Host zum
definierten Puffer verantwortlich. Um eine größere Flexibi
lität bei der Zuweisung von Puffern an einen Endpunktkanal zu
ermöglichen, ist in einer zweckmäßigen Ausführung ein
Doppelpufferungsschema in jedem Endpunktkanal zulässig.
Dadurch kann der EPC eine prompte Antwort auf sämtliche
Transaktionen dieses Moduls schaffen, ohne auf NAKs zurück
zugreifen.
In einer zweckmäßigen Ausführung werden sämtliche Informa
tionen, die von Endpunktkanälen während Datenübertragungen
verwendet werden, in der Endpunktmatrix gehalten, die sich in
einem RAM befindet. Diese Matrix wird durch den Endpunktkanal
auf der Grundlage, die im Endpunktmatrix-Basisadres
senregister (EABA) definiert ist, indexiert. Diese Matrix
enthält zwei Doppelwörter pro Endpunkt. Jedes Doppelwort ist
ein Steuerwort, das einen Befehl und Statusinformationen für
den Endpunktkanal wie etwa einen Zeiger auf den Beginn des
Puffers, die Größe des Puffers, den Zustand des Puffers und
andere relevante Parameter enthält.
Der Pufferzustand definiert, ob der Puffer für Eingabe- oder
Ausgabetransaktionen verwendet werden soll und ob auf ihn
momentan zugegriffen wird oder ob die gewünschte Operation
abgeschlossen ist.
Wenn eine IN- oder OUT-Übertragung eines Endpunktkanals mit
einem vorhandenen Puffer angefordert wird, wird das geeignete
Steuerwort gelesen. Dieses Steuerwort teilt dem Endpunkt-
Controller mit, wie er die Transaktion abzuschließen hat. Am
Ende einer Transaktion wird in das Steuerwort der Status
geschrieben, der durch Software als ein Hinweis zur Freigabe
dieses Puffers und zur Schaffung eines neuen Puffers
verwendet wird.
In einer zweckmäßigen Ausführung sind zwei für die Erfindung
relevante Register das Endpunkt-Befehlsregister und das USB-
Datenregister.
In einer zweckmäßigen Ausführung ist das Endpunkt-Befehlsre
gister (ECR) ein wortbreites Schreib-Lese-Register. Das ECR
wird für die Ausführung von Befehlen an einem spezifischen
Endpunkt verwendet. Beim Zurücksetzen wird dieses Register
gelöscht. Das ECR-Registerformat lautet folgendermaßen:
Bits | |
Funktionsetikett | |
15-8 | (reserviert) |
7-4 | Endpunktkanal-Nummer (EPN) |
3-0 | Endpunkt-Befehl (CMD) |
Die Endpunktkanal-Nummer EPN bestimmt den Endpunktkanal, über
den der Befehl ausgeführt wird. In einer zweckmäßigen
Ausführung kann dieses Register in der Hochgeschwindigkeits-
Busschnittstellenlogik implementiert sein. Die Daten laufen
über die asynchrone Schnittstelle. Zwei Signale werden vom
Endpunkt-Controller zurückgeschickt; eines gibt an, daß der
Befehl verarbeitet wurde und daß der Befehlswert auf "0"
gelöscht werden soll, während das andere angibt, daß der
Befehl nicht verarbeitet werden konnte, und soll auf "F"
gesetzt werden.
Der Endpunkt-Befehl CMD kann die folgenden Werte annehmen:
0000: Complete. Dieser Wert gibt an, daß der vorhergehende
Befehl abgeschlossen ist und daß der Endpunkt-Controller für
die Annahme eines weiteren Befehls bereit ist.
0001: Input Enable (CMD.IENB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall (Halt)- oder Disable-Zustand in den Input-Idle-Zustand I_IDL eintritt. Der Steuerwortzeiger für den spezifizierten Endpunktkanal wird auf 0 zurückgesetzt. Falls der momentane Zustand nicht Disable oder Stall ist, wird "F" zurückgeschickt, um anzuge ben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde, wobei der Befehl ignoriert wird.
0010: Input Ready (CMD.IRDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Input-Ready-Zustand I_RDY eintritt, wenn er sich momentan im Input-Idle-Zustand I_IDL befindet. Dieser Befehl wird ausgegeben, nachdem ein Steuer wort mit einem Input-Ready-Pufferzustand I_RDY in die End punktmatrix für den entsprechenden Endpunkt geschrieben worden ist. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines IN-Tokens gelesen wird. Falls der momentane Zustand des Endpunkts nicht der Input- Idle-Zustand I_IDL ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Output oder der SETUP-Zustand oder aber Disable oder Stall ist, wird ein "F" zurückge schickt, um anzugeben, daß an diesem Endpunkt ein unzulässi ger Befehl versucht wurde.
0011: Input Isochronus Ready (CMD.ISRDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Input Isochronus Ready-Zustand IS_RDY eintritt, falls er sich momentan im Input-Idle-Zustand I_IDL befindet. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit dem Input-Ready- Pufferzustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermög licht er, daß es als Antwort auf den Empfang eines IN-Token gelesen wird. Es wird erwartet, daß das Typenfeld des Steu erworts (TI) auf isochron gesetzt ist, dies wird jedoch nicht geprüft. Falls der momentane Zustand des Endpunkts nicht der Input-Idle-Zustand I_IDL ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Output- oder der SETUP-Zustand oder aber Disable oder Stall ist, wird ein "F" zurückgeschickt, um anzugeben, daß ein unzulässiger Befehl an diesem Endpunkt versucht wurde.
0100: Output Enable (CMD.OEMB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal vom Stall- oder Disable- Zustand in den Output-Idle-Zustand O_IDL eintritt. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Falls der momentane Zustand nicht Disable oder Stall ist, wird ein "F" zurückgeschickt, um anzugeben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde, wobei der Befehl ignoriert wird.
0101: Output Ready (CMD.ORDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Output-Ready-Zustand O_RDY eintritt, falls er sich momentan im Output-Idle-Zustand O_IDL befindet. Der Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Output-Ready-Zustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines OUT-Tokens gelesen wird. Falls der momentane Zustand des Endpunkts nicht der Output-Idle-Zustand ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Input-Zustand, der Stall-Zustand oder der Disable-Zustand ist, wird ein "F" zurückgeschickt, um anzugeben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde.
0110: Output Isochronous Enable (CMD.OSENB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disable-Zustand in den Output-Isochronous-Idle-Zustand OS_IDLE eintritt. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Falls der momentane Zustand nicht Disable oder Stall ist, wird ein "F" zurückge schickt, um anzugeben, daß an diesem Endpunkt ein unzulässi ger Befehl versucht wurde, wobei dieser Befehl ignoriert wird.
0111: Output Isochronous Ready (CMD.OSRDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Output- Isochronous-Ready-Zustand OS_RDY eintritt, falls er sich momentan im Output-Isochronous-Idle-Zustand OS_IDL befindet. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Output-Ready-Zustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben worden ist. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines OUT-Token gelesen wird. Falls der momentane Zustand des Endpunkts nicht der Output-Isochronous-Idle- Zustand ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Input-Zustand, der Stall-Zustand oder der Disable-Zustand ist, wird ein "F" zurückgeschickt, um anzugeben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde.
1000: SETUP Ready (CMD.SRDY) Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den SETUP-Ready-Zustand S_RDY eintritt. Dieser Befehl wird ausgegeben, nachdem ein Steuer wort für einen Output-Ready-Zustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben worden ist. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines SETUP-Token gelesen wird. Falls der momentane Zustand des Endpunkts nicht Stall oder Disable ist, wird der Befehl ignoriert.
1001: Disable (CMD.DISAB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den gesperrten Zustand Disable eintritt. Dies erfolgt unmittelbar nach irgendeinem Zustand. Falls der Endpunktkanal momentan aktiv ist, wird der Status in das Steuerwort geschrieben, um anzugeben, daß der Endpunkt gesperrt wurde.
1010: Stall (CMD.HALT). Dieser Wert bewirkt, daß der spezifizierte Endpunkt aus irgendeinem Zustand in den Stall- Zustand HALT eintritt. Dies erfolgt unmittelbar aus irgend einem Zustand. Falls der Endpunktkanal momentan aktiv ist, wird der Status in das Steuerwort geschrieben, um anzugeben, daß der Endpunkt blockiert wurde.
1011-1101: reserviert. Diese Werte bewirken keine auszufüh rende Aktion und schicken 0 zurück.
1110: Toggle CWP. Dieser Wert bewirkt, daß der Steuerwort zeiger geschaltet wird. Dies wird bei Steuerübertragungen mit einer ungeraden Anzahl von Paketen, die während der Datenphase geschickt oder empfangen werden, verwendet.
1111: Error. Dieser Wert gibt an, daß im momentanen End punktkanal für seinen momentanen Zustand ein unzulässiger Befehl versucht wurde und daß ein neuer Befehl akzeptiert werden kann.
0001: Input Enable (CMD.IENB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall (Halt)- oder Disable-Zustand in den Input-Idle-Zustand I_IDL eintritt. Der Steuerwortzeiger für den spezifizierten Endpunktkanal wird auf 0 zurückgesetzt. Falls der momentane Zustand nicht Disable oder Stall ist, wird "F" zurückgeschickt, um anzuge ben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde, wobei der Befehl ignoriert wird.
0010: Input Ready (CMD.IRDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Input-Ready-Zustand I_RDY eintritt, wenn er sich momentan im Input-Idle-Zustand I_IDL befindet. Dieser Befehl wird ausgegeben, nachdem ein Steuer wort mit einem Input-Ready-Pufferzustand I_RDY in die End punktmatrix für den entsprechenden Endpunkt geschrieben worden ist. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines IN-Tokens gelesen wird. Falls der momentane Zustand des Endpunkts nicht der Input- Idle-Zustand I_IDL ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Output oder der SETUP-Zustand oder aber Disable oder Stall ist, wird ein "F" zurückge schickt, um anzugeben, daß an diesem Endpunkt ein unzulässi ger Befehl versucht wurde.
0011: Input Isochronus Ready (CMD.ISRDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Input Isochronus Ready-Zustand IS_RDY eintritt, falls er sich momentan im Input-Idle-Zustand I_IDL befindet. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit dem Input-Ready- Pufferzustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermög licht er, daß es als Antwort auf den Empfang eines IN-Token gelesen wird. Es wird erwartet, daß das Typenfeld des Steu erworts (TI) auf isochron gesetzt ist, dies wird jedoch nicht geprüft. Falls der momentane Zustand des Endpunkts nicht der Input-Idle-Zustand I_IDL ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Output- oder der SETUP-Zustand oder aber Disable oder Stall ist, wird ein "F" zurückgeschickt, um anzugeben, daß ein unzulässiger Befehl an diesem Endpunkt versucht wurde.
0100: Output Enable (CMD.OEMB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal vom Stall- oder Disable- Zustand in den Output-Idle-Zustand O_IDL eintritt. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Falls der momentane Zustand nicht Disable oder Stall ist, wird ein "F" zurückgeschickt, um anzugeben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde, wobei der Befehl ignoriert wird.
0101: Output Ready (CMD.ORDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Output-Ready-Zustand O_RDY eintritt, falls er sich momentan im Output-Idle-Zustand O_IDL befindet. Der Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Output-Ready-Zustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben wird. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines OUT-Tokens gelesen wird. Falls der momentane Zustand des Endpunkts nicht der Output-Idle-Zustand ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Input-Zustand, der Stall-Zustand oder der Disable-Zustand ist, wird ein "F" zurückgeschickt, um anzugeben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde.
0110: Output Isochronous Enable (CMD.OSENB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal aus dem Stall- oder Disable-Zustand in den Output-Isochronous-Idle-Zustand OS_IDLE eintritt. Der Steuerwortzeiger für den spezifizierten Endpunkt wird auf 0 zurückgesetzt. Falls der momentane Zustand nicht Disable oder Stall ist, wird ein "F" zurückge schickt, um anzugeben, daß an diesem Endpunkt ein unzulässi ger Befehl versucht wurde, wobei dieser Befehl ignoriert wird.
0111: Output Isochronous Ready (CMD.OSRDY). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den Output- Isochronous-Ready-Zustand OS_RDY eintritt, falls er sich momentan im Output-Isochronous-Idle-Zustand OS_IDL befindet. Dieser Befehl wird ausgegeben, nachdem ein Steuerwort mit einem Output-Ready-Zustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben worden ist. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines OUT-Token gelesen wird. Falls der momentane Zustand des Endpunkts nicht der Output-Isochronous-Idle- Zustand ist, wird der Befehl ignoriert. Falls der momentane Zustand entweder der Input-Zustand, der Stall-Zustand oder der Disable-Zustand ist, wird ein "F" zurückgeschickt, um anzugeben, daß an diesem Endpunkt ein unzulässiger Befehl versucht wurde.
1000: SETUP Ready (CMD.SRDY) Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den SETUP-Ready-Zustand S_RDY eintritt. Dieser Befehl wird ausgegeben, nachdem ein Steuer wort für einen Output-Ready-Zustand in die Endpunktmatrix für den entsprechenden Endpunkt geschrieben worden ist. Dieser Befehl bewirkt nicht, daß das Steuerwort im Speicher gelesen wird; statt dessen ermöglicht er, daß es als Antwort auf den Empfang eines SETUP-Token gelesen wird. Falls der momentane Zustand des Endpunkts nicht Stall oder Disable ist, wird der Befehl ignoriert.
1001: Disable (CMD.DISAB). Dieser Wert bewirkt, daß der spezifizierte Endpunktkanal in den gesperrten Zustand Disable eintritt. Dies erfolgt unmittelbar nach irgendeinem Zustand. Falls der Endpunktkanal momentan aktiv ist, wird der Status in das Steuerwort geschrieben, um anzugeben, daß der Endpunkt gesperrt wurde.
1010: Stall (CMD.HALT). Dieser Wert bewirkt, daß der spezifizierte Endpunkt aus irgendeinem Zustand in den Stall- Zustand HALT eintritt. Dies erfolgt unmittelbar aus irgend einem Zustand. Falls der Endpunktkanal momentan aktiv ist, wird der Status in das Steuerwort geschrieben, um anzugeben, daß der Endpunkt blockiert wurde.
1011-1101: reserviert. Diese Werte bewirken keine auszufüh rende Aktion und schicken 0 zurück.
1110: Toggle CWP. Dieser Wert bewirkt, daß der Steuerwort zeiger geschaltet wird. Dies wird bei Steuerübertragungen mit einer ungeraden Anzahl von Paketen, die während der Datenphase geschickt oder empfangen werden, verwendet.
1111: Error. Dieser Wert gibt an, daß im momentanen End punktkanal für seinen momentanen Zustand ein unzulässiger Befehl versucht wurde und daß ein neuer Befehl akzeptiert werden kann.
In einer zweckmäßigen Ausführung ist das USB-Datenregister
(UDR) ein wortbreites Schreib-Lese-Register. Lesezugriffe
sind an sämtlichen Plätzen zugelassen. Das Datenregister wird
mit den Daten geladen, die für das Register gelesen werden,
das stets durch ein USB-Indexregister (UIR) gewählt wird.
Schreibvorgänge dieses Registers sind nur in den USB-Hub-
Registern zulässig, wenn die Wählbits des UIR (UIR.SEL) den
Wert 2 haben. Im Bit 15 des UIR ist ein Statusbit definiert,
das angibt, daß eine Schreiboperation erfolgreich gewesen
ist. Dies ist nur notwendig, wenn die Hub-Funktionalität
enthalten ist.
Der für die Erfindung relevante Teil des UDR ist der 8-Bit-
Endpunktkanal-Zustand. Dieser Zustand ist für jeden End
punktkanal gespeichert und wird für den momentan indexierten
Endpunktkanal zurückgeschickt. Falls ein ungültiger End
punktkanal indexiert ist, wird 0 zurückgeschickt. Das ECR-
Registerformat ist im folgenden gezeigt:
Bits | |
Funktionsetikett | |
7 | Steuerung (CTL) |
6 | Steuerwortzeiger (CWP) |
5-4 | (reserviert) |
3-0 | Endpunktkanal-Zustand (EPS) |
Steuerung CTL: Dies wird bejaht, falls dieser Endpunktkanal
Steuersequenzen annehmen kann, die das SETUP-Token enthalten.
Dieses Bit wird gesetzt, nachdem CMD.SRDY für diesen
Endpunktkanal ausgeführt worden ist, und bleibt gesetzt, bis
der Endpunkt gesperrt (disabled) wird.
Steuerwortzeiger CWP: Wenn das Steuerwortbit 0 ist, wird als
nächstes auf das Steuerwort 0 dieses Endpunkts in der End
punktmatrix zugegriffen. Wenn das Steuerwortbit 1 ist, wird
als nächstes auf das Steuerwort 1 für diesen Endpunkt zuge
griffen. Dies wird auf 0 gesetzt, wann immer der Endpunkt
freigegeben wird.
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 | Stall 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 |
In einer zweckmäßigen Ausführung ist nur ein Endpunktkanal zu
irgendeiner gegebenen Zeit aktiv.
In einer zweckmäßigen Ausführung enthält die Endpunktkanal-
Matrix 32 Steuerwörter, 2 für jeden Endpunktkanal. Die
Endpunktkanal-Matrix befindet sich in einem Speicher an einer
Adresse, auf die ein Endpunktmatrix-Basisadressenregister
EABAR zeigt. Diese Adresse muß 128-Byte-synchronisiert sein
(d. h. die 7 LSBs der Adresse sind 0). Die Endpunktkanal-
Matrix ist durch die 4-Bit-Endpunktkanal-Nummer EPN
indexiert, ferner ist das Steuerwort, auf das zugegriffen
wird, durch den 1-Bit-Endpunktkanal-Steuerwortzeiger CWP
bestimmt. Das 25-Bit-EABAR, die 4-Bit-EPN und der 1-Bit-CWP
erzeugen eine auf eine Doppelwortgrenze (32-Bit-Grenze)
synchronisierte 32-Bit-Adresse und werden für den Zugriff auf
das 32-Bit-Steuerwort verwendet.
Das 32-Bit-Steuerwort enthält sämtliche Informationen, die
für den Betrieb dieses Endpunktkanals erforderlich sind, wenn
dieser aktiv ist. Für jeden Endpunktkanal gibt es zwei
derartige Einträge. Das Steuerwort, auf das als nächstes
zugegriffen werden soll, ist durch den Wert des Endpunktka
nal-Steuerwortzeigers CWP bestimmt. Sofort nach dem Empfang
eines IN-Token, eines OUT-Token oder eines SETUP-Token durch
einen momentan in Bereitschaftszustand befindlichen End
punktkanal wird das Steuerwort des gewählten Endpunktkanals
des momentanen Steuerwortzeigers gelesen, um zu bestimmen,
wie auf das Token geantwortet werden soll. Am Ende einer
Übertragung, wenn der Abschlußstatus geschrieben wird, wird
das Steuerwort durch den momentanen Status aktualisiert, wird
der CWP inkrementiert und wird das andere Steuerwort gelesen.
Wenn ein Zwischenstatus geschrieben wird, wird nur das
höchstwertige Byte des Steuerworts aktualisiert. Das
Steuerwortformat ist im folgenden gezeigt:
Bits | |
Funktionsetikett | |
31-28 | Pufferzustand BS |
27 | (reserviert) |
26-16 | Pufferadresse BA |
15 | Pufferseite BB |
14 | Pufferrundung BR |
13 | Schaltfreigabe (Toggle Enable) TE |
12 | Isochron-Typ TI |
11 | Unterbrechung bei vollständigem Paket IC |
10 | Unterbrechung bei Paketfehler IE |
9-0 | Bytezählstand BC |
Der 4-Bit-Pufferzustand BS ist ein Teil des Steuerworts, der
für die Erfindung relevant ist. Der Pufferzustand wird durch
Software und den Endpunktkanal-Controller EPC aktualisiert um
die Steuerung dieses Puffers zwischen ihnen zu synchroni
sieren. Der EPC schreibt den Status, der die Verwendung des
Puffers angibt. Dieses Feld wird durch eine Knoten-Firmware
auf Output Ready, Input Ready, SETUP Ready, Skip, Stall und
Disable gesetzt. Sämtliche anderen Werte werden durch den EPC
gesetzt. Der EPC kann außerdem die Stall-Disable-Werte in
Fehlerzuständen schreiben. Der Puffer kann durch die Knoten-
Firmware erneut in Anspruch genommen werden, wenn der
Pufferzustand irgendeiner der Abschlußwerte ist; diese
umfassen den Eingangs-/Ausgangsabschluß-Status und die
Fehlercodes.
Der Pufferzustand BS kann die folgenden Werte annehmen:
0: Skip. Dieser Wert wird zusammen mit dem Output Ready-
Befehl verwendet. Skip bewirkt, daß das nächste empfangene
Datenpaket ignoriert wird und daß der Steuerwortzeiger
inkrementiert wird. Für Steuerendpunkte bewirkt Skip außer
dem, daß der Endpunktkanal-Zustand vom Input-Ready-Zustand
zum Output/Input-Idle-Zustand geschaltet wird. Das Setzen von
TE und TI bestimmt, welche Quittung zurückgeschickt wird,
sowie den nächsten Zustand des Endpunktkanals. Eine NAK wird
zurückgeschickt, falls weder TE noch TI gesetzt ist. Falls TI
gesetzt ist und TE nicht gesetzt ist, wird keine Quittung
zurückgeschickt. Falls TE gesetzt ist, wird eine ACK
zurückgeschickt und der Abschlußstatus wird geschrieben, wenn
ein Paket mit dem richtigen PID empfangen wird.
1: Input Ready IRDY. Dieser Wert gibt an, daß in den Puffer Daten geschrieben worden sind, die als Antwort auf ein IN- Token gesendet werden sollen.
2: Output Ready ORDY. Dieser Wert gibt an, daß der Puffer zum Schreiben vorgesehen ist.
3: SETUP Ready SRDY. Dieser Wert gibt an, daß der Puffer zum Schreiben vorgesehen worden ist. Dies wird nur an einem Steuerendpunkt während der ersten Übertragung von Steuerlese- und Steuerschreib-Operationen verwendet. Geschrieben wird nur in das Steuerwort 0.
4: Output Wait OWT. Dieser Wert gibt an, daß während des Empfangs von OUT-Daten vom Host ein Fehler aufgetreten ist. Dies enthält die Erfassung eines Bitverstopfungsfehlers. Es wird eine Wiederholung erwartet, da dies als Zwischenstatus angesehen wird, es sei denn, es handelt sich um einen isochronen OUT-Endpunkt, wo der Status als Abschlußstatus behandelt wird.
5: CRC Error CRCE. Dieser Wert gibt an, daß am Ende einer OUT-Transaktion ein fehlerhafter CRC erfaßt wurde. Es wird eine Wiederholung erwartet, da der Status als Zwischenstatus angesehen wird, es sei denn, es handelt sich um einen isochronen OUT-Endpunkt, wo der Status als Abschlußstatus behandelt wird.
6: Buffer Error BUFE. Dieser Wert gibt an, daß während eines OUT Daten vom USB schneller empfangen wurden, als sie in den Speicher geschrieben werden können. Während eines IN wurden Daten nicht schnell genug aus dem Speicher ausgelesen, um mit der USB-Datenrate mit zuhalten. An diesem Endpunkt wird eine Wiederholung erwartet.
7: Input Wait IWT. Dieser Wert gibt an, daß der Puffer vom Endpunkt-Controller gehalten wird und darauf wartet, ein Senden bei der nächsten Gelegenheit zu versuchen oder erneut zu versuchen. Dies tritt im Fall einer fehlenden Bestätigung auf.
8: Input Complete ICMB. Dieser Wert gibt einen erfolgreichen Abschluß dieser Eingangsoperation an. Der Puffer kann freigegeben werden.
9: Output Complete OCMB. Dieser Wert gibt an, daß der Puffer mit Daten gefüllt ist und kein Fehler erfaßt wurde.
10: Token Error TKNE. Dieser Wert gibt an, daß ein Token des falschen Typs für den momentanen Kontext dieses Steuer- Endpunktkanals empfangen wurde. Falls es sich um einen Ausgangspuffer handelte, wird der Endpunkt angehalten. Falls es sich um einen Eingangspuffer handelte, wird eine NAK geschickt und der Zustand des anderen Steuerworts wird untersucht. Dies wird als ein Abschlußzustand angesehen.
11: Isochronous Synchronization Error SYNE. Dieser Wert gibt an, daß im Puffer mit TE = 1 und TI = 1 Daten empfangen wurden, daß jedoch der CWP nicht gleich dem LSB des FNR war. Dies wird als Abschlußzustand angesehen.
12: Data Error DATE. Für OUT-Daten, wenn CW.BR nicht gesetzt ist und die Datenmenge, die vom Host empfangen wurde, gerin ger als erwartet war, oder wenn der zugewiesene Puffer nicht groß genug war, um die OUT-Daten zu speichern. Für IN-Daten wird dies gesetzt, falls ein Pufferungsfehler auftrat und CW.TE nicht gesetzt war oder CW.TI gesetzt war. Dies wird als Abschlußzustand angesehen.
13: (Reserviert).
14: Halt. Dies bewirkt, daß der momentane Endpunktkanal in seinen HALT-Zustand eintritt, oder es gibt an, daß der Endpunkt in den HALT-Zustand eingetreten ist.
15: Disable. Bewirkt, daß der momentane Endpunktkanal in seinen DISABLE-Zustand eintritt, oder gibt an, daß der Endpunkt in den DISABLE-Zustand eingetreten ist.
1: Input Ready IRDY. Dieser Wert gibt an, daß in den Puffer Daten geschrieben worden sind, die als Antwort auf ein IN- Token gesendet werden sollen.
2: Output Ready ORDY. Dieser Wert gibt an, daß der Puffer zum Schreiben vorgesehen ist.
3: SETUP Ready SRDY. Dieser Wert gibt an, daß der Puffer zum Schreiben vorgesehen worden ist. Dies wird nur an einem Steuerendpunkt während der ersten Übertragung von Steuerlese- und Steuerschreib-Operationen verwendet. Geschrieben wird nur in das Steuerwort 0.
4: Output Wait OWT. Dieser Wert gibt an, daß während des Empfangs von OUT-Daten vom Host ein Fehler aufgetreten ist. Dies enthält die Erfassung eines Bitverstopfungsfehlers. Es wird eine Wiederholung erwartet, da dies als Zwischenstatus angesehen wird, es sei denn, es handelt sich um einen isochronen OUT-Endpunkt, wo der Status als Abschlußstatus behandelt wird.
5: CRC Error CRCE. Dieser Wert gibt an, daß am Ende einer OUT-Transaktion ein fehlerhafter CRC erfaßt wurde. Es wird eine Wiederholung erwartet, da der Status als Zwischenstatus angesehen wird, es sei denn, es handelt sich um einen isochronen OUT-Endpunkt, wo der Status als Abschlußstatus behandelt wird.
6: Buffer Error BUFE. Dieser Wert gibt an, daß während eines OUT Daten vom USB schneller empfangen wurden, als sie in den Speicher geschrieben werden können. Während eines IN wurden Daten nicht schnell genug aus dem Speicher ausgelesen, um mit der USB-Datenrate mit zuhalten. An diesem Endpunkt wird eine Wiederholung erwartet.
7: Input Wait IWT. Dieser Wert gibt an, daß der Puffer vom Endpunkt-Controller gehalten wird und darauf wartet, ein Senden bei der nächsten Gelegenheit zu versuchen oder erneut zu versuchen. Dies tritt im Fall einer fehlenden Bestätigung auf.
8: Input Complete ICMB. Dieser Wert gibt einen erfolgreichen Abschluß dieser Eingangsoperation an. Der Puffer kann freigegeben werden.
9: Output Complete OCMB. Dieser Wert gibt an, daß der Puffer mit Daten gefüllt ist und kein Fehler erfaßt wurde.
10: Token Error TKNE. Dieser Wert gibt an, daß ein Token des falschen Typs für den momentanen Kontext dieses Steuer- Endpunktkanals empfangen wurde. Falls es sich um einen Ausgangspuffer handelte, wird der Endpunkt angehalten. Falls es sich um einen Eingangspuffer handelte, wird eine NAK geschickt und der Zustand des anderen Steuerworts wird untersucht. Dies wird als ein Abschlußzustand angesehen.
11: Isochronous Synchronization Error SYNE. Dieser Wert gibt an, daß im Puffer mit TE = 1 und TI = 1 Daten empfangen wurden, daß jedoch der CWP nicht gleich dem LSB des FNR war. Dies wird als Abschlußzustand angesehen.
12: Data Error DATE. Für OUT-Daten, wenn CW.BR nicht gesetzt ist und die Datenmenge, die vom Host empfangen wurde, gerin ger als erwartet war, oder wenn der zugewiesene Puffer nicht groß genug war, um die OUT-Daten zu speichern. Für IN-Daten wird dies gesetzt, falls ein Pufferungsfehler auftrat und CW.TE nicht gesetzt war oder CW.TI gesetzt war. Dies wird als Abschlußzustand angesehen.
13: (Reserviert).
14: Halt. Dies bewirkt, daß der momentane Endpunktkanal in seinen HALT-Zustand eintritt, oder es gibt an, daß der Endpunkt in den HALT-Zustand eingetreten ist.
15: Disable. Bewirkt, daß der momentane Endpunktkanal in seinen DISABLE-Zustand eintritt, oder gibt an, daß der Endpunkt in den DISABLE-Zustand eingetreten ist.
In einer zweckmäßigen Ausführung kann ein Endpunkt die
folgenden Zustände haben. Um die Operation und die Steuerung
aufrechtzuerhalten, behält jeder Endpunktkanal einen Zustand
mit wohldefinierten Bedingungen für die Übertragung zwischen
den Zuständen, die eine implizite Hardware/Software-Synchro
nisation umfassen, bei. Die Endpunktkanal-Zustandsübergänge
treten auf:
- - bei expliziten Software-Befehlen an einen Endpunkt über das Endpunkt-Befehlsregister ECR;
- - durch Lesen des Pufferstatus des anderen Puffers im anderen Steuerwort für diesen Endpunkt am Ende einer Über tragung; und
- - als Ergebnis von Ereignissen auf dem USB wie etwa ein Empfang von IN-, OUT- und SETUP-Tokens sowie ACK-Quittierun gen.
Fig. 4 zeigt die vereinfachte Endpunktkanal-Zustandsmaschine
zur Handhabung von IN- und OUT-Transaktionen. Die Handhabung
von Steuerlese- und Steuerschreib-Transaktionen erfolgt in
ähnlicher Weise.
Der momentane Endpunktkanal-Zustand ist im Endpunkt-Zu
standsregister sichtbar, auf das über den USB-Index und über
Datenregister zugegriffen werden kann. In einer zweckmäßigen
Ausführung ist höchstens ein Endpunktkanal zu irgendeinem
gegebenen Zeitpunkt in einem der aktiven Zustände. Dadurch
kann die Aktivzustandslogik von sämtlichen Endpunktkanälen
gemeinsam genutzt werden.
Ein Endpunktkanal kann, wie in Fig. 4 gezeigt ist, die
folgenden Zustände haben:
Disable. In den DISABLE-Zustand wird bei einem Zurücksetzen,
bei einem Disable-Befehl für diesen Endpunktkanal sowie bei
der Erfassung eines Disable-Zustands im Pufferzustand eines
Steuerworts eingetreten. Irgendein Token, das von diesem
Endpunktkanal empfangen wird, wenn er in diesem Zustand ist,
wird ohne Quittierung zurückgeschickt. Es ist ein Software-
Eingriff erforderlich, um den Endpunktkanal aus diesem
Zustand zu entfernen, typischerweise über einen Enable-Befehl
in einen der Idle-Zustände.
Halt. In den HALT-Zustand wird eingetreten bei dem Stall-
Befehl für diesen Endpunktkanal, bei Erfassung eines Stall-
Zustands im Pufferzustand eines Steuerworts und bei bestimm
ten Fehlerbedingungen. Für irgendein Token, das von diesem
Endpunktkanal empfangen wird, wenn er sich in diesem Zustand
befindet, wird eine Stall-Quittierung zurückgeschickt, um
anzugeben, daß der Endpunkt momentan blockiert ist. Es ist
ein Software-Eingriff erforderlich, um den Endpunktkanal aus
diesem Zustand zu entfernen, typischerweise über einen
Enable-Befehl für einen der Leerlaufzustände.
Input Idle I_IDL. In diesem Zustand erwartet der Endpunkt,
daß der Puffer bald zugewiesen wird. Eine NAK-Quittierung
wird als Antwort auf ein IN-Token, das auf diesen Endpunkt
kanal abgebildet wird, zurückgeschickt. Für OUT-Tokens wird
keine Antwort von diesem Endpunktkanal zurückgeschickt.
Input Ready I_RDY. In diesen Zustand wird über einen Input-
Ready-Befehl für diesen Endpunktkanal oder bei Erfassung
eines weiteren Input-Puffers am Ende einer Übertragung
eingetreten. Der Befehl sollte nur gegeben werden, nachdem
ein Puffer diesem Endpunkt zugewiesen worden ist, indem das
Steuerwort an den entsprechenden Platz in der Endpunktmatrix
geschrieben wird. Dieses Steuerwort sollte auf einen Daten
puffer zeigen, um Daten an den Host als Antwort auf das
nächste von diesem Endpunktkanal empfangene IN-Token zurück
zuschicken. Der PID-Wert wird als DATA0, wenn CWP 0 ist, und
als DATA1, wenn CWP 1 ist, gesendet.
Input Active I_ACT. In diesen Zustand wird bei Empfang eines
IN-Token eingetreten, wenn der gewählte Endpunktzustand
momentan der Input-Ready-Zustand ist. Während dieses Zustands
werden Daten vom Speicher an den USB übertragen. Bei Abschluß
der Datenübertragung sollte innerhalb von 16 Bitzeiten eine
ACK-Quittierung empfangen werden. Falls am Ende dieser
Zeitabschaltperiode ein ACK nicht empfangen wurde, wird der
Puffer-Wait-Status zurück in das Steuerwort geschrieben. Die
Adresse und der Byte-Zähler werden jedoch nicht
überschrieben, weil eine Rücksendung auftreten wird und weil
die momentanen Werte erneut verwendet werden müssen. Falls
eine ACK empfangen wird, werden der Pufferstatus zusammen mit
dem momentanen Wert der Adresse und des Byte-Zählers
geschrieben. Dann wird das andere Steuerwort in diesem
Endpunkt gelesen, um den nächsten Zustand des Endpunkts zu
bestimmen, der verwendet werden soll, wenn ein Token beim
nächsten Mal an diesen Endpunktkanal gerichtet wird. Falls
dieser Endpunkt für eine Steuerübertragung verwendet wird,
kann eine Übertragung in den Output-Ready- oder in den
Output-Idle-Zustand auftreten, um die Statusphase einer
Steuerwortübertragung abzuschließen.
Input Isochronous Ready IS_RDY. In diesen Zustand wird über
einen Input-Ready-Befehl in diesen Endpunktkanal oder bei
Erfassung eines weiteren Input-Puffers am Ende einer Über
tragung eingetreten. Der Befehl sollte nur gegeben werden,
nachdem diesem Endpunkt ein Puffer zugewiesen worden ist,
indem das Steuerwort an den geeigneten Platz in der End
punktmatrix geschrieben wird. Dieses Steuerwort sollte auf
einen Datenpuffer zeigen, wobei Daten zum Host als Antwort
auf das nächste von diesem Endpunktkanal empfangene IN-Token
zurückgeschickt werden. Der PID-Wert wird stets unabhängig
vom Wert des CWP als DATA0 gesendet.
Input Isochronous Active IS_ACT. In diesen Zustand wird bei
Empfang eines IN-Token eingetreten, wenn der gewählte End
punktzustand momentan Input Ready ist. Während dieses Zu
stands werden Daten vom Speicher an den USB übertragen. Bei
Abschluß der Datenübertragung werden der Pufferstatus zusam
men mit dem momentanen Wert der Adresse und des Byte-Zählers
am Ende der Übertragung geschrieben. Dann wird das andere
Steuerwort an diesem Endpunkt gelesen, um den nächsten
Zustand des Endpunkts zu bestimmen, der verwendet werden
soll, wenn ein Token zum nächsten Mal an diesen Endpunktkanal
gerichtet ist.
Output Idle O_IDL. In diesem Zustand erwartet der Endpunkt,
daß ein Puffer bald zugewiesen wird. Eine NAK-Quittierung
wird als Antwort auf ein OUT-Token, das auf diesen Endpunkt
abgebildet ist, zurückgeschickt. Für IN-Tokens wird an diesen
Endpunktkanal keine Antwort zurückgeschickt.
Output Ready O_RDY. In diesen Zustand wird eingetreten,
nachdem diesem Endpunktkanal ein Puffer zugewiesen worden
ist, in den Daten geschrieben werden. Dies kann über einen
Output-Ready-Befehl vom O_IDL-Zustand erfolgen, nachdem das
geeignete Wort in die Endpunktmatrix geschrieben worden ist,
oder bei Erfassung eines weiteren Output-Puffers am Ende
einer Übertragung.
Output Active O_ACT. In diesen Zustand wird bei Empfang eines
OUT-Token eingetreten. Während dieses Zustands werden Daten
vom USB in den Speicher geschrieben. Am Ende einer
Ausgangsübertragung wird der Status in das Steuerwort im CWP
geschrieben. Falls die Übertragung nicht erfolgreich war,
d. h., falls ein CRC- oder Bitverstopfungsfehler erfaßt
wurde, wird dies als Pufferstatus geschrieben. Falls die
Übertragung erfolgreich war, wird der Output-Complete-Puf
ferstatus geschrieben, wird CWP invertiert und wird das
andere Steuerwort für diesen Endpunktkanal gelesen. Der
geeignete Übergang erfolgt anhand des Pufferzustands. Falls
dieser Endpunkt für eine Steuerübertragung verwendet wird,
kann eine Übertragung in den Input-Ready- oder in den Input-
Idle-Zustand erfolgen, um die Statusphase einer Steuerwort
übertragung abzuschließen.
Output Isochronous Idle OS_IDL. In diesem Zustand erwartet
der Endpunkt, daß ein Puffer bald zugewiesen wird. Als
Antwort auf ein OUT-Token, das auf diesen Endpunktkanal
abgebildet ist, wird keine Quittierung zurückgeschickt. An
diesem Endpunktkanal werden für IN-Tokens keine Daten oder
Quittierungen zurückgeschickt.
Output Isochronous Ready OS_RDY. In diesen Zustand wird
eingetreten, nachdem diesem Endpunktkanal ein Puffer zuge
wiesen worden ist, in den Daten geschrieben werden. Dies kann
über einen OS_RDY-Befehl vom OS_IDL-Zustand folgen, nachdem
das geeignete Wort in die Endpunktmatrix geschrieben worden
ist, oder bei Erfassung eines weiteren Output-Puffers am Ende
einer Übertragung.
Output Isochronous Active OS_ACT. In diesen Zustand wird
eingetreten bei Empfang eines OUT-Token vom OS_RDY-Zustand.
Während dieses Zustands werden Daten vom USB in den Speicher
geschrieben. Am Ende einer Ausgabeübertragung wird der Status
in das Steuerwort bei CWP geschrieben. Falls die Übertragung
nicht erfolgreich war, d. h. falls ein CRC- oder ein
Bitverstopfungsfehler erfaßt wurde, wird dies als Puf
ferstatus geschrieben. Falls die Übertragung erfolgreich war,
wird der Ausgabeabschluß-Pufferstatus geschrieben. Am Ende
der Statusübertragung wird CWP invertiert und wird das andere
Steuerwort für diesen Endpunktkanal gelesen. Der geeignete
Übergang erfolgt anhand des Pufferzustands.
Setup Ready S_RDY. In diesen Zustand wird eingetreten,
nachdem diesem Endpunktkanal ein Puffer zugewiesen worden
ist, in den Daten geschrieben werden. In diesen Zustand wird
durch einen Setup-Ready-Befehl eingetreten, nachdem das
geeignete Wort in die Endpunktmatrix geschrieben wird, oder
bei Erfassung des Setup-Ready-Pufferzustands.
Setup Active S_ACT. In diesen Zustand wird aus dem Setup-
Ready-Zustand eingetreten bei Empfang eines SETUP-Token.
Während dieses Zustands werden Daten vom USB in den Speicher
geschrieben. Am Ende einer Ausgangsübertragung wird der
Status in das Steuerwort bei CWP geschrieben, wird CWP
invertiert und wird das andere Steuerwort für diesen End
punktkanal gelesen. Der geeignete Übergang erfolgt in Abhän
gigkeit vom Typ der Steuerübertragung und des gelesenen
Pufferzustands anhand des Pufferzustands in den Output-Idle-,
Output-Ready-, Input-Idle- oder Input-Ready-Zustand.
Nach dem Zurücksetzen sind sämtliche Endpunkte gesperrt. Ein
Endpunkt wird freigegeben, indem in einen Endpunkt ein
Freigabebefehl eingegeben wird. Dies sollte nur geschehen,
wenn Eingangs- und/oder Ausgangspuffer bald diesem Endpunkt
zugewiesen werden. Sämtliche Endpunkte, die momentan nicht
auf einen Endpunktkanal abgebildet sind, werden als gesperrt
angesehen.
Eine Software weist die Puffer an Endpunktkanäle je nach
Bedarf zu. Nachdem jeder Puffer zugewiesen ist, führt er den
Input- oder Output-Ready-Befehl am Endpunktkanal aus. Falls
der Endpunktkanal momentan im Leerlaufzustand ist, tritt er
in den geeigneten Ready-Zustand ein. Falls der Endpunktkanal
momentan in einem Ready- oder Active-Zustand ist, ignoriert
er sämtliche Befehle mit Ausnahme des Disable- und des Stall-
Befehls in den Endpunktkanal, die er sofort verarbeitet.
Dieses Schreiben muß durch Software geschehen, um mögliche
Synchronisationsprobleme zu vermeiden, da die UNIM-
Endpunktkanal-Verarbeitung in bezug auf Software-Operationen
asynchron ist.
Da jedem Endpunkt bis zu zwei Puffer zugewiesen werden
können, kann der nächste Puffer vorbereitet werden, während
der momentane verarbeitet wird, um die Datenübertragung zu
beschleunigen und um unnötige NAK-Quittierungen zu vermeiden.
Claims (20)
1. Vorrichtung zum Steuern eines vielseitigen USB-
Endpunktkanals, der einen Endpunktkanal-Zustand und einen
Endpunktkanal-Typ besitzt,
dadurch gekennzeichnet, daß
ein erstes Datenspeicherelement (110, 210, 310), das einen Zustandswert speichert, der den Endpunktkanal-Zustand angibt,
ein zweites Datenspeicherelement (120, 220, 320), das einen Endpunkt-Befehl speichert, und
eine Steuerschaltungsanordnung (130, 230, 340), die den Zustandswert von einem Wartewert, der einen Wartezustand angibt, in einen Leerlaufwert, der einen Leerlaufzustand angibt, ändert, wenn der Endpunkt-Befehl ein Freigabebefehl ist, wobei der Endpunktkanal-Typ unbestimmt ist, wenn der Zustandswert den Wartezustand angibt, und wobei der Freiga bebefehl den Endpunktkanal-Typ bestimmt, vorgesehen sind.
dadurch gekennzeichnet, daß
ein erstes Datenspeicherelement (110, 210, 310), das einen Zustandswert speichert, der den Endpunktkanal-Zustand angibt,
ein zweites Datenspeicherelement (120, 220, 320), das einen Endpunkt-Befehl speichert, und
eine Steuerschaltungsanordnung (130, 230, 340), die den Zustandswert von einem Wartewert, der einen Wartezustand angibt, in einen Leerlaufwert, der einen Leerlaufzustand angibt, ändert, wenn der Endpunkt-Befehl ein Freigabebefehl ist, wobei der Endpunktkanal-Typ unbestimmt ist, wenn der Zustandswert den Wartezustand angibt, und wobei der Freiga bebefehl den Endpunktkanal-Typ bestimmt, vorgesehen sind.
2. Vorrichtung nach Anspruch 1, dadurch gekennzeichnet,
daß
der Wartezustand entweder ein Sperrzustand oder ein
Blockierzustand ist.
3. Vorrichtung nach Anspruch 1 oder 2, dadurch
gekennzeichnet, daß
der Endpunktkanal-Typ entweder als isochroner Aus
gangskanal, als nicht-isochroner Ausgangskanal oder als
Eingangskanal bestimmt wird.
4. Vorrichtung nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß
der Freigabebefehl entweder ein Ausgangsfreigabebe
fehl, ein isochroner Ausgangsfreigabebefehl oder ein Ein
gangsfreigabebefehl ist.
5. Vorrichtung nach einem der Ansprüche 1 bis 4, dadurch
gekennzeichnet, daß
die Steuerschaltungsanordnung (130) den Zustandswert vom Leerlaufwert in einen Bereitwert ändert, der einen Bereitzustand angibt, wenn der Endpunkt-Befehl ein Bereitbe fehl ist, und
der Bereitbefehl den Endpunktkanal-Typ bestimmt.
die Steuerschaltungsanordnung (130) den Zustandswert vom Leerlaufwert in einen Bereitwert ändert, der einen Bereitzustand angibt, wenn der Endpunkt-Befehl ein Bereitbe fehl ist, und
der Bereitbefehl den Endpunktkanal-Typ bestimmt.
6. Vorrichtung nach Anspruch 5, dadurch gekennzeichnet,
daß
der Endpunktkanal-Typ entweder als isochroner Aus
gangskanal, als nicht-isochroner Ausgangskanal, als isochro
ner Eingangskanal oder als nicht-isochroner Eingangskanal
bestimmt wird.
7. Vorrichtung nach einem der Ansprüche 1 bis 6, dadurch
gekennzeichnet, daß
das mindestens eines der Datenspeicherelemente (110,
210, 310, 120, 220, 320) ein Register ist.
8. Vorrichtung zum Steuern eines vielseitigen USB-
Endpunktkanals, insbesondere nach einem der Ansprüche 1 bis
7, dadurch gekennzeichnet, daß
ein erstes Datenspeicherelement (210), das einen Zustandswert speichert, der den Endpunktkanal-Zustand angibt,
ein weiteres Datenspeicherelement (220), das einen Pufferbefehl speichert, und
eine Steuerschaltungsanordnung (230), die als Antwort auf den Pufferbefehl den Zustandswert von einem aktiven Wert, der einen aktiven Zustand (280) angibt, in einen differenten Wert, der einen anderen Zustand (290) angibt, ändert, vorgesehen sind.
ein erstes Datenspeicherelement (210), das einen Zustandswert speichert, der den Endpunktkanal-Zustand angibt,
ein weiteres Datenspeicherelement (220), das einen Pufferbefehl speichert, und
eine Steuerschaltungsanordnung (230), die als Antwort auf den Pufferbefehl den Zustandswert von einem aktiven Wert, der einen aktiven Zustand (280) angibt, in einen differenten Wert, der einen anderen Zustand (290) angibt, ändert, vorgesehen sind.
9. Vorrichtung nach Anspruch 8, dadurch gekennzeichnet,
daß
der andere Zustand (290) entweder ein Leerlaufzustand
ist, wenn der Pufferbefehl ein Pufferabschlußbefehl ist, oder
ein Bereitzustand ist, wenn der Pufferbefehl ein
Pufferbereitbefehl ist.
10. Vorrichtung nach Anspruch 8 oder 9, dadurch
gekennzeichnet, daß
die Steuerschaltungsanordnung (340) den Zustandswert von einem Wartewert, der entweder ein Halte-Wert, der einen Halte-Zustand angibt, oder ein Sperrwert, der einen gesperrten Zustand angibt, ist, zu einem Leerlaufwert ändert, der entweder ein Eingangsleerlaufwert, der einen Eingangsleerlauf-Zustand angibt, wenn der Endpunkt-Befehl ein Eingangsfreigabebefehl ist, ein isochroner Ausgangsleerlaufwert, der einen isochronen Ausgangsleerlauf- Zustand angibt, wenn der Endpunkt-Befehl ein isochroner Ausgangsfreigabebefehl ist, oder ein nicht-isochroner Ausgangsleerlaufwert ist, der einen nicht-isochronen Leerlaufzustand angibt, wenn der Endpunkt-Befehl ein nicht isochroner Ausgangsleerlaufbefehl ist,
die Steuerschaltungsanordnung (340) den Zustandswert vom Eingangsleerlaufwert zu einem isochronen Eingang-Bereit- Wert ändert, der einen isochronen Eingang-Bereit-Zustand angibt, wenn der Endpunkt-Befehl ein isochroner Eingang- Bereit-Befehl ist, vom Eingangsleerlaufwert zur einem nicht isochronen Eingang-Bereit-Wert ändert, der einen nicht-iso chronen Eingang-Bereitzustand angibt, wenn der Endpunkt- Befehl ein nicht-isochroner Eingang-Bereit-Befehl ist, vom isochronen Ausgangsleerlaufwert zu einem isochronen Ausgang- Bereit-Wert ändert, der einen isochronen Ausgang-Bereit- Zustand angibt, wenn der Endpunkt-Befehl ein isochroner Ausgang-Bereit-Befehl ist, und vom nicht-isochronen Aus gangsleerlaufwert zu einem nicht-isochronen Ausgang-Bereit- Wert ändert, der einen nicht-isochronen Ausgang-Bereit- Zustand angibt, wenn der Endpunkt-Befehl ein nicht-isochroner Ausgang-Bereit-Befehl ist,
die Steuerschaltungsanordnung (340) den Zustandswert von einem isochronen Eingang-Aktiv-Wert, der einen isochronen Eingang-Aktiv-Zustand angibt, zu einem Eingangsleerlauf zustand ändert, wenn der Pufferbefehl ein Eingangspufferab schluß-Befehl ist, vom isochronen Eingang-Aktiv-Wert zum isochronen Bereit-Wert ändert, wenn der Pufferbefehl ein Eingang-Bereit-Befehl ist, von einem nicht-isochronen Ein gang-Aktiv-Wert, der einen nicht-isochronen Eingang-Aktiv- Zustand angibt, zum Eingangsleerlaufwert ändert, wenn der Pufferbefehl der Eingangspufferabschluß-Befehl ist, von dem nicht-isochronen Eingang-Aktiv-Wert zu dem nicht-isochronen Eingang-Bereit-Wert ändert, wenn der Pufferbefehl der Ein gangspufferbereit-Befehl ist, von einem isochronen Ausgang- Aktiv-Wert, der einen isochronen Ausgang-Aktiv-Zustand angibt, zum isochronen Ausgangsleerlaufwert ändert, wenn der Pufferbefehl ein Ausgangspufferabschluß-Befehl ist, vom isochronen Ausgang-Aktiv-Wert zum isochronen Ausgang-Bereit- Wert ändert, wenn der Pufferbefehl ein Ausgangspufferbereit- Befehl ist, von einem nicht-isochronen Ausgang-Aktiv-Wert, der einen nicht-isochronen Ausgang-Aktiv-Zustand angibt, zu dem nicht-isochronen Ausgangsleerlauf-Zustand ändert, wenn der Pufferbefehl der Ausgangspufferabschluß-Befehl ist, und vom nicht-isochronen Ausgang-Aktiv-Wert zu dem nicht isochronen Ausgang-Bereit-Wert ändert, wenn der Pufferbefehl der Ausgangspuffer-Bereit-Befehl ist,
der Endpunktkanal-Typ unbestimmt ist, wenn der Zustandswert der Wartewert ist und
der Endpunktkanal-Typ ein Eingangskanal ist, wenn der Endpunkt-Befehl der Eingangsfreigabebefehl ist, ein isochroner Ausgangskanal ist, wenn der Endpunkt-Befehl der isochrone Augangsfreigabebefehl ist, ein nicht-isochroner Ausgangskanal ist, wenn der Endpunkt-Befehl der nicht-iso chrone Ausgangsfreigabebefehl ist, ein isochroner Ein gangsbefehl ist, wenn der Endpunkt-Befehl der isochrone Eingang-Bereit-Befehl ist, und ein nicht-isochroner Ein gangskanal ist, wenn der Endpunkt-Befehl der nicht-isochrone Eingang-Bereit-Befehl ist.
die Steuerschaltungsanordnung (340) den Zustandswert von einem Wartewert, der entweder ein Halte-Wert, der einen Halte-Zustand angibt, oder ein Sperrwert, der einen gesperrten Zustand angibt, ist, zu einem Leerlaufwert ändert, der entweder ein Eingangsleerlaufwert, der einen Eingangsleerlauf-Zustand angibt, wenn der Endpunkt-Befehl ein Eingangsfreigabebefehl ist, ein isochroner Ausgangsleerlaufwert, der einen isochronen Ausgangsleerlauf- Zustand angibt, wenn der Endpunkt-Befehl ein isochroner Ausgangsfreigabebefehl ist, oder ein nicht-isochroner Ausgangsleerlaufwert ist, der einen nicht-isochronen Leerlaufzustand angibt, wenn der Endpunkt-Befehl ein nicht isochroner Ausgangsleerlaufbefehl ist,
die Steuerschaltungsanordnung (340) den Zustandswert vom Eingangsleerlaufwert zu einem isochronen Eingang-Bereit- Wert ändert, der einen isochronen Eingang-Bereit-Zustand angibt, wenn der Endpunkt-Befehl ein isochroner Eingang- Bereit-Befehl ist, vom Eingangsleerlaufwert zur einem nicht isochronen Eingang-Bereit-Wert ändert, der einen nicht-iso chronen Eingang-Bereitzustand angibt, wenn der Endpunkt- Befehl ein nicht-isochroner Eingang-Bereit-Befehl ist, vom isochronen Ausgangsleerlaufwert zu einem isochronen Ausgang- Bereit-Wert ändert, der einen isochronen Ausgang-Bereit- Zustand angibt, wenn der Endpunkt-Befehl ein isochroner Ausgang-Bereit-Befehl ist, und vom nicht-isochronen Aus gangsleerlaufwert zu einem nicht-isochronen Ausgang-Bereit- Wert ändert, der einen nicht-isochronen Ausgang-Bereit- Zustand angibt, wenn der Endpunkt-Befehl ein nicht-isochroner Ausgang-Bereit-Befehl ist,
die Steuerschaltungsanordnung (340) den Zustandswert von einem isochronen Eingang-Aktiv-Wert, der einen isochronen Eingang-Aktiv-Zustand angibt, zu einem Eingangsleerlauf zustand ändert, wenn der Pufferbefehl ein Eingangspufferab schluß-Befehl ist, vom isochronen Eingang-Aktiv-Wert zum isochronen Bereit-Wert ändert, wenn der Pufferbefehl ein Eingang-Bereit-Befehl ist, von einem nicht-isochronen Ein gang-Aktiv-Wert, der einen nicht-isochronen Eingang-Aktiv- Zustand angibt, zum Eingangsleerlaufwert ändert, wenn der Pufferbefehl der Eingangspufferabschluß-Befehl ist, von dem nicht-isochronen Eingang-Aktiv-Wert zu dem nicht-isochronen Eingang-Bereit-Wert ändert, wenn der Pufferbefehl der Ein gangspufferbereit-Befehl ist, von einem isochronen Ausgang- Aktiv-Wert, der einen isochronen Ausgang-Aktiv-Zustand angibt, zum isochronen Ausgangsleerlaufwert ändert, wenn der Pufferbefehl ein Ausgangspufferabschluß-Befehl ist, vom isochronen Ausgang-Aktiv-Wert zum isochronen Ausgang-Bereit- Wert ändert, wenn der Pufferbefehl ein Ausgangspufferbereit- Befehl ist, von einem nicht-isochronen Ausgang-Aktiv-Wert, der einen nicht-isochronen Ausgang-Aktiv-Zustand angibt, zu dem nicht-isochronen Ausgangsleerlauf-Zustand ändert, wenn der Pufferbefehl der Ausgangspufferabschluß-Befehl ist, und vom nicht-isochronen Ausgang-Aktiv-Wert zu dem nicht isochronen Ausgang-Bereit-Wert ändert, wenn der Pufferbefehl der Ausgangspuffer-Bereit-Befehl ist,
der Endpunktkanal-Typ unbestimmt ist, wenn der Zustandswert der Wartewert ist und
der Endpunktkanal-Typ ein Eingangskanal ist, wenn der Endpunkt-Befehl der Eingangsfreigabebefehl ist, ein isochroner Ausgangskanal ist, wenn der Endpunkt-Befehl der isochrone Augangsfreigabebefehl ist, ein nicht-isochroner Ausgangskanal ist, wenn der Endpunkt-Befehl der nicht-iso chrone Ausgangsfreigabebefehl ist, ein isochroner Ein gangsbefehl ist, wenn der Endpunkt-Befehl der isochrone Eingang-Bereit-Befehl ist, und ein nicht-isochroner Ein gangskanal ist, wenn der Endpunkt-Befehl der nicht-isochrone Eingang-Bereit-Befehl ist.
11. Verfahren zum Steuern eines vielseitigen USB-End
punktkanals, der einen Endpunktkanal-Zustand und einen
Endpunktkanal-Typ enthält,
gekennzeichnet durch die folgenden Schritte:
Beibehalten des Endpunktkanal-Zustands in einem Wartezustand (350), wobei der Endpunktkanal-Typ unbestimmt ist, und
Ändern des Endpunktkanal-Zustands vom Wartezustand (350) in einen Leerlaufzustand (360) als Antwort auf einen Freigabebefehl, wobei der Freigabebefehl den Endpunktkanal- Typ bestimmt.
gekennzeichnet durch die folgenden Schritte:
Beibehalten des Endpunktkanal-Zustands in einem Wartezustand (350), wobei der Endpunktkanal-Typ unbestimmt ist, und
Ändern des Endpunktkanal-Zustands vom Wartezustand (350) in einen Leerlaufzustand (360) als Antwort auf einen Freigabebefehl, wobei der Freigabebefehl den Endpunktkanal- Typ bestimmt.
12. Verfahren nach Anspruch 11, dadurch gekennzeichnet,
daß
der Wartezustand (350) entweder ein Sperr-Zustand
oder ein Halte-Zustand ist.
13. Verfahren nach Anspruch 11 oder 12, dadurch
gekennzeichnet, daß
der Endpunktkanal-Typ in der Weise bestimmt wird, daß
er entweder ein isochroner Ausgangskanal, ein nicht-iso
chroner Ausgangskanal oder ein Eingangskanal ist.
14. Verfahren nach einem der Ansprüche 11 bis 13, dadurch
gekennzeichnet, daß
der Freigabebefehl als Ausgangsfreigabebefehl, als
isochroner Ausgangsfreigabebefehl oder als Eingangsfreigabe
befehl gewählt wird.
15. Verfahren nach einem der Ansprüche 11 bis 14,
gekennzeichnet durch den folgenden Schritt:
Ändern des Endpunktkanal-Zustands vom Leerlaufzustand (360) zu einem Bereitzustand (370) als Antwort auf einen Bereit-Befehl, wobei der Bereit-Befehl den Endpunktkanal-Typ bestimmt.
Ändern des Endpunktkanal-Zustands vom Leerlaufzustand (360) zu einem Bereitzustand (370) als Antwort auf einen Bereit-Befehl, wobei der Bereit-Befehl den Endpunktkanal-Typ bestimmt.
16. Verfahren nach Anspruch 15, dadurch gekennzeichnet,
daß
der Endpunktkanal-Typ in der Weise bestimmt wird, daß
er entweder ein isochroner Ausgangskanal, ein nicht
isochroner Ausgangskanal, ein isochroner Eingangskanal oder
ein nicht isochroner Eingangskanal ist.
17. Verfahren nach Anspruch 15 oder 16, dadurch
gekennzeichnet, daß
der Bereit-Befehl von einem Register erhalten wird.
18. Verfahren nach einem der Ansprüche 11 bis 17, dadurch
gekennzeichnet, daß
der Freigabebefehl von einem Register erhalten wird.
19. Verfahren zum Steuern eines USB-Endpunktkanals,
insbesondere nach einem der Ansprüche 11 bis 18,
gekennzeichnet durch die folgenden Schritte:
Lesen eines Pufferbefehls von einem Datenspeicher element, wenn der Endpunktzustand ein aktiver Zustand ist, und
Ändern des Endpunktkanal-Zustands vom aktiven Zustand zu einem anderen Zustand als Antwort auf den Pufferbefehl.
Lesen eines Pufferbefehls von einem Datenspeicher element, wenn der Endpunktzustand ein aktiver Zustand ist, und
Ändern des Endpunktkanal-Zustands vom aktiven Zustand zu einem anderen Zustand als Antwort auf den Pufferbefehl.
20. Verfahren nach Anspruch 19, dadurch gekennzeichnet,
daß
der andere Zustand entweder ein Leerlaufzustand ist,
wenn der Pufferbefehl ein Pufferabschluß-Befehl ist, oder ein
Bereit-Zustand ist, wenn der Pufferbefehl ein Pufferbereit-
Befehl ist.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/003,963 US6070208A (en) | 1998-01-07 | 1998-01-07 | Apparatus and method for implementing a versatile USB endpoint pipe |
US09/003963 | 1998-01-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE19900251A1 true DE19900251A1 (de) | 1999-07-08 |
DE19900251B4 DE19900251B4 (de) | 2005-07-28 |
Family
ID=21708426
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19900251A Expired - Fee Related DE19900251B4 (de) | 1998-01-07 | 1999-01-07 | Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals |
Country Status (3)
Country | Link |
---|---|
US (1) | US6070208A (de) |
KR (1) | KR100290728B1 (de) |
DE (1) | DE19900251B4 (de) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6175770B1 (en) * | 1997-12-31 | 2001-01-16 | Dana Corporation | Electronic controller having automatic self-configuration capabilities |
KR100290729B1 (ko) | 1998-01-07 | 2001-05-15 | 클라크 3세 존 엠. | 유에스비 등시 데이타를 전송 및 수신하는 장치 및 방법 |
JPH11308509A (ja) * | 1998-04-17 | 1999-11-05 | Minolta Co Ltd | デジタルカメラシステム及びこのシステムに用いられる記録媒体 |
US6266715B1 (en) * | 1998-06-01 | 2001-07-24 | Advanced Micro Devices, Inc. | Universal serial bus controller with a direct memory access mode |
US20030167347A1 (en) * | 2002-02-11 | 2003-09-04 | Combs James Lee | Home network printer adapter |
JP4183429B2 (ja) * | 2002-03-20 | 2008-11-19 | 三洋電機株式会社 | データ転送システム |
JP3636157B2 (ja) * | 2002-04-19 | 2005-04-06 | セイコーエプソン株式会社 | データ転送制御装置、電子機器及びデータ転送制御方法 |
US6745264B1 (en) * | 2002-07-15 | 2004-06-01 | Cypress Semiconductor Corp. | Method and apparatus for configuring an interface controller wherein ping pong FIFO segments stores isochronous data and a single circular FIFO stores non-isochronous data |
US7222201B2 (en) * | 2003-01-06 | 2007-05-22 | Plx Technology, Inc. | Virtual endpoint for USB devices |
US7823133B2 (en) * | 2003-04-23 | 2010-10-26 | Stmicroelectronics, Inc. | Smart card device and method for debug and software development |
US7044390B2 (en) * | 2003-06-02 | 2006-05-16 | Stmicroelectronics, Inc. | Smart card emulator and related methods using buffering interface |
US7127649B2 (en) * | 2003-06-09 | 2006-10-24 | Stmicroelectronics, Inc. | Smartcard test system and related methods |
CN1302382C (zh) * | 2003-06-13 | 2007-02-28 | 联想(北京)有限公司 | 基于usb闪存盘存储介质私有空间的验证方法 |
US7526590B2 (en) * | 2006-03-31 | 2009-04-28 | Intel Corporation | Systems and methods for remote pipe resource management in wireless adapters |
US10908671B2 (en) * | 2016-09-30 | 2021-02-02 | Maxim Integrated Products, Inc. | Method and apparatus for disabling high speed bus operation under high common mode voltage conditions |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4979167A (en) * | 1988-12-02 | 1990-12-18 | Advanced Micro Devices, Inc. | Methods and apparatus for performing restricted token operations on an FDDI network |
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 |
US5848293A (en) * | 1995-11-03 | 1998-12-08 | Sun Microsystems, Inc. | Method and apparatus for transmission and processing of virtual commands |
US5729721A (en) * | 1995-11-13 | 1998-03-17 | Motorola, Inc. | Timebase synchronization in separate integrated circuits or separate modules |
US5774680A (en) * | 1995-12-11 | 1998-06-30 | Compaq Computer Corporation | Interfacing direct memory access devices to a non-ISA bus |
US5835791A (en) * | 1996-03-26 | 1998-11-10 | Vlsi Technology, Inc. | Versatile connection of a first keyboard/mouse interface and a second keyboard/mouse interface to a host computer |
US5841471A (en) * | 1996-09-12 | 1998-11-24 | Eastman Kodak Company | Timing control for a digitally interfaced camera using variable line readout intervals |
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 |
US5974486A (en) * | 1997-08-12 | 1999-10-26 | Atmel Corporation | Universal serial bus device controller comprising a FIFO associated with a plurality of endpoints and a memory for storing an identifier of a current endpoint |
-
1998
- 1998-01-07 US US09/003,963 patent/US6070208A/en not_active Expired - Lifetime
-
1999
- 1999-01-07 DE DE19900251A patent/DE19900251B4/de not_active Expired - Fee Related
- 1999-01-07 KR KR1019990000141A patent/KR100290728B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
KR19990067762A (ko) | 1999-08-25 |
US6070208A (en) | 2000-05-30 |
DE19900251B4 (de) | 2005-07-28 |
KR100290728B1 (ko) | 2001-05-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE19900245B4 (de) | Vorrichtung und Verfahren zum Senden von Daten von einem USB-Endpunkt an einen USB-Host | |
DE3204905C2 (de) | ||
DE19900331A1 (de) | Vorrichtung und Verfahren zur Implementierung eines USB-Endpunktkanals mit doppelter Pufferunterstützung | |
DE2854485C2 (de) | Datenverarbeitungsanlage | |
DE19882696B4 (de) | Speichertransaktionen auf einem Bus geringer Leitungsanzahl | |
DE69828074T2 (de) | Direkt-speicherzugriff / transaktionen auf ein bus mit niedriger pinanzahl | |
DE3152435C2 (de) | ||
DE2856483C2 (de) | ||
DE19900290B4 (de) | Verfahren zum Betreiben einer universellen seriellen Buseinrichtung und universelle serielle Buseinrichtung | |
DE3751514T2 (de) | Adressieranordnung für RAM-Puffer-Steuereinrichtung. | |
DE19900345A9 (de) | Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses | |
DE3650092T2 (de) | E/a-steuerung mit zwei funktionen. | |
DE19900345A1 (de) | Vorrichtung und Verfahren für die Bereitstellung einer Schnittstelle für eine Verbundsteuereinheit eines Universellen Seriellen Buses | |
DE2523372B2 (de) | Eingabe-ZAusgabe-Anschlußsteuereinrichtung | |
DE2854397A1 (de) | Pufferspeichereinheit fuer ein datenverarbeitungssystem | |
DE3688363T2 (de) | Unterbrechungsabwicklung in einem Multiprozessorrechnersystem. | |
DE19900369A1 (de) | Vorrichtung und Verfahren zur Ausführung einer Steuerübertragung auf einem Universal Serial Bus | |
DE19900251A1 (de) | Vorrichtung und Verfahren zum Steuern eines vielseitigen USB-Endpunktkanals | |
DE2448212A1 (de) | Asynchrone sammelleitung zur selbstbestimmten kommunikation zwischen mutterrechnergeraeten und tochtergeraeten | |
EP0006164B1 (de) | Multiprozessorsystem mit gemeinsam benutzbaren Speichern | |
DE2556624C2 (de) | Verfahren und Schaltungsanordnung zur asynchronen Datenübertragung | |
DE69214702T2 (de) | Speicherzugriff für die Datenübertragung in einer Ein-Ausgabevorrichtung | |
DE68923864T2 (de) | Anordnung zur Speicher- und Peripherie-Bausteinauswahl. | |
EP0282877B1 (de) | Verfahren und Einrichtung zur Steuerung der Fehlerkorrektur innerhalb einer Datenübertragungssteuerung bei von bewegten peripheren Speichern, insbesondere Plattenspeichern, eines Datenverarbeitungssystems gelesenen Daten | |
DE19753455C2 (de) | SCSI-Controller |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
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 |