-
Gebiet der Erfindung
-
Die
Erfindung bezieht sich allgemein auf den Entwurf integrierter Schaltkreise
und deren Architektur, und insbesondere auf eine Schnittstelle zur
Verbindung mehrerer Funktionsblöcke
untereinander in einem integrierten Schaltkreis.
-
Hintergrund der Erfindung
-
Computertechnologie
hat sich über
die letzten paar Jahrzehnte besonders stark weiterentwickelt. Während Computer
früher
ganze Räume
ausfüllten
und unter Verwendung individuell zusammengestellter Transistoren
und/oder Vakuumröhren
zur Durchführung
verschiedener logischer Operationen aufgebaut wurden, haben Innovationen
bei der Halbleiterherstellung ermöglicht, mehrere Transistoren
oder logische Gates zusammen in einem einzigen integrierten Schaltkreis
oder Chip zu integrieren, um eine größere Anzahl von logischen Funktionen
durchführen
zu können.
Die Größe und Anzahl
von logischen Gates die gemeinsam in einem Chip integriert werden
können,
vergrößert sich
fortlaufend und während
frühere
Chips höchstens
ein paar hundert Gates hatten, sind modernere Chips entwickelt worden,
die über
wesentlich mehr und im Bereich von einigen Millionen angesiedelte
Anzahl von Gates verfügen.
Darüber
hinaus haben Fortschritte bei der Integrierung ermöglicht,
welche zu einer anderen Zeit dadurch implementiert worden sind,
dass mehrere Chips in einem einzigen Chip implementiert worden sind.
-
Da
Chipentwurf immer komplexer wird, wird der Entwurf- und Entwicklungsprozess
immer teurer und zeitintensiver. Um dieses Problem abzumildern,
sind Design-Tools entwickelt worden, die es Entwicklern gestatten,
maßgeschneiderte
Chips durch einen Zusammenbau kleinerer, generischer Komponenten
herzustellen, welche Basisfunktionen übernehmen, die für den Entwurf
erforderlich sind. Durch die Verwendung von generischen Komponenten
wird die zum Entwurf notwendige Zeit und der dafür notwendige Aufwand reduziert, da
Schaltkrei se nicht Gate für
Gate entworfen werden müssen.
Darüber
hinaus können
die Komponenten gewöhnlicher
Weise vor dem Zusammenbau in einem bestimmten Entwurf getestet und
optimiert werden, so dass der Testaufwand, welcher dem Entwickler
aufgetragen ist, substanziell reduziert wird.
-
Die
Möglichkeit,
eine größere Anzahl
von Gates auf einem Chip zu integrieren, hat auch ein Wachsen der
Komplexität
von generischen Komponenten gestattet, welche von Design-Tools verwendet
werden. Während
frühere
generische Komponenten Basisfunktionen replizierten, wie z. B. Multiplexer,
Register, Zähler usw.,
replizieren fortgeschrittene Komponenten typischerweise Funktionen
höherer
Ebenen, wie die von Mikroprozessoren, Speicher-Steuereinheiten,
Kommunikations-Schnittstellen-Steuereinheiten, usw. Diese fortgeschritteneren
Komponenten werden hierin insofern als Funktionsblöcke bezeichnet,
als sie dazu ausgebildet sind, eine oder mehrere High-Level-Funktionen
in einem Entwurf durchzuführen.
Funktionsblöcke
sind typischerweise insofern portabel, als sie in verschiedenen
Entwürfen
wiederverwendbar sind. Darüber
hinaus sind sie oftmals autonom und können deshalb unabhängig und
gleichzeitig mit anderen Komponenten in einem Entwurf operieren.
-
Eine
Schwierigkeit, die mit der Verwendung von Komponenten wie Funktionsblöcken verbunden
ist, ergibt sich aus der Notwendigkeit für verschiedene Komponenten
in einem Entwurf, miteinander zu kommunizieren und Informationen
untereinander auszutauschen. Jede Komponente verfügt typischerweise über eine oder
mehrere Schnittstellen, die für
diese definiert sind und über
die die Kommunikation mit anderen Komponenten oder mit anderen,
außerhalb
eines Chips angeordneten Bauteilen stattfindet. Diese Schnittstellen
sind typischerweise über
ein Anschlusssystem, wie ein Bus, miteinander verbunden, der die
Kommunikation zwischen den verschiedenen Komponenten unterstützt.
-
Zum
Beispiel besteht eine gleichzeitige Art und Weise, mehrere Komponenten
miteinander zu verbinden darin, einen Multi-Drop-Bus zu verwenden.
Mit einem Multi-Drop-Bus ist jede Komponente mit einem gemeinsamen
Satz Leitungen verbunden, so dass jede Komponente dazu in der Lage
ist, jede Kommunikation, welche über
den Bus geleitet wird, zu empfangen. Informationen, welche über einen
Bus geleitet werden, werden gewöhnlicher
Weise mit der Verwendung ei ner bestimmten Adresse oder eines anderen
Identifizierers assoziiert, so dass nur die Komponente, die wirklich
das Ziel der Information ist, die Information empfängt und verarbeitet.
Die anderen Komponenten, die nicht als Ziel der Information bestimmt
sind, ignorieren die Information.
-
Typischerweise
ist ein Bus parallel und umfasst mehrere Leitungen, sodass mehrere
Informations-Bits gleichzeitig übertragen
werden können.
Des Weiteren werden sowohl Steuerinformationen, welche von einer Komponente
dazu verwendet werden, die Operation einer anderen Komponente zu
steuern, und Daten, welche die Informationen, die von den Komponenten
verarbeitet werden, darstellen, typischerweise über die gleichen Leitungen
in dem Bus geleitet. Beispielsweise ist die Periphere-Komponenten-Anschluss-Architektur (PCI)
eine Architektur, welche in integrierten Multifunktionsblöcken in
einem Chip verwendet wird, welche gewöhnlicher Weise eher auf der
Baugruppenebene verwendet wird, um einen Mikroprozessor mit verschiedenen
peripheren Geräten
in einem Computer zu verbinden.
-
Busartige
Verbindungen leiden jedoch unter einer Anzahl von Nachteilen, welche
ihre Nützlichkeit beim
Verbinden mehrerer Funktionsblöcke
in einem Chip limitieren. Zunächst
benötigen
Parallel-Bus-Architekturen eine relativ große Anzahl von Leitungen oder
Drähten,
welche zwischen den verschiedenen Komponenten, die an den Bus angeschlossen
sind, verlaufen. Routing-Drähte
zwischen den Komponenten können
wertvollen Platz in einem Entwurf belegen und die Anzahl von Komponenten,
die in dem Entwurf untergebracht werden können, reduzieren. Z. B. übertragen
viele Parallel-Busse Daten in 32- oder 64-Bit-Worten und benötigen mindestens
32 oder 64 Leitungen, die zu jeder Komponente geroutet sind, nicht
gezählt
jegliche zusätzlichen
Steuersignale, die benötigt
werden könnten.
-
Zweitens
kann typischerweise nur eine Komponente zur gleichen Zeit eine Information über einen
parallelen Bus übertragen.
Aus diesem Grund müssen
Komponenten, welche eine Information übertragen wollen, typischerweise
warten, bis die Komponente das Übertragen
ihrer Information beendet hat, oder alternativ dazu muss jede Komponente
den Bus teilen und überträgt Informations-Teilstücke eins
nach dem anderen, wodurch die Übertragungsrate
für alle
Komponenten sinkt. Auch teilen sich Steuer-Informationen und Daten typischerweise die
gleichen Leitungen in einem parallelen Bus, und aus diesem Grund
müssen
Steuer-Informationen, die anderenfalls möglicherweise in einer bestimmten
Komponente verarbeitet werden könnten, ohne
den Zugang zu dem Bus zu benötigen,
warten, bis eine Datenübertragung,
die vor der gewünschten Steuer-Operation gestartet
worden ist, beendet worden ist.
-
Drittens
kann die Gesamtgeschwindigkeit eines parallelen Busses limitiert
sein und dadurch die potentielle Bandbreite für Informationen, die zwischen
den Komponenten übertragen
werden, begrenzen. Die Bandbreite in einem parallelen Bus wird typischerweise
durch Vergrößerung der
Breite des Busses oder Erhöhung der
Taktgeschwindigkeit des Busses verbessert. Eine Vergrößerung der
Breite des Busses fügt
jedoch zusätzliche
Leitungen dem Bus hinzu, wodurch die Routing-Dichte des Entwurfs
erhöht
wird. Die Erhöhung
der Taktgeschwindigkeit, auf der anderen Seite, kann die Anzahl
der Komponenten, die an dem Bus angeschlossen sein können begrenzen,
weil die Anzahl der Komponenten die Größe der Ladungs- und Routing-Störeinflüsse des
Busses beeinflussen kann, von denen beide die zulässige Taktgeschwindigkeit
begrenzen.
-
US-Patent 5,513,369 offenbart
ein integriertes Schaltkreisbauteil, welches über Sternkoppler erster und
zweiter Ebene verfügt.
Der Sternkoppler erster Ebene umfasst eine Anzahl von Eingängen und
korrespondierende Ausgängen
und verknüpft
alle Informationen die an seinen Eingängen empfangen wurden über logische
ODER, um ein erstes Ausgangs-Signal zu generieren. Der Stern-Koppler
zweiter Ebene verfügt
ebenfalls über
eine Anzahl von Eingängen
und korrespondierende Ausgänge,
wobei einer der Eingänge
zu dem Stern-Koppler zweiter Ebene so verbunden ist, dass er das
erste Ausgangs-Signal empfängt.
Der Stern-Koppler zweiter Ebene verknüpft alle an seinen Eingängen empfangen
Signale einschließlich
das erste Ausgangssignal über
logische ODER, um ein zweites Ausgangssignal, welches an jedem seiner
Ausgänge
zur Verfügung
gestellt ist, zu generieren. Ein Schalter oder Multiplexer dirigiert
entweder das erste oder zweite Ausgangssignal zu jedem der Ausgänge des
Stern-Kopplers erster Ebene. Innerhalb eines solchen Systems werden
die Verbindungen von Eingangssignalen mit Ausgängen in Übereinstimmung mit den Konventionen
von Stern-Kopplern eingeschränkt Aus
diesem Grund besteht ein signifikantes Bedürfnis auf diesem Gebiet für eine verbesserte
Art und Weise der Verbindung von Komponenten, wie Funktionsblöcke und
dergleichen in einem Integrierten-Schaltkreis-Entwurf und insbesondere
für eine
Art und Weise, Komponenten miteinander zu verbinden, welche flexibler,
kompakter, schneller, wiederverwendbarer und expansibeler als bei
konventionellen Entwürfen
ist.
-
Zusammenfassung der Erfindung
-
Die
Erfindung ist auf diese und andere Probleme gerichtet, welche mit
dem Stand der Technik verbunden sind, indem eine Schaltungsanordnung
und ein Verfahren, das mehrere Funktionsblöcke innerhalb eines Integrierten-Schaltkreis-Bauteils über einen
gleichzeitigen seriellen Anschluss verbindet, der dazu in der Lage ist,
separate serielle Kommando-, Daten- und Taktsignale zwischen Funktionsblöcken in
dem Bauteil zu routen.
-
Gemäß einem
ersten Aspekt der Erfindung wird eine Schaltungsanordnung zur Verbindung
einer Vielzahl von Funktionsblöcken
miteinander in einem Integrierten-Schaltkreis-Bauteil zur Verfügung gestellt,
wobei die Funktionsblöcke
innerhalb eines Integrierten-Schaltkreis-Bauteils angeordnet sind,
wobei die Schaltungsanordnung umfasst:
- (a)
eine Vielzahl von seriellen Anschlüssen (40, 42, 44, 46, 48),
von denen jeder serielle Anschluss einem Funktionsblock zugeordnet
und mit diesem über
eine Punkt-zu-Punkt-Verbindung (50, 52, 54, 56, 58)
verbunden ist, um mit diesen eine externe Kommunikation zuzulassen,
und jeder serielle Anschluss getrennte serielle Kommando-, Daten-
und Taktanschlüsse
einschließt;
und
- (b) eine Schnittstellen-Steuereinheit (14), die mit
jedem der seriellen Anschlüsse
(40, 42, 44, 46, 48)
verbunden ist, wobei die Schnittstellen-Steuereinheit ausgebildet
ist, gezielt und gleichzeitig zumindest zwei der seriellen Anschlüsse miteinander
zu verbinden, um einen logischen Kommunikationskanal zwischen den
den seriellen Anschlüssen
zugeordneten Funktionsblöcken
zu definieren.
-
Gemäß einem
zweiten Aspekt der Erfindung wird ein Verfahren zur Verbindung einer
Vielzahl von Funktionsblöcken
in einem Integrierten-Schaltkreis-Bauteil, wie in dem unabhängigen Anspruch
25 definiert, zur Verfügung
gestellt.
-
Ein
gleichzeitiger serieller Anschluss gemäß der Erfindung verwendet eine
Vielzahl von seriellen Anschlüssen,
die selektiv miteinander durch eine Schnittstellensteuereinheit
gekoppelt sind, um einen oder mehrere logische Kommunikationskanäle zwischen
zwei oder mehreren der seriellen Anschlüsse zu bilden. Die logischen
Kommunikationskanäle
wirken ihrem Wesen nach als Punkt-zu-Punkt serielle Verbindungen
zwischen den Funktionsblöcken,
so dass direkte Kommunikation zwischen logisch verbundenen Funktionsblöcken stattfinden
kann.
-
Durch
die Verwendung von seriellen Verbindungen wird die Anzahl von Leitungen,
welche von und zu individuellen Funktionsblöcken geroutet ist, reduziert,
wodurch die Integration von Funktionsblöcken in einen Entwurf vereinfacht
wird und der Routing-Stau, der mit der Kommunikation zwischen Blöcken einhergeht,
vermindert wird. Zusätzlich
kann durch die Kommunikation über
separate serielle Kommando-, Daten- und Taktsignale, Hochgeschwindigkeitsdatendurchgang
unterstützt
werden. Des Weiteren können,
wenn mehr als ein logischer Kommunikationskanal durch eine Schnittstellensteuereinheit
gemäß der Erfindung
unterstützt
wird, gleichzeitig mehrere Kommunikationssitzungen stattfinden,
wodurch der Gesamtdatendurchsatz weiter vergrößert wird.
-
Ein
weiterer Vorteil eines gleichzeitigen seriellen Anschlusses, welcher
Teil der Erfindung ist, besteht darin, dass der Entwurf von Integrierten-Schaltkreis-Bauteilen und dergleichen
substantiell vereinfacht wird. Funktionsblöcke können durch das Hinzufügen eines
seriellen Anschlusses zusammengefügt werden, wobei jeder Funktionsblock
mit einem einer Vielzahl serieller Anschlüsse in dem seriellen Anschluss
durch das separate Routen von seriellen Kommando, Daten- oder Takt-Drähten zwischen
ihnen verbunden. Entwurf und Entwicklung werden vereinfacht, da
das Hinzufügen
neuer Funktionsblöcke
zu einem Entwurf typischerweise nur den Entwurf des seriellen Anschlusses
und speziell die Schnittstellensteuereinheit, die darin verwendet wird,
beeinflusst. Des Weiteren werden modulares Testen und Prüfen insofern
vereinfacht, als dass die Kommunikationen zwischen den Funktionsblöcken zunächst durch
den seriellen Anschluss verläuft
und die Notwendigkeit des Testens und Prüfens individueller Anschlüsse zwischen
den Funktionsblöcken
oft reduziert oder beseitigt wird.
-
Weitere
Ausführungsformen
der Erfindung werden in den angehängten abhängigen Ansprüchen spezifiziert.
-
Diese
und andere Vorteile und Eigenschaften, welche die Erfindung kennzeichnen,
sind in den angehängten
Ansprüchen
weiter ausgeführt
und bilden einen weiteren Teil hiervon. Zum besseren Verständnis der Erfindung
und der Vorteile und Ziele, welche durch deren Verwendung erlangt
werden, soll auf die Zeichnungen und die zugehörige Beschreibung Bezug genommen
werden, in welcher eine beispielhafte Ausführungsvariante der Erfindung
beschrieben ist.
-
Kurze Beschreibung der Zeichnungen
-
1 ist
ein Blockdiagramm einer Schaltungsanordnung für ein Integrierter-Schaltkreis-Bauteil
gemäß der Erfindung.
-
2 ist
ein Blockdiagramm der Schnittstellensteuereinheit der Schaltungsanordnung
aus 1.
-
3 ist
ein Blockdiagramm einer Dreikanalimplementierung der Schnittstellensteuereinheit
aus 2.
-
4 ist
ein Flussdiagramm, welches die Sequenz der Operationen darstellt,
die von der Schnittstellensteuereinheit gemäß 2 während einer
System-Zurücksetzung
durchgeführt
wird.
-
5 ist
ein Flussdiagramm, welches eine Sequenz von Operationen darstellt,
die in der Schaltungsanordnung gemäß 1 durchgeführt wird,
wenn ein logischer Kommunikationskanal aufgebaut wird.
-
6 ist
ein Flussdiagramm, welches eine Sequenz von Operationen darstellt,
die durchgeführt
wird, wenn ein logischer Kommunikationskanal in einer Schaltungsanordnung
gemäß 1 entlassen
wird.
-
7A, 7B u. 7C sind
Timing-Diagramme, welche jeweils exemplarische Datenstromübertragungen
zwischen zwei Ausgängen
während
des Aufbaus eines logischen Kanals, der Verarbeitung einer Leseanforderung über den
aufgebauten Kanal und der Entlassung des logischen Kanals darstellen.
-
8 ist
ein Flussdiagramm, welches eine Sequenz von Operationen darstellt,
die während
eines implizit vorgegebenen Präemtions-Verfahrens für die Schaltungsanordnung
gemäß 1 durchgeführt wird.
-
9 ist
ein Flussschaltbild, welches eine Sequenz von Operationen, die während eines
explizit vorgegebenen Präemtions-Verfahrens
für die
Schaltungsanordnung gemäß 1 durchgeführt wird,
darstellt.
-
10 ist
ein Blockdiagramm, der primären
Logik-Komponenten in einer Funktionsblock-Schaltungsanordnung gemäß der Erfindung.
-
11 ist
ein Blockdiagramm eines Entwicklungsumgebungs-Datenverarbeitungssystems gemäß der Erfindung.
-
12 ist
ein Blockdiagramm der Systemsteuereinheit des Entwicklungsumgebungs-Datenverarbeitungssystems
gemäß 11.
-
13 ist
ein Blockdiagramm eines Set-Top-Box-Datenverarbeitungssystems gemäß der Erfindung.
-
14 ist
ein Blockdiagramm der Set-Top-Box-Steuereinheit in dem Set-Top-Box-Datenverarbeitungssystem
gemäß 13.
-
Detaillierte Beschreibung
-
Die
dargestellten Ausführungsvarianten
der Erfindung beruhen auf einem gleichzeitigen seriellen Anschluss
zur Verbindung einer Vielzahl von Funktionsblöcken untereinander in einer
Integrierter-Schaltkreis-Bauteil-Schaltungsanordnung. Ein gleichzeitiger
serieller Anschluss gemäß der Erfindung
verfügt über eine
Vielzahl von seriellen Anschlüssen
unter der Kontrolle einer Schnittstellensteuereinheit und ist über eine Vielzahl
von seriellen direkten Punkt-zu-Punkt-Verbindungen mit verschiedenen
Funktionsblöcken
in der Schaltungsanordnung verbunden. Die Schnittstellensteuereinheit
verbindet serielle Anschlüsse
selektiv um einen oder mehrere logische Kommunikationskanäle zu bilden, über welche
eine Information von den Funktionsblöcken gesendet wird, welche
mit den zugeordneten seriellen Anschlüssen verbunden sind.
-
Als
Funktionsblock wird jede logische Schaltung angesehen, welche dazu
ausgebildet ist, eine oder mehrere High-Level-Funktionen in einem
Integrierten-Schaltkreis-Entwurf
durchzuführen.
-
Die
meisten Funktionsblöcke
sind insofern „portabel", als sie in verschiedenen
Entwürfen
wiederverwendbar sind. Darüber
hinaus sind die meisten Funktionsblöcke auch „autonom" und dementsprechend in der Lage, unabhängig und
gleichzeitig mit anderen Komponenten in einem Entwurf zu operieren.
-
Beispiele
von Funktionsblöcken
sind Prozessoren, Steuereinheiten, externe Schnittstellen, Kodierer, Dekodierer,
Signalprozessoren und jede andere analoge und/oder digitale Schaltung,
welche eine bestimmte Funktion oder einen Satz Funktionen ausführt, die
Erfindung ist aber sind nicht auf diese beschränkt. Oft sind Funktionsblöcke entworfen,
entwickelt und geprüft
als unabhängige
Einheiten und können
sogar lieber von Drittanbietern, als von den Entwicklern des gesamten
Integrierten-Schaltkreis-Bauteils erhalten werden.
-
Die
Integration von mehreren Funktionsblöcken über einen gleichzeitigen seriellen
Anschluss entsprechend der Erfindung ist typischerweise in einer
Schaltungsanordnung für
einen Prozessor oder andere programmierbare Integrierter-Schaltkreis-Bauteile
implementiert und es sollte gewürdigt
werden, dass eine große Bandbreite
von programmierbaren Bauteilen die verschiedenen hierin offenbarten
Varianten verwenden kann. Darüber
hinaus werden Integrierter-Schaltkreis-Bauteile,
wie in dem Fachgebiet bekannt ist, typischerweise unter Verwendung
einer oder mehrerer Computerdateien entworfen und hergestellt, welche
im Weiteren als Hardware-Definitionsprogramme bezeichnet werden,
die das Layout der Schaltungsanordnung auf dem Bauteil bestimmen.
Die Programme werden typischerweise von einem Design-Tool generiert
und werden deswegen während
des Herstellungsprozesses verwendet, um Layoutmasken zu kreie ren,
die die Schaltungsanordnung bestimmen und auf Halbleiter-Wafer aufgetragen
werden. Typischerweise werden die Programme in einem vorbestimmten
Format zur Verfügung
gestellt, welche eine Hardware-Definitionssprache (HDL) sowie VHDL,
Verilog, EDIF etc. benutzt. Während
die Erfindung im Zusammenhang mit Schaltungsanordnungen beschrieben
wurde und im Folgenden beschrieben wird, welche in voll funktionsfähigen Integrierter-Schaltkreis-Bauteilen
implementiert sind und mit Datenverarbeitungssystemen, welche derartige
Bauteile verwenden, beschrieben wird, werden Fachleute begrüßen, dass
die Schaltungsanordnungen gemäß der Erfindung, als
Programmprodukte in einer großen
Bandbreite von Ausführungsformen
zur Verfügung
gestellt werden können,
und dass die Erfindung gleichermaßen anwendbar ist, unabhängig von
dem speziellen Typ von Signal-enthaltendem Medium, welches tatsächlich verwendet
wird, um die Verteilung durchzuführen.
Beispiele für Signal-enthaltende
Medien umfassen, aber sind nicht auf diese beschränkt, aufnehmende
Medien, wie z. B. Kurzzeit- oder Langzeit-Speichergeräte, Floppy-Disks,
Hard-Disk-Drives, CD-ROMs
und DVDs, unter anderen, und Übertragungstyp-Medien
wie digitale und analoge Kommunikations-Links.
-
Im
Folgenden wird auf die Zeichnungen näher eingegangen, wobei gleiche
Bezugszeichen gleiche Teile überall
bei den verschiedensten Darstellungen kennzeichnen, 1 stellt
eine repräsentative
Integrierter-Schaltkreis-Bauteil-Schaltungsanordnung 10 gemäß der Erfindung
dar. Ein gleichzeitiger serieller Anschluss 12, welcher über eine
Schnittstellensteuereinheit 14 verfügt, wird dazu verwendet, einen
Host 20 mit einer Vielzahl von Funktionsblöcken 22, 24, 26 und 28 (auch
gekennzeichnet als FB 1 ... n) zu verbinden. Host 20 kann
auch als Funktionsblock angesehen werden, der zusätzlich zu
anderen Hochlevel-Funktionsweisen, wofür er definiert
ist, weitere Logikschaltkreise enthält, um als ein Masterbauteil
für den
gleichzeitigen seriellen Anschluss 12 zu fungieren.
-
Jeder
Funktionsblock 20, 22, 24, 26 und 28 verfügt über eine
zugehörige
Anschlussschnittstelle 30, 32, 34, 26 und 38,
welche mit einer Vielzahl von seriellen Anschlüssen 40, 42, 44, 46 und 48 (auch
gekennzeichnet als Anschluss 0 ... n) über direkte serielle Punkt-zu-Punkt-Verbindungen 50, 52, 54, 56 und 58 verbunden
ist. Jeder serielle Anschluss 40 bis 48 wird von
der Schnittstellensteuereinheit 14 gesteuert, um selektiv
einen oder mehrere logische Kommunikationska näle zwischen zwei oder mehreren
Funktionsböcken 20 bis 28 zu
bilden. Des Weiteren fungiert Host 20 als Master für Anschluss
12, und Anschluss 40 ist der Masteranschluss für den Anschluss, über welchen
Initialisierungsinformationen durch den Host zur Verfügung gestellt werden.
-
Jede
serielle Verbindung 50 bis 58 verfügt über separate
serielle Kommando-, Daten- und Taktleitungen. Die seriellen Kommandoleitungen
werden dazu verwendet, seriell kodierte Kommando- und Steuerinformationen
zwischen den Funktionsblocks oder zwischen der Schnittstellensteuereinheit
und einem Funktionsblock zu überfragen.
Die seriellen Datenleitungen werden dazu verwendet, seriell kodierte
Daten zwischen Funktionsblöcken
oder zwischen der Schnittstellensteuereinheit und einem Funktionsblock
zu übertragen,
wobei die Datenleitungen des Weiteren dazu verwendet werden, zusätzliche
Informationen für
die einzelnen Kommandos, welche über
die seriellen Kommandoleitungen übertragen
worden sind, zur Verfügung
zu stellen, wie nachfolgend detaillierter ausgeführt wird. Die seriellen Daten
werden von den seriellen Kommandoinformationen Daten-gerahmt.
-
Die
seriellen Taktleitungen werden dazu verwendet, Taktsignale zu übertragen,
um die Kommando- und Datenleitungen zu synchronisieren, wodurch
ermöglicht
wird, dass die Funktionsblöcke
substantiell asynchron voneinander und/oder von der Schnittstellensteuereinheit
arbeiten, wenn erwünscht.
Alternativ dazu können
die Funktionsblöcke
durch das Zur-Verfügung-Stellen
des gleichen Taktsignals synchronisiert werden. Die Kommando- und
Datenleitungen können
je nach Wunsch einheitlich oder uneinheitlich getaktet sein.
-
Jede
dieser Leitungen kann auf verschiedenste Art und Weise implementiert
sein. Zum Beispiel kann jede Leitung durch die Verwendung eines
bidirektionalen Drahtes implementiert sein, oder ein Paar von unidirektionalen
Drähten
kann zur Verfügung
gestellt sein, um gleichzeitige Kommunikation in beide Richtungen zwischen
einem seriellen Anschluss und seinem zugehörigen Funktionsblock zu unterstützen. Zusätzlich können Leitungen
mit Single-Edged-Drähten
oder Differentialpaare von Drähten
implementiert sein, um die Leistung zu verbessern. In der Implementierung,
welche im Nachfolgenden diskutiert wird, z. B. wenn differentiale Drähte-Paare
für Kommandoeingangs-,
Dateneingangs- und Taktein gangssignale zur Verfügung gestellt werden (von einem
Funktionsblock zu einem seriellen Anschluss), als auch für jeden
der Kommandoausgangs- und Taktausgangssignale (von einem seriellen
Anschluss zu einem Funktionsblock), werden insgesamt nur 12 Leitungen
für jede
serielle Verbindung 50 bis 58 benötigt.
-
Zusätzlich,
wie durch Pfeil 60 dargestellt, kann jeder Funktionsblock,
muss aber nicht, einen externen Eingang und/oder Ausgang für das Integrierte-Schaltkreis-Bauteil gemäß dem speziellen
Entwurf des Funktionsblocks zur Verfügung stellen.
-
Wie
in 2 dargestellt, verfügt Schnittstellensteuereinheit 14 über eine
Matrixsteuereinheit 64, welche mit einer Anschluss-Matrix 66 verbunden
ist. Die Matrixsteuereinheit ist auch mit einem Speicherbauteil 67 verbunden,
in welchem Entscheidungsdaten, welche ein Entscheidungsschema für die Steuereinheit
definieren, gespeichert sind. Ein Satz von Matrixsteuerleitungen 68 wird
von der Steuereinheit 64 ausgegeben um die Konfigurierung
der Matrix 66, basierend auf dem definierten Entscheidungsschema,
für die
Steuereinheit zu steuern. Des Weiteren empfängt Matrix 66 die
Kommando/Daten/Takt-Signale von jedem der seriellen Anschlüsse 40, 42, 44, 46 und 48,
welche von den Leitungen 70, 72, 74, 76 und 78 entsprechend
gebildet werden. Die seriellen Leitungen für jeden seriellen Anschluss
werden auch der Matrixsteuereinheit 64 zur Verfügung gestellt,
damit die Steuereinheit die Kommandos, welche hierdurch über die
entsprechenden seriellen Leitungen von einem speziellen Anschluss
weitergeleitet wurden, dekodiert, so dass die Matrixsteuereinheit
die Matrix wie notwendig rekonfigurieren kann, um den (die) gewünschten
logischen Kommunikationskanal(e) zwischen den gewählten Anschlüssen aufzubauen.
-
Die
Konfigurierung sowohl der Matrixsteuereinheit 64 und des
Matrixanschlusses 66 kann abhängig von der gewünschten
Konvektivität
zwischen den einzelnen Funktionsblöcken signifikant variieren.
Jegliche Anzahl von bekannten Schaltungsmatriximplementierungen
kann verwendet werden, einschlossen Cross-Bar-Schaltungen, Tree-Structures usw. Des
Weiteren kann ein Matrixanschluss entwickelt werden, um jede Anzahl
gleichzeitiger logischer Kommunikationskanäle zu unterstützen. Des
Weiteren kann für
einige Implementierungen wünschenswert
sein, die Eingangs- und Ausgangsleitungen zwischen Anschlüssen zu
teilen, um einem Anschluss zu ermöglichen, Informationen von
einem Kanal zu empfangen, während
Informationen über
einen anderen Kanal gesendet werden. Zum Beispiel stellt 3 eine
passende Implementierung von Anschluss-Matrix 66 als einen
Dreikanal-Cross-Bar-Anschluss zur Verbindung fünf serieller Anschlüsse 40 bis 48 (Anschlüsse 0 ...
4) dar. Um Matrix 66 zu steuern, verfügt die Matrixsteuereinheit 64 über drei
logische Blöcke:
einen Route-Kommando- und Steuerblock 80, einen Route-Anforderungsblock 82 und
einen Kanalmatrixsteuerblock 84.
-
Matrixanschluss 66 verfügt über drei
Kanäle 86, 88, 90,
welche darin festgelegt sind, um selektiv die Anschlüsse 40 bis 48 zu
verbinden. Aus illustrativen Gründen
wird jeder der Anschlüsse 40 bis 48 in
zwei Positionen in der Figur dargestellt, wobei die linke Darstellung
den Anschluss in einem „Initiator"- oder Modus und und
die rechte Darstellung den Anschluss in einen Empfangs- oder Zielmodus
darstellt.
-
Jeder
der Anschlüsse 40 bis 48 ist
mit jedem der Kanäle 86 bis 90 durch
ein zugehöriges
Paar von Routern verbunden. Für
die Kanäle 88 und 90 werden
gleichsam konfigurierte Router 96, 98 und 100, 102 verwendet.
In der dargestellten Ausführungsvariante
ist jeder Kanal bidirektional und jeder Router 92 bis 102 fungiert
dementsprechend sowohl als Multiplexer, als auch als Demultiplexer,
wobei die Information, welche von den Anschlüssen zu dem Kanal weitergeleitet
werden gemultiplext und die Informationen, welche von einem Kanal
zu den Anschlüssen
geleitet werden, demultiplext werden.
-
Es
ist anzumerken, dass in der dargestellten Implementierung jeder
Anschluss mit jedem Kanal verbunden und jeder Kanal bidirektional
ist. Des Weiteren ist es wünschenswert,
den Anschluss mehrerer Empfänger
an eine gegebene Quelle zu gestatten. Dementsprechend stellt die
dargestellte Implementierung maximale Konvektivität dar, da
jede Kombination von Anschlüssen
miteinander verbunden werden kann und sogar die Verbindung von einem
Anschluss zu sich selbst unterstützt
wird.
-
In
einer anderen Implementierung kann es jedoch wünschenswert sein, den Routing-Schaltkreis
in dem Matrixanschluss zu vereinfachen, z. B. durch das Weglas sen
von Verbindungen zwischen bestimmten Anschlüssen und bestimmten Kanälen, durch
die Konfiguration eines oder mehrerer Kanäle als unidirektionale Kanäle, durch
Konfiguration eines oder mehrerer Kanäle als einfache Empfangs-(Nicht-Broadcast)-Kanäle usw.
Des Weiteren kann auch wünschenswert
sein, mehr oder weniger Kanäle,
so wie von den Bandbreite-Anforderungen des endgültigen Entwurfs vorgegeben,
zu unterstützen.
-
Logische
Kommunikationskanäle
können
durch die Matrix 66 durch eine Kanalanforderung, welche von
einem oder mehreren der Anschlüsse 40 bis 48 erhalten
worden ist, aufgebaut werden. Diese Kanalanforderungen werden über die
seriellen Kommando-Eingangsleitungen des Anschlusses zu Route-Anforderungsblock 82,
wie von den Leitungen dargestellt, welche die linke Darstellung
der Anschlüsse 40 bis 48 mit
dem Block 82 verbinden, weitergeleitet. Block 82 arbeitet ähnlich einem
Instruction-Parser, welcher das serielle Kommando in den Leitungen
der Anschlüsse
detektiert und die Kanalanforderungen, die hierüber übertragen worden sind, dekodiert.
Die Kanalanforderungen werden daraufhin zu dem Route & Kommando-Steuerungsblock 80 weitergegeben,
welcher als ein Zuteiler fungiert, der unter den Kanälen zuteilt
und zuordnet und den Zugriff von Anschlüssen auf Kanäle basierend
auf einem vorgegebenen Entscheidungsschema freigibt.
-
Wie
durch die bidirektionale Leitung von Anschluss 40 dargestellt
(Master Anschluss 0), ist Block 80 in der Lage, von einem
Host dazu programmiert zu sein, jegliche Anzahl gewünschter
Entscheidungsschemata, unter anderen Zeitplanprioritäten, Präemtionsregeln,
Unterbrechungshandlungen, etc. zu implementieren. Alternativ dazu
kann Block 80 mit einem festgesetzten Entscheidungsschemata
fest verdrahtet sein und deshalb nicht die Konfigurationsdaten von
dem Masteranschluss benötigen.
Die Daten, welche zur Implementierung des Entscheidungsschemas notwendig
sind, sind im Speicherbauteil 67 gespeichert, welches mit
Block 80 verbunden ist.
-
Darüber hinaus
ist wünschenswert,
ein Set von Steuer- und Statusregister, welche hierin als Schnittstellensteuereinheits-Register 81 bezeichnet
werden, für
den Gebrauch durch Block 80 zu unterstützen. Solche Register können dazu
verwendet werden, z. B. einige oder alle Services der Schnittstellensteuereinheit zu aktivieren
oder zu deaktivieren, um einen oder mehrere Anschlüsse zu aktivieren
oder zu deaktivieren, um explizite oder implizite Präemtions-(Unterbrechungs)-Services
zu aktivieren oder zu deaktivieren und um Verbindungsstatusinformationen
zurück
zu einem Host zur Verfügung
zu stellen. Oftmals ist wünschenswert,
jedes dieser Register an einem speziellen Speicherort abzubilden,
so dass ein Host (oder potentiell jeder Funktionsblock) auf die
Register über
Standard Read/Write-Kommandos, welche von der Schnittstelle unterstützt werden,
zugreifen kann.
-
Block 80 steuert
den Kanalmatrixsteuerblock 84, um einen Kanal für einen
bestimmten Satz von Anschlüssen
bei Empfang einer Route-Anforderung zuzuteilen, basierend auf dem
vordefinierten Entscheidungsschema, welches darin programmiert ist.
Kanalmatrixsteuerblock 84 kann darin implementiert sein,
z. B. als eine Sequenz von Relais, die die Router 92 bis 102 steuern,
um die Kanäle
mit den spezifischen Anschlüssen, welche
durch Block 80 identifiziert worden sind, zu verbinden,
wie durch die Leitungen, welche von Block 84 zu jedem der
Router 92 bis 102 verlaufen, dargestellt ist.
-
Gewürdigt werden
sollte, dass die Logik und Eigenschaft der Matrixsteuereinheit 64 bis
zu einem gewissen Ausmaß jedem
der Blöcke 80 bis 84 zugeteilt
ist. Darüber
hinaus kann eine zusätzliche
oder alternative Eigenschaft der Matrixsteuereinheit unterstützt werden,
wie durch nachfolgende Erläuterungen
klar wird.
-
Für die Schnittstellensteuereinheit
gemäß 3 wird
davon ausgegangen, dass mit unterschiedlichem Takt und Daten zum
Anschluss-Routing und bei einer 0,2-Mikrometer-Entwurfsregel eine
Taktrate von ungefähr
2,5 GHz oder mehr implementiert werden kann, wodurch eine serielle
Bandbreite von ungefähr
312,5 MB/sec (ohne Overhead) pro Kanal oder mehr erreicht wird.
Dementsprechend wird erwartet, dass mit einer Dreikanalmatrix eine
Gesamt-Durchbruch-Bandbreite
von wenigstens ungefähr
937,5 MB/sec ohne Overhead mit dieser Konfiguration ermöglicht ist.
-
In
der dargestellten Implementierung werden seriell kodierte Anforderungs-
und Antwortkommandos oder Pakete zwischen Funktionsblöcken und/oder
zwischen einem Funktionsblock und der Schnittstellensteuereinheit
weitergeleitet, um ei nen gleichzeitigen serielle Anschluss gemäß der Erfindung
zu implementieren.
-
Solche
Anforderungs- und Antwortkommandos können in zwei Typen klassifiziert
werden, solche, welche von der Schnittstellensteuereinheit aufgenommen
werden und solche, welche von einem Funktionsblock aufgenommen werden.
Die Ersten hiervon, welche hierin IC-Kommandos genannt werden, werden
dazu verwendet, logische Kommunikationskanäle in der Schnittstellensteuereinheit
aufzubauen oder zu entlassen. Die Zweiten hiervon, die hierin als
FR-Kommandos bezeichnet werden, werden dazu verwendet, Kommunikationsstatus,
Datenlänge
und Datenrahmeninformationen zwischen Funktionsblöcken zu
kommunizieren, wie weiter unten ausführlicher erläutert wird.
Jedes Kommando ist typischerweise durch ein Kommando-Token, in vieler Hinsicht
gleichermaßen
zu einem Opcode, identifiziert. Während jede Anzahl von Kommandos
in Übereinstimmung
mit der Erfindung verwendet werden kann, ist ein möglicher
Satz von Kommando-Tokens,
welche solch einen Kommandosatz definieren, ist in Tabelle I aufgelistet,
wobei der Typ jedes Kommandos darüber hinaus indiziert ist:
Token | Typ | Kommando | Beschreibung |
0001 | FB | WRITE_ADDRESS | Aufforderung
zur Verschiebung von Daten von der Quelle zum Ziel |
0010 | FB | WRITE_DATA | Datenrahmen
für jedes geschriebene
Datenobjekt |
0011 | FB | READ_REQ | Aufforderung
für das Ziel,
Daten zur Quelle zu senden |
0100 | FB | LOCK_REQ | Aufforderung
für die Quelle
zur automatischen Ansteuerung des Ziels |
0101 | FB | LOCK_RESP | Antwort
für LOCK_REQ |
0110 | FB | FLOW_CONTROL | Gestattet
dem Ziel, die Datenrate der Daten, die an es geschickt werden, zu
steuern |
0111 | FB/IC | ERROR | Anzeige
eines illegalen Zielzustandes |
1000 | FB/IC | INT_SERV_REQ | Unterbrich
Aufforderung für
einen Zielanschluss |
1001 | FB/IC | INT_SERV_RESP | Antwort
auf INT_SERV_REQ |
1010 | FB/IC | CHANNEL_REQ | Aufforderung
zum Aufbau eines logischen Kanals mit Ziel(en) |
1011 | FB/IC | CONNECT_RESP | Antwort
auf CHANNEL_REQ |
1100 | FB/IC | CHANNEL_ABORT | Aufforderung
zum Entlassen aller aktiven Kanäle
für den
Anschluss |
1101 | FB/IC | PORT_STATUS | Suchstatus
eines weiteren Anschlusses/Funktionsblocks |
-
Es
sollte festgestellt werden, dass die INT_SERV_REQ, INT_SERV_RESP,
CHANNEL_REQ, CONNECT_RESP, CHANNEL_ABORT und PORT_STATUS Kommandos
sowohl als IC- als auch FR-Kommandos überlastet sind. Diese Kommandos
sind IC-Kommandos, wenn sie von einem Funktionsblock ausgegeben
werden, und sind FR-Kommandos, wenn sie von der Schnittstellensteuereinheit
ausgegeben werden. Mit einem separaten Kodierungs-/Dekodierungs-Schaltkreis in der
Schnittstellensteuereinheit und in jedem Funktionsblock und mit
allen Kommunikationen zwischen Funktionsblöcke, welche durch die Schnittstellensteuereinheit
weitergegeben werden, ist es wünschenswert,
dass eine solche Überladung
nicht problematisch ist.
-
Jegliche
Anzahl von Kommandoformaten kann in Übereinstimmung mit der Erfindung
verwendet werden. Gemäß der dargestellten
Implementierung sind Kommandos seriell kodiert, haben das generelle
Format eines logischen 1-Start-Bit,
gefolgt von einem Kommando-Token, irgendeinem Operanden und schließlich einem
logischen 0-Stop-Bit. Die Kommandos werden dazu verwendet, die Informationen
in den Datenleitungen zu Datenrahmen und zusätzliche Informationen, die
von einem speziellen Kommando benötigt werden, können auf
einer der Leitungen oder auf sowohl den Kommando- als auch den Datenleitungen
zur Verfügung
gestellt werden.
-
Ein
passendes Format für
das Kommando zum Schreiben einer Adresse (WRITE_ADDRESS) ist nachfolgend
in Tabelle II gezeigt: Tabelle II: Kommandoformat zum Schreiben
einer Adresse (FB nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando (CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | WRITE_ADDRESS
Token (0001) |
5 | TargetSize | Anzahl
der Zieladressen Bits TS |
1 | Stop | Stop-Bit
(0) |
Daten
(Data) | TS | TargetAddre | TS
Bits der Zieladresse |
-
Das
Kommando zum Schreiben der Adresse wird dazu verwendet, eine Adresse,
auf die in dem Zielfunktionsblock geschrieben werden soll, zu übertragen,
nachdem ein logischer Kommunikationskanal zwischen dem Quellanschluss
und einem oder mehreren Zielanschlüssen aufgebaut worden ist.
Die Anzahl der Bits in der Adresse wird auf der Kommandoleitung
in dem TargetSize-Feld zur Verfügung
gestellt und die Zieladresse selbst wird auf der Datenleitung gleichzeitig
mit der Übertragung
des Kommandos zum Schreiben der Adresse auf der Kommandoleitung übertragen.
-
Sobald
eine Schreibe-Adresse einem Zielanschluss zur Verfügung gestellt
worden ist, werden die Kommandos zum Schreiben der Daten (WRITE_DATA)
von dem Quellanschluss zum Schreiben in die spezifizierte Adresse
weitergeleitet.
-
Ein
passendes Format für
das Kommando zum Schreiben der Daten wird nachfolgend in Tabelle
III gezeigt: Tabelle III: Kommandoformat zum Schreiben
von Daten (FB nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | WRITE_ADDRESS
Token (0010) |
1 | Stop | Stop-Bit
(0) |
Daten
(Data) | 8 | Data | Ein
Byte von Daten |
-
Jedes
Kommando zum Schreiben der Daten stellt ein Byte oder 8 Bits an
Daten zur Verfügung,
um in die spezifizierte Adresse zu schreiben. In der dargestellten
Implementierung kann es auch wünschenswert sein,
sowohl die Quell- als auch die Zielfunktionsblöcke so zu konfigurieren, dass
sie bei Empfang eines Kommandos zum Schreiben von Daten zur nächsten Adresse
auto-inkrementieren, so dass mehrere Kommandos zum Schreiben von
Daten geschickt werden können,
ohne jede neue Adresse zurückzuversenden.
-
Ein
geeignetes Kommando für
eine Leseaufforderung (READ_REQ) ist nachfolgend in Tabelle IV gezeigt: Tabelle IV: Leseaufforderungs-Kommandoformat
(FB nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | READ_REQ
Token (0011) |
5 | TargetSize | Anzahl
der Zieladressen Bits TS |
TS | TargetAddr | TS
Bits der Zieladresse |
5 | SourceSize | Anzahl
der Quelladressen-Bits SS |
SS | SourceAddr | SS
Bits der Quelladresse |
1 | Stop | Stop-Bit
(0) |
Daten
(Data) | 13 | BlockSize | Anzahl
der Erfragten Datenbytes, bis zu 8 K |
-
Das
Leseaufforderungs-Kommando wird von einem Quellfunktionsblock dazu
verwendet, Daten von einem Zielfunktionsblock anzufordern. Die Kommandoleitung
trägt die
Adresse sowohl zum Ziel, wo die angeforderten Daten gespeichert
sind (Zieladresse), als auch die Adresse in der Quelle, wo die angeforderten
Daten gespeichert werden sollen (Quelladresse). Die Anzahl von Bytes,
welche übertragen
werden, wird auf der Datenleitung gleichzeitig mit dem Kommando
der Leseaufforderung auf der Kommandoleitung übertragen.
-
In
der dargestellten Implementierung ist das Leseaufforderungs-Kommando
von einem Zielfunktionsblock durch Schreiben der angefragten Daten
zurück
auf den Quellausgang geregelt, wobei die WRITE_ADDRESS und WRITE_DATA
Kom mandos, welche weiter oben diskutiert worden sind, verwendet werden,
was den Kommandosatz zur Verbindung vereinfacht. Alternativ dazu
kann ein separates Datenlese-Antwortkommando von dem Ziel zur Quelle
dazu verwendet werden, die angefragten Daten an einen Quellfunktionsblock
zurückzugeben.
-
Sperroperationen
werden auch unterstützt,
um einer Quelle zu ermöglichen,
automatisch einen Speicherort in dem Zielfunktionsblock zu manipulieren.
Ein geeignetes Kommandoformat für
Sperraufforderungen (LOCK_REQ) ist nachfolgend in Tabelle V gezeigt,
und ein Format eines Sperrantwort-Kommandos (LOCK_RESP) ist nachfolgend
in Tabelle VI gezeigt: Tabelle V: Kommandoformat Sperraufforderung
(FB nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | LOCK_REQ
Token (0100) |
5 | TargetSize | Anzahl
der Zieladressen Bits TS |
4 | LockType | Unterbrechungstyp |
5 | ArgSize | Zahl
der Bytes des Unterbrechungsarguments(s) AS |
1 | Stop | Stop-Bit
(0) |
Daten
(Data) | TS | TargetAddr | TS-Bits
der Zieladresse |
| AS*8 | Arguments | Unterbrechungsargument(e)
1 ... n |
Tabelle VI: Format eines Sperrantwort-Kommandos
(FB nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | LOCK_RESP
Token (0101) |
5 | ArgSize | Anzahl
der Bytes in dem Rückgabeargument(e) AS |
1 | Stop | Stop-Bit
(0) |
Daten
(Data) | AS*8 | Arguments | Rückgabe Argument(e)1 ...
n |
-
Verschiedene
unterschiedliche Typen von Sperroperationen werden unterstützt, basierend
auf dem LockTyp-Feld in dem Sperraufforderungskommando. Für jeden
Sperrtyp wird eine unterschiedliche Anzahl von ein-Byte-Argumenten
in dem Sperraufforderungskommando zur Verfügung gestellt, und eine unterschiedliche Anzahl
von ein-Byte-Argumenten wird in dem Sperrantwort-Kommando von dem
Ziel zurückgegeben.
Die Argumente selbst werden auf den Datenleitungen zur Verfügung gestellt
und die Anzahl der Argumente wird in dem ArgSize-Feld sowohl des
Sperraufforderungs- als auch des Sperrantwort-Kommandos spezifiziert.
Beispiele von gewünschten
Sperrtypen sind Byte-Compare-and-Swap, Byte-Subtraktion, wenn größer oder gleich,
und andere Sperrtypen, welche dem Fachmann bekannt sind.
-
Ein
Ziel kann auch zusätzliche
Informationen als eine Antwort auf eine Quellanforderung ausgeben. Zum
Beispiel kann ein Flusskontrollkommando (FLOW_CONTROL) von einem
Ziel dazu verwendet werden, die Rate, mit der Daten an es gesendet
werden, zu steuern. In der dargestellten Ausführungsvariante ist für ein Ziel
gewünscht,
immer empfangsbereit zu sein, wenn ein logischer Kommunikationskanal
aufgebaut wird. Das Flusskontrollkommando kann deshalb zurück zur Quelle
signalisieren, dass weitere Übertragungen
verzögert
werden müssen,
was dazu führt,
dass die Quelle weitere Sendungen verzögert, bis eine Fertigindikation von
dem Ziel ausgegeben wird. Ein geeignetes Format für das Flusskontrollkommando
ist nachstehend in Tabelle VII gezeigt, und es sollte gewürdigt werden,
dass zusätzliche
Statuscodes über
simples fertig und beschäftigt
hinausgehen, unterstützt
werden: Tabelle VII: Kommandoformat der Flusssteuerung
(FB nach FB)
Leitung | Bit
s | Name | Beschreibung
(Wert) |
Kommando (CMD) | 1 | Start | Start-Bit(1) |
4 | Token | FLOW_CONTROL
Token (0110) |
2 | Status | Anschlussstatus
(00 = BUSY, 01 = READY) |
1 | Stop | Stop-Bit
(0) |
-
Ein
Ziel kann auch dazu benötigt
werden, einen Fehler als Antwort auf eine Anforderung von der Quelle
zurückzugeben,
z. B. unter Verwendung eines Fehler-(ERROR)-Kommandos. Jegliche Anzahl von
Fehlertypen kann unterstützt
sein, z. B. geschützte
Adresse, Nur-Lesen, usw. Ein geeignetes Format für ein Fehlerkommando ist in
nachfolgender Tabelle VIII gezeigt: Tabelle VIII: Fehlerkommandoformat (FB
nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMC) | 1 | Start | Start-Bit(1) |
4 | Token | ERROR
Token (0111) |
4 | Type | Error-Type
(0001 = Prot. Address, 0010 = Read Only) |
1 | Stop | Stop-Bit
(0) |
-
Es
kann auch gewünscht
sein, die Verwendung von Unterbrechern über die gleichzeitige serielle
Verbindung zu unterstützen.
In der dargestellten Implementierung wird ein Unterbrechungsservice-Kommando (INT_SERV_REQ)
unterstützt,
um einem Funktionsblock zu gestatten, eine Unterbrechung von dem
Host anzufordern, über
sowohl die Schnittstellensteuereinheit und Master-Anschluss, als
auch von einem weiteren Funktionsblock (z. B. um explizite anderweitige
vorrangige Belegung (Präemtion)
durchzuführen).
Mit diesem Kommando ist es wünschenswert,
der Schnittstellensteuereinheit einen Indikator des Ziels oder des
angeforderten Anschlusses, sowie eine Adresse einer Service-Routine
in dem Zielanschluss zur Verwendung bei der Ausführung der Unterbrechung zur
Verfügung
zu stellen. Wenn das Kommando von der Schnittstellensteuereinheit
zu dem Zielanschluss gesendet wird, wird eine Indikation des anfordernden
Anschlusses anstatt des Zielanschlusses zur Verfügung gestellt. Alternativ dazu
können
verschiedene Unterbrechungstypen unterstützt werden, wobei nur ein Unterbrechungstyp übertragen
wird, so dass eine bestimmte Service-Routine, welche gemäß dem Unterbrechungstyp
in dem Ziel definiert ist, ausgeführt wird.
-
Ein
geeignetes Kommandoformat für
das Kommando zur Anforderung des Unterbrechungsservice ist nachfolgend
in Tabelle IX gezeigt: Tabelle IX: Kommandoformat einer Unterbrechungsserviceanforderung (FB/IC nach IC/FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | INT_SERV_REQ
Token (1000) |
4 | ReqPort | ID
des angeforderten Anschlusses (FB nach IC)/ID des anfordernden Anschlusses
(IC nach FB) |
5 | SRAddrSize | Anzahl
der Adressen-Bits der Unterbrechungsservice-Routine RS |
1 | Stop | Stop-Bit
(0) |
Daten
(DATA) | RS | SRAddr | RS-Bits
der Adresse der Unterbrechungsservice-Routine |
-
Als
Antwort auf eine Unterbrechungsservice-Anforderung antwortet das
Ziel typischerweise dem anfordernden Anschluss über die Schnittstellensteuereinheit
mit einem Unterbrechungsservice-Antwortkommando (INT_SERV_RESP),
welches dazu verwendet wird, anzuzeigen, ob die Unterbrechung gestattet
oder verweigert worden ist, und typischerweise enthält dieses
eine unterschiedliche Anzahl von Rückmeldungs-Codes, um verschiedene
Antworten zu kennzeichnen. Ein geeignetes Format des Antwortkommandos
für den
Unterbrechungsservice ist nachfolgend in Tabelle X gezeigt: Tabelle X: Format des Antwortkommandos
des Unterbrechungsservice (FB/IC nach IC-FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando | 1 | Start | Start-Bit
(1) |
4 | Token | INT_SERV_RESP
Token (1001) |
4 | ACK/NAK | Rückmeldungscode |
1 | Stop | Stop-Bit
(0) |
-
Wie
weiter oben beschrieben, können
direkte Kommunikationen zwischen Funktionsblöcken typischerweise nicht auftreten,
bis ein logischer Kommunikationska nal zwischen einem Quellfunktionsblock
und einem oder mehreren Zielfunktionsblöcken aufgebaut worden ist.
Um den Aufbau eines solchen Kanals abzuwickeln, wird ein Kanalanforderungskommando
(CHANNEL_REQ) verwendet. Das Kanalanforderungskommando ist anfänglich von
einer Quelle zu der Schnittstellensteuereinheit gerichtet, um den
Aufbau eines logischen Kommunikationskanals anzufordern. Wenn ein
verfügbarer
Kanal für
das (die) spezifizierte(n) Ziel(e) existiert, wird ein Kanalanforderungskommando
daraufhin von der Schnittstellensteuereinheit zu dem (den) Zielanschluss(-anschlüssen) weitergegeben.
Geeignete Formate für
das Signalanforderungskommando von der Quelle zu der Schnittstellensteuereinheit
und von der Schnittstellensteuereinheit zu dem Ziel (den Zielen) sind
nachfolgend in Tabelle XI und XII gezeigt: Tabelle XI: Kommandoformat der Kanalanforderung
(FB nach IC)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | CHANNEL_REQ
Token (1010) |
2 | Type | Kanaltyp
(00 = unidirektional, 01 = bidirektional) |
4 | NumPorts | Anzahl
der Zielanschlüsse
NP |
1 | Stop | Stop-Bit
(0) |
Daten
(DATA) | NP*4 | TargetPorts | Zielanschluss
IDs |
Tabelle XII: Kommandoformat der Kanalanforderung
(IC nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | CHANNEL_REQ
Token (1010) |
2 | Type | Kanaltyp
(00 = unidirektional, 01 = bidirektional) |
4 | SourcePort | ID
des Quellanschlusses |
1 | Stop | Stop-Bit
(0) |
-
Gemäß dieser
Implementierung wird ein Maximum von 16 Anschlüssen unterstützt, obwohl
jede Anzahl von Anschlüssen
dadurch unterstützt
werden kann, indem die Größen der
Anschluss-ID-Felder variiert werden. Des Weiteren kann vorgesehen
sein, dass unidirektionale und bidirektionale Kanaltypen unterstützt werden.
Mit dem unidirektionalen Typ werden Broadcast-Kanäle mit multiplen
Zielen ermöglicht.
Bidirektionale Kanäle
unterstützen
nur ein einziges Ziel. Des Weiteren spart sich das Kanalanforderungskommando
von der Quelle zur Schnittstellensteuereinheit die Anschluss-ID
der Quelle (weil diese Information der Schnittstellensteuereinheit
bekannt ist), aber das Kanalanforderungskommando von der Schnittstellensteuereinheit
stellt diese Anschluss-ID dem Ziel (den Zielen) zur Verfügung.
-
Bei
Empfang eines Kanalanforderungskommandos hat ein Zielknoten die
Möglichkeit,
den Aufbau eines Signals zu anzunehmen oder zu verweigern, durch
das Vorsehen eines geeigneten Verbindungsantwortkommandos (CONNECT_RESP)
zurück
zu der Schnittstellensteuereinheit, welche daraufhin an die Quelle weitergegeben
wird. Geeignete Formate für
beide Phasen des Verbindungsantwortkommandos werden nachfolgend
in Tabellen XIII und XIV gezeigt: Tabelle XIII: Kommandoformat der Verbindungsantwort
(FB nach IC)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | CONNECT_RESP
Token (1011) |
4 | ACK/NAK | Rückmeldungscode |
1 | Stop | Stop-Bit
(0) |
Tabelle XIV: Kommandoformat der Verbindungsantwort
(IC nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando (CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | CONNECT_RESP
Token (1011) |
2 | ACK/NAK | Rückmeldungscode |
4 | RespPort | ID
des Anschlusses des korrespondierenden Anschlusses |
1 | Stop | Stop-Bit
(0) |
-
Der
Rückmeldungscode,
der von dem Ziel gegenüber
der Schnittstellensteuereinheit zur Verfügung gestellt wird, kann dazu
verwendet werden, die Anforderung anzunehmen oder zu bewilligen,
wodurch die Steuereinheit den Kanal aufbaut und der Quelle antwortet,
um den Aufbau des Kanals anzuzeigen. Der Rückmeldungscode kann auch dazu
verwendet werden, den Aufbau des Kanals zu verweigern, z. B. wenn
das Ziel belegt ist und nicht anderweitig vorrangig belegt werden
will. Obwohl mit dem Kanalanforderungskommando die Anschluss-ID des Ziels nicht
notwendigerweise der Schnittstellensteuereinheit zur Verfügung gestellt
werden muss, wird sie jedoch typischerweise zurück zu der ursprünglichen
Quelle von der Schnittstellensteuereinheit in dem Verbindungsantwortkommando
weitergeleitet.
-
Zusätzliche
Kommandos können
von der gleichzeitigen seriellen Verbindung dazu verwendet werden, den
Aufbau, die Entlassung und die Operation von logischen Kommunikationskanälen zu steuern.
Ein Kanalabbruch-(CHANNEL_ABORT)-Kommando
wird entweder von einer Quelle oder einem Ziel ausgegeben, um den
Abbruch irgendeines Kanalverkehrs zu bewirken, und anzufordern,
dass die Schnittstellensteuereinheit alle Kanäle, die mit dem anfordernden
Anschluss verbunden sind, entlässt.
Wenn der anfordernde Anschluss die initiierende Quelle für den Kanal
gewesen wäre,
würden
alle damit assoziierten Anschlüsse
in dem Kanal entlassen. Wenn der anfordernde Anschluss einer der
multiplen Ziele wäre,
würden
nur deren Anschlüsse
entlassen werden, wobei die Schnittstellensteuereinheit ein Verbindungsantwortkommando
zu der Quelle schicken würde,
um einen Kanalstatuswechsel anzuzeigen. Das gleiche Kommandoformat
wird von einem anfordernden Anschluss an die Schnittstellensteuereinheit
verwendet, und von der Schnittstellensteuereinheit an jeden Anschluss,
für den
gewünscht
ist, einen Kanal zu entlassen. Ein geeignetes Format für das Kanalabbruchkommando
ist nachfolgend in Tabelle XV gezeigt: Tabelle XV: Kanalabbruchkommandoformat
(IC nach FB und FB nach IC)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando
(CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | CHANNEL_ABORT
Token (1100) |
1 | Stop | Stop-Bit
(0) |
-
Ein
Anschlussstatuskommando (PORT_STATUS) ist auch unterstützt, um
das Abfragen von Anschlüssen,
um die richtige Operation hierfür
zu bestätigen,
zu ermöglichen.
Zwei Level von Abragen sind in der dargestellten Ausführungsvariante
unterstützt.
Ein erster Level fordert eine Anzeige, mit welchen Anschlüssen (wenn überhaupt)
ein bestimmter Anschluss verbunden ist. Eine zweite Ebene fordert
eine Anzeige des Status des Funktionsblocks, mit welchem ein bestimmter
Anschluss verbunden ist, z. B. ob der Funktionsblock richtig arbeitet,
bereit ist, Daten zu empfangen usw. Der erste Level kann typischerweise
einzig und alleine in der Schnittstellensteuereinheit als Antwort
auf eine Anschlussstatusanforderung von einem der Anschlüsse erledigt
werden, unter der Voraussetzung, dass die momentane Route-/Kanalkonfiguration
der Schnittstellensteuereinheit dazu verwendet werden kann, festzulegen,
welche Anschlüsse
miteinander verbunden sind. Zum Beispiel können geeignete Anschlussstatusanforderungen
von Block
82 abgefangen und verarbeitet werden, wobei die
resultierende Statusinformation an Block
84 zur Rückübertragung
an den anfordernden Anschluss (
2) weitergeleitet
wird. Der zweite Level benötigt
typischerweise jedoch Interaktion mit dem Anschluss, für den der
Status abgefragt wird, wodurch das Weiterleiten geeigneter Anforderungen
von der Schnittstellensteuereinheit zu entsprechenden Anschlüssen notwendig
ist. Separate Kommandoformate können
von einem Funktionsblock zu der Schnittstellensteuereinheit und
zwischen der Schnittstellensteuereinheit und einem Funktionsblock
verwendet werden, wie nachfolgend in Tabellen XIV und XVII gezeigt
ist: Tabelle XVI: Anschlussstatuskommandoformat
(FB nach IC)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando (CMD) | 1 | Start | Start-Bit
(1) |
4 | Token | PORT_STATUS
Token (1101) |
2 | ACK/NAK | Rückmeldungscode |
1 | Stop | Stop-Bit
(0) |
Tabelle XVII: Anschlussstatuskommandoformat
(IC nach FB)
Leitung | Bits | Name | Beschreibung
(Wert) |
Kommando | 1 | Start | Start-Bit
(1) |
4 | Token | PORT_STATUS
Token (1101) |
4 | RespPort | Anschluss-ID
des antwortenden Anschlusses |
4 | NumPorts | Anzahl
der Anschlüsse NP,
mit der der antwortende Anschluss momentan verbunden ist |
2 | ACK/NAK | Rückmeldungscode |
1 | Stop | Stop-Bit
(0) |
Daten | NP*4 | ConnPorts | IDs
der Anschlüsse,
mit denen der antwortende Anschluss verbunden ist |
-
Dementsprechend
werden von der Schnittstellensteuereinheit zu dem Funktionsblock
eine Anzeige der Identität
jedes Anschlusses, der mit dem Anschluss, der abgefragt wird, verbunden
ist, auf der Datenleitung zur Verfügung gestellt.
-
Darüber hinaus
können
verschiedene Rückmeldungscodes
zurückgegeben
werden, um jegliche Anzahl möglicher
Zustände
der Verbindungen, der Anschlüsse
und/oder der Funktionsblöcke
mit denen die Anschlüsse
verbunden sind, anzuzeigen.
-
Es
sollte gewürdigt
werden, dass die Kommandoformate, welche hierin diskutiert werden,
nur ein möglicher
Satz von Formaten sind. Die Erfindung sollte deshalb nicht auf die
hier diskutierten bestimmten Ausführungsvarianten beschränkt sein.
-
Um
noch weiter die Operation einer gleichzeitigen seriellen Verbindung
darzustellen, sind die Operationen, die während der Initialisierung der
Verbindung, während
des Aufbaues eines logischen Kommunikationskanals und während des
Entlassens eines logischen Kommunikationskanals durchgeführt werden,
entsprechend in den 4 bis 6 dargestellt.
-
4 stellt
z. B. eine Systemzurücksetzungsoperation 110 dar,
welche während
einer anfänglichen Inbetriebnahme
durchgeführt
wird. In dieser Ausführungsvariante
wird die Schnittstellensteuereinheit von dem Host über den
Master-Anschluss
initialisiert. Die Operation 110 beginnt in Block 112 damit,
dass die Schnittstellensteuereinheit alle logischen Kommunikationskanäle schließt. Als
nächstes
wird eine Schleife in der Schnittstellensteuereinheit bei Block 14 in
Gang gesetzt, um auf ein Kanalanforderungskommando von dem Master-Anschluss (Anschluss
0) zu warten. Bei Empfang eines solchen Kommandos öffnet die
Schnittstellensteuereinheit einen logischen Kommunikationskanal
mit dem Master-Anschluss als beides, sowohl die Quelle, als auch
das Ziel des Kanals 116.
-
Als
Nächstes
lädt der
Host in Block 118 Entscheidungs- und Verbindungstabellen
in die Schnittstelleneinheit herunter, um insbesondere den Route-Kommando & Steuerlogikblock 80 (3)
zu konfigurieren, um das gewünschte
Entscheidungsschema zu implementieren. Bei der dargestellten Implementierung
wird dies über
die Schreibkommandos, welche weiter oben beschrieben worden sind,
durchgeführt,
wobei eine bekannte Adresse für
die Tabellen in der Schnittstellensteuereinheit verwendet wird.
Es sollte gewürdigt
sein, dass die Logik der Schnittstellensteuereinheit dazu konfiguriert
ist, insbesondere diesen Initialisierungsmodus zu detektieren, wenn
ein logischer Kanal mit dem Master-Anschluss als sowohl die Quelle,
als auch das Ziel aufgebaut wird. Des Weiteren sollte begrüßt werden,
dass, anstatt die Tabellendaten herunterzuladen, die aktuell mikrokodierte
Routine, welche für
die Implementierung eines speziellen Entscheidungsschemas notwendig
ist, gemäß anderen
Implementierungen herunter geladen werden kann. Darüber hinaus
kann in anderen Implementierungen, wenn nur ein festgelegtes Entscheidungsschema
verwendet wird, kein Download von Daten zu der Schnittstellensteuereinheit
notwendig sein.
-
Als
Nächstes
wird in Block 120 der normale Arbeitsmodus für die Schnittstellensteuereinheit
von dem Host aktiviert, der auf den Speicherort als das geeignete
Steuerungsregister unter Verwendung des oben diskutierten Schreibkommandos
(z. B. gemäß Block 20,
gezeigt in 3) schreibt. Während des
Schreibens in das Register werden alle Services der Schnittstellensteuereinheit
aktiviert und die Schnittstellensteuereinheit ist dazu bereit, Steuerbefehle
zu empfangen.
-
5 stellt
bei 125 eine Sequenz von Operationen dar, welche während des
Aufbaus eines logischen Kanals durchgeführt werden. Angefangen bei
Block 126, sendet ein Initialisierungsanschluss (gekennzeichnet als
Anschluss X) ein Kanalanforderungskommando an die Schnittstellensteuereinheit,
wobei ein Zielanschluss (gekennzeichnet als Anschluss Y) bestimmt
wird. Als Nächstes
empfängt
die Schnittstellensteuereinheit in Block 128 das Kommando
und dekodiert die Zielinformation hiervon.
-
Als
Nächstes
bestimmt die Schnittstellensteuereinheit in Block 130,
ob ein offener Kanal erhältlich
ist. Wenn dies der Fall ist, bestimmt die Schnittstellensteuereinheit
als nächstes
in Block 132, ob der Zielanschluss schon an einen Kanal
angeschlossen ist. Unter der Annahme des Ersteren, dass das Ziel
nicht verbunden ist, leitet die Schnittstellensteuereinheit daraufhin
ein Kanalanforderungskommando an den Zielanschluss in Block 134.
-
Als
Nächstes
bestimmt der Zielanschluss, wie in Block, 136 dargestellt,
ob die Verbindung akzeptiert werden soll. Wenn ein Zielanschluss
die Verbindung akzeptiert, sendet der Anschluss ein Anschlussantwortkommando
an die Schnittstellensteuereinheit in Block 138 zurück, wobei
ein Rückmeldungscode
(ACK) angegeben wird. Die Schnittstellensteuereinheit baut den logischen
Kommunikationskanal auf und leitet ein Anschlussantwortkommando
an den Quellanschluss in Block 140 zurück. Bei Beendigung von Block 140 ist
der Kanal aufgebaut und Kommunikation zwischen der Quelle und dem
Ziel (den Zielen) kann beginnen.
-
Zurück zu Block 130,
sendet die Schnittstellensteuereinheit, wenn derzeitig kein Kanal
in der Schnittstellensteuereinheit verfügbar ist, ein Kanalanforderungskommando
zurück
zu dem anfordernden Anschluss in Block 142, wodurch dieser
Anschluss als der Quellanschluss angegeben wird, um dem anfordernden
Anschluss anzuzeigen, dass keine Quellen verfügbar sind. Als Alternative
dazu könnte
ein weiteres Kommando dazu verwendet werden, diesen Fehlzustand
anzuzeigen.
-
Als
Nächstes
Zurück
zur Block 132, sendet die Schnittstellensteuereinheit,
wenn Anschluss Y schon an einen Kanal angeschlossen ist, ein Kanalabbruchkommando
an den anfordernden Anschluss in Block 144, um anzuzeigen,
dass der Zielanschluss nicht verfügbar ist. Als Alternative könnten andere
Kommandos verwendet werden. Wenn ein bestimmter Zielanschluss nicht
verfügbar
ist, könnte
eine anderweitige vorrangige Belegung (Präemtionsoperation), wie weiter
unten beschrieben, dazu verwendet werden, den Versuch zu unternehmen,
den existierenden Kanal zu überschreiben
und einen neuen Kanal zu dem Ziel aufzubauen. Als Alternative dazu
kann des Weiteren wünschenswert
sein, einen Warteschlangenmechanismus in der Schnittstellensteuereinheit
zur Verfügung
zu stellen, um nicht-erfolgreiche Kanalanforderungskommandos zu
speichern und zu versuchen, das Kommando später abzusetzen, anstatt sofort
die Anforderung platzen zu lassen.
-
Als
Nächstes
zurück
zu Block 136 sendet der Anschluss, wenn der Zielanschluss
wünscht,
die Kanalanforderung abzuweisen, ein Anschlussantwortkommando zurück zu der
Schnittstellensteuereinheit in Block 146, wodurch ein Nicht-Bestätigung-(NAK)-Rückmeldungscode
in dem Kommando angegeben wird. Die Schnittstellensteuereinheit
leitet daraufhin den Kode an den anfordernden Anschluss in einem
Anschlussantwortkommando in Block 148 weiter, wobei kein
Kanal aufgebaut wird. Wie oben kann anderweitige vorrangige Belegung
(Präemtionsoperation)
wie weiter unten beschrieben, dazu verwendet werden, Zugang zu dem Zielanschluss
zu erhalten, wenn die normale Verbindungssequenz nicht erfolgreich
ist.
-
Es
sollte gewürdigt
sein, dass zum Aufbau von Mehrfach-Ziel-Kanälen die Schnittstellensteuereinheit die
Kommunikationen mit den multiplen Zielen notwendigerweise überwachen
muss. Zum Beispiel stellt die Schnittstelleneinheit in der dargestellten
Implementierung fest, ob jeder Zielanschluss schon angeschlossen ist,
und sendet Kanalabbruchkommandos an den anfordernden Anschluss für alle schon
angeschlossenen Zielanschlüsse
(wie in Block 132 und 144) zurück. Dies kann entweder dazu
führen,
dass die gesamte Kanalanforderungsoperation abgewiesen wird oder
alternativ dazu führen,
dass der Kanal ohne schon angeschlossene Zielanschlüsse aufgebaut
wird.
-
Auch
sendet die Schnittstellensteuereinheit für alle nicht angeschlossene
Ziele Kanalanforderungskommandos an jedes Ziel (wie in Block 134).
Darüber
hinaus überwacht
die Schnittstellensteuereinheit ein Anschlussantwortkommando eines jeden
Ziels und gibt jede Antwort an den anfordernden Anschluss weiter.
Wie weiter oben, kann entweder der Kanal abgewiesen werden, wenn
nicht alle Ziele den Anschluss annehmen, oder der Kanal kann mit
den anderen Zielen, die den Anschluss annehmen, aufgebaut werden.
-
6 kennzeichnet
bei 150 eine Sequenz von Operationen, die dazu durchgeführt wird,
einen logischen Kanal zu entlassen, entweder von allen Anschlüssen des
Kanals oder von einem Zielanschluss, der daran angeschlossen ist.
Die Operation zum Entlassen des Kanals wird in Block 152 von
dem Funktionsblock bei einem bestimmten Anschluss (Port Z) initiiert,
wobei ein Kanalabbruchkommando an die Schnittstellensteuereinheit
gesendet wird. Dieses Kommando wird daraufhin von der Schnittstellensteuereinheit
in Block 154 detektiert, wobei in Block 156 die
Schnittstellensteuereinheit feststellt, ob der anfordernde Anschluss
der Ursprungsanschluss (Quelle) des Kanals ist.
-
Wenn
dies der Fall ist, ist wünschenswert,
alle angeschlossenen Anschlüsse
von dem Kanal zu entlassen, und deshalb sendet die Schnittstellensteuereinheit
ein Kanalabbruchkommando an alle angeschlossenen Anschlüsse in Block 158.
-
Zurück zu Block 156 stellt
die Schnittstellensteuereinheit, wenn der anfordernde Anschluss
nicht der Ursprung des Kanals ist, in Block 162 fest, ob
der Kanal ein Broadcast-Kanal (d.h. einer mit mehrfachen Zielen) ist.
Wenn nicht, sendet die Schnittstellensteuereinheit Kanalabbruchkommandos
zu sowohl dem anfordernden Anschluss, als auch dem Ursprungsanschluss
in Block 164, und die Operation ist abgeschlossen. Das
Kanalabbruchkommando zurück
zu dem anfordernden Anschluss bestätigt, dass die Unterbrechung
erfolgreich war und das Kanalabbruchkommando zu dem Ursprungsanschluss
zeigt an, dass der anfordernde Anschluss abgetrennt worden ist.
Es ist anzumerken, dass die Kanalquelle nicht entlassen worden ist;
stattdessen muss der Ursprung des Kanals ein weiteres Kanalabbruchkommando
an die Schnittstellensteuereinheit senden, wenn das Entlassen des
Kanals gewünscht
ist. Alternativ dazu kann ein Zielanschluss dazu in der Lage sein, einen
Kanal in einer anderen Implementierung zu entlassen.
-
Zurück zu Block 162,
sendet die Schnittstellensteuereinheit ein Anschlussantwortkommando
an den Urheberanschluss in Block 166, wenn der Kanal ein Mehrfach-Kanal
ist, wobei er einen Nicht-Bestätigung-(NAK)-Rückmeldungscode
anzeigt und den anfordernden Anschluss identifiziert. Dieses hat
den Effekt, dass der Status des anfordernden Anschlusses in dem
Ursprungsanschluss upgedatet wird, so dass der Ursprungsanschluss
darüber
informiert worden ist, dass der anfordernde Anschluss abgetrennt
worden ist. Als Nächstes
sendet die Schnittstellensteuereinheit im Block 168 ein
Kanalabbruchkommando zurück
zu dem anfordernden Anschluss, um zu bestätigen, dass der Anschluss abgetrennt
worden ist. Die Operation ist daraufhin abgeschlossen.
-
Als
ein Beispiel der generellen Operation der gleichzeitigen seriellen
Verbindung stellen 7A bis 7C Beispiel-Kommandos
dar, welche zwischen einem Paar von Funktionsblöcken ausgegeben werden, um
eine Basis-Lose-Operation von einem ersten Funktionsblock zu einem
zweiten Funktionsblock durchzuführen.
Um das Beispiel zu vereinfachen, wird angenommen, dass jeder Funktionsblock
ein 4-Bit-großes
Adressspeicherfeld besitzt (16 mögliche
Speicheradressen), und dass ein Maximum von 16 Anschlüssen mit
dem Anschluss verbunden werden kann. In diesem Beispiel wünscht ein
Funktionsblock mit einem Anschlusskennzeichen 7, die Inhalte von
zwei sequentiellen Speicheradressen in einem Funktionsblock mit
einem Anschlusskennzeichen 9 zu lesen, wobei bei Speicheradresse
14 (0x1110) gestartet wird. Der Funktionsblock bei Anschluss 7 wünscht, dass
die Inhalte dieser Speicheradressen (bei welchen davon ausgegangen
wird, dass sie 0x00000001 & 0x00000010
sind) in zwei sequentielle Speicheradressen geschrieben werden,
wobei bei einer Speicheradresse 8 (0x1000) gestartet wird.
-
Wie
in 7A gezeigt, muss ein Kanal zwischen Anschlüssen 7 und
9 aufgebaut werden, um die Leseoperation durchzuführen. Anschluss
7 sendet deshalb ein Kanalanforderungskommando zur Schnittstellensteuereinheit,
wodurch angegeben wird, dass ein unidirektionaler Kanal mit Anschluss
9 angefordert wird. Davon ausgehend, dass ein Kanal verfügbar ist,
wird das Kanalanforderungskommando einige Zeit später (wie durch
die „//"-Zeichen gekennzeichnet
ist) durch die Schnittstellensteuereinheit zu Anschluss 9 weitergeleitet, wobei
hierin angezeigt wird, dass Anschluss 7 einen Kanal angefordert
hat. Davon ausgehend, dass Anschluss 9 verfügbar ist, leitet der Anschluss
ein Anschlussantwortkommando zurück
zu der Schnittstellensteuereinheit mit einem ACK-Rückmeldungscode,
was dazu führt,
dass die Schnittstellensteuereinheit ein An schlussantwortkommando
zurück
zu dem anfordernden Anschluss 7 leitet, wobei ein ACK-Code angezeigt wird
und Anschluss 9 identifiziert wird. Daraufhin wird ein Kanal aufgebaut.
-
Als
Nächstes,
wie in 7B gezeigt, gibt der Funktionsblock,
der mit Anschluss 7 verbunden ist, auf den Kommando- und Dateneingangsleitungen
von Anschluss 7 ein Leseanforderungskommando aus. Basierend auf
dem existierenden Kanal wird die Information direkt zu den Kommando-
und Datenausgangsleitungen von Anschluss 9 von der Schnittstellensteuereinheit
(welche nicht separat gezeigt ist) weitergeleitet. Das Leseanforderungskommando
gibt auf der Kommandoeingangsleitung eine Zieladresse von 0x1110
und eine Quelladresse von 0x1000 an und zeigt auf der Dateneingangsleitung,
dass 2 Datenbytes angefordert werden.
-
Einige
Zeit später
antwortet der Funktionsblock bei Anschluss 9 auf die Leseanforderung
durch Ausgabe eines Adresseschreibkommandos auf den Kommando- und Dateneingangsleitungen
von Anschluss 9. Die Information wird direkt von der Schnittstellensteuereinheit
zu den Kommando- und Datenausgangsleitungen von Anschluss 7 weitergeleitet.
Das Adresseschreibenkommando gibt auf den Kommandoeingangsleitungen
an, dass eine vier-Bit-Adresse (Adresse 0x1000) auf der Dateneingangsleitung
ist, welche der Quelladresse entspricht, die in dem Leseanforderungskommando
zur Verfügung
gestellt worden ist. Das Adressschreibekommando ist daraufhin dicht
gefolgt von zwei Datenschreibekommandos, von denen jedes die entsprechend angeforderten
Inhalte der Speicheradressen 0x11110 und 0x1111 zur Verfügung stellt.
-
Bei
Beendigung der Lese-/Schreibkommandos ist der Kanal zwischen Anschlüssen 7 und
9 immer noch aktiv, bis zur Entlassung. Dementsprechend wird, wie
in 7C dargestellt, ein Kanalabbruchkommando zu der
Schnittstellensteuereinheit weitergeleitet, wenn der Funktionsblock
bei Anschluss 7 feststellt, dass der Kanal nicht länger gebraucht
wird, welche hiernach Kanalabbruchkommandos zu sowohl Anschluss
7 als auch Anschluss 9 ausgibt, was dazu führt, dass die Kanalquelle entlassen
wird.
-
Es
ist festzustellen, dass in jedem Fall, in dem Informationen sowohl
auf den Kommando- als auch auf den Datenleitungen weitergeleitet
werden, die Kom mandoleitungen (und speziell die Inhalte darauf)
jedes Kommando Datenrahmen, um die Ausrichtung zwischen den Informationen
in den Kommando- und Datenleitungen aufrechtzuerhalten. Dementsprechend
können
Kommandos variable Längen
aufweisen.
-
Als
Alternative dazu kann eine festgelegte Kommandolänge verwendet werden. Es sollte
gewürdigt werden,
dass ein Taktsignal auch mit allen Kommando- und Dateninformationen
(nicht gezeigt) übertragen wird.
-
Wenn
ein bestimmter Anschluss und/oder Kanal nicht verfügbar ist,
könnten
verschiedenste Arten und Weisen der anderweitigen vorrangigen Belegung
(Präemtion)
eines existierenden Kanals unterstützt werden. Zum Beispiel kann
eine implizite anderweitige vorrangige Belegung (Präemtion)
unterstützt
sein. Für
eine implizite anderweitige vorrangige Belegung (Präemtion)
werden bei verschiedenen Anschlüssen
variierende Prioritäten
innerhalb des Entscheidungsschemas, welches in der Schnittstellensteuereinheit
definiert und/oder programmiert ist, zugelassen. Zum Beispiel ist
oft gewünscht,
dass der Masteranschluss gegenüber
den anderen Anschlüssen
bevorzugt wird, wodurch dem Host gestattet ist, immer andere Funktionsblöcke zu unterbrechen
und den Kanal vorrangig zu belegen.
-
Die
Basissequenz von Operationen, die während eines implizierten anderweitigen
vorrangigen Belegen (Präemptionsoperation)
durchgeführt
werden, sind bei 170 in 8 gezeigt
(die Sequenz von Operationen kann so angesehen werden, dass sie
Block 144 in der Anschlusssequenz von 5 ersetzt).
In dieser Sequenz wird angenommen, dass Anschluss X einen Kanal
mit Anschluss Y anfordert, während
Anschluss Y schon durch einen existierenden Kanal mit Anschluss
Z verbunden ist. Wie in Block 172 gezeigt, sendet der Funktionsblock
von Anschluss X mit einer normalen Anschlusssequenz ein Kanalanforderungskommando
für Anschluss
Y, welches die Schnittstellensteuereinheit empfängt und dekodiert. Die Schnittstellensteuereinheit erkennt,
dass Anschluss Y schon verbunden ist, jedoch anstatt nur ein NAK
zu Anschluss X zurückzugeben, entscheidet
die Schnittstellensteuereinheit in Block 174, ob Anschluss
X eine höhere
Priorität
als Anschluss Z aufweist. Wenn dies nicht der Fall ist, kehrt die
Schnittstellensteuereinheit zum normalen Prozess in Block 176 zurück, sendet
im Grun de ein Anschlussantwortkommando zu Anschluss X mit einem
NAK-Rückmeldungscode.
-
Wenn
jedoch Anschluss X eine höhere
Priorität
aufweist, als Anschluss Z, sendet die Schnittstellensteuereinheit
ein Kanalabbruchkommando an Anschlüsse Y und Z in Block 178,
um die existierende Kanalquelle zu entlassen. Als Nächstes leitet
in Block 180 die Schnittstellensteuereinheit ein Kanalanforderungskommando
zu Anschluss Y weiter, welches aufgrund der kürzlichen Entlassung von Anschluss
Y von einem Kanal, in einem Anschlussantwortkommando mit einem ACK-Rückmeldungscode, welcher von
dem Anschluss Y zurückgegeben
wird, resultiert. Als Nächstes
leitet in Block 182 die Schnittstellensteuereinheit das Anschlussantwortkommando
an Anschluss X weiter, um einen neuen Kanal aufzubauen. Die Kommunikationen
zwischen Anschlüssen
X und Y werden daraufhin gestattet.
-
Zusätzlich dazu
oder anstatt von impliziter anderweitiger vorrangiger Belegung (Präemption)
kann auch explizite anderweitige vorrangige Belegung (Präemption)
unterstützt
werden. Mit expliziter anderweitiger vorrangiger Belegung (Präemption)
fordert ein Funktionsblock eine Unterbrechung mit einem anderen
Funktionsblock nach einem nicht-erfolgreichen Anschlussversuch.
In dieser Situation wird die Entscheidung, ob eine Unterbrechung
zugelassen werden soll, in dem Zielfunktionsblock lieber als in
der Schnittstellensteuereinheit gefällt. Die Schnittstellensteuereinheit
agiert mehr als ein Übermittler,
um die Unterbrechung und Rückbestätigung zwischen
den Anschlüssen,
welche mit den Funktionsblöcken
verbunden sind, zu übermitteln.
-
Zum
Beispiel stellt 9 bei 185 eine Sequenz
von Operationen für
eine explizite Präemptionsoperation
dar. Unter der Annahme, dass Anschluss X versucht hat, sich mit
Anschluss Y zu verbinden, jedoch nicht erfolgreich war, weil der
Anschluss mit Anschluss Z verbunden war, sendet der Funktionsblock über Anschluss X
ein Unterbrechungsservice-Anforderungskommando zu Anschluss Y über die
Schnittstellensteuereinheit. Als Nächstes entscheidet Anschluss
Y, ob die Unterbrechung in Block 188 akzeptiert werden
soll. Diese Entscheidung wird typischerweise auf Basis eines speziellen
Entscheidungsschemas, welches innerhalb des Funktionsblocks, welcher
mit Anschluss Y verbunden ist, definiert ist, gefällt. Wenn
der Funktionsblock entscheidet, die Unterbrechung nicht zuzulassen,
sendet der Anschluss ein Unterbrechungsservice-Antwortkommando zurück zu Anschluss
X über
die Schnittstellensteuereinheit in Block 190, wobei ein
NAK-Rückmeldungscode
angezeigt wird. Die Unterbrechung wird dementsprechend abgewiesen.
-
Wenn
jedoch der Funktionsblock entscheidet, die Unterbrechung zuzulassen,
gibt Anschluss Y sofort ein Unterbrechungsservice-Antwortkommando
zurück
zu Anschluss X über
die Schnittstellensteuereinheit in Block 192, wobei ein
ACK-Rückmeldungscode
angezeigt wird. Als Nächstes
sendet in Block 194 Anschluss Y ein Kanalabbruchkommando
zu der Schnittstellensteuereinheit, was dazu führt, dass die Schnittstellensteuereinheit
Anschluss Y von dem Kanal abtrennt und den Kanal (wenn angebracht)
entlässt,
wie weiter oben beschrieben. Ein Kanalabbruchkommando wird auch
zur Bestätigung
an Anschluss Y zurückgegeben.
-
Als
Nächstes
sendet Anschluss Y in Block 196 ein Kanalanforderungskommando
für Anschluss
X, was dazu führt,
dass ein neuer Kanal zwischen Anschluss X und Y in der Art und Weise,
wie weiter oben unter Bezugnahme auf 5 beschrieben
worden ist, aufgebaut wird. Die Unterbrechung wird dementsprechend
vollzogen, und Kommunikationen zwischen Anschlüssen X und Y werden zugelassen.
-
Es
sollte erwähnt
werden, dass in der dargestellten Implementierung wünschenswert
ist (obwohl nicht notwendig), ein Unterbrechungsservice-Antwortkommando zurück zu dem
anfordernden Anschluss vor einer Entlassung des arbeitenden Anschlusses
und dem Aufbau des neuen Kanals zu senden. Ein Vorteil dieser Konfiguration
besteht darin, dass der arbeitende Anschluss möglicherweise die Durchführung der
Unterbrechung bei Bedarf verzögert,
und trotzdem dem anfordernden Anschluss gegenüber bestätigt, dass die Unterbrechung
durchgeführt
werden wird, sodass der anfordernde Anschluss auf den Aufbau des
neuen Kanals wartet. Zum Beispiel werden einkommende Unterbrechungen
für einen
Anschluss in eine Warteschleife geschoben und bei dieser Ausgestaltung
gemäß einem
Entscheidungsschema behandelt.
-
Es
soll gewürdigt
sein, dass die verschiedenen Funktionen, welche von der hier beschriebenen Schnittstellensteuereinheit,
den Anschlüssen
und den Funktionsblöcken
(speziell den hierin definierten Anschlussschnittstellen) durchgeführt werden,
auf keinen Fall eine ausschließliche
Implementierung der Erfindung darstellen, und deshalb sollte die
Erfindung nicht alleine auf die hierin beschriebenen Implementierungen beschränkt sein.
Umso mehr sollte gewürdigt
werden, dass eine Implementierung der Eigenschaft der Schnittstellensteuereinheit,
der Anschlüsse,
der Anschlussschnittstellen und der Funktionsblöcke sowohl in geeigneter logischer
Schaltung, als auch in den Implementierungen eines geeigneten Programmcodes,
welcher von einer dieser Komponenten ausgeführt wird, in den Kenntnisbereich
fallen, der sich dem Fachmann aufgrund der vorliegenden Offenbarung
erschließt.
-
Als
ein Beispiel ist eine mögliche
Implementierung einer Funktionsblockschaltungsanordnung bei 400 in 10 dargestellt.
Schaltungsanordnung 400 umfasst die Funktionsblocklogik 402,
welche sowohl die primäre
Operationseigenschaft des Funktionsblocks, als auch die Anschlussschnittstellenlogik 403 implementiert.
Die Eigenschaft der Anschlussschnittstelle ist innerhalb einer Vielzahl
von logischen Blöcke
angeordnet, unter anderem einem Adressenkodier-/-Dekodierblock 404,
einem Datendekodier-/-Kodierblock 406, einem Lese-/Schreibsteuerblock 408,
einem Kommandosteuerblock 410, einem Taktblock 412,
Schreibe- und Lese-FIFO-Pufferblöcken 414, 416,
einem Anforderungs-/Zulassungssteuerblock 418, einem Datenflusssteuerblock 420,
DATA-Übertragungs-
und Empfangs-Serialisierungs-/-Deserialisierungs-(SERDES)-Blöcken 422, 424,
Kommando- und Steuerkodierungs- und Dekodierungsblöcken 426, 428 und
einem Taktsynchronisations-/Generierungsblock 430. Weitere
logische Implementierungen können
als Alternative verwendet werden.
-
Gleichzeitige
serielle Verbindungen gemäß der Erfindung
können
in einer großen
Bandbreite von Integrierten-Schaltkreis-Bauteilen und/oder in einer
großen
Bandbreite von Datenverarbeitungssystemen, umfassend Computer, eingebettete
Steuereinheiten und andere programmierbare elektronische Bauteile
verwendet werden. Zum Beispiel zeigt 11 ein
exemplarisches Datenverarbeitungssystem 200, welches praktisch jedes
programmierbare elektronische Bauteil und sogar eine Entwicklungsumgebung
für ein
programmierbares elektronisches Bauteil darstellt. Datenverarbeitungssystem 200 umfasst
eine Systemsteuereinheit 202, verbunden mit einer Speichereinheit,
wie z. B. Synchronous Dynamic Random Access Memory (SDRAM) 204. Ein
Taktoszillator 206 und ein Joint-Test-Automation-Group-(JTAG)-Anschluss 208 (zur
Durchführung
von Bauteil-Überprüfung und
Tests) sind mit der Steuereinheit verbunden. Des Weiteren kann jede
Anzahl von externen Bauteilen mit der Steuereinheit 202 verbunden
sein, Z. B. eine RS232-Schnittstelle 210, eine Steuerungstafel 211,
ein Infrarot-Transceiver 212,
ein Universal-Serieller-Bus-(USB)-Anschluss 214, ein Netzwerkanschluss 216,
ein IEEE-1394-Anschluss 218 und ein LCD-Display 220,
unter anderem. Weitere externe Bauteile können mit der Systemsteuereinheit über ASB-
und PCI-Slots 221, 222 verbunden werden.
-
Wie
in 12 gezeigt ist, kann die Systemsteuereinheit 202 durch
Verwendung eines gleichzeitigen seriellen Anschlusses gemäß der Erfindung
implementiert sein, mit einer Schnittstellensteuereinheit 223,
welche eine Vielzahl von seriellen Anschlüssen 224 steuert,
die mit einer Vielzahl von Funktionsblöcken über serielle Anschlüsse 225 verbunden
sind, die mit Anschlussschnittstellen 226, welche innerhalb
jedes Funktionsblocks definiert sind, verbunden sind. Steuereinheit 202 umfasst
einen Funktionsblock 228 als zentrale Steuereinheit (CPU),
welcher als Host für
die gleichzeitigen seriellen Verbindungen fungiert, welche durch
Master-Anschluss
0 über
einen DMA/Cache-Block 230, innerhalb dessen eine Anschlussschnittstelle 226 definiert ist,
verbunden ist. Zusätzliche
Verarbeitungseinheiten, z. B. eine Floating-Point-Einheit 232,
kann mit der CPU 228 verbunden sein, und weitere Speicherbauteile,
Z. B. ROM 234, können
mit Block 230 verbunden sein. Prüfen und Testen kann durch einen
JTAG-Block 236 durchgeführt
werden, welcher mit einem JTAG-Anschluss 208 (11)
verbunden ist.
-
Anschlüsse 1 und
2 sind mit einem SDRAM-Steuereinheitfunktionsblock
238 verbunden,
der über
ein Paar von Anschlussschnittstellen
226 verfügt. Anschluss
3 ist so dargestellt, dass er mit einem JAVA-Beschleunigungsfunktionsblock
240 verbunden
ist, der dazu verwendet wird, die Verarbeitung von JAVA-Sprach-Bytekodierungen auf
der CPU
228 zu beschleunigen (wie z. B. in
US S/N 08/757,430 , angemeldet am
27. November 1996 von David Ross Evoy). Anschlüsse 4 und 5 sind mit ASB- und
PCI-Verbindungsblöcken
244,
246 verbun den,
welche ihrerseits mit ASB- und PCI-Slots
221,
222 entsprechend
(
11) verbunden sind.
-
Anschlüsse 6 bis
11 sind entsprechend mit einem 16550/GP1O-(General Purpose Input/Output)-Funktionsblock 248,
einem Infrarotschnittstellen-Funktionsblock 250, einem
USB-SIave-Funktionsblock 252, einem Ethernet-Medienzugangssteuerungs-(MAC)-Funktionsblock 254,
einem 1394-Schnittstellen-Funktionsblock 256 und
einem LCD-Treiber-Funktionsblock 258 verbunden. Jeder dieser
Funktionsblöcke
ist mit den geeigneten Komponenten 210 bis 220 von 11 verbunden.
-
13 stellt
ein weiteres exemplarisches Datenverarbeitungssystem, eine Set-Top-Box 300 zur
Verwendung bei der Distribution eines digitalen Videosignals von
einer Kabelfernsehübertragung
zu einem Fernseher dar. Set-Top-Box 300 umfasst eine Steuereinheit 302,
die mit SDRAM 304 verbunden ist. Zusätzlich verbunden mit der Steuereinheit
ist eine Steuertafel 306, ein Taktoszillator 308,
JTAG-Anschluss 310, Infrarot-Transceiver 312,
Videoausgangsanschluss 314, 1394-Anschlüsse 316, 318,
Videoeingangsanschluss 320 und ein alternierender Videoeingangsanschluss 322.
-
Wie
in 14 gezeigt, ist Steuereinheit 302 mit
den verschiedenen externen Komponenten aus 13 über eine
Vielzahl von Funktionsblöcken
verbunden, welche ihrerseits über
den gleichzeitigen seriellen Anschluss gemäß der Erfindung verbunden sind.
Eine Schnittstellensteuereinheit 324 ist mit einer Vielzahl
von seriellen Anschlüssen 326 verbunden,
welche ihrerseits mit Funktionsblöcken über serielle Anschlüsse 328 und
Anschlussschnittstellen 333, welche in jedem der Funktionsblöcke definiert
sind, verbunden sind.
-
Ein
CPU-Funktionsblock 332 ist mit einem Masteranschluss 0 über einen
DMA/Cache-Block 334 verbunden und operiert als Host für den gleichzeitigen
seriellen Anschluss. Zusätzliche
Komponenten, z. B: ein FPU-Block 336 und eine ROM 338,
können
auch mit Blöcken 332 und 334 ihrerseits
verbunden sein. Ein digitaler Videokodier-(DENC)-Funktionsblock 340 ist
mit Anschluss 1 über
einen Anzeigeblock 342 verbunden und ist schließlich mit
dem Videoausgangsanschluss 314 aus 13 verbunden.
Anschluss 2 ist mit einem zentralen Service funktionsblock 344 verbunden,
welcher die Steuereinheit mit einer Anzahl von zentralen Services,
umfassend Komponenten 306 bis 312 aus 13,
verbindet. Anschlüsse
3 und 4 sind mit 1394-Linkfunktionsblöcken 346, 348 verbunden,
welche ihrerseits mit Anschlüssen 316, 318 (13)
verbunden sind. Anschlüsse
5 bis 8 sind ihrerseits mit MPEG-Funktionsblock 350, Kabeltransport-Funktionsblock 352, 2D/3D-Graphikfunktionsblock 354 und
digitalem Videoempfangsfunktionsblock 356 verbunden. Blöcke 352 und 356 sind
ihrerseits mit den Anschlüssen 320, 322 (13)
verbunden.
-
Um
eine der Steuereinheiten 202, 302 aus 12, 14 zu
entwerfen, würde
jeder der Funktionsblöcke,
der hierfür
notwendig wäre,
zusammengebaut und geeignet ausgelegt, wie dem Fachmann wohlbekannt
ist. Innerhalb jedes Funktionsblocks wäre eine geeignete generische
Anschlussschnittstelle, oder alternativ dazu könnte eine angepasste Schaltung
entworfen werden, um die I/O-Anschlüsse für einen
Funktionsblock mit einer generischen Anschlussschnittstelle, welche
außerhalb
des Blocks ist, zu verbinden. Als Nächstes würde ein gleichzeitiger serieller
Anschluss dem Entwurf hinzugefügt
werden, umfassend eine Schnittstellensteuereinheit mit geeigneter
Anzahl von Kanälen
und geeigneter Anzahl von Anschlüssen,
notwendig für ein
adäquates
Verbinden der Funktionsblöcke
in dem Entwurf Daraufhin könnten
die Funktionsblöcke
durch simples Routing der geeigneten seriellen Kommando-/Daten-/Takteingangs-/Ausgangsleitungen
zwischen den Ausgängen
und den Funktionsblocks miteinander verbunden werden, um den gleichzeitigen
seriellen Anschluss zu bilden.
-
Gleichzeitige
serielle Anschlüsse
gemäß der Erfindung
verfügen über eine
Anzahl von einzigartigen Vorteilen. Zunächst ist ein Routing-Stau typischerweise
reduziert, weil eine reduzierte Anzahl von Drähten benötigt wird, um die Funktionsblöcke zu verbinden,
im Vergleich zu Multidrop-Bus-Schnittstellen. Zweitens ist die Wiederverwendbarkeit
verbessert worden, weil die Schnittstelle „Datengerahmt" ist und das Steuerschema kodiert
ist. Drittens das Hinzufügen
von neuen Systemfunktionen, insbesondere neuer Funktionsblöcke zu einem
Entwurf typischerweise nur den Entwurf der Schnittstellensteuereinheit
beeinflusst, wodurch die Entwurf-Wiederverwendung vergrößert wird,
da ältere
Blöcke
mit neuen Blöcken
mit kleiner oder keiner Veränderung
verwendet werden können.
Viertens muss das Testen für
Datenintegrität
und das Implementieren von Fehlerkor rekturen typischerweise nur
für die
Schnittstellensteuereinheit durchgeführt werden, da die Steuereinheit
zum primären
Datenrouter für
den Entwurf wird. Fünftens
wird den gesamten Entwurf durch das Zur-Verfügung-Stellen des Taktes zwischen
den Funktionsblöcken
synchron, auch wenn einer oder mehrere der Funktionsblöcke autonom
zu anderen Blöcken
arbeiten. Sechstens, sind ausgesprochen hohe Datenraten aufgrund
der hohen Übertragungsgeschwindigkeit über den
Anschluss möglich.
Des Weiteren wird der Gesamtdurchlass mit mehreren Kanälen noch
darüber
hinaus vergrößert.