-
HINTERGRUND
DER ERFINDUNG
-
Die
vorliegende Erfindung betrifft ein Steuerungsgerät zur Datenübertragung, elektronische Ausrüstung und
ein Verfahren zur Steuerung der Datenübertragung.
-
Der
universelle serielle Bus-(universal serial bus – USB)Standard ist seit kurzem
als Schnittstellenstandard für
Verbindungen zwischen Personal Computern und Peripheriegeräten (im
weitgefassten Sinn elektronische Ausrüstung) von Interesse. Dieser USB-Standard
hat den Vorteil, dass er die Verwendung von Anschlüssen desselben
Standards zum Anschließen
von Peripheriegeräten
wie Mäusen, Tastaturen
und Druckern, die im Stand der Technik durch Anschlüsse anderer
Standards angeschlossen sind, sowie die Implementierung von Plug-and-Play- sowie
Hot-Plug-(heiße
Verbindung)Merkmalen ermöglicht.
-
Im
Vergleich zum Standard IEEE 1394, der ebenfalls als ein Standard
für dieselbe
serielle Busschnittstelle in Betracht gezogen wird, ist dieser USB-Standard
mit dem Problem behaftet, dass seine Übertragungsgeschwindigkeit
geringer ist.
-
In
diesem Fall konzentriert sich die Entscheidung auf die Verwendung
des Standards USB 2.0, der eine Datenübertragungsgeschwindigkeit
von 480 Mbps (im HS-Modus) implementieren kann, die weit schneller
ist als die des vorigen Standards USB 1.1, während die Abwärtskompatibilität mit USB
1.1 erhalten bleibt.
-
Mit
USB 2.0 erfolgt die Datenübertragung
mit 480 Mbps im Hochgeschwindigkeits-(HS – high speed)Modus. Deshalb
hat er den Vorteil, dass seine Verwendung als Schnittstelle für ein Speichergerät wie eine
Festplatte oder ein optisches Plattenlaufwerk, das hohe Übertragungsgeschwindigkeiten
erfordert, möglich
ist.
-
Dies
bedeutet jedoch, dass das Steuerungsgerät für die Datenübertragung, das mit dem USB-Bus
verbunden ist, die Daten verarbeiten muss, die mit der hohen Geschwindigkeit
von 480 Mbps übertragen
werden. Wenn die Verarbeitungsgeschwindigkeit des Steuerungsgeräts für die Datenübertragung
oder der Firmware (CPU), die das Steuerungsgerät für die Datenübertragung steuert, niedrig ist,
kann die eigentliche Übertragungsgeschwindigkeit
nicht sichergestellt werden und es tritt ein Problem dadurch auf,
dass die Buszone verloren gehen könnte.
-
Das
Dokument WO 99/63448 offenbart ein Gerät und ein Verfahren zur Datenübertragung über einen
Bus mit einem ersten Puffer, der einen Datenspeicherbereich zum
Speichern von Daten hat, die über
einen ersten Bus empfangen und über
einen zweiten Bus während
der Datenübertragung
in einer ersten Richtung gesendet werden, und einem zweiten Puffer,
der einen Datenspeicherbereich zum Speichern von Daten hat, die über den
zweiten Bus empfangen und über
den ersten Bus während
der Datenübertragung
in einer zweiten Richtung gesendet werden, sowie einer Puffer-Management-Schaltung
zum Verwalten des Schreibens der Daten in die Datenspeicherbereiche
und des Lesens der Daten aus den Datenspeicherbereichen. Bei diesem
Stand der Technik ist der erste Bus ein USB-Bus und der zweite Bus
ist ein DMA-Bus, der die UCB-Steuerung mit einer DMA-Steuerung verbindet.
-
KURZE ZUSAMMENFASSUNG
DER ERFINDUNG
-
Es
ist eine Aufgabe der vorliegenden Erfindung, eine Vereinfachung
der Schaltungskonfiguration und der Schaltungssteuerung zu ermöglichen,
so dass die Verarbeitungslast einer Verarbeitungseinheit, die das
Steuerungsgerät
für die
Datenübertragung
steuert, verringert werden kann.
-
Diese
Aufgabe wird durch ein Steuerungsgerät für die Datenübertragung gemäß Anspruch
1 und ein Verfahren gemäß Anspruch
11 gelöst.
Bevorzugte Ausführungsformen
der Erfindung sind Gegenstand der Unteransprüche.
-
Mit
der vorliegenden Erfindung ist es möglich, das Ende einer Datenphase
(Datentransport: Übertragung
sämtlicher
Daten) während
der Datenübertragung
in einer ersten Richtung unter der Bedingung, dass die Datenübertragung
(wie eine DMA-Übertragung) über den
zweiten Bus beendet ist, zu bestimmen. Während der Datenübertragung
in der zweiten Richtung dagegen wird das Ende der Datenphase unter
der Bedingung bestimmt, dass der Datenempfang über den zweiten Bus beendet
ist und der Datenspeicherbereich anschließend leer geworden ist.
-
Dies
ermöglicht
die einfache Bestimmung des Endes der Datenphase während der
Datenübertragung
sowohl in der ersten als auch in der zweiten Richtung, indem einfach
die Übertragungsdatengröße (Datenlänge) an
der Seite des zweiten Busses geprüft wird. Dadurch können die
Schaltungskonfiguration und die Schaltungssteuerung vereinfacht
werden, so dass die Verarbeitungslast einer Verarbeitungseinheit,
die das Steuerungsgerät
für die
Datenübertragung
steuert, verringert werden kann.
-
Das
Steuerungsgerät
für die
Datenübertragung
kann ferner einen Zähler
aufweisen, der die Größe der Daten,
die über
den zweiten Bus gesendet oder empfangen, werden, zählt.
-
Die
Bereitstellung eines solchen Zählers
ermöglicht
die Prüfung
der Größe der Daten,
die an der Seite des zweiten Busses übertragen worden sind, auf
einfache Weise. Außerdem
wird die Vereinfachung der Steuerung des Zählers ermöglicht, da es nicht erforderlich
ist, einen Zähler
an der Seite des ersten Busses bereitzustellen.
-
Im
Steuerungsgerät
für die
Datenübertragung
kann der Status des Datenempfangs über den zweiten Bus erfasst
werden und der so erfasste Status kann über den ersten Bus während einer
Statusphase nach dem Ende der Datenphase übertragen werden.
-
Dadurch
kann eine Periode nach dem Ende des Datenempfangs über den
zweiten Bus und bis zum Ende der Datenphase zur statusrelevanten
Verarbeitung wirksam genutzt werden, wodurch die effektive Übertragungsgeschwindigkeit
erhöht
werden kann.
-
Beim
Steuerungsgerät
für die
Datenübertragung
kann ein kurzes Paket im Datenspeicherbereich automatisch über den
ersten Bus gesendet werden, wenn der Datenempfang über den
zweiten Bus endet und außerdem
die Größe der im
Datenspeicherbereich des Puffers verbleibenden Daten kleiner ist
als die maximale Paketgröße.
-
Dadurch
wird die automatische Übertragung eines
kurzen Pakets im Datenspeicherbereich durch Hardware ohne Beteiligung
der Verarbeitungseinheit möglich.
Dies ermöglicht
die Verringerung der Bearbeitungslast auf der Verarbeitungseinheit,
wodurch eine Erhöhung
der effektiven Übertragungsgeschwindigkeit
möglich
wird.
-
Das
Steuerungsgerät
für die
Datenübertragung
kann ferner eine Einheit enthalten, die die automatische Übertragung
eines kurzen Pakets aus dem Datenspeicherbereich entweder auf aktiviert
oder deaktiviert einstellt.
-
Damit
kann die Vielseitigkeit des Steuerungsgeräts für die Datenübertragung erhöht werden,
indem sowohl ein Gerät
unterstützt
wird, dem erlaubt ist, ein kurzes Paket automatisch zu übertragen,
als auch ein Gerät,
dem nicht erlaubt ist, ein kurzes Paket automatisch zu übertagen.
-
Beim
Steuerungsgerät
für die
Datenübertragung
kann die automatische Übertragung
so eingestellt werden, dass sie deaktiviert wird, wenn Daten, die über den
zweiten Bus empfangen worden sind, Informationen geliefert haben
und über
den ersten Bus übertragen
werden.
-
Damit
ist es auf wirksame Weise möglich, eine
Situation zu vermeiden, in der ein mit dem ersten Bus verbundener
Host oder dgl. das Ende der Datenphase fälschlich erkennt, wenn die
Datenphase noch nicht beendet ist.
-
Beim
Steuerungsgerät
für die
Datenübertragung
kann eine Verarbeitungseinheit über
die Anwesenheit eines kurzen Pakets im Datenspeicherbereich informiert
werden, wenn der Datenempfang über
den zweiten Bus endet und außerdem
die Größe der im
Datenspeicherbereich des Puffers verbliebenen Daten kleiner ist
als die maximale Paketgröße.
-
Dies
ermöglicht
der Verarbeitungseinheit die der Situation angemessene Verarbeitung
auszuführen,
wodurch die Implementierung einer geeigneten Datenübertragungssteuerung
selbst z. B. bei einem Gerät
ermöglicht
wird, dem die automatische Übertragung
eines kurzen Pakets nicht gestattet ist.
-
Beim
Steuerungsgerät
für die
Datenübertragung
können
die Informationen, die zuerst in den Datenspeicher eingegeben worden
sind, zuerst aus dem Datenspeicherbereich ausgegeben werden.
-
Damit
ist es möglich,
einen effizienten Empfang und ein effizientes Senden von Daten während der
Speicherdirektzugriff-(direct memory access – DMA)Übertragung oder dgl. zu implementieren,
indem der Datenspeicherbereich als ein First-in-first-out-Speicherbereich
eingestellt wird.
-
Beim
Steuerungsgerät
für die
Datenübertragung
kann die Datenübertragung
gemäß dem universellen
seriellen Bus-(USB)Standard erfolgen.
-
Es
sollte jedoch beachtet werden, dass diese Ausführungsform auch auf andere
Standards als den USB-Standard (oder künftige Standards, die auf dem USB-Konzept
basieren) angewendet werden kann.
-
Elektronische
Ausrüstung
gemäß der vorliegenden
Erfindung umfasst alle oben beschriebenen Steuerungsgeräte zur Datenübertragung
sowie ein Gerät,
das die Ausgangsverarbeitung, die Abrufverarbeitung oder die Speicherverarbeitung
von Daten ausführt,
die über
das Steuerungsgerät
für die
Datenübertragung
und den Bus übertragen
worden sind.
-
Da
die vorliegende Erfindung es ermöglicht, die
Verarbeitungslast der Verarbeitungseinheit (wie der Firmware), die
die Datenübertragung
der Steuerungsgeräts
für die
Datenübertragung
steuert, zu verringern, lassen sich damit Vorteile wie eine Senkung der
Kosten und des Umfangs der elektronischen Ausrüstung erzielen.
-
KURZBESCHREIBUNG
DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNG
-
1A, 1B, 1C und 1D stellen Endpunkte
und Transaktionskonfigurationen unter USB beispielhaft dar;
-
2A und 2B sind
beispielhafte Darstellungen der CBI-Spezifikation und der Bulk-Only-(nur
Massen)Spezifikation;
-
3 zeigt
das CBW-Format;
-
4 zeigt
das CSW-Format;
-
5A und 5B stellen
Schreiben und Lesen der Daten während
Bulk-Only beispielhaft dar;
-
6 zeigt
die Konfiguration eines Steuerungsgeräts für die Datenübertragung gemäß einer Ausführungsform
der vorliegenden Erfindung;
-
7 zeigt
einen detaillierten Anschlussplan des Steuerungsgeräts für die Datenübertragung
gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
8A, 8B, 8C und 8D sind Impulsdiagramme,
die für
die OUT- und PING-Transaktionen beispielhaft sind;
-
9A, 9B und 9C sind
Impulsdiagramme, die für
die IN-Transaktionen beispielhaft sind;
-
10 ist
ein Impulsdiagramm, das für
die DMA-Übertragung
während
der Übertragung
an ein Festplattenlaufwerk (HDD) beispielhaft ist;
-
11 ist
ein Impulsdiagramm, das für
die DMA-Übertragung
während
des Empfangs von einem HDD beispielhaft ist;
-
12 ist
ein Impulsdiagramm, das für
die Operation einer Ausführungsform
der vorliegenden Erfindung während
einer OUT-Transaktion (Datenübertragung
in einer ersten Richtung) beispielhaft ist;
-
13 ist
ein Impulsdiagramm, das für
die Operation einer Ausführungsform
der vorliegenden Erfindung während
einer IN-Transaktion (Datenübertragung
in einer zweiten Richtung) beispielhaft ist;
-
14 ist
ein Impulsdiagramm, das für
ein Verfahren der automatischen Übertragung
eines kurzen Pakets beispielhaft ist;
-
15 zeigt
einen anderen detaillierten Anschlussplan des Steuerungsgeräts für die Datenübertragung
gemäß einer
Ausführungsform
der vorliegenden Erfindung;
-
16 ist
ein Impulsdiagramm, das für
ein Verfahren zur Information der Firmware über das Vorhandensein eines
kurzen Pakets beispielhaft ist;
-
17A und 17B sind
Flussdiagramme der Firmware-Verarbeitung anhand eines Vergleichsbeispiels
und einer Ausführungsform
der vorliegenden Erfindung;
-
18 ist
ein Flussdiagramm der Firmware-Verarbeitung während des Verfahrens zur Information
der Firmware über
das Vorhandensein eines kurzen Pakets;
-
19A, 19B und 19C sind interne Blockdiagramme verschiedener
Teile der elektronischen Ausrüstung;
und
-
20A, 20B und 20C zeigen typische Außenansichten verschiedener
Teile der elektronischen Ausrüstung.
-
DETAILLIERTE
BESCHREIBUNG DER AUSFÜHRUNGSFORMEN
-
Nachstehend
werden verschiedene Ausführungsformen
der vorliegenden Erfindung beschrieben.
-
Es
ist zu beachten, dass die im Folgenden beschriebenen Ausführungsformen
den Gültigkeitsbereich
der Erfindung, der durch die hierin dargelegten Ansprüche definiert
ist, in keiner Weise einschränken.
Außerdem
ist zu beachten, dass alle Elemente dieser Ausführungsformen nicht als wesentliche
Erfordernisse für
den eigentlichen Inhalt der vorliegenden Erfindung zu betrachten
sind.
-
Diese
Ausführungsform
wird nachstehend unter Bezugnahme auf die beiliegenden Figuren beschrieben.
-
1. USB
-
1.1 Datenübertragungsverfahren
-
Zunächst wird
das Datenübertragungsverfahren
gemäß USB (USB
2.0) kurz beschrieben.
-
USB
unterscheidet sich von anderen Verfahren wie IEEE 1394 dadurch,
dass ein Host die Initiative ergreift. Mit anderen Worten, die Aktivierung
einer Datenübertragungstransaktion
erfolgt seitens des Host und der größere Teil der Steuerung hinsichtlich
der Datenübertragung
wird vom Host ausgeführt. Dies
erhöht
die Verarbeitungslast für
den Host, aber da der Personal Computer (PC), der den Host bildet, eine
hochschnelle Hochleistungs-CPU (Prozessor) hat, stellt die Verarbeitung
solcher großen
Lasten kein allzu schwerwiegendes Problem dar.
-
Da
das Gerät
(Ziel) unter USB nur auf eine Anforderung vom Host zu antworten
braucht, können die
Verarbeitung und die Konfiguration auf der Geräteseite vereinfacht werden.
Es ist deshalb nicht erforderlich, auf der Geräteseite eine schnelle Hochleistungs-CPU
wie für
den Host vorzusehen, wodurch eine kostengünstige CPU (Mikroprozessor)
verwendet werden kann, was zu einer Kostensenkung führt.
-
Zur
Implementierung dieser Datenübertragung
unter USB, wobei der Host die Führungsrolle übernimmt,
werden geräteseitig
Endpunkte (EP0 bis EP15) vorgesehen wie in 1A dargestellt.
In diesem Fall entspricht ein Endpunkt einem Eingang zu einem Puffer
(FIFO) für
die Datenübertragung
zwischen dem Host und dem Gerät,
wobei die gesamte Datenübertragung
unter USB über
diese Endpunkte erfolgt.
-
Jeder
dieser Endpunkte kann eindeutig durch eine Geräteadresse und eine Endpunktnummer
adressiert werden. Mit anderen Worten, der Host kann eine Datenübertragung
frei an einen gewünschten
Endpunkt oder einen Datenempfang von einem gewünschten Endpunkt ausführen, indem
er eine Geräteadresse
und eine Endpunktnummer vorgibt.
-
Die
Vorgabe der Endpunkte erfolgt frei seitens des Geräts und der
Host kann über
Einzelheiten wie die Zuordnung der Endpunktnummern und die Größe der diesen
Endpunkten zugeordneten Speicherbereiche während der Auflistungsverarbeitung
informiert werden.
-
Es
ist zu beachten, dass USB Steuerungsübertragung, isochrone Übertragung,
Unterbrechungsübertragung
und Massenübertragung
als Datenübertragungstypen
bereitstellt.
-
In
diesem Fall ist die Steuerungsübertragung ein Übertragungsmodus
für die
Steuerung, der über einen
Steuerungsendpunkt zwischen dem Host und dem Gerät (Ziel) ausgeführt wird.
Diese Steuerungsübertragung
sendet Informationen wie Konfigurationsinformationen zur Initialisierung
des Geräts.
-
Die
isochrone Übertragung
ist ein Übertragungsmodus,
der für
die Datenübertragung
bereitgestellt wird, wenn es wichtiger ist, die Bandbreite als die
Korrektheit sicherzustellen, wie bei Bild- oder Audiodaten. Da diese
isochrone Übertragung
sicherstellt, dass eine feste Datenmenge in einer festen Periode übertragen
werden kann, stellt sie einen wirksamen Übertragungsmodus für Anwendungen
dar, bei denen Echtzeit-Datenfunktionen wichtig sind.
-
Die
Unterbrechungsübertragung
ist ein Übertragungsmodus,
der zur Übertragung
einer kleinen Datenmenge bei vergleichsweise niedriger Übertragungsgeschwindigkeit
vorgesehen ist.
-
Die
Massenübertragung
ist ein Übertragungsmodus,
der zur Übertragung
einer großen
Datenmenge vorgesehen ist, die in unregelmäßigen Perioden vorliegt. Diese
Massenübertragung
ermöglicht die
Datenübertragung
in unbelegten Zeiten und nicht in den Zeiten, die von isochronen Übertragungen oder
Unterbrechungsübertragungen
genutzt werden, und erlaubt außerdem
die Prüfung
der Daten auf Korrektheit. Sie stellt deshalb einen wirksamen Übertragungsmodus
zur Datenübertragung
dar, wenn Echtzeitfunktionen nicht von Bedeutung sind, aber die
Datenzuverlässigkeit
sichergestellt werden soll.
-
1.2 Transaktionskonfiguration
-
Eine
Transaktion im USB-Massenübertragungsmodus
setzt sich grundsätzlich
aus drei Paketen zusammen, wie in 1B dargestellt
ist: einem Token-Paket, einem Datenpaket und einem Handshake-(Quittungs-)Paket.
Es ist zu beachten, dass bei der isochronen Übertragung kein Handshake-Paket erforderlich
ist.
-
In
diesem Fall ist ein Token-Paket ein Paket, das z. B. in solchen
Situationen verwendet wird, in denen der Host Lesen oder Schreiben
bezüglich
eines Endpunktes des Geräts
(Ziel) anfordert. Dieses Token-Paket hat Felder wie PID (eine Paket-ID
wie OUT, IN, SOF oder SETUP), ADDR (Geräteadresse), ENDP (Nummer des
Endpunktes) und CRC (zyklische Redundanzkontrolle), um einige Beispiele
zu nennen.
-
Ein
Datenpaket ist ein Paket zum Senden der tatsächlichen Daten und hat die
Felder PID (DATA0, DATA1), DATA (tatsächliche Daten) und CRC.
-
Ein
Handshake-Paket ist ein Paket, das empfängerseitig verwendet wird,
um die Senderseite zu informieren, ob der Datenempfang erfolgreich
war oder nicht, und hat ein PID-(ACK, NAK oder STALL)Feld.
-
Bei
einer OUT-Transaktion (Transaktion, mit der der Host Informationen
an das Gerät
ausgibt) sendet der Host zunächst
ein OUT-Token-Paket an das Gerät
wie in 1C gezeigt. Danach sendet der Host
ein OUT-Datenpaket an das Gerät.
Wenn das Gerät
das OUT-Datenpaket erfolgreich empfängt, sendet es ein ACK-Handshake-Paket
an den Host.
-
Bei
einer IN-Transaktion (Transaktion, mit der der Host Informationen
vom Gerät
eingibt) dagegen sendet der Host zunächst ein IN-Token-Paket an das
Gerät wie
in 1D gezeigt. Bei Empfang des IN-Token-Pakets sendet
das Gerät
ein IN-Datenpaket an den Host. Wenn der Host das IN-Datenpaket erfolgreich
empfängt,
sendet er ein ACK-Handshake-Paket an das Gerät.
-
Es
ist zu beachten, dass in den 1C und 1D "D ← H" bedeutet, dass Informationen
vom Host zum Gerät übertragen
werden und "D → H", dass Informationen
vom Gerät
zum Host übertragen werden
(diese Vereinbarung wird im Folgenden in den Figuren und in der
Beschreibung verwendet).
-
1.3 Nur Massen (Bulk-Only)
-
USB-Geräte sind
in eine Reihe von Klassen eingeteilt. Geräte wie Festplattenlaufwerke
und optische Plattenlaufwerke gehören zu einer als Massenspeicher
bezeichneten Klasse; die Lieferanten elektronischer Ausrüstung im
Rahmen dieser Massenspeicherklasse haben Spezifikationen wie Steuerung/Massen/Unterbrechung(CBI)-Spezifikationen und
Nur-Massen-Spezifikationen erstellt.
-
Gemäß der CBI-Spezifikation
stellt das Gerät
die Endpunkte EP0, EP1, EP2 und EP3 zur Steuerung, Masse EIN, Masse
AUS und Unterbrechung bereit, wie aus 2A ersichtlich
ist. In diesem Fall dient der Endpunkt EP0 für die Übertragung von Steuerungspaketen
auf USB-Ebene oder von Befehlspaketen. EP1 dient zur Übertragung
von OUT-Daten (Daten, die vom Host zum Gerät übertragen werden), EP2 dient
zur Übertragung
von IN-Daten (Daten, die vom Gerät
zum Host übertragen
werden) und EP3 dient zur Übertragung
von Unterbrechungs-IN-Paketen. Es ist zu beachten, dass EP1 bis EP15
geräteseitig
beliebig als Massen-OUT-, Massen-IN- und Unterbrechungs-IN-Endpunkte
zugeordnet werden können.
-
Gemäß der Spezifikation
Nur-Massen dagegen stellt das Gerät die Endpunkte EP0, EP1 und EP2
zur Steuerung, Massen-OUT und Massen-IN bereit, wie aus 2B ersichtlich
ist. In diesem Fall dient der Endpunkt EP0 zur Übertragung von Steuerungspaketen
auf USB-Ebene. EP1 dient zur Übertragung
von Befehlen (CBW) und OUT-Daten und EP2 dient zur Übertragung
des jeweiligen Status (CSW) und von IN-Datenpaketen. Es ist zu beachten, dass
EP1 bis EP15 geräteseitig
beliebig als Massen-OUT- und Massen-IN-Endpunkte zugeordnet werden
können.
-
In
diesem Fall ist eine Befehlsblock-Umwicklung (command block wrapper – CBW) ein
Paket, das einen Befehlsblock und den Befehlsblock betreffende Informationen
enthält
und das in 3 dargestellte Format hat. Eine
Befehlsstatus-Umwicklung (command status wrapper – CSW) ist
ein Paket, das den Status des Befehlsblocks enthält und das in 4 dargestellte
Format hat.
-
In 3 bedeutet
dCBWSignature Informationen zur Kennzeichnung des betreffenden Pakets als
eine CBW, dCBWTag ist ein Befehlsblock-Kennzeichen und dCBWDataTransferLength
gibt die Länge
der in der Datenphase zu übertragenden
Daten an. Das Feld bmCBWFlags ist ein Kennzeichen zur Angabe der Übertragungsrichtung
oder dgl., dCBWLUN ist eine logische Einheitenzahl, bCBWCBLength
ist die Befehlslänge
und CBWCB ist ein Befehlsblock, in dem ein ATA/ATAPI- oder SCSI-Befehl gekapselt
und beschrieben ist.
-
In 4 bedeutet
dCSWSignature Informationen zur Kennzeichnung des betreffenden Pakets als
eine CSW, dCBWTag ist ein Statusblock-Kennzeichen und der Wert von
dCBWTag der CBW, die dieser CSW entspricht, ist darin eingeschrieben.
Das Feld CSWDataResidue gibt die Differenz zwischen von dCBWDataTransferLength
der CBW angegebenen Datenlänge
und der Datenlänge
an, die das Gerät
tatsächlich
verarbeitet hat, und bCSWStatus ist ein Statusblock.
-
Die
Beschreibung geht nun zur Verarbeitung zum Schreiben oder Lesen
von Daten unter der Nur-Massen-Spezifikation
von 2B unter Bezugnahme auf die 5A und 5B über.
-
Wenn
der Host Daten nach einem Gerät schreibt,
führt er
zuerst eine Befehlsphase (Befehlstransport) aus, in der er eine
CBW an das Gerät überträgt, wie
aus 5A ersichtlich ist. Im Einzelnen überträgt der Host
ein Token-Paket, das den Endpunkt EP1 angibt, an das Gerät und dann
eine CBW (siehe A1 in den 2B und 3)
an den Endpunkt EP1 des Geräts.
Diese CBW weist einen Schreibbefehl auf. Wenn das Gerät einen
Handshake (H. S. – Quittierung)
an den Host zurückschickt,
endet die Befehlsphase.
-
Wenn
die Befehlsphase (Befehlstransport) endet, beginnt die Datenphase
(Datentransport). In dieser Datenphase überträgt der Host zuerst ein Token-Paket,
das den Endpunkt EP1 des Geräts
angibt, und dann die OUT-Daten (siehe A2 in 2B) an den
Endpunkt EP1 des Geräts.
Jede Transaktion endet, wenn ein ACK-Handshake vom Gerät an den Host
zurückgeschickt
wird. Die Transaktionen werden auf diese Weise wiederholt und die
Datenphase endet, wenn die Daten bis zu der in dCBWDataTransferLength
der CBW angegebenen Datenlänge übertragen
worden sind (siehe 3).
-
Wenn
die Datenphase (Datentransport) endet, beginnt eine Statusphase
(Statustransport). In dieser Statusphase überträgt der Host zuerst ein Token-Paket,
das den Endpunkt EP2 angibt, an das Gerät. Wenn dies geschieht, überträgt das Gerät die am Endpunkt
EP2 befindliche CSW (siehe A3 in den 2B und 4)
an den Host. Die Statusphase endet, wenn ein ACK-Handshake vom Host
an das Gerät
zurückgeschickt
wird.
-
Wenn
der Host Daten liest, überträgt er zuerst
ein Token-Paket, das den Endpunkt EP1 angibt, an das Gerät und dann
die CBW an den Endpunkt EP1 des Geräts. Diese CBW weist einen Lesebefehl auf.
Wenn ein Handshake vom Gerät
zum Host zurückkommt,
endet die Befehlsphase.
-
Wenn
die Befehlsphase endet, beginnt die Datenphase. In dieser Datenphase überträgt der Host
zuerst ein Token-Paket, das den Endpunkt EP2 angibt, an das Gerät. Wenn
dies geschieht, überträgt das Gerät die am
Endpunkt EP2 befindlichen IN-Daten (siehe A4 in 2B)
an den Host und eine Transaktion endet. Die Transaktionen werden
auf diese Weise wiederholt und die Datenphase endet, wenn die Daten
bis zu der in dCBWDataTransferLength der CBW angegebenen Datenlänge übertragen
worden sind.
-
Wenn
die Datenphase endet, beginnt die Statusphase. Die Verarbeitung
in dieser Statusphase ist ähnlich
der Verarbeitung beim Schreiben von Daten, die unter Bezugnahme
auf 5A beschrieben worden ist.
-
2. Merkmale dieser Ausführungsform
-
2.1 Konfiguration
-
Die
Konfiguration des Steuerungsgeräts
zur Datenübertragung
gemäß einer
Ausführungsform der
vorliegenden Erfindung ist in 6 dargestellt.
-
Das
Steuerungsgerät
zur Datenübertragung dieser
Ausführungsform
weist ein Sender-/Empfänger-Makro 20,
eine SIE (serial interface engine – serielle Schnittstellenmaschine) 30,
eine Endpunkt-Managementschaltung 40,
eine Puffer-Managementschaltung 50, einen Puffer 60,
eine Massenübertragungs-Managementschaltung 70 und
eine DMAC (DMA-Steuerung) 80 auf. Es ist zu beachten, dass nicht
alle in 6 dargestellten Schaltungsblöcke für das Steuerungsgerät zur Datenübertragung
der vorliegenden Erfindung erforderlich sind, so dass auf einige
von ihnen verzichtet werden könnte.
-
In
diesem Fall ist das Sender-/Empfänger-Makro 20 eine
Schaltung zur Implementierung der Datenübertragung im FS- oder HS-Modus
durch den USB (erster Bus). Eine Makrozelle, die der Sender-/Empfänger-Makrozellenschnittstelle
(UTMI) gemäß USB 2.0
entspricht, die Schnittstellenspezifikationen für Teile der Schaltung der physikalischen
Ebene und der logischen Ebene unter USB 2.0 definiert, könnte beispielsweise
als dieses Sender-/Empfänger-Makro 20 verwendet
werden. Dieses Sender-/Empfänger-Makro 20 weist
eine Sender-/Empfänger-Schaltung 22 und
eine Taktgeneratorschaltung 24 auf.
-
Die
Sender-/Empfänger-Schaltung 22 weist eine
analoge Vorstufenschaltung (Empfangs- und Sendeschaltung) zum Senden
und Empfangen der Daten durch den USB (erster Bus) unter Verwendung von
Differenzsignalen DP und DM auf. Außerdem weist sie Schaltungen
zur Verarbeitung wie Bitstopfen, Bitentstopfen, Seriell-/Parallel-Wandlung,
Parallel-/Seriell-Wandlung, NRZI-Decodierung,
NRZI-Codierung und Abtasttakterzeugung auf.
-
Die
Taktgeneratorschaltung 24 ist eine Schaltung zum Erzeugen
von Takten wie diejenigen, die bei der Erzeugung des Betriebstaktes
oder des Abtasttaktes vom Steuerungsgerät zur Datenübertra gung verwendet werden,
und weist Komponenten wie PLLs und Oszillatorschaltungen zum Erzeugen von
480 MHz- und 60 MHz-Takten auf.
-
Eine
serielle Schnittstellenmaschine (SIE) ist eine Schaltung zur Ausführung verschiedener
Verarbeitungstypen wie die USB-Paketübertragungsverarbeitung und
sie weist eine Paketsteuerungsschaltung 32, eine Wartebetriebsschaltung 34 und
eine Transaktions-Managementschaltung 36 auf.
-
Die
Paketsteuerungsschaltung 32 ist eine Schaltung zum Zusammensetzen
(Erstellen) oder Analysieren von Paketen, die aus Datenköpfen und Daten
gebildet sind, und sie weist eine CRC-Verarbeitungsschaltung 33 auf,
die CRC's erzeugt
und decodiert.
-
Die
Wartebetriebsschaltung 34 ist eine Schaltung zur Folgesteuerung
während
der Wartezeit und Wiederaufnahme der Verarbeitung.
-
Die
Transaktions-Managementschaltung 36 ist eine Schaltung
zur Verwaltung von Transaktionen, die aus Token-, Daten-, Handshake-
und anderen Paketen bestehen. Im Einzelnen bestätigt diese Schaltung bei Empfang
eines Token-Pakets, ob sie die eigene Adresse des Geräts hat oder
nicht, und wenn sie diese Adresse hat, führt sie die Verarbeitung zur Übertragung
von Paketen zum oder vom Host, dann die Verarbeitung zur Übertragung
eines Handshake-Pakets aus.
-
Die
Endpunkt-Managementschaltung 40 ist eine Schaltung zum
Verwalten der Endpunkte, die Eingänge zu den verschiedenen Speicherbereichen des
Puffers bilden, und sie weist Komponenten wie Register (einen Registersatz)
zum Speichern von Attributinformationen für diese Endpunkte auf.
-
Die
Puffer-Managementschaltung 50 ist eine Schaltung zum Verwalten
des Puffers 60 und besteht aus Komponenten wie RAM's. Im Einzelnen erzeugt sie
Schreib- oder Leseadressen und führt
die Verarbeitung zum Schreiben der Daten nach dem Puffer 60 oder
zum Lesen der Daten aus dem Puffer 60 aus.
-
Der
Puffer 60 (Paketspeichermittel) ist zur vorübergehenden
Speicherung von Daten (Paketen) zur Übertragung über den USB ausgelegt und hat verschiedene
Funktionen wie den Ausgleich eventueller Geschwindigkeitsdifferenzen
zwischen der Datenübertragungsgeschwindigkeit
des USB (erster Bus) und der Datenübertragungsgeschwindigkeit
des EBUS (zweiter Bus oder DMA-Bus). Es ist zu beachten, dass der
EBUS ein externer Bus ist, der Geräte wie Festplattenlaufwerke,
CD-Laufwerke und
Scanner miteinander verbindet.
-
Bei
dieser Ausführungsform
der vorliegenden Erfindung hat der Puffer 60 einen Datenspeicherbereich 62 (FIFO:
für FIFO
eingestellter Speicherbereich) zum Speichern von Daten (OUT-Daten),
die über
den USB (erster Bus) zu empfangen und über den EBUS (zweiter Bus)
während
der Datenübertragung
in einer ersten Richtung zu senden sind (OUT-Transaktion) sowie
von Daten (IN-Daten),
die über
den EBUS zu empfangen und über
den USB während
der Datenübertragung
in einer zweiten Richtung zu senden sind (IN-Transaktion).
-
Das
Steuerungsgerät
zur Datenübertragung dieser
Ausführungsform
bestimmt außerdem,
dass eine Datenphase (Datentransport: die Übertragung sämtlicher
Daten) während
der Datenübertragung
in der ersten Richtung beendet ist, vorausgesetzt, die Datenübertragung über den
EBUS ist beendet. In ähnlicher
Weise bestimmt es, dass die Datenphase während der Datenübertragung
in der zweiten Richtung beendet ist, vorausgesetzt, der Datenempfang über den
EBUS ist beendet und der Datenspeicherbereich 62 des Puffers 60 ist
leer geworden (eine Quittung bezüglich
des letzten Datenpakets ist über den
USB zurückgesendet
worden).
-
Wenn
der Datenempfang über
den EBUS endet und die verbliebene Datengröße (Datenlänge, Anzahl der Übertragungen)
im Datenspeicherbereich 62 (FIFO: für FIFO eingestellter Bereich)
des Puffers 60 kleiner ist als die maximale Paketgröße, überträgt das Steuerungsgerät zur Datenübertragung
dieser Ausführungsform
automatisch ein kurzes Paket (Paket mit einer kleineren Größe als die
maximale Paketgröße) des
Datenspeicherbereichs 62 über den USB, und die CPU (Firmware
oder Verarbeitungseinheit) wird durch ein Unterbrechungssignal oder
dgl. vom Vorhandensein des kurzen Pakets informiert.
-
Bei
dieser Ausführungsform
sind ein Befehlsspeicherbereich (erster Speicherbereich) für Befehlsblöcke und
ein Datenspeicherbereich (zweiter Speicherbereich) für Daten
im Puffer 60 vorgesehen, wenn ein Befehlsblock (erste Informationen)
und Daten (zweite Informationen: OUT-Daten) als Informationen zugewiesen
worden sind (siehe A1 und A2 in 2B), die über einen
Endpunkt (EP1 in 2B) zu übertragen sind.
-
Während der
Befehlsphase (erste Phase), in der ein Befehlsblock über den
USB übertragen
wird, übernimmt
die Puffer-Managementschaltung 50 die vom Host an den Endpunkt
(EP1) zu übertragenden Informationen
und schreibt sie nach einem Befehlsspeicherbereich für den Befehlsblock.
Während
der Datenphase (zweite Phase), in der Daten (OUT-Daten) über den
USB übertragen
werden, übernimmt sie
die vom Host an den Endpunkt zu übertragenden Informationen
und schreibt sie nach dem Datenspeicherbereich für die Daten. Mit anderen Worten, sie
wechselt den Schreibbereich für
Informationen (Befehlsblock oder Daten), vorausgesetzt, dass die Phase
gewechselt worden ist.
-
Alternativ
könnte
diese Ausführungsform
der vorliegenden Erfindung auf eine solche Weise konfiguriert werden,
dass ein Datenspeicherbereich (dritter Speicherbereich) für Daten
und ein Statusspeicherbereich (vierter Speicherbereich) für einen Statusblock
im Puffer vorgesehen sind, wenn Daten (dritte Informationen: IN-Daten)
und ein Statusblock (vierte Informationen) als Informationen zugewiesen worden
sind (A3 und A4 in 2B), die über einen Endpunkt (EP2 in 2B)
zu übertragen
sind.
-
Die
Puffer-Managementschaltung 50 übernimmt die vom Endpunkt (EP2)
an den Host übertragenen
Daten und liest sie während
einer Datenphase (dritte Phase), in der Daten (IN-Daten) über den
USB übertragen
werden, in den Datenspeicherbereich für Daten ein, übernimmt
die vom Endpunkt an den Host übertragenen
Informationen und liest sie während
einer Statusphase (vierte Phase), in der ein Statusblock über den
USB übertragen
wird, in einen Statusspeicherbereich für Status-Zustände ein.
Mit anderen Worten, der Lesebereich für Informationen (Daten oder
Statusblock) wird gewechselt, vorausgesetzt, dass die Phase gewechselt
worden ist.
-
Diese
Konfiguration ermöglicht
die Verarbeitung von OUT-Daten in einem Datenspeicherbereich, während Befehlsblöcke in einem
Befehlsspeicherbereich verarbeitet werden, selbst dann, wenn einem Endpunkt
eine Mehrzahl Informationstypen (Befehlsblock, OUT-Daten, IN-Daten,
Statusblock) zugewiesen worden ist. Wahlweise ermöglicht sie
die Verarbeitung eines Statusblocks im Statusspeicherbereich, während IN-Daten
im Datenspeicherbereich verarbeitet werden. Es wird deshalb möglich, die
Verarbeitungsgeschwindigkeit des Steuerungsgeräts zur Datenübertragung
zu erhöhen
und somit die Last auf der Firmware (Verarbeitungseinheit) zu verringern, wodurch
die effektive Busübertragungsgeschwindigkeit
erhöht
werden kann.
-
Die
Massenübertragungs-Managementschaltung 70 ist
eine Schaltung zur Verwaltung von Massenübertragungen unter USB.
-
Der
DMAC 80 ist eine DMA-Steuerung zur Ausführung von DMA-Übertragungen über den EBUS
und weist einen DMA-Zähler 82 auf.
Der DMA-Zähler 82 ist
eine Schaltung zum Zählen
der Größe der Daten
(Anzahl von Übertragungen
und Datenlänge),
die vom EBUS (zweiter Bus) zu senden oder zu empfangen sind.
-
2.2 Detaillierter Anschlussplan
-
7 zeigt
einen detaillierten Anschlussplan zwischen der SIE 30,
der Endpunkt-Managementschaltung 40, der Puffer-Managementschaltung 50, dem
Puffer 60, der Massenübertragungs-Managementschaltung 70 und
der DMAC 80.
-
In 7 bedeutet
SIEReadData Daten (IN-Daten), die aus dem Puffer 60 (Datenspeicherbereich 62)
auszulesen und an den Host über
den USB (erster Bus) zu übertragen
sind. SIEWriteData sind Daten (OUT-Daten), die vom Host durch den
USB zu übertragen
und nach dem Puffer 60 zu schreiben sind. DMAReadData sind
Daten, die aus dem Puffer 60 auszulesen und (durch DMA-Übertragung) an ein Gerät wie ein
Festplattenlaufwerk HDD durch den EBUS (zweiter Bus) zu übertragen
sind. DMAWriteData sind Daten, die vom HDD oder dgl. über den EBUS
zu übertragen
und nach dem Puffer 60 zu schreiben sind.
-
Ein
Signal SIEReadReq, das von der SIE 30 ausgegeben wird,
ist ein Signal, das das Lesen von SIEReadData anfordert, und SIEReadAck,
das von der Endpunkt-Managementschaltung 40 ausgegeben
wird, ist ein Quittierungssignal bezüglich SIEReadReq. Auf ähnliche
Weise ist SIEWriteReq ein Signal, das das Schreiben von SIEWriteData
anfordert, und SIEWriteAck ist ein Quittierungssignal bezüglich SIEWriteReq.
-
Das
Signal DMAReadReq, das von der DMAC 80 ausgegeben wird,
ist ein Signal, das das Lesen von DMAReadData anfordert, und DMAReadAck,
das von der Endpunkt-Managementschaltung 40 ausgegeben
wird, ist ein Quittierungssignal bezüglich DMAReadReq. Auf ähnliche
Weise ist DMAWriteReq ein Signal, das das Schreiben von DMAWriteData
anfordert, und DMAWriteAck ist ein Quittierungssignal bezüglich DMAWriteReq.
-
Das
Signal Full meldet, ob der Datenspeicherbereich 62 des
Puffers 60 voll ist oder nicht, und das Signal Empty meldet,
ob der Datenspeicherbereich 62 leer ist oder nicht. In
diesem Fall basiert die Bestimmung, ob der Datenspeicherbereich 62 voll
ist oder nicht oder ob der Datenspeicherbereich 62 leer
ist oder nicht, auf einem Zählwert
von einem Zähler 41 für die verbliebene
Datengröße, der
die Größe der im
Datenspeicherbereich 62 verbliebenen Daten (Restdatenbereich)
zählt.
-
Es
ist zu beachten, dass der Datenspeicherbereich 62 dieser
Ausführungsform
ein Bereich ist, bei dem zuerst eingegebene Daten zuerst daraus ausgegeben
werden (FIFO: für
FIFO eingestellter Bereich). In diesem Fall kann der Datenspeicherbereich 62 so
eingestellt werden, dass er ein First-in, First-out-Bereich ist, indem er
aus seriell verbundenen Registern oder einem Speicher konfiguriert
wird, oder er könnte
durch sorgfältige
Adresssteuerung des RAM als First-in, First-out-Bereich eingestellt werden.
-
Ein
Signal HaveMPS, das von der Endpunkt-Managementschaltung 40 ausgegeben
wird, meldet, ob die Größe (Datenlänge) der
im Datenspeicherbereich 62 des Puffers 60 verbliebenden
Daten der maximalen Paketgröße entspricht
oder nicht. Wird als Beispiel angenommen, dass die maximale Paketgröße 512 Byte
beträgt,
ist HaveMPS aktiv (High), wenn die verbliebene Datengröße 512 Byte (oder
mehr) beträgt,
und HaveMPS wird inaktiv (Low), wenn die verbliebene Datengröße zwischen
0 und 511 Byte liegt. In diesem Fall wird die verbliebene Datengröße vom Zähler 41 für die verbliebene
Datengröße erhalten.
-
Ein
Signal HDDATA bedeutet Daten, die durch DMA über den EBUS (zweiter Bus)
zu übertragen
sind, xDMACK ist ein Quittierungssignal bezüglich dieser DMA-Übertragung
und xDMARQ ist ein Anforderungssignal für eine DMA-Übertragung. Es ist zu beachten,
dass xHIOR ein Leseimpulssignal und xHIOW ein Schreibimpulssignal
ist.
-
Die
CPU (Firmware) verwendet ein Signal DMA_Start, um den Beginn einer
DMA-Übertragung zu
melden. Ein Signal DMA_Running meldet, dass die DMA-Übertragung über den
EBUS im Gange ist; es geht beim Beginn der der DMA-Übertragung
durch den EBUS nach aktiv (High) und am Ende der DMA-Übertragung
nach inaktiv (Low). Mit anderen Worten, DMA_Running ist während der
Periode der Datenübertragung
(Datenphase) durch den EBUS aktiv.
-
Ein
Signal AutoEnShort dient zur Einstellung der automatischen Übertragung
eines kurzen Pakets, das im Datenspeicherbereich 62 des
Puffers 60 vorhanden ist, auf entweder aktiviert oder deaktiviert. Ein
Signal EnShortPkt meldet die Übertragung
eines kurzen Pakets an die SIE 30.
-
Wenn
der Datenempfang über
den EBUS endet und außerdem
die Größe der im
Datenspeicherbereich 62 verbliebenen Daten kleiner ist
als die maximale Paketgröße, wenn
AutoEnShort z. B. auf High gesetzt ist, wird EnShortPkt aktiv. Dies
bewirkt die automatische Übertragung
des kurzen Pakets (ein Paket unter der maximalen Paketgröße), das
im Datenspeicherbereich 62 vorhanden ist, über den
USB durch die SIE 30.
-
Im
Einzelnen bedeutet dies, dass dann, wenn HaveMPS inaktiv wird (um
eine kleinere als die maximale Paketgröße zu melden), nachdem DMA_Running
inaktiv wird (Ende des Datenempfangs), EnShortPkt aktiv wird und
das kurze Paket im Datenspeicherbereich 62 automatisch
von der SIE 30 übertragen
wird.
-
Ein
Signal INTranACK ist eine Quittierung der IN-Transaktion; es geht
nach aktiv, wenn der Host entsprechend antwortet. Ein Signal BulkDMACmp meldet
während
der Massenübertragung,
dass die Datenphase (Übertragung
sämtlicher
Daten) beendet worden ist.
-
Wenn
der Datenspeicherbereich 62 leer wird und eine Quittierung
der Übertragung
des letzten Datenpakets (IN-Daten) vom Host zurückgeschickt wird, nachdem der
Datenempfang über
den EBUS beendet ist, geht INTranACK nach aktiv. Wenn dies geschieht,
wird BulkDMACmp aktiv und die Firmware (CPU) wird informiert, dass
die Datenphase (Übertragung
sämtlicher
Daten) beendet ist. Dies ermöglicht es
der Firmware, mit der Verarbeitung der anschließenden Statusphase fortzufahren.
-
2.3 Funktionsweise
-
Nunmehr
wird die Funktionsweise dieser Ausführungsform beschrieben.
-
Ein
in 8A dargestelltes Impulsdiagramm zeigt einen Fall,
bei dem die Größe des verbliebenen Bereichs
(leerer Bereich) des Datenspeicherbereichs 62 (FIFO) des
Puffers 60 größer oder
gleich ist der Größe der Daten
(Datenlänge),
die während
einer OUT-Transaktion (Datenübertragung
in einer ersten Richtung zur Übertragung
von Daten vom Host zum Gerät)
vom Host übertragen
werden. Da in diesem Fall sämtliche
Daten vom Host in den Datenspeicherbereich 62 geschrieben
werden können,
kann ein ACK zum Host zurückgeschickt
werden, wie bei C1 in 8A dargestellt ist.
-
Es
ist zu beachten, dass dann, wenn der Datenspeicherbereich 62 eine
Ein-Puffer-Struktur anstelle einer Doppelpufferstruktur hat, das
nächste
Paket vom Host im HS-Modus erst empfangen werden kann, wenn der
Datenspeicherbereich 62 geleert worden ist. In einem solchen
Fall wird deshalb NYET anstelle von ACK an den Host zurückgeschickt. Selbst
bei einer Doppelpufferstruktur könnte
es vorkommen, dass die nächsten
Daten nicht empfangen werden können,
weil beide Puffer belegt sind, wobei in diesem Fall auf ähnliche
Weise NYET anstelle von ACK an den Host zurückgeschickt wird.
-
Ein
in 8B dargestelltes Impulsdiagramm zeigt einen Fall,
bei dem die Datengröße während einer
OUT-Transaktion kleiner ist als die Größe des verbliebenen Bereichs
des Datenspeicherbereichs 62.
-
In
diesem Fall ist es nicht möglich,
alle Daten vom Host in den Datenspeicherbereich 62 zu schreiben,
so dass NAK zum Host zurückgeschickt
wird, wie bei C2 in 8B dargestellt ist. Um die Daten
zu löschen,
die durch die Datenübertragung
entsprechend dem aktuellen OUT-Token empfangen worden sind, wird
ein Signal Rewind aktiv wie bei C3 dargestellt.
-
Es
ist zu beachten, dass dann, wenn die SIE 30 SIEWriteReq
bei C4 und C5 in den 8A und 8B aktiv
macht, die Puffer-Managementschaltung 50 die Schreibadresse
für SIEWriteData
gemäß der Anweisung
von der Endpunkt-Managementschaltung 40 erzeugt und sie
zum Puffer 60 ausgibt. Dies bewirkt, dass SIEWriteData
(z. B. aus vier Bytes) in den Datenspeicherbereich 62 des
Puffers 60 geschrieben und SIEWriteAck zur SIE 30 zurückgeschickt
wird. Die Daten vom Host (z. B. 512 Datenbytes) werden sequentiell
in den Datenspeicherbereich 62 geschrieben, indem diese
Schreibverarbeitung mit jeweils vier Bytes wiederholt wird.
-
Die
Impulsdiagramme in den 8C und 8D zeigen
die PING-Transaktion (PING-Protokoll), mit der der Host das Gerät dahingehend
abfragt, ob der Datenspeicherbereich 62 leer ist oder nicht.
Diese PING-Transaktion wird im USB HS-Modus unterstützt. Dieses
Protokoll wird verwendet, wenn NYET vom Gerät bezüglich eines OUT-Token oder
OUT-Daten vom Host empfangen worden ist.
-
Wenn
während
dieser PING-Transaktion die Größe des im
Datenspeicherbereich 62 verbliebenen Bereichs (die leere
Größe) größer oder
gleich der Datengröße ist,
wird ACK zum Host zurückgeschickt, wie
bei C6 in 8C dargestellt ist. Ist dagegen
die Größe des im
Datenspeicherbereich 62 verbliebenen Bereichs kleiner als
die Datengröße, wird
NAK zum Host zurückgeschickt
wie bei C7 in 8D gezeigt.
-
Ein
in 9A dargestelltes Impulsdiagramm zeigt den Fall,
in dem die Größe der Daten
(gültige Daten),
die im Datenspeicherbereich 62 verblieben sind, größer oder
gleich ist der maximalen Paketgröße während einer
IN-Transaktion (Datenübertragung in
einer zweiten Richtung zur Übertragung
von Daten vom Gerät
zum Host). In diesem Fall wird ACK vom Host zum Gerät zurückgeschickt,
wenn Daten mit maximaler Paketgröße zum Host übertragen
worden sind, wie bei D1 in 9A gezeigt
ist.
-
Es
ist zu beachten, dass dann, wenn die SIE 30 SIEReadReq
bei D2 in 9A aktiv macht, die Puffer-Managementschaltung 50 die
Leseadresse für
SIEReadData gemäß der Anweisung
von der Endpunkt-Managementschaltung 40 erzeugt und sie zum
Puffer 60 ausgibt. Dies bewirkt, dass SIEReadData (z. B.
aus vier Bytes) in den Datenspeicherbereich 62 des Puffers 60 geschrieben
und SIEReadAck zur SIE 30 zurückgeschickt wird. Die zum Host zu übertragenden
Daten werden sequentiell in den Datenspeicherbereich 62 eingelesen,
indem diese Leseverarbeitung mit jeweils vier Bytes wiederholt wird.
-
Ein
in 9B dargestelltes Impulsdiagramm zeigt den Fall,
in dem die Größe der im
Datenspeicherbereich 62 verbliebenen Daten kleiner ist
als die maximale Paketgröße und außerdem EnShortPkt (siehe 7)
auf Low (inaktiv) liegt. In diesem Fall wird die Übertragung
eines kurzen Pakets (kleineres Paket als die maximale Paketgröße) durch
EnShortPkt auf Low gesperrt, wie bei D3, D4 und D5 in 9B gezeigt.
Als Antwort auf IN-Token vom Host wird deshalb NAK zurückgeschickt,
wie bei D6, D7 und D8 dargestellt ist.
-
Ein
in 9C dargestelltes Impulsdiagramm zeigt den Fall,
in dem die Größe der im
Datenspeicherbereich 62 verbliebenen Daten kleiner ist
als die maximale Paketgröße und außerdem EnShortPkt auf
High (aktiv) liegt. In diesem Fall wird die Übertragung eines kurzen Pakets
zugelassen, da EnShortPkt auf High liegt wie bei D9 in 9C gezeigt
und ein im Datenspeicherbereich 62 vorhandenes kurzes Paket
wird dementsprechend an den Host übertragen wie bei D10 gezeigt.
-
Es
ist zu beachten, dass der Datenspeicherbereich 62 des Puffers 60 ein
Bereich sein könnte, der
gemeinsam für
OUT- und IN-Transaktionen verwendet werden könnte, oder er könnte getrennte
Bereiche bereitstellen.
-
Ein
in 10 dargestelltes Impulsdiagramm betrifft eine
DMA-Übertragung
während
der Datenübertragung
an ein Gerät
wie ein Festplattenlaufwerk HDD.
-
Wenn
sowohl HDMARQ (siehe 7) vom Festplattenlaufwerk HDD
als auch DMA_Start von der CPU aktiv werden wie bei E1 und E2 in 10 gezeigt,
beginnt die DMA-Übertragung
und DMA_Running wird aktiv wie bei E3 gezeigt.
-
DMAReadReq
und DMAReadAck werden dann zur Quittierung verwendet wie bei E4
und E5 gezeigt und eine Datenmenge, z. B. vier Bytes (32 Bits) wird
aus dem Datenspeicherbereich 62 des Puffers 60 ausgelesen.
Die so ausgelesenen vier Byte-Daten werden z. B. als jeweils zwei
Bytes über den
16-Bit-Bus EBUS unter Verwendung des Schreibimpulssignals xHIOW
an das HDD übertragen
wie bei E6 und E7 gezeigt.
-
Mit
jeder Datenübertragung
wird der Wert Count (Anzahl der Datenübertragungen) im DMA-Zähler 82 heruntergezählt wie
bei E8 gezeigt. Es ist zu beachten, dass die Einstellung des Anfangswerts
N von Count auf dCBWDTransferLength der CBW von 3 basiert.
-
Wenn
Count 0 erreicht wie bei E9 gezeigt und die Übertragung sämtlicher
Daten über
den EBUS beendet ist, wird DMA_Running inaktiv wie bei E10 gezeigt.
-
Ein
in 11 dargestelltes Impulsdiagramm betrifft eine
DMA-Übertragung
während
des Datenempfangs von einem Gerät
wie einem Festplattenlaufwerk HDD.
-
Wenn
HDMARQ und DMA_Start aktiv werden wie bei F1 und F2 in 11 gezeigt,
beginnt die DMA-Übertragung
und DMA_Running wird aktiv wie bei F3 gezeigt.
-
Daten
vom HDD werden dann unter Verwendung des Leseimpulssignals xHIOR über den
EBUS empfangen wie bei F4 und F5 gezeigt. Die so empfangenen Daten
werden nach dem Datenspeicherbereich 62 des Puffers 60 durch
Quittierung mittels DMAWriteReq und DMAWriteAck geschrieben wie bei
F6 und F7 gezeigt.
-
Mit
jedem Datenempfang wird Count (Anzahl der Datenübertragungen) heruntergezählt wie
bei F8 gezeigt. Wenn Count 0 erreicht wie bei F9 gezeigt und die Übertragung
sämtlicher
Daten über
den EBUS beendet ist, wird DMA_Running inaktiv wie bei F10 gezeigt.
-
2.4 Erkennen des Endes
der Datenphase (Datentransport)
-
Unter
USB muss sichergestellt werden, dass die Phasen an der Host- und
der Geräteseite
während
der Datenübertragung
stets koordiniert sind, wie zuvor unter Bezugnahme auf die 5A und 5B beschrieben
worden ist.
-
Es
sei z. B. angenommen, dass der Host in 5B bestimmt
hat, dass die aktuelle Phase die Datenphase ist, während das
Gerät als
die aktuelle Phase die Statusphase bestimmt hat. Wenn dies geschieht,
wird der vom Host übertragene
IN-Token (der Token bei B4 in 5B) fälschlich
als ein IN-Token bezüglich
der CSW (B6) erkannt, was einen Datenübertragungsfehler verursachen
könnte.
-
Bei
der Bulk-Only-(nur Massen)Spezifikation von 2B werden
mehrere Informationstypen als Informationen zugeordnet, die über einen
Endpunkt zu übertragen
sind. Im Einzelnen werden eine CBW (Befehl) und OUT-Daten als Informationen
zugeordnet, die über
den Masse-Aus Endpunkt EP1 zu übertragen
sind, und eine CSW (Status) und IN-Daten werden als Informationen
zugeordnet, die über
den Masse-Ein Endpunkt EP2 zu übertragen
sind. Der Host und das Gerät
müssen
deshalb unterscheiden, welcher Informationstyp über jeden der Endpunkte zu übertragen
ist. Bei der Bulk-Only-(nur
Massen)Spezifikation bestimmen der Host und das Gerät, welche
Phase die aktuelle Phase ist, und erkennen außerdem diese Informationen.
-
Da
die aktuelle Phase z. B. die Befehlsphase bei B1 und B2 in den 5A und 5B ist,
wird bestimmt, dass die über
den Endpunkt EP1 zu übertragenden
Informationen eine CBW sind. Da die aktuelle Phase eine Datenphase
bei B3 und B4 ist, wird bestimmt, dass die über den Endpunkt EP1 zu übertragenden
Informationen OUT-Daten und die über
den Endpunkt EP2 zu übertragenden
Informationen IN-Daten sind. Da ferner die aktuelle Phase die Statusphase
bei B5 und B6 ist, wird bestimmt, dass die über den Endpunkt EP2 zu übertragende
Information eine CSW ist.
-
Unter
USB ist es erforderlich, dass sowohl der Host als auch das Gerät genau
erkennen, welche Phase die aktuelle Phase ist. Es ist deshalb wünschenswert,
eine genaue Bestimmung selbst während
des Wechsels z. B. von der Datenphase zur Statusphase zu ermöglichen.
-
Bei
dieser Ausführungsform
wird die Bestimmung des Wechsels von der Datenphase zur Statusphase,
mit anderen Worten, die Bestimmung des Endes der Datenphase, durch
das nachstehend beschriebene Verfahren implementiert.
-
Für eine OUT-Transaktion
(Datenübertragung
in einer ersten Richtung), in der z. B. OUT-Daten vom Host zum Gerät übertragen
werden, wird das Ende der Datenphase (das Ende der gesamten Datenübertragung
und der Wechsel der Phasen) gemäß 12 bestimmt.
-
Im
Einzelnen beginnt die Datenübertragung (Datenphase) über den
USB (erster Bus) wie bei G1 in 12 gezeigt.
Wenn die so übertragenen
Daten in den Datenspeicherbereich 62 des Puffers 60 geschrieben
werden, wird das Signal Empty, das meldet, ob der Datenspeicherbereich 62 leer
ist oder nicht, inaktiv wie bei G2 gezeigt, um zu melden, dass der
Datenspeicherbereich 62 nicht leer ist.
-
Die
CPU veranlasst dann, dass DMA_Running nach aktiv geht, indem DMA_Start
auf aktiv gesetzt wird, wie bei G3 und G4 gezeigt ist, und die Datenübertragung
(EBUS-Datenphase) über
den EBUS (zweiter Bus) beginnt.
-
Wenn
die Datenübertragung über den
USB bei G5 endet und die Datenübertragung
(DMA-Übertragung) über den
EBUS bei G6 endet, endet die Datenphase und es wird bestimmt, dass
ein Wechsel von der Datenphase zur Statusphase erfolgt.
-
Die
Taktung von G6 wird bis nach der Taktung von G5 verzögert, die
die USB-Datenübertragung
beendet. Diese G6-Taktung stimmt auch die Taktung bei G7 ab, bei
der das Signal Empty nach aktiv geht, da der Datenspeicherbereich 62 des
Puffers 60 leer ist.
-
Bei
dieser Ausführungsform
wird die Taktung von G6 unter Verwendung des DMA-Zählers 82 von 12 bestimmt,
der an der EBUS-Seite vorgesehen ist, um die Datengröße (Anzahl
der Übertragungen
und Datenlänge)
zu zählen
(siehe E9 in 10).
-
Bei
dieser Ausführungsform
wird das Ende der Datenphase aufgrund der Bedingung, dass die Datenübertragung über den
EBUS (zweiter Bus) während
einer OUT-Transaktion (Datenübertragung in
der ersten Richtung) beendet worden ist, bestimmt.
-
Bei
einer IN-Transaktion (Datenübertragung in
der zweiten Richtung) dagegen, bei der IN-Daten vom Gerät zum Host übertragen
werden, wird das Ende der Datenphase (Ende der gesamten Datenübertragung
und Wechsel der Phasen) wie in 13 gezeigt
bestimmt.
-
Im
Einzelnen geht DMA_Running nach aktiv und die Datenübertragung über den
EBUS beginnt, wenn die CPU DMA_Start auf aktiv setzt, wie bei H1 und
H2 gezeigt. Wenn die Daten, die über
den EBUS übertragen
worden sind, in den Datenspeicherbereich 62 des Puffers 60 geschrieben
werden, wird Empty inaktiv, wie bei H3 gezeigt, um zu melden, dass
der Datenspeicherbereich 62 nicht leer ist.
-
Dann
beginnt wie bei H4 gezeigt die Datenübertragung durch den USB. Die
durch den USB zu übertragenden
Daten werden aus dem Datenspeicherbereich 62 ausgelesen
und Empty wird aktiv, wenn der Datenspeicherbereich 62 leer
wird.
-
Nachdem
bei dieser Ausführungsform
bestimmt worden ist, dass die Datenübertragung über den EBUS (zweiter Bus)
beendet ist wie bei H6 gezeigt, wird bestimmt, dass die Datenphase
(Übertragung
sämtlicher
Daten) zu dem Zeitpunkt beendet worden ist, zu dem der Datenspeicherbereich 62 leer und
das Signal Empty aktiv wird wie bei H7 gezeigt. In diesem Fall kann
die Taktung von H6 bestimmt werden, indem der DMA-Zähler 82 verwendet
wird, der an der EBUS-Seite vorgesehen ist, um die Größe der vom
EBUS übertragenen
Daten zu zählen.
Die Taktung von H7 stimmt mit der Taktung von H8 am Ende der Datenübertragung
(Datenphase) über
den USB (erster Bus) überein.
-
Bei
dieser wie oben beschrieben konfigurierten Ausführungsform wird das Ende der
Datenphase während
einer IN-Transaktion (Datenübertragung
in der zweiten Richtung) aufgrund der Bedingung, dass der Datenempfang
durch den EBUS (zweiter Bus) beendet ist und auch der Datenspeicherbereich
des Puffers 60 leer geworden ist, bestimmt.
-
Ein
anderes Verfahren, das beispielsweise in Betracht gezogen werden
könnte,
unterscheidet sich von dieser in den 12 und 13 dargestellten Ausführungsform
dahingehend, dass sowohl an der EBUS- als auch an der USB-Seite
Zähler
zum Zählen der
Datengröße bereitgestellt
sind. Bei einem solchen Verfahren wird das Ende der Datenphase während einer
OUT-Transaktion aufgrund der Bedingung, dass der Zählwert des
Zählers
an der EBUS-Seite 0 erreicht hat, bestimmt, während das Ende der Datenphase
in einer IN-Transaktion aufgrund der Bedingung, dass der Zählwert des
Zählers an
der USB-Seite 0 erreicht hat, bestimmt wird.
-
Bei
diesem Verfahren ist jedoch die Bereitstellung von zwei Zählern erforderlich
und die Verarbeitung zur Steuerung dieser beiden Taktgeber ist schwierig.
Als Ergebnis werden die Schaltungssteuerung und die Schaltungskonfiguration
kompliziert, was zu einer Zunahme der Größe und einem Anstieg der Kosten
des resultierenden Steuerungsgeräts
zur Datenübertragung
führt.
Die Verarbeitung der Firmware (CPU), die das Steuerungsgerät zur Datenübertragung
steuert, wird ebenfalls kompliziert und es besteht die Gefahr, dass
sich die effektive Datenübertragungsgeschwindigkeit
aufgrund eines solchen Verarbeitungszusatzaufwands verschlechtert.
-
Im
Gegensatz dazu ist beim Verfahren der in den 12 und 13 dargestellten
Ausführungsform
die Bereitstellung nur eines Zählers
an der EBUS-Seite (zweiter Bus) erforderlich wie in 7 gezeigt,
so dass es nicht notwendig ist, einen Zähler an der USB-Seite (erster
Bus) bereitzustellen. Es ist deshalb möglich, die Schaltungssteuerung
sowie die Schaltungskonfiguration zu vereinfachen, wodurch das Steuerungsgerät zur Datenübertragung
kompakter und preisgünstiger
hergestellt werden kann. Die Firmware-Verarbeitung zur Steuerung
des Steuerungsgeräts
zur Datenübertragung
kann ebenfalls vereinfacht werden, was eine Erhöhung der effektiven Datenübertragungsgeschwindigkeit
ermöglicht.
-
Es
ist zu beachten, dass dann, wenn der Datenempfang über den
EBUS (zweiter Bus) bei dieser Ausführungsform endet, wie bei H9
in 13 dargestellt ist, der Status dieses Datenempfangs
von der Seite des Festplattenlaufwerks HDD abgefragt wird und die
in 4 dargestellte Erzeugung der CSW (Status) auf
dem so abgefragten Status basiert. Diese Verarbeitung zur CSW-Erzeugung
könnte
z. B. durch die Firmware erfolgen.
-
Die
so erzeugte CSW wird über
den USB (erster Bus) in der Statusphase nach dem Ende der Datenphase
zur Host-Seite übertragen
wie bei H10 in 13 dargestellt.
-
Dies
ermöglicht
es, die Periode, während
der die Datenübertragung über den
USB erfolgt, wirksam zu nutzen, um den Status von der HDD-Seite
abzufragen und die CSW zu erzeugen wie bei H9 in 13 dargestellt.
Nach dem Übergang
von der Datenphase zur Statusphase ist es möglich, sofort eine CSW bezüglich eines
IN-Token vom Host zurückzuschicken
wie bei H10 gezeigt. Es ist deshalb möglich, die Häufigkeit,
mit der NAK als Antwort auf IN-Token vom Host zurückgeschickt
wird, zu verringern, wodurch die effektive Datenübertragungsgeschwindigkeit
erhöht
wird.
-
2.5 Automatische Übertragung
eines kurzen Pakets
-
Unter
USB hat ein kurzes Paket eine spezielle Bedeutung als Nutzlastgröße, die
kleiner ist als die maximale Paketgröße.
-
Mit
anderen Worten, wenn ein kurzes Paket vom Gerät eingeht, bestimmt der Host,
dass dies das Ende der Datenphase ist und geht weiter zur Statusphase.
Das Gerät
steuert deshalb die Datenübertragung,
um sicherzustellen, dass kein kurzes Paket zum Host geschickt wird,
ausgenommen, die Datenphase soll beendet werden.
-
Im
Einzelnen prüft
das Gerät
stets die Größe der im
Datenspeicherbereich 62 des Puffers 60 verbliebenen
Daten. Wenn die verbliebene Datengröße größer oder gleich ist der maximalen
Paketgröße, wird
aus den verbliebenen Daten ein Datenpaket der maximalen Paketgröße für die Übertragung
zum Host erzeugt. Wenn bestimmt wird, dass die verbliebene Datengröße kleiner
ist als die maximale Paketgröße, gestattet
es die Übertragung
eines kurzen Pakets und sendet ein Paket aus dieser verbliebenen Datengröße als kurzes
Paket an den Host. Dies aktiviert das Ende der Datenphase.
-
Wenn
jedoch die Größe der im
Datenspeicherbereich 62 verbliebenen Daten stets auf diese
Weise geprüft
und die Verarbeitung entsprechend dem Ergebnis dieser Prüfung angepasst
wird, könnte es
geschehen, dass die Verarbeitungslast der Firmware (CPU), die diese
Prüfungsverarbeitung
ausführt,
extrem hoch wird. Außerdem
könnte
dies zu einer Situation führen,
in der dieser Zusatzaufwand der Firmware-Verarbeitung eine Verschlechterung
der effektiven Datenübertragung
verursachen könnte.
-
Das
ist der Grund, warum diese Ausführungsform
sich eines Verfahrens bedient, bei dem ein kurzes Paket im Datenspeicherbereich 62 automatisch
(durch Hardware-Verarbeitung, nicht durch Firmware-Verarbeitung) über den
USB (erster Bus) übertragen
wird, wenn der Datenempfang (DMA-Übertragung) über den
EBUS (zweiter Bus) beendet ist und auch die Größe der im Datenspeicherbereich 62 verbliebenen
Daten (gültige
Daten) kleiner ist als die maximale Paketgröße.
-
Ein
in 14 dargestelltes Impulsdiagramm zeigt den z. B.
Fall, in dem die Größe der im
Datenspeicherbereich 62 verbliebenen Daten kleiner ist
als die maximale Paketgröße während einer
IN-Transaktion (Datenübertragung
in der zweiten Richtung).
-
In 14 wird
ein Signal AutoEnShort (siehe 7), das
die automatische Übertragung
eines kurzen Pakets (automatische Übertragung) entweder aktiviert
oder deaktiviert, auf aktiv (High) gelegt wie bei I1 dargestellt.
Der Pegel von AutoEnShort wird von der Firmware (CPU) eingestellt,
die einen gegebenen Wert in ein Register AutoEnShort während der Auflistung
schreibt. In diesem Fall könnte
AutoEnShort für
ein Gerät,
bei dem die automatische Übertragung
kurzer Pakete stets gültig
wäre, wie
beispielsweise ein Massenspeichergerät, immer auf aktiv eingestellt
werden.
-
Es
sei angenommen, dass die Datenübertragung über den
EBUS in dem Zustand endet, wie bei I2 dargestellt, in dem AutoEnShort
auf aktiv eingestellt worden ist, wie bei I1 in 14 dargestellt,
und ein letztes Paket Dn – 1
mit maximaler Paketgröße (z. B.
512 Bytes) zu übertragen
ist, wie bei I3 dargestellt ist.
-
Wenn
in diesem Fall die Größe der im
Datenspeicherbereich 62 verbliebenen Daten kleiner ist
als die maximale Paketgröße, geht
EnShortPkt nach aktiv, wie bei I4 dargestellt, um der SIE 30 die
automatische Übertragung
eines kurzen Pakets zu melden. Mit anderen Worten, EnShortPkt geht
nach aktiv, wenn AutoEnShort aktiv und HaveMPS, das meldet, ob die
Größe der verbliebenen
Daten der maximalen Paketgröße entspricht
oder nicht, inaktiv ist.
-
Wenn
EnShortPkt nach aktiv geht, wird das im Datenspeicherbereich 62 vorhandene
kurze Paket von der Hardware (SIE 30) und nicht durch Firmware-Verarbeitung
automatisch an den Host übertragen,
wie bei I5 in 14 dargestellt ist. Wenn ein
kurzes Paket über
den USB übertragen
wird, endet die Datenphase bei I6 und die Statusphase beginnt.
-
Mit
dem Verfahren gemäß dieser
in 14 dargestellten Ausführungsform kann ein kurzes
Paket im Datenspeicherbereich 62 automatisch von der Hardware übertragen
werden, indem AutoEnShort auf aktiv eingestellt wird. Die Firmware
braucht deshalb keine Verarbeitung auszuführen, um die Größe der im
Datenspeicherbereich 62 verbliebenen Daten zu prüfen. Als
Ergebnis kann die Verarbeitungslast der Firmware verringert werden,
was eine Zunahme der effektiven Datenübertragungsgeschwindigkeit
ermöglicht.
-
Es
kommt häufig
vor, dass eine kostengünstigere
CPU, die mit einer Taktfrequenz von 20 bis 50 MHz arbeitet, an der
Geräteseite
verwendet wird, um die Kosten zu senken. Wenn der Prozess der Prüfung der
Größe der verbliebenen
Daten von der Firmware, die auf der CPU läuft, ausgeführt wird, ist es deshalb möglich, dass
der Zeitpunkt des Übergangs zur
Statusphase bei I6 stark verzögert
wird.
-
Im
Gegensatz dazu macht es das Verfahren dieser in 14 dargestellten
Ausführungsform möglich, in
einem früheren
Stadium zur Statusphase zu wechseln, da der Prozess der Prüfung der
Größe der verbliebenen
Daten nicht von der Firmware ausgeführt wird. Als Ergebnis kann
die effektive Datenübertragungsgeschwindigkeit
weitaus deutlicher erhöht
werden als in dem Fall, in dem der Prozess der Prüfung der
Größe der verbliebenen
Daten von der Firmware ausgeführt
wird.
-
Es
ist zu beachten, dass es bei dieser Ausführungsform möglich ist,
frei einzustellen, ob die automatische Übertragung eines kurzen Pakets
aktiviert oder deaktiviert werden soll, indem die Einstellung von
AutoEnShort geändert
wird.
-
Beispielsweise
bei einem Massenspeichergerät
wie einem Festplattenlaufwerk oder einem CD-Laufwerk, bei dem die automatische Übertragung
eines kurzen Pakets immer gültig
ist, wird AutoEnShort auf aktiv eingestellt. Dies ermöglicht die
automatische Übertragung
eines kurzen Pakets und den Wechsel zur Statusphase ohne Firmware-Verarbeitung.
-
Bei
einem Gerät
wie einem Scanner dagegen, bei dem Informationen wie die Datengröße den über den
EBUS (zweiter Bus) empfangenen Daten zur Übertragung über den USB (erster Bus) angefügt sind,
wird AutoEnShort auf inaktiv (Low) eingestellt.
-
Mit
anderen Worten, es ist nicht möglich
die endgültige
Datengröße bei einem
Scanner zu definieren, bevor nicht das Abrufen der Daten abgeschlossen
ist. Das Steuerungsgerät
zur Datenübertragung
fügt deshalb
Steuerinformationen (Datenkopf und Fußzeile) hinzu, die die Datengröße angeben,
nachdem die Daten vom Scanner empfangen worden sind, die dann zum
Host übertragen
werden. Aus diesem Grund stimmt die Größe der über den EBUS übertragenen
Daten nicht mit der Größe der über den
USB übertragenen
Daten überein,
so dass die bedingungslose Übertragung
eines kurzen Pakets an den Host nicht zugelassen werden kann, und deshalb
ist es erforderlich, AutoEnShort auf inaktiv zu legen.
-
Diese
Ausführungsform
ermöglicht
deshalb auch die flexible Einstellung der Datenübertragung bei Geräten wie
Scannern abgesehen von Massenspeichergeräten wie Festplattenlaufwerken,
indem die automatische Übertragung
eines kurzen Pakets frei auf aktiviert oder deaktiviert eingestellt
werden kann.
-
2.6 Meldung des Vorliegens
eines kurzen Pakets
-
Das
in 14 dargestellte Signal AutoEnShort dient zur automatischen Übertragung
eines kurzen Pakets im Datenspeicherbereich 62.
-
Andererseits
könnte
die CPU (Firmware) über
das Vorhandensein eines kurzen Pakets im Datenspeicherbereich 62 informiert
werden. Im Einzelnen ist die Konfiguration so beschaffen, dass ein
Unterbrechungssignal (Interrupt) verwendet wird, um die CPU (Verarbeitungseinheit) über das
Vorhandensein eines kurzen Pakets im Datenspeicherbereich 62 zu
informieren, wenn der Datenempfang über den EBUS (zweiter Bus)
endet und außerdem die
Größe der im
Datenspeicherbereich 62 verbliebenen Daten kleiner ist
als die maximale Paketgröße.
-
Ein
detailliertes Beispiel der Anschlüsse zwischen der SIE 30,
der Endpunkt-Managementschaltung 40, der Puffer-Managementschaltung 50,
dem Puffer 60, der Massenübertragungs-Managementschaltung 70 und
der DMAC 80 bei Verwendung eines derartigen Verfahrens
ist in 15 dargestellt.
-
15 unterscheidet
sich von der zuvor beschriebenen 7 darin,
dass die Massenübertragungs- Managementschaltung 70 ein
Unterbrechungssignal ShortINT an die CPU (an ein Register, auf das
die CPU zugreifen kann) ausgibt und EnShortPkt von der CPU eingestellt
und in die SIE 30 eingegeben wird.
-
In
diesem Fall ist ShortINT ein Unterbrechungssignal, mit dem die CPU über das
Vorhandensein eines kurzen Pakets im Datenspeicherbereich 62 informiert
wird, und EnShortPkt ist ein Signal, das der SIE 30 die Übertragung
des kurzen Pakets durch die CPU meldet.
-
Wenn
z. B. HaveMPS inaktiv wird (kleiner als die maximale Paketgröße), nachdem
DMA_Running inaktiv geworden ist (Ende des Datenempfangs), wird
ShortINT aktiv, um die CPU über
das Vorhandensein eines kurzen Pakets im Datenspeicherbereich 62 zu
informieren, das übertragen
werden kann.
-
Wenn
dies geschieht, führt
die CPU eine Bestimmungsverarbeitung zur Übertragung des kurzen Pakets
aus, und wenn bestimmt wird, dass ein kurzes Paket übertragen
werden kann, stellt sie EnShortPkt auf aktiv ein. Dies veranlasst
die SIE 30, das kurze Paket, das sich im Datenspeicherbereich 62 befindet, zu
lesen und eine Verarbeitung auszuführen, um es über den
USB an den Host zu übertragen.
-
16 ist
ein Impulsdiagramm, das die Funktionsweise während einer IN-Transaktion
(Datenübertragung
in der zweiten Richtung) zeigt, wenn die Größe der im Datenspeicherbereich 62 verbliebenen
Daten kleiner ist als die maximale Paketgröße.
-
In 16 wird
AutoEnShort, das einstellt, ob die automatische Übertragung eines kurzen Pakets aktiviert
oder deaktiviert wird, bei J1 inaktiv (Low). In diesem Zustand endet
die Datenübertragung über den
EBUS bei J2 und das letzte Paket Dn – 1 mit maximaler Paketgröße wird
bei J3 vom USB übertragen.
-
Wenn
in einem solchen Fall die Größe der im Datenspeicherbereich 62 verbliebenen
Daten kleiner ist als die maximale Paketgröße, geht das Unterbrechungssignal
ShortINT nach aktiv, um die CPU über das
Vorhandensein des kurzen Pakets zu informieren, wie bei J4 gezeigt.
Mit anderen Worten, ShortINT geht nach aktiv, wenn DMA_Running inaktiv
ist und HaveMPS, das meldet, ob die verbliebene Datengröße der maximalen
Paketgröße entspricht
oder nicht, inaktiv ist.
-
Wenn
dies geschieht, führt
die CPU (Firmware), die dieses ShortINT erhalten hat, eine Verarbeitung
aus, um Informationen wie die Datengröße zu den empfangenen Daten
hinzuzufügen
(Verarbeitung zum Schreiben der angefügten Informationen nach dem
Datenspeicherbereich 62). EnShortPkt geht dann nach aktiv,
wie bei J5 dargestellt ist. Dies bewirkt die Übertragung der Daten im Datenspeicherbereich 62 von
der SIE 30 an den Host wie bei J6 gezeigt. Die Datenphase
endet dann und die Statusphase beginnt wie bei J7 gezeigt.
-
Bei
dem Verfahren der in 16 dargestellten Ausführungsform
wird ShortINT verwendet, um die auf der CPU laufende Firmware über das
Vorhandensein des kurzen Pakets im Datenspeicherbe reich 62 zu
informieren. Dies ermöglicht
die Implementierung einer geeigneten Datenübertragung sogar in einem Gerät wie einem
Scanner, bei dem Informationen wie die Datengröße schließlich zu den empfangenen Daten
hinzugefügt
werden.
-
2.7 Firmware-Verarbeitung
-
Ein
Flussdiagramm der von der Firmware eines Vergleichsbeispiels während einer
IN-Transaktion ausgeführten
Verarbeitung ist in 17A dargestellt. In ähnlicher
Weise zeigt 17B ein Flussdiagramm der von
der Firmware gemäß dem Verfahren dieser
Ausführungsform,
das ein kurzes Paket automatisch überträgt, ausgeführten Verarbeitung.
-
Im
Vergleichsbeispiel von 17A legt
die Firmware zuerst DMA_Start auf 1 (High), um den Beginn einer
DMA-Übertragung über den
EBUS zu veranlassen (Schritt S1). Dann prüft sie DMA_Running, um zu bestimmen,
ob die DMA-Übertragung über den
EBUS beendet ist oder nicht (Schritt S2).
-
Wenn
bestimmt worden ist, dass die DMA-Übertragung beendet ist, verwendet
die Firmware IntranACK, um ACK von der USB-Seite zu erkennen (Schritt
S3). Wenn ACK erkannt worden ist, prüft die Firmware die Größe der im
Datenspeicherbereich des Puffers verbliebenen Daten RSD (Schritt S4).
Wenn RDS größer oder
gleich ist der maximalen Paketgröße MaxPacketSize,
geht der Prozess zu Schritt S3 zurück, um auf das Eintreffen des
nächsten
ACK zu warten.
-
Wenn
dagegen RDS kleiner ist als MaxPacketSize, wird EnShortPkt auf 1
gelegt (Schritt S5). Dies bewirkt die Übertragung eines kurzen Pakets vom
Datenspeicherbereich zum Host. Der Prozess geht dann zu Schritt
S3 zurück,
um auf das nächste ACK
zu warten.
-
Wenn
RDS 0 ist, wird angenommen, dass sämtliche Daten im Datenspeicherbereich überfragen
worden sind, so dass die Firmware den EBUS-seitigen Status abfragt
(Schritt S6). Die Firmware erzeugt die CSW auf Basis des so abgefragten Status
und stellt den an die USB-Seite zu sendenden Status ein (Schritt
S7).
-
Bei
dieser in 17B dargestellten Ausführungsform
stellt die Firmware zuerst DMA_Start auf 1, um den Beginn der DMA-Übertragung über den EBUS
zu veranlassen (Schritt S11). Es ist zu beachten, dass AutoEnShort
vor der DMA-Übertragung
auf 1 gesetzt wird. Die Firmware prüft DMA_Running, um zu bestimmen,
ob die DMA-Übertragung über den EBUS
beendet ist oder nicht (Schritt S12).
-
Wenn
bestimmt worden ist, dass die DMA-Übertragung beendet worden ist
(I2 in 14), fragt die Firmware den
EBUS-seitigen Status ab (Schritt S13). Die Firmware bestimmt dann,
ob die Datenphase (Übertragung
sämtlicher
Daten) beendet worden ist oder nicht (Schritt S14). Mit anderen Worten,
sie bestimmt, ob der Datenspeicherbereich des Pufferbereichs leergeworden
ist und das das letzte Paket betreffende ACK vom Host zurückgeschickt
worden ist oder nicht. Wenn bestimmt worden ist, dass die Datenphase
beendet ist, erzeugt die Firmware die CSW auf Basis des in Schritt
S13 abgefragten Status und stellt den an die USB-Seite zu sendenden
Status ein (Schritt S15).
-
Auf
diese Weise ist die Verarbeitung zur Prüfung der Größe der verbliebenen Daten (Schritt
S4), die beim Vergleichsbeispiel von 17A notwendig ist,
bei der Ausführungsform
von 17B nicht erforderlich. Die
Verarbeitung zum Einstellen von EnShortPkt auf aktiv erfolgt ebenfalls
hardwaremäßig, so dass
keine Notwendigkeit besteht, dies durch die Firmware auszuführen. Es
ist deshalb möglich,
die Verarbeitungslast der Firmware zu verringern, wodurch die effektive
Datenübertragungsgeschwindigkeit
erhöht
wird.
-
Das
Flussdiagramm von 18 zeigt die Verarbeitung, die
von der Firmware in dem Verfahren ausgeführt wird, bei dem ein Unterbrechungssignal (Interrupt)
verwendet wird, um die Firmware über
das Vorhandensein eines kurzen Pakets zu informieren (15 und 16).
-
In 18 veranlasst
die Firmware zunächst den
Beginn der DMA-Übertragung
durch den EBUS und bestimmt dann, ob die DMA-Übertragung beendet worden ist
oder nicht (Schritte S21 und S22).
-
Wenn
bestimmt worden ist, dass die DMA-Übertragung beendet ist, bestimmt
die Firmware, ob das Unterbrechungssignal ShortINT erkannt worden
ist oder nicht (bei J4 in 16) (Schritt S23).
Wenn ShortINT erkannt worden ist, schreibt die Firmware die an die
empfangenen Daten der DMA-Übertragung
anzufügenden
Informationen (wie die Datengröße) nach
dem Datenspeicherbereich (FIFO) (Schritt S24).
-
Wenn
bestimmt worden ist, dass alle Informationen angefügt worden
sind (Schritt S25), setzt die Firmware EnShortPkt auf 1 (Schritt
S26).
-
Dann
erkennt sie ACK von der USB-Seite (Schritt S27). Wenn ACK erkannt
worden ist, prüft
die Firmware, ob die Größe der verbliebenen
Daten RDS im Datenspeicherbereich 0 ist oder nicht (Schritt S28).
Wenn RDS nicht 0 ist, geht der Prozess zu Schritt S27 zurück und die
Firmware wartet auf das nächste
zu erkennende ACK.
-
Ist
dagegen RDS 0, wird angenommen, dass sämtliche Daten im Datenspeicherbereich übertragen
worden sind, so dass die Firmware den EBUS-seitigen Status abfragt
(Schritt S29). Die Firmware erzeugt die CSW auf Basis des so abgefragten Status
und stellt den an die USB-Seite zu sendenden Status ein (Schritt
S30).
-
3. Elektronische
Ausrüstung
-
Die
Beschreibung geht nunmehr zu Beispielen elektronischer Ausrüstung über, die
das Steuerungsgerät
zur Datenübertragung
dieser Ausführungsform
der Erfindung aufweisen.
-
Ein
internes Blockdiagramm eines Druckers, der ein Beispiel für eine derartige
elektronische Ausrüstung
ist, ist in 19A dargestellt, während 20A eine Außenansicht
desselben zeigt. Eine CPU (Mikrocomputer) 510 hat verschiedene
Funktionen einschließlich
der Steuerung des gesamten Systems. Ein Bedienungsabschnitt 511 ist
so ausgelegt, dass er es dem Benutzer ermöglicht, den Drucker zu betreiben.
Daten wie ein Steuerprogramm und Schriftarten sind in einem ROM 516 gespeichert
und ein RAM 517 dient als Arbeitsspeicher für die CPU 510.
Eine DMAC 518 ist eine DMA-Steuerung zur Übertragung
von Daten über
die CPU 510. Ein Anzeigefeld 519 ist so gestaltet,
dass sich der Benutzer über
den Betriebszustand des Druckers informieren kann.
-
Serielle
Druckdaten, die von einem anderen Gerät wie einem Personal Computer über den
USB gesendet worden sind, werden vom Steuerungsgerät 500 zur
Datenübertragung
zu parallelen Druckdaten gewandelt. Die so gewandelten parallelen
Druckdaten werden von der CPU 510 oder der DMAC 518 zu einem
Druckverarbeitungsabschnitt (einer Druckermaschine) 512 geschickt.
Diese parallelen Druckdaten werden im Druckverarbeitungsabschnitt 512 einer
gegebenen Verarbeitung unterzogen und werden zum Drucken auf Papier
durch einen Druckabschnitt (Gerät
zur Datenausgabe) 514, der Komponenten wie einen Druckkopf
aufweist, ausgegeben.
-
Ein
internes Blockdiagramm eines Scanners, bei dem es sich um ein anderes
Beispiel für
die elektronische Ausrüstung
handelt, ist in 19B dargestellt, während 20B eine Außenansicht
desselben zeigt. Eine CPU 520 hat verschiedene Funktionen
einschließlich
der Steuerung des gesamten Systems. Ein Bedienungsabschnitt 521 ist
so ausgelegt, dass er es dem Benutzer ermöglicht, den Scanner zu betreiben.
Daten wie ein Steuerprogramm sind in einem ROM 526 gespeichert
und ein RAM 527 dient als Arbeitsspeicher für die CPU 520.
Eine DMAC 528 ist eine DMA-Steuerung.
-
Ein
Bild eines Dokuments wird durch einen Bildleseabschnitt (Gerät zum Abrufen
von Daten) 522 eingelesen, der Komponenten wie eine Lichtquelle
und einen optoelektrischen Wandler aufweist, und die Daten des eingelesenen
Bildes werden durch einen Bildverarbeitungsabschnitt (Scanner-Maschine) 524 verarbeitet.
Die verarbeiteten Bilddaten werden von der CPU 520 oder
der DMAC 528 an das Steuerungsgerät 500 zur Datenübertragung
geschickt. Das Steuerungsgerät 500 zur
Datenübertragung
wandelt diese parallelen Bilddaten zu seriellen Daten und sendet
sie über
den USB an ein anderes Gerät
wie einen Personal Computer.
-
Ein
internes Blockdiagramm eines CD-RW(Lesen/Schreiben)-Laufwerks, bei
dem es sich um ein weiteres Beispiel für die elektronische Ausrüstung handelt,
ist in 19C dargestellt, während 20C eine Außenansicht
desselben zeigt. Eine CPU 530 hat verschiedene Funktionen
einschließlich
der Steuerung des gesamten Systems. Ein Bedienungsabschnitt 531 ist
so ausgelegt, dass er es dem Benutzer ermöglicht, das CD-RW-Laufwerk
zu betreiben. Daten wie ein Steuerprogramm sind in einem ROM 536 gespeichert
und ein RAM 537 dient als Arbeitsspeicher für die CPU 530.
Eine DMAC 538 ist eine DMA-Steuerung.
-
Die
aus einem CD-RW 532 durch einen Lese-/Schreibabschnitt
(Gerät
zum Abrufen von Daten oder Gerät
zum Speichern von Daten) 533 ausgelesenen Daten, der Komponenten
wie einen Laser, einen Motor und ein optisches System aufweist,
werden in einen Signalverarbeitungsabschnitt 534 eingegeben,
wo sie einer gegebenen Signalverarbeitung wie einer Fehlerkorrektur
unterzogen werden. Die Daten, die dieser Signalverarbeitung unterzogen worden
sind, werden von der CPU 530 oder der DMAC 538 an
das Steuerungsgerät 500 zur
Datenübertragung
geschickt. Das Steuerungsgerät 500 zur Datenübertragung
wandelt diese parallelen Daten zu seriellen Daten und sendet sie dann über den
USB an ein anderes Gerät
wie einen Personal Computer.
-
Serielle
Daten dagegen, die von einem anderen Gerät über den USB eingehen, werden
vom Steuerungsgerät 500 zur
Datenübertragung
zu parallelen Daten gewandelt. Diese parallelen Daten werden von
der CPU 530 oder der DMAC 538 an den Signalverarbeitungsabschnitt 534 geschickt.
Diese parallelen Druckdaten werden vom Signalverarbeitungsabschnitt 534 einer
gegebenen Signalverarbeitung unterzogen und dann vom Lese-/Schreib-Abschnitt 533 im
CD-RW 532 gespeichert.
-
Es
ist zu beachten, dass eine getrennte CPU zur Steuerung der Datenübertragung
durch das Steuerungsgerät 500 zur
Datenübertragung
zusätzlich
zur CPU 510, 520 oder 530 der 19A, 19B und 19C bereitgestellt werden könnte.
-
Die
Verwendung des Steuerungsgeräts
zur Datenübertragung
dieser Ausführungsform
in elektronischer Ausrüstung
verringert die Verarbeitungslast der auf der CPU laufenden Firmware,
so dass eine kostengünstige
CPU verwendet werden kann. Da es ferner möglich ist, die Kosten und die
Baugröße des Steuerungsgeräts zur Datenübertragung
zu verringern, ist es möglich,
eine Verringerung der Kosten und der Baugröße der elektronischen Ausrüstung anzustreben.
-
Die
Verwendung des Steuerungsgeräts
zur Datenübertragung
dieser Ausführungsform
der vorliegenden Erfindung in elektronischer Ausrüstung ermöglicht die
Datenübertragung
im HS-Modus gemäß USB 2.0.
Wenn ein Benutzer einen Personal Computer oder dgl. verwendet, um
einen Ausdruck anzufordern, kann Drucken deshalb mit einer nur geringen Zeitverzögerung erfolgen.
Der Benutzer kann gleichermaßen
ein eingelesenes Bild mit einer nur geringen Zeitverzögerung betrachten,
nachdem ein Scanner angewiesen worden ist, das Bild abzurufen. Außerdem ermöglicht es
das Lesen von Daten von einem CD-RW und das Schreiben von Daten
nach einem CD-RW mit hoher Geschwindigkeit.
-
Es
ist zu beachten, dass die elektronische Ausrüstung, die ein Steuerungsgerät zur Datenübertragung
gemäß der vorliegenden
Erfindung verwendet, nicht auf die oben beschriebene Ausführungsform
beschränkt
ist, und dass verschiedene andere Beispiele in Betracht gezogen
werden können,
wie verschiedene Typen optischer Plattenlaufwerke (CD-ROM oder DVD),
magnetooptische (MO) Plattenlaufwerke, Festplattenlaufwerke, Fernsehempfänger, Videokassettenrecoder,
Videokameras, Audioausrüstung,
Telefone, Projektoren, Personal Computer, elektronische Terminkalender
und spezielle Textverarbeitungssysteme.
-
Außerdem ist
zu beachten, dass die vorliegende Erfindung nicht auf das hierin
beschriebene Ausführungsbeispiel
beschränkt
ist und verschiedene Modifikationen innerhalb des Gültigkeitsbereichs im
Folgenden festgelegt ist, möglich
sind.
-
So
ist beispielsweise die Konfiguration des Steuerungsgeräts zur Datenübertragung
gemäß der vorliegenden
Erfindung nicht auf die in den 6, 7 und 15 dargestellte
begrenzt, so dass verschiedene Modifikationen derselben möglich sind.
-
Diese
Ausführungsform
ist anhand eines Beispiels beschrieben worden, bei dem die vorliegende
Erfindung auf eine Bulk-Only-(nur Massen)USB-Spezifikation angewendet
wird; die Anwendung der vorliegenden Erfindung ist jedoch nicht
auf die Bulk-Only-USB-Spezifikation beschränkt.
-
Des
Weiteren ist es zwar besonders wünschenswert,
die vorliegende Erfindung auf die Datenübertragung unter USB 2.0 anzuwenden,
aber die vorliegende Erfindung ist nicht darauf beschränkt. So kann
die vorliegende Erfindung beispielsweise auch auf die Datenübertragung
gemäß einem
Standard angewendet werden, der auf einem Konzept ähnlich dem
des USB 2.0 oder einem aus dem USB 2.0 entwickelten Standard beruht.