-
Die
Erfindung betrifft eine digitale Speicherschaltung mit einer Vielzahl
von Speicherzellen, die selektiv adressierbar sind, um Speicherdaten
an ihnen wahlweise einzuschreiben oder auszulesen, gemäß dem Oberbegriff
des Patentanspruchs 1. Speicherschaltungen dieser Gattung werden
allgemein mit dem Akronym RAM (Random Access Memory) bezeichnet
und zumeist als integrierte Bausteine auf Halbleiterchips hergestellt.
Bevorzugtes, jedoch nicht ausschließliches Anwendungsgebiet der
Erfindung sind so genannte "dynamische" RAM-Bausteine (DRAMs),
wie sie als Arbeitsspeicher in Computern eingesetzt werden. Gegenstand
der Erfindung ist ferner ein Speichercontroller, der in Verbindung
mit Speicherschaltungen der erwähnten
Gattung verwendet werden kann.
-
Um
die erforderliche Kommunikation mit anderen Schaltungen herstellen
zu können,
verfügt
ein RAM-Baustein über
mehrere Gruppen äußerer Anschlüsse. Hierzu
zählen
neben den Datenanschlüssen, über welche
die Speicherdaten ein- und ausgegeben werden, und den Adressanschlüssen, an
denen die Information zur Adressierung der Speicherzellen angelegt
wird, auch ein gesonderter Eingang mit mehreren Anschlüssen zum
Empfang von Befehlen für
die Einleitung der verschiedenen Operationen des RAM-Bausteins.
Bei RAM-Bausteinen, deren Speicherzellen als Matrix aus Zeilen und
Spalten organisiert sind und in denen ein Schreib- oder Lesevorgang
an einer Zeile mit der Aktivierung einer Zeilenselektionsleitung
(Wortleitung) gemäß einer
Zeilenadresse begonnen wird, sind unter anderem folgende Befehle üblich: "Vorladen" (Precharge) zum Setzen
aller Spaltenselektionsleitungen auf ein bestimmtes Anfangspotential; "Aktivieren" zum Setzen einer
gemäß Zeilenadresse
adressier ten Wortleitung auf ein Aktivierungspotential, wodurch
alle Speicherzellen der betreffenden Zeile für einen möglichen Zugriff zum Lesen oder
Schreiben geöffnet
werden; "Lesen" zur Einleitung eines
Lesevorgangs an den durch eine Spaltenadresse selektierten Speicherzellen
der aktivierten Zeile; "Schreiben" zur Einleitung eines Schreibvorgangs
an den durch eine Spaltenadresse selektierten Speicherzellen der
aktivierten Zeile.
-
Neben
diesen Befehlen wird bei den gebräuchlichen RAM-Bausteinen noch
eine Mehrzahl anderer Befehle verwendet, z.B. ein Befehl "Baustein auswählen" (Chip Select), um
den Speicherbaustein insgesamt zu adressieren, und ein Befehl "Modusregister setzen", um bestimmte Betriebsparameter oder
Betriebseigenschaften des Bausteins gemäß einer besonderen Stellinformation
einzustellen. Die Stellinformation wird üblicherweise über die
Adressanschlüsse
eingegeben, während
der besagte Befehl am Befehlseingang angelegt wird, um die Stellinformation
in ein Register einzuspeichern. Diese Information kann z.B. die
Länge der
Bursts der einzuschreibenden und auszulesenden Speicherdaten und
gewünschtenfalls
weitere Parameter vorgeben, etwa bestimmte Wartezeiten innerhalb
des Ablaufs gewisser Speicheroperationen. Weitere Befehle sind "Keine Operation" (No Operation) zum
Ausfüllen
von Wartezeiten, "Sparbetrieb" (Power Down) für einen Wartezustand
mit vermindertem Leistungsverbrauch und, im Falle von DRAMs, die
Befehle "Autorefresh", um eine automatische
Auffrischung der Daten in den Speicherzellen zu bewirken, und "Selfrefresh" um die periodische
Auffrischung der Daten in Betriebspausen des Bausteins in Gang zu
setzen.
-
Die
vorstehend erwähnten
Befehle sind nur einige Beispiele und keine erschöpfende Aufzählung. Die
Inhalte der Befehle und auch deren Vielfalt hängen natürlich von der Bauart des Speicherbausteins ab,
wobei die Gesamtanzahl unterscheidbarer Befehle von der Anzahl der
Steueroptionen abhängt.
Da es erwünscht
ist, die Anzahl äußerer Anschlüsse an einem
Speicher baustein möglichst
gering zu halten, wäre
es kontraproduktiv, für
jeden Befehl einen gesonderten Anschluss vorzusehen. Gesonderte
Anschlüsse
müssen
allenfalls für übergeordnete
Befehle wie z.B. "Baustein
auswählen" vorgesehen sein, die
ein Betriebsmerkmal über
eine Folge anderer Befehle aufrechterhalten sollen. Diese anderen
Befehle werden üblicherweise
als m-Bit-Digitalwörter
im Parallelformat codiert, so dass m parallele Befehlsanschlüsse ausreichen,
um zwischen 2m verschiedenen Befehlen unterscheiden
zu können.
Ein Befehlsdecoder decodiert dann jedes empfangene m-Bit-Befehlscodewort,
parallel mit den oben genannten übergeordneten
Befehlen, um eine interne Steuereinrichtung zur Durchführung der
befohlenen Operation zu konditionieren.
-
Der
Empfang der Befehle im Parallelformat erlaubt eine hohe Arbeitsgeschwindigkeit
des Speicherbausteins: Jeder Befehl kann innerhalb einer einzigen
Taktperiode empfangen und decodiert werden, so dass die schnelle
Einleitung befohlener Operationen möglich ist. Dies ist wünschenswert oder
notwendig für
Schnellbefehle wie z.B. "Vorladen", "Aktivieren", "Lesen", "Schreiben", "Autorefresh" und einige andere
mehr. Andererseits ist die Anzahl möglicher Befehle beim vorstehend
beschriebenen Stand der Technik abhängig von der Anzahl der Befehlsanschlüsse. Genauer
gesagt steht die Anzahl der Befehlsmöglichkeiten in fester Beziehung zur
Anzahl der Befehlsanschlüsse.
-
Andererseits
ist es bekannt, Codewörter
in Form serieller Bitfolgen zu verwenden, um gewisse Befehle von
einem Controller an Speicherbausteine zu übertragen. So beschreibt die
Druckschrift
US 2001/0008005
A1 ein System zur Konfiguration und/oder Initialisierung
von Speicherbausteinen, wobei ein Speichercontroller mit einer Gruppe
solcher Bausteine u.a. über
einen seriellen Bus verbunden ist, um serielle Befehlscodewörter zu
senden, welche die Adresse eines zu wählenden Speicherbausteins und
Konfigurationsdaten enthalten können. Über den Aufbau
des verwendeten Codes ist nichts ausgesagt. Aus der Druckschrift
US 5 357 621 A ist
die Verwendung eines seriellen Busses zur Befehlsübertragung von
einem Controller an eine Gruppe von Speichermodulen bekannt. In
diesem Fall ist ausdrücklich
offenbart, dass die seriellen Befehlswörter Bitfolgen fester Länge sind,
sie enthalten jeweils die Adresse des zu wählenden Moduls (3 Bits) und
einen Operationscode fester Länge
(OPCODE, 8 Bits).
-
Eine
digitale RAM-Speicherschaltung ist in ihren Einsatzmöglichkeiten
umso flexibler, je vielfältiger
die Befehlsmöglichkeiten
sind. Die Anzahl unterscheidbarer Befehlscodewörter, die an einem seriellen
Befehlsanschluss angelegt werden können, ist theoretisch unbegrenzt.
Wenn man also bei einer RAM-Speicherschaltung zusätzlich zu
den Parallelbefehls-Anschlüssen einen
seriellen Befehlsanschluss und einen zugeordneten seriellen Befehlsdecoder
vorsieht, lässt
sich also das Verhältnis
der Anzahl der Befehlsmöglichkeiten
zur Anzahl der Befehlsanschlüsse
beträchtlich
erhöhen.
In der Praxis kann allerdings eine gewisse Grenze gesetzt sein, abhängig davon,
welche maximale Wortlänge
(Anzahl der Bits im Codewort) vorgegeben wird.
-
Die
Aufgabe der Erfindung besteht darin, bei einer RAM-Speicherschaltung
das Verhältnis
der Anzahl der Befehlsmöglichkeiten
zur Anzahl der Befehlsanschlüsse
zu erhöhen,
ohne beschränkt
zu sein an eine Vorgabe hinsichtlich der Wortlänge der Befehlcodewörter. Diese
Aufgabe wird erfindungsgemäß durch
die im Patentanspruch 1 genannten Merkmale einer Speicherschaltung
und auch durch die im Patentanspruch 11 genannten Merkmale eines
Speichercontrollers gelöst.
Besondere Ausgestaltungen der Erfindung sind in Unteransprüchen gekennzeichnet.
-
Eine
erfindungsgemäße Speicherschaltung zeichnet
sich also nicht nur durch das Vorhandensein eines seriellen Befehls-Empfangsanschlusses
aus, sondern darüberhinaus
durch eine besondere Ausbildung des mit diesem Anschluss verbundenen
seriellen Befehlsdecoders. Dieser Decoder enthält eine Baumschaltung mit Verzweigungsweichen,
die von den Bits einer Zielinformation, welche die durchzuführende Operation
identifiziert und innerhalb eines seriellen Befehlscodewortes ent halten
ist, so eingestellt werden, dass sich ein Übertragungspfad zur Aktivierung
der identifizierten Operation ergibt.
-
Die
erfindungsgemäße Ausbildung
des seriellen Befehlsdecoders erlaubt es, Codes variabler Länge zu decodieren
und ist somit auf beliebig viele Ziele erweiterbar. Ferner ist es
möglich,
nach Durchschaltung des Pfades, weitere Informationen (Stellinformation) über den
Pfad zu senden, z.B. zur Justierung (Kalibrierung) eines durch die
Zielinformation bestimmten Parameters.
-
Natürlich dauern
der Empfang und die Decodierung eines seriellen Codewortes wesentlich
länger
als der Empfang und die Decodierung eines Parallelcodewortes. Die
Erfindung beruht jedoch auf dem Gedanken, dass es nützliche
Befehle gibt oder geben kann, bei denen eine langsame Empfangsgeschwindigkeit
ohne weiteres tolerierbar ist. Die Erweiterung der Befehlsoptionen
mittels des seriellen Befehlsanschlusses kann sich also auf Befehle
dieser Art erstrecken.
-
Auch
unter den Befehlen, die herkömmlicherweise über die
parallelen Befehlsanschlüsse
gegeben werden, befinden sich solche, die nicht notwendigerweise
mit großer
Schnelligkeit durchgeführt werden
müssen.
Hierzu zählen
z.B. die Befehle "Modusregister
setzen", "Selfrefresh" und "Kalibrierung der
Datenausgangstreiber".
Wenn man den seriellen Befehlsanschluss auch für diese Befehle verwendet, gewinnt
man an den parallelen Befehlsanschlüssen Freiraum für zusätzliche
Schnellbefehle.
-
Demgemäß ist eine
vorteilhafte Ausführungsform
der Erfindung dadurch gekennzeichnet, dass diejenigen Steuereingänge der
internen Steuereinrichtung der Speicherschaltung, über welche
die am schnellsten auszuführenden
Steuerbefehle angelegt werden, mit Ausgängen desjenigen Befehlsdecoders
verbunden sind, der die an den parallelen Befehlsanschlüssen empfangenen
Befehlscodewörter decodiert,
und dass diejenigen Steuereingänge
der internen Steuereinrichtung, über
welche langsamer auszu führende
Steuerbefehle angelegt werden, mit Ausgängen desjenigen Befehlsdecoders
verbunden sind, der die am seriellen Befehlsanschluss empfangenen
Befehlscodewörter
decodiert.
-
Wie
bereits erwähnt,
gibt es Befehle, welche sich auf das Einstellen von Betriebsparametern
oder Betriebseigenschaften beziehen. Bei solchen Befehlen, die im
Folgenden als "kombinierte
Befehle" bezeichnet
werden, muss zusätzlich
zur "Ziel"-Information" auch eine "Stell"-Information" eingegeben werden.
Die Zielinformation gibt den Bestimmungsort bzw. die "Destination" der Stellinformation
an, d.h. sie benennt die durchzuführende Operation, z.B. durch Angabe,
wo die Stellinformation eingespeichert oder wirksam sein soll. So
gibt z.B. der übliche
Befehl "Modusregister
setzen" das Modusregister
als Ziel an, einschließlich
der Anweisung, die in Verbindung mit diesem Befehl empfangene Stellinformation
an zugeordneten Zellen dieses Registers zu speichern. Diese Information
steht dann im Speicherbaustein zur Verfügung, um die interne Steuereinrichtung
so zu konditionieren, dass der Speicherbaustein im nachfolgenden
Betrieb gemäß den befohlenen
Einstellungen arbeitet. Wie ebenfalls oben erwähnt, wird die Stellinformation
beim Stand der Technik an den Adressanschlüssen angelegt, während die
Zielinformation an den parallelen Befehlsanschlüssen angelegt wird.
-
Da
bei kombinierten Befehlen meist eine langsamere Durchführung toleriert
werden kann, bringt es keinen Nachteil, wenn diese Befehle über den
erfindungsgemäßen seriellen
Befehlsanschluss gegeben werden. Der Inhalt eines dort eingegebenen Befehls
kann auf die Zielinformation beschränkt sein, während eine eventuell benötigte Stellinformation wie
beim Stand der Technik über
Adressanschlüsse angelegt
wird (oder an anderen vorhandenen Anschlüssen, die in diesem Augenblick
nicht anderweitig genutzt werden), und zwar vorzugsweise unmittelbar
nach erfolgter Decodierung des seriell decodierten Befehls. Der
serielle Befehlsanschluss eröffnet aber
auch die Möglichkeit,
sowohl die Zielinformation als auch die Stellinforma tion als Gesamtpaket
in Form eines kombinierten seriellen Codewortes einzugeben.
-
In
besonderer Ausführungsform
der Erfindung ist der dem seriellen Befehlsanschluss nachgeschaltete "serielle" Befehlsdecoder der
Speicherschaltung ausgebildet zur Decodierung von Codewörtern variabler
Länge,
gemäß einem
Codebaum ähnlich
einem Huffman-Code oder einem Shannon-Fano-Code. Dies hat den Vorteil,
dass eine beliebige Erweiterung des Codebaumes und somit der Liste
der zu decodierender Befehle möglich
ist, ohne die Codewörter
der bestehenden Befehle ändern
zu müssen.
Außerdem
lässt sich,
wie bei der Huffmann-Codierung bekannt, die mittlere Codewortlänge und
somit die Redundanz durch geeignete Gestaltung des Codebaums minimieren.
-
Die
Erfindung und Einzelheiten besonderer Ausgestaltungen werden nachstehend
an einem Ausführungsbeispiel
anhand von Zeichnungsfiguren näher
erläutert.
-
1 zeigt
in einem vereinfachten Blockdiagramm den Aufbau einer erfindungsgemäß ausgebildeten
Speicherschaltung in Verbindung mit einem externen Speichercontroller;
-
2 zeigt
ein Beispiel für
einen Codebaum für
serielle Befehlscodewörter
variabler Länge;
-
3 zeigt
eine Ausführungsform
eines Decoders für
das Codebaum-Beispiel nach 2;
-
4 zeigt
eine vorteilhafte Modifizierung des in 3 dargestellten
Decoders
-
5 zeigt
eine vorteilhafte Ausführungsform
einer Verzweigungsweiche für
den Decoder nach 3 oder 4.
-
Die
im rechten Teil der 1 fragmentarisch dargestellte
Speicherschaltung 1 bildet einen Baustein, der auf einem
Halbleiterchip integriert ist, dessen Umriss mit einer fetten Rahmenlinie
symbolisiert ist. Beim dargestellten Ausführungsbeispiel handelt es sich
um ein DRAM, und zwar speziell um ein "synchrones" DRAM (SDRAM), dessen Speicherzellenfeld
als Block 11 gezeichnet ist und in einzelne Bänke unterteilt
sein kann. Die Speicherzellen sind als Matrix aus Zeilen und Spalten
organisiert. Der selektive Zugriff auf die Speicherzellen erfolgt
abhängig
von Zeilen- und Spalten-Adresscodewörtern ADR, die jeweils im Parallelformat über ein
Vielfach von externen Adressanschlüssen (Adresspins) A empfangen und
in einer Adress-Decodiereinrichtung 13 decodiert werden,
und zwar getrennt in einem Zeilendecoder und einem Spaltendecoder
(nicht gesondert dargestellt). Die an den adressierten Speicherzellen
einzuschreibenden oder ausgelesenen Speicherdaten DAT werden, jeweils
als Pakete (Speicherdatenwörter)
im Parallelformat, über
ein Vielfach von externen Datenanschlüssen (Datenpins) D ein- bzw.
ausgegeben. Die Übertragung
dieser Daten zwischen den Datenpins D und den Datenanschlüssen des
Speicherzellenfeldes 11 läuft über einen internen Datenbus, der
sich über
Multiplexer zu den einzelnen Bänken verzweigen
kann (nicht gesondert dargestellt).
-
Der
Speicherbaustein 10 enthält ein kompliziertes und weit
verzweigtes System von Steuer- und Schaltmitteln, um die Verbindungen
zwischen den jeweils adressierten Speicherzellen und den Datenpins D
herzustellen, verschiedene Betriebsabläufe und Operationen zu steuern
und Einstellungen vorzunehmen. Dieses System, hier pauschal als "interne Steuereinrichtung" bezeichnet, ist
in 1 als Block 12 dargestellt und spricht
auf externe Befehle an, die ebenso wie die Adresswörter ADR
und die einzuschreibenden Speicherdaten DAT von einem externen Speichercontroller 20 gesendet
werden. Dieser Controller 20, der auch die über die
Datenpins D des Bausteins 1 ausgelesenen Speicherdaten
empfängt (und
sie zur weiteren Verarbeitung weiterleitet), ist fragmentarisch
im linken Teil der 1 dargestellt und hat Datenanschlüsse D' für die zu
sendenden und zu empfangenden Daten DAT und Adressanschlüsse A' für die zu
sendende Adressinformation ADR.
-
An
dem in 1 dargestellten DRAM-Speicherbaustein 10 be finden
sich fünf
externe parallele Befehlsanschlüsse
(parallele Befehlspins) P1, P2, P3, P4 und P5 zum Empfang von Befehlen
in Form fünf
paralleler Befehlsbits, die gewöhnlich
mit den Abkürzungen
WE, RAS, CAS, CKE und CS bezeichnet werden. Diese parallelen Befehlsbits,
hier insgesamt mit der Abkürzung
PB bezeichnet, werden von einem Parallelbefehlscodierer 24 im
Controller 20 erzeugt und über fünf parallele Befehlsanschlüsse P1', P2', P3', P4' und P5' des Controller gesendet
und einem Parallelbit-Befehlsdecoder 14 im Speicherbaustein 10 zugeführt, der
abhängig
vom Binärmuster
des Codewortes eine jeweils spezielle Kombination aus einer Vielzahl
ausgangsseitiger Steuerleitungen 114 erregt, um die Steuereinrichtung 12 zur
Durchführung
des parallel-codierten Befehls zu konditionieren. Hierbei bestimmt
der Logikwert des Befehlsbit CS[1] die Anwahl ("Select") oder Abwahl ("Deselect") des Speicherbausteins 1,
und die drei Befehlsbits WE, RAS, CAS erlauben acht hinzukommende
Befehlsoptionen im angewählten
Zustand des Speicherbausteins (und theoretisch auch acht Befehlsoptionen
im abgewählten
Zustand). Das Befehlsbit CKE ("Clock
Enable") ist reserviert
für das
Ein- und Ausschalten von Betriebszuständen, in denen der Baustein
gleichsam "schläft", also keine Daten
mit dem Controller austauscht und nur geringe Leistung braucht.
-
In
der Praxis sind oft mehrere gleichartige Speicherbausteine zu einem
Speichermodul zusammengefasst. Hierbei kann das System so ausgelegt sein,
dass nur jeweils ein speziell angewähltes Exemplar der Speicherbausteine
mit dem Controller kommuniziert. In diesem Fall verzweigen sich
alle vom Controller ausgehenden Leitungen zu den verschieden Speicherbausteinen,
wie in 1 gestrichelt angedeutet für den Beispielsfall von vier
Bausteinen. Ausgenommen von den Verzweigungen ist die Leitung für das CS-Befehlsbit
zur Anwahl/Abwahl des Bausteins. Wie gezeigt, ist für jeden
Baustein ist ein gesonderter CS-Ausgang am Controller 20 vorgesehen,
um CS-Bits CS[1], CS[2], CS[3], CS[4] für die verschiedenen Bausteine
unabhängig
voneinander zu übertragen.
-
Das
System kann aber auch so ausgelegt sein, dass alle Bausteine eines
Moduls simultan mit einem gemeinsamen Controller kommunizieren,
der demnach entsprechend viele Gruppen von Datenanschlüssen haben
muss. Hierbei ist jede dieser Gruppen mit den Datenanschlüssen eines
individuell zugeordneten Speicherbausteins verbunden, während sich
alle anderen Anschlüsse
des Controllers zu den Speicherbausteinen verzweigen. In diesem
Fall (nicht dargestellt) kann auf eine Übertragung von CS-Befehlsbits
verzichtet werden. Die CS-Anschlüsse
der Speicherbausteine können
dann fest mit dem "aktivierenden" Logikpotential verbunden
werden. Hierdurch wird die Anzahl der anzusteuernden Anschlüsse an den
Speicherbausteinen niedriger gehalten. Letzteres ist natürlich auch
möglich,
wenn an einen Controller nur ein einziger Speicherbaustein angeschlossen
ist.
-
Alle
Betriebsabläufe
im Speicherbaustein 10 und auch im Controller 20 sind
taktgesteuert auf der Basis eines Referenz-Taktsignals CLK, das vom Controller 20 über einen
Anschluss C' gesendet,
im Baustein 10 über
einen externen Taktanschluss C und einen Taktempfänger 16 empfangen
und über ein
Netz von Taktleitungen an die einzelnen Schaltungen verteilt wird,
jeweils mit der für
die Synchronisierung erforderlichen Phasenlage.
-
Alle
bis hier beschriebenen Merkmale gehören zum Stand der Technik.
Um die Befehlsoptionen zu erweitern, ist erfindungsgemäß am Speicherbaustein 10 ein
zusätzlicher
serieller externer Befehlsanschluss (serieller Befehlspin) S vorgesehen
zum Empfang von Befehlen, die als Codewörter SB jeweils in Form einer
Bitfolge von einem seriellen Befehlscodierer 25 im Controller 20 erzeugt
und über
einen seriellen Befehlsanschluss S' des Controllers 20 gesendet
werden können.
Zur Decodierung dieser seriell-codierten Befehle SB im Speicherbaustein 10 dient
ein gesonderter "serieller" Befehlsdecoder 15 mit
einer Vielzahl von Ausgangsleitungen 115, die abhängig vom
Bitmuster der Befehlswörter
SB in unterschiedlicher Auswahl erregt werden, um jeweils ausgewählte Schaltungselemente
der Steuereinrichtung 12 zur Durchführung des betreffenden Befehls zu
beeinflussen. Im dargestellten Fall, dass der Speicherbaustein 10 vom
selben Controller 20 wie weitere gleichartige Bausteine
bedient wird, hat der serielle Befehlsdecoder 15 auch einen
Eingang zum Empfang des "Chip-Select"-Befehlsbits CS[1],
um diesen Decoder nur dann zu aktivieren, wenn der Baustein 10 angesprochen
werden soll.
-
Vorzugsweise
ist der serielle Befehlsdecoder 15 zur Decodierung von
Codewörtern
variabler Länge
ausgebildet. Ein Beispiel für
einen Codebaum, der sich zur Realisierung der Erfindung eignet,
ist im oberen Teil der 2 gezeigt, darunter ist die
zugehörige Codetabelle
eingetragen.
-
Für das in 2 gezeigte
Beispiel sei vorausgesetzt, dass der serielle Befehlsdecoder 15 zwischen
neun verschiedenen Befehlen unterscheiden soll, nämlich acht
verschiedenen Befehlen zur Durchführung einer von acht Operationen
#1 bis #8, und dem Befehl "keine
Operation" (abgekürzt: "NOP"). Der Einfachheit
halber sei zunächst
der Fall betrachtet, dass alle seriellen Befehle SB "nackte" Befehle sind, die
jeweils nur eine Zielinformation und keine Stellinformation enthalten.
D.h., es handele sich entweder um Befehle, die zu ihrer Durchführung keine zusätzliche
Stellinformation benötigen,
oder um Befehle, deren Stellinformation über andere Anschlüsse (z.B.
ausgewählte
Adressanschlüsse) übertragen wird.
-
Bekanntlich
ist ein längenvariabler
Code geeignet, die Redundanz einer Folge von Codewörtern durch
unterschiedliche Wortlängen
zu minimieren, indem die Längen
häufigerer
Wörter
kürzer
gewählt werden
als die Längen
seltenerer Wörter.
Ein allgemein bekanntes Beispiel hierfür ist der sogenannte Huffman-Code. Der Designer
einer Huffman-Codetabelle geht herkömmlicherweise so vor, dass
er die verschiedenen Informationen, die jeweils durch ein Codewort
dargestellt werden sollen, auf ihre Auftritts-Wahrscheinlichkeit
untersucht und dann die Längen
der verschiedenen Codewörter
derart bemisst, dass die mittlere Codewortlänge minimal ist. Im vorliegenden
Fall wird für
die Zuteilung eines Codewortes zu einem Befehl vorzugsweise jedoch
(allein oder zusätzlich)
ein anderes Kriterium als die Auftritts-Wahrscheinlichkeit genommen,
nämlich
der Umstand, wie schnell der betreffende Befehl durchgeführt werden
muss oder soll. Je kürzer
die Zeit ist, die vom Beginn des Befehls bis zu seiner Durchführung oder
bis zum Empfang eines folgenden Befehls verstreichen darf, ein desto
kürzeres
Codewort wird dem betreffenden Befehl zugeteilt.
-
Der
Codebaum nach 2 ist nach diesem Kriterium
konstruiert. Der NOP-Befehl ist notwendig, weil mit jeder Periode
des Taktes CLK ein Bit zum seriellen Befehlseingang S gesendet werden
muss, also auch in Pausen (keine Operation) zwischen aktiven Befehlen.
Jeder NOP-Befehl sollte schnellstmöglich erkannt werden, am besten
innerhalb einer einzigen Taktperiode, damit die Decodierung eines aktiven
Befehls (oder einer lückenlosen
Folge aktiver Befehle) sofort beginnen kann. Außerdem ist der NOP-Befehl der
häufigste
aller Befehle, seine Auftrittswahrscheinlichkeit ist größer als
50%. Demgemäß ist dem
NOP-Befehl ein Codewort mit nur einem einzigen Bit zugeteilt, im
gezeigten Fall das 1-Bit-Wort "0". Dementsprechend
endet der "0"-Ast der ersten Verzweigung
des Codebaumes mit NOP und hat keine weitere Verzweigung mehr. Der "1"-Ast der ersten Verzweigung, also des
Anfangs-"Knotens", verzweigt sich
hingegen weiter zur Bildung von insgesamt acht alternativen Pfaden,
die zu den acht verschiedenen Operationen #1 bis #8 führen.
-
Zur
Decodierung der seriellen Befehlsbits SB kann ein Huffman-Decoder
herkömmlicher
Art verwendet werden, bei welchem die Befehlscodewörter unmittelbar
aufeinander folgen können,
ohne gesonderte Pausesignale dazwischen (so genannte "Präfix"-Eigenschaft). Nach
seiner Initialisierung bzw. Start-Rücksetzung
interpretiert der Decoder aufeinander folgende Bits so lange als
Bestandteile eines Wortes, bis das Ende eines Pfades im Codebaum
erreicht ist. Hieraus wird ein Signal zur Rücksetzung abgeleitet, so dass
das dann nachfolgende Bit als erstes Bit eines neuen Codewortes
interpretiert wird.
-
Wegen
der zwangsläufigen
Rücksetzung
eines herkömmlichen
Huffman-Decoders jeweils nach Erkennung eines gültigen Codewortes (also nach
Erreichen des Endes eines Pfades) ist es nicht ohne weiteres möglich, ein
Codewort durch eine zusätzliche
Stellinformation zu erweitern. Will man also manchen ausgewählten Operationsbefehlen
eine Stellinformation nachfügen,
dann muss verhindert werden, dass der Decoder versucht, die Stellinformation
als neuen Befehl zu decodieren.
-
Die 3 zeigt
an einem Ausführungsbeispiel
das Schema eines neuartigen Decoders, der serielle Befehlscodewörter nicht
nur nach dem jeweiligen Ziel unterscheiden kann, sondern dem angesteuerten
Ziel auch eine zusätzliche
Stellinformation zuleiten kann. Das gezeigte Ausführungsbeispiel
ist speziell für
den Codebaum nach 2 konzipiert, und zwar für den Fall,
dass die Operationen #4, #5, #6, #7 und #8 jeweils einer zusätzlichen
Stellinformation bedürfen.
Das heißt,
die Befehle für
diese Operationen sind "kombinierte" Befehle, welche
eine zu decodierende Zielinformation und eine dann zum Ziel durchzuleitende
Stellinformation enthalten. Die Befehle für die Operationen #1, #2 und
#3 sind hingegen "nackte" Befehle, die nur
eine Zielinformation und keine Stellinformation enthalten.
-
Der
Decoder nach 3 enthält einen Empfangscontroller 30,
der durch das Chip-Select-Bit CS[1] in Betrieb gehalten wird und
die Folge der seriellen Befehlsbits SB zusammen mit dem Taktsignal CLK
empfängt.
Eine Eingangsschaltung 31 im Empfangscontroller 30 synchronisiert
die Bitfolge SB mit dem Taktsignal und liefert die Bitfolge SB auf
einer ersten Leitung parallel mit einem begleitenden Strobesignal
STR auf einer zweiten Leitung und einem Freigabe/Rücksetz-Signal
RES auf einer dritten Leitung. Das Strobesignal STR enthält Taktflanken,
die mit der Bitrate der Befehlsbits SB aufeinander folgen, um die
Abtastung der Befehlsbits an jeder nachfolgenden Schaltung zu synchronisieren.
Für die
nachfolgende Beschreibung sei angenommen, dass der Rücksetz-Logikwert
von RES eine logische "1" ist und dass und
der Freigabe-Logikwert von RES eine logische "0" ist.
-
Die
Eingangsschaltung 31 hält
das Signal RES auf "1" (rückgesetzter
Zustand), so lange kein aktiver Befehl empfangen wird. Gemäß der in 2 gezeigten
Codetabelle beginnt jeder aktive Befehl mit einer "1". Eine "1",
die im rückgesetzten
Zustand der Eingangsschaltung 31 am SB-Eingang eintrifft,
ist als Beginn eines aktiven Befehls zu werten und setzt das Signal
RES auf den Freigabe-Logikwert "0".
-
Die
vom Decoder nach 3 empfangenen aktiven Befehle
lassen, sich wie gesagt, einteilen in nackte Befehle (also Befehle
ohne Stellinformation) und kombinierte Befehle (also Befehle mit
Stellinformation). Bei jedem kombinierten Befehl folgen unmittelbar
nach dem letzten Bit der Zielbit-Sequenz die Stellbits. Diese Stellbits,
welche die Stellinformation des Befehls beinhalten, können natürlich jeweils
beliebigen Logikwert "x" (0 oder 1) haben
und von beliebiger Anzahl sein. Da der Decoder in der Lage sein muss,
das Ende eines Befehls zu erkennen, könnte man jedem Befehl, egal
ob es sich um einen nackten oder einen kombinierten Befehl handelt,
eine Art Vorspann (Header) hinzufügen, der die Codewortlänge angibt.
Dies wäre
nur dann zu empfehlen, wenn die Variationsbreite der Wortlängen relativ
klein ist, so dass nur wenige Bits für den Vorspann erforderlich wären.
-
In
der Ausführungsform
des Decoders nach 3 sind Maßnahmen getroffen, um das Ende
eines Befehls auf andere Weise erkennen zu können. Hierzu befindet sich
im Empfangscontroller 30 ein Escape-Detektor 32.
Ab Freigabe des Empfangscontrollers (RES = 0) fühlt der Escape-Detektor 32 die Befehlsbits
SB und aktiviert ein Stoppsignal STP1, sobald er ein spezielles "Escape"-Symbol in den Befehlsbits
SB erkennt. Als Escape-Symbol
wird ein exklusives Bitmuster gewählt, das in keinem der Befehlscodewörter vorkommen
darf und nach dem letzten Bit jedes Befehls in der Befehlsbitfolge
eingefügt sein
kann. Im hier beschriebenen Fall ist die Folge "0000" ein
solches exklusives Bitmuster und kann somit als "Escape"-Symbol verwendet werden. Auch innerhalb
einer Stellbit-Sequenz darf natürlich
niemals die Escape-Bitfolge 0000 auftreten. Dies lässt sich z.B.
durch Einfügung
von "1"-Bits an geeigneten
Stellen innerhalb der Stellbit-Sequenz gewährleisten, wie dargestellt.
Die Aktivierung des Stoppsignals STP1 als Antwort auf das Erkennen
des Escape-Symbols bewirkt, dass die Eingangsschaltung 31 über ihren Steuereingang
RDY zurückgesetzt
wird und das Signal RES somit auf "1" gebracht
wird. Es empfiehlt sich, von Seiten des Befehlscodieres nach jedem
Escape-Symbol ein Füllbit
mit dem Binärwert "0" einzufügen, um genügend Zeit (eine Taktperiode)
für die Rücksetzung
des Decoders zu haben, nachdem das Escape-Symbol erkannt worden
ist. Am oberen Rand der 3 ist gezeigt, wie die Befehle
nach dem beschriebenen Muster zusammengesetzt sind.
-
Die
eigentliche Decodierung der aktiven Befehle erfolgt gemäß der 3 in
einem sich verzweigenden Baum von Signalweichen, die entsprechend den
Verzweigungen des in 2 gezeigten Codebaumes angeordnet
sind und gemäß diesem
Codebaum funktionieren. Die Anfangs-Verzweigung des Codebaumes,
also die Unterscheidung zwischen NOP und aktiven Befehlen, ist bereits
durch den Empfangscontroller 30 realisiert, der gleichsam
die Hauptweiche zu den durchzuführenden
Operationen bildet. Die Weichen an den nachgeordneten Verzweigungen
werden im Folgenden gemäß allgemeinem Sprachgebrauch
als Multiplexer (abgekürzt
MUX) bezeichnet, auch wenn sie nur in demultiplexender Richtung
betrieben werden. Die nachgestellte Dualzahl benennt den jeweiligen
Multiplexer gemäß seiner
Position innerhalb des jeweiligen Decodierpfades.
-
Die
durch den Multiplexer-Baum geleiteten Signale sind die drei parallelen
Ausgangssignale der Eingangsschaltung 31, also das Freigabe/Rücksetz-Signal
RES, die seriellen Befehlsbits SB und das begleitende Strobesignal
STR. Jeder Multiplexer hat einen Eingang mit drei Anschlüssen zum
Empfang dieser Signale und zwei Ausgänge, deren einer im Folgenden
als "0-Ausgang" (linker Ausgang
in 3) und deren anderer al "1-Ausgang" (rechter Ausgang
in 3) bezeichnet wird und deren jeder drei Anschlüsse hat.
Jeder Multiplexer wird gesteuert in Abhängigkeit vom Logikwert eines
Bit der empfangenen Befehlsbitfolge und vom Logikwert des empfangenen
Freigabe/Rücksetz-Signals
RES, gemäß nachstehender
Vorschrift:
- (a) wenn RES den Logikwert "0" hat, speichert der Multiplexer das
erste ankommende Befehlsbit und überträgt alle
folgenden Befehlsbits SB zusammen mit den empfangenen Signalen RES
und STR zum 0-Ausgang, falls und solange das gespeicherte Bit den
Logikwert "0" hat, und zum 1-Ausgang,
falls und solange das gespeicherte Bit den Logikwert "1" hat;
- (b) das im Multiplexer gespeicherte Bit wird auf den Logikwert "0" zurückgesetzt,
wenn RES auf den Logikwert "1" geht.
-
Eine
geeignete Schaltungsanordnung zur Realisierung dieser Multiplexer-Funktionen
wird weiter unten anhand der 5 beschrieben.
-
Zunächst sei
jedoch weiter auf die 3 Bezug genommen. Da mit dem
ersten Zielbit eines aktiven Befehls (welches verabredungsgemäß den Logikwert "1" hat) das Signal RES auf "0" gesetzt wurde, stellt das zweite Zielbit,
je nach seinem Logikwert, den MUX1 auf Selektion seines 0-Ausgangs
oder seines 1-Ausgangs, um den nachgeordneten MUX10 oder den nachgeordneten
MUX11 zum Empfang der nachfolgenden Zielbits auszuwählen. Das
erste Bit dieser nachfolgenden Zielbits (also das dritte Zielbit der
ursprünglichen
Zielbit-Sequenz) stellt, je nach seinem Logikwert, den ausgewählten MUX10
(oder MUX11) auf Selektion seines 0-Ausgangs oder 1-Ausgangs. Wenn
einem selektierten MUX-Ausgang kein weiterer Multiplexer mehr folgt,
ist auch die Zielbit-Sequenz zu Ende. Der betreffende Ausgang ist
auch das Ende des Decodier-Pfades. Bei oder unmittelbar nach erfolgter
Selektion dieses End-Ausganges erscheint dort erstmalig eine Taktflanke
des Strobesignals STR, welches ja ebenfalls den Pfad durchläuft. Diese
Taktflanke kann verwendet werden, um die mit der Zielbit-Sequenz
identifizierte Operation einzuleiten oder durchzuführen. In 3 ist
dies symbolisiert durch einen an die STR-Leitung des Ausgangs angeschlossenen
Operationsblock, der mit "Op#" und einer nachgestellten
Nummer bezeichnet ist, entsprechend der in 2 verwendeten
Operations-Nummerierung.
-
Falls
die Zielbit-Sequenz zu einem nackten Befehl gehört, folgt dem letzten Bit dieser
Sequenz das Escape-Symbol "0000", das vom Escape-Detektor 32 erkannt
wird, mit der Konsequenz, dass das Signal RES auf "1" gesetzt wird (beim Fühlen der
letzten "0" des Escape-Symbols
im Escape-Detektor). Die Bits des Escape-Symbols laufen bis dahin
zwar noch in den Decodierpfad, haben aber keine Wirkung mehr auf
die Ausführung
des Befehls. Sobald das erste Zielbit (Logikwert "1") eines nächsten aktiven Befehls erscheint,
beginnt das oben beschriebene Spiel von neuem. Die mit nackten Befehlen
aktivierten Operationen sind im Falle der 1 die Operationen
#1 (Zielbit-Sequenz 101), #2 (Zielbit-Sequenz 1000) und #3 (Zielbit-Sequenz
1001).
-
Falls
die Zielbit-Sequenz zu einem kombinierten Befehl gehört, folgen
die Stellbits unmittelbar nach dem letzten Zielbit. Da also in diesem
Fall nach den Zielbits kein Escape-Symbol folgt und RES deswegen nicht
auf "1" geht, bleibt der
eingerichtete Decodier-Pfad erhalten, und die Stellbits gelangen
zum betreffenden Endausgang und können befehlsgemäß weitergeleitet
werden. Hierzu sind Operationsblöcke
#4 (Zielbit-Sequenz 1101), #5 (Zielbit-Sequenz 1110), #6 (Zielbit-Sequenz 1111), #7
(Zielbit-Sequenz 11000) und #4 (Zielbit-Sequenz 11001) so ausgebildet,
dass sie, sobald das letzte Zielbit den zugeordneten Multiplexerausgang
selektiert hat, durch die erste dort erscheinende Strobesignalflanke in
einen Durchlass-Zustand versetzt werden, in welchem sie die nachfolgenden
Befehlsbits SB als Stellbits an ihren Bestimmungsort weiterleiten,
zusammen mit dem Strobesignal STR. Wenn nach dem letzten Stellbit
das Escape-Symbol in den Decoder gelaufen ist, sorgt der Escape-Detektor 32 dafür, dass
RES auf "1" geschaltet wird.
Obwohl die Bits des Escape-Symbols bis dahin noch in den Decodierpfad
laufen, ändert
dies nichts mehr am Informationsinhalt der schon abgeschlossenen
Stellbit-Sequenz. Es genügt,
wenn die Länge
der Stellbit-Sequenz jeweils am betreffenden Bestimmungsort vorbekannt ist,
so dass dort die nachlaufenden Bits des Escape-Symbols ignoriert
werden können.
In jedem Fall wird der Durchlasszustand des betreffenden Operationsblockes
beendet, sobald der "1"-Pegel des Signals
RES am letzten Multiplexer des betreffenden Decodierpfades angekommen
ist.
-
Das
Einfügen
des aus mehreren Bits bestehenden Escape-Symbols nach jedem aktiven
Befehl vermindert natürlich
die Geschwindigkeit, mit welcher die Befehle aufeinander folgen
können.
Um diese Geschwindigkeit (maximale durchschnittliche Befehlsrate)
zu erhöhen,
könnte
man ein kürzeres
Escape-Symbol verwenden. Dies würde
allerdings die Codierungsmöglichkeiten
für die
aktiven Befehle weiter einschränken,
weil kein Codewort das Bitmuster des Escape-Symbols enthalten darf.
Deswegen gibt es umso mehr "verbotene" Befehlscodewörter, je
kürzer
das Escape-Symbol ist. Um dennoch eine hohe Anzahl "erlaubter" Codekombinationen
(und damit eine hohe Anzahl der möglichen Befehle) zu erhalten,
müsste
man die durchschnittliche Codewortlänge erhöhen, was wiederum zu einer
Verminderung der maximalen durchschnittlichen Befehlsrate führen würde.
-
In
einer in 4 gezeigten besonderen Ausführungsform
der Erfindung ist der serielle Befehlsdecoder so ausgebildet, dass
er serielle Befehle decodieren kann, die ohne ein zwischengeschaltetes Mehrbit-Escapesymbol
aufeinander folgen.
-
Der
in 4 gezeigte Decoder unterscheidet sich von der
Ausführungsform
nach 3 nur dadurch, dass im Empfangscontroller 30 zusätzlich ein Befehlsdiskriminator 33 vorgesehen
ist. Dieser Befehlsdiskriminator 33 enthält eine
Liste ausgewählter Befehlscodewörter, deren
Ende direkt beim Erscheinen ihres letzten Bits erkannt werden soll,
ohne dass hierzu ein Escape-Symbol notwendig ist. Der Befehlsdiskriminator 33 empfängt, ebenso
wie der Escape-Detektor 32, das Freigabe/Rücksetzsignal RES,
die Befehlsbitfolge SB und das Strobesignal STR von der Eingangsschaltung 31,
er fühlt
und vergleicht die empfangenen Befehlsbits mit der gespeicherten
Liste der ausgewählten
Befehlscodewörter. Solange
die gefühlte
Bitsequenz, die ab der Freigabe des Empfangscontrollers (RES = 0)
erscheint, in Übereinstimmung
mit irgendeinem dieser aufgelisteten Codewörter fortschreitet, hält der Befehlsdiskriminator 33 ein
Stoppsignal STP2 im inaktiven Zustand und ein Haltesignal HLD im
aktiven Zustand, wodurch der Escape-Detektor 32 im Empfangscontroller 30 inaktiv
gehalten wird. Das heißt,
so lange HLD aktiv ist, bleibt das Stoppsignal STP1 des Escape-Detektors 32 für die Eingangsschaltung 31 inaktiv.
-
Sobald
die fortschreitende Bitsequenz in Übereinstimmung mit einem aufgelisteten
ganzen Codewort ist, "weiß" der Befehlsdiskriminator 33, dass
es sich bei der erschienenen Bitsequenz um einen der "ausgewählten" Befehle handelt,
dessen letztes Bit gerade gefühlt
wurde. Der Befehlsdiskriminator 33 aktiviert in diesem
Fall ein Stoppsignal STP2. Das aktive Stoppsignal STP2 wird zum STP1-Ausgang
des Escape-Detektors "durchgeleitet". Dies bewirkt, dass
die Eingangsschaltung 31 über ihren Steuereingang RDY
zurückgesetzt
wird und das Signal RES somit auf "1" geht,
so als ob das letzte Bit einer Escape-Sequenz gefühlt worden
wäre. Somit
wird die erste nachfolgende "1" in der Befehlsbitfolge
wieder als Beginn eines neuen aktiven Befehls erkannt.
-
Stellt
der Befehlsdiskriminator 33 während des Fühlens der Befehlsbits hingegen
fest, dass die fortschreitende Bitsequenz keinem der aufgelisteten Codewörter mehr
folgt, also die Menge der ausgewählten
Befehle verlässt, "weiß" er, dass das begonnene
Befehlcodewort keinen der ausgewählten
Befehle sondern einen Befehl darstellen wird, dessen Ende anderweitig
festgestellt werden muss. Hierzu übergibt der Befehlsdiskriminator 33 die
weitere Beobachtung der Befehlsbit-Sequenz an den Escape-Detektor 32,
indem er sein Ausgangssignal HLD deaktiviert. Hierdurch wird der
Escape-Detektor 32 aktiviert und übernimmt selbst die Steuerung
der Eingangsschaltung 31, genau so wie oben in Verbindung mit 3 beschrieben,
indem er das Stoppsignal STP1 und damit die Rücksetzung des Signals RES auf "1" erst dann aktiviert, wenn er das Escape-Symbol "0000" in der Befehlsbitsequenz
SB erkennt.
-
Die
Decodierung der Befehle, also das Einrichten des jeweiligen Decodierpfades
im Codebaum, erfolgt in jedem Fall genau so, wie es anhand der 3 beschrieben
wurde.
-
Die
Kombination des Escape-Detektors 32 mit dem Befehlsdiskriminator 33 gemäß der 4 bildet
also einen Befehlsende-Detektor, der es einem seriellen Befehlscodierer
erlaubt, ausgewählten
Befehlscodewörtern
schnell ein weiteres Befehlscodewort folgen zu lassen, ohne Einfügung eines
Escape-Symbols. Es empfiehlt sich jedoch auch hier, von Seiten des
Befehlscodieres jeweils ein Füllbit
mit dem Binärwert "0" einzufügen, um genügend Zeit (eine Taktperiode)
für die
Rücksetzung
des Decoders zu haben, nachdem der Befehlsdiskriminator 33 das Ende
eines ausgewählten
Befehlscodewortes erkannt hat. Am oberen Rand der 4 ist
gezeigt, wie zwei Befehle nach dem beschriebenen Muster aufeinander
folgen.
-
Die
ausgewählten,
im Befehlsdiskriminator 33 aufgelisteten Befehlscodewörter sollten
nur nackte Befehle sein. Je mehr Befehle hierfür ausgewählt werden und je häufiger die
ausgewählten
Befehle gesendet werden, desto kürzer
wird die mittlere Befehlsrate. Andererseits erhöht sich der Speicherbedarf für die Liste
im Befehlsdiskriminator 33 mit der Anzahl und mit der Länge der
aufgelisteten Codewörter.
Es kann also vorteilhaft sein, nur kurze und/oder häufig auftretende
Befehlscodewörter
in die Liste der "ausgewählten Befehle" aufzunehmen.
-
Nachstehend
wird anhand der 5 ein Beispiel für die schaltungstechnische
Realisierung der in 3 und in 4 gezeigten
Multiplexer MUX beschrieben. Im oberen Teil der 5 ist
ein Schaltbild eines Multiplexers dargestellt, im unteren Teil der
Figur ist ein Zeitdiagramm zur Erläuterung der Arbeitsweise der
dargestellten Schaltung gezeichnet.
-
Der
Multiplexer MUX nach 5 hat drei Eingangsanschlüsse zum
Empfang des Freigabe/Rücksetz-Signals
RES, der seriellen Befehlsbits SB und des Strobesignals STR. Eine
im Multiplexer MUX enthaltene Registerschaltung 42 hat
einen Dateneingang D, der zum Empfang der eingangsseitigen Befehlsbits
SB angeschlossen ist, einen Rücksetzeingang
R, der zum Empfang des eingangsseitigen Signals RES angeschlossen
ist, und einen Takteingang T, der zum Empfang des eingangsseitigen Strobesignals
STR angeschlossen ist. Die Registerschaltung 42 ist im
rückgesetzten
Zustand, wenn ihr R-Eingang eine logische "1" empfängt. In
diesem Zustand sind die beiden Ausgänge EN-0 und EN-1 der Registerschaltung 42 auf
dem Logikwert "0".
-
Die
Flanken des Strobesignals STR geben den Takt für die Übertragung der Befehlsbits.
Beim hier dargestellten Ausführungsbeispiel,
auf welches die Erfindung jedoch nicht beschränkt ist, sind beide Flanken
des Strobesignals (also die steigenden und die fallenden Flanken) "takt-aktiv". Die Frequenz der Strobesignal-Welle
ist also gleich der Hälfte
der Bitrate 1/TB der Befehlsbits (TB ist die Bitlänge) oder, anders ausgedrückt, die
Befehlsbitrate 1/TB ist doppelt so hoch
wie die Frequenz der Strobesignal-Welle ("doppelte Datenrate", abgekürzt: DDR). Im Diagramm der 5 ist
das Strobesignal STR in der für den
DDR-Betrieb üblichen
Form ge zeichnet. Die Strobe-Flanken sind mit den Bitgrenzen der
seriellen Befehlsbits SB ausgerichtet. Zur Abtastung eines Bits
wird die Strobe-Flanke innerhalb der abtastenden Schaltung um die
Setup-Zeit TS verzögert, so dass sie die Abtastung
des betreffenden Bit erst dann aktiviert, wenn sich der Logikwert
des Bit eingeschwungen hat. Die Einstellung der Setup-Zeit TS hat direkten Einfluss auf die Verzögerung des
Multiplexers. Wenn die einzelnen aufeinander folgenden Multiplexer
dicht beieinander liegen, wählt
man kürzere Setup-Zeit.
Bei größeren Entfernungen
wird eine längere
Setup-Zeit gewählt,
um die Betriebssicherheit zu erhöhen.
-
Der
Multiplexer MUX nach 5 hat eine erste Ausgangsschaltung 40 für den 0-Ausgang
des Multiplexers und eine zweite Ausgangsschaltung 41 für den 1-Ausgang
des Multiplexers. Jede dieser Ausgangsschaltungen 40, 41 hat
einen Rücksetzeingang
R, der mit dem RES-Eingangsanschluss des Multiplexers MUX verbunden
ist, und einen Dateneingang D, der mit dem SB-Eingangsanschluss
(Befehlsbit-Eingangsanschluss) des Multiplexers MUX verbunden ist,
und einen Taktsteuereingang T. Die Ausgangsschaltungen 40 und 41 haben
jeweils drei Ausgangsanschlüsse
RES-0, SB-0, STR-0 bzw. RES-1, SB-1, STR-1. Die Strobesignale für die Ausgänge werden
vorzugsweise an Ort und Stelle für
jeden Ausgang neu erzeugt, z.B. mittels eines rückgekoppelten invertierenden
Registers (nicht dargestellt), so dass die Kontinuität der Flanken
gewährleistet
ist.
-
Die
weiteren Details des Multiplexers MUX nach 5 seien
nachstehend anhand seiner Arbeitsweise beschrieben, und zwar anhand
des Beispielfalles, dass die Folge der am Eingang ankommenden Zielbits
die Sequenz "1001" ist. Gleichzeitig mit
der Ankunft des ersten Zielbits "1" zum Zeitpunkt t1
geht RES von "1" (hoher Pegel im
Diagramm der 5) auf "0" (niedriger
Pegel), so dass dieses Zielbit mittels der zugeordneten Strobe-Flanke
in die Registerschaltung 42 getaktet wird und der Ausgang EN-1
auf "1" geht, während der
Ausgang EN-0 auf "0" bleibt. Die Registerschaltung 42 ist
so ausgebildet, dass sie sich in diesem "1-Zustand" selbst verriegelt, so lange RES auf "0" bleibt. Der Übergang des Ausgangs EN-1 von "0" auf "1" erfolgt
um TS verzögert, also zu einem Zeitpunkt
t2 = t1 + TS, und stellt eine Strobesignal-Weiche 43 so
ein, dass sie das eingangsseitige Strobesignal STR um TS verzögert an den
Takteingang T der 1-Ausgangsschaltung 41 legt. Dies bewirkt,
dass ab dem Zeitpunkt t3 = t1 + TS + TB das Rücksetzsignal
RES zum Ausgangsanschluss RES-1 übertragen
wird, das zweite und die folgenden Zielbits, also die Rest-Sequenz
001, zum Ausgangsanschluss SB-1 übertragen
werden und die Strobesignalwelle zum Ausgangsanschluss STR-1 übertragen
wird. Die Ausgangsanschlüsse
der anderen Ausgangsschaltung 40 bleiben im rückgesetzten
(inaktiven) Zustand: RES-0 bleibt auf "1",
SB-0 bleibt dauerhaft auf "0", und STR-0 bleibt
dauerhaft auf "0".
-
Falls
das erste ankommende Befehlsbit eine "0" ist,
verriegelt sich die Registerschaltung 42 im 0-Zustand,
wodurch EN-0 auf "1" und EN-1 auf "0" geht, so dass ab dem Zeitpunkt t3 =
t1 + TS + TB das Rücksetzsignal
RES zum Ausgangsanschluss RES-0 übertragen
wird, das zweite und die folgenden Zielbits zum Ausgangsanschluss
SB-0 übertragen werden
und die Strobesignalwelle zum Ausgangsanschluss STR-0 übertragen
wird. Die Ausgangsanschlüsse
der 1-Ausgangsschaltung 41 bleiben im rückgesetzten (inaktiven) Zustand:
RES-1 bleibt auf "1", SB-1 bleibt dauerhaft
auf "0", und STR-1 bleibt ebenfalls
dauerhaft auf "0".
-
Der
in 5 gezeigte Multiplexer MUX arbeitet also nach
der Vorschrift, wie sie weiter oben unter (a) und (b) formuliert
wurde. Alle Multiplexer des Decodier-Baumes sind gleich ausgebildet,
so dass ein dem jeweils aktiven Ausgang eines Multiplexers nachgeordneter
Multiplexer nur die jeweils verbliebenen Restbits der Zielbit-Sequenz
empfängt
und denjenigen seiner Ausgänge öffnet, der
durch den Logikwert des ersten Bits dieser Restsequenz bestimmt ist.
Somit wird die Zielbit-Sequenz
von Verzweigung zu Verzweigung innerhalb des Baumes immer um ein Bit
kürzer,
bis mit dem letzten Zielbit das Ende des Pfades erreicht ist.
-
Das
Signal RES wird zeitlich genau so wie die Befehlsbits SB mit den
Flanken des Strobesignals STR durch den Decodierpfad geschleust,
mit den gleichen zeitlichen Verzögerungen.
Sobald RES wieder auf "1" geschaltet wird,
ergeben sich schrittweise an den aufeinander folgenden Multiplexern
jeweils wieder die gleichen Anfangsbedingungen wie vor dem Zeitpunkt
t1. Infolge dieses Pipeline-Betriebs ist es unerheblich, mit welcher
Verzögerung
die Befehlsbits an das Ende des Decodierpfades gelangen, und am
Eingang des Multiplexer-Baumes braucht mit der Erzeugung des Signals
RES (und mit der Eingabe eines dann nachfolgenden Befehlscodewortes)
nicht gewartet zu werden, bis die Befehlsbits das Ende des Decodierpfades
erreicht haben.
-
Die
vorstehend anhand der 2 bis 4 beschriebenen
Ausführungsformen
des seriellen Befehlsdecoders und seiner Komponenten, wie seines Empfangscontrollers 30 und
seiner "Weichen"-Schaltungen (Multiplexer),
sind nur Beispiele. Natürlich sind
Abwandlungen oder alternative Ausführungsformen möglich, ohne
den Gedanken der Erfindung zu verlassen. Einige Bespiele für mögliche Varianten werden
nachstehend beschrieben.
-
Der
Befehlsdecoder kann gewünschtenfalls auf
den Empfang nackter Befehle (nur Zielinformation) beschränkt sein;
eventuelle Stellinformationen müssen
dann über
andere Pins eingegeben werden (z.B. über Adresspins, wie an sich
bekannt). Insbesondere in diesem Fall kann die im Befehlsdiskriminator 33 gespeicherte
Liste alle Befehle als "ausgewählte Befehle" enthalten, so dass
ein Escape-Symbol niemals notwendig ist und demzufolge der Escape-Decoder 32 ganz
entfallen kann. Die Erzeugung eines HLD-Signals ist seitens des
Befehlsdiskriminators 33 ist dann überflüssig, und der SPT2-Ausgang des
Befehlsdiskriminators 33 kann direkt mit dem RDY-Eingang
der Eingangsschaltung 31 verdrahtet werden.
-
Es
ist auch möglich,
einen oder mehrere Decodierpfade so auszubilden, dass sie Befehle übertragen,
deren Bits mit einer Rate empfangen werden, die um einen ganzzahligen
Divisor q niedriger ist als die Taktfrequenz CLK. Solche "verlangsamten" Befehle sind erforderlich,
wenn sehr langsam arbeitende Schaltungen angesprochen werden sollen,
z.B. Testmodus-Schaltungen, die nicht für hohe Frequenzen ausgelegt
sind. Um einen oder mehrere Decodierpfade entsprechend auszubilden,
kann einem Ausgang eines Multiplexers ein einfacher 1/q-Frequenzteiler
nachgeschaltet werden, der nur jedes q-te Bit weitergibt. Die folgenden
Zweige des Baumes arbeiten dann mit 1/q der Taktfrequenz CLK.
-
Wie
bereits angedeutet, ermöglicht
die Verwendung von längenvariablen
Befehlscodes eine theoretisch unbegrenzte Erweiterung der Befehlsmenge,
ohne die bestehende Befehlsstruktur ändern zu müssen. Um eine Erweiterung zu
erleichtern, kann man im Baum des Decoders einen Ausgang an einem
oder jeweils mehreren Multiplexern vorerst unbelegt lassen, um dort
im Bedarfsfall weitere Verzweigungen zur Decodierung neuer (und
entsprechende zu codierender) Befehle anschließen zu können. Eine Alternative wäre, den
Decodierbaum a priori mit mehr Verzweigungen zu versehen, als für die Decodierung
gegenwärtig
gebrauchter Befehle erforderlich sind. Hierdurch ergeben sich gleichsam "Platzhalter" für neu einzuführende Befehle.
-
Teile
des seriellen Befehlsdecoders können auch
im Block 12 der internen Steuereinrichtung des Speicherbausteins
(1) integriert sein, so etwa die in 3 gezeigten
Operationsblöcke
Op#.. und gewünschtenfalls
auch einige oder alle der in 3 gezeigten
Multiplexer.
-
Als
Alternative zu Codes variabler Länge können für die seriellen
Befehlscodewörter
SB auch Codes fester Länge
verwendet werden, insbesondere wenn nur nackte Befehle oder nur kombinierte
Befehle zu decodieren sind. Man benötigt dann in keinem Fall ein
Escape-Symbol, weil das Ende jedes Befehls durch Abzählen der
Bits erkannt werden kann. Bei kombinierten Befehlen kann die Unterscheidung
zwischen Zielinformation und Stellinformation anhand der Position
der jeweiligen Bits innerhalb des kombinierten Codewortes erfolgen.
Hierbei sind jedoch gewisse Einschränkungen hinsichtlich der Wortlänge und
somit hinsichtlich der Vielfalt möglicher Operationen und möglicher
Stellinformationen in Kauf zu nehmen.
-
Ferner
sei erwähnt,
dass der Speicherbaustein auch mehr als nur einen seriellen Befehlsanschluss
aufweisen kann, wobei jedem dieser Anschlüsse ein gesonderter serieller
Befehlsdecoder zuzuordnen wäre.
-
Schließlich sei
bemerkt, dass ein Speichercontroller natürlich so ausgebildet sein muss,
dass er die seriellen Befehle in einer Form sendet, die vom seriellen
Befehlsdecoder des Speicherbausteins verstanden wird, also eindeutig
decodiert werden kann. In manchen Fallen mag es aber zweckmäßig sein, die
Codierung der seriellen Befehle abhängig von Kriterien zu wählen, die
für den
Speichercontroller wichtig sind. In solchen Fällen kann es beim Designer
des Speichercontrollers liegen, eine für ihn günstige Codierung vorzugeben,
nach welcher sich dann der Designer des Speicherbausteins zu richten
hat. Gegenstand der Erfindung ist mithin auch ein Speichercontroller,
der so ausgebildet ist, dass er nicht nur parallel-codierte Befehle
sondern auch serielle Befehle in einer Codierung senden kann, die
von einem erfindungsgemäß ausgebildeten
seriellen Befehlsdecoder in einem Speicherbaustein decodierbar ist.
-
- 10
- Speicherschaltung
- 11
- Speicherzellenfeld
- 12
- Speicher-Steuereinrichtung
- 13
- Adressdecoder
- 14
- Parallelbefehlsdecoder
- 15
- serieller
Befehlsdecoder
- 16
- Taktsignalempfänger
- 20
- Speichercontroller
- 24
- Parallelbefehlscodierer
- 25
- serieller
Befehlscodierer
- 30
- Empfangscontroller
- 31
- Eingangsschaltung
- 32
- Escape-Detektor
- 33
- Befehlsdiskriminator
- 40
- Multiplexer-Ausgangsschaltung
- 41
- Multiplexer-Ausgangsschaltung
- 42
- Registerschaltung
- 43
- Strobesignal-Weiche
- ADR
- Adressbits
- CLK
- Taktsignal
- DAT
- Datenbits
- HLD
- Haltesignal
- MUX
- Verzweigungsweiche
(Multiplexer)
- RES
- Rücksetz/Freigabe-Signal
- SB
- Serielle
Befehlsbits
- STP
- Stoppsignal
- STR
- Strobesignal