-
TECHNISCHES GEBIET DER
ERFINDUNG
-
Diese
Erfindung bezieht sich allgemein auf das Gebiet elektronischer Vorrichtungen
und insbesondere auf ein Verfahren zum Zuweisen eines Datenpakets
zu einem von mehreren DMA-Kanälen,
auf eine Schaltung zum Zuweisen eines Datenpakets zu einem DMA-Kanal
und auf ein Personalcomputersystem.
-
HINTERGRUND
DER ERFINDUNG
-
Für viele
Multimediaanwendungen ist nicht nur die Prozessorgeschwindigkeit
wichtig, sondern außerdem
die Eingabe/Ausgabe-Bandbreite ein entscheidender Faktor, der Anwendungen
in Personalcomputern begrenzt. Um diese Beschränkung zu behandeln, ermöglicht die
IEEE-Norm 1394 Hochleistungs-Multimediaverbindungen mit Camcordern,
Fernsehgeräten,
Stereoanlagen, CD-Wechslern, Set-Top-Boxen, Mischkonsolen und Musik-Keyboards
sowie herkömmlichen
Personalcomputervorrichtungen. Die auch als die "FireWire"-Norm bekannte IEEE 1394 schafft eine
Busschnittstellennorm für
tragbare und Desktop-Computerumgebungen. Die IEEE-Norm 1394 dient
als eine wichtige Verknüpfungstechnologie,
die eine Brücke
zwischen dem Verbraucher- und dem Computermarkt schlägt und einen
seriellen Bus beschreibt, der durch ein fortgeschrittenes Kommunikationsprotokoll
angesteuert wird. Der serielle IEEE-1394-Bus ist für niedrige
Systemkosten konstruiert, während
er die Datenübertragungsraten
bereitstellt, die für
Hochleistungs-Peripheriebusse erforderlich sind.
-
Die
durch das Institute of Electrical and Electronic Engineers (IEEE)
und seine Liste von Mitgliedscomputerunternehmen entwickelte IEEE-Norm
1394 ist eine serielle Busschnittstelle, die eine preiswerte digitale Hochgeschwindigkeitsdatenübertragung
und -kommunikation ermöglicht.
Die Übertragungsgeschwindigkeiten zwischen
den Vorrichtungen können
sowohl über
die asynchrone als auch über
die isochrone Datenübertragungsbetriebsart
bis zu 400 Megabits pro Sekunde (MBit/s) erreichen. Da die Schnittstelle
der IEEE-Norm 1394 ein isochrones Zeitscheibensystem betreibt, eignet
sie sich für
Videoanwendungen. Falls das System z. B. zur Ausgabe eines Teilbilds
pro 1/15 Sekunden konfiguriert ist, gibt es in jedem ausgesendeten
Paket wenigstens ein Teilbild. Dies führt zu einer ruhigen Videobetrachtung.
Aus diesem Grund ist die Schnittstelle der IEEE-Norm 1394 hochkompatibel
mit Technologien wie der asynchronen Übertragungsbetriebsart (ATM),
die ebenfalls in einer isochronen Betriebsart arbeitet.
-
Nutzen
der IEEE-Norm 1394 sind eine Echtzeitdatenübertragung, die den Nutzen
einer idealen Verbindung für
Multimediaanwendungen schafft. Die IEEE-Norm 1394 erzeugt unter Verwendung eines
kleinen, haltbaren und biegsamen Kabels und kleiner, haltbarer und
biegsamer Kabelverbinder Kosteneinsparungen und beseitigt bestimmte
Kabelanforderungen. Die IEEE-Norm 1394 schafft universelle Eingangs/Ausgangs-Verbindungen,
die Eingangs/Ausgangs-Ports integrieren und Leiterplattenraum verdichten.
Außerdem schafft
die IEEE-Norm 1394 eine gleichberechtigte Kommunikationsstruktur,
die ermöglicht,
dass die Peripheriegeräte
direkt miteinander kommunizieren, ohne die Host-Einheit zu belasten.
-
Die
IEEE-Norm 1394 schafft einen seriellen Hochgeschwindigkeitsbus,
der Paketdaten verwendet, die einen Anfangsblock enthalten. Der
Anfangsblock enthält
Leitungsinformationen. Außerdem
enthalten die Paketdaten Nutzdaten. Die physikalischen Eigenschaften
der Medien sind nicht notwendig für eine lange Übertragungsentfernung
bestimmt. Die IEEE-Norm 1394 ist für kurze Entfernungen wie etwa
für lokale
Netze, die an einem Desktop-Bus betrieben werden, bestimmt. Die
Entfernungen sind häufig
länger
als einfach die Desktop-Entfernungen, wobei die IEEE-Norm 1394 aber
nicht zur Verwendung für
Operationen lokaler Netze bestimmt ist. Somit schafft die IEEE-Norm
1394 im Wesentlichen eine Hochgeschwindigkeitsverbindung, die serielle
Busse und parallele Busse zum Zugreifen auf Vorrichtungen wie etwa
Workstations, Home-Computer, Fernsehgeräte, VCRs und Camcorder mit
verschiedenen Medientypen wie etwa Audio, Video und Text ersetzt.
-
Um
die Anforderungen einer Schnittstellenvorrichtung zur Kommunikation
gemäß der IEEE-Norm 1394
zu erfüllen,
gibt es die Anforderung, zu identifizieren, dass ein gegebenes Paket
durch einen besonderen Knoten empfangen werden soll. Die IEEE-Norm
1394 tut dies auf programmierbare Weise. Um sicherzustellen, dass
lediglich gewünschte
Pakete von den Peripheriegeräten
an den Personalcomputer übertragen
werden, ist es erforderlich, dass lediglich die gewünschten
Pakete freigelassen und an den Personalcomputer weitergeleitet werden.
Nach Kenntnis des Anmelders ermöglicht
die bestehende Technologie keine enge Auswahl von Paketen auf programmierbare,
flexible und anpassbare Weise. Nach Kenntnis des Anmelders können bestehende
Schnittstellenvorrichtungen für
den 1394-Bus reservierte Operationscodes oder Tcodes in dem Paketanfangsblock
nicht auf programmierbare Weise behandeln. Nach Kenntnis des Anmelders
ermöglicht
keine bestehende Schnittstelle für
einen IEEE-1394-Bus, aus den Kanälen,
die an Datenmuster angepasst sind, einen Kanal mit der höchsten Priorität auszuwählen. Nach
Kenntnis des Anmelders ermöglicht
kein bestehendes System, ein Datenmuster mit einem Übereinstimmungsdatenmuster
zu vergleichen und das Datenmuster einem besonderen Kanal zuzuweisen.
Außerdem
schaffen die bestehenden Schnittstellenvorrichtungen keinen Weg,
mehrere Mengen gewünschter
Muster anzugeben, um ein gegebenes Datenmuster mit einem gegebenen
Datenkanal zu vergleichen und ihm zuzuweisen.
-
Das
US-Patent Nr. 5.434.976 beschreibt eine Schaltung mit einem Vierkanal-DMA-Controller und
zwei CPUs für
das Management von Kommunikationen mit verschiedener, jeder der
CPUs zugeordneter höherer und
niedrigerer Funktionalität.
Die Anordnung besitzt einen zugeordneten DMA-Controller, auf den
jede CPU gleichzeitig zugreifen kann. Allerdings leidet die durch
US 5.434.976 offenbarte
Anordnung an einigen der oben erwähnten Nachteile.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Somit
besteht ein Bedarf daran, zu identifizieren, dass ein gegebenes
Paket in einer Kommunikationsschnittstelle wie etwa der Schnittstelle
der IEEE-Norm 1394 durch einen besonderen Knoten empfangen werden
soll.
-
Es
besteht ein Bedarf an einem Verfahren und an einem System, die identifizieren,
dass ein gegebenes Paket auf programmierbare Weise durch einen besonderen
Knoten empfangen werden soll.
-
Es
besteht ein Bedarf an einem Verfahren und an einer Vorrichtung,
die bestimmte Pakete beseitigen oder ausschließen und somit eine enge Auswahl
der Datenpakete ermöglichen,
die einem gegebenen DMA-Kanal zugewiesen werden. Außerdem sollte
dieser Bedarf durch ein Verfahren und eine Vorrichtung befriedigt
werden, die programmierbar, flexibel und anpassungsfähig und
insbesondere auf die IEEE-Norm 1394 anwendbar sind.
-
Es
besteht ein Bedarf an einem Verfahren und an einer Vorrichtung zur
Behandlung von Reserveoperationscodes oder -übertragungscodes in einem Datenpaket-Anfangsblock.
-
Es
besteht ein weiterer Bedarf an einem Verfahren und an einer Vorrichtung,
die unter denjenigen Kanälen,
die mit gewünschten
Anfangsblock-Datenmustern übereinstimmen,
die Kanäle
mit der höchsten
Priorität
auswählen
können.
Es besteht ein Bedarf an einer Möglichkeit,
ein Datenmuster in einem Datenpaket mit dem Datenpaket eines besonderen
Kanals zu vergleichen und diesem Datenpaket den besonderen Kanal
zuzuweisen.
-
Es
besteht ein nochmals weiterer Bedarf an einem Verfahren und an einer
Vorrichtung zum Angeben mehrerer Mengen gewünschter Datenmuster zum Vergleichen
eines gegebenen Übereinstimmungsdatenmusters
mit einem gegebenen Datenkanal und zum Zuweisen des gegebenen Übereinstimmungsdatenmusters
zu dem gegebenen Datenkanal.
-
In Übereinstimmung
mit der vorliegenden Erfindung werden ein Verfahren und eine Vorrichtung
zum Zuweisen eines Datenpakets zu einem von mehreren DMA-Kanälen geschaffen,
die die Nachteile und Probleme im Zusammenhang mit früher entwickelten
Verfahren und Vorrichtungen zum Zuweisen von Datenpaketen zu einem
Datenkommunikations-DMA-Kanal im Wesentlichen beseitigen oder verringern.
-
Gemäß einem
Aspekt der vorliegenden Erfindung wird ein Verfahren zum Zuweisen
eines Datenpakets zu einem von mehreren DMA-Kanälen geschaffen, wobei das Verfahren
die folgenden Schritte umfasst: Empfangen wenigstens eines Abschnitts
des Datenpakets, Vergleichen des wenigstens einen Abschnitts des Datenpakets
mit einer vorgegebenen Übereinstimmungsdatenmenge,
wobei wenigstens ein Anschnitt der Übereinstimmungsdatenmenge programmierbar
variable Datenbereiche aufweist, die wenigstens einem der mehreren
DMA-Kanäle
entsprechen; und Lenken eines Kanalauswahlsignals zu wenigstens
einem der mehreren DMA-Kanäle,
falls eine vorgegebene Korrespondenz zwischen dem wenigstens einen
Abschnitt des empfangenen Datenpakets und der Übereinstimmungsdatenmenge vorhanden
ist.
-
Gemäß einem
zweiten Aspekt der Erfindung wird eine Schaltung zum Zuweisen eines
Datenpakets zu einem DMA-Kanal geschaffen, mit: einem Komparator,
der wenigstens einen Abschnitt eines Datenpakets empfängt, einer
Schaltungsanordnung, die dem Komparator zugeordnet ist, um wenigstens
den Abschnitt des Datenpakets mit einer vorgegebenen Übereinstimmungsdatenmenge
zu vergleichen, wobei wenigstens ein Abschnitt der Übereinstimmungsdatenmenge
programmierbar variable Datenbereiche aufweist, die wenigstens einem
von mehreren DMA-Kanälen
entsprechen; und einer Schaltungsanordnung zum Lenken eines Kanalauswahlsignals
zu dem wenigstens einen DMA-Kanal, falls eine vorgegebene Entsprechung
zwischen dem wenigstens einen Abschnitt und der Übereinstimmungsdatenmenge vorhanden
ist.
-
Gemäß einem
dritten Aspekt der Erfindung wird ein Personalcomputersystem geschaffen,
mit: wenigstens einem Peripheriegerät, das einen Datenpaket-Übertragungsbus
verwendet; einem Computer, der umfasst: eine Host-CPU, die einen
PCI-Bus umfasst; und eine PCI-Schnittstellenvorrichtung, die eine
Schnittstelle zwischen dem PCI-Bus und dem Peripheriegerät schafft,
wobei die PCI-Schnittstellenvorrichtung eine Schaltung zum Zuweisen
eines Datenpakets zu einem DMA-Kanal in Übereinstimmung mit dem zweiten
Aspekt umfasst.
-
Ein
technischer Vorteil der vorliegenden Erfindung ist, dass sie einen
programmierbaren, flexiblen und anpassungsfähigen Weg schafft, um zu bestimmen,
dass ein besonderes Datenpaket zu einem besonderen DMA-Kommunikationskanal
gehen sollte.
-
Ein
weiterer technischer Vorteil der vorliegenden Erfindung ist, dass
sie einen programmierbaren, flexiblen und anpassungsfähigen Weg
schafft, bestimmte Datenpakete von besonderen Datenkanälen auszuwählen und
auszuschließen.
-
Ein
nochmals weiterer technischer Vorteil der vorliegenden Erfindung
ist, dass sie einen zweckmäßigen Mechanismus
oder ein zweckmäßiges Verfahren
schafft, um einen Operationscode oder Übertragungscodes und andere
Codes in Datenpaket-Anfangsblöcken
auf flexible und programmierbare Weise zu verwenden, um die Zuweisung
und Priorität
gegebener Datenpakete zu bestimmen.
-
Ein
nochmals weiterer technischer Vorteil der vorliegenden Erfindung
ist, dass sie einen schnellen, effizienten und praktischen Weg schafft,
um zu priorisieren, welche Datenpakete zu welchem DMA-Kanal gehen.
-
Ein
weiterer technischer Vorteil der vorliegenden Erfindung ist, dass
sie einen Weg schafft, um zu bestimmen, dass Datenpakete, die mit
besonderen übereinstimmenden
Datenmengen übereinstimmen,
zu einem besonderen DMA-Kanal gehen sollten.
-
Ein
nochmals weiterer technischer Vorteil der vorliegenden Erfindung
ist, dass sie einen Weg schafft, um zu bestimmen, dass mehrere Typen
von Datenpaketen, die mehreren übereinstimmenden
Datenmengen entsprechen, zu einem einzigen DMA-Kanal gehen sollten.
-
KURZBESCHREIBUNG
DER ZEICHNUNG
-
Ein
vollständigeres
Verständnis
der vorliegenden Erfindung und ihrer Vorteile kann mit Bezug auf
die folgende Beschreibung in Verbindung mit der beigefügten Zeichnung
gewonnen werden, in der gleiche Bezugszeichen gleiche Merkmale angeben
und in der:
-
1 eine
Betriebsübersicht
der Personalcomputerumgebung veranschaulicht, die die vorliegende Erfindung
enthält;
-
2 eine
allgemeine Betriebsübersicht
der Funktionslogik der vorliegenden Erfindung gibt;
-
3 eine
konzeptionelle Ansicht der Komparatorlogik für die vorliegende Erfindung
veranschaulicht;
-
4 eine
ausführlichere
konzeptionelle Darstellung der Komparatorlogik der vorliegenden
Erfindung gibt;
-
5 die
Anfangsblock-Komparatorfunktionen für die Paketempfängerlogik
der vorliegenden Erfindung noch ausführlicher veranschaulicht;
-
6 bis 9 mögliche Datenwerte
für die
Felder angepasster Datenmengen veranschaulichen, die auf die vorliegende
Erfindung anwendbar sind;
-
10 die
eine Ausführungsform
der programmierbar wählbaren
Schreibfreigabe-Datenflipflops der vorliegenden Erfindung veranschaulicht;
-
11 ein
Beispiel eines Adressenfelds zur Implementierung des Aspekts der
programmierbaren Bitauswahl der vorliegenden Erfindung gibt;
-
12 eine
Veranschaulichung einer Direktspeicherzugriffs-Mehrkanalumgebung
gibt, die zeitmultiplexiert ist, um die DMA-Befehlsverarbeitungsoperation
der vorliegenden Erfindung zu veranschaulichen;
-
13 eine
Tabelle zur Veranschaulichung der Zuweisung der Priorität anhand
des momentan aktiven Kanals gibt;
-
14 einen
Abschnitt der auf die Autoboot-Funktion anwendbaren Schnittstellenvorrichtungsarchitektur
für die
vorliegende Erfindung zeigt;
-
15 eine
Tabelle der PCI-Master-Busbefehle gibt, die den Bits 31 und 30 des
internen PCI-Adressenbusses entsprechen, wenn der Autoboot-Anschlussstift
aus 14 aktiv gesetzt ist;
-
16 die
Lokalbusschnittstelle der vorliegenden Erfindung in Blockschaltbildform
zeigt;
-
17 graphisch
die Logik der Schnittstellenvorrichtung der vorliegenden Erfindung
beim Erfassen der Anwesenheit horizontaler und vertikaler Synch-Signale
zeigt;
-
18 einen
weiteren Aspekt der vorliegenden Erfindung veranschaulicht, der
den Betrieb des Lenkens eines einzelnen Datenpakets zu einer einzelnen
Abtastleitung enthält;
-
19 den
Betrieb der vorliegenden Ausführungsform
zum Abbilden eines einzelnen Datenpakets auf mehrere Videoabtastzeilen
zeigt;
-
20 ein
Speicherabbild der Paketsteuerlisten-Datenstrukturen und der Datenpuffer
veranschaulicht, die von dem DMA-Paketprozessor der vorliegenden
Erfindung verwendet werden;
-
21 einen Teilablaufplan der DMA-Maschine
zeigt, der den Paketprozessorbetrieb der vorliegenden Erfindung
zeigt;
-
22 einen Teilablaufplan der DMA-Maschine
gibt, der die Asynchron-Sendeoperation
der vorliegenden Erfindung zeigt;
-
23 ein
Teilablaufplan der DMA-Maschine ist, der eine Isochron-Sendeoperation
der vorliegenden Erfindung zeigt;
-
24 einen beispielhaften Hilfsfunktionsablaufplan
der vorliegenden Erfindung gibt;
-
25 einen
Teilablaufplan der DMA-Maschine zeigt, der den Lokalbus-zu/von-PCI-Bus-Betrieb
der vorliegenden Erfindung zeigt; und
-
26 konzeptionell auf einer hohen Ebene
graphisch die Funktionen darstellt, die in den FIFO-Schaltungen
der vorliegenden Erfindung auftreten.
-
AUSFÜHRLICHE
BESCHREIBUNG DER ERFINDUNG
-
In
den Figuren sind bevorzugte Ausführungsformen
der vorliegenden Erfindung veranschaulicht, wobei sich gleiche Bezugszeichen
auf gleiche und einander entsprechende Teile der verschiedenen Figuren
beziehen.
-
1 veranschaulicht
konzeptionell eine Personalcomputerumgebung 10, die einen
(durch den Strichlinienkasten angegebenen) Personalcomputer 12 und
(durch einen Strichlinienkasten angegebene) zugeordnete Peripheriegeräte 14 enthält. In dem
Personalcomputer 12 gibt es verschiedene Busse und Knoten, die
die Operationen des Personalcomputers steuern. Beispielsweise unterstützt der
Schnittstellenbus 16 die Kommunikation mit der Drei-Port-Schnittstelle 18 der
Bitübertragungsschicht
und mit der Schnittstellenvorrichtung 20 der vorliegenden
Erfindung. Der serielle EPROM 22 unterstützt den
Betrieb der PCI-Schnittstellenvorrichtung 20. Ferner enthält die PCI-Schnittstellenvorrichtung 20 Schnittstellen
mit dem PCI-Bus 24 und mit dem Hilfs-Port-Lokalbus 26.
Außerdem
kommunizieren der Lokalbus 28 und die PCI-Agenten 30 und 32 mit
dem PCI-Bus 24.
Die PCI-Host-Bridge 34 führt Host-Bridge-Funktionen
zwischen dem Lokalbus 28 und dem PCI-Bus 24 aus.
Der Hilfs-Port-Lokalbus 26 kommuniziert mit einem Flash-PROM
(oder RPL-ROM) 36, mit einem statischen Direktspeicherzugriff-Kanalsteuerungs-RAM
(DMA-Kanalsteuerungs-RAM) (SRAM) 38, mit einer anwenderdefinierten
Funktion (AUX) 40 und mit einem Zoom-Video-Port (ZV-Port) 42 zur
Videoeingabe und -ausgabe. Der Host-Lokalbus 28 kommuniziert
mit der Host-CPU 44 und mit dem Lokalspeicher 46.
-
Die
Peripheriegeräte 14,
die mit der Bitübertragungsschicht-Schnittstellenvorrichtung 18 kommunizieren
können,
können
eine CD-ROM-Vorrichtung 48, einen Laserdrucker 50,
eine Desktopkamera 52 und einen digitalen Videokassettenrecorder
(VCR) mit einer Schnittstelle mit einer videofähigen Set-Top-Box 56 umfassen.
-
Die
PCI-Schnittstellen-ASIC 20 in 1 führt eine
Hauptfunktion des Steuerns der Übertragung
von Datenpaketen zwischen den Vorrichtungen, die in einer Umgebung
arbeiten, die den PCI-Bus 24 unterstützt, und den Vorrichtungen,
die in einer Hochgeschwindigkeits-Eingabe/Ausgabe-Peripherieumgebung
wie etwa der, die die Umgebung der IEEE-Norm 1394-1995 festsetzt,
arbeiten, aus. Die PCI-Schnittstellen-ASIC 20 der vorliegenden
Ausführungsform
entspricht der IEEE-Norm 1394-1995 und der PCI-Spezifikation, Ausgabe
2.0. Außerdem
führt die
PCI-Schnittstellen-ASIC 20 insbesondere in der Umgebung
der IEEE 1394-1995 die Funktion eines Zyklus-Masters aus, wobei
sie die Fähigkeit
besitzt, verlorene Zyklusstartnachrichten zu erfassen. Die PCI-Schnittstellen-ASIC 20 besitzt
die Fähigkeit,
Signale für
eine zyklische 32-Bit-Redundanzprüfung (32-Bit-CRC) zum Senden von IEEE-Norm-1394-Paketen
zu erzeugen sowie beim Empfang der IEEE-1394-Pakete eine 32-Bit-CRC-Prüfung auszuführen. Die
PCI-Schnittstellen-ASIC 20 unterstützt eine Grenze
zwischen der PCI-Schnittstellen-ASIC 20 und
der physikalischen Schnittstellenschicht 18. Außerdem unterstützt die
PCI-Schnittstellen-ASIC 20 die IEEE-1394-Übertragungsraten
von 100, 200 und 400 MBit/s und stellt drei größenprogrammierbare FIFOs (z.
B. ASynch-Senden, Isochron-Senden und Allgemein-Empfangen) bereit.
-
Wie
unten diskutiert wird, schafft die PCI-Schnittstellen-ASIC 20 eine
programmierbare Kanaladressen-Komparatorlogik, die ankommende Datenpakete
empfängt
und einem DMA-Kanal zuweist. In wenigstens einer Ausführungsform
schafft die vorliegende Erfindung fünf Scatter/Gather-DMA-Kanäle, wobei
der Datenpaketbetrieb jedes Kanals in der Weise programmiert werden
kann, dass er: (1) asynchrone Paketsendungen, (2) isochrone Paketsendungen,
(3) asynchrone Paketempfangsfunktionen und (4) isochrone Paketempfangsfunktionen
unterstützt.
-
Außerdem schafft
die PCI-Schnittstellen-ASIC 20 PCI-Master-Busfunktionen
zur Unterstützung
von DMA-Operationen sowie PCI-Slave-Funktionen für den Lese- und Schreibzugriff
auf interne Register. Die PCI-Schnittstellen-ASIC 20, die
einen 32-Bit-PCI-Adressen-Daten-Pfad implementiert, schafft nicht
nur eine PCI-Adressen-Daten-Paritätsprüfung, sondern auch eine Software-Steuerung
für Unterbrechungsereignisse. Die
PCI-Schnittstellen-ASIC 20 schafft einen programmierbaren
externen Lokalbus zur Implementierung eines zugeordneten Pfads zur
externen Logik. Außerdem
schafft die PCI-Schnittstellen-ASIC 20 eine 8-Bit- oder 16-Bit-Schnittstelle
zu einem Zoom-Video-Port (ZV-Port), um Videodaten direkt an einen
externen Bewegtvideospeicherträger
zu übertragen.
-
2 gibt
einen Blockschaltplan 58, der die Funktionsaufteilung der
PCI-Schnittstellen-ASIC 20 der vorliegenden
Erfindung zeigt. Die Logik in der PCI-Schnittstellen-ASIC 20 enthält die PCI-Buslogik 60,
die die serielle EPROM-Schnittstelle 62 zur
Kommunikation mit dem seriellen EPROM 22 enthält. Die
PCI-Master-Logik 64 und die PCI-Slave-Logik 66 sowie
die PCI-Konfiguration und das Steuerstatusregister 68 schaffen
die erforderliche Logik für
Kommunikationen mit dem PCI-Bus 24. Die Lokalbus-Schnittstellenlogik 70 schafft
die erforderliche Steuerlogik für
die Schnittstelle zu dem Hilfs-Port-Lokalbus 26.
-
Die
DMA-Logik 72 in der PCI-Schnittstellen-ASIC 20 enthält die DMA-Maschine 74 und
das DMA-Steuer- und -Statusregister 76 zum Steuern der
Operationen und Kommunikationen mit der PCI-Buslogik 60 und
mit der FIFO-Logik 78. Die FIFO-Logik 78 enthält den Allgemein-Empfangs-FIFO 80,
den Asynchron-Sende-FIFO 82,
den Isochron-Sende-FIFO 84, die Zeigeradressen-Abbildungslogik 86 und
die FIFO-Steuerungs- und -Statusregister 88.
-
Die
Sicherungsschicht-Steuerlogik 90 enthält die Steuer- und Statusregister 92,
die den Status aller Funktionen in der Sicherungsschicht-Steuerlogik 90 steuern
und berichten. Die Paketsende-Steuerlogik 98 und die Paketempfangs-Steuerlogik 102 arbeiten
mit einer Logik und mit dem Zykluszeitgeber 94 sowie mit
der Zyklusüberwachungseinrichtung 96.
Die Schnittstellenlogik 104 der Bitübertragungsschicht enthält Parallel-Seriell-
und Seriell-Parallel-Funktionen.
-
Die
PCI-Buslogik 60 in 2 implementiert
die Logik für
die Schnittstelle der PCI-Schnittstellen-ASIC 20 zum PCI-Bus 24.
Die PCI-Slave-Logik 66 schafft für die externen PCI-Agenten
die Fähigkeit,
die Slave-Schnittstellen-Steuerlogik zu lesen und zu schreiben,
um alle Steuerungs- und Statusregister 68, 76, 88 und 92 der
PCI-Schnittstelle 20, die die Anwendungssoftware zum Steuern
des Betriebs der PCI-Schnittstellen-ASIC 20 und zum Überwachen
ihres Betriebsstatus benötigt,
zu beurteilen. Die PCI-Master-Logik 64 schafft für die DMA-Logik 72 die
Fähigkeit,
als eine Master-Vorrichtung Datenübertragungen über den
PCI-Bus 24 zu beginnen. Die PCI-Konfigurations-Steuerungs-
und -Statusregister 68 können von der Anwendungssoftware
des Personalcomputersystems 12 genutzt werden, um die PCI-Schnittstellen-ASIC 20 zu
konfigurieren und zu programmieren. Dies umfasst die von der PCI
geforderten Steuer- und Basisregister sowie ein Unterbrechungssteuerungs-
und Statussignal für
die PCI-Schnittstellen-ASIC 20 sowie verschiedene Steuerungs- und
Statusregister. Die Lokalbus-Schnittstellenlogik 70 enthält einen
Hilfs-Port als Schnittstelle und Steuerung zum RAM, zum ROM, zu
Hilfsfunktionen, zum Zoom-Video-Port und zu vier GPIO-Schnittstellen.
Außerdem stellt
die serielle EEPROM-Schnittstelle 62 nach dem Hochfahren
bestimmte geforderte PCI-Konfigurationsdaten und konstante Systemsteuerregisterinformationen
bereit.
-
Die
serielle EEPROM-Schnittstelle 62 schafft eine Kommunikation
zwischen der PCI-Schnittstellen-ASIC 20 und dem seriellen
EEPROM 22 (1). Beim Hochfahren initialisiert
die serielle EEPROM-Schnittstelle 62 eine kleine Anzahl
von Stellen in den PCI-Konfigurationsregistern 68 vom seriellen
EEPROM 22. Während
die serielle EEPROM-Zustandsmaschine auf den seriellen EEPROM 22 zugreift,
wird irgendein ankommender PCI-Slave-Zugriff mit Wiederholungsversuchsstatus
abgeschlossen.
-
Außerdem enthält der serielle
EEPROM 22 Konfigurationsdaten für das PCI-Konfigurations-Steuerungs- und -Statusregister 68.
Diese Informationen werden von der Host-CPU 44 gelesen
und geschrieben, die über
das Steuerregister ein serielles Zweidraht-Busprotokoll für den seriellen
EEPROM 22 emuliert. Der serielle Zweidrahtbus wird vom
Host-Prozessor 44 manipuliert, indem er das Ausgabefreigabebit
des seriellen EEPROM 22 auf einen Wert "1" setzt
und daraufhin auf die Daten- und Taktbits zugreift, um das serielle
Zweidraht-Busproto koll zu emulieren. Das PCI-Konfigurations-Steuerungs-
und -Statusregister 68 enthält ein Zeitgeberbit, das eine
Zeitreferenz für
die Zeitgebung der Ereignisse des seriellen Zweidraht-Busprotokolls
bereitstellt.
-
Die
PCI-Master-Logik 64 implementiert die Steuerung, die für die PCI-Schnittstellen-ASIC 20 erforderlich
ist, um am PCI-Bus 24 als eine Master-Vorrichtung zu arbeiten.
Diese Logik ermöglicht
den Betrieb von Speicherlesevorgängen,
Speicherschreibvorgängen,
Speicherzeilenleseanweisungen und Speicherzeilenschreibanweisungen
sowie Schreibannullierungsanweisungen. Für die Speicherlesefunktion
führt die DMA-Leseoperation
der PCI-Schnittstellen-ASIC 20 zu einem Speicherlesen des
Speicherzeilenlesebefehls auf dem PCI-Bus. Für die Speicherschreiboperation
führt die
DMA-Schreiboperation der PCI-Schnittstellen-ASIC 20 zu
einem PCI-Speicherschreibbefehl, zu einem PCI-Speicherzeilenschreibbefehl
oder zu einem PCI-Speicherschreibannulierungsbefehl auf dem PCI-Bus.
-
Die
PCI-Slave-Logik 66 führt
die Steuerlogik aus, die für
die PCI-Schnittstellen-ASIC 20 erforderlich ist, um auf
dem PCI-Bus als eine Slave-Vorrichtung zu arbeiten. Wenn die PCI-Slave-Funktion 66 freigegeben ist,
reagiert sie auf Speicherlese- oder -schreibbefehle an den PCI-Speicheradressenbereichen,
die durch die in 68 enthaltenen Basisadressenregistern
angegeben werden. Wenn dies durch das Slave-Burst-Bit in dem Verschiedenes-Steuerregister
freigegeben ist, führt
die PCI-Slave-Logik 66 Slave-Burst-Übertragungen aus. Wenn dies
durch ein Steuerbit in dem Verschiedenes-Steuerregister freigegeben
ist, führt
die PCI-Slave-Logik 66 aufgegebene Schreiboperationen aus.
-
Die
PCI-Konfigurations-Steuerungs- und -Statusregister 68 stellen
für die
System- und Anwendungssoftware die Fähigkeit bereit, die PCI-Operationskonfiguration
der PCI-Schnittstellen-ASIC 20 auszuführen.
-
Die
Lokalbus-Schnittstellenlogik 70 stellt eine Gruppe von
Spezial-Eingangs/Ausgangs-Ports bereit, die eine übliche Logik
gemeinsam nutzen. Auf diese Ports kann entweder vom PCI-Bus 24 oder
von der DMA-Maschine 74 zugegrif fen werden. Externe Vorrichtungen
an diesen Ports können
nicht als Master-Vorrichtungen
arbeiten. Diese Ports ermöglichen,
dass die PCI-Schnittstellen-ASIC 20 die
externen Vorrichtungen oder Schnittstellen verbindet, um autonome
Datenübertragungen
zwischen diesen Vorrichtungen zu schaffen. Alle Lokalbusschnittstellen
mit Ausnahme der Zoom-Video-Busschnittstelle sind synchron zu einem
Lokaltakt, der eine angebotene Version des PCI-Takts ist. Der ZV-Port-Takt wird anhand
von Versionen des PCI-Takts, des IEEE-1394-Takts oder eines externen
Takts programmiert.
-
Die
Lokalbus-Schnittstellenlogik 70 stellt einen gemeinsam
genutzten Lokaladressenbus, der in der vorliegenden Ausführungsform
ein 16-Bit-Adressenbus ist, und einen gemeinsam genutzten 8-Bit-
oder 16-Bit-Lese- oder -Schreibdatenbus mit programmierbaren Wartezuständen und
Bereit-Bedingungen bereit. Die Lokalbusadressen und die Datenbusse
werden unter den ROM-, RAM-, AUX- und ZOOM-Port-Funktionen gemeinsam
genutzt. Außerdem
stellt der ZV-Ausgangs-Port
das Horizontale-Synch-Daten-Gültig,
das Vertikale-Synch-Daten-Gültig und
den ZV-PIXEL.CLK bereit. Weitere Ein- und Ausgangssignale für die Lokalbus-Schnittstellenlogik 70 umfassen
vier Universal-E/A-Anschlussstifte (GPIO-Anschlussstifte), die programmierbare
Richtungs- und Polaritätsfunktionen
aufweisen. In der vorliegenden Ausführungsform der Lokalbusschnittstellenschaltung 70 umfassen
die verschiedenen Signale das Lokalbus-Taktausgangssignal, das Rücksetzausgangssignal,
das Unterbrechungseingangssignal und das externe Bereit-Eingangssignal.
Die PCI-Konfigurations-Steuerungs- und -Statusregister 68 stellen
die notwendigen Steueranweisungen und Informationen für die Operationskonfiguration
der Lokalbus-Schnittstellenlogik 70 bereit.
-
Die
PCI-Schnittstellen-ASIC 20 enthält einen Fernstartprogramm-Nur-Lese-Speicher (RPL-ROM),
der für
den Personalcomputer 12 die Fähigkeit bereitstellt, Boot-Code
von einem angebrachten RPL-ROM zu lesen. Dies ermöglicht,
dass das System von einer IEEE-1394-Vorrichtung bootet, selbst wenn
das System beim Einschaltrücksetzen
keinen spezifischen IEEE-1394-Boot-Code besitzt. Außerdem kann
die ROM-Schnittstelle verallgemeinert werden, um eine Funktiona lität über das
Zugreifen auf den RPL-ROM allein bereitzustellen. Die Lokalbus-Schnittstellenlogik 70 unterstützt den
Lese/Schreib-Zugriff des PCI-Slave und des internen DMA auf Vorrichtungen
wie etwa auf den Flash-PROM 36, auf den SRAM 38 und
auf andere RAM-artige Vorrichtungen, die in 1 erscheinen.
Der ROM-Zugriff wird durch die PCI-Konfigurations-Steuerungs- und
-Statusregister 68 gesteuert und dadurch freigegeben, dass
in das niedrigstwertige Bit des ROM-Basisadressenregisters eine
1 geschrieben wird. Eine ROM-Schnittstelle kann entweder als 8 Bits
oder 16 Bits breite Daten, als eine angegebene Anzahl von Wartezuständen oder
als ähnliche
Funktionen konfiguriert werden. Die ROM-Optionen werden beim Einschaltrücksetzen über den
seriellen PROM 22 konfiguriert und treten über PCI-Slave-Zugriffe
ein.
-
Auf
die RAM-Schnittstelle wird durch ein zweites Speicher-basiertes
PCI-Register in dem PCI-Konfigurations-Steuerungs- und -Statusregister 68 zugegriffen.
Dieser Speicher kann für
DMA-Steuerstrukturen oder -Datenpuffer oder als gemeinsam genutzte
Speicherschnittstelle für
andere Funktionen wie etwa für
einen digitalen Signalprozessor verwendet werden. Die RAM-Schnittstelle
kann entweder als 16 Bits oder 8 Bits breite Daten, als eine angegebene
Anzahl von Wartezuständen
oder als ein externes Bereit/Im-Takt-Gehalten konfiguriert werden.
-
Die
Hilfsschnittstelle ist ein allgemeiner Eingabe/Ausgabe-Port, auf
den über
ein drittes Speicher-basiertes PCI-Adressenregister in dem PCI-Konfigurations-Steuerungs- und -Statusregister 68 zugegriffen
werden kann. Dieser Port kann dazu verwendet werden, einen Hochgeschwindigkeitsdatenpfad
zu externen zugeordneten Betriebsmitteln wie etwa zu einer Kompressions/Dekompressions-Logik
oder zu einem Videoprozessor/Bildwiederholspeicher zu implementieren.
Falls der ZV-Port freigegeben ist, wird ein Abschnitt des AUX-Adressenraums
auf den ZV-Port abgebildet. Andernfalls ist dieser Raum in der bevorzugten
Ausführungsform
als Teil der Hilfsadressenbasis verfügbar. In der vorliegenden Ausführungsform
kann die Hilfsschnittstelle entweder als 8 Bits oder als 16 Bits
breite Daten, als eine angegebene Anzahl von Wartezuständen oder
als ein externes Bereit/Im-Takt-Gehalten
konfiguriert werden.
-
In
der bevorzugten Ausführungsform
ist die FIFO-Logik um einen einzelnen getakteten 256 × 33-Dualport-RAM
konstruiert, der in drei logische FIFOs aufgeteilt ist. Die Größe jedes
FIFO ist von 0 bis 256 Wörtern programmierbar.
Für eine
gegebene Kombination von FIFO-Größen muss
die Gesamtsumme der drei FIFO-Größen kleiner
oder gleich 256 Wörtern
sein.
-
Der
Allgemein-Empfangs-FIFO (GRF) 80 enthält ein Lese- und Schreibzeigerpaar
zur Verwendung beim Zugreifen auf den FIFO-Dualport-RAM. Jeder Zeiger
zählt in
dem Bereich von 0 bis zu seinem fifo_size_value minus 1. Der FIFO-RAM-Adressierungsbereich
für jeden
Zeiger wird durch eine Logik eingestellt, die einen Versatzwert
erzeugt. Der Versatz ist zu dem Wert des Zeigers zu addieren, um
ihn auf einen eindeutigen Bereich von RAM-Adressen abzubilden. Der
Lesezeiger ist von dem aktiven DMA-Kanal dazu zu verwenden, asynchrone
oder isochrone Pakete von der PCI-Seite des RAM zu lesen und in
den Host-Speicher zu schreiben. Der IEEE-1394-Empfänger verwendet
den Schreibzeiger, um asynchrone oder isochrone Pakete – die über den
IEEE-1394-Bus empfangen wurden – auf
die Verbindungsseite des FIFO-RAM zu schreiben. Da beide Seiten
des FIFO-Dualport-RAM in verschiedenen Taktdomänen liegen, werden die zwei
Zeiger über eine
Synchronisierlogik an beide Seiten des FIFO-RAM übermittelt.
-
Der
Asynchron-Sende-FIFO 82 enthält ein Lese- und Schreibzeigerpaar
zum Zugreifen auf den FIFO-Dualport-RAM. Jeder Zeiger zählt in dem
Bereich von 0 bis zu seinem fifo_size_value minus 1. Der Adressierungsbereich
des FIFO-RAM wird für
jeden Zeiger durch Logik eingestellt, die einen Versatzwert erzeugt.
Der Versatz wird zu dem Wert des Zeigers addiert, um ihn auf einen
eindeutigen Adressenbereich abzubilden. Der aktive DMA-Kanal verwendet
den Schreibzeiger, um asynchrone Pakete – die er aus dem Host-Speicher
liest – auf
die PCI-Seite des RAM zu schreiben. Der Lesezeiger ist von dem IEEE-1394-Sender zu
verwenden, der den Lesezeiger dazu verwendet, asynchrone Pakete
von der Verbindungsseite des FIFO-RAM zu lesen und über den
IEEE-1394-Bus zu senden. Da beide Seiten des FIFO-Dualport-RAM in
verschiedenen Taktdomänen
liegen, werden die zwei Zeiger über
eine Synchronisierlogik an beide Seiten des FIFO-RAM übermittelt.
-
Der
Isochron-Sende-FIFO 84 enthält ein Lese- und Schreibzeigerpaar
zum Zugreifen auf den FIFO-Dualport-RAM. Jeder Zeiger zählt in dem
Bereich von 0 bis zu seinem fifo_size_value minus 1. Der Adressierungsbereich
des FIFO-RAM wird für
jeden Zeiger durch Logik eingestellt, die einen Versatzwert erzeugt.
Der Versatz wird zu dem Wert des Zeigers addiert, um ihn auf einen
eindeutigen Adressenbereich abzubilden. Der aktive DMA-Kanal verwendet
den Schreibzeiger, um isochrone Pakete – die er aus dem Host-Speicher
liest – auf
die PCI-Seite des RAM zu schreiben. Der IEEE-1394-Sender verwendet
den Lesezeiger dazu, isochrone Pakete von der Verbindungsseite des
FIFO-RAM zu lesen und über
den IEEE-1394-Bus zu senden. Da beide Seiten des FIFO-Dualport-RAM
in verschiedenen Taktdomänen
liegen, werden der Lese- und der Schreibzeiger über eine Synchronisierlogik
an beide Seiten des FIFO-RAM übermittelt.
-
Die
Zeiger-Dualport-Adressenabbildungslogik 86 verwendet die
drei Größenwerte
von dem FIFO-Größenregister,
um jedes der FIFO-Lese-Schreibzeigerpaare auf einen eindeutigen
Adressenbereich in dem FIFO-Dualport-RAM abzubilden. Die Zeigeradressen-Abbildungsfunktion
ist in Übereinstimmung
mit den wie in der unten stehenden Tabelle gezeigten Gleichungen
zu erzeugen:
-
-
Die
FIFO-Steuerungs- und -Statusregister 88 implementieren
den Steuerungs- und
Statusregistersatz der FIFO-Logik 78. Die FIFO-Steuerungs-
und -Statusregister 88 umfassen ein FIFO-Größenregister
zum Einstellen der Größe jedes logischen
FIFO. Dieses Register stellt drei Größenparameter zur Programmierung
der Größe des Isochron-Sende-FIFO 84,
des Asynchron-Sende-FIFO 82 und des Allgemein-Empfangs-FIFO 80 bereit.
Auf diese Register wird über
eine Lese- oder
Schreiboperation des PCI-Slave 66 zugegriffen. Ein Schreib/Lese-Port
des FIFO-Zeigers der PCI-Seite stellt für Software einen Schreib/Lese-Port
des PCI-Slave 66 zum
Holen des momentanen Werts der Zeiger der PCI-Seite oder zum Schreiben
eines Werts in sie bereit. Ein Schreib/Lese-Port des FIFO-Zeigers
der Verbindungsseite stellt für
Software einen Lese-Port des PCI-Slave zum Holen des momentanen
Werts der Zeiger der Verbindungsseite oder zum Schreiben eines Werts
in sie bereit. Ein POP-PUSH-Port des Allgemein-Empfangs-FIFO kann
ein 32-Bit-Slave-Schreiben empfangen, das veranlasst, dass das Daten-Quadlet oben auf
den GRF 80 geschoben wird. Ein 32-Bit-Slave-Lesen von diesem
Port veranlasst, dass ein Daten-Quadlet von oben von dem GRF 80 abgehoben
wird. Ein POP-PUSH-Port des Asynchron-Sende-FIFO kann ein 32-Bit-Slave-Schreiben für diesen
Port empfangen, das veranlasst, dass das Daten-Quadlet oben auf den Asynchron-Sende-FIFO
geschoben wird. Ein 32-Bit-Slave-Lesen
von diesem Port veranlasst, dass ein Daten-Quadlet von oben von
dem Asynchron-Sende-FIFO 82 abgehoben wird. Ein POP-PUSH-Port
des Isochron-Sende-FIFO
kann ein 32-Bit-Slave-Schreiben für diesen Port empfangen, das veranlasst,
dass das Daten-Quadlet oben auf den Isochron-Sende-FIFO 84 geschoben
wird. Ein 32-Bit-Slave-Lesen von diesem Port veranlasst, dass ein
Daten-Quadlet oben von dem Isochron-Sende-FIFO 84 abgehoben
wird. Ein FIFO-Steuer-Token-Status-Lese-Port
liefert ein Slave-Lesen, das den Wert des Bits 33 des letzten
Daten-Quadlets zurückgibt,
das von einem der drei FIFOs, auf die zuvor zugegriffen worden ist,
abgehoben wurde. Das FIFO-Diagnose-Test- und -Steuerregister stellt
für Software
einen Lese/Schreib-Port des PCI-Slave bereit, um die FIFO-Logik für Diagnose-Tests
zu konfigurieren und ihren Betrieb zu steuern. Außerdem stellt
ein Sende-FIFO-Schwellenwertregister für Software einen Lese/Schreib-Port
des PCI-Slave bereit, um den Sendeschwellenwert für den ASynch-
und für
den Isochron-Sende-FIFO einzustellen.
-
Die
CRC-Logik 100 implementiert die Logik zum Ausführen der
Funktionen, die das Erzeugen eines 32-Bit-Auto-DIN-CRC-Fehlercodes
an dem Anfangsblockteil des durch die Senderlogik erzeugten Paketdatenstroms
umfassen. Der Sender fügt
diesen Code nach dem Anfangsblock in den Datenstrom ein. Für Pakete, die
Datennutzinformationen besitzen, erzeugt die CRC-Logik 100 an
dem Datennutzinformationsabschnitt des durch die Senderlogik erzeugten
Paketstroms einen 32-Bit-Auto-DIN-CRC-Fehlercode. Der Sender fügt diesen
Code am Ende des Paketstroms ein. Die CRC-Logik 100 erzeugt
an dem Anfangsblockteil eines ankommenden Paketdatenstroms einen
32-Bit-Auto-DIN-CRC-Fehlercode. Falls der berechnete Code gleich
dem mit dem Paket gesendeten Anfangsblock-CRC-Code ist, betrachtet der Empfänger den
Anfangsblock als richtig. Außerdem
erzeugt die CRC-Logik 100 an dem Nutzinformationsabschnitt
eines ankommenden Paketdatenstroms einen 32-Bit-Auto-DIN-CRC-Fehlercode.
Falls der berechnete Code gleich dem mit dem Paket gesendeten Daten-CRC-Code
ist, betrachtet der Empfänger
die Datennutzinformationen als richtig.
-
Die
1394-Sicherungsschichtlogik 90 implementiert die IEEE-1394-Sicherungsschicht-Steuerlogik (LLC),
wie sie in der IEEE-Norm 1394-1995 spezifiziert ist. Diese Funktion
steuert die Sendung und den Empfang der IEEE-1394-Paketdaten zwischen
der FIFO-Logik 78 und anderen Vorrichtungen an dem IEEE-1394-Bus.
-
Das
1394-Sicherungsschicht-Steuerungs- und -Statusregister 92 implementiert
die Steuerungs- und Statusregister-Logik, die für Anwendungssoftware erforderlich
ist, um den Betrieb der LLC zu steuern und ihren Betrieb zu überwachen.
Ein 1394-Busnummer-Knotennummer-Register stellt für die Anwendungssoftware
die Schnittstelle zum Programmieren der Bus- und Knotennummern bereit.
Ein 1394-Sicherungsschicht-Steuerregister
stellt für
Anwendungssoftware die Schnittstelle zum Steuern der Betriebsart
der LLC bereit. Ein 1394-Sicherungsschicht-Unterbrechungsstatusregister
stellt für
Anwendungssoftware die Schnittstelle zum Decodieren der Ursache
von durch die LLC erzeugten Unterbrechungen bereit und einen Mechanismus
zum Löschen des
Unterbrechungsstatus bereit. Ein 1394-Si cherungsschicht-Unterbrechungsfreigaberegister
stellt für
Anwendungssoftware die Schnittstelle zum wahlweisen Freigeben der
Statusbits in dem Unterbrechungsstatus-Register zum Erzeugen einer
LLC-Unterbrechung oder zu deren Sperren des Erzeugens einer LLC-Unterbrechung
bereit. Ein 1394-Zykluszeitgeber-Register stellt für Anwendungssoftware
die Schnittstelle zum Programmieren des Zykluszeitgebers mit einem
Anfangswert oder zum Lesen seines momentanen Werts bereit. Wenn
diese LLC als ein Zyklus-Master arbeitet, ist dieser Zeitgeber zu
verwenden, um alle 125 Mikrosekunden die Übertragung der Zyklusstartpakete
zu takten. Ein 1394-Bitübertragungsschicht-Zugriffsregister
stellt für Anwendungssoftware
die Schnittstelle zum Schreiben von Daten in die Steuer- und Statusregister
der Bitübertragungsschicht-I/F 18 oder
zum Lesen von Daten aus ihnen bereit.
-
Ein
1394-Diagnose-Teststeuerregister stellt für Anwendungssoftware die Schnittstelle
zum Ausführen von
Diagnose-Tests der 1394-LLC-Logik bereit. Außerdem enthalten die 1394-Sicherungsschicht-Steuerungs- und
-Statusregister 92 DMA-Kanal-4-0-Wort-0-Empfangspaket-Übereinstimmungswertregister.
Jedem Register ist eine DMA-Kanal-Komparatorlogikfunktion zugewiesen.
Der DMA-Kanal-Komparator vergleicht eine ausgewählte Menge von Bitstellen in
dem Übereinstimmungswertregister
mit entsprechenden Bitstellen des ersten Quadlets (Wort 0) des ankommenden
Pakets. Die zu vergleichenden Bitstellen werden durch den Maskenwert
angegeben, der in dem Wort-0-Empfangspaket-Vergleichsmaskenregister enthalten ist.
Ein DMA-Kanal-4-0-Wort-0-Empfangspaket-Vergleichsmaskenregister
ist einem entsprechenden DMA-Kanal-Komparator zugewiesen. Die DMA-Kanal-Vergleichslogik
verwendet den Maskenwert in diesem Register, um diejenigen Bitstellen
im Wort 0 auszuwählen,
die mit den entsprechenden Bitstellen in dem Wort-0-Empfangsübereinstimmungswertregister übereinstimmen.
Den DMA-Kanal-4-0-Wort-1-Empfangspaket-Übereinstimmungswertregistern
ist eine DMA-Kanal-Komparatorlogikfunktion zugewiesen. Der DMA-Kanal-Komparator
vergleicht eine ausgewählte
Menge von Bitstellen in dem Übereinstimmungswertregister
mit entsprechenden Bitstellen des zweiten Quadlets (Wort 1) des
ankommenden Pakets. Die zu vergleichenden Bitstellen werden durch
den Maskenwert angegeben, der in dem Wort-1-Empfangspaket-Vergleichsmaskenregister
enthalten ist. Ein DMA-Kanal-4-0-Wort-1-Empfangspaket-Vergleichsmaskenregister
ist ebenfalls dem entsprechenden DMA-Kanal-Komparator zugewiesen. Die DMA-Kanal-Vergleichslogik
verwendet den Maskenwert in dem Register, um diejenigen Bitstellen
in dem Wort 1 auszuwählen,
die mit den entsprechenden Bitstellen in dem Wort-1-Übereinstimmungswertregister übereinstimmen.
-
Außerdem enthalten
die 1394-Sicherungsschicht-Steuerungs- und -Statusregister 92 ein
Belegt/Wiederholungsversuch-Zählregister,
dessen Inhalt die Anzahl angibt, in der der 1394-Sender die Sendung
eines ASynch-Pakets erneut versuchen sollte, wenn von dem Zielknoten
eine Belegt-Quittierung empfangen wird. Dieses Register ist durch
Anwendungssoftware über
einen PCI-Slave-Zugriff
zu lesen/zu schreiben. Ein Belegt/Wiederholungsversuch-Sendezeit-Intervallregister
enthält
das Zeitintervall, das der Sender für jeden Versuch zwischen aufeinander
folgenden Wiederholungsversuchen verzögern muss, wenn ein Belegt-Quittierungssignal
empfangen wird. Dieses Register wird durch Anwendungssoftware über einen
PCI-Slave-Zugriff gelesen geschrieben. Außerdem gibt es ein Zustandsmaschinenvektorregister,
das für
Software die Fähigkeit zur Überwachung
des Zustandsvektors jeder in der LLC implementierten Zustandsmaschine
bereitstellt. Außerdem
zählen
FIFO-Fehlerzähler
die Unterläufe,
die in den ASynch- und Isochron-Sende-FIFOs 82 und 84 während Paketsendungen
auftreten, und die Überläufe, die
im GRF 80 während
des Paketempfangs auftreten.
-
Die
Paketempfänger-Steuerlogik 102 implementiert
die zum Empfangen ankommender IEEE-1394-Pakete erforderliche Logik.
Die Empfängersteuerlogik
entspricht ausführlich
den genauen wie in IEEE 1394-1995 spezifizierten Funktionsanforderungen.
Diese umfassen die folgenden Funktionen der Verwendung der Bus-
und Knoten-ID-Register und/oder der DMA-Kanal-Empfangspaketkomparatoren
zur Bestimmung, ob ein ankommendes asynchrones oder isochrones Paket
anzunehmen ist. Die CRC-Logikfunktion überprüft durch Prüfung der Anfangs block-CRC den
richtigen Empfang eines ankommenden Pakets. Falls das Paket Nutzinformationen
besitzt, ist die Daten-CRC zu prüfen,
wobei die empfangenen Pakete in den GRF 80 zu laden sind,
falls das Paket die Adressierungs- und CRC-Prüfungen
besteht. Die Paketempfänger-Steuerlogik 102 erzeugt
eine Quittierung über
asynchrone Empfangspakete.
-
Die
Zykluszeitgeberlogik 94 impliziert die Logik zur Ausführung der
Zykluszeitgeberfunktion. Die Zykluszeitgeberlogik 94 entspricht
den Anforderungen einer Zykluszeitfunktion, wie sie in der IEEE-Norm 1394-1995
spezifiziert ist. Der Zykluszeitgeber enthält den Zykluszähler und
den Zyklusversatzzähler.
Der Versatzzähler
ist frei laufend oder wird bei einem Tief/Hoch-Übergang an einem ausgewählten Signalanschlussstift
neu gestartet oder nimmt auf der Grundlage des Zustands des Zyklus-Master-
und des Zyklus-Quellen-Bits in den 1394-LLC-Steuerungs- und -Statusregistern 92 einen
Neustartwert von dem Empfänger.
Der Zykluszeitgeber ist zur Unterstützung isochroner Datenübertragungen
zu verwenden. Die Zykluszeit soll 32 Bits breit sein. In der vorliegenden
Ausführungsform
zählen
die niederwertigen 12 Bits als ein Modulo-3072-Zähler, der jede 24,576-MHz-Taktperiode oder
(40,69 ns) einmal inkrementiert wird. Die nächsten 13 höherwertigen Bits sollen eine
Zählung
von 8 kHz (oder 125 μs)
sein und die höchsten
7 Bits zählen
in Sekunden.
-
Die
Zyklusüberwachungslogik 96 implementiert
die Logik zum Ausführen
der Zyklusüberwachungsfunktion.
Die Zyklusüberwachungslogik 96 unterstützt isochrone
Datenübertragungen
zum Überwachen
der LLC-Aktivität
und zum Behandeln der Planung der isochronen Aktivität. Wenn
die Zyklusüberwachungslogik 96 ein
Zyklusstartpaket empfängt
oder sendet, gibt sie das Auftreten dieser Ereignisse dadurch an,
dass sie eine Zyklus-Gestartet-Unterbrechung oder eine Zyklus-Empfangen-Unterbrechung
erzeugt. Außerdem
erfasst die Zyklusüberwachungslogik 96 fehlende
Zyklusstartpakete und erzeugt sie eine Zyklus-Verloren-Unterbrechung.
Wenn ein isochroner Zyklus abgeschlossen ist, aktiviert die Zyklusüberwachungslogik 96 eine
Zyklus-Fertig-Unterbrechung. Wenn das Zyklus-Master-Freigabebit in dem 1394-LLC-Steuerungs-
und -Statusregister 92 aktiviert ist, signalisiert die
Zyklus-Überwachungslogik 96 dem
Gesendeten, ein Zyklusstartpaket zu senden.
-
Die
Paketsende-Steuerlogik implementiert die Logik zur Steuerung der
Bewegung der IEEE-1394-Pakete entweder von dem Isochron-Sende-FIFO 82 oder
von dem Asynchron-Sende-FIFO 84 zur PHY-LINK-Schnittstellenlogik 104,
um sie über
den IEEE-1394-Bus zu senden. Die Sendesteuerlogik 98 entspricht
den in der IEEE-Norm 1394-1995 spezifizierten Funktionsanforderungen.
Die Sendesteuerlogik 98 formatiert die Sendepaketformate.
-
Die
1394-Paketsende-Steuerlogik 98 entlädt die Quadlets aus dem Asynchron-Sende-FIFO 84 und formatiert
sie richtig zu einem parallelen asynchronen 1394-32-Bit-Paketstrom.
Die Steuerlogik 98 entlädt
die Quadlets von dem Isochron-Sende-FIFO 82 und formatiert
sie richtig zu einem parallelen isochronen 1394-32-Bit-Paketstrom.
Die Steuerlogik 98 fügt
unter Verwendung der CRC-Logik
zum Berechnen eines CRC-Codes für
den Anfangsblock- und für
den Nutzinformationsabschnitt eines Pakets die CRC-Codes so, wie
es von dem Format des Pakets, das gesendet wird, gefordert wird
in den Paketstrom in dem Zeitschlitz ein. Die 1394-Paketsende-Steuerlogik 98 gibt
die parallelen Paketströme
zur Umsetzung von einem parallelen in ein serielles Datenstromformat
in die PHY-LINK-Schnittstellenlogik ein, um sie an die PHY zu senden.
-
Wenn
die LLC so programmiert ist, dass sie als der Zyklus-Master arbeitet,
sendet die 1394-Paketsende-Steuerlogik-98 das Zyklusstartpaket.
Die 1394-Paketsende-Steuerlogik 98 sendet die 1394-Sendebusanforderungen
an die PHY. Die PHY-Schicht entscheidet für den Bus und sendet die Angabe
an den Sender, um die Sendung zu starten, wenn die BUS-Freigabe
empfangen wird. Wenn in Reaktion auf ein gesendetes ASynch-Paket
eine Belegt-Quittierung zurückgegeben
wird, führt
die ausgeführte
1394-Paketsende-Steuerlogik 98 unter Verwendung des Einphasen-Wiederholungs-X-Protokolls,
wie es in der IEEE-Norm 1394-1995 spezifiziert ist, Wiederholungssendungen
aus. Außerdem
stellt die 1394-Paketsende-Steuerlogik-98 die Geschwindigkeit
der Paketsendung ein.
-
Die
PHY-LINK-Schnittstellenlogik 104 implementiert die Logik
der Schnittstelle der PCI-Schnittstellen-ASIC 20 zu dem
Bitübertragungsschicht-Chip.
Die PHY-LINK-Schnittstellenlogik 104 entspricht den Anforderungen
der Verbindungs-PHY-Schnittstellenspezifikation in der IEEE-Norm
1394-1995. Diese Funktion schafft für die PCI-Schnittstellen-ASIC 20 einen
Zugriff auf die Dienste der Bitübertragungsschicht.
Die PHY-LINK-Schnittstellenlogik 104 verwendet den Paketgeschwindigkeitscode
von dem Sender, um die Anzahl der zu erzeugenden seriellen Datenströme auszuwählen. Falls
der Geschwindigkeitscode für
100 MBit/s eingestellt ist, wird der parallele Datenstrom in zwei
serielle Datenströme
umgesetzt, die jeweils mit 50 MBit/s fließen. Falls der Geschwindigkeitscode
für 200
MBit/s eingestellt ist, wird der parallele Datenstrom in vier serielle Datenströme umgesetzt,
die jeweils mit 50 MBit/s fließen.
Die PHY-LINK-Schnittstellenlogik 104 verwendet eine
PHY-Empfangsgeschwindigkeitsangabe, um die ankommenden seriellen
Datenströme
von der PHY zur Eingabe in die Empfangssteuerlogik in einen parallelen
Datenstrom umzusetzen. Die PHY erzeugt für irgendein ankommendes Paket
zwei serielle Datenströme
zur PCI-Schnittstellen-ASIC 20,
wenn sie das Paket mit 100 MBit/s erzeugt, oder vier serielle Datenströme, wenn
sie das Paket mit 200 MBit/s erzeugt. Die seriellen Datenströme werden
jeweils mit 50 MHz getaktet. Die PHY-LINK-Schnittstellenlogik 104 erfasst
und empfängt serielle
Statusantworten von der PHY und setzt sie in ein paralleles Format
um. Die Statusantworten befördern die
PHY-Unterbrechungsangaben und/oder Rückdaten in Reaktion auf eine
Lesezugriffsanforderung des PHY-Registers. Die PHY-LINK-Schnittstellenlogik 104 erfasst
und empfängt
serielle Quittierungspakete und setzt sie in ein paralleles Format
um. Außerdem
nimmt die PHY-LINK-Schnittstellenlogik 104 Sendepaket-Sendeanforderungen
oder PHY-Register-Lese/Schreib-Zugriffsanforderungen an und formatiert
sie zur Sendung an die PHY zu einem seriellen Anforderungsstrom.
Außerdem
kann die PHY-LINK Schnittstellenlogik 104 optional mit
einer elektrischen Grenze zwischen den PHY- und den PCI-LYNX-Vorrichtungen
arbeiten.
-
Die
DMA-Logik 74 verwendet die PCI-Master-Logik 64,
um den PCI-Bus 24 zu erlangen und als eine Master-Vorrichtung
zu wirken. Die DMA-Logik 72 ent hält eine DMA-Maschine 74,
die eine übliche
Zustandsmaschine enthält,
die Prioritäts-Zeit-multiplexiert
ist. Außerdem
enthält
die DMA-Maschine eine Entscheidungslogik, um anhand eines zugewiesenen
Prioritätsniveaus
den Kanal zu aktivieren. Außerdem
stellen die DMA-Steuerungs- und -Statusregister 76 für jeden
DMA-Kanal zusammen mit dem PCI-Slave 66 eine Datenpfadsteuerung
bereit, um auf diese Register von der PCI-Schnittstellen-ASIC 20 zuzugreifen.
-
Die
DMA-Maschine 74 implementiert die Zustandsmaschinenlogik
zum Holen der Steuerparameter und Datenpufferzeiger von der PCL.
Die Zustandsmaschinenlogik oder der Paketprozessor verwendet diese Parameter
zum Steuern der Datenübertragung
zu und von den Datenpuffern.
-
3 veranschaulicht
die in der 1394-Paketempfangslogik 102 enthaltene Anfangsblock-Vergleichslogik,
die den 32-Bit-Paketdatenstrom 106 von der PHY-LINK-Schnittstellenlogik 104 empfängt. Der
32-Bit-Paketdatenstrom 106 geht zu der IEEE-1394-Empfängerlogik 102 und
zu der mit dem Bezugszeichen 110 bezeichneten Anfangsblock-Vergleichslogik.
Außerdem
stellt der PCI-Slave 66 einen 32-Bit-Lese/Schreib-Zugriff für die bei
Bezugszeichen 110 enthaltenen Komparatorsteuerregister
bereit. Die Linie 117 gibt die Anfangsblockvergleichsübereinstimmungs-Ausgabe
für den
DMA-Kanal 0 an. Die Linie 119 gibt die Anfangsblockvergleichsübereinstimmung
für den
DMA-Kanal eins an. Die Linie 121 zeigt die Anfangsblockvergleichsübereinstimmung
für den
DMA-Kanal zwei. Die Linie 123 zeigt die Anfangsblockvergleichsübereinstimmung
für den Kanal
drei. Jede dieser Ausgaben geht zum Prioritätscodierer 128 und
zu der logischen ODER-Schaltung 129. Der Prioritätscodierer 128 erzeugt
eine DMA-Kanal-Ausgabe 130, die zur 1394-Empfängerlogik 102 geht.
Die ODER-Logikschaltung 129 stellt auf der Leitung 132,
die zu der 1394-Empfängerlogik 102 geht,
eine Komparatorübereinstimmung
für das
Empfängersteuerlogiksignal
als eine 0, die keine Übereinstimmung
angibt, oder als eine 1, die eine Übereinstimmung angibt, bereit.
-
Die
DMA-Maschine 74 kann als fünf (5) oder mehr unabhängige DMA-Kanäle betrachtet
werden, die alle gleichzeitig fließen. Die tatsächliche
Implementie rung verwendet eine Hauptsteuerungs-Zustandsmaschine
zum Zeitmultiplexieren zwischen den DMA-Kanälen. Eine superisochrone Prioritätslogik
untersucht ständig den
momentanen Kontext aller Kanäle
und weist der Zustandsmaschine den Kanal mit der höchsten Priorität mit einer
anstehenden Aktivität
zur Ausführung
zu.
-
4 veranschaulicht
die allgemeinen Konzepte, die 3 beschreibt,
genauer. In 4 enthalten die Empfangsdaten 106 die
Anfangsblockdaten 108 mit den Wörtern WD0 und WD1. Die Wörter WD0
und WD1 werden jedem der N DMA-Kanal-Anfangsblockvergleichsblöcke der
Logik 110 (z. B. wie etwa den vier Kanälen 0–3 aus 3) zugeführt. Die
DMA-Anfangsblockvergleichsregister für jeden DMA-Kanal in der Logik 110 enthalten
in der Schaltungsanordnung Anweisungen zum Vergleichen des Anfangsblock-WD
0 bei 108 auf Übereinstimmung
mit den Auswahlregisterinhalten 120 und mit der Steuerwertelogik 122.
Gleichfalls wird das WD 1 bei 109 unter Verwendung von
Vergleichsanweisungen, wie sie durch den Inhalt des Registers 124 und durch
die Inhalte der Auswahlregister 126 angegeben sind, verglichen.
Die Ausgabe der DMA-Anfangsblockvergleichsregister und -logik wird
als Kanalauswahl [0] bis Kanalauswahl [N – 1] dargestellt. 4 gibt
außerdem
an, dass der Prioritätscodierer 128 diese
Kanalauswahlausgaben empfängt,
um auf der Leitung 130 des ausgewählten DMA-Kanals eine Kanalnummer
und eine Adressenübereinstimmungsausgabe 132 zu
erzeugen. Wie 3 und der beigefügte Text
beschreiben, fließen
die Ausgabe 130 des ausgewählten DMA-Kanals und die Adressenübereinstimmungsausgabe 132 zu
der IEEE-1394-Empfängerlogik 102.
-
Das
DMA-Anfangsblockvergleichsregister und die DMA-Anfangsblockvergleichslogik 110 und
der Prioritätscodierer 128 implementieren
die Logik, die erforderlich ist, um zu bestimmen, ob ein ankommendes
Paket anzunehmen und in den GRF 80 zu laden ist. 3 zeigt
vier DMA-Kanäle,
wobei fünf
oder mehr DMA-Kanäle
im Umfang der Erfindung liegen. Jede DMA-Anfangsblockvergleichsregister-
und -Logikschaltung 110 ist zum Bedienen eines DMA-Kanals
zugewiesen. Ein Komparator enthält
ein WD-0-Feldauswahlregister 122, ein WD-1-Auswahlregister 126,
ein WD-0-Vergleichswertregister 120, ein WD-1-Vergleichswertregister 124 und eine
Vergleichslogik. Die zwei Feldauswahlmaskenregister geben diejenigen
Bitfelder das WD 0 und das WD 1 des ankommenden Pakets an, die durch
die Komparatorlogik mit einem erwarteten Wert verglichen werden. Die
zwei Vergleichswertregister geben die erwarteten Bitmuster an, die
mit den ausgewählten
Bitfeldern im Wort 0 und im Wort 1 des ankommenden Pakets verglichen
werden. Der Prioritätscodierer 128 sammelt
die DMA-Kanal-Übereinstimmungsangaben
von jedem DMA-Anfangsblockvergleichsregister und jeder DMA-Anfangsblockvergleichslogik 110 und
erzeugt einen Bitcode, der das ankommende Paket auf einen besonderen DMA-Kanal
abbildet. Die ODER-Logikschaltung 129 kombiniert die Auswahlangaben
von den DMA-Anfangsblockvergleichsregistern und von der DMA-Anfangsblock-Vergleichslogik 110 und
erzeugt eine einzelne Komparatorvergleichsangabe für die IEEE-1394-Empfängerlogik 102.
Die IEEE-1394-Empfängerlogik
verwendet die DMA-Kanalnummer und die Komparatorvergleichsangabe,
um zu bestimmen, ob das ankommende Paket in dem GRF 80 zu
empfangen ist.
-
Der
DMA-Paketprozessor kann in der vorliegenden Ausführungsform als unabhängige DMA-Kanäle arbeiten,
die alle unabhängig
fließen.
Die tatsächliche
Implementierung nutzt eine Hauptsteuerungs-Zustandsmaschine, die
zwischen den mehreren DMA-Kanälen
(z. B. fünf
DMA-Kanälen)
zeitmultiplexiert. Die superisochrone Prioritätslogik untersucht ständig den
momentanen Kontext aller Kanäle
und weist den Kanal mit der höchsten
Priorität
einer anstehenden Aktivität
der Zustandsmaschine zur Ausführung
zu. Ein DMA-Kanal wird nach dem Rücksetzen in einen statischen
Zustand initialisiert, wo er auf einen gültigen PCL-Zeiger wartet, der in
das Paketsteuerungslisten-Startadressenregister zu schreiben ist,
sowie darauf wartet, dass die Kanalfreigabe- und Verkettungsbits
in dem DMA-Steuerregister
gesetzt werden. Ein gültiger
PCL-Zeiger ist durch den Zustand des Bits null des Paketsteuerungslisten-Startadressenregisters
bestimmt. Eine Eins gibt eine ungültige Adresse an, während eine
Null gibt eine gültige
Adresse angibt. Daraufhin geht der DMA zu der Adresse, auf die das
Paketsteuerungslisten- Startadressenregister
zeigt, holt die neue Adresse und macht diese, wenn sie gültig ist,
zu der momentanen PCL-Adresse und beginnt mit der Ausführung.
-
Falls
diese Adresse ungültig
ist, wird das Verkettungsbit in dem DMA-Steuerregister gelöscht und
für diesen
Kanal in dem Unterbrechungsstatusregister eine DMA-Angehalten-Unterbrechung
mit dem zugeordneten Status erzeugt, wobei der Kanal inaktiv wird.
Dieser Mechanismus schafft eine Vernunft-Prüfung an den PCL-Speicherstrukturen
und schafft einen verhältnismäßig leichten
Weg, um die Kanal-PCL-Ausführung
fortzusetzen, falls eine nächste
Adressenverbindung fehlt. Wenn eine gültige Adresse der nächsten PCL
erfasst wird, setzt der DMA daraufhin das BUSY-Bit in dem DMA-Steuerregister
und holt die ersten Steuerwörter
an dem PCL-Versatz. Daraufhin wird eine Prüfung vorgenommen, um zu bestimmen,
ob der Befehl ein Empfangs-, ein Sende-, ein PCI-zum/vom-Lokalbus-
oder ein Hilfsbefehl ist. Je nachdem, welcher DMA-Kanal eine Übereinstimmung
besitzt, identifiziert der Kanal mit der höchsten Priorität vom Prioritätscodierer 128,
der eine Übereinstimmung
besitzt, einen besonderen DMA-Kanal, der auszuwählen ist.
-
5 zeigt
in nochmals größerer Einzelheit
den Betrieb einer Anfangsblock-Vergleichslogik 120 eines gegebenen
DMA-Kanals gemäß der vorliegenden
Ausführungsform.
Beispielsweise gehen zu der Anfangsblock-Vergleichslogik 120 die
Empfangsdaten, die die Wörter
WD0 und WD1 enthalten. Dies umfasst, dass das Codesegment 134 des
Worts WD0 zu der Ziel-ID-Vergleichslogik 136 geht. Der
WD0-Abschnitt 138 geht zu der Tcode-Vergleichslogik 140.
Der WD0-Abschnitt 142 geht zu der Vergleichslogik 144 für die WD0-Bits
15:6 und 3:0. Außerdem
empfängt
die Vergleichslogik 146, wie durch den WD1-Abschnitt 148 angegeben
ist, die Bits 31:16. Die Vergleichslogikausgaben von der Ziel-ID-Vergleichslogik 136,
von der Tcode-Vergleichslogik 140, von der Vergleichslogik 144,
die die WD0-Bits 3:0 und die WD0-Bits 15:6 bearbeiten, sowie die
Ausgabe der Vergleichslogik 146 für die WD1-Bits 31:16 gehen
zu der UND-Funktion 150. Die Ausgabe der UND-Funktion 150 ist
eine Kanalauswahlfunktion [x], die eine Kanalauswahl [0] bis zu
einer Kanalauswahl [N – 1]
sein kann, die der Priori tätscodierer 128 wie
oben beschrieben empfängt,
um das DMA-Kanal-Ausgewählt-Signal 130 und
das Adressenübereinstimmungssignal 132 zu
erzeugen.
-
Die 6, 7, 8 und 9 geben
ausführliche
Ansichten der Empfangsdatenbits, die zu der DMA-Kanal-Anfangsblock-Vergleichslogik 120 gehen.
Insbesondere zeigt 6, dass der T-Code 160 die [7:4]
des Asynchron-Anfangsblocks 162 enthält. Ähnlich bilden die Tcode-Bits 164 die
Bits [7:4] des Isochron-Anfangsblocks 166. Die Übereinstimmungsdatenmenge 168 in
einem gegebenen DMA-Kanal
enthält bei 170 das Übereinstimmungsdaten-Anfangsblock-WD0,
das dem Anfangsblock-WD 0 bei 162 entspricht, und die Auswahlübereinstimmungs-Datenmenge 172,
die dem Anfangsblock-WD 0 bei 166 entspricht. Wie 6 veranschaulicht,
bestimmen die durch die Bits [7:4] 176 des Vergleichsauswahl-WD-0
bei 172 geänderten
Vergleichsbits [7:4] 174 die Übereinstimmungsergebnisse für das Empfangsanfangsblock-WD
0, Bits [7:4]. Um den Übereinstimmungswert 117 für einen
besonderen DMA-Kanal zu bestimmen, wird die Ausgabe von diesem Vergleich
mit anderen Teilvergleichsergebnissen UND-verknüpft.
-
6 zeigt
eine mögliche
Zieldatenwert-Anordnung für
besondere Felder. Die vorliegende Erfindung nimmt die Empfangsdaten,
jedes Feld einzeln, und versucht, mögliche Wege zu zeigen, die
Vergleichswörter und
Auswahlwörter
zum Empfangen eines besonderen Ergebnisses einzustellen. Insbesondere
zeigt 6 den Vergleich mit dem Tcode-160-Feld.
Einer der Tcodes 160 oder 164 gibt einen Operationscode,
der den Datentyp auf dem Empfangsdatenbus 16 und die seriellen
1394-Daten [Bezugszeichen erforderlich??] als isochrone oder asynchrone
Daten identifiziert. Im Beispiel aus 6 sind die
Tcodes in demselben Feld. Dieser Vergleich funktioniert sowohl an
asynchronen Anfangsblöcken
als auch an den isochronen Anfangsblöcken auf die gleiche Weise.
Es kann verschiedene Wege geben, um isochrone und asynchrone Anfangsblöcke zu decodieren.
Sie können
wie gezeigt sein oder miteinander vermischt sein. Die tatsächliche
Codierung kann schwanken, wobei das Verhalten dadurch, dass ein
Vergleich oder kein Vergleich erhalten wird, aber ähnlich ist.
-
In 7 sind
die Bits [3:0] 178 und die Bits [15:8] 180 des
Asynchron-Anfangsblocks 162 sowie die Synch-Bits [3:0] 182 und
die Kanalbits [15:8] 184 des Isochron-Anfangsblocks 166 hervorgehoben.
Die Bits [3:0] des Anfangsblocks-WD-0,
entweder die Primärbits 178 oder
die Synch-Bits 182, werden mit den durch die Bits [3:0] 188 des
Vergleichsauswahl-WD 0 bei 172 geänderten Bits [3:0] 186 des
WD 0 bei 170 verglichen. Darüber hinaus werden die Bits
[15:7] des Anfangsblock-WD 0 bei 170, entweder die Bits
[15:7] 180 des Asynchron-Anfangsblocks 162 oder die
Bits [15:7] 184 des Isochron-Anfangsblocks 166, mit den
durch die Bits [15:7] des Vergleichsauswahl-WD 0 bei 172 geänderten
Bits [15:7] 190 des Vergleichs-WD 0 bei 170 verglichen.
Die Ausgabe von diesen Vergleichen, die gemäß 7 erfolgen,
entspricht den WD-0-Bits [3:0] und [15:7] der Vergleichslogik 144 der
Schaltung 110.
-
8 zeigt
einen weiteren Vergleich, der der Ziel-ID-Vergleichslogikschaltung 136 der
DMA-Kanal-Vergleichslogik 110 entspricht. Der Asynchron-Anfangsblock 162 enthält die mit
dem Bezugszeichen 200 bezeichneten Ziel-ID-Bits [31:15].
Dieselben Bitstellen, die Bits [31:16] des Anfangsblock-WD 0 bei
166, enthalten die mit den Bezugszeichen 202 bezeichneten
Datenlängenbits
[31:16] für
isochrone Datenpakete. Gleichfalls enthalten die Bits [31:16] eines
besonderen Sicherungsschicht-Steuerregisters 92, die hier
mit dem Bezugszeichen 204 bezeichnet sind, Knotennummer-
und Busnummerdaten. 8 zeigt den Vergleich des Asynchron-Empfangsdatenblock-WD
0 bei 162 oder das Isochron-Empfangsdatenblock-WD 0 bei 166 mit
den Bits 206 der Übereinstimmungsdatenmenge 170 für die wie
durch die Bits 208 der Datenmenge 172 geänderten
Bits [31:16]. Die Übereinstimmungsdatenmenge 210 enthält die Bits
[15:11] als Ziel-ID-Mengen-Bits 212. Anhand des Vergleichs,
den 8 erzeugt, wird im Logikblock 146 eine
DMA-Kanalnummer abgeleitet, die zur UND-Funktion 150 der
DMA-Kanal-Vergleichslogik 110 geht.
-
Wegen
der Art, in der die IEEE-Norm 1394 Zielkennungen behandelt, können die
höherwertigen
Bits [31:16] des Asynchron-Anfangsblock-WD 0 eine spezielle Bedeutung
haben. Beispielsweise bestimmt die IEEE-1394-Codierung für ver schiedene
Anfangsblöcke
den Rundsende-Nachrichtentyp. Für
den Empfangsdatenblock gibt es ein Vergleichswort 0 und ein Bitauswahlwort
0, die die Auswahl eines spezifischen Empfangsanfangsblockworts
ermöglichen.
Außerdem
wählt jedes
Bit im Vergleichsauswahlwort 1 [15:11] 212 einzeln eine
besondere Ziel-ID-Vergleichsgleichung
aus.
-
9 zeigt
den Asynchron-Anfangsblock 162, der bei 220 die
Quell-ID-Bits [31:16] enthält.
Diese Bitstellen 222 sind in einem Isochron-Anfangsblock 166 Teil
der variablen Daten. Der DMA-Kanal 120 in der WD-1-Vergleichslogik 146 vergleicht
die Bits 16 bis 31 der durch die Bits [31:16] bei 226 des
Vergleichsauswahlworts 1 geänderten Übereinstimmungsdatenmenge 170 mit
den Bits [31:16] des Anfangsblock-WD 1 bei 220 oder 222.
-
10 zeigt
die Registerschreib-Schaltungsanordnung 250 zum Schreiben
einer beliebigen Anzahl von Datenregisterbits mit einer einzigen
Registerschreiboperation. Die Schaltungsanordnung 250 zeigt
eine einer beliebigen Anzahl ähnlicher
Schaltungen: Jede Schaltung steuert ein besonderes Bit aus der beliebigen Anzahl
von Datenbits. Die Universal-E/A-Schreibdateneingabe (GPIO-Schreibdateneingabe) 252 in
der Registerschreib-Schaltungsanordnung 250 geht zum Datenflipflop 254.
Außerdem
empfängt
das Datenflipflop 254 das Taktsignal 256 und das
Schreibfreigabeeingangssignal 258 von der UND-Funktion 260.
Die UND-Funktion 260 empfängt das GPIO-Adresse-Okay-Signal 262,
das Schreibstandardsignal 264 und die GPIO-Adressenbiteingabe 266.
Die UND-Funktion 260 liefert das UND-Ausgangssignal 258 für das Schreibfreigabebit 268 des Datenflipflops 250.
Lediglich in die Flipflops 250 mit einer 1 in ihrem besonderen
zugewiesenen Adressenbit 266 werden ihre jeweiligen GPIO-Schreibdaten 252 geschrieben.
-
Die
Registerschreib-Schaltungsanordnung 250 ermöglicht,
dass nur in jene Bits geschrieben wird, die sich in einem Register ändern müssen, während der
vorangehende Wert des Rests der Bits erhalten wird. Außerdem ermöglicht die
Registerschreib-Schaltungsanordnung 250, dass Software
kritische Datenbits än dert, ohne
dass Registerbits, die sich nicht auf eine besondere Aktion beziehen,
zurückgerufen,
spezifiziert oder bearbeitet werden müssen.
-
Wenn
es eine Adresse eines Registers gibt, in das die 1 bis 4 GPIOs des
Schreibfreigabebits 258 anhand des Adressenfelds geschrieben
werden können,
repräsentieren
die Ax in der [GPIO]-Adressennummereingabe 266 dasjenige
Adressenbit, auf dem dieses Schreiben beruht, um zu bestimmen, ob
es ein Schreiben in dieses Bit gibt oder nicht. Die Schreibübernahme 264 sagt,
dass dies eine Schreiboperation ist. Das GPIO-Adresse-OK 262 ist
eine Grundadressendecodierung für
das gesamte Register. Die Schreibfreigabe 258 zum Flipflop 250 ist
das Ausgangssignal der UND-Funktion. Wenn die Schreibfreigabe aktiv
ist, werden die Eingangsschreibdaten 252 ins Flipflop 254 geschrieben,
wobei sie am Ausgang 270 des Flipflops erscheinen.
-
11 zeigt
das Adressenfeld 272, das die GPIO-Registeradressenbits 274 und
gemäß dem Bitwert 0
oder 1 der zugeordneten Bits im Adressenfeld 272 die Adressenbits
A0, A1, A2 und A3 des Einzelbitauswahlfelds 276 enthält. Die
letzteren zwei Bits 278 des Adressenfelds 272 nehmen
allgemein einen Wert null an. Die zwei niedrigstwertigen Bits in
der Adresse 272 nehmen einen Wert null an. Dies liegt an
der Busarchitektur. Die nächsten
als A0, A1, A2 und A3 spezifizierten
vier Bits ermöglichen
einzeln oder in verschiedenen Kombinationen das Adressieren von
vier Bits. Die höherwertigen
oder höchstwertigen
Bits sind die besonderen für diese
besondere Funktion spezifizierten oder zugeordneten Adressen. Somit
gibt es für
den gegebenen GPIO-Adressenwert eine feste Menge von Bitmusteradressen
zur Auswahl der besonderen Adressen. Das Ergebnis ist eine ganze
Anordnung von Adressen von 0000 bis 1111 (d. h. 16 verschiedene
mögliche
Kombinationen), die adressiert werden können.
-
Die
DMA-Prioritätsauswahleinrichtung
ist verantwortlich für
die Aktivierung des Kontexts desjenigen Kanals, der den dringendsten
Bedarf an einer PCI-Datenbewegung hat. Der DMA ist als eine Hauptzustandsmaschine
(dma_fsm.v) entworfen, die die Zustände eines ausgewählten Kanals
ausführt.
Der ausgewählte Kanal
besitzt zu irgendeinem Zeitpunkt eine Anzahl gespeicherter Bedingungen.
Diese gespeicherten Bedingungen werden sein Kontext genannt. Ein
Teil des Kontexts eines Kanals ist der momentane Zustand seiner
Ausführung
durch die Hauptzustandsmaschine.
-
Die
Zustandsmaschine besitzt mehrere potentiale Spin-Zustände, wobei
die Ausführung
eines Kanals warten muss, bis bestimmte Bedingungen so sind, dass
die Ausführung
fortgesetzt werden kann. Ein offensichtlicher Fall liegt vor, wenn
ein Kanal im Leerlauf ist und darauf wartet, dass eine gültige PCL-Adresse
geladen wird, wenn das Kanalfreigabebit zu setzen ist und wenn das
Verkettungsbit zu setzen ist. Ein weiterer Fall liegt vor, wenn
ein Empfangskanal auf Daten in dem Empfangs-FIFO wartet. Wenn ein
Kanal auf Empfangsdaten wartet, während ein anderer Kanal zum Übertragen
von Daten in den Sende-FIFO bereit ist, muss die Sendung bedient
werden. Diese Art von Szenarien kann in einer Anzahl von Fällen auftreten.
-
Jeder
dieser Spin-Zustände
stellt ein "Gelegenheitsfenster" dar, wo die Ausführung eines
anderen Kanals fortschreiten kann. Die Prioritätsauswahleinrichtung betrachtet
alle diese möglichen
Spinzustände
und wählt
aus, welcher Zustand und Kanal zu diesem Zeitpunkt die höchste Priorität besitzt.
-
12 zeigt
ein Beispiel der DMA-Befehlsverarbeitung in der Umgebung 300.
Die PCI-Registerschreibdaten 302 in 12 gehen
zum Multiplexer 304. Außerdem empfängt der Multiplexer 304 die
DMA-Registerschreibdaten 306. Je nach der auszuführenden
Operation wird die richtige Datenquelle ausgewählt 308. Das Ausgangssignal
vom Multiplexer 304 geht zu den DMA-Registern 310,
die in dem veranschaulichten Beispiel sechs Kanäle, Kanal 0 bis Kanal 5, enthalten.
Die DMA-Felder bei jedem Kanal enthalten ein Feld 312 für die vorangehende
Adresse oder temporäres
Feld 312, ein Feld 314 für die momentane PCI-Adresse,
die Datenpufferadresse 316, das Statusbit 320,
das Befehlsbit 322, das Bit 324 für den momentanen
Zustand und das Bereit-Bit 326. Außerdem liefert die DMA-Registerschreibentscheidungs-Auswahlschaltung 328 in
die DMA-Register 310 eine Eingabe, die für das PCI-Slave-Signal 330,
für das
PCI-Master-Signal 332, für das DMA-PCI-Master-Zykluseingangssignal 334 und
für das
DMA-PCI-Slave-Fertig-Eingangssignal 336 verantwortlich
ist. Die DMA-Kanal-Entscheidungseinrichtung 340 empfängt das
Kanalverriegelungs-Eingangssignal 342 und liefert ein Eingangssignal
an den Multiplexer 346. Das Slave-Registerleseadressen-Eingangssignal 348 steuert
den Betrieb des Multiplexers 344. Das DMA-Registerlesedaten-Ausgangssignal 350 gibt
die DMA-Registerdaten an die PCI-Schnittstelle zurück. Der
Multiplexer 346 liefert ein Ausgangssignal an die Logik 352 der
DMA-Zustandsmaschine für
den nächsten
Zustand. Die Werte 354 der DMA-Zustandsmaschine für den nächsten Zustand
werden über
den Multiplexer 304 in das Zustandsregister und in die
anderen Ausgangsregister zurückgeschrieben.
Die Ausgabe von der DMA-Befehlsverarbeitungsumgebung 300 umfasst das
FIFO-Lesesignal 356,
das FIFO-Schreibsignal 356 und das FIFO-Auswahlsignal 356 sowie
zahlreiche Signale.
-
Die
DMA-Kanal-Entscheidungseinrichtung 340 steuert, welcher
Kanal in der Ausführung
ist. Diese Entscheidung beruht auf Signalen von dem FIFO 358 sowie
auf "der aktive
FIFO-Kanal erfordert Daten" und "der aktive FIFO-Kanal" sowohl darauf, welcher
FIFO zum Übertragen
von Daten bereit ist und welche Kanäle freigegeben und aktiv sind.
-
Die
DMA-Register 310 implementieren einen Steuer- und Statusregistersatz
zum Steuern und Überwachen
des Status jedes DMA-Kanals. Die DMA-Register 310 unterstützen jeden
DMA-Kanal mit zahlreichen Funktionen. Beispielsweise stellt das
Register 312 für
die Startadresse der vorangehende Paketsteuerliste/das Temp-Register 312 ein
Register bereit, das durch die DMA-Maschine 74 aktualisiert
wird, während
es während asynchroner
Sendungen eine Warteschlange von Paketen verarbeitet. Außerdem wird
es während
Hilfsbefehlen als ein temporäres
Halteregister für
Lade- und Speicherdaten verwendet. Das Paketsteuerlisten-Startadressenregister 314 wird
durch Anwendungssoftware initialisiert, so dass es auf den Start
der ersten PCL (Leer-PCL) in einer PCL-Kette zeigt. Die DMA-Maschine 74 verwendet
die nächste
in diese PCL geladene Adresse zum Verketten mit der ersten tatsächlichen
PCL. Während
die PCLs verarbeitet werden, wird das Paketsteuerlisten-Startadressenregister 314 durch
den aktiven DMA-Kanal aktualisiert. Während der aktive DMA-Kanal
die PCL verarbeitet, wird das DMA-Puffer-Startadressenregister 316 mit
den von der PCL geholten Datenpufferzeigern geladen. Das DMA-Statusregister 320 speichert
eine andauernde Zählung
der Anzahl der während
dieser PCL übertragenen
Bits und enthält
den Abschlussstatus der Übertragung.
Nachdem die Verarbeitung der PCL abgeschlossen ist, schreibt der
aktive DMA-Kanal die Statusinformationen dieses Registers an den
Versatz 0xC in der PCL zurück.
-
Das
DMA-Steuerregister 322 enthält Steuerbits, die ermöglichen,
dass die Anwendungssoftware den Betrieb des DMA-Kanals freigibt
oder sperrt und die nächste
Adresse einer PCL zur Verkettung erneut holt. Das DMA-Steuerregister 322 steuert
die Datenpuffer-Übertragungssteuerung,
die Übertragungsbitzählung und
die Befehle, die von der PCL geholt werden. Das niedrigstwertige
Bit des DMA-Bereit-Registers 326 kann veranlassen, dass
der DMA-Kanal auf eine Bereit-Bedingung wartet, bevor er die Ausführung eines
XMT-, eines RCV-, eines LOAD-, eines STORE-, eines STORE0- oder
eines STORE1-Befehls fortsetzt. Diese Bereit-Bedingung wird durch
das Steuerwort bzw. durch die Steuerwörter der PCL ausgewählt. Das
niedrigstwertige Bit des DMA-Bereit-Registers 326 kann
veranlassen, dass der DMA-Kanal während der Ausführung eines BRANCH-Befehls
bedingt verzweigt. Diese Bedingung wird durch das Steuerwort bzw.
durch die Steuerwörter der
PCL ausgewählt.
Das Register 324 für
den momentanen DMA-Zustand speichert den Zustandsvektor für den DMA-Kanal.
Dieses Register wird während
der aktiven Zeit des DMA-Kanals aktualisiert und unterhält den letzten
Zustandsvektor, der erzeugt wird, wenn der Kanal inaktiv wird.
-
Außerdem enthalten
die DMA-Register 310 ein (nicht gezeigtes) Empfangspaket-Zählregister,
das die Zählung
der momentan empfangenen Pakete enthält. Die DMA-Maschine 74 lädt dieses
Register mit der in GRF-80-Token-Wörtern übergebenen Empfangspaketzählung. Diese
Zählung
wird daraufhin dekrementiert, während
die Daten auf den PCI-Bus 24 übertragen werden. Außerdem kann ein
(nicht gezeigtes) globales DMA-Register enthalten sein, das Zustandsmerker
zur Verwendung durch die Zustandsmaschine zum Verfolgen der Ausführung eines
Asynchron-Sendepakets enthält.
Das globale DMA-Register kann die Bits der unteren Grenze speichern,
die in Verbindung mit dem Cache-Zeilengrößenregister verwendet wird,
um die von dem PCI-Master angeforderte Burst-Größe zu bestimmen.
-
21 zeigt, wie ein DMA-Kanal nach dem Rücksetzen
auf eine statische Bedingung im Abschnitt 135 initialisiert
wird. Jeder DMA-Kanal 310 wartet darauf, dass in ein Paketsteuerungslisten-Startadressenregister 314 ein
gültiger
PCL-Zeiger geschrieben
wird und dass die Kanalfreigabe- und Verkettungsbits in dem DMA-Steuerregister
gesetzt werden. Ein gültiger
PCL-Zeiger ist durch den Zustand des Bits 0 des Adressenregisters
der momentanen Paketsteuerliste (PCL-Adressenregister) bestimmt. Ein Wert
1 gibt eine ungültige Adresse
an, während
ein Wert 0 eine gültige
Adresse angibt. Daraufhin geht der DMA zu der Adresse, auf die das
Startadressenregister des Registers für die Adresse der momentanen
PCL zeigt, erhält
er die Adresse der nächsten
PCL und macht er diese, wenn sie gültig ist, zu der Adresse der
momentanen PCL und beginnt er mit der Ausführung. Falls diese Adresse
ungültig
ist, wird das Verkettungsbit in dem DMA-Steuerregister gelöscht, wird für diesen
Kanal eine DMA-Angehalten-Unterbrechung mit dem dazugehörenden Status
in dem Unterbrechungsstatusregister erzeugt und wird der Kanal inaktiv.
Dieser Mechanismus schafft eine Vernunftprüfung an die PCL-Speicherstrukturierung
sowie einen verhältnismäßig leichten
Weg, mit der Kanal-PCL-Ausführung
fortzusetzen, falls eine Verkettung zur nächsten Adresse fehlt (d. h.
ungültig
ist). Wenn die DMA-Maschine 74 eine gültige Adresse der nächsten PCL
erfasst, setzt sie das BSY-Bit in den DMA-Steuerungs- und -Statusregistern 76 und
erhält
sie die Wörter
in der richtigen PCL. Daraufhin wird eine Prüfung vorgenommen, um zu bestimmen,
ob der Befehl ein Empfangs-, ein Sende-, ein PCI-zu/von-Lokalbus-
oder ein Hilfsbefehl ist.
-
Weiter
veranschaulicht 21, wie die DMA-Maschine 74 in
Abschnitt 137 die Empfangsoperation für isochrone und asynchrone
Daten im GRF 80 ausführt.
-
Die
DMA-Maschine 74 fährt
fort, indem sie prüft,
um zu sehen, ob eine Wartebedingung vorhanden ist. Wenn die Wartebedingung
nicht mehr vorhanden ist, tritt der Prozessor in eine Datenbewegungsphase
ein. Die DMA-Maschine 74 tritt hier in eine Schleife ein,
in der die Zählung
der momentanen Übertragung
geprüft wird,
um zu sehen, ob sie zu null geworden ist. Wenn das der Fall ist,
wird eine Prüfung
vorgenommen, um zu sehen, ob dies der letzte Datenpuffer der PCL-Pufferliste
ist. Wenn es der letzte Puffer ist und durch die Sicherungsschicht-Steuerlogik 90,
die ein Spezialsteuer-Token-Wort in den GRF 80 schreibt,
keine Paketgrenze angegeben worden ist, ist ein Fehler aufgetreten,
da mehr Paketdaten übertragen
werden sollen, als der Puffer halten kann. In diesem Fall wird das
PKT-ERR-Bit in den DMA-Steuerungs- und -Statusregistern 76 gesetzt, wobei
die DMA-Maschine 74 die verbleibenden Daten bis zu der
Paketgrenze entleert. Falls die Zählung der momentanen Übertragung
auf null dekrementiert worden ist und es einen weiteren Puffer in
der PCL-Liste gibt, erfasst die DMA-Maschine 74 die neue
Pufferadresse und Übertragungszählung und
fährt mit
der Übertragung fort.
-
Während die
DMA-Maschine 74 Daten vom GRF 80 zu der PCI-Schnittstellenlogik 70 bewegt,
wartet sie darauf, dass der GRF 80 ausreichend Daten besitzt,
bevor sie anfordert, dass der PCI-Bus-Master eine Übertragung
ausführt.
Dieser Übertragungsschwellenwert
wird jedes Mal erreicht, wenn eine von zwei Bedingungen erfüllt ist.
Die DMA-Maschine 74 fordert jedes Mal eine Übertragung
des PCI-Masters an, wenn die Anzahl der Bits in dem Empfangs-FIFO
eine "Hochwassermarke" erreicht. Diese
Hochwassermarke ist gleich dem größeren des Cache-Zeilengrößenregisters
oder dem Feld für
die untere Grenze des globalen DMA-Registers.
-
Wenn
das Paket zum ersten Mal durch die Sicherungsschicht-Steuerlogik 90 in
den GRF 80 geschrieben wird, erhält der DMA von der Verbindung
Informationen über
die Datengröße eines
Pakets. Er verwendet diese Übertragungszählung, um
zu bestimmen, ob die Daten im GRF 80 die verbleibenden
Daten in dem Paket sind, wobei er, wenn es der Fall ist und die
Größe kleiner
als die Hochwasser marke ist, eine Übertragung der PCI-Master-Logik 64 anfordert,
wobei die Übertragungszählung gleich
diesem Rest ist. Während
die DMA-Maschine 74 Daten überträgt, werden das Datenpuffer-Startadressenregisterbit
und das Datenpuffer-Übertragungslängenbit
in den DMA-Steuerungs- und -Statusregistern 76 aktualisiert,
so dass sie den momentanen Zustand der Übertragung widerspiegeln.
-
Wie
der Abschnitt 139 aus 21 angibt,
schreibt die Sicherungsschicht-Steuerlogik 90,
wenn sie das Ende eines Pakets feststellt, in das GRF 80 ein
Spezialsteuer-Token-Wort, das das Ende eines Pakets markiert. In
dieses Steuerwort sind Statusbits eingebettet, die den Abschlussstatus
des Pakets auf dem Bus angeben. Die DMA-Maschine 74 verwendet
diese Paket-Ende-Marke, um die Datenübertragung vom GRF 80 zum
PCI-Bus 24 abzuschließen.
Falls die Paket-Ende-Marke
angibt, dass ein IEEE-1394-Belegt-Quittierungssignal vorhanden ist,
erfasst die DMA-Maschine 74 die erste Pufferadresse und Übertragungszählung der
PCL erneut und startet sie die Übertragung
des Pakets noch einmal von vorn. Falls es keinen von der Paket-Ende-Marke
angegebenen Belegt-Quittierungsstatus gab, werden die DMA-Steuerungs-
und -Statusregister 76 mit dem von der Sicherungsschicht-Steuerlogik 90 in
der Paket-Ende-Marke übergebenen
Quittierungsstatus geladen und wird ein Paket-Vollständig-Bit
gesetzt. Daraufhin wird der Paketabschlussstatus in dem PCL-Statuswort
in den Speicher geschrieben und eine Unterbrechung signalisiert
und in dem entsprechenden Bit in dem Unterbrechungsstatusregister
zwischengespeichert. Falls der Befehl ein Empfangs- und Aktualisierungsbefehl
war, werden die Zählung
der verbleibenden Übertragung
und die nächste
Pufferadresse in die richtigen PCL-Versätze geschrieben.
-
13 zeigt
die Tabelle 360 zur Angabe des Betriebs der DMA-Kanalentscheidungsschaltung 340. Die
Tabelle 360 zeigt, dass, falls momentan ein Kanal auf dem
Bus der IEEE-Norm 1394 aktiv ist, dieser Kanal die höchste Priorität besitzt,
die für
die Ausführung
in dem DMA-Kanal zu planen ist. Andernfalls besitzt die Kanalpriorität die Reihenfolge
der Kanalnummer, wobei 0 die höchste
Priorität
ist. Bei 362 ist als der Wert "X" ein "Unbedeutend"-Wert zugewiesen.
Das heißt,
dass der momentan aktive Kanal unabhängig von den anderen Werten die
höchste
Priorität
besitzt. Das sind die Kanäle,
die so früh
wie möglich
geplant werden.
-
Der
Betrieb der DMA-Befehlsverarbeitung kann durch das folgende Beispiel
gesehen werden. Es wird angenommen, dass der DMA momentan den Kanal
3 bearbeitet. Somit sind über
den Multiplexer 346 in dem DMA alle Register für den Kanal
3 ausgewählt.
Der DMA wählt
den besonderen Schnitt von Registern aus, der in der Logik der DMA-Zustandsmaschine
für den
momentanen Zustand und für
den nächsten
Zustand erscheint.
-
14 gibt
ein vereinfachtes Diagramm der Personalcomputerumgebung 12 der
vorliegenden Erfindung, die die Autoboot-Funktion 370 enthält. Der
Anschlussstift 370 der PCI-Schnittstellen-ASIC 20 schafft eine
direkte Eingabe in die Autoboot-PCI-Schnittstellen-ASIC 20.
Im Ergebnis kann die PCI-Schnittstellen-ASIC 20 über den
PCI-Bus 24 als eine Host-Vorrichtung für die PCI-Vorrichtung Nr. 1
beim Bezugszeichen 30 und für die PCI-Vorrichtung Nr. 2
beim Bezugszeichen 31 arbeiten. Die Befehle für den autonomen
Betrieb der PCI-Schnittstellen-ASIC 20 können den
RPL-ROM 36 und den SRAM 38 verwenden. Außerdem kann
die PCI-Schnittstellen-ASIC 20 über den Schnittstellenbus 16 mit
der PHY-Schnittstelle 18 kommunizieren.
-
Wenn
der Autoboot-Anschlussstift 370 aktiv (d. h. hochgezogen)
ist, ist die Autoboot-Betriebsart der vorliegenden Erfindung ausgewählt. Die
Autoboot-Betriebsart ermöglicht
eine Anzahl von Merkmalen, die zulassen, dass die PCI-Schnittstellen-ASIC 20 autonom
funktioniert. Der autonome Betrieb enthält die Merkmale des Holens
der Adresse der ersten Paketsteuerliste unter Verwendung des DMA-Kanals
0 nach dem Einschaltrücksetzen.
Außerdem
ermöglicht
die Autoboot-Betriebsart, nach dem Einschaltrücksetzen den DMA-Master-Zugriff
auf den externen RPL-ROM freizugeben. Außerdem gibt die Autoboot-Betriebsart
nach dem Einschaltrücksetzen
das Merkmal des DMA-Master-Zugriffs auf die internen Verbindungsregister
frei.
-
Wenn
die PCI-Schnittstellen-ASIC 20 als Master auf dem PCI-Bus 24 freigegeben
ist, kann sie auf dem PCI-Bus 24 PCI-Konfigurations-, PCI-Eingabe/Ausgabe-
sowie PCI-Speicherlese- und PCI-Speicherschreibbefehle ausgeben,
indem sie den richtigen Adressenbereich in der Steuer-Paketsteuerliste
angibt. In der Autoboot-Betriebsart ist der externe PCI-Adressenraum
auf 30 Bits beschränkt.
Die zwei höchstwertigen Adressenbits
sind immer auf einem Wert 0. Diese zwei Bits werden intern zum Auswählen des
PCI-Befehls verwendet.
-
Der
Zustand des Autoboot-Anschlussstifts 370 kann zu Diagnosezwecken
von einem Spezialbit in einem Verschiedenes-Steuerregister gelesen
werden. Bei ausgewählter
Autoboot-Betriebsart und bei einem externen ROM kann die vorliegende
Erfindung die PCI-Schnittstellen-ASIC 20 als den lokalen
Prozessor zum Einrichten aller internen Register der PCI-Schnittstellen-ASIC
20, zum Initialisieren anderer Vorrichtungen am PCI-Bus 24 und
zum Bauen und Einreihen weiterer PCLs in einer Warteschlange betreiben.
Die verschiedenen DMA-Kanäle
können
freigegeben werden, um diese PCLs auszuführen, so dass Daten über den IEEE-1394-Bus übertragen
werden.
-
Durch
Hinzufügen
des externen Lokalbus-RAM zur PCI-Schnittstellenvorrichtung 20 wird
für Vorrichtungen
am PCI-Bus 24 ein PCI-Slave-Speicher geschaffen, um Steuerinformationen
zu erhalten und einen Lokalspeicher für die Datenübertragung zu haben. PCL-Programme
können
dann die Vorrichtungssteuerung/Daten über die IEEE-1394 zu einem
anderen System übertragen.
Dementsprechend könnte
eine Umgebung, die die Autoboot-Betriebsart der vorliegenden Erfindung
nutzt, für
Peripheriegeräte
verwendet werden, wo möglicherweise
kein geeigneter Prozessor für
das Management der PCI-Schnittstellenumgebung verfügbar ist.
-
Die
Schaltungsanordnung aus 14 stellt über einen
externen Anschlussstift eine weitere Betriebsart für den Chip
bereit. Die Wirkung ist, dass ein Abschnitt des Speicherabbilds
freigegeben und vorspezifiziert wird, um zu ermöglichen, dass beim Hochfahren
genug Betriebsmittel für
die DMA-Maschine 74 zugänglich sind,
um alle erforderlichen Funktionen auszuführen und auf alle erforderli chen
Funktionen Zugriff zu haben, um nützliche Arbeit zu verrichten.
Außerdem
besteht die Wirkung darin, dass das Verhalten der DMA-Maschine 74 in
der Weise geändert
wird, dass die DMA-Maschine, wenn sie in einer besonderen Betriebsart
ist, neue Anweisungen von einem hierzu vorgesehenen ROM anfordert,
anstatt inaktiv zu werden.
-
Die
DMA-Maschine 74 kommt aktiv hoch und erfasst eine bestimmte
Adresse, um Anweisungen zu erhalten. Dies ermöglicht, dass die PCI-Schnittstellen-ASIC 20 in
einer Einzelbetriebsart arbeitet. Außerdem ermöglicht dies die Erzeugung von
PCI-Speicherbefehlen und von Eingabe/Ausgabe-Befehlen sämtlich von der
PCI-Schnittstellen-ASIC 20.
-
Unter
Verwendung des Autoboot-Anschlussstifts 370 ermöglicht die
vorliegende Erfindung, das Hochfahr-Speicherabbild zu rekonfigurieren,
indem der Zugriff freigegeben wird und die ROM- und RAM-Basisadressenregister
initialisiert werden. Dies ermöglicht
für die
DMA-Maschine den Lese- und Schreibzugriff nach dem Hochfahren. Außerdem ändert die
vorliegende Erfindung das Verhalten der DMA-Maschine 74,
wenn die Autoboot-Betriebsart ausgewählt wird. Dies ermöglicht,
beim Hochfahren von einer hierzu vorgesehenen ROM-Adresse eine neue
Anweisung zu erfassen. In der vorliegenden Implementierung ist die
Anfangszugriffsadresse genau 0. Ferner schafft die Erfindung ein
Verfahren zum Erzeugen von Busbefehlen und ein Protokoll, die in
einer normalen Umgebung nicht erforderlich sind.
-
Wenn
die Autoboot-Option ausgewählt
ist, kann die DMA-Maschine 74 Anweisungen vom RPL-ROM 36 erfassen
und ausführen.
Dies ermöglicht,
dass die DMA-Maschine 74 die geforderten Befehle erzeugt,
um auf einem externen PCI-Bus
als ein Master-Agent zu wirken, der andere PCI-Vorrichtungen an
diesem externen Bus konfiguriert, initialisiert und ihr Management
ausführt.
-
Tabelle 380 aus 15 zeigt
die Abbildung der Bits [31:30] des internen PCI-Adressenbusses auf Befehle auf dem PCI-Bus,
wenn das Autoboot-Eingangssignal 370 aktiv ist. Zum Beispiel
wird der PCI-Speicherbefehl aktiviert, falls das Bit 31 einen
Wert 0 annimmt und das Bit 30 irgendeinen Wert annimmt.
Anschließend tritt
ein PCI-E/A-Befehl auf, wobei das Adressenbit 31 einen
Wert 1 annimmt und das Adressenbit 30 einen Wert 0 annimmt.
Bei einem Wert 1 des Adressenbits 31 und einem Wert 1 des
Adressenbits 30 geht der PCI-Konfigurationsbefehl zu der
PCI-Schnittstellen-ASIC 20.
-
16 zeigt
ein Diagramm eines Lokalbus-Schnittstellenblocks 390 gemäß einem
Aspekt der vorliegenden Erfindung. Der Lokalbus-Schnittstellenblock 390 enthält die Lokalbus-Konfigurationsregister 392 und den
Zoom-Video-Decodierungsschnittstellenblock (ZV-Decodierungsschnittstellenblock) 394,
der mit der ZV-Maschine 396 kommuniziert. Die Pack/Entpack-Zustandsmaschinen 398 enthalten
die Adressen-/Daten-/Bitfreigabehalteregister 398. Außerdem enthält der Lokalbus-Schnittstellenblock 390 die
Lokalbus-Schnittstellen-Zustandsmaschine 400 und den Slave-Quittierungsunterbrechungsblock 402.
-
Der
ZV-Port aus 2 ist ein Nur-Ausgabe-Port,
der zur Übertragung
von Daten von dem IEEE-Norm-1394-Bus zu einer externen Vorrichtung
an der PCI-Schnittstellen-ASIC 20 bestimmt
ist. Wenn die ZV-Schnittstellenlogik richtig programmiert ist, schafft
sie ein Verfahren, um mit den richtigen Steuersignalen IEEE-1394-Digitalkamerapakete
zu empfangen und die Nutzinformationen an eine externe ZV-kompatible
Vorrichtung zu übertragen.
-
Auf
die ZV-Decodierungsschaltung 394 wird über eine Teilmenge des Adressenregisters
auf der Grundlage des dritten PCI-Speichers zugegriffen. Wenn die
ZV-Decodierungsschaltung 394 freigegeben ist, werden die
Hilfsadressen zwischen 0xF000 und 0xFFFF auf den ZV-Port abgebildet.
Der ZV-Port wird freigegeben, wenn eine der sechs verfügbaren Taktquellen 395 als
der ZV-Pixeltakt ausgewählt
wird. Falls keiner der sechs Takte ausgewählt ist, ist der ZV-Port gesperrt,
wobei die Hilfsschnittstelle den gesamten Adressenraum beansprucht.
Wenn der ZV-Port gesperrt ist, sind alle ZV-bezogenen Ausgänge mit
Ausnahme des Datenbusses, der während
Hilfs-, RAM- und ROM-Zugriffen weiter angesteuert wird, hochimpedant.
-
Beim
Erfassen des Synch-Felds des IEEE-1394-Isochron-Paketanfangsblocks
gleich 0X1 wird bei dem ZV-Port ein vertikales Synch-Signal erzeugt.
In der vorliegenden Ausführungsform
enthält
das Datenbit 24 die signifikanten Synch-Felddaten. Bei
Erfassung dieses vertikalen Synch-Bits wird ein Vertikal-Synch-Ausgangssignal
erzeugt. Für
den Rest des Teilbilds wird jedes Mal, wenn beim Übertragen
von Videodaten an dem Zoom-Port auf eine Spezialadresse zugegriffen
wird, ein Horizontal-Sync-Ausgangssignal erzeugt. Durch richtige
Programmierung der Paketsteuerliste können alle IEEE-1394-Digitalkamerapakete über den
ZV-Port übertragen
werden.
-
17 zeigt
eine Ausführungsform
der Sync-Erfassungs-Schaltungsanordnung 405 der vorliegenden Erfindung
zum Erzeugen des Vertikal-Sync-Erfasst-Signals 407 und des Horizontal-Sync-Erfasst-Signals 409. Wenn
die PCI-Slave-Adressenbits
[15:0] einen Wert 0XF000 annehmen und das Slave-Datenbit 28 den
Wert binär
1 annimmt, senden die Vergleichsschaltungsanordnungen 411 und 413 Signale
an das UND-Gatter 415. Dieses erzeugt auf der Leitung 407 ein
Vertikal-Sync-Erfasst-Signal. Ähnlich erscheint
auf der Leitung 409 ein Horizontal-Sync-Erfasst-Signal, wenn die Slave-Adressenbits
[15:0] das 0XF004 an die Vergleichsschaltungsanordnung 417 liefern.
-
18 zeigt
eine Videoabtastzeile für
das Paket-Zoom-Portadressenabbild 410 gemäß der vorliegenden
Erfindung. Das Zoom-Port-Adressenabbild 410 enthält als die
Bezugszeichen 414 bis 424 ausführlich den Isochron-Paket-Anfangsblock 412,
der bei der Adresse 0XF000 beginnt, und den Isochron-Paket-Datenraum, der
bei der Adresse 0XF004 beginnt und bei der Adresse 0XFFFF endet.
Jedes isochrone Paket wird in den Zoom-Port-Adressenraum übertragen,
wobei das Anfangsblock-Quadlet an die Adresse 0XF000, das erste Datennutzinformations-Quadlet 428 an
die Adresse 0XF004 und die verbleibenden Quadlets in dem Paket an die
nachfolgenden Adressen übertragen
werden, bis das Ende der Paketnutzinformationsdaten für N Quadlets lange
Pakete an die Adresse (0XF000 + (N – 1)) übertragen wird.
-
18 zeigt,
dass die vorliegende Erfindung das autonome Anzeigen des angezeigten
Videobilds ohne Software-Unterstützung
in einem Fenster, dessen Management durch die Hardware ausgeführt wird,
ermöglicht.
Die vorliegende Erfindung ermöglicht,
dass Rohdaten, die in einem kompatiblen Format als Eingangsdaten
in die Video-Controller-Chips gehen, über den IEEE-1394-Bus versandt
werden und in den Zoom-Port fließen. Dies ermöglicht das
autonome Anzeigen von Daten, während
die horizontale und die vertikale Teilbild-Sync aufrechterhalten
werden.
-
Im
Betrieb wird der Zoom-Video-Port in einen bestimmten Adressenraum
abgebildet. Die Anfangsblöcke
enthalten Teilbild-Sync-Informationen oder -Signale. Durch Aufbau
der richtigen Steuerstrukturen, die bewirken, dass die Anfangsblockpaketdaten
anhand der Adresse zu einer besonderen Adresse übertragen werden, sucht die
Logik nach bestimmten Feldern. Im Fall der Sony-Kamera, die der
IEEE-P1394-Digitalkameraspezifikation entspricht, gibt ein Bit in
dem Isochron-Anfangsblock-Sync-Feld den Beginn eines Videoteilbilds an.
Durch Decodieren dieses besonderen Isochron-Anfangsblock-Sync-Feldbits
wird ein vertikales Sync-Signal erzeugt. Diese Informationen können zum
Synchronisieren des Empfangs der Zoom-Port-Daten an dem Zoom-Port
verwendet werden.
-
Es
gibt zwei Fälle
dieser Implementierung, einen für
die horizontale Sync und den anderen für die vertikale Sync. Für die vertikale
Sync erfordert die Decodierung eine besondere Adresse und ein besonderes
Isochron-Anfangsblock-Sync-Bit.
Die horizontale Sync wird durch Decodieren einer weiteren besonderen
Adresse erzeugt.
-
Der
Video-Zoom-Aspekt der vorliegenden Erfindung schafft die Fähigkeit,
aus den Paketdaten, die eingebettete Steuerinformationen wie etwa
codiertes Video enthalten, autonom Steuerinformationen wie etwa
horizontale oder vertikale Sync-Signale zu entnehmen. Die Vergleichslogik 411 und 413 erfasst Übertragungen der
spezifischen Datenwerte zu einer spezifischen Zieladresse.
-
Außerdem schafft
die vorliegende Erfindung Software- oder Hardware-Steuerstrukturen,
die die richtigen Zieladressen für
verschiedene Segmente der Paketdaten angeben. Die DMA-Struktur ermöglicht,
dass die Daten gesammelt oder gestreut werden, so dass ein besonderes
Paket in verschiedene Zieladressen verschiedener Längen zerlegt
wird. Dementsprechend kann die vorliegende Erfindung Anfangsblockfelder
an eine besondere Adresse und Datenfelder an eine andere Adresse
schreiben. Unter Verwendung dieses Merkmals steuert die vorliegende
Erfindung, welche Abschnitte der PCI-Schnittstellenvorrichtung welche
Adressen sehen.
-
Ferner
schafft die vorliegende Erfindung programmierbare Zähler, die
dazu verwendet werden, die Steuersignalerzeugung auf Mehrfachzugriffe
auf besondere Adressenplätze
und/oder Datenmuster zu stützen. Dies
erfolgt durch die Verwendung von Zählern, um die Option mehrerer
Pakete pro horizontale Zeile oder zwischen horizontalen Syncs zu
geben. Dementsprechend kann sofort nach dem vertikalen Sync-Signal
ein horizontales Sync-Signal erzeugt werden. Dies ermöglicht,
die Anzahl zu zählen,
in der ein System eine besondere Adresse durchläuft. Zum Beispiel erzeugt das
System erst nach vier Iterationen durch die Adresse ein weiteres horizontales
Sync-Signal. Dies ermöglicht,
gemäß der besonderen
Kamera, Auflösung
usw. vier Pakete über die
horizontale Zeile zu packen.
-
19 zeigt
das Verfahren des Abbildens eines einzelnen Videopakets auf mehrere
Videoabtastzeilen unter Verwendung des Zoom-Port-Adressenabbilds 410.
Das Zoom-Port-Adressen-Abbild 410 enthält den Isochron-Paketanfangsblock 412,
der an die Isochron-Paketdaten 414 angrenzt. Die Speicherräume 416 bis 424 sind
wie in 17 beschrieben. Das Zoom-Video-Isochron-Paket 440 enthält das Anfangsblock-Quadlet 0,
das in dem Isochron-Anfangsblock-Sync-Feld ein Teilbild-Startbit enthalten
kann. Das Quadlet 1 ist das erste Videodaten-Nutzinformations-Quadlet, das den Beginn
der Videoabtastung A angibt. Durch das Schreiben dieses Quadlets
an die Adresse 0XF004 wird ein horizontales Sync-Signal erzeugt. Ähnlich gibt das Schreiben des
Daten-Quadlets 442 an die Ad resse 0XF004 den Beginn der
Videoabtastung A + 1 durch Erzeugen einer horizontalen Sync an.
Die Datenschreibvorgänge,
die bei 0XF000 beginnen und bis [0XF000 + (N – 1)] gehen, sind tatsächlich diejenigen
Daten, die über
den Zoom-Video-Port
ausgegeben werden (d. h. die Zoom-Daten). Der Anfangsblock wird
entfernt und ist nicht Teil des Datenfelds.
-
Dementsprechend
erzeugt dieser Fall eine vertikale Sync und eine horizontale Sync
für das
erste Paket in einem Videoteilbild. Die folgenden Pakete bedeuten
die folgenden Abtastzeilen, die den Rest der Videoteilbild-Anfangsblöcke ausfüllen, wobei
die Anfangsblöcke
aber die Sync-Felder nicht enthalten. Die Daten fließen für alle Pakete
auf die gleiche Weise, wobei sie jeweils bei dem Punkt 0XF000 beginnen,
wo der Anfangsblock ist, und wobei die vertikale Sync nicht eingestellt
wird, wenn es in dem Anfangsblock kein Sync-Bit gibt. Beim Schreiben
in F004 wird die horizontale Sync erzeugt. Dies erzeugt den Beginn
einer Abtastzeile, so dass die verbleibenden Daten als Teil der
Abtastzeile herausfließen.
-
Noch
weiter gibt es die Situation mehrerer Abtastzeilen pro Paket. Um
diese zu behandeln, werden die Paketsteuerlisten verwendet.
-
Die
DMA-Maschine 74 der vorliegenden Erfindung wird durch Datenstrukturen
gesteuert, die Paketsteuerlisten oder PCLs genannt werden. Die PCL
enthält
Befehlsinformationen, die der DMA bei Bedarf aus dem Speicher holt.
Diese Befehle teilen dem DMA die Quellen und Ziele für die Daten
und wie viele Bytes zu übertragen
sind mit. Einige Befehle bewegen Datenstücke zwischen den IEEE-1394-Sende-FIFOs
und dem PCI-Bus 24 oder zwischen dem Allgemein-Empfangs-FIFO 80 und
dem PCI-Bus 24. Ein weiterer Befehl bewegt Daten zwischen
dem PCI-Bus 24 und dem Hilfs-Port-Lokalbus 26.
Weitere Befehle sind für
sekundäre Funktionen
und werden Hilfsbefehle genannt. Diese Hilfsbefehle ermöglichen,
dass der DMA Quadlets angegebener Daten an irgendeiner PCI-Adresse
direkt liest oder direkt speichert, und ermöglichen eine bedingte Verzweigung
unter Verwendung der PCLs. Die beabsichtigte Verwendung ist zu ermöglichen,
dass der DMA spezielle Datenbewegungssteuerungen ausführt und
als ein Einzelprozessor wirkt, der in einer Autoboot-Sequenz PCLs
bauen kann. Der gesamte Umfang dieser Funktionalität ist nicht
reglementiert, wobei weitere Verwendungen des DMA entstehen werden.
-
Die
Anwendungssoftware der vorliegenden Erfindung programmiert den Betrieb
eines DMA-Kanals unter Verwendung der PCL-Datenstruktur, die im
Host-Speicher liegt.
Die Anwendungssoftware ist verantwortlich für die Konstruktion der PCL
und für
das Zuordnen von Speicher für
ihre Speicherung. Eine PCL kann als eine ununterbrochene Menge von
Speicherplätzen
organisiert sein, die die Befehle, die Steuerparameter und die Datenpufferzeiger
enthalten, die ein DMA-Kanal zum Übertragen eines IEEE-1394-Datenpakets
oder zum Bewegen von Daten zwischen dem PCI-Bus 24 und
dem Hilfs-Port-Lokalbus 26 oder zum Ausführen eines oder
mehrerer Hilfsbefehle benötigt.
Die Gesamtzahl der Speicherplätze,
die eine PCL benötigt,
ist in der momentanen Implementierung allgemein auf 32 Quadlets
begrenzt.
-
Als
eine Minimalanforderung ist die PCL-Startadresse auf eine Quadlet-Grenze ausgerichtet.
Für die optimale
DMA-Leistung wird empfohlen, dass die PCL-Startadresse eine Zeile
an einer Cache-Zeilengrenze ist. Die Datenpufferzeiger können auf
eine beliebige Byte-Grenze ausgerichtet sein. Für die optimale DMA-Leistung
richtet die vorliegende Erfindung die Datenpufferzeiger auf eine
Cache-Zeilengrenze aus. Falls dies nicht möglich ist, sollte die zweitoptimale
Datenpufferzeigerausrichtung an einer Quadlet-Grenze sein. Die Summe
der Größen der
Datenpuffer, auf die die PCL zeigt, ist für eine IEEE-1394-Bitrate von
100 MBit/s auf etwa ein Kilobit beschränkt oder für eine IEEE-1394-Bitrate von
200 MBit/s auf etwa 2 Kilobits begrenzt.
-
In
der vorliegenden Ausführungsform
holt der aktive DMA-Kanal die Befehle und Steuerparameter von der
PCL und verwendet sie, um den Kanal selbst zu konfigurieren, um
den Befehl bei der Übertragung
auszuführen.
-
Die
Anwendungssoftware-Programme ermöglichen,
dass der DMA-Kanal durch Verkettung mehrerer Paketsteuerlisten zu
einer PCL-Listenwarteschlange mehrere IEEE-1394-Datenpakete überträgt. Die
vorliegende Erfindung konstruiert die Warteschlange dadurch, dass
sie das Feld für
die nächste
Adresse jeder PCL in der Weise einstellt, dass es auf die Startadresse
der nächsten
PCL im Speicher zeigt. Die letzte PCL in der Warteschlange kann
in der Weise programmiert werden, dass sie entweder die DMA-Verarbeitung
anhält,
auf den Start der Warteschlange zurückzeigt oder auf eine neue
Warteschlange zeigt. Irgendwo in einer PCL-Warteschlange, jedoch
nicht in beiden, können
PCLs eingebettet sein, die Hilfsbefehle enthalten. Eine PCL-Warteschlange
kann Empfangs- und Sende- und Hilfsbefehle miteinander mischen;
allerdings muss wegen des möglichen
Pipeline-Wesens von Sendungen und der Möglichkeit eines Paketwiederholungsversuchs
auf einen Asynchron-Sendebefehl ein weiterer Asynchron-Sendebefehl
folgen. Andererseits schließt
das Setzen des "Warte-auf-Status"-Bits in dem Asynchron-Sendebefehl
diese Anforderung aus.
-
20 veranschaulicht
ein Beispiel einer verketteten Liste von Paketsteuerlisten gemäß der vorliegenden
Ausführungsform
der Erfindung. Die PCI-Warteschlange 450 in 20 beginnt
bei der Startadresse 452. Der Verfahrensablauf geht von
der Startadresse 452 zur Leer-Paketsteuerliste 454.
Die Leer-Paketsteuerliste 454 sendet den Verfahrensablauf
zur Übertragung
der Befehls-Paketsteuerliste 456. Bei der Übertragung
der Befehls-Paketsteuerliste 0 gehen der Datenpuffer-Zählbefehl
und die Datenpuffer-Adresseninformationen zu den Datenpuffern 460, 462,
z. B. zum Datenpuffer 464, weiter, was in diesem Beispiel
vierzehn Datenpuffer in Verwendung angibt.
-
Die Übertragungsbefehls-Paketsteuerliste
0 beim Bezugszeichen 456 enthält die Adresse 466 der nächsten Liste,
die zu der Hilfsbefehls-Paketsteuerliste 1 beim Bezugszeichen 470 geht.
Die Hilfsbefehls-Paketsteuerliste 1 beim Bezugszeichen 470 enthält einen
Ladebefehl 472, eine Quelladresse am Platz 474 und einen
Speicherbefehl am Platz 476. Der Ladebefehl 472 geht
zum Datenregister 478, das das DMA-Register 480 versorgt.
Der Speicher-1-Befehl 476 liefert eine Eingabe in den Speicherplatz 482.
Außerdem
enthält
die Hilfsbefehls-Paketsteuerliste 1 beim Bezugszeichen 470,
wenn sie wahr ist, die Zieladresse 484, die die PCI-Verfahrenssteuerung
bedingt zur Übertragungsbefehls-Paketsteuerliste
2 beim Bezugszeichen 486 sendet. Die Übertragungsbefehls-Paketsteuerliste
2 beim Bezugszeichen 486 enthält die Adresse 488 der
nächsten
Liste, die, wie mit dem Bezugszeichen 490 bezeichnet ist,
zu weiteren PCIs geht, während
die Datenzählung
und die Datenpufferadressen 492 und dergleichen zum Datenpuffer 494 und
dergleichen gehen. Falls die Zieladresse 484, falls sie
wahr ist, den Verfahrensablauf der PCI-Warteschlange steuert, geht
die Adresse 468 der nächsten
Liste zur Übertragungsbefehls-Paketsteuerliste
2 beim Bezugszeichen 486. Daraufhin gehen diese Informationen
von der Adresse 488 der nächsten Liste zu anderen PCIs,
wie sie mit dem Bezugszeichen 490 bezeichnet sind, während die
Datenpuffer-0-Adresse
und die Zählbefehlsinformationen
zu dem Datenpuffer 1 und dergleichen gehen.
-
Da
keine vorherige PCL vorhanden ist, ordnet die Host-CPU 44 im
Betrieb typisch Speicher für
den Bau einer Paketsteuerliste und einer Leeradresse der nächsten PCL
zu. Die Leeradresse der nächsten
PCL liefert einen Speicherplatz, der ein Zeiger auf den Beginn der
ersten vollen PCL, d. h. PCL 0, ist. Daraufhin baut der Host-Prozessor
die gewünschte
Liste der PCLs auf, um die Operation mit der Datenübertragung
oder einer Art Hilfsbefehl wie etwa den Hilfsbefehlen, die tatsächliche
prozessorähnliche
Befehle ausführen,
auszuführen.
-
Die
Räume in
den Adressen der nächsten
PCL umfassen eine Fehleradresse, einen Reserveplatz und den Status.
Das nächste
Paar ist der Steuer-Stat, die Übertragungszählung. Die
nächste
nach diesen ist die Datenpufferadresse. Diese zwei Langwörter bilden
eine Anweisungs- oder Datenübertragung
zu einem Datenpuffer. Das Übertragungsbeispiel
ist eine Pufferadresse, die auf einen Datenpufferplatz in dem Speicher
zeigt, zu dem oder von dem die Daten übertragen werden sollen. Falls
ununterbrochen Daten übertragen
werden sollen, ermöglicht
die vorliegende Ausführungsform
die Bildung einer großen
Steuerschleife für
die zusammenhängende
Datenübertragung.
-
Die 21 bis 25 und
die folgende Diskussion beschreiben den Betrieb der vorliegenden
Erfindung für
eine Empfangs-, eine Sende-, eine PCI-zu/von-Lokal bus- oder eine
Hilfsoperation. Wie 21 zeigt, beginnt
der Verfahrensablauf in einer Empfangsoperation für isochrone
und asynchrone Daten im GRF 80 dadurch, dass geprüft wird,
um zu sehen, ob eine Wartebedingung vorhanden ist. Wie 23 zeigt,
gibt es für eine
isochrone Sendung keine Wartebedingung, falls die Kanalfreigabe
gleich 1 ist, die Sendefunktion bereit ist und das zyklische Startbit
OK ist. Durch die Warteauswahlbits des Datenpuffersteuerworts null
wird eine Wartebedingung bestimmt. Wenn eine Wartebedingung nicht
mehr vorhanden ist, tritt der Prozessor in eine Datenbewegungsphase
ein. Hier wird in eine Schleife eingetreten, wo die momentane Übertragungszählung geprüft wird,
um zu sehen, ob sie zu null geworden ist. Wenn das der Fall ist,
wird eine Prüfung
vorgenommen, um zu sehen, ob dies der letzte Datenpuffer der PCL-Pufferliste
ist. Falls der Datenpuffer der letzte Datenpuffer ist und durch
den Sicherungsschicht-Controller, der ein Spezialsteuer-Token-Wort
in den GRF-FIFO schreibt, keine Paketgrenze angegeben worden ist,
ist ein Fehler aufgetreten, da mehr Paketdaten gesendet werden sollen,
als der Puffer halten kann. In diesem Fall wird das Paketfehlerbit
in dem DMA-Statusregister gesetzt, wobei der DMA die verbleibenden
Daten bis zu der Paketgrenze entleert. Falls die momentane Übertragungszählung auf
null dekrementiert worden ist und es einen weiteren Puffer in der
PCL-Liste gibt, erfasst der DMA die neue Pufferadresse und die neue Übertragungszählung und
fährt mit
der Übertragung
fort.
-
Während der
DMA Daten von dem Empfangs-FIFO zu der PCI-Schnittstelle bewegt,
wartet er darauf, dass der FIFO ausreichend Daten hat, bevor er
anfordert, dass der PCI-Bus-Master eine Übertragung ausführt. Dieser Übertragungsschwellenwert
ist jedes Mal erreicht, wenn eine von zwei Bedingungen erfüllt ist.
Der DMA fordert jedes Mal eine Übertragung
des PCI-Masters an, wenn die Anzahl der Bytes in dem Empfangs-FIFO eine "Hochwassermarke" erreicht. Diese
Hochwassermarke ist gleich dem größeren des Cache-Zeilengrößenregisters
oder des Felds für
die untere Grenze des globalen DMA-Registers. Der DMA erhält von der
Verbindung Informationen über
die Größe der Daten
eines Pakets, wenn das Paket erstmals durch den Längenschicht-Controller
in den FIFO geschrieben wird. Er verwendet diese Übertragungszählung, um
zu bestimmen, ob die Daten in dem FIFO die verbleibenden Daten in
dem Paket sind, wobei er eine Übertragung
des PCI-Masters anfordert, bei der die Übertragungszählung gleich
diesem Rest ist, falls die Größe kleiner
als die Hochwassermarke ist. Während
der DMA Daten überträgt, wird
das Datenpuffer-Startadressenregister in den datengepufferten Übertragungslängenbits
in dem DMA-Steuerregister aktualisiert, so dass es den momentanen
Zustand der Übertragung
widerspiegelt.
-
Wenn
der Sicherungsschicht-Controller das Ende eines Pakets feststellt,
schreibt er in den FIFO ein Spezialsteuer-Token-Wort, dass das Ende
eines Pakets markiert. In dieses Steuerwort sind Statusbits eingebettet,
die den Abschlusszustand des Pakets auf dem Bus angeben. Der DMA
verwendet diese Paket-Ende-Marke,
um die Datenübertragung
von dem FIFO zu dem PCI-Bus abzuschließen. Falls die Paket-Ende-Marke
eine IEEE-1394-Belegt-Quittierung angibt, erfasst der DMA die erste
Pufferadresse der PCL und die Übertragungszählung erneut
und beginnt er die Paketübertragung
von vorn. Falls von der Paket-Ende-Marke kein Belegt-Status angegeben
wird, wird das DMA-Statusregister mit dem von dem Sicherungsschicht-Controller
in der Paket-Ende-Marke übergebenen
Quittierungsstatus geladen und der Paketabschluss gesetzt. Daraufhin
wird er zusammen mit der Anzahl der für diese PCL übertragenen
Bits in dem PCL-Statuswort in den Speicher geschrieben. Falls das
INT-Bit für
den Datenpuffersteuerungs/Byte-Zählungs-Befehl
in der PCL gesetzt ist, wird eine Unterbrechung signalisiert und
in dem entsprechenden DMA-PCL-Bit in dem Unterbrechungsstatusregister
zwischengespeichert. Falls der Befehl ein Empfangs- und Aktualisierungsbefehl
war, werden die verbleibende Übertragungszählung und
die nächste
Pufferadresse in die PCL geschrieben. Daraufhin bestimmt der DMA,
indem er das Feld der Adresse der nächsten Liste der momentanen
PCL holt, ob eine weitere PCL mit der momentanen PCL verkettet worden
ist. Falls es eine verkettete PCL gibt, macht der DMA die verkettete
PCL zu der momentanen PCL, wobei er die Ausführung fortsetzt. Falls mit
der momentanen PCL keine weitere PCL verkettet worden ist, werden
das Verkettungs- und das Belegt-Bit in dem DMA-Steuerregister gelöscht, wird
für diesen
Kanal eine DMA-Angehalten-Unterbrechung mit dem zugeord neten Status
in dem Unterbrechungsstatusregister erzeugt und geht der Kanal in
den Leerlauf über.
-
Wie 22 zeigt, wird für die DMA-Asynchron-Sendeoperation
ein asynchrones Senden bestimmt, nachdem ein gültiger PCL-Zeiger in das Paketsteuerlisten-Startadressenregister
geschrieben worden ist und das Kanalfreigabe- und das Verkettungsbit
gesetzt worden sind. Das Gesamtziel des asynchronen Paketprozessors
ist es, dem momentanen Paket, das durch den Sicherungsschicht-Controller
von dem FIFO an den IEEE-1394-Bus übertragen wird, ein Paket voraus
zu sein. Vom Standpunkt des DMA aus war dieses Paket auf dem Bus
ein vorangehendes Paket. Es wird angenommen, dass irgendein von
dem Sicherungsschicht-Controller
berichteter Status für
dieses vorangehende Paket ist; allerdings verhindert das Setzen
des "Warte-auf-Status"-Bits in dem "Datenpuffer/Bytezählung/Befehl" in der PCL diese
Pipeline-Operation. Der DMA hält
die Adresse der Startadresse der vorangehenden Paketsteuerliste
in dem Register für
die Startadresse der vorangehenden Paketssteuerliste/temporären Register.
Der "vorangehende
PCL gültig" genannte Merker
wird durch den DMA in dem globalen DMA-Register gehalten, um zu
verfolgen, ob er eine gespeicherte gültige Adresse besitzt. Eine
Sendeoperation für
einen asynchronen Kanal findet dadurch statt, dass geprüft wird,
um zu sehen, ob eine Wartebedingung vorhanden ist. Eine Wartebedingung
ist durch die Warteauswahlbits des "Datenpuffersteuerung/Bytezählung/Befehls" in der PCL bestimmt.
Durch den DMA wird ein "Wiederholungsversuch" genannter Merker
in dem globalen DMA-Register gehalten. Der DMA verwendet diesen
Merker, um zu verfolgen, wann die Wartebedingung ausgewertet werden
sollte, da diese Wartebedingungen während Wiederholungsversuchen
ignoriert werden.
-
Wenn
die Wartebedingung nicht mehr vorhanden ist, schreibt der DMA in
den FIFO ein Steuer-Token, das den Beginn eines Pakets angibt, wobei
er in eine Datenbewegungsphase eintritt. Hier wird in eine Schleife eingetreten,
in der die momentane Übertragungszählung geprüft wird,
um zu sehen, ob sie zu null geworden ist. Wenn das der Fall ist,
wird eine Prüfung
vorgenommen, um zu sehen, ob dies der letzte Datenpuffer der PCL-Pufferliste
ist. Falls es einen weiteren Puffer in der PCL-Liste gibt, erfasst
der DMA die neue Pufferadresse und Übertragungszählung und
fährt mit
der Übertragung
fort. Während
der DMA Daten von der PCI-Schnittstelle
an den Asynchron-Sende-FIFO überträgt, wartet
er darauf, dass der FIFO genug Raum hat, bevor er anfordert, dass
der PCI-Bus-Master eine Leseübertragung
ausführt.
Der DMA fordert eine Übertragung
des PCI-Masters mit der Bitzählung
gleich der Hochwassermarke an, wie sie hinsichtlich der DMA-Empfangsoperation
definiert ist. Während
der DMA Daten überträgt, werden
das Datenpuffer-Startadressenregisterbit und das Datenpuffer-Übertragungsverknüpfungsbit
in dem DMA-Steuerregister aktualisiert, so dass sie den momentanen
Zustand der Übertragung
widerspiegeln.
-
Wenn
das letzte Datenbit aus einem Puffer an den Asynchron-Sende-FIFO übertragen
worden ist und der Puffer, wie durch das Letzter-Puffer-Bit in dem
Steuerungs/Bytezählungs-PCL-Wort
angegeben ist, der letzte der PCL-Liste ist, weiß der DMA, dass das Ende des
Pakets erreicht worden ist. Falls die Adresse des vorangehenden
Pakets gültig
ist, verzögert
der DMA den Prüfstatus,
bis ein volles Paket in die Warteschlange des Sende-FIFO eingereiht
worden ist. Auf diese Weise ist der Rückgabestatus immer für das vorangehende Paket,
es sei denn, dass das Warte-auf-Status-Bit gesetzt ist. Wenn es
nur ein Paket in der Übertragung
gibt, sind das vorausgehende und das momentane Paket dasselbe. Wenn
die Adresse des vorangehenden Pakets gültig ist, betrachtet der DMA
den Paketzähler.
Wenn durch den Sicherungsschicht-Controller ein Paket auf den IEEE-1394-Bus
gesendet worden ist und der Status für dieses Paket gültig ist,
dekrementiert der Sicherungsschicht-Controller den Paketzähler. Der
DMA dreht sich, wobei er darauf wartet, dass der Paketzähler zu null
wird, was angibt. dass für
das vorangehende Paket der Gültig-Status
verfügbar
ist. Falls der Status angibt, dass das vorangehende Paket erneut
versucht werden soll, stellt der DMA für den Sicherungsschicht-Controller
eine FIFO-Entleerungsanforderung ein, woraufhin er wartet, dass
der Sicherungsschicht-Controller den Abschluss des FIFO-Entleerens durch
Entfernung der Wiederholungsversuchangabe angibt. Daraufhin "geht" der DMA zu dem vorangehenden
Paket "zurück" und beginnt die Übertra gung
von vorn. Falls kein Wiederholungsversuch stattgefunden hat, aktualisiert
der DMA das DMA-Statusregister mit dem von dem Sicherungsschicht-Controller übergebenen
quittierten Status, setzt er das Paket-abgeschlossen und schreibt
er daraufhin den Abschlussstatus zusammen mit der Anzahl der für die momentan
aktive PCL übertragenen
Bits, die für
die vorangegangene PCL möglicherweise
nicht relevant ist, in dem Statuswort der vorangehenden PCL in den Speicher.
Falls das Unterbrechungsbit in der PCL gesetzt ist, wird die Unterbrechung
signalisiert und in dem entsprechenden Unterbrechungsstatusregisterbit
zwischengespeichert.
-
Wenn
der Status geprüft
worden ist, schreibt der DMA in den Sende-FIFO ein Spezialsteuer-Token, das
das Ende des Pakets markiert. Um für den Sicherungsschicht-Controller
anzugeben, dass durch den DMA das Paket-Ende geschrieben worden
ist, wird die Paketzählung
um eins inkrementiert. Die momentane PCL-Adresse wird als die vorangehende PCL-Adresse
gesichert, und das Register der Startadresse der vorangehenden Paketsteuerliste
und ein "Vorangehend-Gültig"-Merker in dem globalen DMA-Register
werden gesetzt. Daraufhin bestimmt der DMA durch Holen des Adressenwerts
der nächsten
Liste, ob mit der momentanen PCL eine weitere PCL verknüpft worden
ist. Wenn sie gültig
ist, macht die DMA diese zu der Adresse der momentanen PCL und setzt
die Ausführung
fort. Wenn sie nicht gültig
ist oder wenn das Warte-auf-Status-Bit gesetzt ist, wartet der DMA
darauf, dass durch den Sicherungsschicht-Controller das momentane
Paket übertragen
wird. Wenn, wie durch den auf null dekrementierten Paketzähler angegeben
wird, ein Gültig-Status verfügbar ist,
prüft der
DMA, um zu sehen, ob das Paket, wie durch einen IEEE-1394-Belegt-Status
angegeben wird, erneut versucht werden muss. Wenn das der Fall ist,
wird der FIFO wie zuvor erwähnt
entleert und die Sendung erneut versucht.
-
Falls
es, wie durch den Sicherungsschicht-Controller angegeben wird, eine
Sendezeitüberschreitung, einen
Wiederholungsversuch-Überlauf
oder einen FIFO-Unterlauf
gegeben hat, wird das Paketfehlerbit in dem DMA-Statusregister zusammen
mit dem Quittierungsstatus gesetzt. Daraufhin wird der Status in
der PCL aktualisiert. Im Fall einer Sendezeitüberschreitung oder eines Wiederholungsversuchsüberlaufs
kann es möglich sein,
dass der Zielknoten nicht mehr antwortet. Der DMA behandelt diese
Situation dadurch, dass er ermöglicht,
die PCL(s), die den Datenstrom für
diesen besonderen Zielknoten bildet bzw. bilden, zu überspringen. Die
Software kann den Eintrag des nächsten
PCL-Stroms der PCL so einstellen, dass er auf die erste PCL zu dem
nächsten
Sendedatenstrom zeigt (d. h. auf die nächsten asynchronen Sendungen
zu einem anderen 1394-Knoten zeigt). Wenn die Adresse des nächsten PCL-Stroms
gültig
ist, setzt der DMA die Ausführung
mit dieser PCL fort. Falls diese Adresse nicht gültig ist, geht der DMA-Kanal zu irgendeinem
Zeitpunkt, zu dem er feststellt, dass die Adresse der nächsten PCL
als ungültig
gekennzeichnet ist, in den Leerlauf über. Falls dieses Merkmals
des nächsten
Stroms nicht verwendet werden soll, sollte dieser Wert auf den gleichen
Wert wie die Adresse der nächsten
Liste gesetzt werden. Falls der DMA das Absenden eines DMA-Halt-Unterbrechungsstatus
anhält
und der Eintrag des nächsten
PCL-Stroms ungültig
ist, ist ein Neuschreiben des nächsten PCL-Stroms
erforderlich, da der DMA in dem Erhalte-Nächsten-Strom-Zustand ist und
der DMA die Adresse der nächsten
Liste ignoriert. Somit ist es erforderlich, die "Adresse der nächsten Liste" und den "nächsten PCL-Strom" immer auf die gleiche
Adresse zu setzen, falls das Merkmal des nächsten Stroms nicht verwendet werden
soll, um ein Hängen
in irgendeinem Asynchron-Sendekanal zu verhindern, was wegen eines
Fehlers den Eintrag des nächsten
PCL-Stroms aufruft.
-
24 zeigt einen Ablaufplan ähnlich dem
oben für
die Asynchron- und für
die Isochron-Sendeoperation beschriebenen, wie er aber auf die Hilfsoperationen
der DMA-Maschine 74 angewendet wird.
-
Wie 25 zeigt,
steuert die PCI-LOCAL-Bus- und die LOCAL-Bus-PCI-Übertragungsoperation
die Datenübertragung
zwischen dem PCI-Bus und dem LOCAL-Bus. Wie für andere Übertragungsbefehle wie etwa
Sendungen werden die PCI-Adresse und die Anzahl der zu übertragenden
Bits aus dem ctl/bit_cnt/cmd-Wort bzw aus den ctl/bit_cnt/cmd-Wörtern des
PCL-data-buf in der PCL abgeleitet. Der Unterschied ist, dass das
Ziel oder die Quelle der Über tragung
nicht der FIFO, sondern der LOCAL-Bus ist. Die LOCAL-Bus-Adresse
wird aus dem AUX ADR-Register erzeugt (siehe Hardware-Register-Definitionen).
-
Dadurch,
dass geprüft
wird, um zu sehen, ob eine Wartebedingung vorhanden ist, findet
eine PCI-zu/von-LOCAL-Operation statt. Die Wartebedingung ist durch
die Warteauswahlbits des ctl/bit_cnt/cmd des data buf0 am PCL-Versatz
0x18 bestimmt. Wenn die Wartebedingungen nicht mehr vorhanden sind,
tritt der DMA in eine Schleife ein, wo die momentane Übertragungszählung geprüft wird,
um zu sehen, ob sie zu null geworden ist. Wenn das der Fall ist,
wird eine Prüfung
vorgenommen, um zu sehen, ob dies der letzte Datenpuffer der PCL-Pufferliste
ist. Wenn ein weiterer Puffer in der PCL-Liste ist, erfasst der
DMA die neue Pufferadresse und Übertragungszählung und
fährt mit
der Übertragung
fort. Während
der DMA Daten überträgt, werden
das Datenpuffer-Startadressenregisterbit und das Datenpuffer-Übertragungslängenbit
in dem DMA-Steuerregister aktualisiert, so dass sie den momentanen Übertragungszustand
widerspiegeln.
-
Wenn
das letzte Datenbit von einem Puffer zu/von dem LOCAL-Bus übertragen
worden ist und der Puffer, wie durch das LAST-BUF-Bit des ctl/bit_cnt-PCL-Worts angegeben wird,
der letzte der PCL-Liste ist, weiß der DMA, dass das Ende der Übertragung
erreicht ist. Der DMA aktualisiert das DMA-Statusregister mit dem
Status 0x0001, das PKT-CMP wird gesetzt und daraufhin zusammen mit
der Anzahl der übertragenen Bytes
am PCL-Versatz 0xC in das PCL-Statuswort geschrieben. Wenn das INT-Bit
beim PCL-Versatz 0x18 in dem ctl/bit_cnt/cmd des data buf0 gesetzt
ist, wird eine Unterbrechung signalisiert und in dem entsprechenden (DMA_PCL[x])-Bit
in dem Unterbrechungsstatusregister zwischengespeichert.
-
Daraufhin
bestimmt der DMA durch Holen der Adresse der nächsten Liste (PCL-Versatz 0x00),
ob mit der momentanen PCL eine weitere PCL verkettet worden ist.
Wenn es gültig
ist, was durch das Bit 0 = 0 angegeben wird, macht der DMA diese
zu der Adresse der momentanen PCL, wobei er die Ausführung wie
gezeigt fortsetzt. Falls keine weitere PCL mit der momentanen PCL
verkettet worden ist, was durch das Bit 0 = 1 angegeben wird, werden
das Verkettungs- und das BSY-Bit in dem DMA-Steuerregister gelöscht, wobei
für diesen
Kanal eine DMA-Angehalten-Unterbrechung mit dem zugeordneten Status
(DMA_HLT[x]) in dem Unterbrechungsstatusregister erzeugt wird, woraufhin
der Kanal in den Leerlauf übergeht.
-
26 zeigt einen höheren FIFO-Funktionsblockschaltplan 500 zur
Beschreibung des Betriebs der FIFOs für den GRF 80, für den Asynchron-Sende-FIFO 82 und
für den
Isochron-Sende-FIFO 84. Die FIFO-Logik der vorliegenden
Erfindung enthält
eine Taktdomäne 502 der
Verbindungsseite und eine Taktdomäne 504 der PCI-Seite.
Die FIFO-Steuerungs- und -Statusregister 88 in der Taktdomäne 504 der
PCI-Seite sind echt und werden durch die PCI-Busschnittstellenlogik
geschrieben. Außerdem
liefern die FIFO-Controller-Statusregister 88 eine Eingabe
in die Zeigeradressen-Abbildungslogik 86. Die Zeigeradressen-Abbildungslogik 86 erzeugt
RAM-Adressenabbildungsversätze
zu den FIFO-Lese-Schreibzeigerpaaren.
-
Der
Dualport-RAM 501 stellt die Datenspeicherung für den GRF 80,
für den
Asynchron-Sende-FIFO 82 und für den Isochron-Sende-FIFO 84 bereit
und überspannt
die Begrenzung zwischen der Taktdomäne 502 der Verbindungsseite
und der Taktdomäne 504 der
PCI-Seite. Eine Taktdomänenzeiger-Übersetzungslogik 506 der
Taktdomäne 504 der
PCI-Seite erzeugt eine Eingabe in die DMA-FIFO-Belegungsstatuslogik 508. Die DMA-FIFO-Belegungsstatuslogik 508 erzeugt
für das
DMA-Logiksignal 510 den FIFO-Status. In der Taktdomäne 502 auf
der Verbindungsseite liefert die Taktdomänenzeiger-Übersetzungslogik 512 eine
Eingabe in die 1394-FIFO-Sender- und -Empfänger-Belegungsstatuslogik 514,
die einen FIFO-Status für
das 1394-Sende-Empfangs-Logiksignal 516 erzeugt.
-
Der
Dualport-RAM 501 empfängt
Adresseneingaben vom Multiplexer 518 und vom Multiplexer 520. Der
Multiplexer 518 empfängt
eine Eingabe vom Allgemein-Empfangs-Schreibzeiger 522,
vom Asynchron-Sende-Lesezeiger 524 und vom Isochron-Sende-Lesezeiger 526.
Der Allgemein-Empfangs-Schreibzeiger 522 empfängt eine
Steuerung vom 1394-Empfänger
und von der Adressenabbil dungslogik. Der Asynchron-Sende-Lesezeiger 524 und
der Isochron-Sende-Lesezeiger 526 empfangen eine Steuerung
von der 1394-Sender- und Adressenabbildungslogik. Die Ausgaben vom
Allgemein-Empfangs-Schreibzeiger 522, vom Asynchron-Sende-Lesezeiger 524 und
vom Isochron-Sende-Lesezeiger 526 gehen sämtlich zur
Sender- und Empfänger-Belegungsstatuslogik 514,
zur Taktdomänen-Zeiger-Übersetzungslogik 506 und
zum Multiplexer 518.
-
Der
Allgemein-Empfangszeiger 528, der Asynchron-Sende-Schreibzeiger 530 und
der Isochron-Sende-Schreibzeiger 532 empfangen alle die
Steuerung von der DMA-Logik und Adressenabbildungslogik. Der Allgemein-Empfangs-Lesezeiger 528,
der Asynchron-Sende-Schreibzeiger 530 und der Isochron-Sende-Schreibzeiger 532 liefern
alle eine Ausgabe an die DMA-FIFO-Statuslogik 508, an die
Taktdomänen-Zeiger-Übersetzungslogik 512 und
an den Multiplexer 520.
-
Außerdem empfängt der
Dualport-RAM 501 entlang des 33-Bit-Datenbusses 534 die
Dateneingabe von der 1394-Empfangslogik, das Verbindungstakt-25-MHz-Signal 536 und
auf der Leitung 538 die Steuerung von der 1394-Sende/Empfangs-Logik.
Außerdem
geht die Steuerung von der 1394-Sende/Empfangs-Logik 538 zu
dem Adressenmultiplexer 518 auf der Verbindungsseite. Die
Byte-Packlogik 540 empfängt über die Steuerung
von der DMA-Logik
DMA-Lesedaten vom Host-Speicher und liefert an den 33-Bit-Datenbus 542 eine
Ausgabe, die zu dem Dateneingang auf der PCI-Seite des Dualport-RAM 501 geht.
Die Byte-Entpacklogik 544 empfängt vom 33-Bit-Bus 546 des
Datenausgangs der PCI-Seite des Dualport-RAM 501 eine Datenausgabe,
um DMA-Schreibdaten
an den Host-Speicher zu liefern. Außerdem geht die Steuerung von
der DMA-Logik zu der Byte-Entpacklogik 544, zum Multiplexer 520 und
zum Dualport-RAM 501. Eine Null zum 33-MHz-PCI-Taktsignal
geht zum Dualport-RAM 501.
-
Die
folgende Schreibung gibt in Verbindung mit der in 2 in
dem beigefügten
Text gegebenen Beschreibung weitere Einzelheiten hinsichtlich der
Funktion der FIFOs, des GRF 80, des Asynchron-Sende-FIFO 82 und
des Isochron-Sende-Schreib-FIFO 84.
-
Die
FIFO-Statuslogik 514 und 516 implementiert für jeden
Logik-FIFO die Logik, die zum Erzeugen eines Belegungsstatus erforderlich
ist. Die Verbindungstaktdomäne-PCI-Taktdomäne-Übersetzungslogik
tastet beim Berechnen des FIFO-Status der PCI-Seite den momentanen
Wert jedes Zeigers auf der Verbindungsseite des FIFO ab und übersetzt
diese Abtastwerte von der Verbindungstaktdomäne in die PCI-Taktdomäne. Jeder übersetzte
Zeiger der Verbindungsseite wird mit seinem entsprechenden Zeiger
der PCI-Seite verglichen, um für
jeden FIFO einen Belegungsstatus zu erzeugen. Dieser Status wird
von der DMA-Logik verwendet, um die Datenübertragung zwischen dem Host-Speicher
und dem FIFO im Takt zu halten. Ähnlich
tastet die PCI-Taktdomäne-Verbindungstaktdomäne-Übersetzungslogik bei der Berechnung
des FIFO-Status der Verbindungsseite den momentanen Wert jedes Zeigers
auf der PCI-Seite des FIFO ab und übersetzt diese Abtastwerte
aus der PCI-Taktdomäne
in die Verbindungstaktdomäne.
Jeder übersetzte
Zeiger der PCI-Seite wird mit seinem entsprechenden Zeiger der Verbindungsseite
verglichen, um für
jeden FIFO einen Belegungsstatus zu berechnen. Dieser Status wird
von der 1394-Sende-Empfangs-Logik verwendet, um die Datenübertragung zwischen
dem 1394-Bus und dem FIFO im Takt zu halten.
-
Die
Byte-Packlogik 540 implementiert die Logik zum Zusammensetzen
eines vollständigen
Quadlets unter Verwendung von Daten, die durch den aktiven DMA-Kanal
an Byte-ausgerichteten Adressen aus dem Host-Speicher gelesen wurden.
Vorzugsweise enthält
die Logik vier 8-Bit-breite Register und vier 8-zu-1-Multiplexer. Jedes Register-Mux-Paar
entspricht einer Bytespur. Der Eingang jedes Registers ist mit einer
Eingangs-Bytespur verbunden, die durch den aktiven DMA-Kanal zum
Host-Speicher geschaltet wird. Der Ausgang jedes Mux ist mit einer
Ausgangs-Bytespur verbunden, die den FIFO ansteuert. Für jeden
8-zu-1-Multiplexer
sind vier Eingänge
in einer eineindeutigen Entsprechung mit jedem Registerausgang zu
verbinden. Die verbleibenden vier Eingänge sind in einer eineindeutigen
Entsprechung mit jedem Registereingang verbunden. Diese Konfiguration
ermöglicht,
dass Bit-ausgerichtete DMA-Lesedaten von den vier Eingangs-Bytespuren
in einer anderen Reihenfolge zu den vier Ausgangs-Byte spuren koppelpunktgeschaltet
werden. Die Steuerung der Bytespur-Multiplexer erfolgt durch den
aktiven DMA-Lesekanal.
-
Die
Byte-Entpacklogik 544 implementiert die Logik, die erforderlich
ist, um die von dem FIFO gelesenen Quadlet-Daten in einzeln auswählbare Bytes
zu zerlegen, um sie durch den aktiven DMA-Kanal an Byte-ausgerichteten
Adressen in den Host-Speicher zu schreiben. Diese Logik besteht
aus vier 8-Bit-breiten Registern und aus vier 8-zu-1-Multiplexern.
Jedes Register-Mux-Paar entspricht einer Bytespur. Der Eingang jedes
Registers ist mit einer Eingangs-Bytespur verbunden, die von dem
FIFO angesteuert wird. Der Ausgang jedes Multiplexers ist mit einer
Ausgangs-Bytespur verbunden, die durch den DMA-Kanal zu dem Host-Speicher
geschaltet wird. Für
jeden der 8-zu-1-Multiplexer sind vier Eingänge in einer eineindeutigen
Entsprechung mit jedem Registerausgang verbunden. Die verbleibenden
vier Eingänge
sind in einer eineindeutigen Entsprechung mit jedem Registereingang
verbunden. Diese Konfiguration ermöglicht, dass das von dem FIFO
gelesene Quadlet in einer anderen Reihenfolge auf die Ausgangs-Bytespuren koppelpunktgeschaltet
wird. Die Steuerung der Bytespur-Multiplexer erfolgt durch den aktiven
DMA-Schreibkanal.
-
Obgleich
die vorliegende Erfindung ausführlich
beschrieben worden ist, können
an ihr selbstverständlich
verschiedene Änderung,
Ersetzungen und Abänderungen
vorgenommen werden, ohne von dem Umfang der beanspruchten Erfindung
abzuweichen.