-
TECHNISCHES
GEBIET
-
Die
vorliegende Erfindung betrifft im Allgemeinen Vorrichtungssteuereinheiten
für Vorrichtungen,
die in Verbindung mit Personalcomputern verwendet werden, und insbesondere
Vorrichtungssteuereinheiten für Vorrichtungen,
die gemäß der Definition
des universellen seriellen Busses arbeiten.
-
STAND DER
TECHNIK
-
Die
Spezifikation des universellen seriellen Busses (USB) ist eine von
der Industrie definierte Schnittstelle zum Verbinden von Peripheriegeräten mit
dem Systembus eines Personalcomputers. Der USB zeichnet sich durch
eine einzelne Schnittstelle für
eine breite Vielfalt von Peripheriegeräten, einschließlich Mäusen, Tastaturen,
Monitoren, Druckern, Massenspeicherlaufwerken, Modems, Faxgeräten und
dergleichen, aus. Dies verringert die Herstellungskosten und macht
es für
Personalcomputerbenutzer leichter, ihre Systeme zu konfigurieren.
-
Der
USB verwendet eine Busarchitektur auf Token-Basis ähnlich anderen
Bussen auf ähnlicher
Basis, wie z.B. des Token-Ring-Netzwerks. Ein USB-Hauptrechner sendet
Tokens auf dem Bus und eine USB-Vorrichtung, die einer in einem
Token enthaltenen Adresse entspricht, antwortet entweder durch Senden
von Daten zum Hauptrechner oder Annehmen von Daten vom Hauptrechner.
-
Um
die funktionale Vielseitigkeit zu verbessern, kann eine USB-Vorrichtung
mehrere logische Kanäle zur
Kommunikation mit dem Hauptrechner unterstützen. Im Sprachgebrauch der
USB-Spezifikation werden solche logischen Kanäle als "Pipe" bezeichnet.
Jede Pipe stellt einen unidirektionalen Strom von Daten zwischen
einem im Hauptrechner befindlichen Software-Client und einem innerhalb
der Vorrichtung definierten Endpunkt bereit. Funktionen, die innerhalb
der Vorrichtung implementiert werden, empfangen Daten vom Hauptrechner
an ihrem (ihren) jeweiligen Endpunkt(en) und senden Daten zum Hauptrechner
durch Schreiben in ihre(n) jeweiligen Endpunkt(e).
-
Eine
USB-Vorrichtung 10 ist schematisch in 10 gezeigt.
Daten werden über
ein Paar von differentiell angesteuerten Signalleitungen D+, D– übertragen.
Eine serielle Schnittstellenmaschine (SIE) 12 stellt eine Paketerzeugung
und -decodierung, NRZI-Umwandlung, CRC-Erzeugung und -überprüfung und
Bitfüllung,
alles gemäß der USB-Spezifikation, bereit.
Eine Steuereinheit 14 bearbeitet den Datenfluss für die verschiedenen
Transaktionen, nämlich
IN, OUT und SETUP. Wie in 11A und 11B gezeigt, umfasst eine Transaktion bis zu drei
Pakete: TOKEN, DATA und HANDSHAKE. Eine Bustransaktion beginnt damit,
dass der Hauptrechner ein Paket vom TOKEN-Typ mit einem PID-Feld,
einem Adressenfeld, das die Vorrichtung identifiziert, und einem
Endpunktfeld, das einen Kanal innerhalb der Vorrichtung identifiziert,
ausgibt. Diesem folgt ein Paket vom DATA-Typ, das in einer Richtung
von der adressierten Vorrichtung zum Hauptrechner, 11A, oder vom Hauptrechner zur adressierten Vorrichtung, 11B, fließt.
Im letzteren Fall werden die von der Vorrichtung empfangenen Daten
in einem FIFO entsprechend dem im TOKEN-Paket identifizierten Endpunkt gespeichert.
Der Empfänger
der Daten sendet dann ein HANDSHAKE-Protokoll zum Sender der Daten.
-
Mit
Rückkehr
zu 10 umfassen typische Implementierungen einer USB-Vorrichtung
eine Gruppe von n FIFOs 16, wobei ein FIFO (FIFO1 – FIFOn) für
jeden Endpunkt E1 – En,
der von der Vorrichtungssoftware 18 unterstützt wird,
zugeordnet ist. Der Intel® x8930Ax USB-Mikrosteureinheitschip
definiert beispielsweise sechs Endpunkte jeweils mit einem zugehörigen Sende-FIFO
und Empfangs-FIFO. Die Cypress CY7C634xx-Familie von Steuereinheiten
scheint zwei Vorrichtungsadressen zu unterstützen: "A" und "B". Die Vorrichtungsadresse "A" weist drei zugehörige Endpunkte auf, während die
Vorrichtung "B" zwei zugehörige Endpunkte
aufweist, wobei jeder Endpunkt einen entsprechenden FIFO aufweist.
Die Xilinx® Steuereinheit zeichnet
sich durch die Unterstützung
für drei
Endpunkte mit FIFOs auf dem Chip für jeden Endpunkt aus. Eine flexiblere
Alternative ist eine durch die CAE-Technologie bereitgestellte,
die einen Funktionskern für
FPGAs bietet. Der Funktionskern zeichnet sich durch eine vom Benutzer
definierbare Anzahl von Endpunkten und einen FIFO für jeden
Endpunkt mit einer vom Benutzer definierbaren Tiefe aus.
-
Unter
Fortsetzung mit 10 stellt die Vorrichtungssoftware 18 die
funktionalen Fähigkeiten
der Vorrichtung bereit. Jede Funktionalität kommuniziert mit ihrem zugehörigen Endpunkt
E1 – En,
der Daten über
die diesen Endpunkten entsprechenden FIFOs empfängt oder sendet. Ein spezieller
Endpunkt, der Endpunkt 0, ist für
den Zweck des Schaffens eines Zugriffs auf die Konfigurations-,
Zustands- und Steuerinformation der Vorrichtung reserviert.
-
Die
vorstehend erwähnten
Konstruktionen teilen sich die gemeinsame Eigenschaft, dass die
Anzahl von Endpunkten, die in einer Vorrichtung möglich ist,
fest ist. Dies gilt selbst für
den Funktionskern der CAE-Technologie. Obwohl der CAE-Funktionskern
eine vom Benutzer definierbare Anzahl von Endpunkten bereitstellt,
ist diese Anzahl fest, sobald die Konstruktion auf Silizium übertragen
ist.
-
Das
Erhöhen
der Anzahl von Endpunkten in einer gegebenen Konstruktion führt einen
weiteren Mangel dieser Konstruktionsmethoden herbei, die zum Unterstützen der
FIFOs verbrauchte Siliziumnutzfläche
wird nämlich
untragbar, da jeder Endpunkt einen FIFO erfordert. Dies gilt insbesondere
bei der INTEL®-Konstruktion,
bei der jeder Endpunkt zwei FIFOs zugeordnet ist, einem zum Empfangen
und dem anderen zum Senden.
-
Was
erforderlich ist, ist eine Steuereinheit, die, sobald sie entworfen
und getestet ist, in der Lage ist, eine beliebige Anzahl von Endpunkten
in einer Vorrichtung bis zu dem vom USB definierten Maximum von sechzehn
zu unterstützen.
Es ist erwünscht,
dass die Steuereinheit eine effiziente Nutzung von Silizium aufweist,
während
sie gleichzeitig leicht konfigurierbar ist, um eine beliebige Anzahl
von Endpunkten zu verwenden.
-
Ein
weiteres Merkmal von USB ist seine Unterstützung für ein Verfahren, das als Busidentifikation
bekannt ist, wobei der Hauptrechner eine Vorrichtung bei ihrer Anbringung
am Bus identifiziert und konfiguriert. Wenn die Vorrichtung vom
Hauptrechner erfasst wurde, fragt die Systemsoftware die Vorrichtung
ab, ermittelt ihre Fähigkeiten,
weist eine Vorrichtungsadresse zu und konfiguriert die Vorrichtung.
Obwohl der USB Situationen vorsieht, in denen eine Vorrichtung nicht
mehr mit dem Hauptrechner kommunizieren kann, wäre es erwünscht, dass die Vorrichtung
vollständig
neu gebootet wird, so dass der Hauptrechner die Vorrichtung rekonfigurieren
kann, als ob die Vorrichtung gerade von einem Benutzer am Hauptrechner
angebracht worden wäre.
-
US 4 979 167 offenbart eine
TOKEN-Ring-Kommunikation unter Verwendung eines FDDI-Netzwerks. Durch
eine Zustandsmaschine werden Parameter für ein eingeschränktes Token
unter Verwendung von Befehlen gesteuert, um in den eingeschränkten Modus
einzutreten und diesen zu verlassen. Datenpakete vom TOKEN-Typ werden
empfangen und eine Identifikationsadresse wird verwendet, um Daten
in einem Speicher unter der festgelegten Adresse zu speichern.
-
Es
ist eine Aufgabe der Erfindung, eine höhere Fähigkeit einer USB-Kommunikationssteuereinheit
unter Verwendung einer Vielzahl von Endpunktkonfigurationen und
ein Verfahren zum entsprechenden Betreiben einer Steuereinheit bereitzustellen.
-
Die
Erfindung ist im Anspruch 1 bzw. 12 definiert.
-
Spezielle
Ausführungsbeispiele
sind in den abhängigen
Ansprüchen
dargelegt.
-
OFFENBARUNG
DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft eine Vorrichtung, die dazu ausgelegt
ist, eine Vorrichtung gemäß der Spezifikation
des universellen seriellen Busses (USB) zu betreiben. Die Erfindung
umfasst ein Mittel zum Empfangen von Paketen von einem Hauptrechner
und einen FIFO zum Speichern von in empfangenen Paketen enthaltenen
Daten. Ein Paketsteuerspeicher identifiziert den in einem empfangenen
Paket vom TOKEN-Typ enthaltenen Endpunkt, der als aktueller Endpunkt
bezeichnet wird. Die anschließend
im FIFO gespeicherten Daten werden somit dem aktuellen Endpunkt
zugeordnet. Beim Empfang eines zweiten TOKEN-Pakets wird der im
Paket enthaltene Endpunkt zum neuen aktuellen Endpunkt. Daten, die
anschließend
im FIFO gespeichert werden, werden daher dem zweiten Endpunkt-Identifikator
zugeordnet. Unter Verwendung eines einzelnen FIFO, um zwei oder
mehr Endpunkte zu unterstützen,
wird die Siliziumfläche
minimiert.
-
In
einem alternativen Ausführungsbeispiel
wird ein zweiter FIFO bereitgestellt. Die durch die Vorrichtung
unterstützten
Endpunkte werden dem ersten FIFO oder dem zweiten FIFO zugeordnet.
Dies hat den Vorteil, dass die Verarbeitungslast der Steuereinheit
verringert wird, während
gleichzeitig das für
die Implementierung von FIFOs zugeordnete Silizium begrenzt wird.
Da die Anzahl von in der vorliegenden Erfindung verwendeten FIFOs
geringer ist als die Anzahl von unterstützten Endpunkten, kann jeder
FIFO tiefer gemacht werden als in dem Fall, in dem jeder Endpunkt
durch einen entsprechenden FIFO unterstützt wird.
-
Die
vorliegende Erfindung verwendet eine einzelne Zustandsmaschine,
um die Ablaufsteuerung aller USB-Transaktionsarten
zwischen dem Hauptrechner und der Vorrichtung zu steuern. Eine einzelne
Universal-Zustandsmaschine
ermöglicht,
dass die Endpunkte einer Vorrichtung jede Art von Datenübertragung
unterstützen,
nämlich
Steuerungs-, Masse-, Unterbrechungs- und isochrone Übertragungen.
-
Ein
weiterer Aspekt der Erfindung verbessert die Geschwindigkeit des
Betriebs der Vorrichtung. Dies wird durch Zugreifen auf den FIFO
vor der Beendung der die Daten erfordernden Transaktion erreicht.
-
Die
Vorrichtungssteuereinheit der vorliegenden Erfindung umfasst ferner
einen Hauptrechner-Verbindungsanschluss mit einem Mittel zum Simulieren
der Abtrennung und Anbringung der Vorrichtung. Dies ermöglicht,
dass eine Vorrichtung, die gesperrt wurde, die Busidentifikation
automatisch erneut einleitet, wodurch bewirkt wird, dass der Hauptrechner
die Vorrichtung rekonfiguriert, als ob sie gerade von einem Benutzer
physikalisch trennt und wieder angebracht worden wäre, ohne
dies tatsächlich
tun zu müssen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 zeigt
eine Steuereinheit gemäß der vorliegenden
Erfindung.
-
2A–2C umfassen
ein Blockdiagramm der Steuereinheit.
-
3A–3C stellen
die Registerorganisation der PCS dar.
-
4A–4I zeigen
Transaktionsdiagramme der vom USB definierten Transaktionen.
-
5A–5D sind
ein Zustandsdiagramm der Protokollzustandsmaschine.
-
6 ist
eine Schaltung zum Simulieren eines Anbringungs/Lösungs-Ereignisses.
-
7 stellt
eine typische Sequenz von Hauptrechner/Vorrichtungs-Transaktionen
dar.
-
8 zeigt
die Datensequenz einer Transaktion.
-
9 zeigt
eine Variation des bevorzugten Ausführungsbeispiels.
-
10 stellt
schematisch eine typische USB-Steuereinheit des Standes der Technik
dar.
-
11A und 11B stellen
allgemeine vom USB definierte Datenübertragungen dar.
-
BESTE ART
ZUR AUSFÜHRUNG
DER ERFINDUNG
-
Mit
Bezug auf 1 wird die USB-Steuereinheit 100 in
Computer-Peripheriegeräten
(Vorrichtungen), wie z.B. einer Maus, einer Tastatur, einem Massenspeicherlaufwerk,
einer Digitalkamera usw., verwendet, die über einen mit USB kompatiblen
Bus kommunizieren. Die Steuereinheit stellt die Synchronisation
von Transaktionen zwischen einer USB-Hauptrechnereinheit und einer Vielzahl
von für
die gegebene Vorrichtung definierten Endpunkten bereit.
-
Gemäß der Erfindung
umfasst die Steuereinheit 100 eine Protokollsteuer- und
Status-(PCS)Einheit 110, die den USB-Zustand der Vorrichtung
speichert und während
der Übertragung
von Daten eine Steuerung vorsieht. Die Übertragung von USB-Datenpaketen
wird über
eine serielle Schnittstellenmaschine (SIE) 140 durchgeführt, die
in Verbindung mit einem Datenausgabe- und Quittierungs-(DOH) Modul 150 arbeitet.
Eine Protokollzustandsmaschine (PSM) 120 stellt eine Ablaufsteuerung
einer Transaktion zwischen der Vorrichtung und dem USB-Hauptrechner
bereit, mit dem die Vorrichtung gekoppelt ist. Empfangene Daten
und zu sendende Daten sind im FIFO 130 enthalten. Die Steuereinheit 100 umfasst
eine Schnittstelle zu einer Mikrosteuereinheit, die den größten Teil
der Funktionalität
in der Vorrichtung bereitstellt.
-
Wenn
man sich nun 2A–2C zuwendet,
werden die Schnittstellen zwischen den Modulen beschrieben. Man
betrachte zuerst die serielle Schnittstellenmaschine SIE 140,
die in 2A gezeigt ist. Die SIE 140 stellt
eine Schnittstelle zwischen dem USB-Hauptrechner und der Vorrichtung
bereit. Eine Sendeempfängerschaltung
(nicht dargestellt) ist enthalten, die Daten auf Signalleitungen D+
und D– übermittelt
und Daten empfängt,
beides in Form eines differentiellen Signals. Die elektrischen Eigenschaften
des Sendeempfängers sind
durch die USB-Spezifikation
vollständig
definiert. Die Funktionen der SIE 140 umfassen die Serialisierung und
Entserialisierung von USB-Übertragungen,
die Decodierung und Codierung von Paketen vom TOKEN-Typ, die NRZI-Codierung
und -Decodierung, die CRC-Erzeugung und -Prüfung, die Bitfüllung und
die Erzeugung des SYNC-Feldes.
-
Nach
Empfang eines gültigen
Pakets aktiviert die SIE 140 die PacketOK- und PacketEnd-Signalleitungen,
um der Protokollzustandsmaschine PSM 120 den Empfang eines
gültigen
Pakets vom Hauptrechner zu signalisieren. Die SIE gewinnt dann den
PID (SOF, SETUP, IN, OUT, DATA0/1, ACK) vom empfangenen Paket und
sendet ihn zur PCS 110 über
SiePID. Ein Paket vom TOKEN-Typ besteht aus dem Folgenden: PID (4
Bits), Vorrichtungsadresse (7 Bits), Endpunktadresse (4 Bits) und
CRC (5 Bits); von dem die Vorrichtungsadresse SieAddr und die Endpunktadresse
SieEndpt gewonnen werden und zur PCS gesandt werden. Ein Paket vom DATA-Typ
besteht aus: PID, Datenbytes und CRC; aus dem die Daten gewonnen
und zur PCS mit einem Byte auf einmal über die SieData-Leitungen gesandt
werden. Verfälschte
Vorrichtungsadressen und Daten werden durch CRC-Validierung und
-prüfung
auf Bitfüllungsverletzungen
durch die USB-Spezifikation erfasst. Die Signalleitungen AddrEndpValid
und SieDataValid werden aktiviert, um jeweils eine gültige Vorrichtungsadresse und
gültige
Daten anzugeben. Die NextData-Signalleitung, die beim Stromaufwärtsübertragen
von Daten verwendet wird, gibt an, dass die SIE bereit ist, ein
weiteres Datenbyte (vom DOH 150) für die Stromaufwärtsübertragung
zu empfangen.
-
Wenn
man sich für
einen Moment 6 zuwendet, so ist ein Merkmal
der vorliegenden Erfindung in einer Darstellung der Hauptrechner-Vorrichtungs-Schnittstelle
gezeigt. Die USB- Spezifikation
sieht zwei Betriebsgeschwindigkeiten vor: niedrige Geschwindigkeit
und volle Geschwindigkeit. Ein Pull-up-Abschlusswiderstand, der
mit einer Spannungsquelle zwischen 3,0 V und 3,6 V verbunden ist,
legt die Betriebsgeschwindigkeit fest. Eine Vorrichtung mit voller
Geschwindigkeit ist durch einen Pull-up-Widerstand auf der Leitung
D+ abgeschlossen. Eine Vorrichtung mit niedriger Geschwindigkeit
ist durch einen Pull-up auf der Leitung D– abgeschlossen. Gemäß der vorliegenden
Erfindung besitzt jeder von zwei Erdungstransistoren 142 eine Drain/Source-Kopplung zwischen
den Datenleitungen D+, D– und
der Erdung. Die Erdungstransistoren 142 werden durch ihre
jeweiligen Gates durch einen Zeitgeber 144 wie z.B. einen
Zähler,
der ein LO ausgibt, bis er ausgelöst wird, durchgesteuert und
gesperrt.
-
Ein
Pull-up-Widerstand 146 mit voller Geschwindigkeit ist mit
der Leitung D+ über
einen Durchgangstransistor 145 gekoppelt und ein Pull-up-Widerstand 148 mit
niedriger Geschwindigkeit ist mit der Leitung D– über einen Durchgangstransistor 147 gekoppelt.
Ein Selektor 143 stellt sicher, dass nur einer der beiden Durchgangstransistoren
durchgesteuert wird, so dass er als Bauelement mit voller Geschwindigkeit
oder als Bauelement mit niedriger Geschwindigkeit arbeitet. 6 stellt
eine typische Konstruktion des Selektors 143 mit einem
1:2-Decodierer 141 und zwei UND-Gattern dar. Ein GESCHWINDIGKEITSAUSWAHL-Signal aktiviert
eines der zwei Ausgangssignale aus dem Decodierer 141,
um das Gate des entsprechenden Durchgangstransistors anzusteuern,
wobei somit der entsprechende Pull-up-Widerstand mit der Datenleitung
gekoppelt wird. Der Selektor 143 wird über den Zeitgeber 144 durch
Speisen des Zeitgeber-Ausgangssignals durch die UND-Gatter aktiviert
und deaktiviert.
-
Wenn
der Zeitgeber 144 ausgelöst wird, schaltet das Ausgangssignal
des Zeitgebers auf HI, um die Erdungstransistoren 142 durchzusteuern,
wobei somit die Datenleitungen D+, D– auf die Erdung gebracht werden.
Gleichzeitig wird der Selektor 143 aufgrund des LO-Eingangssignals in
seine UND-Gatter deaktiviert. Dies hat den Effekt der Trennung des
ausgewählten
Pull-up-Widerstandes
durch Sperren seines entsprechenden Durchgangstransistors. Wenn
dagegen der Zeitgeber abläuft,
kehrt das Ausgangssignal des Zeitgebers 144 auf seinen
LO-Zustand zurück, wobei
somit die Transistoren 142 gesperrt werden. Gleichzeitig
wird der Selektor 143 wiederum aktiviert, so dass der der
ausgewählten
Geschwindigkeit entsprechende Durchgangstransistor durchgesteuert
wird. Dies dient zum erneuten Verbinden des entsprechenden Pull-up-Widerstandes mit
der Datenleitung. Auf diese Weise wird das Potential auf jeder der
Datenleitungen auf seinen ursprünglichen
Pegel wiederhergestellt.
-
Wenn
der Zeitgeber 144 eingestellt ist, um eine Verzögerung von
mindestens 2,5 μs
vorzusehen, erzeugen das Durchsteuern der Erdungstransistoren 142 und
das Sperren der Durchgangstransistoren 145, 147 eine
unsymmetrische Null-(SE0)
Bedingung, die die Vorrichtungstrennbedingung ist, wie in der USB-Spezifikation
definiert. Wenn das Potential der Datenleitung (D+, D–) dadurch,
dass der Zeitgeber 144 abschaltet, wiederhergestellt wird,
tritt eine Verbindungsbedingung auf (durch USB). Die Erdungstransistoren 142 und
die Durchgangstransistoren 145, 147 sehen daher
ein Mittel vor, durch das ein automatisches Neubooten der Vorrichtung
stattfinden kann. Wenn die Vorrichtung beispielsweise sperrt, kann
ein Totmann-(Zeitüberwachungs-) Zeitgeber
in der Vorrichtung den Zeitgeber 144 auslösen, um
eine Trennungs/Verbindungs-Sequenz
einzuleiten. Beim Erfassen der Verbindungsbedingung kann der Hauptrechner
die Vorrichtung rekonfigurieren. In einer Hub-Anwendung kann dieses
Neuboot-Merkmal aktiviert werden, um zwischen einem durch den Bus
gespeisten Hub und einem selbstgespeisten Hub umzuwandeln. Das Neuboot-Merkmal würde ermöglichen,
dass die Vorrichtung die Anwendung ändert (z.B. von FAX zu Scanner
und umgekehrt). Änderungen
der Vorrichtungsdeskriptoren, wie z.B. verbrauchte Leistung, Unterbrechungsverzögerung usw.,
können
in den Hauptrechner durch das Neuboot-Merkmal "hochgeladen" werden, da eine solche Information
vom Hauptrechner nur während
einer Aufzählungssequenz
nach einer Verbindung gelesen wird.
-
Im
bevorzugten Ausführungsbeispiel
ist die in 6 gezeigte Schaltung in den
Vorrechner der SIE 140 der Steuereinheit 100 integriert.
Alternativ kann die Schaltung außerhalb des Chips vorgesehen
sein. Das GESCHWINDIGKEITSAUSWAHL-Signal kann auf eine Vielfalt
von Weisen geliefert werden: Signalisierung von der Mikrosteuereinheit,
Vorsehen von Brücken-Optionen
auf der PC-Platine, Signalisierung von der USB-Steuereinheit 100.
Wenn die Vorrichtung ursprünglich
mit einer niedrigeren Geschwindigkeit hochbootet, ermöglicht die
Schaltung von 6, dass die Vorrichtung selbst
neu bootet, so dass sie mit einer höheren Geschwindigkeit hochkommt.
Alternativ kann nur ein Pull-up-Widerstand/Durchgangstransistor-Paar
vorgesehen sein. In einem solchen Fall ist die Vorrichtungsgeschwindigkeit
entweder auf eine Vorrichtung mit voller Geschwindigkeit oder eine
Vorrichtung mit niedriger Geschwindigkeit festgelegt. Tatsächlich sind
nur die Komponenten 145, 146 in einer Hub-Konfiguration
nützlich.
Der Selektor 143 würde
dann einfach aus einem UND-Gatter bestehen, um den Zeitgeber 144 mit
dem Durchgangstransistor zu koppeln. Die Erdungstransistoren 142 wären immer noch
erforderlich, um die SE0-Bedingung vorzusehen.
-
Unter
Fortsetzung der Erörterung
der SIE-Schnittstellen wende man sich 2C zu.
Das DOH-Modul 150, das in 2C gezeigt
ist, sendet Daten zur SIE 140 unter der Steuerung der PCS 110.
Die SendPID-Signalleitung informiert das DOH, einen PID (ACK, NAK
und STALL) auszugeben, der von der PCS 110 über ResponsePID
geliefert wird. Die SendData-Signalleitung
signalisiert dem DOH, die Übertragung
von Daten vom FIFO zu beginnen. Wenn es aktiviert wird, aktiviert
SendData das DOH 150, um Daten vom FIFO 130 über die
fifoData-Leitungen zwischenzuspeichern und Daten über die
UMIData-Leitungen zur SIE 140 zu senden. Die NextData-Signalleitung arbeitet
in Verbindung mit SendData, was bewirkt, dass das DOH 150 vorher zwischengespeicherte
Daten überträgt und neue
Daten vom FIFO zwischenspeichert. Wenn Daten von der SIE 140 empfangen
werden, wird der CRC kontinuierlich berechnet. Wenn die PCS SendData
deaktiviert, aktiviert das DOH LastData, was bewirkt, dass die SIE 140 den
berechneten CRC sendet und ein EOP erzeugt. Das EndPtBusTurnaround
gibt die maximale Verzögerung
vor dem Begin einer Übertragung
zum Hauptrechner an. Diese Verzögerung
variiert in Abhängigkeit
vom aktiven Endpunkt, wie nachstehend in Verbindung mit 8 erläutert wird.
Die Signalleitung SendSYNC befiehlt der SIE, das SYNC-Feld zu senden.
Das Synchronisations- (SYNC) Feld geht allen zum Hauptrechner gesandten
Datenpaketen voran. Das DOH liefert auch ein Taktsignal StepPSM
zum Takten der PSM 120 während der Ablaufsteuerung einer
Transaktion.
-
Man
wende sich nun 2B zu. Der FIFO 130 besitzt
eine Tiefe von sechzehn Bytes und speichert eingehende und ausgehende
USB-Daten. Daten, die für
den FIFO 130 bestimmt sind, werden zuerst auf fifoWrData übertragen.
Als nächstes
wird die FIFO-Schreibadresse auf fifoWrAddr übertragen, gefolgt vom Aktivieren
der Schreibdatenleitung fifoWR. Eingehende Daten vom Hauptrechner
werden über
die PCS 110 im FIFO gespeichert, wo sie anschließend von
der Mikrosteuereinheit gelesen werden. In den FIFO kann auch durch
die Mikrosteuereinheit geschrieben werden, indem Daten auf MData übertragen
werden, die FIFO-Adresse MAddr angegeben wird und MWR aktiviert
wird.
-
Aus
dem FIFO 130 auszulesende Daten werden über fifoRdAddr adressiert und
auf die fifoData-Leitungen übertragen.
von dort werden die Daten entweder im DOH 150 für die anschließende Übertragung
durch die SIE 140 zum Hauptrechner zwischengespeichert
oder von fifoData über
die PCS 110 durch die Mikrosteuereinheit über PCSData
entnommen.
-
Die Übertragung
von Daten zwischen der PCS 110 und der Mikrosteuereinheit
geschieht über
die MData- und PCSData-Leitungen.
Auf Register innerhalb der PCS 110 wird durch Aktivieren
ihrer Adressen auf MAddr zugegriffen, wie nachstehend gezeigt wird.
Die Eingabe und Ausgabe von Daten geschieht durch Aktivieren von
MWR bzw. MRD.
-
Man
nehme nun auf die Protokollzustandsmaschine Bezug, die auch in 2B gezeigt
ist. Die PSM 120 arbeitet in Verbindung mit der PCS 110.
Die PSM sieht eine Transaktionsablaufsteuerung für alle Endpunkttypen vor: BULK,
CONTROL, INTERRUPT und ISOCHRONOUS. Während der Ablaufsteuerung einer Transaktion
für den
aktuellen Endpunkt überträgt die PCS
zur Zustandsmaschine Informationen, die mit dem Endpunkt in Beziehung
stehen, und die Zustandsmaschine antwortet durch Informieren der
PCS darüber,
was zu tun ist. Obwohl die PCS 110 die Steuersignale ausgibt,
um die Transaktion zu steuern, geht die Hauptzeitsteuerung von der
PSM 120 aus.
-
Der
PSM wird durch PacketOK und PacketEnd signalisiert, dass die SIE 140 ein
gültiges
Paket empfangen hat. Wie nachstehend erläutert wird, ermöglicht dies,
dass die PSM zum nächsten
Zustand durch das Taktsignal (StepPSM) weitergeht. Die PSM empfängt von
der PCS 110 den PID-Namen (IN, OUT, SOF, SETUP, DATA0 und
DATA1) über
PCSPID. Von der PCS werden auch empfangen: der Endpunkttyp (EndPtType: BULK,
ISOCHRONOUS, INTERRUPT und CONTROL), die Datenflussrichtung des
Endpunkts (EndPtDir), der Zustand des Datenumschaltbits für den Endpunkt
(DataToggle), eine Statusstufenangabe (StatusStage) für CONTROL-Übertragungen
und eine Paketantwort (PacketResponse). Diese Daten werden von der
PSM 120 als zustandsvariablen beim Festlegen der Ablaufsteuerung
einer Transaktion verwendet. Das Ausgangssignal der PSM 120 ist
eine Steuersignalisierung über
PSMState, die die Handlungen der PCS 110 während einer Transaktion
lenkt.
-
Die
PCS
110 sieht eine Speicherung von Informationen hinsichtlich
der mit dem USB in Beziehung stehenden Aktivitäten der Vorrichtung vor und
liefert Daten zur Mikrosteuereinheit oder einer anderen ähnlichen Steuerhardware
der Vorrichtung. Informationen, die in der PCS enthalten sind, werden
in Registern gespeichert und können
vom Hauptrechner oder von der Mikrosteuereinheit oder durch Zustandsänderungen,
während
eine Transaktion verarbeitet wird, ausgehen. Das Folgende ist eine
Liste der in der PCS enthaltenen Register, die für jedes Register angibt, ob
es durch die PCS lesbar/schreibbar ist und ob es durch die Mikrosteuereinheit
lesbar/schreibbar ist:
-
Das
Vorrichtungsadressenregister enthält die Vorrichtungsadresse
der Vorrichtung. Es wird durch die Mikrosteuereinheit während einer
Busidentifikationssequenz mit dem Hauptrechner initialisiert und
wird anschließend
zur Vorrichtungsadresse, auf die die PCS reagiert. Insbesondere überträgt der Hauptrechner
Informationen zur Mikrosteuereinheit während der Busidentifikationssequenz.
Die Mikrosteuereinheit überträgt dann
bestimmte dieser Informationen zur PCS 110, um in das Vorrichtungsadressen register
und das Register für
den globalen Zustand zu schreiben.
-
Das
Datenblocknummerregister enthält
die Datenblocknummer, die gemäß der USB-Spezifikation durch
den Hauptrechner mit einer nominalen Rate von 1,0 ms inkrementiert
wird. Beim Empfang eines Datenblockpakets lädt die PCS 110 die
im Paket enthaltene Datenblocknummer in das Datenblocknummerregister und
setzt eine Unterbrechung (EOF1, EOF2, siehe nachstehend).
-
Das
Register für
den globalen Zustand enthält
globale Informationen hinsichtlich des USB-Zustandes der Vorrichtung
und in dieses wird anfänglich
durch die Mikrosteuereinheit geschrieben. Die Informationen sind in
einer Sieben-Bit-Datenstruktur mit der folgenden Definition enthalten:
das Bit 0 gibt an, ob der Vorrichtung vom Hauptrechner eine Vorrichtungsadresse
gegeben wurde; das Bit 1 gibt an, ob die Vorrichtung konfiguriert wurde;
das Bit 2 gibt an, ob der Vorrichtung erlaubt ist, einem Hauptrechner
zu signalisieren, der in einen Leistung sparenden Unterbrechungszustand
eingetreten ist, wobei somit der Hauptrechner aufgeweckt wird (Fernaufwecken);
das Bit 3 gibt an, dass die Vorrichtung in einen Leistung sparenden
Unterbrechungszustand eingetreten ist; in das Bit 4 wird durch die
Mikrosteuereinheit geschrieben, um ein Fernaufwecken einzuleiten.
Diese Bits können
entweder von der PCS in Reaktion auf den Empfang von Befehlen vom
Hauptrechner wie z.B. während
einer Bitidentifikationssequenz oder durch die Mikrosteuereinheit
gesetzt werden.
-
In
das Paketsteuerregister wird von der PCS 110 geschrieben
und es enthält
die Informationen für
den aktuellen Endpunkt. In der Sieben-Bit-Struktur sind enthalten:
eine Endpunktadresse des aktuellen Endpunkts (Bits 2 – 0); ein
Indikator für
ein vollendetes Paket (d.h. vom Hauptrechner empfangen) (Bit 3);
und ein Paketidentifikator (PID, Bits 7 – 4). Die PIDs sind in der
USB-Spezifikation definiert und umfassen: OUT (0x1), IN (0x9), SOF
(0x5), SETUP (0xd), DATA0 (0x3), DATA1 (0xb), ACK (0x2) und PRE
(0xc). Diese Bits werden von der PCS gesetzt und von der Mikrosteuereinheit
gelesen.
-
In
das Paketantwortregister wird durch die Mikrosteuereinheit geschrieben
und es kann einen vom USB definierten Antwort-PID, nämlich NAK
(0xa) und STALL (0xe), enthalten. Außerdem kann die Mikrosteuereinheit
bestimmte interne Codes schreiben, die die PCS 110 lenken,
um bestimmte Handlungen zu unternehmen. DAVAIL (0x4) ist ein interner
Code, der der PCS angibt, dass mindestens ein Datenbyte im FIFO 130 vorhanden
ist. DACCEPT (0x6) ist ein interner Code, der der PCS angibt, dass
die Mikrosteuereinheit alle erwarteten Daten aus dem FIFO ausgelesen
hat. DEND (0x7) ist ein interner Code, der der PCS angibt, dass
die Mikrosteuereinheit das letzte Byte in den FIFO geschrieben hat
oder das letzte Byte aus dem FIFO gelesen hat.
-
Die
PCS 110 umfasst eine Unterbrechungsleitung, die verwendet
wird, um die Mikrosteuereinheit zu unterbrechen. Ein Satz von Registern
wird verwendet, um diese Unterbrechungen zu handhaben. In das Unterbrechungsregister
wird von der PCS geschrieben und es wird durch die Mikrosteuereinheit
gelesen, um die Ursache der Unterbrechung festzustellen, wenn die
Unterbrechung hervorgebracht wird. Das Bit 0 wird gesetzt, um eine
allgemeine Unterbrechung (INT) durch die PCS anzugeben. In einer
Hub-Anwendung werden die folgenden zusätzlichen Unterbrechungen verwendet:
das Bit 1 wird gesetzt, um einen Datenblockende-Zeitpunkt #1 anzugeben
(EOF1); das Bit 2 wird gesetzt, um einen Datenblockende-Zeitpunkt
#2 anzugeben (EOF2); das Bit 3 wird gesetzt, um das Auftreten eines
Starts eines Datenblocks anzugeben (SOF). In das Unterbrechungs-Ack-Register
wird durch die Mikrosteuereinheit geschrieben, um der PCS anzugeben,
dass die spezielle Unterbrechung (INTA, EOF1, EOF2, SOF) bearbeitet
wurde (d.h. die entsprechende Unterbrechungsroutine geendet hat).
Die Bits 0–3
entsprechen den Bits 0–3
des Unterbrechungsregisters. Ein zusätzliches Bit (Bit 4) ist für CONTROL-Übertragungen
definiert. Es wird durch die Mikrosteuereinheit geschrieben, um
anzugeben, dass sie bereit ist, in die STATUS-Stufe einer CONTROL-Übertragung
einzutreten. Das Unterbrechungsfreigabe-Register ist ein Maskierungsregister
zum Maskieren von einer oder mehreren der vorstehend beschriebenen
Unterbrechungsarten mit denselben entsprechenden Bits 0–3.
-
Das
Gesamtbytezählwert-Register
gibt die Anzahl von Bytes in einem vom Hauptrechner empfangenen
Paket an.
-
Das
FIFO-Adressenregister zeigt auf den nächsten Eintrag im FIFO 130 für zum Hauptrechner
zu übertragende
Daten und für
Daten, die vom Hauptrechner empfangen wurden.
-
Das
Bytezählwert-Register
gibt die Anzahl von Bytes an, die sich derzeit im FIFO befinden.
Diese Information wird durch die PCS aktualisiert. Das Register
wird jedes Mal inkrementiert, wenn ein Byte in den FIFO 130 geschrieben
wird, ob durch die PCS 110 (über die SIE 140) oder
durch die Mikrosteuereinheit. Das Register wird jedes Mal dekrementiert,
wenn ein Byte aus dem FIFO ausgelesen wird, ob durch die PCS während einer
Stromaufwärtsübertragung
oder durch die Mikrosteuereinheit.
-
Das
Transaktionsantwortregister gibt an, ob die Transaktion erfolgreich
geendet hat oder nicht.
-
Die
Endpunktsteuerregister umfassen einen Satz von Registern, die Informationen
für jeden
der von der Steuereinheit bereitgestellten Endpunkte gemäß der vorliegenden
Erfindung enthalten. Das aktuelle Ausführungsbeispiel der Erfindung
unterstützt
acht Endpunkte, die mit 0–7
adressiert sind. Diese Anzahl kann bis auf die in der USB-Spezifikation
definierte maximale Anzahl für
insgesamt sechzehn Endpunkte erhöht
werden. Der Endpunkttyp wird durch die Bits 0 & 1 angegeben, nämlich CONTROL-, BULK-, INTERRUPT-
und ISOCHRONOUS-Übertragungen.
Die Richtung des Datenflusses zum Hauptrechner oder vom Hauptrechner wird
durch das Bit 2 angegeben. Das DATA-Umschaltbit wird im Bit 3 gespeichert,
um die Datensynchronisation gemäß der USB-Spezifikation
aufrechtzuerhalten. Der Busdurchlaufzeitablauf für den Endpunkt ist in den Bits
4 & 5 festgelegt.
Diese Zeitablaufbits legen einen von vier möglichen Zeitablaufwerten, die
vom DOH 150 verwendet werden, fest, wobei eine Verzögerungsperiode
vor dem Beginn einer Übertragung
zum Hauptrechner festgelegt wird. Das Bit 6 ist unbenutzt. Das Bit
7 wird verwendet, um für
eine gegebene Vorrichtung anzugeben, ob der Endpunkt verwendet wird,
da die Anzahl von Endpunkten, die für eine gegebene Vorrichtung erforderlich
sind, variiert. In das Bit 7 wird durch die Mikrosteuereinheit beim
Rücksetzen
geschrieben.
-
In
das Register für
gestoppten Endpunkt wird durch die Mikrosteuereinheit geschrieben,
um anzugeben, ob ein Endpunkt vorübergehend deaktiviert wird.
In einem solchen Fall werden irgendwelche Übertragungen, die an einen
deaktivierten Endpunkt gerichtet sind, von der PCS ignoriert und
die PCS antwortet mit einem NAK für diejenigen Transaktionen,
die eine solche Antwort unterstützen.
-
Man
wende sich nun der Registerorganisation der PCS 110 zu,
wie in der schematischen Darstellung von 3A–3C gezeigt.
Die Figuren zeigen die verschiedenen vorstehend beschriebenen Register,
einschließlich
des Flusses von Informationen zwischen den Registern und den anderen
Komponenten, die die USB-Steuereinheit bilden. Der Informationsaustausch
zwischen der PCS 110 und der Mikrosteuereinheit findet über einen "Bus" 10 statt.
Im bevorzugten Ausführungsbeispiel
wird eine gemeinsame Konstruktion für die Implementierung des Busses 10 übernommen.
Das Lesen vom "Bus" besteht aus dem
Speisen des Ausgangssignals jedes Registers in der PCS 110 in
einen Mux (nicht dargestellt) und der Verwendung der Registeradresse
(MAddr, 2B) als Mux-Selektor, um das
gewünschte
Register auszuwählen.
Der PCSData-Bus wird vom Ausgang des Mux genommen. Das Schreiben
in ein Register in der PCS 110 wird durch Speisen der zu schreibenden
Daten (MData) in den Eingang jedes Registers durchgeführt. Jedes
Register besitzt eine Schreibfreigabe, die mit einer Ausgangsleitung
eines Decodierers gekoppelt ist. Durch Einspeisen von MAddr in den
Decodierer wird folglich das entsprechende Register freigegeben,
um die Daten einzulesen.
-
Von
der SIE 140 bewegen sich SiePID (OUT, IN, SOF, SETUP, DATA0,
DATA1, ACK und PRE) und SieEndPt in das Paketsteuerregister der
PCS 110. SieAddr bewegt sich in den Vergleicher 32 (3B),
um festzustellen, ob die vom Hauptrechner gesandte Vorrichtungsadresse
derjenigen entspricht, die im Vorrichtungsadressenregister der PCS
enthalten ist, was ein Freigabesignal erzeugt, wenn eine Übereinstimmung auftritt.
Eingehende Daten bewegen sich von SieData in den FIFO-Steuerblock 42 (3C),
damit sie im FIFO 130 gespeichert werden. NextData signalisiert
dem FIFO-Steuerblock 42, auf die nächste FIFO-Stelle zu inkrementieren
und ihren Inhalt auszulesen.
-
Eine
Gruppe von Endpunktsteuerregistern 50 (3A)
sieht ein Endpunktsteuerregister für jeden Endpunkt vor. Die Auswahl
eines Registers aus der Registergruppe 50 wird über den
Selektor 20 durchgeführt. SieEndPt
von der SIE 140 bildet einen internen Endpunktadressen-Identifikator PCSEndPtAddr,
den aktuellen Endpunkt für
die spezielle Transaktion. Der aktuelle Endpunktidentifikator wählt das
entsprechende Endpunktsteuerregister aus, dessen Inhalt zur Zustandsmaschine 120 und
zum DOH 150 gesandt wird. Insbesondere fließen die
Informationen EndPtType, EndPtDir und DataToggle in die PSM 120,
während
die EndPtBusTurnaround-Information in das DOH 150 fließt. Obwohl
die Steuereinheit der vorliegenden Erfindung einen einzelnen FIFO
in Betracht zieht, ist zu sehen, dass trotzdem mehrere Endpunkte
von nur einem FIFO unterstützt
werden können,
da für
jeden Endpunkt spezifische Informationen in der Registergruppe 50 enthalten
sind und über den
Selektor 20 unter Verwendung des vom Hauptrechner über SieEndPt
gelieferten Endpunktspezifizierers ausgewählt werden. Solche Informationen
steuern die Ablaufsteuerung für
diesen Endpunkt und seinen Typ und beliebige Daten, die übertragen
werden, werden über
den FIFO 130 bewerkstelligt. Zusätzlich zu EndPtType, EndPtDir
und DataToggle empfängt
die PSM 120 StatusStage vom Bit 4 des Unterbrechungsbestätigungsregisters
und PacketResponse von den Bits [3:0] des Paketantwortregisters.
Wie nachstehend erläutert wird,
bilden diese Informationen die von der PSM 120 verwendeten
zustandsvariablen.
-
Die
PCS 110 arbeitet unter der Steuerung von PSMState-Signalen während der
Ablaufsteuerung einer Transaktion. Während einer BULK-Transaktion
erfordert beispielsweise jede Übertragung
das Umschalten des DATA0/1-Pakets durch die USB-Spezifikation. Wie
in 3A gezeigt, beinhaltet das Datenumschalten das Umschalten
des Datenumschaltbits (Bit 3) des ausgewählten Endpunktsteuerregisters
gegenüber
PCSEndPtAddr durch Ausgeben von PSMState-Signalen in der PCS. Ebenso
wird der DOH-Steuerblock 44 durch PSMState gesteuert, um
einen Stromaufwärtsantwort-PID
(d.h. ACK, NAK, STALL) über
das DOH 150 auszugeben, wobei der Antwort-PID vom Paketantwortregister
erhalten wird.
-
Man
wende sich nun den Transaktionsdiagrammen von 4A–4I für eine kurze
Beschreibung der in der USB-Spezifikation definierten Transaktionssequenzen
zu. Die für
den USB definierten Transaktionen umfassen: BULK, CONTROL, INTERRUPT
und ISOCHRONOUS. Jede von diesen Transaktionen umfasst typischerweise
eine Kombination von zwei oder mehr der nachstehend zu erörternden
Basisdatenübertragungen
(4A–4E).
-
4A stellt
die Transaktionssequenz für
eine Datenübertragung
vom IN-Typ dar, die die Übertragung von
Daten zum Hauptrechner beinhaltet. Diese Art von Datenübertragung
ist den BULK-, CONTROL- und INTERRUPT-Übertragungen
gemeinsam. Der Hauptrechner sendet ein Paket vom IN-Typ zur Vorrichtung.
In Reaktion sendet die Vorrichtung ein DATA-Paket zum Hauptrechner,
das durch eine Rückkehr-ACK
zur Vorrichtung bestätigt
wird. Wie in 4A gezeigt, kann die Vorrichtung
alternativ entweder mit NAK oder STALL antworten, wenn die Vorrichtung
ein Problem erleidet.
-
4B zeigt
eine ähnliche
Sequenz für
ein Datenpaket vom OUT-Typ, die die Übertragung von Daten vom Hauptrechner
beinhaltet. Der Hauptrechner sendet ein Paket vom OUT-Typ, gefolgt
von einem DATA-Paket. Die Vorrichtung antwortet dann mit ACK, NAK
oder STALL in Abhängigkeit
vom Erfolg, von einer Verzögerung
oder einem Fehlschlag der Transaktion.
-
Eine
BULK-Übertragung
von Daten (ob von der Vorrichtung oder zur Vorrichtung) umfasst
eine oder mehrere Datenübertragungen
vom IN- oder OUT-Typ. 4F zeigt beispielsweise eine
BULK-Lesetransaktion mit einer Vielzahl von IN-Datenübertragungen
(4A) zum Übertragen
von Daten zum Hauptrechner. Die Null- und Eins-Schreibweise bedeutet
die Abwechslung von DATA0- und DATA1-Paketen für jede aufeinander folgende
Datenübertragung
gemäß dem in
der USB-Spezifikation definierten Bitumschaltschema. Eine BULK-Übertragung von Daten kann in
der anderen Richtung laufen, nämlich
vom Hauptrechner in die Vorrichtung, die mit einer Reihe von Datenübertragungen
vom OUT-Typ durchgeführt
wird (4B).
-
Eine
INTERRUPT-Transaktion (nicht dargestellt) besteht im Gegensatz zu
einer BULK-Übertragung aus
einer oder mehreren Datenübertragungen
vom IN-Typ (4A). Wenn mehr als eine Datenübertragung erforderlich
ist, geschieht das Bitumschalten für aufeinander folgende Übertragungen.
Im Gegensatz zu BULK-Übertragungen
beinhaltet ein INTERRUPT nur die Übertragung von Daten von der
Vorrichtung zum Hauptrechner; d.h. Datenübertragungen vom IN-Typ.
-
4C zeigt
eine Datenübertragung
vom SETUP-Typ. Diese umfasst ein vom Hauptrechner gesandtes SETUP-Paket,
gefolgt von einem DATA-Paket, das auch vom Hauptrechner gesandt
wird. Diese Art von Datenübertragung
wird während
einer CONTROL-Transaktion verwendet, die mit einer Aufbaustufe beginnt, wahlweise
gefolgt von einer Datenstufe, und mit einer Statusstufe endet. 4G stellt
eine Variation der CONTROL-Transaktion dar, die nur aus einer Aufbaustufe
(Datenübertragung
vom SETUP-Typ) und einer Statusstufe (Datenübertragung vom IN-Typ, 4A)
besteht. 4H und 4I zeigen
eine zweite Variation der CONTROL-Transaktion, die eine Datenstufe
mit einer oder mehreren IN- oder OUT-Datenübertragungen umfasst. Die Statusstufe
ist durch eine Datenübertragung
in der entgegengesetzten Richtung angedeutet.
-
4D und 4E zeigen
die Transaktionssequenzen für
eine ISOCHRONOUS-Transaktion. Für
die in 4D gezeigte Stromaufwärts-ISO-Transaktion
sendet der Hauptrechner ein Paket vom IN-Typ. Die Vorrichtung antwortet
durch Senden eines DATA-Pakets. Die Menge an Daten, die während einer
ISO-Transaktion übertragen
werden, kann mehr als eine solche Transaktion erfordern, und somit
können
zusätzliche
Transaktionen (in Durchsicht gezeigt) mit Bitumschalten stattfinden. 4E zeigt
eine ähnliche
Sequenz, jedoch für eine
Stromabwärts-ISO-Transaktion.
Im Gegensatz dazu werden die anderen Übertragungsarten, ISO-Übertragungen,
nicht durch eine Quittierungsphase beendet.
-
Nachdem
die verschiedenen vom USB definierten Transaktionen erörtert wurden,
nehme man nun auf die Protokollzustandsmaschine PSM 120,
die in 5A–5D dargestellt
ist, Bezug. Man erinnere sich daran, dass die PSM eine Ablaufsteuerung
für alle
vom USB definierten Transaktionen bereitstellt. Die Eingangssignale
in die PSM 120 (PacketEnd, PacketOK, PCSPID, EndPtType,
EndPtDir, DataToggle, StatusPhase und PacketResponse) dienen als
Zustandsvariablen der Zustandmaschine, die die Handlung(en) festlegen,
die während
jedes Zustands unternommen wird (werden). Der Ausgang der PSM 120 ist
PSMState, ein Satz von Steuerleitungen zum Signalisieren an die
PCS 110.
-
Vom
IDLE-Zustand, der in 5A gezeigt ist, geht die PSM 120 in
einen der Datenübertragungsstartzustände über: SETUP,
ISO-IN, ISO-OUT, ST-IN, ST-OUT, INT-IN, IN und OUT. In den SETUP-Zustand
wird für
die SETUP-Stufe einer CONTROL-Transaktion eingetreten. In den ISO-IN-(ISO-OUT-)Zustand
wird für
isochrone Transaktionen von Daten zum (vom) Hauptrechner eingetreten.
In den ST-IN-(ST-OUT-)Zustand wird für die STATUS-Stufe einer CONTROL-Schreib
(Lese) Sequenz eingetreten. In den INT-IN-Zustand wird für Transaktionen
eingetreten, die Endpunkte vom Unterbrechungstyp beinhalten. In
den IN-(OUT-)Zustand wird für Übertragungen
vom IN-(OUT-)Typ während
BULK- und CONTROL-Transaktionen eingetreten. Die Übergänge sind
durch die USB-Spezifikation vollständig definiert und entsprechen
dieser. Die Fehler-, NAK- und STALL-Übergänge entsprechen auch der USB-Spezifikation.
-
Ein Übergang
vom IDLE-Zustand geschieht, wenn PacketOK und PacketEnd durch die
SIE 140 aktiviert werden. Der Startzustand (SETUP, ISO-IN,
ISO-OUT, ST-IN, ST-OUT, INT-IN,
IN, OUT), bei dem der Übergang
stattfindet, basiert auf dem PCSPID-Eingangssignal von der PCS 110.
Ein anschließender Übergang
aus dem Startzustand geschieht, wenn die SIE 140 das nächste Paket
empfängt
und wieder PacketOK und PacketEnd aktiviert. Die PSM gibt dann über PSMState
ein Signal aus, das der PCS angibt, welche Handlung erforderlich
ist. Anschließende Übergänge werden
dann eingeleitet, wenn das DOH 150 StepPSM aktiviert.
-
Zustandsübergänge geschehen
auf der Basis der an der Schnittstelle der PCS
110 gelieferten PSM-Zustandsvariablen.
Das Folgende ist eine Zusammenfassung dessen, welche Zustandsvariablen
betrachtet werden und welche Handlung(en) für jeden Zustand unternommen
wird (werden). Obwohl die PSM
120 in einer digitalen Logik
implementiert wird, wird die Beschreibung, die folgt, in einem Pseudocode-Format vorgesehen,
um die Erläuterung
von
5A–
5D zu
erleichtern. In Anbetracht der folgenden Zusammenfassung ist es
eine Frage der Grundprinzipien in der Logikkonstruktion, die für Fachleute
verständlich
und bekannt sind, eine Zustandsmaschine mit dem beschriebenen Verhalten
zu implementieren:
-
Die
Operation der Steuereinheit wird nun in Verbindung mit zwei in 7 gezeigten
Transaktionen erörtert,
die darstellen, wie die Steuereinheit mehrere Endpunkte unter Verwendung
eines einzelnen FIFO handhabt. Man nehme an, dass der Endpunkt 2
für Stromaufwärts-BULK-Übertragungen
definiert ist und der Endpunkt 3 für Stromabwärts-ISOCHRONOUS-Übertragungen definiert ist.
Ferner nehme man an, dass die Hauptübertragung mit der isochronen Übertragung
zeitweise verschachtelt ist.
-
Man
nehme an, dass zu irgendeinem Zeitpunkt vor dem Zeitpunkt t0 die
Mikrosteuereinheit zum Hauptrechner hochzuladende Daten erhält; z.B.
hat ein Videokamera-Peripheriegerät ein Bild
aufgenommen und ist bereit, es zum Hauptrechner zu senden. Man nehme
an, dass die Übertragung
des Videobildes zum Hauptrechner zwei Datenpakete erfordert.
-
Zum
Zeitpunkt t0 empfängt
die SIE 140 ein IN-Paket für die Endpunktadresse 2 vom
Hauptrechner. Die Vorrichtungsadresse wird in die PCS 110 weitergeleitet
und mit dem Inhalt des Vorrichtungsadressenregisters verglichen.
Die Endpunktadresse wird in die PCS 110 weitergeleitet,
was bewirkt, dass der Selektor 20 das dem Endpunkt 2 entsprechende
Endpunktsteuerregister auswählt.
Der PID des empfangenen Pakets wird im Paketsteuerregister gespeichert.
Die PCS 110 initialisiert die PSM mit der folgenden auf
den Endpunkt bezogenen Information: EndPtType = BULK, EndPtDir = "0" für
Stromaufwärtsübertragungen
und DataToggle = "0".
-
Die
Mikrosteuereinheit wird unterbrochen und stellt fest (über das
Paketsteuerregister), dass ein IN-Paket für den Endpunkt 2 empfangen
wurde. Die Mikrosteuereinheit beginnt, Daten in den FIFO 130 zu
laden. Unterdessen beginnt die PSM 120 zu arbeiten, wenn
die SIE 140 PacketOK und PacketEnd aktiviert, was zu einem Übergang
vom IDLE-Zustand in den IN-Zustand führt (5C). Diesem
folgt ein Übergang
in den W-DATAT-Zustand. Im W-DATAT-Zustand signalisiert die PSM 120 der
DOH-Steuereinheit 44 in der PCS 110 über PSMState,
Daten, die im FIFO 130 enthalten sind, zum Hauptrechner
zu senden. Insbesondere betrachtet die PSM DataToggle ("0") und signalisiert der PCS, DATA0 zu
senden.
-
Die
SIE 140 liefert eine anschließende Taktung (NextData) zum
Ausgeben von jedem zu sendenden Byte. Wenn das letzte Byte in den
FIFO 130 geschrieben wurde, informiert die Mikrosteuereinheit
die PCS 110 über
die Tatsache durch Schreiben eines internen Codes DEND (0x7) in
das Paketantwortregister. Wenn der FIFO leer ist, deaktiviert die
PCS 110 SendData. Das DOH 150 aktiviert LastData,
was der SIE 140 signalisiert, den berechneten CRC stromaufwärts zu senden.
Das DOH 150 aktiviert dann PSMStep, was bewirkt, dass die PSM 120 vom
W-DATAT-Zustand in den ACK5-Zustand übergeht. Als nächstes prüft die PSM,
ob der Hauptrechner ein ACK gesandt hat, an welchem Punkt ein Übergang
in den DT-Zustand geschieht. Beim Eintritt in den DT-Zustand signalisiert
die PSM 120 der PCS, das DATA-Umschaltbit des dem Endpunkt
2 entsprechenden Endpunktsteuerregisters umzuschalten, und geht
dann in den IDLE-Zustand über.
-
An
diesem Punkt wurde ein Paket der Videodaten zum Hauptrechner gesandt.
Zu einem späteren
Zeitpunkt t1 empfängt
die SIE ein OUT-Paket für
die Endpunktadresse 3. Wiederum wird die Vorrichtungsadresse in
die PCS 110 geleitet und mit dem Inhalt des Vorrichtungsadressenregisters
verglichen. Die Endpunktadresse wird in die PCS 110 geleitet,
was bewirkt, dass der Selektor 20 das dem Endpunkt 3 entsprechende
Endpunktsteuerregister auswählt.
Der PID des empfangenen Pakets wird im Paketsteuerregister gespeichert.
Die PCS 110 initialisiert die PSM mit der folgenden auf
den Endpunkt bezogenen Information: EndPtType = ISOCHRONOUS, EndPtDir
= "1" für Stromaufwärtsübertragungen
und DataToggle = "0".
-
Die
SIE 140 bewirkt, dass die PSM 120 (PacketOK und
PacketEnd) vom IDLE-Zustand in den ISO-OUT-Zustand übergeht
(5B). Diesem folgt ein Übergang in den R2-DATA0-Zustand, wo die PSM
auf die Beendung der Stromabwärtsübertragung
wartet. Unterdessen empfängt
die SIE 140 Daten vom Hauptrechner und speichert sie im
FIFO 130. Da eine isochrone Übertragung keine Quittierungsphase
besitzt, markiert die Beendung der heruntergeladenen Daten (einschließlich des
CRC) selbst das Ende der Transaktion. PSMStep wird aktiviert, um
zu veranlassen, dass die PSM in den IDLE-Zustand übergeht.
-
Man
betrachte als nächstes
den Zeitpunkt t2, zu dem die nächste
Transaktion eine Stromaufwärtsübertragung
von Daten vom Endpunkt 2 ist. Der Hauptrechner beginnt durch Ausgeben
eines IN-Pakets, das den Endpunkt 2 festlegt. Dies bewirkt, dass
der Selektor 20 wieder auf das entsprechende Endpunktsteuerregister
zugreift. Die PCS 110 initialisiert die PSM mit der folgenden
auf den Endpunkt bezogenen Information: EndPtType = BULK, EndPtDir
= "0" für Stromaufwärtsübertragungen
und DataToggle = "1". Man beachte, dass das
Datenumschaltbit nun aufgrund des Umschaltens von der vorherigen
Endpunkttransaktion "1" ist.
-
Die
Mikrosteuereinheit wird unterbrochen und stellt (über das
Paketsteuerregister) fest, dass ein IN-Paket für den Endpunkt 2 empfangen
wurde. Die Mikrosteuereinheit beginnt, den zweiten Satz von Daten in
den FIFO 130 zu laden. Unterdessen beginnt die PSM 120 zu
arbeiten, wenn die SIE 140 PacketOK und PacketEnd aktiviert,
was zu einem Übergang
vom IDLE-Zustand in den IN-Zustand führt (5C). Diesem folgt
ein Übergang
in den W-DATAT-Zustand. Im W-DATAT-Zustand signalisiert die PSM der DOH-Steuereinheit 44 in
der PCS 110 über
PSMState, Daten, die im FIFO 130 enthalten sind, zum Hauptrechner
zu senden. Insbesondere betrachtet die PSM DataToggle ("1") und signalisiert der PCS, DATA1 zu
senden.
-
Die
SIE 140 liefert eine anschließende Taktung (NextData) zum
Ausgeben jedes zu sendenden Bytes. Wenn das letzte Byte in den FIFO 130 geschrieben
wurde, informiert die Mikrosteuereinheit die PCS 110 über die
Tatsache durch Schreiben eines internen Codes DEND (0x7) in das
Paketantwortregister. Wenn der FIFO leer ist, deaktiviert die PCS 110 SendData.
Das DOH 150 aktiviert LastData, was der SIE 140 signalisiert,
den CRC zu berechnen und ihn stromaufwärts zu senden. Das DOH 150 aktiviert
dann PSMStep, was bewirkt, dass die PSM 120 vom W-DATAT-Zustand
in den ACK5-Zustand übergeht.
Als nächstes
prüft die
PSM, ob der Hauptrechner ein ACK gesandt hat, an welchem Punkt ein Übergang
in den DT-Zustand stattfindet. Beim Eintritt in den DT-Zustand signalisiert
die PSM 120 der PCS, das DATA-Umschaltbit des dem Endpunkt
2 entsprechenden Endpunktsteuerregisters umzuschalten, und geht
dann in den IDLE-Zustand über.
-
Zwei
Beobachtungen sind an diesem Punkt erwähnenswert:
Erstens ist
zu sehen, dass eine Datenübertragung
(wie z.B. die Videodaten mit dem Endpunkt 2), die mehrere Datentransaktionen
erfordert, mit anderen Transaktionen verschachtelt werden kann (in
diesem Fall ein OUT-Paket mit dem Endpunkt 3). Jede Transaktion
(IN, OUT, usw.) ist in der Hinsicht atomar, als die Transaktion
enden muss, bevor eine weitere Transaktion verarbeitet wird. Außerdem sind
Zustandsinformationen in Bezug auf jeden Endpunkt in seinem eigenen
Endpunktsteuerregister enthalten (z.B. der Datenumschaltzustand
des Endpunkts 2), so dass kein Verlust von Zustandsinformationen
besteht, wenn Transaktionen unter mehreren Endpunkten verschachtelt
werden. Die zweite Beobachtung besteht darin, dass ein einzelner
FIFO ausreicht, um die Datenpufferung zwischen dem Hauptrechner und
den in einer Vorrichtung definierten Endpunkten vorzusehen. Da jede
Transaktion atomar ist, enthält
der FIFO niemals Teildaten von einer vorherigen Transaktion.
-
Die
vorliegende Erfindung umfasst gewisse Zeitablaufmerkmale der USB-Steuereinheit,
die die Menge an Zeit, die eine Mikrosteuereinheit zur Ausführung einer
Datenübertragung
hat, maximieren. Der Zeitablaufplan in 8 stellt
die Datensequenz für
sowohl eine IN- als auch eine OUT-Transaktion dar. Eine Transaktion
beginnt mit einem Acht-Bit-SYNC und endet mit einem Drei-Bit-EOP.
Beim Empfang eines IN- oder eines OUT-PID erzeugt die USB-Steuereinheit eine
Unterbrechung für
die Mikrosteuereinheit eine gewisse Zeit nach dem Empfang der vier
Bits, die den Endpunkt-Spezifizierer ENDP bilden, wobei die früheste unmittelbar nach
dem Empfang von ENDP liegt. An diesem Punkt enthält die PCS die Endpunktadresse
der eingehenden Transaktion. Obwohl der Hauptrechner die Transaktion
nicht beendet hat, kann die Mikrosteuereinheit folglich die Endpunktinformation
für die
PCS-Register erhalten und das Einrichten für die anschließende DATA-Transaktion
beginnen.
-
Im
Fall einer IN-Transaktion kann die Mikrosteuereinheit mit dem Schreiben
von Daten in den FIFO 130 kurz nach dem Empfang der Unterbrechung
beginnen. Wie in 8 zu sehen ist, hat die Mikrosteuereinheit
einen Kopfstart von vierundzwanzig Bitzeiten (CRC + EOP + SYNC +
DATA0/1) plus die Busdurchlaufzeit, die nachstehend zu erörtern ist.
Bis dahin muss die Mikrosteuereinheit das erste Byte in den FIFO
für die Stromaufwärtsübertragung
geschrieben haben. Für
eine OUT-Transaktion besitzt die Mikrosteuereinheit zusätzliche
acht Bitzeiten, um Dinge zum Empfang von Daten vom Hauptrechner
einzurichten. Die zusätzliche Zeit
resultiert aus der Tatsache, dass das erste Byte in den FIFO geschrieben
werden muss, bevor die Mikrosteuereinheit es aufgreifen kann.
-
Der
Busdurchlaufzeitablauf legt die Verzögerung zwischen Transaktionen
fest, wie in 8 gezeigt. Sein Wert kann sich
von Endpunkt zu Endpunkt unterscheiden und ist durch die BusTurnaround-Bits
(2 Bits) der Endpunktsteuerregister festgelegt. Im bevorzugten Ausführungsbeispiel
liefert das DOH 150 die den BusTurnaround-Bits entsprechende
Verzögerung,
drei Bitzeiten für "00", sieben Bitzeiten
für "01", elf Bitzeiten für "10" und fünfzehn Bitzeiten
für "11". Idealerweise wäre die Busdurchlaufzeit
Null, um den maximalen Durchsatz zu erhalten. Einige Vorrichtungen
können
jedoch langsam sein oder der Hauptrechner kann eine langsamere Geschwindigkeit
erfordern. Die BusTurnaround-Bits
sehen eine beliebige erforderliche Einstellung vor.
-
Während einer
Datenübertragung
kann in den FIFO 130 zur gleichen Zeit geschrieben werden,
wie er ausgelesen wird. Folglich kann die USB-Steuereinheit im Fall
einer IN-Übertragung
Daten vom FIFO lesen, um Daten stromaufwärts zum Hauptrechner zu senden,
während
die Mikrosteuereinheit gleichzeitig Daten in den FIFO schreibt.
Das Bytezählwert-Register sieht die
erforderliche Datensatzaufrechterhaltung vor, um sicherzustellen,
dass der FIFO nicht leer ist, wenn ein Byte stromaufwärts übertragen
wird, und dass der FIFO nicht voll ist, wenn ein Byte in den FIFO
geschrieben wird. Ebenso kann die Mikrosteuereinheit im Fall einer OUT-Übertragung den FIFO leeren,
während
er durch den Hauptrechner gefüllt
wird.
-
Noch
ein weiteres Merkmal der Erfindung besteht darin, einen zweiten
FIFO 130' zu
haben, wie in 9 gezeigt. In einer Situation,
in der die Mikrosteuereinheit viele Hochgeschwindigkeitsendpunkte
unterstützen
muss, kann ein zweiter FIFO verwendet werden, um zusätzliche
Pufferfähigkeit
bereitzustellen. Folglich kann der erste FIFO einer ersten Teilmenge
von Endpunkten zugeordnet werden und der zweite FIFO einem zweiten
Satz von Endpunkten zugeordnet werden. Als Beispiel kann der erste FIFO
Daten vom Hauptrechner empfangen, während die Mikrosteuereinheit
Daten in den zweiten FIFO für
eine Stromaufwärtsübertragung schreibt.
Sobald die Stromabwärtsübertragung
endet, kann die USB-Steuereinheit unmittelbar eine Stromaufwärtsübertragung
von Daten im zweiten FIFO beginnen, während die Mikrosteuereinheit
die im ersten FIFO empfangenen Daten verarbeitet.