-
Die
vorliegende Erfindung betrifft eine Endpunkt-Steuervorrichtung und
ein Verfahren zum Steuern von Endpunkten für ein Gerät, das zwischen einem Host
und einer Mehrzahl von Endpunkten mittels eines Universal Serial
Bus (USB) kommuniziert.
-
USB
ist typischerweise ein industrieller Standard zum Verbinden eines
Hosts mit einem peripheren Gerät,
beispielsweise einer Tastatur, Maus, Web-Kamera, einem Joystick
oder einem Speichergerät.
Da ein USB in der Lage ist, eine Plug-and-Play-Funktion für das periphere
Gerät bereitzustellen,
besteht keine Notwendigkeit, einen Einstellschalter oder Jumper
zu setzen, eine besondere Karte zu installieren oder ein entsprechendes
System zu verändern.
Aufgrund der vorteilhaften Eigenschaften des USB, wie Anwenderfreundlichkeit,
niedriger Preis und hohe Leistungsfähigkeit, wird er weitläufig in
einer Vielzahl von Host-Geräten
eingesetzt.
-
Bei
der Verwendung eines USB kann ein Host mit 127 USB-Geräten verbunden
sein, von denen jedes maximal 16 Endpunkte aufweisen darf. Dies
bedeutet, dass es für
ein einzelnes USB-Gerät
erlaubt ist, 16 Funktionen darin einzubetten. Ein USB-System ist
mit einem unabhängigen
Kanal ausgestattet, der als Pipe bezeichnet wird, um den Host mit
einem Endpunkt des USB-Geräts
zu verbinden. Jeder derartige Endpunkt ist einem First-in-/First-out(FIFO)-Speicher
einer gegebenen Größe zugeordnet,
um Daten mit dem Host auszutauschen. Der FIFO-Speicher fun giert
als ein Puffer, der zwischen dem Host und dem Endpunkt ausgetauschte
Daten speichert.
-
Die
meisten Bus-Transaktionen, die in dem USB-System durchgeführt werden,
beginnen mit dem Senden von Paketen, so genannten „Token-Paketen" („token
packets"), die Typen
und Richtungen der Transaktionen, USB-Geräteadressen und Endpunkt-Nummern
enthalten. Während
der Transaktion erfolgt die Datenübertragung von dem USB-Gerät zu dem
Host, was als „IN"-Richtung bezeichnet
wird, oder von dem Host zu dem USB-Gerät, was als „OUT"-Richtung bezeichnet wird. Der Host
oder das USB-Gerät,
das die Daten empfängt,
antwortet darauf mittels eines Handshake-Pakets. Der Typ des Handshake-Pakets,
beispielsweise ACK, informiert hinsichtlich eines normalen Datenempfangs,
während
der andere Typ des Handshake-Pakets, z.B. NAK, darüber informiert,
dass ein Fehler beim Datenempfang vorliegt oder dass Daten nicht
angekommen sind.
-
Wie
hinreichend bekannt ist, stimmt der USB mit dem Kommunikationsstandard
für serielle
Kommunikation überein
und ist deshalb nur in der Lage, zur selben Zeit Daten in einen
einzelnen FIFO-Speicher zu schreiben bzw. aus einem derartigen FIFO-Speicher
zu lesen. Wenn daher eine Verarbeitungsgeschwindigkeit für Daten,
die in der IN/OUT-Richtung ausgetauscht werden, unzureichend ist,
sendet das USB-Gerät
eine NAK-Antwort,
d.h. ein NAK-Handshake-Paket, an den Host. Beim Empfang der NAK-Antwort überträgt der Host
das Paket nach einer vorbestimmten Zeit erneut an das USB-Gerät. Nichtsdestotrotz
führen
zu häufige NAK-Antworten zu einer
Verschlechterung der Datenaustauschrate in dem USB-System. Daher sind
einige Lösungsansätze vorgeschlagen
worden, die eine solche Verschlechterung der Datenaustauschrate
vermeiden sollen, beispielsweise ein Anheben einer Systemtaktfrequenz
des USB-Geräts
oder eine Vergrößerung des FIFO-Speichers.
Da die Systemtaktfrequenz proportional zu einer Leistungsaufnahme
ist, lässt
sich dieser Lösungsansatz
jedoch nicht bei einem tragbaren USB-Gerät einsetzen, das mit gerin ger
Leistung auskommen muss. Weiterhin würde eine Vergrößerung des
FIFO-Speichers unausweichlich die gesamte Chipgröße erhöhen.
-
Der
Erfindung liegt das technische Problem zugrunde, eine Endpunkt-Steuervorrichtung
und ein Verfahren zum Steuern von Endpunkten für ein Gerät anzugeben, das zwischen einem
Host und einer Mehrzahl von Endpunkten mittels eines Universal Serial
Bus kommuniziert, die in der Lage sind, die Datenaustauscheffizienz
zu erhöhen,
ohne die Leistungsaufnahme oder die Chipgröße in einem USB-System zu erhöhen.
-
Die
Erfindung löst
das Problem mittels einer Vorrichtung mit den Merkmalen des Patentanspruchs
1 und mittels eines Verfahrens mit den Merkmalen des Patentanspruchs
10.
-
Vorteilhafte
Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben,
deren Wortlaut hiermit durch Bezugnahme in die Beschreibung aufgenommen
wird, um unnötige
Textwiederholungen zu vermeiden.
-
Beispielhafte
Ausgestaltungen der vorliegenden Erfindung zielen darauf ab, die
oben angegebenen Probleme zu lösen,
indem sie eine Endpunkt-Steuervorrichtung und ein Verfahren angeben,
die in der Lage sind, die Datenaustauscheffizienz zu verbessern,
ohne die Leistungsaufnahme oder die Chipgröße in einem USB-System zu erhöhen.
-
In
einer beispielhaften Ausgestaltung allokiert eine Steuereinheit
einen Puffer, um zu erreichen, dass jeder Endpunkt mehr als ein
Datum empfängt.
-
Vorteilhafte
Ausgestaltungen der Erfindung, die weiter unten im Detail beschrieben
sind, sind in der Zeichnung dargestellt. Es zeigt/zeigen:
-
1 ein
Blockschaltbild zur Darstellung der Gesamtstruktur eines USB-Systems
gemäß einer
beispielhaften Ausgestaltung der Erfindung;
-
2 ein
Diagramm zur Darstellung einer Konfiguration eines FIFO-Speicherblocks
und eines Merkmals des Allokierens mit FIFO-Speichern bezüglich Endpunkten gemäß einer
beispielhaften Ausgestaltung der vorliegenden Erfindung;
-
3 ein
Diagramm zur Darstellung eines Betriebs der FIFO-Steuereinheit gemäß 1;
-
4 und 5 Flussdiagramme
zur Darstellung von Ausgestaltungen eines Endpunkt-Steuerverfahrens
zum Austauschen von Daten in einer „OUT"-Richtung; und
-
6, 7A und 7B Flussdiagramme
zur Darstellung beispielhafter Ausgestaltungen eines Endpunkt-Steuerverfahrens
zum Austauschen von Daten in einer „IN"-Richtung.
-
Eine
fortschrittliche Endpunkt-Steuervorrichtung, die durch beispielhafte
Ausgestaltungen der vorliegenden Erfindung bereitgestellt wird,
allokiert dynamisch mehr oder zusätzliche FIFO-Speicher in Abhängigkeit
von den Nutzungszuständen
der FIFO-Speicher, die Endpunkten zu einer ersten Zeit zugewiesen
wurden. Auf diese Weise minimiert sie eine Antwort für unnormale
Datenübertragungen,
d.h. eine negative Antwort oder NAK-Antworten, und verbessert auf
diese Weise effektiv die Datenaustauscheffizienz in einem USB-System.
-
1 ist
ein Blockschaltbild zur Darstellung der Gesamtstruktur eines USB-Systems
gemäß einer
beispielhaften Ausgestaltung der vorliegenden Erfindung.
-
Bezugnehmend
auf 1 umfasst das USB-System einen Host 10 und
ein USB-Gerät 20,
das mit dem Host 10 verbunden ist. Das USB-Gerät 20 weist
gemäß der vorliegenden
Erfindung eine physikalische Schicht (PHY)-Block 21, einen
Verbindungsblock 22, einen Endpunkt-Steuerblock 23 und einen Anwendungsblock 27 auf.
-
Der
PHY-Block 21 dient dazu, das USB-Gerät physikalisch mit dem Host 10 zu
verbinden. Der Verbindungsblock 22 steuert im Wesentlichen
gültige
digitale Daten durch Verarbeitung von Daten, die von dem PHY-Block 21 übertragen
werden, oder wandelt digitale Daten in Übertragungsdaten um, die in
den PHY-Block 21 gesendet werden sollen. Der PHY-Block 21 und
der Verbindungsblock 22 können unabhängig voneinander in unterschiedlichen
Chips ausgebildet oder in einem einzelnen Verbindungschip integriert
sein, der weiterhin eine Steuerfunktion aufweist. Der Anwendungsblock 27 ist
dafür eingerichtet,
eine durch das USB-Gerät
bereitgestellte Funktion auszuführen
und umfasst eine Steuerschaltung, wie einen Mikrocontroller oder
eine zentrale Prozessoreinheit (CPU).
-
Der
Endpunkt-Steuerblock 23 ist zwischen den Verbindungsblock 22 und
den Anwendungsblock 27 geschaltet. Der Endpunkt-Steuerblock 23 umfasst
einen FIFO-Steuerblock 26 und eine FIFO-Steuereinheit 24.
-
Der
FIFO-Speicherblock 26 umfasst einen oder mehrere FIFO-Speicher, die einer
Mehrzahl der Endpunkte entsprechen. Jeder FIFO-Speicher kann aus einer primären Speichereinheit,
wie einem statischen Speicher mit wahlfreiem Zugriff (static random
access memory – SRAM)
oder einem Flip-Flop, oder aus einer sekundären Speichereinheit, wie einem
Festplattenlaufwerk (hard disk drive – HDD) oder einem dynamischen Speicher
mit wahlfreiem Zugriff (dynamic random access memory – DRAM),
gebildet sein. Da der FIFO-Speicher mit zwei Ports ausgerüstet ist,
ist es erlaubt, gleichzeitig Daten aus dem FIFO-Speicher zu lesen
und Daten in den FIFO-Speicher zu schreiben. Aufgrund der charakteristischen Eigenschaft
des USB kann eine Datenaustauschoperation zwischen dem FIFO-Speicherblock 26 und
dem Anwendungsblock 27 unabhängig von einer Datenaustauschoperation
zwischen dem FIFO-Speicherblock 26 und dem Verbindungsblock 22 durchgeführt werden.
-
Eine
logische Organisation des USB-Geräts 20 kann als eine
Aggregation oder eine Ansammlung von Endpunkten betrachtet werden.
Die Endpunkte haben ihre eigenen Identifizierungsnummern, zwischen
denen durch Kombination mit Geräteadressen
unterschieden wird. Gemäß den Eigenschaften
der Endpunkte werden Übertragungsmuster
zwischen dem Host 10 und dem USB-Gerät 20 bestimmt. Die
Charakteristiken der Endpunkte sind in einem Beschreiber (Descriptor)
aufgezeichnet. Der Beschreiber enthält außerdem die Frequenz des Buszugriffs,
die Latenzzeit, Bandbreite, Endpunktnummern, die maximale Paketgröße usw.
Das USB-Gerät 20 umfasst
grundsätzlich
Endpunkt0 (Endpoint0), der zum Initialisieren verwendet wird. Endpoint0
wird mit Konfiguration, Status und Steuerinformationen des Buszugriffs
für das
USB-Gerät 20 eingerichtet.
Ein Full-Speed USB-Gerät
darf maximal 16 Endpunkte aufweisen, jeder für diesbezügliche Eingabe-
und Ausgabeseiten, innerhalb eines eingeschränkten Protokollbereichs, während ein
Low-Speed USB-Gerät
zusätzlich zu
Endpoint0 zwei Endpunkte aufweisen darf.
-
2 ist
ein Diagramm zur Darstellung einer Konfiguration des FIFO-Speicherblocks 26 und
eines Merkmals des Allokierens der FIFO-Speicher in Bezug auf Endpunkte gemäß einer
beispielhaften Ausgestaltung der vorliegenden Erfindung.
-
Bezugnehmend
auf die 1 und 2 wird in
dem FIFO-Speicherblock 26 ein
FIFO-Speicher für Endpoint0
allokiert, wohingegen zwei FIFO-Speicher für Endpoint1 und Endpoint2 allokiert
werden können, während ein
FIFO-Speicher für
Endpoint3 und Endpoint4 allokiert werden kann.
-
Wie
in 2 dargestellt, ist der FIFO-Speicherblock 26 in
einen FIFO-Speicher 260 für Endpoint0, eine erste FIFO-Gruppe 261 und
eine zweite FIFO-Gruppe 262 unterteilt. Die erste FIFO-Gruppe 261 fungiert als
eine FIFO-Speichergruppe, die für
Endpunkte bereitgestellt wird, bei denen eine große Datenmenge
ausgetauscht wird, wie in einer mobilen Disk. Die erste FIFO-Gruppe 61 kann
aus zwei Paaren von FIFO-Speichern 2611 und 2612 sowie 2613 und 2614 für Endpoint1
und Endpoint2 gebildet sein.
-
Beispielsweise
werden die beiden FIFO-Speicher 2611 und 2612,
die Endpoint1 zugewiesen sind, für die
Datenübertragung
in der IN-Richtung
allokiert. Einer der FIFO-Speicher 2611 und 2612,
der keine gültigen Daten
enthält,
wird einem Write-In-FIFO zugewiesen, in den während Datenübertragung in der IN-Richtung durch
den Anwendungsblock 27 geschrieben wird. Der andere der
FIFO-Speicher 2611 und 2612, der gültige Daten
aufweist, wird einem Read-Out-FIFO zugewiesen, der während der
Datenübertragung
in der IN-Richtung durch den Host 10 gelesen wird. Andererseits
werden die beiden FIFO-Speicher 2613 und 2614,
die Endpoint2 zugewiesen sind, für
Datenübertragung
in der OUT-Richtung allokiert. Einer der FIFO-Speicher 2613 und 2614,
der keine gültigen
Daten aufweist, wird einem Write-In-FIFO zugewiesen, in den während der Datenübertragung
in der OUT-Richtung durch den Host 10 geschrieben wird.
Der andere der FIFO-Speicher 2613 und 2614, der
gültige
Daten aufweist, wird einem Read-Out-FIFO zugewiesen, der während der
Datenübertragung
in der OUT-Richtung durch den Anwendungsblock 27 gelesen
wird. Es sei darauf hingewiesen, dass diese Zuordnungen mit den
FIFO-Speichern in
den Richtungen der Datenübertragung
nur eine anfängliche
Einrichtung für
allgemeine Lese- und Schreiboperationen darstellen, jedoch in der
Verwendung nicht hierauf beschränkt
sind. Wie im Folgenden detailliert ausgeführt ist, werden die vier FIFO-Speicher 2611~2614, die
zu der ersten FIFO-Gruppe 261 gehören, für die Mehrzahl von Endpunkten,
d.h. Endpoint1 und Endpoint2, dynamisch allokiert. Insbesondere
wird die Gesamtanzahl von FIFO-Speichern, die dem Endpunkt zugewiesen
sind, in Abhängigkeit
von einem vollen oder leeren Zustand in einem FIFO- Speicher angepasst,
der dem zum Schreiben oder Lesen angeforderten Endpunkt zuvor zugewiesen
wurde.
-
Die
vier FIFO-Speicher 2611~2614, die in der ersten
FIFO-Gruppe 261 enthalten sind, stellen die maximale Paketgröße dar und
sind gleichartig ausgebildet. Beispielsweise ist es den FIFO-Speichern 2611~2614 erlaubt,
in der maximalen Paketgröße von 256
Byte ausgebildet zu sein, und sie sind jeweils Eingängen mit jeweils
256 Byte zugeordnet. Die FIFO-Speicher 2611~2614 können in
der Einheit der maximalen Paketgröße verwaltet werden oder können anteilig
in Einheiten mehrerer Datensektoren geregelt werden, die kleiner
als die maximale Paketgröße sind.
Für diese
Verwaltung kann jeder FIFO-Speicher ein einzelnes physikalisches Speicherfeld
aufweisen oder kann in eine Mehrzahl von Speichersektoren segmentiert
sein.
-
Während gemäß 2 die
FIFO-Speicher 2611 und 2612, die als „Endpoint1/2
FIFO" bezeichnet
sind, zu einer ersten Zeit für
die Transaktion für
Endpoint1 allokiert sind, werden sie auch für Endpoint2 verwendet. Des
Weiteren werden die FIFO-Speicher 2613 und 2614,
die als „Endpoint2/1
FIFO" bezeichnet
sind, auch für Endpoint1
verwendet, obwohl sie zu der ersten Zeit für die Transaktion für Endpoint2
allokiert wurden.
-
Wenn
beispielsweise alle FIFO-Speicher 2611 und 2612,
die Endpoint1 zugewiesen sind, benutzt werden, allokiert die FIFO-Steuereinheit 24 als
einen zusätzlichen
FIFO-Speicher die FIFO-Speicher 2613 und 2614,
die in einem leeren Zustand vorbereitet sind, in Abhängigkeit
von einer Voll-/Leer-Statusinformation. Diese zusätzliche
Allokierung von FIFO-Speicher
wird vorab durch die FIFO-Steuereinheit 24 vorgenommen,
bevor eine Anforderung für
Write-In/Read-Out zum Endpoint1 erzeugt wird. Auf diese Weise beginnt
die Write-In-/Read-Out-Operation sofort mit dem zusätzlichen
FIFO-Speicher, wenn eine Anforderung für eine Write-In-/Read-Out-Operation zum
Endpoint1 ergeht. In diesem Fall werden die FIFO-Speicher 2613 und 2614 logisch
für Endpoint1
verwendet, obwohl sie phy sikalisch für Endpoint2 ausgebildet oder
angeordnet sind. Die FIFO-Steuereinheit 24 speichert
derartige Abbildungsinformationen der FIFO-Speicher in der Abbildungsinformations-Speichereinheit 242.
Die Abbildungsinformations-Speichereinheit 242 speichert
die Abbildungsinformationen hinsichtlich Endpunkten, d.h. Informationen
bezüglich
der logischen Endpunkte, die Adressen entsprechen, welche von dem
Anwendungsblock 27 eingegeben werden, und Endpunkte, d.h.
Informationen über den
physikalischen Endpunkt, der praktische Daten enthält.
-
Wie
hinreichend bekannt ist, handelt es sich bei USB um ein Gerät mit einem
Kommunikationsprotokoll zum Ausführen
serieller Kommunikation. Daher ist es erlaubt, eine Write-In-/Read-Out-Operation
zu einem Endpunkt nur einmalig vorzunehmen. Eine beispielhafte Ausgestaltung
der vorliegenden Erfindung ermöglicht es,
den FIFO-Speicher eines bestimmten Endpunktes, der gegenwärtig nicht
verwendet wird, einem anderen Endpunkt zuzuweisen, indem die inhärente Eigenschaft
des USB verwendet wird. Gemäß dieser
Abbildungseigenschaft ist es möglich,
Write-In-/Read-Out-Daten
mit jedem Endpunkt dynamisch zu speichern, ohne eine Größe des FIFO-Speichers
zu erhöhen.
Im Ergebnis führt
dies dazu, dass die Anzahl negativer Antworten, d.h. NAK-Antworten,
aufgrund unzureichender Kapazität
des FIFO-Speichers, der dem Endpunkt zugewiesen ist, spürbar reduziert
wird, wodurch die Verschlechterung der Betriebsgeschwindigkeit beim Übertragen
von Daten minimiert wird.
-
Die
zweite FIFO-Gruppe 262 ist dazu vorgesehen, Austauschoperationen
für kleinvolumige
Daten, wie ein ASDL-Modem oder einen MP3-Player, durchzuführen. Die zweite FIFO-Gruppe 262 umfasst
einen FIFO-Speicher 2621,
der Endpoint3 zugewiesen ist, und einen FIFO-Speicher 2622,
der Endpoint4 zugewiesen ist. Nichtsdestotrotz handelt es sich bei
diesem Abbildungsmuster ohne Beschränkung nur um eine anfängliche
Anordnung. Speziell können
die beiden FIFO-Speicher 2621 und 2622 der zweiten
FIFO-Gruppe 262 ebenso wie die erste FIFO-Gruppe 261 flexibel
für den
Endpoint3 und den Endpoint4 allokiert werden. Die beiden FIFO- Speicher 2621~2622,
die in der zweiten FIFO-Gruppe 262 enthalten sind, stellen
die maximale Paketgröße dar und
sind untereinander gleich ausgebildet. Beispielsweise ist es erlaubt,
dass die FIFO-Speicher 2621~2622 mit der maximalen
Paketgröße von 128
Byte ausgebildet und jeweils für
Einträge
mit jeweils 128 Byte allokiert sind. Die maximale Paketgröße ist in
Abhängigkeit
von einer Datenübertragungsmenge
und der Fähigkeit
eines Datenmanagements durch die FIFO-Steuereinheit 24 veränderbar.
Des Weiteren können
die FIFO-Speicher 2621~2622 in der Einheit der
maximalen Paketgröße verwaltet
werden, oder sie können
anteilig in Einheiten einer Mehrzahl von Datensektoren reguliert
werden, die kleiner als die maximale Paketgröße sind. Für diese Verwaltung kann jeder
FIFO-Speicher ein einzelnes physikalisches Speicherfeld aufweisen oder
kann in eine Mehrzahl von Speichersektoren segmentiert sein.
-
Während in 2 der
FIFO-Speicher 2621, der als „Endpoint3/4 FIFO" bezeichnet ist,
zu einer ersten Zeit für
eine Transaktion für
Endpoint3 allokiert ist, kann er auch für Endpoint4 verwendet werden.
Des Weiteren kann der FIFO-Speicher 2622, der als „Endpoint4/3
FIFO" bezeichnet
ist, auch für
Endpoint3 verwendet werden, obwohl er zu der ersten Zeit für eine Transaktion
für Endpoint4
allokiert wurde. Dieses Allokierungsschema mit den FIFO-Speichern 2621 und 2622 der
zweiten FIFO-Gruppe 262 für die Endpunkte
entspricht im Wesentlichen demjenigen für die FIFO-Speicher 2611~2614 der
ersten FIFO-Gruppe 261, jedoch mit unterschiedlichen Ziel-FIFO-Speichern.
-
3 ist
ein Diagramm zur Darstellung eines Betriebs der FIFO-Steuereinheit 24,
die in 1 gezeigt ist. Bezugnehmend auf die 1 und 3 überwacht
die FIFO-Steuereinheit 24 Datenspeicherzustände des FIFO-Speicherblocks 26 und
steuert Daten-Write-In-/Read-Out-Operationen
in dem FIFO-Speicherblock 26. Die FIFO-Steuereinheit 24 weist
eine Statusinformations-Speichereinheit 241 und eine Abbildungsinformations-Speichereinheit 242 auf.
-
Die
Statusinformations-Speichereinheit 241 speichert Informationen,
die anzeigen, ob die FIFO-Speicher des FIFO-Speicherblocks 26 sich
in gültigen
Zuständen
befinden, oder sie speichert Statusinformationen in Bezug darauf,
ob die FIFO-Speicher voll oder leer sind. Für diese Funktion kann die Statusinformations-Speichereinheit 241 aus
einem Status-Transferregister
gebildet sein, das hinsichtlich der Anzahl von Daten unterrichtet,
die in jedem der FIFO-Speicher gespeichert sind. Die Abbildungsinformations-Speichereinheit 242 speichert
Abbildungsinformationen über
einen Endpunkt, d.h. einen logischen Endpunkt, der einer Eingangsadresse
entspricht, und über
einen Endpunkt, d.h. einen physikalischen Endpunkt, der praktische
Daten enthält.
Die Abbildungsinformations-Speichereinheit 242 ist
in der Lage, weitere Informationen bezüglich der Übertragungsrichtung zusätzlich zu
den Abbildungsinformationen zu enthalten. Die Abbildungsinformationen, die
in der Abbildungsinformations-Speichereinheit 242 gespeichert
sind, können
in Form einer Tabelle oder als Zeiger abgelegt sein. Strukturelle
Eigenschaften der Abbildungsinformations-Speichereinheit 242 können veränderbar
sein und durch den Fachmann modifiziert werden.
-
Wenn
eine Write-In-/Read-Out-Anforderung von dem Verbindungsblock
22 oder
dem Anwendungsblock
27 erfolgt, transferiert die FIFO-Steuereinheit
24 eine
Write-In-/Read-Out-Adresse Write Add/Read Add sowie Daten, ein Aktivierungssignal
und ein Taktsignal CLK in Abhängigkeit
von einer Adresse ADD, Endpunktinformationen und Transferrichtungs-Informationen
zu dem FIFO-Speicher
26. Speziell allokiert die FIFO-Steuereinheit
24 vorab
den Endpunkt des FIFO-Speichers, der in einem leeren Zustand eingerichtet
ist, d.h. einem Zustand, der es ermöglicht, Daten auf der Grundlage
von Informationen zu speichern, die in der Abbildungsinformations-Speichereinheit
242 gespeichert
sind. Während
dieser Zeit ist jedem Endpunkt der FIFO-Speicher zugeordnet, um
weiterhin mehr Daten zu empfangen, und seine logische Adresse, d.h.
eine Adresse, für
die eine Write-In- oder Read-Out-Operation von dem Verbindungsblock
22 oder
dem Anwendungsblock
27 angefordert wird, muss nicht mit
seiner physikalischen Adresse übereinstimmen,
bei der es sich um eine Adresse handelt, bei der praktische Daten
geschrieben oder gelesen werden. Die FIFO-Steuereinheit
24 bestimmt,
ob zu speichernde Daten Write-In- oder Read-Out-Daten sind, wenn
eine Write-In-/Read-Out-Anforderung von dem Verbindungsblock
22 oder
dem Anwendungsblock
27 ergeht, und speichert die Daten
in seinem entsprechenden FIFO-Speicher. Durch das Allokieren der
FIFO-Speicher für
jeden Eintrag mittels dieser beispielhaften Ausgestaltung der vorliegenden
Erfindung kann das System derart konfiguriert werden, dass die Anzahl
der FIFO-Speicher innerhalb eines erlaubten Bereichs angepasst wird,
ohne auf einen festen Wert begrenzt zu sein. Unter Bezugnahme auf
3 und
Tabelle 1 wird nachfolgend ein Betrieb der FIFO-Steuereinheit
24 beschrieben. [Tabelle
1]
-
Die
obige Tabelle 1 enthält
Informationen, d.h. Informationen über den Voll-/Leer-Zustand,
der Validierungs- oder Gültigkeitszustände für die FIFO-Speicher
darstellt, sowie Abbildungsinformationen über logische und physikalische
Endpunkte. Diejenigen Informationen, welche die Validierung oder
Gültigkeit
der FIFO-Speicher repräsentieren,
sind in der Statusinformations-Speichereinheit 241 gespeichert,
und die Informationen betreffend die logischen und physikalischen
Endpunkte sind in der Abbildungsinformations-Speichereinheit 242 gespeichert.
-
In
Tabelle 1 steht Endpoint# für
eine Identifizierungsnummer des Endpunktes. 7 Bit an gültigen Daten geben
an, ob Daten in den FIFO-Speichern
vorhanden sind, d.h. die Voll-/Leer-Zustände der FIFO- Speicher. In den
7 Bit an gültigen
Daten sind die Bits ausgehend von dem MSB angeordnet und entsprechen
den physikalischen Adressen der FIFO-Speicher, d.h. A, B, C, D, E, F und
G. Wenn beispielsweise ein bestimmter Endpunkt einen FIFO-Speicher
mit einer physikalischen Adresse D verwendet und dieser FIFO-Speicher
gültige Daten
speichert, wird ein gültiges
Datenbit, das der physikalischen Adresse D entspricht, auf „1" gesetzt. Dann wird
ein gültiges
Datenbit des FIFO-Speichers, das einer physikalischen Adresse entspricht,
die nicht verwendet wird oder bei der keine gültigen Daten gespeichert sind,
obwohl sie benutzt wird, auf „0" gesetzt. In Tabelle 1
bedeutet dies für
Endpoint0, der den gültigen
Daten „0000000" entspricht, dass
Endpoint0 keinen der FIFO-Speicher verwendet. Endpoint1 entspricht
den gültigen
Daten „0001100", was bedeutet, dass
Endpoint1 die FIFO-Speicher mit physikalischen Adressen D und E
verwendet, die gültige
Daten speichern. In Tabelle 1 existieren drei „1 "-er (zwei für Endpoint1 und einer für Endpoint3) über alle
Elemente der gültigen
Daten. Dies bedeutet, dass unter sieben FIFO-Speichern drei FIFO-Speicher
in vollen oder gefüllten
Zuständen
eingerichtet sind, während
die restlichen vier FIFO-Speicher als leere FIFO-Speicher eingerichtet
sind.
-
In
Tabelle 1 zeigen die mit dem Lesezeiger bezeichneten Elemente die
physikalischen Adressen der FIFO-Speicher an, aus denen Daten in
Abhängigkeit
von Read-Out-Anforderungen gelesen werden, die von dem Verbindungsblock 22 oder
dem Anwendungsblock 27 erzeugt werden. Die mit dem Schreibzeiger
bezeichneten Elemente zeigen die physikalischen Adressen der FIFO-Speicher
an, aus denen Daten in Abhängigkeit
von Write-In-Anforderungen gelesen werden, die von dem Verbindungsblock 22 oder
dem Anwendungsblock 27 erzeugt werden. In Tabelle 1 stellen
die mit FIFO-Richtung bezeichneten Elemente Richtungen der Datenübertragung
während
einer Transaktion dar. Die Richtung „IN" bedeutet eine Datenübertragung von dem USB-Gerät 20 zu
dem Host 10, während
die Richtung „OUT" eine Datenübertragung
von dem Host 10 zu dem USB-Gerät 20 bedeutet.
Während
der Datenübertragung
in der „IN"-Richtung wird in
dem Anwendungsblock 27 eine Write-In-Operation durchgeführt, und
in dem Verbindungsblock 22 wird eine Read-Out-Operation durchgeführt. Anderenfalls
wird während
der „OUT"-Richtung die Write-In-Operation im Verbindungsblock 22 durchgeführt, und
die Read-Out-Operation
wird in dem Anwendungsblock 27 durchgeführt.
-
Wenn
in Tabelle 1 eine Daten-Write-In-Anforderung zum Schreiben von Daten
in dem Endpoint1 durch den Host
10 erzeugt wird, werden
Write-In-Daten in den FIFO-Speicher gespeichert, d.h. bei der Adresse
B, die durch den Schreibzeiger bestimmt wird. Währenddessen werden Statusinformationen
bezüglich
der Datenspeicherung in dem FIFO-Speicher, d.h. bei der Adresse
B von „0" auf „1" aktualisiert. Die
aktualisierten Datenspeicherungsstatusinformationen werden in der
Statusinformations-Speichereinheit
241 gespeichert. Nach
dem Speichern von Daten in dem gegenwärtigen Write-In-FIFO-Speicher,
d.h. bei der Adresse B gemäß dem Lesezeiger
selektiert die FIFO-Steuereinheit
24 für die Allokierung einen neuen
unter den FIFO-Speichern, die in den leeren Zuständen eingerichtet sind. Der
Schreibzeiger wird mit einem neuen Wert aktualisiert, um auf diese
Weise den neu allokierten FIFO-Speicher zu bestimmen. Die Allokierungsinformationen
für den aktualisierten
FIFO-Speicher, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit
242 gesichert.
Die Eintragswerte für
Endpoint1 sind in der nachstehenden Tabelle 2 angegeben. [Tabelle
2]
-
Gemäß dem Erstellungsmerkmal
für die
Write-In-Operation und den Schreibzeiger kann jeder Endpunkt so
eingestellt werden, dass er zusätzliche
Daten zu den dort bereits vorab gespeicherten Daten empfängt.
-
Wenn
jedoch alle FIFO-Speicher in den gefüllten Zuständen eingerichtet sind, ist
es unmöglich,
einen zusätzlichen
FIFO-Speicher zu allokieren.
-
Bezugnehmend
auf Tabelle 2 werden für
den Fall, dass eine Read-Out-Anforderung für die „OUT"-Richtung für Endpoint1 durch den Anwendungsblock
27 ergeht,
Daten aus dem FIFO-Speicher, d.h. von der physikalischen Adresse
D gelesen, die durch den Lesezeiger bestimmt wird. Die Read-Out-Daten
werden zu dem Anwendungsblock
27 übertragen, und anschließend werden
die Statusinformationen für
die Datenspeicherung in dem FIFO-Speicher, d.h. bei der Adresse
D von „1" nach „0" aktualisiert. Diese
aktualisierten Statusinformationen bezüglich der Datenspeicherung
werden in der Statusinformations-Speichereinheit
241 gesichert.
Nach dem Lesen von Daten aus dem voreingestellten FIFO-Speicher, d.h. bei
der Adresse D wird die FIFO-Steuereinheit
24 aktualisiert,
sodass der Lesezeiger einen FIFO-Speicher, d.h. die Adresse E bestimmt,
in dem bzw. bei der gültige
Daten gespeichert sind. Allokierungsinformationen des aktualisierten FIFO-Speichers,
d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit
242 gespeichert.
Während
dieser Aktualisierung sind die Eintragswerte, die Endpoint1 entsprechen,
in Tabelle 3 angeordnet. [Tabelle
3]
-
Wie
unten beschrieben, analysiert die FIFO-Steuereinheit 24 gemäß der beispielhaften
Ausgestaltung der vorliegenden Erfindung die Write-In-/Read-Out-Operationen
des Verbindungsblocks 22, der in dem USB-Gerät 20 enthalten
ist, und allokiert in flexibler Weise die FIFO-Speicher für die Write-In-/Read-Out-Operationen
auf der Grundlage des Analyseergebnisses. Die FIFO-Steuereinheit 24 schreibt
außerdem
Write-In-/Read-Out- Daten
in den allokierten FIFO-Speicher. Eine derartige dynamische Allokierung
des FIFO-Speichers wird in Echtzeit durchgeführt. Die obige Beschreibung
betrifft die Write-In- und Read-Out-Operationen, die während einer
Datenübertragung
in der „OUT"-Richtung durchgeführt werden.
Obwohl die vorstehende Beschreibung sich nicht mit der Datenübertragung
in der „IN"-Richtung beschäftigt, sind
die Vorgänge
beim Allokieren/Aktualisieren des FIFO-Speichers und beim Schreiben/Lesen
von Daten grundsätzlich
die gleichen wie in der „OUT"-Richtung, unterscheiden
sich jedoch von dem letztgenannten Fall in Bezug auf die Datentransferrichtung.
Datenaustausch (Senden + Empfangen) der „OUT"- und der „IN"-Richtung wird detaillierter unter Bezugnahme
auf 4 bis 7 beschrieben.
-
Die
FIFO-Steuereinheit 24 gemäß der beispielhaften Ausgestaltung
der Erfindung ist in der Lage, die Größe des FIFO-Speicherblocks,
der jedem Endpunkt zugewiesen ist, anzupassen. Speziell regelt die FIFO-Steuereinheit 24 in
flexibler Weise die Abbildungsoperationen für die Endpunkte und FIFO-Speicher
in Übereinstimmung
mit der gesamten Speicherkapazität
des FIFO-Speicherblocks 26, der anteilig zu verwaltenden
Datengröße, der
Anzahl zu unterstützender
Endpunkte und einem Umstand, der angibt, ob die FIFO-Struktur physikalisch
aus einzelnen Speichern oder einer Mehrzahl von Speichern gebildet
ist.
-
Wenn
die maximale Paketgröße der FIFO-Speicher 2611~2614,
die in der ersten FIFO-Gruppe 261 enthalten sind, unter
Bezugnahme auf 2 beispielsweise 256 Byte beträgt, ist
die FIFO-Steuereinheit 24 in der Lage, die FIFO-Speicher
für einen
Puffer für
die IN-/OUT-Operation, d.h. für
die Daten-Write-In-/Read-Out-Operation für jeden Endpunkt zu allokieren.
Während
dieser Operation werden die Daten, die in dem neu allokierten FIFO-Speicher
gespeichert sind, in Einheiten von 256 Byte gesteuert.
-
Zusätzlich kann
jeder FIFO-Speicher mit einer Einheit aus mehreren Datenbits innerhalb
des Bereichs der maximalen Paketgröße gesteuert werden. Beispielsweise
sind in jedem FIFO-Speicherstrang 256 Byte als Ganzes in zwei Speicherfelder
unterteilt, von denen jedes 128 Byte an Daten speichert. Wenn einer
der FIFO-Speicher 2611 und 2612, die für Endpoint1
eingerichtet sind, dem Endpoint2 zugewiesen wird, ist die FIFO-Steuereinheit 24 in
der Lage, die 128 Byte an Daten, die sequentiell in den beiden Speicherfeldern
gespeichert sind, in den neu allokierten FIFO-Speichern 2611 oder 2612 anzuordnen.
Durch diese Konfiguration ist es möglich, die Abbildungsoperationen
mit Endpunkten und FIFO-Speichern in Übereinstimmung mit einer Größe der Daten,
die in den FIFO-Speicher geschrieben oder daraus gelesen werden,
effizient zu steuern, ohne die FIFO-Speicher zu verbrauchen. Obwohl
die vorstehende Beschreibung den Fall beschreibt, bei dem die Endpunkte
und die für
diese allokierten FIFO-Speicher unter den FIFO-Speichern zu der
ersten FIFO-Gruppe 261 gehören, handelt es sich dabei
nur um eine beispielhafte Ausgestaltung, die zum Verständnis dieser beispielhaften
Ausgestaltung der vorliegenden Erfindung beitragen soll. In dem
Fall, dass die Datengröße für jeden
FIFO-Speicher kleiner
eingestellt wird, kann es möglich
sein, die Allokierung mit FIFO-Speichern unter den FIFO-Speichern 2611~2614 der
ersten FIFO-Gruppe 261 und
den FIFO-Speichern 2621 und 2622 der zweiten FIFO-Gruppe 262 durchzuführen.
-
Es
folgt eine detaillierte Beschreibung des Verfahrens zum Steuern
der Endpunkte für
Datenübertragungsrichtungen
in den „IN"- und „OUT"-Modi.
-
4 und 5 sind
Flussdiagramme, die beispielhafte Ausgestaltungen eines Endpunkt-Steuerverfahrens
zum Austauschen von Daten in der „OUT"-Richtung zeigen. 4 zeigt
Möglichkeiten
zum Schreiben von Daten, die von dem Host 10 gemäß 1 während der
Datenübertragung
in „OUT"-Richtung eingegeben wurden,
in einen Write-In-FIFO-Speicher eines ausgewählten Endpunkts und zum Allokieren
eines neuen Write-In-FIFO-Speichers.
-
Bezugnehmend
auf die 1, 2 und 4 empfängt die
FIFO-Steuereinheit 24 die
Write-In-Daten D und die Adresse ADD, die zum Datenaustausch in
der „OUT"-Richtung verwendet
werden sollen, von dem Host 10 (Schritt S1100). Die Daten
D und die Adresse ADD werden der FIFO-Steuereinheit 24 durch
den Host 10 über
den Verbindungsblock 22 bereitgestellt. Die FIFO-Steuereinheit 24 ermittelt,
ob die Datenspeicherungsstatusinformationen des FIFO-Speichers,
der durch den Schreibzeiger des Endpunkts bestimmt ist, in dem die
Daten D gespeichert werden sollen, auf „1" gesetzt ist (Schritt S1200). Die Statusinformation
mit dem Wert „1" bedeutet, dass es
nicht möglich
ist, die Daten, die in Schritt S1100 eingegeben wurden, zusätzlich in
dem Write-In-FIFO-Speicher des entsprechenden Endpunkts zu speichern,
da dieser mit Daten gefüllt ist.
Wie nachfolgend detailliert beschrieben wird, ist die beispielhafte
Ausgestaltung der vorliegenden Erfindung dazu ausgebildet, den FIFO-Speicher
so einzustellen, dass dieser in der Lage ist, mehr Daten für jeden Endpunkt
zu empfangen. Somit bedeutet ein Umstand, dass der Write-In-FIFO-Speicher, der durch
den Schreibzeiger bestimmt ist, keine weiteren Daten empfangen kann,
dass alle FIFO-Speicher bereits mit Daten gefüllt sind.
-
Ausgehend
von der Bestimmung in Schritt S1200, ob die Datenspeicherungs-Statusinformation
des Write-In-FIFO-Speichers auf „1" gesetzt ist, d.h. ob alle FIFO-Speicher
mit Daten gefüllt
sind, erzeugt sie eine negative Antwort (NAK-Antwort) an den Host 10 (Schritt
S1900). Wenn sich anderenfalls aus der Bestimmung in Schritt S1200
ergibt, dass die Datenspeicherungs-Statusinformation des Write-In-FIFO-Speichers
von „1" abweicht, d.h.,
dass sie auf „0" gesetzt ist, werden
die Write-In-Daten D in dem Write-In-FIFO-Speicher gespeichert (Schritt
S1300). Anschließend
erzeugt sie eine ACK-Antwort an den Host 10 (Schritt S1400).
Nach dem Speichern der Daten in dem Write-In-FIFO-Speicher werden
Statusinformationen des Write-In-FIFO-Speichers von „0" auf „1" aktualisiert (Schritt
S1500). Die aktualisierten Statusinformationen des FIFO-Speichers werden
in der Statusinformations-Speichereinheit 241 gespeichert.
-
Anschließend wird
bestimmt, ob alle FIFO-Speicher mit Daten gefüllt sind (Schritt S1600). Von
der Bestimmung in Schritt S1600 ausgehend wird dann, wenn alle FIFO-Speicher
mit Daten gefüllt
sind, ein neuer Write-In-FIFO-Speicher
zusätzlich
allokiert (Schritt S1700). Anschließend werden die Abbildungsinformationen
aktualisiert, sodass der Schreibzeiger den neuen Write-In-FIFO-Speicher
anzeigt (Schritt S1800). Allokierungsinformationen für die aktualisierten
FIFO-Speicher, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert.
Ausgehend von der Bestimmung in Schritt S1600 wird dann, wenn alle
FIFO-Speicher bereits mit Daten gefüllt sind und ein neuer Write-In-FIFO-Speicher nicht
zusätzlich
allokiert werden kann, das Verfahren beendet.
-
5 zeigt
Möglichkeiten
zum Übertragen
von Daten, die aus einem Write-In-FIFO-Speicher eines Endpunkts
während
der Datenübertragung
in der „OUT"-Richtung gelesen
wurden, zu dem Anwendungsblock 27 in 1 und
zum Allokieren eines neuen Write-In-FIFO-Speichers.
-
Bezugnehmend
auf 5 ermittelt der Anwendungsblock 27 zunächst, ob
Daten in einem zu lesenden Endpunkt vorhanden sind. Für diese
Operation bestimmt die FIFO-Steuereinheit 24, ob Datenspeicherungsstatusinformationen
eines Read-Out-FIFO-Speichers, der durch den Lesezeiger eines entsprechenden Endpunkts
bestimmt ist, auf „1" gesetzt sind (Schritt
S2200). Dieses Bestimmungsergebnis wird an den Anwendungsblock 27 übertragen.
Hierbei bedeutet ein Wert „1" für die Statusinformationen,
dass Daten in dem entsprechenden FIFO-Speicher gespeichert sind.
-
Ausgehend
von dem Bestimmungsergebnis in Schritt S2200 werden dann, wenn die
Datenspeicherungsstatusinformationen des Read-Out-FIFO-Speichers auf „1" gesetzt sind, d.h.,
wenn dort zu lesende Daten vorhanden sind, die Daten D aus dem entsprechenden
Read-Out-FIFO-Speicher
gelesen (Schritt S2300). Die Read-Out-Daten werden zu dem Anwendungsblock 27 übertragen
(Schritt S2400). Anschließend
werden die Statusinformationen des Read-Out-FIFO-Speichers von „1" auf „0" aktualisiert (Schritt
S2500). Die aktualisierten Statusinformationen des FIFO-Speichers werden
in der Statusinformations-Speichereinheit 241 gesichert.
-
Anschließend werden
die Abbildungsinformationen aktualisiert, sodass der Lesezeiger
den nächsten FIFO-Speicher
bestimmt, der gültige
Daten enthält
(Schritt S2550). Die aktualisierten Allokierungsinformationen des
FIFO-Speichers, d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert.
-
In
dem Endpunkt-Steuerschema gemäß der beispielhaften
Ausgestaltung der vorliegenden Erfindung werden Statusinformationen
des Schreibzeigers geprüft,
um den FIFO-Speicher in die Lage zu versetzen, dass jeder Endpunkt
mehr Daten empfängt.
Speziell wird bestimmt, dass die Datenspeicherungs-Statusinformation
eines Write-In-FIFO-Speichers, der durch den Schreibzeiger bestimmt
wird, auf „1" gesetzt ist (Schritt S2600).
Ausgehend von der Bestimmung in Schritt S2600 werden die Datenspeicherungsstatusinformationen des
Write-In-FIFO-Speichers auf „1" gesetzt, und ein
neuer Write-In-FIFO-Speicher wird für diesen allokiert (Schritt
S2700). Der Umstand, dass die Datenspeicherungsstatusinformationen
des Write-In-FIFO-Speichers bei „1" bleiben, bedeutet, dass alle FIFO-Speicher
bereits in Schritt S1600 gemäß 4 mit
Daten gefüllt
eingerichtet wurden. In der beispielhaften Ausgestaltung der vorliegenden
Erfindung ist nach Abschluss der Read-Out-Operation in den Schritten
S2300 bis S2500 wenigstens einer der FIFO-Speicher in dem leeren
Zustand eingerichtet. Somit ist es möglich, einen neuen Write-In-FIFO-Speicher
zu allokieren.
-
Nach
dem Allokieren des neuen Write-In-FIFO-Speichers in Schritt S2700
werden die Abbildungsinformationen aktualisiert, sodass der Schreibzeiger
den neuen Write-In-FIFO-Speicher bestimmt (Schritt S2800). Die aktualisierten
Allokierungsinformationen des FIFO-Speichers, d.h. die Abbildungsinformationen werden
in der Abbildungsinformations-Speichereinheit 242 gespeichert.
-
6, 7A und 7B sind
Flussdiagramme zur Darstellung beispielhafter Ausgestaltungen eines
Endpunkt-Steuerverfahrens zum Austausch von Daten in der „IN"-Richtung. 6 zeigt
Möglichkeiten zum
Speichern von Daten, die von dem Anwendungsblock 27 während der
Datenübertragung
in der „IN"-Richtung übertragen
wurden, in einen Write-In-FIFO-Speicher
eines ausgewählten
Endpunkts und zum Allokieren eines neuen Write-In-FIFO-Speichers.
-
Bezugnehmend
auf die 1, 3 und 6 empfängt die
FIFO-Steuereinheit 24 die
Write-In-Daten D, die für
den Datenaustausch in der „IN"-Richtung verwendet
werden sollen, von dem Anwendungsblock 27 sowie eine zu
schreibende Endpunkt-Nummer (Schritt S3100). Die FIFO-Steuereinheit 24 ermittelt,
ob alle FIFO-Speicher, die dem entsprechenden Endpunkt zugeordnet
sind, mit Daten gefüllt
sind. Für
diese Operation bestimmt die FIFO-Steuereinheit 24, ob
die Datenspeicherungsstatusinformationen des FIFO-Speichers, der
durch den Schreibzeiger des entsprechenden Endpunkts bezeichnet
ist, auf „1" gesetzt sind (Schritt S3200).
Der Wert „1" für die Statusinformation
in dem Write-In-FIFO-Speicher bedeutet, dass der entsprechende Write-In-FIFO-Speicher
bereits Daten enthält,
und zeigt somit an, dass alle FIFO-Speicher, die dem entsprechenden
Endpunkt zugeordnet sind, bereits mit Daten gefüllt sind.
-
Ausgehend
von der Bestimmung in Schritt S3200 wird dann, wenn die Datenspeicherungsstatusinformationen
des Write-In-FIFO-Speichers auf „1" gesetzt sind, d.h., wenn alle FIFO-Speicher
des entsprechenden Endpunkts mit Daten gefüllt sind, dem Anwendungsblock 27 nicht
gestattet, mit der Daten-Write-In-Operation fortzufahren. Wenn sich
andererseits aus der Bestimmung in Schritt S3200 ergibt, dass die
Datenspeicherungsstatusinformationen des Write-In-FIFO-Speichers
nicht gleich „1" sind, d.h., dass
sie auf „0" gesetzt sind, werden
die Write-In-Daten D in dem entspre chenden Write-In-FIFO-Speicher
gespeichert (Schritt S3300). Anschließend werden die Statusinformationen
des Write-In-FIFO-Speichers von „0" auf „1" aktualisiert (Schritt S3500). Die aktualisierten
Statusinformationen des FIFO-Speichers werden in der Statusinformations-Speichereinheit 241 gespeichert.
-
In
Fortführung
des Verfahrens wird bestimmt, ob alle FIFO-Speicher mit Daten gefüllt sind
(Schritt S3600). Ausgehend von der Bestimmung in Schritt S3600 wird
dann, wenn alle FIFO-Speicher mit Daten gefüllt sind, ein neuer Write-In-FIFO-Speicher
zusätzlich
allokiert (Schritt S3700). Anschließend werden die Abbildungsinformationen
aktualisiert, sodass der Schreibzeiger den neuen Write-In-FIFO-Speicher
angibt (Schritt S3800). Allokierungsinformationen für den aktualisierten
FIFO-Speicher, d.h.
die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert.
Wenn sich aus der Bestimmung in Schritt S3600 ergibt, dass alle
FIFO-Speicher mit Daten gefüllt
sind, kann ein neuer Write-In-FIFO-Speicher nicht zusätzlich allokiert
werden, und das Verfahren wird beendet.
-
7A und 7B zeigen
beispielhafte Verfahren zum Übertragen
von Daten, die aus einem Write-In-FIFO-Speicher eines Endpunkts
während
der Datenübertragung
in der „OUT"-Richtung gelesen
wurden, zu dem Host 10 und zum Allokieren eines neuen Write-In-FIFO-Speichers.
-
Bezugnehmend
auf 7A und 7B erzeugt
der Host 10 ein IN-Token,
um Daten, d.h. IN-Daten anzufordern, die von einem entsprechenden
Endpunkt gelesen werden sollen (Schritt S4100). Die FIFO-Steuereinheit 24 bestimmt,
ob Datenspeicherungsstatusinformationen eines Read-Out-FIFO-Speichers,
der durch den Lesezeiger eines entsprechenden Endpunkts bestimmt
ist, auf „1" gesetzt sind (Schritt
S4200). Ein Wert „1" für die Statusinformationen
bedeutet, dass Daten in dem entsprechenden FIFO-Speicher gespeichert
sind.
-
Ausgehend
von der Bestimmung in S4200 wird dann, wenn die Datenspeicherungsstatusinformationen
des Read-Out-FIFO-Speichers nicht auf „1" gesetzt sind, d.h., wenn dort keine
zu lesenden Daten vorhanden sind, eine negative Antwort (NAK-Antwort)
an den Host 10 erzeugt (Schritt S4900). Ausgehend von der Bestimmung
in Schritt S4200 werden dann, wenn die Datenspeicherungsstatusinformationen
des Read-Out-FIFO-Speichers
auf „1" verbleiben, d.h.,
wenn dort zu lesende Daten vorhanden sind, die Daten D aus dem entsprechenden
Read-Out-FIFO-Speicher
gelesen (Schritt S4300). Die gelesenen Daten werden über den
Verbindungsblock 22 zu dem Host 10 übertragen.
-
Anschließend wird
bestimmt, ob eine ACK-Antwort durch den Host 10 erzeugt
wurde (Schritt S4400). Ausgehend von der Bestimmung in Schritt S4400
wird dann, wenn durch den Host 10 die ACK-Antwort nicht erzeugt
wurde, das Verfahren am Anfang wieder aufgenommen. Ausgehend von
der Bestimmung in Schritt S4400 werden dann, wenn die ACK-Antwort durch den
Host 10 erzeugt wurde, die Statusinformationen des Read-Out-FIFO-Speichers
von „1" auf „0" aktualisiert (Schritt
S4500). Die aktualisierten Statusinformationen des FIFO-Speichers
werden in der Statusinformations-Speichereinheit 241 gespeichert.
Anschließend
werden die Abbildungsinformationen aktualisiert, sodass der Lesezeiger
den nächsten
FIFO-Speicher angibt, der gültige
Daten enthält
(S4550). Die aktualisierten Allokierungsinformationen des FIFO-Speichers,
d.h. die Abbildungsinformationen werden in der Abbildungsinformations-Speichereinheit 242 gespeichert.
-
Gemäß dem Endpunkt-Steuerschema
in Übereinstimmung
mit der beispielhaften Ausgestaltung der vorliegenden Erfindung
werden Statusinformationen des Schreibzeigers überprüft, um den FIFO-Speicher in die
Lage zu versetzen, dass jeder Endpunkt mehr Daten empfängt. Für diese
Funktion wird bestimmt, dass die Datenspeicherungs-Statusinformation
eines Write-In-FIFO-Speichers, der durch den Schreibzeiger bestimmt ist,
auf „1" gesetzt ist (Schritt
S4600). Ausgehend von der Bestimmung in Schritt S4600 werden die
Datenspeicherungsstatusinformationen des Write-In-FIFO-Speichers
auf „1" gesetzt, und ein
neuer Write-In-FIFO-Speicher
wird zusätzlich
hierfür
allokiert (Schritt S4700). Der Umstand, dass die Datenspeicherungs-Statusinformation
des Write-In-FIFO-Speichers
auf „1" bleibt, bedeutet,
dass alle FIFO-Speicher bereits zuvor mit Daten gefüllt eingerichtet
wurden (in Schritt S3600 in 4). Bei
der beispielhaften Ausgestaltung der vorliegenden Erfindung ist
nach Abschluss der Read-Out-Operation in den Schritten S4300 bis
S4500 wenigstens einer der FIFO-Speicher in dem leeren Zustand eingerichtet.
Somit ist es möglich,
hierfür
zusätzlich
einen neuen Write-In-FIFO-Speicher zu allokieren. Nach dem Allokieren
des neuen Write-In-FIFO-Speichers werden die Abbildungsinformationen
aktualisiert, sodass der Schreibzeiger den neuen Write-In-FIFO-Speicher
angibt (Schritt S4800). Die aktualisierten Allokierungsinformationen
des FIFO-Speichers, d.h. die Abbildungsinformationen werden in der
Abbildungsinformations-Speichereinheit 242 gespeichert.
Wenn sich aus dem Bestimmungsergebnis in Schritt S4600 ergibt, dass
alle FIFO-Speicher mit Daten gefüllt
sind, kann ein neuer Write-In-FIFO-Speicher
nicht zusätzlich
hierfür
allokiert werden und das Verfahren wird beendet.
-
Wie
oben beschrieben, ist es im Zuge des Endpunkt-Steuerverfahrens gemäß der beispielhaften Ausgestaltung
der vorliegenden Erfindung möglich,
dynamisch oder flexibel den FIFO-Speicher jedes Endpunkts für eine entsprechende
Transaktion zu allokieren oder zuzuweisen, ohne eine Systemtaktfrequenz
zu erhöhen oder
eine Kapazität
des FIFO-Speichers zu vergrößern. Speziell
minimiert dies bei einer beispielhaften Ausgestaltung der vorliegenden
Erfindung das Erzeugen der negativen Antwort, d.h. der NAK-Antwort,
da die dynamische Allokierung in Echtzeit durchgeführt wird,
und verbessert die Effizienz des Datenaustausches in dem USB-System.