-
Die
vorliegende Erfindung bezieht sich auf ein Verfahren zur Vorverarbeitung
von Datenpaketen in einer Bus-Schnittstelleneinheit,
die über
einen Kommunikationsbus empfangen werden, und auf eine Bus-Schnittstelleneinheit
zur Verwendung in diesem Verfahren, sowie auf eine Anwendungsdaten-Verarbeitungseinheit
zur Verwendung in diesem Verfahren.
-
Hintergrund
-
Der
IEEE1394-Bus ist ein höchst
anspruchsvoller serieller, preiswerter Hochleistungs-Kommunikationsbus.
Er hat eine Lese/Schreibspeicher-Architektur und ein hoch ausgefeiltes
Kommunikationsprotokoll. Datenraten von 100, 200 oder 400 MBits/s
können
nahezu in Echtzeit übertragen
werden. Gleichzeitig können Daten
in beiden Richtungen übertragen
werden. Die ersten zehn Bits von übertragenen Adressenwerten
beziehen sich auf ein bis hinauf zu 1023 möglichen IEEE1394-Bus-Cluster.
Die folgenden sechs Bits der übertragenen
Adressenwerte beziehen sich in einem spezifischen Cluster auf einen
bis hinauf zu 63 Knoten, denen eine Anwendung oder eine Vorrichtung
zugeordnet ist. Daten zwischen Knoten können ohne Wechselwirkung mit
einem Host-Controller
ausgetauscht werden. Vorrichtungen können jederzeit mit dem Netz
verbunden oder von diesem getrennt werden, so dass ein Plug-and-Plag-Verhalten
möglich
ist.
-
Das
Kommunikationsprotokoll hat drei Schichten: Eine Bit-Übertragungsschicht (physical
layer), eine Sicherungsschicht (data link layer) und eine Transaktionsschicht. Üblicherweise
wird die Transaktionsschicht durch Firmware realisiert, das heißt durch
Software in einer Anwendungsdaten-Verarbeitungseinheit oder einem
Steuerprozessor einer Busstation, während die anderen Schichten
in der Bus-Schnittstelleneinheit
unter Verwendung von Chip-Gruppen ausgeführt werden.
-
Die
Bit-Übertragungsschicht
enthält
analoge Transceiver und eine digitale Zustandsmaschine. Sie wickelt
Bus-Auto-Konfiguration
und hot Plug ab. Sie taktet neu, regenetiert und wiederholt alle
Pakete und leitet alle Datenpakete zu der örtlichen Sicherungsschicht.
Sie führt
Paket-Framing aus, z. B. Geschwindigkeits-Code, Präfix und
Paket-Endzusammenbau.
Sie vermittelt und überträgt Pakete
von der örtlichen
Sicherungsschicht. Ähnliche
IC-Typen sind zum Beispiel TSB11C01, TSB11LV01, TSB21LV03 und TSB41LV03
von Texas Instruments, MB86611 von Fujitsu und 21S750 von IBM.
-
Die
Sicherungsschicht führt
alle Schritte zur Verteilung von Datenpaketen zu ihrer Bestimmung
aus. Sie erkennt an den Knoten adressierte Pakete durch Adressenerkennung
und dekodiert die Paket-Header. Sie liefert Pakete an höhere Schichten
und erzeugt Pakete aus höheren
Schichten. Sie arbeitet entweder isochron für AV-Datenbenutzung oder asynchron
für Steuerdaten-Benutzung.
-
Bei
dem isochronen Betrieb wird ein Kanal mit einer garantierten Bandbreite
errichtet. Es gibt eine definierte Latenz. Die Übertragung wird in 125 μs Zeitschlitzen
oder Zyklen ausgeführt.
Diese Betriebsart hat eine höhere
Priorität
als die asynchrone Datenübertragungs-Betriebsart.
-
Die
asynchrone Betriebsart ist nicht zeitkritisch, aber sicher. Sie
arbeitet als anerkannter Service mit einem betriebsamen und wiederholten
Protokoll. Es werden feste Adressen verwendet. Die Übertragung
erfolgt, wenn der Bus frei ist. Der asynchrone Betrieb wickelt Lese-Anforderung/Antwort,
Schreib-Anforderung/Antwort und Sperr-Anforderung/Antwort ab. Er führt Zyklussteuerung,
CRC-Erzeugung und
Validierung aus. Lieferbare Sicherungsschicht-IC-Typen sind zum
Beispiel TSB12C01A, TSB12LV21, TSB12LV31 und TSB12LV41 von Texas
Instruments und PDI1394L11 von Philips.
-
Die
Transaktionsschicht führt
asynchrone Bus-Transaktionen aus:
- – Lese-Anforderung/Lese-Antwort
- – Schreib-Anforderung/Schreib-Antwort
- – Sperr-Anforderung/Sperr-Antwort.
-
Wie
oben erwähnt,
kann dies durch in einem Microcontroller betriebene Software ausgeführt werden, z.
B. den i960 von SparcLite. Es kann auch eine AV-(audio video)-Schicht
vorhanden sein, die Gerätesteuerung,
Verbindungsverwaltung, Zeitstempelung und Paketisierung ausführt.
-
In
IEEE1394-Systemen wirkt die Sicherungsschicht als eine Schnittstelle
zwischen einer externen Anwendung und dem IEEE1894-Bus (über die
Bit-Übertragungsschicht).
Die externe Anwendung kann zum Beispiel ein Konsum-Elektronikgerät wie eine
Set-Top-Box oder ein VCR oder ein DVD-Spieler sein, der latenzkritische
isochrone Daten und nicht-latenzkriktische
asynchrone Daten liefert/empfängt.
Hier werden die asynchronen Datenpakete für die Steuerungsoperationen
oder Register-Lese/Schreib/Sperr-Operationen verwendet. Isochrone
Datenpakete enthalten Informationseinzelheiten wie Video-/Audio-Daten.
Die externe Anwendung könnte
auch ein auf einen Personalcomputer bezogenes Gerät sein,
wie ein Festplattenlaufwerk, das nur asynchrone Datenpakete liefert
und empfängt.
Hier können
asynchrone Datenpakete alle Arten von Daten einschließlich Audio/Video-Daten
enthalten.
-
In
der IEEE1394-Norm ist definiert, dass die Datenpakete in Quadlets
angeordnet sind (ein Quadlet besteht aus vier Bytes entsprechend
32 Bits). Es ist in dieser Norm auch definiert, dass die Bus-Schnittstelleneinheit
vom Groß-Endian-Typ sein muss,
was bedeutet, dass die Byte-Reihenfolge
innerhalb eines Quadlets so ist, dass das Byte höchster Wertigkeit bei der niedrigsten
Adresse gespeichert wird und so weiter. Eine genauere Difinition
dieses Ausdrucks wird später
in der Beschreibung gegeben. Es gibt zwei Arten von Byte-Reihenfolge-Schemata,
die aus der Computertechnologie bekannt sind. Eines ist der Groß-Endian-Typ und das andere
ist der Klein-Endian-Typ. Bei Mikroprozessoren vom Klein-Endian-Typ
werden die Bytes eines Multibyte-Datenworts vom kleinsten Ende an
gespeichert, d. h. das Byte niedrigster Wertigkeit wird bei der
niedrigsten Adresse gespeichert, und so weiter. Beide Typen werden
sehr oft in der Micorelektronik verwendet. Es sind Microcontroller
oder Mikroprozessoren vom Groß-
oder Klein-Endian-Typ im Handel erhältlich. Bei der Entwicklung
einer Busstation mit einer IEEE1394-Bus-Schnittstelle ergibt sich
das Problem, die Byte-Reihenfolge der Quadlets in dem Header des
asynchronen Datenpakets gemäß der Byte-Reihenfolge
des Ziel-Microcontrollers anzuordnen, weil diese Header-Daten in
dem Ziel-Microcontroller bewertet werden müssen, da die Header-Datenbewertung
zur Transaktionsschicht gehört.
Eine Lösung
könnte
darin bestehen, die Byte-Neuordnung durch Software in dem Ziel-Microcontroller
nach Lesen der Daten aus der Bus-Schnittstelleneinheit vorzunehmen.
Diese Lösung
hat jedoch den Nachteil, dass der Ziel-Microcontroller eine Byte-Neuordnungsaufgabe übernehmen
muss, wenn er vom Klein-Endian-Typ
ist, was zu einem Verlust an Leistung auf der Seite des Ziel-Microcontrollers
führt.
-
Aus
EP-A-0 751 655 ist
eine Byte-Neuordnungseinheit bekannt, die unbeachtet lässt, ob
die Daten von einem Header-Feld
oder einem Nutzdaten-Feld stammen. Es werden alle Bytes neu geordnet.
-
Erfindung
-
Nach
Erkennen des oben erwähnten
Nachteils ist der erste Gedanke, die Byte-Reihenfolgeänderung der
Header-Quadlets der asynchronen Datenpakete innerhalb der Sicherungsschicht
in Hardware in Abhängigkeit
von einer Informationseinzelheit vorzunehmen, die klärt, ob die
Anwendungsdaten-Verarbeitungseinheit
vom Groß-
oder Klein-Endian-Typ ist.
-
Falls
die Sicherungsschicht-Einheit eine Registerdatei mit einer Anzahl
von Registern mit Multibyte-Datenworteinträgen hat, hat diese Lösung den
Nachteil, dass auch die Bytes der Einträge in diesen Registern neu
geordnet werden müssen,
wenn sie in einem Steuerprozessor interpretiert werden, falls der
Steuerprozessor von einem anderen Typ ist als die Sicherungsschicht-Einheit.
-
Es
gibt einen zweiten Gedanken, eine Änderung der Byte-Reihenfolge des Nutzdaten-Feldes
vorzunehmen, anstatt die Byte-Reihenfolge in dem Header-Datenfeld
zu ändern.
Hierbei kann die Multiplex-Vorrichtung für die Byte-Neuordnung sehr
einfach sein, weil die Steuerung des Multiplexers keine anderen
Datenkomponenten, wie Registerdaten-Einträge, berücksichtigen muss.
-
Beide
Lösungen
haben den Vorteil, dass keine Verarbeitungsleistung der Anwendungsdaten-Verarbeitungseinheit
für Byte-Neuordnung erforderlich
ist. Auch die Software der Anwendungsdaten-Verarbeitungseinheit
wird vereinfacht.
-
Gemäß der Erfindung
ist es vorteilhaft, wenn der Schritt der Neuordnung der Bytes des
Nutzdaten-Feldes von einer weiteren Neuordnung der Bytes in dem
Header-Datenfeld und dem Nutz-Datenfeld begleitet wird, wie in Anspruch
1 beansprucht ist. Dies kann mit einer weiteren Multiplex-Vorrichtung erfolgen
oder sehr einfach durch Herstellen permanenter fest verdrahtetet
Querverbindungen in dem Datenbus, der das Datenpaket von der Schnittstellen-Einheit
(20) zu einem Speicher (33) für die Anwendungsdaten-Verarbeitungseinheit
(30) überträgt.
-
Vorteilhafte
weitere Ausführungsformen
des erfindungsgemäßen Verfahrens
sind in den entsprechenden Unteransprüchen offenbart.
-
Das
Schreiben der Informationseinzelheit, die klärt, ob die Anwendungsdaten-Verarbeitungseinheit vom
Groß-
oder Klein-Endian-Typ
ist, in die Bus-Schnittstelleneinheit während der Initialisierung gemäß Anspruch
3 ist eine vorteilhafte Ausführungsform,
weil während
der Initialisierung eine Menge von Parametern in der Bus-Schnittstelleneinheit
irgendwo gesetzt werden muss und der Eintrag nachher während des
Betriebs nicht geändert
werden muss.
-
Mit
dem Vorsehen von Byte-Reihenfolge-Feststellungs-Bits in einem Extra-Header
gemäß Anspruch 4
ist es möglich,
ohne weiteres die Byte-Reihenfolge in der Anwendungsdaten- Verarbeitungseinheit
während der
Bewertung und Prüfung
zu verifizieren. Dies kann die Basis für die vollautomatische Übertragung
der Informationseinzelheit zu der Bus-Schnittstelleneinheit sein. Eine solche
Software kann für
Groß-
und Klein-Endian-Vorrichtungen verwendet werden. Dies vereinfacht
die Software-Anpassung in Anwendungsdaten-Verarbeitungseinheiten. Die Software
braucht nur zusammengestellt zu werden und ist bereit, in Vorrichtungen
vom Groß-
oder Klein-Endian-Typ zu laufen.
-
Die
Erfindung besteht auch in einer vorteilhaften Ausführungsform
einer Bus-Schnittstelleneinheit, wie im Anspruch 6 definiert.
-
Zeichnungen
-
Ausführungsformen
der Erfindung werden unter Bezugnahme auf die beigefügten Zeichnungen
beschrieben. In den Zeichnungen stellen dar:
-
1 eine
Veranschaulichung zur Erklärung
der Byte-Reihenfolge-Interpretation
in einer Groß-Endian-Vorrichtung, die
mit einer anderen Groß-Endian-Vorrichtung
verbunden ist;
-
2 eine
Veranschaulichung zur Erklärung
der Byte-Reihenfolge-Interpretation
in einer Klein-Endian-Vorrichtung,
die mit einer Groß-Endian-Vorrichtung
verbunden ist;
-
3 die
asynchrone Paketstruktur für
den IEEE1394-Bus;
-
4 ein
Blockschaltbild für
ein Festplatten-Laufwerk mit IEEE1394-Schnittstelle;
-
5 eine
Veranschaulichung für
den Byte-Reihenfolge-Änderungsprozess
in einem Sicherungsschicht-IC einer IEEE1394-Bus-Schnittstelle;
-
6 ein
Blockschaltbild der Hardware-Einheit, die die Byte-Reihenfolgeänderung
in einem Sicherungsschicht-IC einer IEEE1394-Bus-Schnittstelle ausführt;
-
7 eine
Veranschaulichung zur Erklärung
einer zweiten Ausführungsform
der Erfindung.
-
Ausführungsbeispiele
-
Zuerst
wird die Bedeutung der Ausdrücke
Groß-Endian
und Klein-Endian
erklärt.
-
Groß-Endian
und Klein-Endian sind Begriffe, die die Reihenfolge bechreiben,
in der eine Folge von Bytes in einem Computer-Speicher gespeichert
wird. Groß-Endian
ist eine Reihenfolge, in der das „große Ende" (Wert höchster Wertigkeit in der Folge)
zuerst gespeichert wird (an der niedrigsten Speicheradresse). Klein-Endian
ist eine Reihenfolge, bei der das „kleine Ende" (Wert niedrigster
Wertigkeit in der Folge) zuerst gespeichert wird. Zum Beispiel würden in
einem Groß-Endian-Computer
die beiden für
die hexadezimale Zahl 0x4F52 benötigten
zwei Bytes als 0x4F52 im Speicher gespeichert (wenn 0x4F z. B. bei
der Speicheradresse 1000 gespeichert wird, ist 0x52 bei der Adresse
1001. Bei einem Klein-Endian-System würde die Speicherung als 0x524F
(0x52 bei der Adresse 1000, 0x4F bei 1001) erfolgen.
-
Wie
bereits in der Einleitung erwähnt
wurde, existieren in elektronischen Geräten oft Multibyte-Datenworte.
Ein Beispiel ist das Quadlet-Datenwort, das aus 4 Bytes oder entsprechend
32 Bits besteht. Zum Beispiel sind die Datenpakete von dem IEEE1394-Bus
in Quadlets organisiert, was später
noch genauer erklärt wird.
Sehr oft ist der Speicherraum eines Computers in 8-Bit-Speicherworten
organisiert, was bedeutet, dass ein Quadlet an vier Speicherorten/Adressen
gespeichert werden muss. Selbst wenn der Speicherraum einer Vorrichtung
in 32-Bit-Worten (Quadlets) organisiert ist, haben diese Vorrichtungen
sehr oft Verarbeitungs-Betriebsarten/Prozessorbefehle,
bei denen 8-Bit-Speicherzugriffe
gemacht werden. Es sei bemerkt, dass für die hier erläuterten
Ausführungsbeispiele
angenommen wird, dass der Speicher in 8-Bit-Worten organisiert ist.
-
Die
Prinzipien von Klein- und Groß-Endian-Betriebsarten
sind in 1 und 2 für das Beispiel
eines 32-Bit-Wortes und von 8-Bit-Speicherzugriffen veranschaulicht.
In 1 sind zwei Quadlets dargestellt. Das erste ist
in einem 8-Bit-organisierten
Speicher in einem Quellensystem vom Groß-Endian-Typ gespeichert. Das zweite ist
in einem 8-Bit-organisierten
Speicher eines Zielsystems gespeichert, das auch vom Groß-Endian-Typ
ist.
-
Die
Byte-Ordnung in Klein-Endian-Systemen ist in 2 auch für das Beispiel
eines 32-Bit-Wortes und von 8-Bit-Speicherzugriffen dargestellt. Es ist
gezeigt, dass die Klein-Endian-Vorrichtung das Quadlet von der entgegengesetzten
Seite an als die Groß-Endian-Vorrichtung
zusammenfügt.
Die Klein-Endian-Vorrichtung nimmt an, dass das Byte höchster Wertigkeit
des Quadlets im Speicher in der größten der vier Adressen ist,
wo das Quadlet gespeichert ist, und so weiter. Das resultierende
interpretierte Quadlet hat daher die falsche Byte-Reihenfolge, wie
in 2 gezeigt ist.
-
In
der IEEE1394-Norm, in der auch auf die IEEE1394-1995-Norm, New York, 30.
August 1996, für
einen seriellen Hochleistungs-Bus Bezug genommen wird, ist ein Kommunikationsprotokoll
definiert, das mehr und mehr in der Computertechnologie und in Produkten
der Konsumelektronik verwendet wird.
-
Das
Kommunikationsprotokoll erlaubt die Übertragung von isochronen und
asynchronen Datenpaketen. Die Struktur dieser Datenpakete ist in
der IEEE1394-Norm definiert. Isochrone Datenpakete sind für die Übertragung
von Audio/Video-Daten vorgesehen, weil diese Art von Daten in regelmäßigen Zeitintervallen
mit relativ stabiler Menge in der Quellenvorrichtung auftreten.
Typische Anwendungen sind die Übertragung
von kodierten Audio- und Video-Daten von einer Set-Top-Box zu einem
Aufzeichnungsgerät,
z. B. einem Videorecorder, oder von einem Satellitenempfänger zu
einem Mini-Disc-Spieler
im Fall nur von Audio-Daten, usw.
-
Für gemäß MPEG2
kodierte Audio- und Video-Daten, die mit isochronen Datenpaketen übertragen werden,
existiert eine getrennte Norm, genannt IEC-Internationale Norm 61883-1,
Consumer audio/video equipment- Digital interface, 1. Ausgabe 1998-02.
Hier ist die Struktur der isochronen Datenpa kete definiert und auch
die Regeln, wie die Pakete mit Header-Daten, Zeitstempel-Daten,
usw. aufgefüllt
werden müssen. Die
Header in einem solchen Paket (1394-Header und CIF-Header) werden
in dem Sicherungsschicht-IC der IEEE1394-Schnittstelle ausgewertet.
Dies bedeutet, dass die Header-Daten nicht zu einem Microcontroller oder
einer CPU außerhalb
der Bus-Schnittstelle übertragen
werden müssen.
-
Die
Nutzdaten der isochronen Pakete betreffen Bit-Stromdaten, die nicht allgemein in Multibyte-Datenform
interpretiert werden müssen.
Die Daten-Bytes werden zu einer Anwendungsdaten-Verarbeitungseinheit aus
dem Speicher in den Sicherungsschicht-IC mit direktem Speicherzugriff
verschoben. In diesen Geräten
ist eine entsprechende DMA-Einheit
vorgesehen. Die DMA-Einheit ist so ausgelegt, dass sie Daten in
derselben Reihenfolge liest, in der sie in den Speicher der Schnittstelleneinheit
geschrieben worden sind, und dass sie sie in den Speicher der Anwendungsdaten-Verarbeitungseinheit
in derselben Reihenfolge schreibt. Dies bedeutet, dass für isochrone
Datenpakete das Byte-Ordnungsproblem
nicht auftritt, wenn Daten zu der Anwendungsdaten-Verarbeitungseinheit übertragen
werden.
-
Für asynchrone
Datenpakete ist die Situation anders. Bei asynchronen Datenpaketen
werden alle anderen Datenarten als gemäß MPEG2 kodierte Audio- und
Video-Daten übertragen.
Bei anderen Anwendungen als den üblichen
Konsum-Elektronikgeräten kann
es passieren, dass auch kodierte Audio- und Video-Daten mit asynchronen
Datenpaketen übertragen
werden müssen.
Ein Beispiel wird später
dargelegt. Gemäß den meisten
IEEE1394-Schnittstellenausführungen
erfolgt die Auswertung der asynchronen Datenpaket-Header, die zu
der Transaktionsschicht gehören,
nicht in dem Sicherungs schicht-IC. Sie werden in der Datenverarbeitungseinheit
der Anwendung ausgewertet, und das Byte-Ordnungsproblem entsteht
aufgrund der Tatsache, dass in einer Anwendung der μC vom Groß-Endian-Typ
und in einem anderen Gerät
vom Klein-Endian-Typ
ist.
-
Der
Aufbau eines asynchronen Pakets ist in
3 dargestellt.
Die Bezugsziffern
10 und
12 bezeichnen asynchrone
Pakete ohne Nutzdaten. Diese Pakete bestehen aus einem Extra-Header
und einem asynchronen 1394-Header. Der Extra-Header ist wahlweise, aber er wird für Steuerzwecke
in einer Anwendungsvorrichtung oder Sicherungsschicht-Einheit und
in einer spezifischen Ausführungsform
der Erfindung zum Transportieren von zwei Byte-Reihenfolge-Feststellungs-Bits
13 verwendet.
Dies wird später
erklärt.
Die Bezugsziffer
12 bezeichnet ein asynchrones Paket, das
auch ein Datenfeld hat. Die Komponenten der asynchronen Header und
der Extra-Header
sind nachfolgend aufgelistet:
Name | Beschreibung |
DESTINATION_ID | Bestimmungs-Identifizierung |
TL | Transaktions-Etikett |
RT | Wiederholungs-Code |
TCODE | Transaktions-Code |
PRI | Priorität |
SOURCE_ID | Quellen-Identifizierung |
PACKET
TYPE SPECIFIC INFORNATION | Spezifische
Paket-Typ-Information |
DATA_LENGTH | Datenfeld-Länge |
EXTENDED_TCODE | Transaktions-Code-Erweiterung |
DATA
FIELD | Datenfeld |
ZERO
PAD BYTES | Null-Füll-Bytes |
HSIZE | Header-Feldgröße |
RSV | Reserviert |
DATA
SIZE | Datenfeldgröße |
-
Die
Bedeutungen der Komponenten des asynchronen 1394-Headers werden auch vollständig in
der oben erwähnten
IEC-61883-1-Norm
beschrieben. Es ist darauf hinzuweisen, dass der asynchrone Header
je nach dem Typ des asynchronen Datenpakets aus zum Beispiel drei
oder vier Quadlets bestehen kann. Es ist ohne weiteres aus 3 zu
erkennen, dass die Einträge
in dem asynchronen Header nicht mit den Byte-Grenzen in einem Quadlet synchronisiert
sind und daher empfindlich für
die Byte-Reihenfolge während
der Auswertung sind. Für
das Begrüßungsprotokoll
können
asynchrone Pakete ohne Datenfeld verwendet werden, z. B. für Bestätigungsmeldungen
und auch für
eine gewisse Art von spezifischen Steuernachrichten wie eine Sperranforderung
für Fernsehgeräte mit Kindersicherungsfähigkeit,
usw.
-
Ein
Beispiel einer nicht für
Konsum bestimmte Anwendungsvorrichtung ist in 4 dargestellt.
Es ist das Beispiel eines Festplatten-Laufwerks mit IEEE1394-Schnittstelle.
Die Bezugsziffer 20 bezeichnet die IEEE1394-Schnittstelle.
Die Bezugsziffer 30 zeigt auf die Anwendungsdaten-Verarbeitungseinheit,
die zur Steuerung des HD-Antriebs 40, z. B. nach dem SCSI-Protokoll
verwendet wird. Die Anwendungsdaten-Verarbeitungseinheit hat auch
die Aufgabe, die asynchronen Header-Daten gemäß den Transaktionsschicht-Diensten auszuwerten.
Zu diesem Zweck ist es erforderlich, eine Byte-Neuordnung vorzunehmen,
falls die Anwendungsdaten-Verarbeitungseinheit vom Klein-Endian-Typ
ist. Dies ist deswegen nötig,
weil der IEEE1394-Sicherungs-IC gemäß Definition in der IEEE1394-Norm
vom Groß-Endian-Typ
sein soll.
-
Falls
die Anwendungsdaten-Verarbeitungseinheit vom Groß-Endian-Typ ist, besteht keine Notwendigkeit
für eine
Byte-Neuordnung.
-
Gemäß der Erfindung
erfolgt die Byte-Neuordnung mit einer entsprechenden Multiplex-Vorrichtung 24 unter
Steuerung eines Klein-Endian-Kennzeichens 23 in einem Statusregister 22.
Dieses Kennzeichen wird während
der Initialisierung des Sicherungs-IC gesetzt. Die Initialisierung
dieses IC erfolgt nach Einschalten mit einem spezifischen Programm,
das auf der Anwendungsdaten-Verarbeitungseinheit 30 läuft. In
dieses Programm muss ein Schritt eingefügt werden, der das Klein-Endian-Kennzeichen
auf „1" setzt, falls die
Anwendungsdaten-Verarbeitungseinheit vom Klein-Endian-Typ ist. Das
Kennzeichen wird auf „0" gesetzt, falls die
Anwendungsdaten-Verarbeitungseinheit vom Groß-Endian-Typ ist.
-
Der
Byte-Neuordnungsschritt ist in 5 veranschaulicht.
Es ist ein Quadlet 25 von asynchronen 1394-Header-Daten
gezeigt, für
das die Byte-Neuordnung vorgenommen wird. Diese Neuordnung erfolgt
automatisch gerade nach Empfang des asynchronen 1394-Pakets. Wenn
die Anwendungsdaten-Verarbeitungseinheit
auf dieses Paket zugreift, empfängt
sie die Quadlets 27 des Headers in richtiger Byte-Reihenfolge, und falsche
Ergebnisse werden bei der Auswertung vermieden. Falls das Klein-Endian-Zeichen
den Eintrag „0" führt, wird
die automatische Byte-Neuordnung für die Header-Quadlets abgeschaltet,
und die Quadlets werden zu der Anwendungsdaten-Verarbeitungseinheit
in ungeänderter
Byte-Reihenfolge übertragen.
Die Datenfeld-Quadlets werden bei diesem Ausführungsbeispiel nicht neu geordnet,
weil die Nutzdaten 8-Bit-Datenworte sind, was bedeutet, dass zu
keiner Zeit Multibyte-Datenworte zu interpretieren sind. Die Nutzdaten-Bytes
werden aus dem Speicher mit 8-Bit-Zugriffen, beginnend von der niedrigsten
Adresse zu den höheren
Adressen ausgelesen.
-
Das
Problem der Steuerung der Multiplexvorrichtung zur Neuordnung von
entweder vier oder fünf Quadlets
wird leicht mit Hilfe der Extra-Header für die verschiedenen Pakete
gelöst.
Der Aufbau der Extra-Header ist in der IEEE1394-Norm nicht definiert.
Dies ist ein wahlweiser Header, und er kann für Steuerzwecke in einer Anwendungsvorrichtung
oder in der Sicherungsschicht verwendet werden. In der Betriebsart,
bei der Datenpakete von dem IEEE1394-Bus empfangen werden, wird
der Extra-Header in dem Sicherungsschicht-IC innerhalb der 1394-Schnittstelle
erzeugt. In 3 ist gezeigt, dass der Extra-Header
einen Eintrag für
die Header-Größe und auch
einen Eintrag für
die Datenfeld-Größe hat.
Die Einträge
für die
Header-Größe oder
die Datengröße müssen ausgewertet
werden, bevor die Byte-Neuordnung vorgenommen wird. Dies kann ohne weiteres
mit zwei Flip-Flop-Gruppen
erfolgen, die jedes Mal gesetzt werden, wenn ein Quadlet neu geordnet worden
ist und die Neu-Sortierung gestoppt wird, nachdem vier/fünf Flip-Flops
gesetzt worden sind. Die Wahl zwischen den Werten 4 und 5 erfolgt
mit Hilfe des Eintrags in dem Extra-Header für die Header-Größe. Für diesen
Zweck sind wenige logische Gatter erforderlich.
-
Der
Aufbau der Multiplexvorrichtung ist in 6 dargestellt.
Sie besteht aus Multiplexstufen 241, denen als Eingang
die entsprechenden Bits der Bytes, die ausgetauscht werden sollen,
zugeführt
werden. Die Ausgänge
dieser Multiplexstufen werden den entsprechenden Bits des Ausgangsregisters 26 zugeführt. Jeder Multiplexer 241 wird
mit dem Klein-Endian-Kennzeichen 23 gesteuert.
-
In 3 ist
auch gezeigt, dass der Extra-Header zwei Einträge 13 hat, die Byte-Reihenfolge-Feststellungs-Bits
genannt werden. In jedem Extra-Header wird das erste Byte-Reihenfolge-Feststellungs-Bit
auf „0" gesetzt, und das
zweite wird auf „1" gesetzt. Mit diesen
beiden Bits ist es ohne weiteres möglich, die Paket-Header-Byte-Reihenfolge
nach Übertragung
zu der Anwendungsdaten-Verarbeitungseinheit
festzustellen. Dies geschieht, weil die richtige Byte-Reihenfolge
angezeigt wird, wenn das zweite Byte höchster Wertigkeit in seinem
Bit höchster
Wertigkeit einen „0"-Eintrag hat und
das dritte Bit höchster
Wertigkeit in seinem Bit höchster
Wertigkeit einen „1"-Eintrag hat.
-
Mit
diesen Byte-Reihenfolge-Feststellungs-Bits ist es möglich, die
in der Anwendungsdaten-Verarbeitungseinheit betriebene Software
zu verbessern, so dass sie in der Lage ist, dynamisch an die Byte-Reihenfolge-Interpretation
der Anwendungsdaten-Verarbeitungseinheit vollautomatisch angepasst
zu werden. Während
der erstmaligen Initialisierung fragt die Software nach einem asynchronen
Paket und wertet die Byte-Reihenfolge-Feststellungs-Bits aus. Mit
diesem Ergebnis weiß sie,
ob sie eine Klein- oder Groß-Endian-Vorrichtung ist und
kann die entsprechenden Parameter für die zukünftigen Initialisierungen setzen.
Es muss sich kein Software-Ingenieur um das Groß- und Klein-Endian-Problem
bei dieser allgemeineren Software kümmern.
-
Als
nächstes
wird eine andere Ausführungsform
der Erfindung in Einzelheiten erklärt. Zu diesem Zweck wird auf 7 Bezug
genommen. In 7a ist die Reihenfolge
der Übertragung
von vier Header-Bytes HB0 bis HB3 und von vier Nutz- Datenbytes DB0 bis
DB3 gezeigt. Die empfangenen Bytes werden in den internen Speicher
der IEEE1394-Schnittstelleneinheit
geschrieben, wobei $A000 bis $A001 die Adressen des 32-Bit-organisierten
internen Speichers sind. Das MSB des Header-Quadlets ist HB3, und
das LSB ist HB0. Die empfangenen Datenworte werden zu einem externen
Speicher 33 übertragen.
Dies erfolgt ohne Hilfe der Anwendungs-CPU 30 unter Verwendung
der Speichereinheit 32 mit direktem Zugriff. Es wird vermutet,
dass der Datenbus zwischen dem externen Speicher 30 und
der Schnittstelleneinheit 20 ein 32-Bit-Bus ist. Der externe
Speicher ist 8-Bit-organisiert.
Somit besetzen die beiden empfangenen Quadlets den Adressenraum
von $D000 bis $007 in dem externen Speicher 33. Man kann
sehen, dass das MSB des Header-Quadlets HB3 an dem ersten Speicherort
$D000 und das LSB des Header-Quadlets
HB0 unter der Adresse $D003 gespeichert wird. Das erste Daten-Byte
DB0 des Nutzdaten-Feldes wird unter der Adresse $D004, und das letzte
Daten-Byte DB3 wird unter der Adresse $007 gespeichert. Dies ist
die Speicher-Reihenfolge,
wenn keine Byte-Neuordnung erfolgt. In 7 ist angenommen,
dass die CPU 30 vom Groß-Endian-Typ
ist. Dann wird die CPO 30 die Interpretation des Header-Quadlets
unter den Adressen $D000 bis $D003 in der richtigen Reihenfolge
vornehmen. Sie wird das Byte im Speicherort $D000 als das MSB des
Header-Quadlets und das Byte im Speicherort $D003 als das LSB des
Header-Quadlets interpretieren. Zum Dekodieren der Daten-Bytes des Nutzdaten-Feldes
werden die Daten-Bytes aus dem Speicher in der Lese-Reihenfolge
RO ausgelesen, wie dargestellt. Die Dekodier-Reihenfolge DO im Anwendungs-μC 30 ist
daher in diesem Fall richtig.
-
In 7 ist
angenommen, dass der μC
30 vom Klein-Endian-Typ
ist. In diesem Fall ist die Interpretation des Header- Quadlets falsch.
Die Klein-Endian-Vorrichtung interpretiert das Header-Byte ΗBO als MSB und
das Header-Byte HB3 als LSB. Die Dekodier-Reihenfolge der Nutzdaten-Bytes
im Speicher ist richtig, und es gibt keinen Unterschied zum ersten
Fall, wie man in 7b sieht.
-
In 7c ist angenommen, dass der μC 30 vom
Klein-Endian-Typ
ist. Um die richtige Header-Quadlet-Interpretation zu erzielen,
wird folgendes getan: die Byte-Reihenfolge in der 32-Bit-Datenbus-Verbindung zwischen
dem Speicher 33 und der IEEE1394-Schnittstelle 20 wird
einfach geändert,
indem entsprechende fest verdrahtete Kreuzverbindungen hergestellt
werden. Natürlich
wird dies für
die ganze Betriebszeit der Vorrichtung festgelegt und kann während des
Betriebs nicht geändert
werden. Diese festgelegte Byte-Reihenfolge-Änderung
ist in 7c durch das Kreuzungssymbol
zwischen der IEEE1394-Schnittstelleneinheit 20 und dem
Speicher 33 angegeben. Natürlich werden hierdurch alle
Quadlets aus dem internen Speicher in der Einheit 20 der
Byte-Reihenfolge-Änderung
unterworfen. Dies gilt für
den Header und das Nutzdaten-Feld eines empfangenen Pakets. Aus 7b ist bekannt, dass die Daten-Bytes des
Nutzdaten-Feldes in der Klein-Endian-Vorrichtung in der richtigen
Reihenfolge dekodiert werden. Um somit Dekodierfehler zu vermeiden,
erfolgt eine Neuordnung der Nutzdaten-Feld-Quadlets in der Schnittstelleneinheit 20.
Dies geschieht automatisch gerade nach Empfang eines Pakets durch
eine Multiplexvorrichtung wie der, die in 6 gezeigt
ist. Somit wird die Byte-Reihenfolge
der Nutzdatenfeld-Quadlets in dem internen Speicher der Schnittstelleneinheit 20 geändert. Dies
ist in 7c dargestellt. Als Konsequenz
ist die Byte-Reihenfolge
für das
Nutzdatenfeld im Speicher 33 identisch mit den in 7a und 7b gezeigten
Fällen,
aber die Byte- Reihenfolge
des Header-Quadlets ist unterschiedlich. Dies führt zu der richtigen Interpretation
des Header-Quadlets in dem Klein-Endfan-μC wie auch zu der richtigen
Dekodier-Reihenfolge
der Nutzdaten-Bytes.
-
Modifikationen
können
bei verschiedenen Ausführungen
erforderlich sein, bei denen zum Beispiel die Breite der Datenbus-Verbindung
zwischen der IEEE1394-Schnittstelleneinheit 20 und dem
externen Speicher 33 verschieden ist, z. B. 16 Bit oder
8 Bit. Die Prinzipien der Erfindung bleiben aber anwendbar.