-
Die
Erfindung betrifft Datenprozessoren mit serieller synchroner Arbeitsweise.
-
In
der Anfangszeit der digitalen Rechenautomaten wurden aus Gründen der
Materialökonomie zunächst synchrone
serielle Rechner entworfen. Da sich bei gegebener Taktrate durch
Parallelverarbeitung eines vollen Datenworts die Rechengeschwindigkeit
gegenüber
einem seriellen Rechner wesentlich steigern lässt, wurden serielle Rechner
kaum noch verwendet.
-
Mit
gleichzeitig ansteigenden Taktraten und in der räumlichen Ausdehnung grösser werdenden Rechnern
nehmen jedoch auch Probleme in parallelen synchronen Rechnern durch
Laufzeitunterschiede zu, die wiederum teilweise nur durch Reduktion der
Taktrate auffangbar sind.
-
Für Sonderanwendungen
wie die digitale Signalverarbeitung werden daher weiterhin synchrone serielle
Rechner verwendet, die häufig
für ein
spezielles Problem zugeschnitten sind und dort dann z.B. weniger
Leistung als ein entsprechender paralleler Entwurf benötigen. Kaskadenschaltungen
('pipelining') von Baugruppen
ist hier weit verbreitet, da diese lediglich die Gesamtverzögerung,
aber nicht den Durchsatz verschlechtern und die Daten meist ohnehin
seriell anfallen.
-
Insbesondere
durch die Kaskadierung ist bei den seriellen synchronen Schaltkreisen
die Ablaufsteuerung bei hohen Taktraten nicht problemlos. Wegen
der synchronen getakteten Arbeitsweise ist ein hoher Aufwand notwendig,
um sicherzustellen, dass die von einer zentralen Steuerung vorausgesetzen Datenwörter zur
richtigen Zeit an der richtigen Baugruppe vorliegen.
-
Zwar
sind auf dem Gebiet der asynchronen, eigengetakteten Schaltungen
in letzter Zeit wesentliche Fortschritte erreicht worden. Da dieser
Schaltungstyp sich lokal selbst synchronisiert, kann er immer mit
höchstmöglicher
Geschwindigkeit ungeachtet von Streuungen in den Verzögerungszeiten
arbeiten. Jedoch ist die Entwurfsmethodik noch nicht auf einem den
synchronen Schaltungen vergleichbaren Stand.
-
Die
Erfindung stellt sich daher die Aufgabe, bei synchronen seriellen
Rechenschaltungen durch eine lokale Synchronisation ähnliche
Vorteile wie bei den ungektakten asynchronen Schaltungen zu erzielen,
ohne dass hierzu die Entwurfsmethodik der synchronen Schaltungen
verlassen werden muss.
-
Eine
bitserielle Datenübermittlung
ist insbesondere aus der Datenfernübertragung bekannt. Hierbei
wurden insbesondere die nachfolgend beschriebenen Verfahren benutzt:
Eines
davon wird üblicherweise
als asynchron bezeichnet und mit den Abkürzungen 'V24' oder 'RS232' assoziiert. Hierbei
befindet sich die Datenleitung in einem Ruhezustand, wenn keine
Daten übertragen
werden. Durch einen nicht zwischen Sender und Empfänger synchronisierten
Pegelwechsel, als Startbit bezeichnet, wird im Empfänger ein
lokaler Taktgenerator gestartet, der mit einer vorab zwischen Sender
und Empfänger
vereinbarten Frequenz schwingt. Anschliessend an das Startbit werden
7, 8 oder 9 Bits (ebenfalls vorab vereinbart) synchron zum Taktgenerator
des Senders gesendet; gefolgt von einem Stopbit mit dem auch im
Ruhezustand benutzten Wert. Es ist also erforderlich, dass der Taktgenerator
im Empfänger
sofort mit der richtigen Geschwindigkeit arbeitet. Da nur wenige
Bits übertragen
werden, sind die beiden Taktgeneratoren in etwa synchron. Das empfangene
Datenwort muss sodann noch mit dem restlichen Systemtakt synchronisiert werden.
Nach dem Stopbit und einer darauf möglichen Sendepause werden die
beiden Taktgeneratoren durch das nächste Startbit erneut synchronisiert. Die
dafür geeignete
Bezeichnung 'plesiosynchron' hat sich nicht durchgesetzt.
-
Um
Datenverluste zu vermeiden, wenn der Empfänger langsamer arbeitet als
der Sender, wurde als Hardware-Lösung
neben der Datenleitung eine Anzahl von Steuerleitungen sowohl in
Daten- als auch in Gegenrichtung vorgesehen, mit denen beispielsweise
der Empfänger
signalsieren kann, dass kein Puffer für ein neues Zeichen vorhanden
ist. Damit wird dann bewirkt, dass der Sender die Pausen zwischen
zwei Zeichen verlängert,
bis dieses Signal wieder deaktiviert wird.
-
Eine
Verwendung dieser Methode zur seriellen Datenübertragung zum Datentransport
in Baugruppen eines Prozessors ist allein deshalb nicht möglich, weit
die Daten nicht mit dem vollen Prozessortakt übertragen werden können. Ausserdem
beanspruchen die Zeiten für
die Start- und Stopbits bei acht Bit Nutzdaten 20% der Bandbreite.
-
Daher
wurde ein als HDLC bzw. SDLC bekanntes Verfahren von der Firma IBM
entwickelt, bei dem zusätzlich
zu der Datenleitung noch eine Taktleitung vorhanden ist, beide Seiten
also mit demselben Takt arbeiten. Hier werden, wenn keine Daten
vorliegen, reservierte Zeichen gesendet. Anstelle einer Taktleitung
werden auch Füllbits
eingefügt,
um eine Mindestanzahl von Pegelwechseln zu erreichen und so über Phasensychronisation
die Taktgeneratorn auf beiden Seiten synchron zu hatten. Auch diese
Lösung
jedoch kann nicht mit vollem Prozessortakt übertragen.
-
Für die Kopplung
von integrierten Schaltkreisen wird häufig der IIC-Bus verwendet.
Dieser verfügt über eine
Takt- und eine Datenleitung, bei der die Flanken auf der Taktleitung
die Datenübernahmen bestimmen;
es handelt sich insoweit um ein synchrones Verfahren. Das Wartesignal
besteht dabei jedoch darin, dass das Taktsignal durch geschaltete
Veroderung von dem Empfänger
verlängert
werden kann. Dies ist nur bei niedrigen Taktraten beherrschbar.
-
Im
Bereich der Kopplung von Prozessoren wurde von der damaligen Firma
INMOS für
die Transputer-Zentraleinheiten eine wenig aufwendige asynchrone
serielle Schnittstelle verwendet. Hierbei werden zwei gleiche Startbits
verwendet, auf die acht Datenbits und ein Stopbit folgen. Da diese
Verbindungen immer einem Paar von Leitungen, für jede Richtung eine, benutzt
werden, ist ein spezielles Quittungssignal 'ack' vorgesehen.
Diese besteht lediglich aus einem Start- und einem Stopbit und kann daher,
da ein Datenpaket mit zwei Startbits anfängt, davon unterschieden werden.
Ein 'ack' Paket quittiert das
aktuelle Datenbyte und signalisiert gleichzeitig, dass ein Puffer
für ein
weiteres Datenbyte frei ist. Die Abwesenheit eines solchen 'ack' verlängert also
in bekannter Art die Pause zwischen zwei Datenpaketen.
-
In
der Patentschrift
US
6,215,817 B1 wird eine serielle Schnittstelle beschrieben,
bei der eine gemeinsame Leitung für beide Signalrichtungen verwendet
wird. Die Schnittstelle wird synchron gemäß den oben beschriebenen Verfahren
getaktet.
-
In
der Offenlegungsschrift WO 01/59577 A1 wird ein Buskoppler gezeigt,
bei dem für
jede Richtung getrennte synchron getaktet serielle Schnitstellen
verwendet werden.
-
In
der Offenlegungsschrift
DE
197 37 369 A1 wird ein Datenspeicher beschrieben, bei dem
die Übertragung
nach einem der oben genannten seriellen Verfahren (V24, I
2C) erfolgt.
-
In
keiner dieser Schriften wird vorgesehen, daß das Startsignal vor Beginn
der Datenbits verlängerbar
ist.
-
In
allen diesen Fällen
wird davon ausgegangen, dass der Empfänger zumindest ein Datenbyte oder
-wort in einem Eingangspuffer hält.
Daher ist nirgendwo vorgesehen, dass zwischen Startbit und den Datenbits
eine Wartezeit eingeschoben wird. Dies hängt auch damit zusammen, dass
bei einer parallelen Weiterverarbeitung die Daten ohnehin durch
den Serien-Parallel-Wandler gepuffert werden müssen.
-
Will
man jedoch innerhalb einer Zentralheinheit und insbesonderer bei
kaskadierter Verarbeitung für
jeden Operator sowohl Eingangs- als
auch Ausgangspuffer für
die vollen Datenworte vorsehen, so entsteht ein sehr hoher Aufwand
und eine hohe Gesamtverzögerungszeit.
-
Die
vorliegende Erfindung erlaubt es, Datenwörter mit der vollen Taktgeschwindigkeit
zu übertragen
und dennoch ohne zentrale Steuerung sowohl beliebig lange Pausen
zwischen Datenworten (wenn der Sender noch keine Daten bereit hat)
als auch ein Anhalten der Übertragung
(wenn der Empfänger noch
keine Daten aufnehmen kann) zu bewirken.
-
Dabei
wird ein konstanter Ruhepegel, d.h. eine Folge von Nullen, verwendet.
Liegt im Sender ein Datenwort fertig vor, so sendet dieser ein Startbit, indem
die Datenleitung mit der für
den zentralen Takt notwendigen Vorlaufzeit auf Eins gesetzt wird.
Anders als bei der asynchronen Datenübertragung wird also nicht
die ansteigende Flanke, sondern das Vorliegen einer Eins relativ
zum Taktimpuls ausgewertet. Durch eine in Gegenrichtung führende Signalleitung kann
der Empfänger
signalisieren, ob er für
die Übernahmen
von Daten bereit ist. Dies kann nicht nur ein noch nicht ausreichend
entleerter Ausgangspuffer sein. Bei mehrstelligen Operatoren müssen alte
Operanden gleichzeitig anliegen, so dass ein solches Wartesignal
auch notwendig ist, wenn der andere Operatoreingang noch keine Daten
vorliegen hat.
-
Liegt
ein solcher Fall vor, so wird das Startbit verlängert. Wegen der synchronen
Arbeitsweise von Sender und Empfänger
kann dieses praktisch beliebig lange andauern. Bei der asynchronen
Datenübertragung
ist diese Methode überhaupt
nicht möglich, da
sonst die Taktgeneratoren in Sender und Empfänger schnell ausser Phase geraten
würden.
-
Kann
die empfangende Baugruppe Daten aufnehmen, wird ein Datenwort von
vorbestimmter Länge
ohne Unterbrechung übertragen.
In der Regel wird daraufhin ein Stopbit gesendet, um das Schaltungsdesign
zu vereinfachen. Notwendig ist es nicht; auf das letzte Datenbit
kann durchaus bereits unmittelbar ein neues Startbit folgen. In
den folgenden Auführungsbeispielen
wird immer mindestens ein Stopbit verwendet, um die Schaltungen übersichtlich
zu halten.
-
Zwar
ist auch hier wieder ein Verlust von Bandbreite durch zumindest
das Startbit zu verzeichnen. Es können aber beliebig lange Datenwörter verwendet
werden, da beide Seiten vollständig
synchron getaktet werden. Bei längeren
Datenwörtern
ist der Verlust an Bandbreite entsprechend geringer. Da durch die
lokale Steuerung der Datenübernahme
die entsprechende globale Komponente samt Datenleitungen entfällt, wird
dieser Verlust mehr als kompensiert. Erfahrungsgemäß erfordert
eine globale Steuerung eine Vielzahl von Synchronisationspunkten,
da eine vollständige
Modellierung des Datenflusses nicht beherrschbar ist und durch die
Partitionierung des Problems willkürliche Zeitschnitte notwendig werden,
die die Datenrate signifikant reduzieren.
-
Ob
man das Signal entgegen Datenrichtung als Freigabesignal, Wartesignal
oder Abrufsignal bezeichnet, kann für das Verständnis nützlich sein, ist aber im Endeffekt
technisch ohne Belang. Die Interpertation hängt davon ab, welcher Pegel
als aktiv und welcher als inaktiv bezeichnet wird. Ist beispielsweise
das Signal zu Beginn des Startsignals inaktiv und wird es in einem
fest Taktabstand vor Beginn des Datenworts aktiv, dann passt die
Bezeichung Freigabe- oder Abrufsignal. In diesem Fall findet immer
ein Pegelwechsel statt.
-
Wird
hingegen das Signal entgegen Datenrichtung nur dann aktiviert, wenn
eine Verlängerung des
Startsignals notwendig ist, dann würde man eher eine Bezeichung
wie Warte- oder Hinhaltesignal verwenden. In diesem Fall findet
nur dann ein Pegelwechsel statt, wenn Wartetakte vor Beginn des
Datenworts eingeschoben werden.
-
Entscheidend
ist in allen Fällen,
das das Signal in Gegenrichtung dazu führt, das nach dem Startbit
zusätzliche
Takte gewartet wird, bevor dann die Datenbits übertragen werden. Auch kann
es sinnvoll sein, nach dem Startbit noch obligatorisch ein Füllbit vorzusehen,
damit die Setup- und Haltezeiten gegenüber dem Taktsignal eingehalten
werden können.
-
Mit
der Erkenntnis, das es sich um eine alternierende Abfolge von Ablaufinformation
und Datenwörtern
handelt, hängt
eine Weiterbildung der Erfindung zusammen. Bei dieser werden mehrere
aufeinanderfolgenen Bits anstelle eines einzigen Startbits verwendet,
die die Funktion der nachfolgend Schaltung steuern. Mit einer zentralen
Steuerung zusätzlich
zum zentralen Takt sind solche Ablaufvarianten nur schwer überschaubar
zu halten.
-
In
den nachfolgenden Beispielen wird ein Datenwort von vier Bit verwendet,
um die Beispiele klein zu halten. Die Anzahl der Datenbits ist selbstverständlich beliebig,
wenn auch pro Schnittstelle vorab festzulegen. Mit entsprechendem
Aufwand kann auch die Ausgabeschnittstelle eines Addierers z.B.
ein um ein Bit längeres
Ausgabeformat verwenden, um Abschneiden durch Überlauf zu vermeiden.
-
Die
Erfindung wird an Hand der der folgenden Variante beschrieben. Dabei
werden Datenpakete übermittelt.
Ausserhalb der Datenpakete liegt die Datenleitung auf Null; diese
Pausenzeiten können beliebig
lang sein. Jedes Datenpaket besteht aus einem Kopfteil, der immer
mit einem Eins-Bit beginnt. Darauf kann eine vordefinierte Anzahl
von Bits folgen, die in Weiterbildungen der Erfindung Anwendung
finden. Falls dies für
die Synchronisation sinnvoll ist, kann der Kopfteil ein oder mehrere
Einsen am Ende enthalten. In dem folgenden Beispiel wird zur besseren Übersicht
eine weitere Eins nach dem Startbit verwendet, so dass der Kopf
zwei Bit lang ist. Darauf folgen, weiterhin getaktet durch den zentralen Takt,
n Datenbits. Auf die Datenbits folgen ein oder mehrere Null-Bits
als Stopbits. Diese Null-Bits bestimmen die Pausenzeit zwischen
zwei Datenpaketen. Es ist von der Logik her durchaus möglich, zwei Datenpakete
ohne Stopbits unmittelbar aufeinander folgen zu lassen, da das Bit
nach dem letzen Datenbit eindeutig angibt, ob eine Pause oder ein
neues Starbit folgt. Diese Option wird in den folgenden Darstellung
nicht weiter ausgeführt.
-
In 1 ist die Struktur einer
einfachen einwertigen Funktion symbolisch dargestellt. Der Eingang
IN führt
zu einem Operator 10 mit einem Eingang I. Der Operator 10 hat
ferner einen Ausgang 0, der über
einen Schalter 12 zu dem Ausgang OUT der Schaltung führt. Der
Eingang IN führt
zudem direkt zum Schalter 12. Je nach Stelung des Schalters 12 gelangen
die Daten vom Eingang IN oder vom Ausgang 0 des Operators 10 an
den Ausgang OUT. Der Schalter 12 wird von einem Zustands-Flip-Flop 14 gestellt.
Der Operator 10 hat ferner einen Aktivierungsseingang E,
welcher gleichzeitig mit dem Schalter aktiviert wird. Das Zustands-Flip-Flop 14 wird
von einer 2-Bit Verzögerung 16,
die mit dem Moduleingang IN verbunden ist, gesetzt, und zwar zwei Takte,
nachdem ein Ein-Bit am Moduleingang IN lag. Eine n+2-Bit Verzögerung 18 setzt
des Zustands-Flip-Flop 14 zurück, wenn das letzte Datenbit erzeugt
wurde.
-
2 zeigt dieselbe Struktur
mit konkreten digitalen Bausteinen. Der Operator 10 besteht
aus einem 1-Bit Addierer U26a und einem Speicher U26b für das Übertragsbit.
Der Aktivierungseingang E setzt den Übertrag, so dass eine Addition
von Eins erfolgt. Anstelle der Verzögerungen 16 und 18 und
dem FlipFlop 14 wird hier ein Schieberegister U24b verwendet,
in dem ein Bitmuster umläuft.
Solange einer der Eingange von U24c gesetzt ist, wird durch U24a
ein Nullbit eingetaktet. Ist das Schieberegister leer, so kann es über den
anderen Eingang von U24a wieder gefüllt werden. Der Ausgang von
U24c zeigt an, dass Datenbits zu bearbeiten sind. Da wegen des zweiten Startbits
(Füllbits)
der erste Ausgang des Schieberegisters nicht verschaltet ist, werden
zwei aufeinanderfolgende Bits erzeugt. Daher sind für U24c nur drei
Eingänge
notwendig, damit nicht das Übertragsbit
anstelle des Stopbits weitergegeben wird.
-
Die
nun folgenden Beispiele verwenden Brems- oder Wartesignale, im englischen
häufig
als 'stall Signal' bezeichnet, mit
denen ein Datenpaket verzögert
werden kann. Dies erfolgt, wie oben bereits er wähnt, immer nach dem Startbit,
wenn es vom Empfänger
veranlasst wurde. Diese Signalformen sind weiter unten in 6 noch genauer beschrieben.
-
3 zeigt an einem einfachen
Puffer die Verwendung von Wartesignalen. Am Eingang In liegt ein
Datenstrom an, der von einem Schieberegister U39 gepuffert und über den
Ausgang Out weitergegeben wird. Dabei wird ein vollständiger Datenblock, bestehend
aus zwei Startbits, vier Datenbits und Stopbit im Schieberegister
U39 gepuffert. Im Ruhezustand sind alte Signalleitungen inaktiv
und das Schieberegister U39 leer. Mit jedem Takt wird eine Null
in das Schieberegister geschoben; hierdurch ändert sich jedoch nichts. Das
D-FlipFlop U38a synchronisiert das Signal OutS mit dem Takt, damit
der Eingang zum Gatter U38b nicht verändert wird, während das
Taktsignal Cl aktiv ist. An den Ausgängen stehen das Signal OutS
und dessen invertierter Wert zur Verfügung. Ist OutS aktiv, so werden
die Takte Cl zum Schiebregister U39 gesperrt; sonst freigegeben.
-
Trifft
nun das erste Datenpaket am Eingang In ein, so erscheint dort das
Startbit. Da das Signal von OutS weiterhin Null ist, schaltet das
UND-Gatter 31 nicht, und es wird kein Wartesignal erzeugt.
Dies gilt auch für
die folgenden Takte, bis das Datenpaket vollständig in das Schieberegister
U39 übernommen ist.
Dann ist das Startbit im letzten Bit von U39 angekommen; da dort
der Ausgang Out angeschlossen ist, erscheint bei der folgenden Stufe
das Startbit. Gemäß Protokoll
kann nun entweder die folgende Stufe ihr Wartesignal Outs aktivieren,
wenn sie zur Aufnahme von Daten nicht bereit ist. Anderfalls verbleibt OutS
inaktiv. Dann werden die Startbits und der Rest des Datenpakets
aus dem Schieberegister herausgeschoben und von der folgenden Stufe übernommen.
Aktiviert die folgenden Stufe jedoch das Wartesignal OutS, so wird
zum einen mit dem Schalter U38b das Taktsignal zum Schieberegister
U39 gesperrt. Dessen Zustand bleibt also solange mit dem (zweiten)
Startbit auf Out erhalten, wie das Wartesignal OutS aktiv bleibt.
Solange die vorige Stufe in der Pause zwischen zwei Datenblöcken weiterhin
Nullen sendet, gehen diese verloren, weil der Takt von U39 gesperrt
ist. Das ist aber ohne Belang, weil es sich um Pausenbits ohne Information
handelt.
-
Will
nun während
dieser Zeit die vorige Stufe Daten senden, so wird auf In das Startbit
sichtbar. Da in diesem Fall das Wartesignal OutS der vorigen Stufe
aktiv ist, schaltet das UND-Gatter U31 und aktiviert seinerseits
das Wartesignal für
die vorige Stufe. Gemäss
Protokoll wird nun solange mit der Bereitstellung der Datenbits
gewartet, bis das Wartesignal InS deaktiviert wird. Im vorliegende
Fall muss während dieser
Zeit eine Eins anliegen, damit das Gatter U31 weiter aktiviert bleibt.
-
Sobald
nun das Wartesignal der folgenden Stufe deaktiviert wird, werden
die Takte für
das Schieberegister U39 wieder freigegeben und das Wartesignal für die vorherige
Stufe gleichfalls deaktiviert. Die Übertragung der vorigen Stufe
kann bereits jetzt beginnen, da laut den Regeln der Schnittstelle die
eigentlichen Datenbits synchron zu einem gemeinsamen Takt übertragen
werden und genausoviele Bits in das Schieberegister U39 eingeschoben wie
ausgeschoben werden.
-
In 4 sind nunmehr für den beispielhaften Inkrement-Operator
nach 2 noch die Wartesignale
und der Puffer nach 3 zusammengefügt. Die
Funktion entspricht der kombinierten Funktion beider Teile und baucht
daher nicht weiter erläutert
zu werden. Es sei lediglich darauf hingewiesen, dass U44c nur drei
Eingänge
umfasst, da wegen des unbenutzten ersten Ausgangs von U44b zwei
aufeinanderfolgende Bits auftreten und sonst anstelle des Stopbits
der Übertrag
ausgegeben werden würde.
-
In 5 ist nunmehr ein Addierer
für zwei Datenströme gezeigt.
Hierbei stellt sich das Problem, dass zunächst die beiden Eingangs-Datenströme synchronisiert
werden müssen,
da die Datenbits taktsynchron an dem bitseriellen Addierer vorliegen
müssen.
-
Die
Ausgangsstufe ist mit U59 sowie U58a und U58b wie in 4 bzw. 3 aufgebaut. Mit U56a, U56b, U56c und
U56d ist ein bitserieller Addierer aufgebaut, dessen Übertrag
wie bei den Inkrementern in 2 und 4 gesteuert wird. Der Bitzähler mit
U54a, U54b und U45c entspricht dem von 4 und 2.
Hinzugefügt ist
ein weiteres ODER-Gatter U54d, das immer dann ein Signal liefert,
wenn der Zähler
nicht leer (auf Null) ist.
-
Für jeden
der Eingange In1 und In2 sind die Haltesignale In1S und In2S vorgesehen,
die von UND-Gattern U51a bzw. U51b angesteuert werden. Im Gegensatz
zu 3 und 4 kann als Freigabesignal
für das
Wartesignal aber nicht einfach das Wartesignal vom Ausgang dienen.
Denn bevor dieses relevant wird, sind zunächst die Datenpakete an den
Eingängen
zu synchronisieren. Hierzu dienen die Gatter U52a, U52b und U53.
-
Sind
in der Zeit zwischen zwei Datenpaketen die Eingangssignale In1 und
In2 beide Null, dann sind die beiden Gatter U52a und U53 auch am
Ausgang Null. Damit sind die gemeinsamen Eingänge von U51a und U51b auch
Null.
-
Tritt
nunmehr an einem der Eingänge,
hier im Beispiel In1, das Startbit auf, dann wird der Ausgang von
dem ODER-Gatter U52a aktiv. Da der invertierte Eingang von U52b
inaktiv ist, wird auch dessen Ausgang aktiv, der beide Gatter U51a
und U51b freigibt. Für
den soeben Eins gewordenen Eingang, hier In1, wird als das Wartesignal
In1S erzeugt und die sendende Schaltung angehalten.
-
Wenn
nun der zweite Eingang In2 aktiv wird, wird auch hier ein Haltesignal
erzeugt. Dies ist deshalb notwendig, damit für beide Eingänge die
Deaktivierung des Wartesignals auf gleiche Bedingungen trifft. Wegen
der in einem synchronen System für
die Auswertung des Wartesignals notwendigen Zeit steht nämlich In1
bereits auf dem Pufferbit und wird unmittelbar nach Deaktivierung
von In1S das erste Datenbit ausgeben. Würde man anstelle der beiden
Gatter U52a und U52b lediglich ein XOR verwenden, dann wäre das zweite
Eingangssignal ein Takt zu spät.
-
Sobald
nun beide Eingänge
In1 und In2 aktiv sind, ist auch der Eingang des Bitzählers, hier
U54a, aktiv, so dass das Taktsignal Cl2 ein Bit in das Zäht-Schieberegister
U54b einschiebt. Das Taktsignal Cl2 ist, da OutS nicht aktiv ist,
gleich dem normalen Taktsignal Cl. Es ist zu beachten, dass Eingang In1
auf dem Pufferbit und Eingang In2 auf dem Startbit befindlich sind.
-
Durch
den folgenden Taktimpuls erscheint ein Eins-Bit an dem Gatter 54d und
sperrt damit U52b. Damit verschwinden die Wartesignale In1S und
In2S zu gleicher Zeit. Durch den Taktimpuls ist auch In2 auf den
gleichen Zustand weitergeschaltet.
-
In
den folgenden vier Takten liegen nunmehr die Datenbits der beiden
Eingänge
synchron an dem Addierer U56a an. Da der Schalter U57 umgeschaltet wurde,
werden die Summenbits in das Ausgangsregister U59 eingetaktet. Da
in den beiden Takten zuvor an beiden Eingängen Eins-Bits anlagen, war
auch der Ausgang von U53 Eins, so dass sich bereits zwei Startbits
im Ausgangs-Schieberegister befinden. Weit beide Eingänge synchron
nach den Startbits Nullen als Stopbits liefern, liegt zu diesem
Zeitpunkt, wenn U57 wieder auf den Ausgang von U53 geschaltet hat,
ein Stopbit vor und wird als letztes in das Ausgangsschieberegister
eingetaktet.
-
Nunmehr
sei der Fall betrachtet, dass das Wartesignal OutS der nachfolgenden
Stufe aktiviert wird. Dies ist nur dann der Fall, wenn ein Startbit
an dem Ausgang Out anliegt. Das bedingt aber, dass soeben synchron
zwei Datenpakete an den Eingängen In1
und In2 angelegen haben und die Stopbits zwischen zwei Datenpaketen
anliegen. Über
U58a und U58b wird dann das Taktsignal Cl gesperrt und nicht mehr
auf das Taktsignal Cl2 weitergeleitet, so dass das Schieberegister
nicht weiterschaltet.
-
Trifft
nun während
dieser Wartezeit ein Startbit an In1 oder In2 (oder beiden) ein,
dann wird, wie oben beschrieben, das Wartesignal aktiviert. Sind beide
Start- bzw. Pufferbits an In1 und In2 vorhanden, wird zwar der Ausgang
von U53 aktiv. Da jedoch U54b von dem angehaltenen Taktsignal Cl2
versorgt wird, schaltet U54b nicht. Damit fehlt das Signal an U54d
und damit an U52b, so dass das Wartesignal zu den vorigen Stufen
bestehen bleibt. Erst wenn das Wartesignal OutS deaktiviert wird
und das der Takt an Cl2 weitergeleitet wird, wird auch U54b wieder
geschaltet; die Wartesignale am Eingang werden inaktiv, die beiden
Datenblöcke
können
eingelesen werden.
-
In 6 ist der Ablauf der Signale
an der Schnittstelle für
verschiedene Fälle
dargestellt.
-
In 6a ist der optimale Fall
gezeigt, bei dem kein Wartetakt notwendig ist. Im Takt 1 erscheint das
Startbit S, gefolgt von den Datenbits 0 bis 3, gefolgt von dem Stopbit
Z. Da kein Wartetakt notwendig ist, ist das Wartesignal DW immer
inaktiv.
-
In 6b wird ein Wartetakt benötigt. In
dem selben Takt 1, in dem das Startbit S erscheint, wird vom
Empfänger
das Wartesignal DW aktiviert. Daraufhin sendet der Sender im nächsten Takt 2 nicht
ein Datenbit, sondern ein Wartebit W. Dieses ist im Prinzip beliebig;
es ist meist günstig,
das Startbit einfach zu wiederholen. Da das Wartesignal in Takt 2 nicht mehr
gesetzt ist, werden nunmehr ab Takt 3 die Datenbits 0 bis
3 und das Stopbit gesendet.
-
Voraussetzung
für diese
Betriebsart ist, dass die empfangende Seite noch in demselben Takt
das Wartesignal aktivieren kann, in dem das Startsignal aktiviert
wurde. Die entsprechende Schaltung ist also dort als asynchron als
frei Logik aufgebaut. Falls diese Bedingungen nicht gegeben sind,
dann muss nach dem Startbit immer ein transientes Pufferbit T eingefügt werden.
In diesem Takt kann die sendende Schaltung das Wartebit auswerten.
-
In 6c ist der Fall dargestellt,
dass ein transientes Pufferbit ohne Wartetakt verwendet wird. Im
Unterschied zu 6a ist
lediglich das Pufferbit T in in Takt 2 eingeschoben.
-
In 6d ist der Fall mit Pufferbit
und einem Wartetakt dargestellt. Wegen der vollständig synchronen
Arbeitsweise ist das Wartesignal nunmehr in Takt 2 aktiv.
Das gesendete Bit in Takt 2 wird damit zum Wartebit. Da
in Takt 3 das Wartesignal nicht mehr aktiv ist, kann die
sendende Schaltung in der Taktzeit des Pufferbits T diesen Fall
erkennen und in den folgenden Takten die Datensignale und das Stopbit
bereitstellen.
-
Die
Beispiele verwenden die Lösung
mit dem Pufferbit nach 6c und 6d, da diese leichter zuverlässig zu
halten ist.
-
In 6d ist noch als Alternativ
zu einem Wartesignal ein Aktivierungssignal ('enable') dargestellt. Diese ist immer in dem
Takt nach dem Wartesignal aktiv; ob es nur einen Takt, n Takte,
n+1 Takte dauert, hängt
von dem jeweiligen Schaltungsentwurf ab. Im Unterschied zum invertierten
Wartungssignal wird ein Aktivierungssignal in der Regel in den Pausen
zwischen zwei Datenpaketen nicht aktiv sein.
-
In 7 wird eine Weiterbildung
gezeigt, bei der vor den eigentlichen Datenbits noch Steuerinformation übertragen
wird.
-
Im
Beispiel von 7 ist lediglich
die Anzahl der Bits um eines erhöht.
Am zweiten Abgriff von U74b wird damit gesteuert, ob das Übertrags-FlipFlop
U76b gesetzt oder zurückgesetzt
wird, ob also ein Inkrement erfolgt oder die Daten unverändert weitergegeben
werden. Auf diese Art kann durch Modifikation der Eingabedaten die
Funktion einer Schaltung insoweit geändert werden, als lediglich
die Funktion von Baugruppen ungeschaltet wird. Dies ist zum Beispiel
bei der in der Bildverarbeitung vielfach verwendeten Diskreten Cosinus-Transformation (DCT)
und ihrer Inversen (iDCT) der Fall.
-
Es
können
auch Verteiler gebildet werden, die, abhängig vom Steuerbit, die Datenpakete
zu einem von zwei Ausgängen
weiterleiten. Der andere Ausgang bleibt inaktiv; dies gilt gemäss der Erfindung auch
für die
nachfolgenden Stufen, die erst beim Auftreten eines Datenpakets
wieder aktiv werden.
-
In
dieser Fortbildung sind zwei Varianten möglich: Zum einen kann, wie
in 7, das Steuerbit in
dem Paket verbleiben und zur Steuerung nachfolgender Stufen dienen.
Dies ist die bevorzugte Ausführung.
Zum einen ist sie einfacher anwendbar. Zum anderen ist bei Anwendungen
wie der DCT/iDCT eine Vielzahl von Stufen in eine von zwei Varianten umzusteuern.
Es ist aber auch möglich,
dieses Steuerbit in einer Stufe zu entfernen, wenn es in alten nachfolgenden
Stufen nicht mehr benötigt
wird.
-
Die
Anzahl der Steuerbits ist ersichtlich beliebig, aber zumindest pro
Schnittstelle festgelegt.
-
In
den bisherigen Ausführungsformen
war das Wartesignal während
der Pausen zwischen Datenpaketen immer inaktiv. Es ist aber auch
möglich, zusätzlich das
Wartesignal vor dem Startbit zu aktivieren und damit die Pause zu
verlängern,
ohne dass die empfangende Bau gruppe durch den Empfang des Startbits
aus dem inaktiven Zustand in den Wartezustand von den Datenbits
wechselt.