-
Technisches
Gebiet
-
Die
Erfindung betrifft integrierte Schaltungsbauelemente, insbesondere
betrifft sie das Einstellen der zeitlichen Lage eines internen Taktsignals,
welches von einem externen Taktsignal abgeleitet ist, so dass das interne
Taktsignal zum Zwischenspeichern eines externen digitalen Signals
zum optimalen Zeitpunkt benutzt werden kann. Insbesondere betrifft
die Erfindung ein Verfahren gemäß Oberbegriff
des Anspruchs 1 und ein System gemäß Oberbegriff des Anspruchs
8.
-
Hintergrund
der Erfindung
-
Herkömmliche
Computersysteme enthalten einen Prozessor, der mit einer Vielfalt
von Speicherbauelementen gekoppelt ist, darunter Festspeicher ("ROMs"), die in traditioneller
Weise Befehle für
den Prozessor speichern, außerdem
einen Systemspeicher, in den der Prozessor Daten einschreiben und
aus dem er Daten lesen kann. Der Prozessor kann außerdem mit
einem externen CACHE-Speicher kommunizieren, bei dem es sich im
Allgemeinen um einen statischen Lese-/Schreiber-Speicher ("SRAM") handelt. Ferner
kommuniziert der Prozessor mit Eingabegeräten, Ausgabegeräten und
Datenspeichergeräten.
-
Prozessoren
arbeiten im Allgemeinen bei einer relativ hohen Geschwindigkeit.
Prozessoren wie der PentiumR und der Pentium
Pro" sind als Mikroprozessoren
derzeit für
Betriebsgeschwindigkeiten mit Arbeitstakten von mindestens 200 MHz
verfügbar.
Die übrigen
Komponenten des Computersystems jedoch sind mit Ausnahme des SRAM-CACHE-Speichers
nicht in der Lage, mit der Geschwindigkeit des Prozessors zu arbeiten.
Aus diesem Grund werden die Systemspeicherelemente sowie die Eingabegeräte, die
Ausgabegeräte
und die Datenspeichergeräte,
nicht direkt an den Prozessorbus gekoppelt. Statt dessen werden
die Systemspeicher im Allgemeinen mit dem Prozessorbus über eine
Speichersteuerung gekoppelt, und die Eingabegeräte, Ausgabegeräte und Datenspeichergeräte werden
mit dem Prozessorbus über
eine sogenannte Busbrücke
gekoppelt. Die Speichersteuerung ermöglicht es den Systemspeichergeräten, bei
einer Taktfrequenz betrieben zu werden, die wesentlich geringer
ist als die Taktfrequenz des Prozessors. In ähnlicher Weise ermöglicht es die
Busbrücke
den Eingabegeräten,
Ausgabegeräten
und Datenspeichergeräten,
bei einer Frequenz zu arbeiten, die wesentlich niedriger ist als
die Taktfrequenz des Prozessors. Derzeit lässt sich beispielsweise ein
Prozessor mit einer Taktfrequenz von 200 MHz auf einer Mutterplatine
anbringen, die mit einer Taktfrequenz von 66 MHz zum Steuern der
Systemspeichergeräte
sowie anderen Komponenten arbeitet.
-
Zugriff
zu dem Systemspeicher ist ein häufiger
Arbeitsvorgang für
den Prozessor. Die für
den Prozessor, der zum Beispiel mit 200 MHz arbeitet, aufzubringende
Zeit zum Lesen von Daten aus oder zum Schreiben von Daten in ein
Systemspeicherbauelement, das zum Beispiel bei 66 MHz arbeitet,
verlangsamt beträchtlich die
Geschwindigkeit, mit der der Prozessor seine Operationen ausführen kann.
Fraglich wurden beträchtliche Anstrengungen
unternommen, um die Arbeitsgeschwindigkeit der Systemspeicherbauelemente
zu steigern.
-
Systemspeicherbauelemente
sind im Allgemeinen dynamische Schreib-/ Lese-Speicher ("DRAMs"). Am Anfang waren
DRAMs asynchron und arbeiteten folglich nicht mit der gleichen Taktgeschwindigkeit
wie die Mutterplatine. Tatsächlich
erforderte ein Zugriff auf asynchrone DRAMs häufig Wartezustände, um
den Prozessor solange anzuhalten, bis der DRAM einen Speichertransfer
abgeschlossen hatte. Allerdings wurde die Arbeitsgeschwindigkeit
von asynchronen DRAMs erfolgreich gesteigert durch Innovationen
wie zum Beispiel den Burst- und Page- Modus von DRAMs, die es nicht
erforderlich machten, für
jeden Speicherzugriff dem DRAM eine Adresse anzubieten. In jüngerer Zeit
wurden synchrone dynamische Schreib-/ Lese-Speicher ("SDRAMs") entwickelt, die
den Datentransfer bei der Taktgeschwindigkeit der Mutterplatine
im Pipeline-Betrieb ermöglichen.
Allerdings sind sogar SDRAMs typischerweise nicht im Stande, bei
der Taktgeschwindigkeit der derzeit verfügbaren Prozessoren zu arbeiten.
Damit können
SDRAMs nicht direkt an den Prozessorbus gekoppelt werden, sie müssen vielmehr
eine Schnittstelle mit dem Prozes sorbus über eine Speichersteuerung, eine
Busbrücke
oder eine ähnliche
Einrichtung aufweisen. Die Diskrepanz zwischen der Betriebsgeschwindigkeit
des Prozessors und derjenigen der SDRAMs ist immer noch eine Begrenzung
für die
Geschwindigkeit, mit der Prozessoren Operationen abschließen können, die
einen Zugriff zum Systemspeicher erfordern.
-
Eine
Lösung
dieser Betriebsgeschwindigkeit-Diskrepanz wurde in Form einer Computerarchitektur vorgeschlagen,
die unter der Bezeichnung "SyncLink" bekannt ist. Bei
der SyncLink-Architektur kann der Systemspeicher direkt über den
Prozessorbus mit dem Prozessor gekoppelt werden. Anstatt dass es
erforderlich ist, getrennte Adressen- und Steuersignale an den Systemspeicher
zu geben, empfangen SyncLink-Speicherbauelemente Befehlspakete,
die sowohl Steuer- als auch Adresseninformation enthalten. Das SyncLink-Speicherbauelement
gibt dann Daten auf den Datenbus oder empfängt Daten vom Datenbus, der
direkt mit den Datenbusabschnitt des Prozessorbusses gekoppelt ist.
-
Ein
Beispiel für
ein Computersystem 10 mit einer SyncLink-Architektur ist
in 1 gezeigt. Das Computersystem 10 enthält einen
Prozessor 12 mit einem Prozessorbus 14, an den
drei paketierte Schreib-/ Lese-Speicher oder SyncLink-DRAMs ("SLDRAM") – Bauelemente 16a–c gekoppelt
sind. Das Computersystem 10 enthält weiterhin ein oder mehrere
Eingabegeräte 20,
zum Beispiel eine Tastatur oder eine Maus, an den Prozessor 12 über eine
Busbrücke 22 und
einen Erweiterungsbus 24 gekoppelt, beispielsweise in Form
eines Industrienormarchitektur-Busses ("ISA")
oder eines Peripheriekomponenten-Verbindungsbusses
("PCI"). Die Eingabegeräte 20 ermöglichen
einem Bediener oder einem elektronischen Gerät, Daten in das Computersystem 10 einzugeben.
Ein oder mehrere Ausgabegeräte 30 sind
mit dem Prozessor 12 gekoppelt, um von dem Prozessor 12 generierte
Ausgabedaten anzuzeigen oder anderweitig auszugeben. Die Ausgabegeräte 30 sind mit
dem Prozessor 12 über
den Erweiterungsbus 24, die Busbrücke 22 und den Prozessorbus 14 gekoppelt. Beispiele
für Ausgabegeräte 24 sind
Drucker und Videoanzeigeeinheiten. Ein oder mehrere Datenspeichergeräte 38 sind
mit dem Prozessor 12 über
den Prozessorbus 14, die Busbrücke 22 und den Erweiterungsbus 24 gekoppelt,
um Daten in ein (nicht dargestelltem) Speichermedium zu speichern
oder Daten aus ihm zu holen. Beispiele für Speichergeräte oder-
Bauelemente 38 sowie Speichermedien enthalten Festplattenlaufwerke, Floppy-Disc-Laufwerke,
Bandkassetten und CD-ROM-Laufwerke.
-
In
Betrieb kommuniziert der Prozessor 12 mit den Speichergeräten 16a–c über den
Prozessorbus 14, indem er den Speichergeräten 16a–c Befehlspakete sendet,
die sowohl Steuer- als auch Adresseninformation enthalten. Daten
werden zwischen dem Prozessor 12 und den Speichergeräten 16a–c über einen
Datenbusteil des Prozessorbusses 14 übermittelt. Obschon sämtliche
Speichergeräte 16a–c an
die gleichen Leiter des Prozessorbusses 14 gekoppelt sind,
führt nur
ein Speichergerät 16a–c zu
gegebener Zeit das Lesen oder das Schreiben von Daten aus und vermeidet
damit einen Streit um den Prozessorbus 14. Ein Streit um
den Bus wird dadurch vermieden, dass jedes Speichergerät 16a–c an
der Busbrücke 22 eine
eindeutige Kennung besitzt und das Befehlspaket einen Erkennungscode
beinhaltet, der nur eine dieser Komponenten auswählt.
-
Das
Computersystem 10 enthält
ferner eine Anzahl weiterer Komponenten und Signalleitungen, die
in 1 aus Gründen
der Knappheit weggelassen sind. Wie unten erläutert werden wird, empfangen
beispielsweise die Speicherbauelemente 16a–c ein externes Taktsignal
CKEXT, um interne Zeitsteuersignale bereitzustellen, ein Datentaktsignal
DCLK, welches Daten in die Speicherbauelemente 16a–c hinein
oder aus ihnen heraus taktet, und ein Signal FLAG, welches den Beginn
eines Befehlspaketes signalisiert.
-
Eines
der Speicherbauelemente 16a ist in 2 in Form
eines Blockdiagramms dargestellt. Das Speicherbauelement 16a enthält eine
Taktgeneratorschaltung 40, die ein Mastertaktsignal CKEXT
empfängt und
ein internes Taktsignal CKINT sowie eine große Anzahl weiterer Takt- und
Zeitsteuersignale zum Steuern des zeitlichen Ablaufs verschiedener
Operationen innerhalb des Speicherbauelements 16 erzeugt.
Das Speicherbauelement 16 enthält außerdem einen Befehlspuffer 46 und
eine Adresseneingangsschaltung 48, die ein internes Taktsignal
CKINT, ein Befehlspaket beziehungsweise CA0–CA9 auf einem 10-Bit-Befehlsbus 50 und
ein Signal FLAG auf der Leitung 52 empfangen. Die (nicht
dargestellte) Speichersteuerung oder eine andere Einrichtung sendet
normalerweise das Befehlspaket CA0–CA9 synchron mit dem externen
Taktsignal CKEXT an das Speicherbauelement 16a. Wie oben
ausgeführt,
enthält
das Befehlspaket Steuer- und Adresseninformation für jeden
Speichertransfer, und das Signal FLAG kennzeichnet den Start eines
Befehlspakets, welches mehr als ein 10 Bits umfassendes Paketwort
beinhalten kann. Tatsächlich
wird ein Befehlspaket im Allgemeinen in der Form einer Folge von
10-Bit-Paketwörtern auf
dem 10-Bit-Befehlsbus 50 gebildet. Der Befehlspuffer 46 empfängt das
Befehlspaket von dem Bus 50 und vergleicht zumindest einen
Teil des Befehlspakets mit Kennungsdaten von einem ID-Register 56,
um festzustellen, ob das Befehlspaket an das Speicherbauelement 16a oder
ein anderes Speicherbauelement 16b, c gerichtet ist. Wenn
der Befehlspuffer 46 feststellt, dass das Befehlspaket
an das Speicherbauelement 16a gerichtet ist, gibt er ein
Befehlswort an eine Befehlsdekodier- und Ablaufsteuerung 60.
Die Befehlsdekodier- und Ablaufsteuerung 60 generiert eine
große
Anzahl interner Steuersignale zum Steuern des Betriebs des Speicherbauelements 16a während eines
Speichertransfers.
-
Die
Adresseneingangsschaltung 48 empfängt außerdem die Befehlswörter von
dem Befehlsbus 50 und gibt eine 20 Bits umfassende Adresse
aus, die der Adresseninformation in dem Befehlspaket entspricht. Die
Adresse wird an eine Adressenablaufsteuerung 64 gegeben,
die eine entsprechende 3 Bits umfassende Bankadresse auf einen Bus 66,
eine 10 Bits umfassende Reihenadresse auf einen Bus 48 und
eine 7 Bits umfassende Spaltenadresse auf einen Bus 70 gibt.
Die Spaltenadresse und die Reihenadresse werden von Spalten- und
Reihenadresspfaden 73, 75 in der unten beschriebenen
Weise verarbeitet.
-
Eines
der Probleme bei herkömmlichen
DRAMs ist deren relativ geringe Geschwindigkeit, bedingt durch die
Zeit, die zum Voraufladen und Ausgleichen der Schaltung innerhalb
des DRAM-Arrays benötigt
wird. Der in 2 dargestellte paketierte DRAM 16a vermeidet
dieses Problem in starkem Maß durch
Verwendung mehrerer Speicherbänke 80,
im vorliegenden Fall von acht Speicherbänken 80a–h.
Nachdem ein Speicher-Lesevorgang aus einer Bank 80a stattgefunden
hat, kann diese Bank 80a voraufgeladen werden, während ein Zugriff
auf die übrigen
Bänke 80b–h erfolgt.
Jede der Speicherbänke 80a–h empfängt eine
Reihenadresse von einem zugehörigen
Reihen-Zwischenspeicher/ Dekodieren/ Treiber 80a–h.
Sämtliche
Reihen-Zwischenspeicher/ Dekodierer/ Treiber 80a–h empfangen
von einem Vordekodierer 84 die gleiche Reihenadresse, wobei der
Vordekodierer seinerseits eine Reihenadresse von entweder einem
Reihenadressenregister 86, einer Redundanzreihenschaltung 87 oder
einem Auffrischungszähler 88 empfängt, was
durch einen Multiplexer 90 festgelegt wird. Allerdings
ist zu jeweils einem Zeitpunkt nur eine der Reihen-Zwischenspeicher/
Dekodierer / Treiber 80a–h aktiv,
was durch eine Banksteuerlogik 94 als Funktion einer von
einem Bankadressenregister 96 kommenden Bankadresse festgelegt
wird.
-
Die
Spaltenadresse auf dem Bus 70 wird über einen Spaltenadressenpfad 75 auf
eine Redundanzspaltenschaltung 71 gegeben, die feststellt,
ob die Spaltenadresse einer defekten Adresse entspricht. Die Redundanzspaltenschaltung 71 gibt
entweder die Spaltenadresse oder eine redundante Spaltenadresse
an einen Spalten-Zwischenspeicher/ Dekodierer 100, der
an eine E/A-Verknüpfungsschaltung 102 E/A-Gattersignale liefert.
Die E/A-Verknüpfungsschaltung 102 bildet
eine Schnittstelle bezüglich
der Spalten der Speicherbänke 80a–h über Leseverstärker 104.
Daten werden in die und aus den Speicherbänken 80a–h über die
Leseverstärker 104 und
die E/A-Verknüpfungsschaltung 102 zu
ein Datenpfad-Subsystem 108 gekoppelt, welches einen Lesedatenpfad 110 und
einen Schreibdatenpfad 112 enthält. Der Lesedatenpfad 110 enthält eine
Bank von Gleichstrom-Leseverstärkern 103 und
einen Lesezwischenspeicher 120, die Daten von der E/A-Verknüpfungsschaltung 102 empfangen
und speichern. In dem in 2 gezeigten Speicherbordelement 16a werden 64 Datenbits
in dem Lesezwischenspeicher 120 gespeichert. Der Lesezwischenspeicher
liefert dann vier 16-Bit-Datenwörter
an einen Ausgangsmultiplexer 122, der sequentiell jedes
der 16-Bit-Datenwörter
an einen Lese-FIFO-Puffer 124 liefert. Aufeinanderfolgende
16-Bit-Datenwörter
werden von einem Taktsignal RCLK, welches aus dem internen Takt
CKINT mit Hilfe einer programmierbaren Verzögerungsschaltung 126 erzeugt wird,
durch den Lese-FIFO-Puffer 124 getaktet.
Der Lese-FIFO-Puffer 124 legt sequentiell die 16- Bit-Datenwörter an
eine Treiberschaltung 128, die ihrerseits die 16-Bit-Datenwörter an
einen Datenbus 130 legt, der Bestandteil des Prozessorbusses 14 ist.
-
Der
Schreibdatenpfad 112 enthält einen Empfangspuffer 140,
der an den Datenbus 130 gekoppelt ist. Der Empfangspuffer 140 legt
sequentiell 16-Bit-Wörter von
dem Datenbus 130 an vier Eingangsregister 142, von
denen jedes selektiv durch ein Signal von einer Taktgeneratorschaltung 144 freigegeben
wird, ansprechend auf den Datentakt DCLK, der über die Leitung 132 an
das Speicherbauelement 16a gegeben wird. Wie bei dem externen
Taktsignal CKEXT und dem Befehlspaket CA0–CA9 sendet die Speichersteuerung
oder ein anderes Bauteil (nicht dargestellt) normalerweise die Daten
synchron mit dem Datentaktsignal DCLK an das Speicherbauelement 16a.
Auf diese Weise speichern die Eingangsregister 142 sequentiell
vier 16-Bit-Datenwörter
und kombinieren sie zu einem 64-Bit-Datenwort, das an ein Schreib-FIFO-Puffer 148 gelegt
wird. Der Schreib-FIFO-Puffer 148 wird von einem Signal
aus dem Taktgenerator 144 und einem internen Schreibtakt WCLK
getaktet, um 64-Bit-Schreibdaten
in einen Schreibzwischenspeicher und -Treiber 150 zu bringen.
Der Schreibzwischenspeicher und -Treiber 150 legt die 64-Bit-Schreibdaten
an eine der Speicherbänke 80a–h,
und zwar über
die E/A-Verknüpfungsschaltung 102 und
die Leseverstärker 104.
-
Wie
oben ausgeführt,
besteht ein wichtiges Ziel in der SyncLink-Architektur darin, einen
Datentransfer zwischen einem Prozessor und einem Speicherbauelement
mit einer deutlich höheren
Geschwindigkeit abzuwickeln. Wenn allerdings die Rate des Datentransfers
größer wird,
wird es auch schwieriger, die Synchronisation zwischen Signalen,
die an das Speicherbauelement 16a gesendet werden, aufrecht
zu erhalten. Beispielsweise wird, wie oben ausgeführt wurde,
das Befehlspaket CA0–CA9
normalerweise synchron mit dem externen Taktsignal CKEXT an das
Speicherbauelement 16a gesendet, und normalerweise werden
die Daten zu dem Speicherbauelement 16a synchron mit dem
Datentaktsignal DCLK gesendet. Aufgrund der ungleichen Signalverzögerungen
und weiterer Faktoren kann allerdings das Befehlspaket CA0–CA9 nicht
synchron mit dem externen Taktsignal CKEXT an dem Speicherbauele ment 16a ankommen,
und möglicherweise
kommen die Daten am Speicherbauelement 16a synchron mit
dem Datensignal DCLK an. Selbst dann, wenn diese Signale tatsächlich synchron
zueinander an das Speicherbauelement 16a gekoppelt werden,
verlieren sie möglicherweise
ihre Synchronisation, nachdem sie an Schaltungsteile innerhalb des
Speicherbauelements gekoppelt sind. Beispielsweise erfordern interne
Signale Zeit, um zu verschiedenen Schaltungsteilen innerhalb des Speicherbauelements 16a zu
gelangen. Unterschiedliche Längen
des Signalverlaufs können
zu Differenzen in den Zeiten führen,
innerhalb derer Signale die jeweilige Schaltung erreichen. Unterschiede
in der kapazitiven Aufladung von Signalleitungen können ebenfalls
Differenzen in den Zeiten hervorrufen, zu denen Signale die Schaltungsteile
erreichen. Diese Unterschiede in den Ankunftszeiten können bei
höheren
Betriebsgeschwindigkeiten noch deutlicher werden und letztlich die
Betriebsgeschwindigkeit von Speicherbauelementen begrenzen.
-
Wie
oben ausgeführt,
werden die oben angesprochenen Problem noch verschärft, wenn
Zeitsteuertoleranzen bei höheren
Datentransferraten noch gravierender werden. Wenn z. B. der von
dem externen Takt CKEXT abgeleitete interne Takt CKINT das Befehlspaket
CA0–C9
nicht zur richtigen Zeit zwischenspeichert, kann dies zu Fehlern
beim Betrieb des Speicherbauelements führen. Ähnlich gilt: wenn der Datentakt
DCLK die an das Speicherbauelement angelegten Daten nicht zur passenden
Zeit eintaktet, kann es zu Datenfehlern kommen.
-
Unglücklicherweise
gibt es bislang kein geeignetes Mittel, um sicherzustellen, dass
digitale Signale, beispielsweise die Befehlspakete CA0–CA9 und
digitale Signale, in Speicherbauelementen wie beispielsweise dem
in 2 gezeigten DRAM, auch bei sehr hohen Datentransfergeschwindigkeiten
zur richtigen Zeit zwischengespeichert werden.
-
Obschon
die obige Diskussion das Erfordernis schnellerer Befehlspuffer in
paketierten DRAMs betrifft, gibt es ähnliche Probleme bei anderen
Speicherbauelementen, beispielsweise asynchronen DRAMs und synchronen
DRAMs, die Steuer- und andere Signale bei hoher Verarbeitungsgeschwindigkeit
verarbeiten müssen.
-
Die
US-A-3 633 174 offenbart ein Verfahren und ein System gemäß dem Oberbegriff
des Anspruchs 1 bzw. des Anspruchs 8. Die vorliegende Erfindung
schafft ein Verfahren und ein System gemäß den unabhängigen Patentansprüchen. Bevorzugte
Ausführungsformen
sind durch die abhängigen
Ansprüche
definiert.
-
Obschon
das erfindungsgemäße System
zum adaptiven Einstellen der zeitlichen Lage eines internen Taktsignals
von jeder integrierten Schaltung genutzt werden kann, ist es besonders
gut angepasst zur Verwendung in einem Speicherbauelement, beispielsweise
einem paketierten dynamischen Schreib-/Lesespeicher, um das Eintakten
von an das Speicherbauelement gelegten Befehlen zu steuern. Die
Erfindung kann in einer Vielfalt von Systemen verwirklicht werden,
die in adaptiver Weise die Phase eines internen Taktsignals in Relation
zu einem externen Taktsignal einstellen. Die Systeme können durch
wiederholtes Empfangen eines digitalen Signals arbeiten, von denen
jedes ansprechend auf einzelne Phasen des internen Taktsignals zwischengespeichert
wird. Die zwischengespeicherten digitalen Signale werden dann darauf überprüft, ob sie
den empfangenen digitalen Signalen entsprechen. Dann wird eine Phase
des internen Taktsignals aus dem Bereich von Phasen des internen
Taktsignals ausgewählt,
der exakt die jeweiligen digitalen Signale eingetaktet hat. Vorzugsweise
enthält
das System eine Taktgeneratorschaltung, die das interne Taktsignal
generiert. Das interne Taktsignal besitzt eine Phasenrelation zu
dem externen Taktsignal, die durch ein Phasenbefehlssignal bestimmt
wird. Das interne Taktsignal triggert eine Zwischenspeicherschaltung,
beispielsweise ein Schieberegister. Die Zwischenspeicherschaltung
ist mit einem der Eingangsanschlüsse
der integrierten Schaltung gekoppelt, so dass der Zwischenspeicher
ein an den Eingangsanschluss angelegtes Eingangssignal ansprechend
auf einen Übergang
des internen Taktsignals speichert. Das Zeitsteuersystem enthält außerdem eine Ladesteuerschaltung,
die mehrere Phasenbefehlssignale ansprechend auf das Speichern mehrerer
Eingangssignale in dem Zwischenspeicher generiert. Jedes der Phasenbefehlssignale
entspricht einer anderen Phase des internen Taktsignals. Eine Auswerteschaltung,
die an den Zwischenspeicher gekoppelt ist, empfängt eine Mehrzahl von zwischengespeicherten
Signalen und stellt fest, ob jedes dieser Signale von dem Zwischenspeicher
exakt aufgenommen wurde. Die Auswerteschaltung generiert mehrere
Ergebnissignale, kennzeichnend dafür, ob jedes der zwischengespeicherten
Signale von dem Zwischenspeicher exakt aufgenommen wurde. Die Ergebnissignale
werden dann in einem Register gespeichert, welches an die Auswerteschaltung
und die Laststeuerschaltung gekoppelt ist. Eine Analyseschaltung,
die mit dem Register gekoppelt ist, untersucht die in dem Register
gespeicherten Ergebnissignale, und aufgrund der Untersuchung der
gespeicherten Ergebnissignale erzeugt sie das Phasenbefehlssignal
und legt es kontinuierlich an die Taktgeneratorschaltung an.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
ein Blockdiagramm eines herkömmlichen
Computersystems, welches von mehreren paketierten SynkLink-Speicherbauelementen
Gebrauch macht.
-
2 ist
ein Blockdiagramm eines herkömmlichen
paketierten DRAMs, das in dem in 1 gezeigten Computersystem
eingesetzt ist.
-
3 ist
ein Blockdiagramm einer bevorzugten Ausführungsform eines Teils einer
Befehlspuffer- und Taktgeneratorschaltung gemäß der Erfindung, die in dem
in 2 gezeigten paketierten DRAM einsetzbar ist.
-
4 ist
ein detaillierteres Blockdiagramm des Teils der in 3 dargestellten
Befehlspuffer- und Taktgeneratorschaltung.
-
5 ist
ein Logikdiagramm und ein Blockdiagramm der Taktsteuerschaltung,
die in der in 4 gezeigten Taktgeneratorschaltung
eingesetzt wird.
-
6 ist
ein Impulsdiagramm, welches verschiedene Signale veranschaulicht,
die in der in 5 gezeigten Taktsteuerschaltung
auftreten.
-
7A und 7B bilden
ein Blockdiagramm einer Ausführungsform
einer in der Taktsteuerschaltung nach 5 verwendeten
Phasensteuerschaltung.
-
8 ist
ein Logikdiagramm und eine schematische Darstellung einer Auswerteschaltung,
die in der in den 7A und 7B dargestellten
Phasensteuerschaltung eingesetzt wird.
-
9 ist
ein Logikdiagramm und eine schematische Darstellung eines Registers
sowie eines Signalwählers,
die in der in 7A und 7B dargestellten
Phasensteuerschaltung verwendet werden.
-
10 ist
ein Logikdiagramm einer Betriebsabschaltung einer Selektorsteuerschaltung,
die in der in den 7A und 7B dargestellten
Phasensteuerschaltung eingesetzt werden.
-
11 ist
ein Logikdiagramm einer Nulldetektorschaltung, die in der in den 7A und 7B gezeigten
Phasensteuerschaltung eingesetzt wird.
-
12 ist
ein Logikdiagramm einer Zähler-
und Vordekodiererschaltung, die in der in den 7A und 7B gezeigten
Phasensteuerschaltung verwendet wird.
-
13 ist
ein Logikdiagramm einer Dekodierschaltung, die in der Phasensteuerschaltung
nach den 7A und 7B eingesetzt
wird.
-
14 ist
ein Logikdiagramm sowie eine schematische Darstellung eines Ergebnisauswahlkodierers, der
in der Phasensteuerschaltung nach den 7A und 7B eingesetzt
wird.
-
15 ist
ein Logikdiagramm einer Multiplexerschaltung, die in der Phasensteuerschaltung
der 7A und 7B verwendet
wird.
-
16 ist
ein Logikdiagramm einer Zwischenspeicherschaltung, die in der Phasensteuerschaltung nach
den 7A und 7B verwendet
wird.
-
Detaillierte
Beschreibung der Erfindung
-
Eine
Ausführungsform
einer Befehlspuffer- und Taktsteuerschaltung 200 gemäß der Erfindung
ist in 3 dargestellt. Die Befehlspuffer- und Taktsteuerschaltung 200 kann
anstelle des in 2 dargestellten Befehlspuffers 46 und
Taktgenerators 40 verwendet werden, und das dadurch erhaltene
Speicherbauelement kann in dem in 1 dargestellten
Computersystem eingesetzt werden. Gemäß 3 wird ein
aus mehreren Paketwörtern
bestehendes Befehlspaket CA über
einen Befehlsbus 204 an ein Schieberegister 202 gelegt.
Die Breite des Busses 204 entspricht der Größe des Schieberegisters 202,
und die Anzahl von Paketwörtern
in dem Befehlspaket entspricht der Anzahl von Stufen des Schieberegisters 202.
Bei der in 3 gezeigten Ausführungsform
besitzt das Schieberegister 202 vier Stufen, von denen
jede eine Breite von 10 Bits hat. Damit empfängt das Schieberegister 202 sequenziell
vier 10-Bit-Paketwörter
CA<0:9>. Jedes der vier Paketwörter wird
ansprechend auf jeden von mehreren Impulsen SCHIEBEN in das Schieberegister 202 und
dann von einer Registerstufe zur nächsten geschoben.
-
Übereinstimmend
mit dem Beginn eines vier Paketwörter
umfassenden Befehlspakets wird an eine Zeitsteuerschaltung 206 ein
Signal FLAG gelegt. Das Signal FLAG gibt die Zeitsteuerschaltung 206 frei
zum Erzeugen der Impulse SCHIEBEN ansprechend auf dem internen Taktsignal
ICLK. Nachdem vier Paketwörter in
das Schieberegister 202 geschoben sind, erzeugt die Steuerschaltung 206 ein
Signal LADEN, welches an ein Speicherregister 208 gelegt
wird. Das Speicherregister 208 wird dann mit sämtlichen
in dem Schieberegister 202 gespeicherten Daten geladen.
Bei der in 3 gezeigten Ausführungsform,
bei der vier 10-Bit-Paketwörter
in das Schieberegister 202 geschoben werden, empfängt das
Speicherregister 208 ein 40 Bits umfassendes Befehlswort
und speichert es. Allgemeiner gesprochen besitzt aber das Schieberegister 202 N-Stufen mit
jeweils einer Breite von M-Bits, und das Speicherregister 208 lädt ein M*N-Bit-Befehlswort.
Nach dem Laden des Speicherregister 208 gibt dieses kontinuierlich
das M*N-Bit-Befehlswort Y<0:39> aus.
-
Wie
oben erläutert,
ist es bei hohen Betriebsgeschwindigkeiten von Bedeutung, dass das
Signal SCHIEBEN zur richtigen Zeit an das Schieberegister 202 gelegt
wird, damit es die Signale auf dem Befehlsbus 204 korrekt
dann eintaktet, wenn zulässige
Paketwörter
am Befehlsbus 204 anstehen. Wenn beispielsweise das Schieberegister 202 von
Impulsen SCHIEBEN während
eines Übergangs
von einem Paketwort zum nächsten
getaktet wird, werden verfälschte
Daten in das Schieberegister 202 geschoben. Besonders schwierig ist
es, sicherzustellen, dass die Impulse SCHIEBEN zur richtigen Zeit
erzeugt werden, weil die Ausbreitungsverzögerung sowohl des externen
Taktsignals CKEXT als auch des Befehlspakets CA entweder schwer
vorherzusagen oder schwer zu steuern ist. Selbst wenn die Ausbreitungsverzögerung sowohl
des externen Taktsignals CKEXT als auch des Befehlspakets CA präzise steuerbar
wäre, wäre es schwierig,
die Ausbreitungsverzögerung
dieser Signale innerhalb des Speicherelements unter Verwendung der
Befehlspuffer- und Taktgeneratorschaltung 200 präzise zu
steuern oder vorherzusagen.
-
Die
Befehlspuffer- und Taktgeneratorschaltung 200 nach 3 kann
die zeitliche Lage der Impulse SCHIEBEN mit Hilfe einer Taktsteuerschaltung 210,
die das interne Taktsignal ICLK aus dem externen Taktsignal CKEXT
generiert, exakt steuern. Insbesondere steuert die Taktsteuerschaltung 210 adaptiv
das externe Taktsignal CKEXT und erzeugt das interne Taktsignal
ICLK derart, dass die Impulse SCHIEBEN zur richtigen Zeit an das
Schieberegister 202 gelangen. Wie im Folgenden näher erläutert werden
wird, wird während
der Initialisierung eines Speicherbauelements mit Hilfe der Befehlspuffer-
und Taktgeneratorschaltung 200 ein Initialisierungspaket
mit einem bekannten Datenmuster zusammen mit dem externen Taktsignal
CKEXT und dem Signal FLAG an das Schieberegister 202 gelegt.
Nachdem die vier Paketwörter
jedes Initialisierungspaket in das Schieberegister 202 geschoben
und im Speicherregister 208 gespeichert sind, werden die
Bits jedes Paketworts an die Taktsteuerschaltung 210 gelegt.
Die Taktsteuerschaltung 210 ermittelt dann, ob das Schieberegister
erfolgreich war beim Einfangen des Initialisierungspakets. Nachdem
bestimmt wurde, ob jedes Initialisierungspaket erfolgreich vom Schieberegister 202 eingefangen
wurde oder nicht, ändert
die Taktsteuerschaltung die Verzögerung
zwischen dem Empfang des externen Taktsignals CKEXT und der Erzeugung
des internen Taktsignals ICLK. Dann stellt die Taktsteuerschaltung 210 erneut
fest, ob die Paketwörter
des Initialisierungspakets erfolgreich abgefangen wurden. Nach mehrmaliger
Wiederholung dieser Prozedur stellt die Taktsteuerschaltung fest,
welche Verzögerungswerte
zwischen CKEXT und ICLK beim Abfangen des Initialisierungspakets
erfolgreich sind. Dann verwendet die Taktsteuerschaltung einen dieser
Verzögerungswerte
als Verzögerung
zwischen CKEXT und ICLK beim Normalbetrieb des Speicherbauelements
unter Verwendung der Befehlspuffer-Kontaktgeneratorschaltung 200.
Auf diese Weise adaptiert die Taktsteuerschaltung 210 mögliche externe
oder interne Verzögerungen,
die in der Kopplung des Befehlspaketes CA und des externen Takts
CKEXT existieren, um so zu ermöglichen,
dass die Befehlspuffer-Taktgeneratorschaltung 200 bei optimaler
Geschwindigkeit arbeitet. Ein ähnliches
System kann man dazu verwenden, sicherzustellen, dass die in das
Speicherbauelement 16a ansprechend auf den Datentakt DCLK
eingetakteten Daten korrekt sind (2).
-
Es
versteht sich, dass notwendige Bestandteile der Befehlspuffer- und
Taktgeneratorschaltung 200 im Interesse der Knappheit aus 3 weggelassen
sind, da sie bezüglich
der beanspruchten Erfindung von peripherer Bedeutung sind. Beispielsweise
enthält
die Befehlspuffer- und Taktgeneratorschaltung 200 Schaltungselemente,
die es dem Befehlspuffer ermöglichen,
festzustellen, ob ein Befehlspaket an ihn gerichtet ist, ferner
Schaltungselemente zur Pipelineverarbeitung von Befehlswörtern, die
von dem Speicherregister 208 ausgegeben werden, Schaltungselemente
zum Erzeugen von Befehlssignalen geringeren Pegels aus dem Befehlswort
etc.
-
Die
relevanten Teile der Befehlspuffer- und Taktgeneratorschaltung 200 sind
in größerer Einzelheit
in dem in 4 dargestellten Blockdiagramm
gezeigt. Wie in 4 zu sehen ist, enthält die Zeitsteuerschaltung 206 eine
Taktschaltung 230, die ein Taktsignal CLK und dessen Quadraturelement
CLK 90 von einer herkömmlichen
Quadraturschaltung 222 ansprechend auf das interne Taktsignal
ICLK empfängt.
Dieses interne Taktsignal ICLK wird von der Taktsteuerschaltung 210 aus
dem externen Taktsignal CKEXT generiert, wie oben in Verbindung
mit 3 erläutert
wurde. Aufbau und Arbeitsweise der Taktsteuerschaltung 210 werden
anhand der 5 und 6 im einzelnen
erläutert.
Die Signale CLK und CLK 90 werden an ein NOR-Gatter 232 gelegt,
das immer dann einen hohen Pegel ausgibt, wenn ICLK und ICLK 90 beide
niedrigen Wert haben. Das Ausgangssignal des NOR-Gatters 232 wird über einen
ersten Negator 234 zum Erzeugen eines Signals CLK1 und
dann über
einen zweiten Negator 236 zum Erzeugen eines Signals CLK1*
geleitet (das Symbol "*" hinter der Signalbezeichnung
dient hier durchwegs zur Bezeichnung des Signal-Komplements).
-
Die
Signale CLK90 und CLK werden auch an ein NAND-Gatter 240 gelegt,
welches immer dann einen niedrigen Pegel abgibt, wenn beide Signale
CLK und CLK90 hohen Wert haben. Das Ausgangssignal vom NAND-Gatter
wird über
einen Negator 242 zum Erzeugen eines Signals CLK0 und dann über einen
zweiten Negator 244 zum Erzeugen eines Signals CLK0* geleitet.
Diese Signale CLK0, CLK0*, CLK1 und CLK1* entsprechen den in Verbindung
mit 3 beschriebenen Impulsen SCHIEBEN.
-
Die
Taktgeneratorschaltung 230 enthält ferner ein Paar Schieberegisterschaltungen 246, 248,
die miteinander in Reihe geschaltet sind, um ein achtstufiges Schieberegister
zu bilden. Die Schieberegisterschaltung 246 empfängt das
Signal FLAG, welches dann sequenziell durch die vier Stufen des
Schieberegisters 246 und durch die vier Stufen der Schieberegisterschaltung 248 geschoben
wird, ansprechend auf die Signale CLK0, CLK0*, CLK1, CLK1 *. Das
Signal FLAG wird bei jedem Zyklus der CLK-Signale durch die beiden
Stufen der Schieberegisterschaltungen 246, 248 geschoben.
Wenn das Signal FLAG hohen Pegel annimmt, gehen zwei aufeinander
folgende Ausgänge
F<0:7> der Schieberegisterschaltung 246, 248 sequenziell
bei jedem Taktzyklus auf hohen Pegel.
-
Das
in 4 dargestellte Schieberegister 202 enthält zehn
getrennte Schieberegisterschaltungen 250a–j, von denen jede ein
zugehöriges
Bit CA0–CA9
des ankommenden Zehn-Paketworts empfängt, welches über die
einzelnen Puffer 251a–j geleitet
wird. Jede der Schieberegisterschaltungen 250a–j enthält vier Schieberegisterstufen.
Nach vier Taktzyklen sind vier Paketwortbits CA in jede Schieberegisterschaltung 250 geschoben,
und sämtliche
vier Bits stehen als ein 4-Bit-Wort P<0:3> zur
Verfügung.
Dann speichern die zehn Schieberegisterschaltungen 251a–j kollektiv
ein 40-Bit-Befehlswort C<0:39> und geben dieses aus.
-
Das
Speicherregister 208 empfängt außerdem die Signale CLK und
CLK90. Allerdings werden die Bits B<0:3> für die vier
Paketwörter,
die in dem Schieberegister 202 gespeichert sind, nicht
eher in das Speicherregister 208 eingetaktet, als bis das
Signal F<3> erzeugt wird. Die
Taktschaltung 230 erzeugt das Signal F<3> vier Übergänge des
Signals CLK später,
als das Signal FLAG empfangen wird, d. h., nach dem Schieben von vier
Befehlspaketen in das Schieberegister 202. Dann speichert
das Speicherregister das 40 Bits umfassende Befehlswort Y<39> und gibt es kontinuierlich
aus. Das Befehlswort Y<0:39> dient dann zum Steuern
des Betriebs eines Speicherbauelements, welches die Befehlspuffer-
und Taktgeneratorschaltung 200 enthält. Wie oben ausgeführt, dient
das Befehlswort Y<39> auch der Taktsteuerschaltung 210 zum
Auswählen
der optimalen Verzögerung
zwischen dem Empfang des externen Taktsignals CKEXT und dem Erzeugen
des internen Taktsignals ICLK.
-
Eine
Ausführungsform
der Taktsteuerschaltung 210 gemäß der Erfindung ist in 5 gezeigt.
Wie oben erläutert
wurde, ist es äußerst schwierig,
das Schieberegister 202 (3 und 4)
zur richtigen Zeit bei maximaler Geschwindigkeit des Befehlsdekodierers 200 zu
takten. Die Funktion der Taktsteuerschaltung 210 besteht
darin, ein internes Taktsignal ICLK am Eingang der Quadraturschaltung 222 zur
richtigen Zeit derart bereitzustellen, dass die Zeitsteuerschaltung 206 das
Schieberegister 202 sogar bei der schnellsten Betriebsgeschwindigkeit
des Befehlsdekodierers 200 takten kann. Es versteht sich
allerdings, dass die Taktsteuerschaltung 210 auch für andere
Zwecke sowohl in dynamischen Schreib-/Lesespeichern als auch in
anderen Schaltungen eingesetzt werden kann. Beispielsweise kann
sie dazu verwendet werden, das Datentaktsignal DCLK zum exakten
Takten von Daten in das Speicherbauelement 16a zu erzeugen,
wie oben erläutert
wurde.
-
Gemäß 5 wird
der externe Takt CKEXT von der Leitung 42 über einen
Empfangspuffer 250 auf eine herkömmliche, spannungsgesteuerte
Verzögerungsschaltung 252 und
auf einen Eingang eines Phasendetektors 254 gegeben. Die
spannungsgesteuerte Verzögerungsschaltung 252 koppelt
den Ausgang des Empfangspuffers 250 mit einer Ausgangsleitung 256 mit
einer Verzögerung,
die eine Funktion eines über
eine Leitung 258 an die Verzögerungsschaltung 252 gelegten
Steuersignals ist. Obschon das Steuersignal auf der Leitung 258 eine
Analogspannung ist, versteht sich, dass auch andere Arten von Steuersignalen
alternativ möglich
sind, darunter auch digitale Werte. Das Ausgangssignal der spannungsgesteuerten
Verzögerungsschaltung 252 wird
an eine spannungsgesteuerte Verzögerungsleitung 260 mit
mehreren Anzapfungen belegt.
-
Die
mehrere Anzapfungen aufweisende, spannungsgesteuerte Verzögerungsleitung 260 koppelt
das an seinen Eingang über
die Leitung 256 gelegte Taktsignal auf mehrere Ausgangsleitungen 264a–264n.
Das ankommende Taktsignal wird auf die Ausgangsleitung 264 mit
einer zunehmenden Verzögerung
von der ersten Leitung 264a aus bis hin zur letzten Leitung 264n gekoppelt.
Bei der in 3 dargestellten Ausführungsform
gibt es siebzehn Ausgangsleitungen 264, allerdings kann
die Verzögerungsleitung 260 auch
eine größere oder
geringere Anzahl von Ausgangsleitungen 264 aufweisen. Wenn
eine Verzögerungsregelschleife,
welche die Verzögerungsleitung 260 beinhaltet,
in der unten erläuterten
Weise einrastet, sind die Signale an der ersten Ausgangsleitung 264a und
der letzten oder siebzehnten Ausgangsleitung 264n einander
entgegengesetzt, d. h., sie weisen eine Phasenverschiebung von 180° auf. Die
Signale an den siebzehn Leitungen sind daher um 11,25° stärker verzögert als
das an die vorausgehende Leitung 264 gekoppelte Signal.
Damit besitzt die erste Leitung 264a eine relative Phase
von 0°,
die sechzehnte Leitung 264n – 1 besitzt eine Phase
von 168,75°,
und die letzte Leitung 264n besitzt eine Phase von 180°. Insbesondere
wird eine an die Verzögerungsleitung 260 über die
Leitung 270 angelegte Steuerspannung so eingestellt, dass
die Phase des Signals auf der letzten Leitung 264n gegenüber der
Phase auf der ersten Leitung 284a um 180° verschoben
ist. Erreicht wird dies dadurch, dass die erste Leitung 264a und
die letzte Leitung 264n an Eingänge eines Phasendetektors 272 gelegt werden.
-
Wie
oben ausgeführt,
implementieren die Verzögerungsleitung 260 und
der Phasendetektor 272 eine erste Verzögerungsregelschleife. Wenn
die erste Verzögerungsregelschleife
einrastet, besitzt das Signal auf der Leitung 264n gegenüber der
Phase des Signals auf der Leitung 284a einen Phasenunterschied
von 180°. Daher
nimmt, wie oben ausgeführt
wurde, das Signal auf jeder der Ausgangsleitungen 264a–264n sequentiell ausgehend
von 0° auf
180° zu.
Obschon die Signale auf den Leitungen 264a–264n gleichen
Phasenabstand voneinander besitzen können, versteht sich, dass gleiche
Phasen nicht erforderlich sind.
-
Die
Taktsteuerschaltung 210 enthält ferner eine zweite Verzögerungsregelschleife,
die gebildet wird durch den Phasendetektor 254, die spannungsgesteuerte
Verzögerungsschaltung 252 und
die spannungsgesteuerte Verzögerungsleitung 260.
Insbesondere wird die letzte Ausgangsleitung 264n der Verzögerungsleitung 260 über eine
simulierte Multiplexerschaltung 290 und einen Takttreiber 292 an
einen Eingang des Phasendetektors 254 gelegt. Es sei daran
erinnert, dass der andere Eingang des Phasendetektors 254 das
Ausgangssignal von dem Empfangspuffer 250 empfängt. Ähnlich wie
der Phasendetektor 272 werden, wenn die zweite Verzögerungsregelschleife
verrastet ist, die an den Phasendetektor 254 gelegten Signale
einander entgegengesetzt. Wenn daher die zweite Schleife verrastet
ist, hat die Phase des Signals am Ausgang des Takttreibers 292 eine
Verschiebung von 540° (effektiv
180°) gegenüber der
Phase des Signals am Ausgang des Empfangspuffers 250.
-
Die übrigen Ausgangsleitungen 264a–264n – 1 der
Verzögerungsleitung 260 werden
an einen Multiplexer 310 gegeben, dessen Ausgangsleitung
mit einem Takttreiber 312 gekoppelt ist. Der Multiplexer 310 koppelt
den Eingang des Takttreibers 312 mit irgendeiner der Ausgangsleitungen 264a–264n – 1,
was durch das jeweilige vier Bits umfassende Phasenbefehlswort CMDPH<0:3> festgelegt wird. Dieses
vier Bits umfassende Phasenbefehlswort CMDPH<0:3> wird
von einer Phasensteuerschaltung 314 auf der Grundlage des
Befehlswort Y <0:39> während einer Initialisierungsprozedur
gebildet. Aufbauende Arbeitsweisen der Phasensteuerschaltung 314 werden
anhand der übrigen
Figuren im Einzelnen beschrieben. Der Takttreiber 312 dient
zum Erzeugen des internen Taktsignals ICLK, welches zum Ableiten
der Taktsignale dient, die an die Takteingänge des Schieberegisters 202 (3 und 4)
gelegt werden.
-
Die
Phasendetektoren 254, 272 werden jeweils mit Hilfe
einer Phasendetektorschaltung 330, einer Ladungspumpe 332 und
eines Kondensators 334 implementiert. Allerdings sind andere
Varianten von Phasendetektoren alternativ möglich.
-
Die
Phasendetektorschaltung 330 legt entweder ein Erhöhungssignal
auf der Leitung 336 oder ein Verminderungssignal auf der
Leitung 338 an die einzelnen Eingänge der Ladungspumpe 332.
Die Phasendetektorschaltung 330 erzeugt das Erhöhungssignal
auf der Leitung 336 immer dann, wenn die Phase eines ersten
Signals an einem ihrer Eingänge
gegenüber
einem zweiten Signal am anderen ihrer Eingänge weniger als 180° beträgt. Wie
unten erläutert
wird, verursacht das Erhöhungssignal
auf der Leitung 336, dass die Ladungspumpe 332 die
Steuerspannung so einrichtet, dass die Verzögerung des ersten Signals derart
erhöht
wird, dass die Phase des ersten Signals relativ zur Phase des zweiten
Signals sich einem Wert von 180° annähert. Die
Phasendetektorschaltung 330 erzeugt das Verminderungssignal
auf der Leitung 338 im entgegengesetzten Sinn, d. h., wenn
die Phase des zweiten Signals gegenüber der des ersten Signals
mehr als 180° beträgt. Das
Verminderungssignal auf der Leitung 338 bewirkt, dass die
Leitungspumpe 332 die Steuerspannung so einstellt, dass
die Verzögerung
des zweiten Signals in Richtung 180° vermindert wird.
-
Wenngleich
die Phasendetektorschaltung 330 auf verschiedene Weise
implementiert werden kann, kann sie schlicht zwei (nicht gezeigte)
RS-Flip-Flops verwenden, um das Erhöhungs- beziehungsweise das Verminderungssignal
zu erzeugen. Das Erhöhungs-Flip-Flop
wird gesetzt durch die Anstiegsflanke des ersten Signals an einem
der Eingänge,
und wird zurückgesetzt
durch die Hinterflanke des zweiten Signals an dem anderen Eingang.
Damit wird die Dauer des Flip-Flops eingestellt und folglich die
Dauer des Erhöhungssignals auf
der Leitung 336 entsprechend der Zeitspanne, um die das
zweite Signal zusätzlich
verzögert
werden muss, damit es gegenüber
der Phase des ersten Signals einen Abstand von 180° hat. In ähnlicher
Weise wird das das Änderungssignal
auf der Leitung 338 erzeugende Flip-Flop gesetzt durch
die Hinterflanke des zweiten Signals, und wird zurückgesetzt
durch die Anstiegsflanke des ersten Signals, demzufolge die Dauer
des Verminderungssignals aus der Leitung 338 derjenigen
Zeit entspricht, um die das zweite Signal über die Zeit hinaus verzögert werden
muss, zu der es in Bezug auf die Phase des ersten Signals einen
Phasenwinkel von 180° hätte.
-
Außerdem gibt
es eine Vielfalt von Möglichkeiten
zum Implementieren der Ladungspumpe 332. Allerdings lässt die
Ladungspumpe 332 sich in einfacher Weise dadurch implementieren,
dass man in den Kondensator 334 für die Dauer jedes Erhöhungssignals
auf der Leitung 336 einen konstanten Strom einspeist und
von dem Kondensator 334 für die Dauer jedes Verminderungssignals
auf der Leitung 338 einen konstanten Strom abzieht. Eine
passende Schaltung kann entweder in der Phasendetektorschaltung 330 oder
der Ladungspumpe 332 vorhanden sein, um eine Hysterese
in einem Band zu bilden, wenn das erste und das zweite Signal eine
relative Phasenversetzung von etwa 180° haben, die für den Fachmann
ersichtlich ist.
-
Die
Arbeitsweise der Taktsteuerschaltung 210 nach Figur innerhalb
des in 4 gezeigten Befehlsdekodierers lässt sich
am besten anhand des in 6 gezeigten Impulsdiagramms
erläutern.
Wie in 6 gezeigt ist, wird das externe Taktsignal CKEXT
auf der Leitung 42 beim Durchlauf durch den Empfangspuffer 250 zum
Knoten A (5) um etwa 70° verzögert. Unter
der Annahme, dass beide Verzögerungsregelschleifen verrastet
sind, wird das Signal am Ausgang des Empfangspuffers 250 beim
Durchlauf durch die spannungsgesteuerte Verzögerungsschaltung 252 zum
Knoten B um 120° verzögert. Dann
wird das Signal am Knoten B mit einer Verzögerung von weiteren 120° auf den
Knoten C gegeben, und mit einer Verzögerung von 300° auf den
Knoten D gegeben, so dass die Signale auf den Knoten C und D einen
Phasenabstand von 180° haben. Da
die Signale an den Knoten C und D miteinander durch den Phasendetektor 272 verglichen
werden, stellt der Phasendetektor 272 die Steuerspannung
auf der Leitung 270 so ein, dass sichergestellt ist, dass
die Signale alle auf den Knoten C und D in ihrer Phase um 180° verschoben
sind. Die übrigen
Ausgangssignale der Verzögerungsleitung 260 haben
Phasen gegenüber
derjenigen des Signals auf dem Knoten C, die um 11,25° an jedem
Ausgang in der Folge von der ersten Leitung 264a bis zu
der letzten Leitung 264n zunehmen.
-
Wie
oben ausgeführt,
wird eine von den ersten sechzehn Ausgangsleitungen 264a bis 264n – 1 der Verzögerungsleitung 260 über den
Multiplexer 310 gekoppelt, und der Takttreiber 312 und
liefert am Knoten E das interne Taktsignal ICLK. Beim Durchgang
durch den Multiplexer 310 und den Takttreiber 312a wird
das ausgewählte
Ausgangssignal der Verzögerungsleitung
um weitere 120° verzögert. Damit
ist das Signal Eo, welches von der ersten Ausgangsleitung der Verzögerungsleitung 260 gekoppelt
wird, um 120° verzögert, das Signal
E4 von dem fünften
Ausgang wird um 165° verzögert, das
Signal E8 vom neunten Ausgang wird um 210° verzögert, das Signal E12 vom dreizehnten
Ausgang wird um 255° verzögert, und
das Signal E15 vom sechzehnten Ausgang wird um 288,75° verzögert. Obschon
die Ausgangssignale von der Verzögerungsleitung 260 über den
Multiplexer 310 und den Takttreiber 312a mit einer
Verzögerung
geleitet werden, ist diese Verzögerung
angepasst durch die Kopplung des Signals von der Leitung 264n über den
simulierten Multiplexer 290 und den Takttreiber 292,
der die gleiche Schaltung für
den simulierten Multiplexer 290 wie für den Multiplexer 310 verwendet
wird und der Takttreiber 292 identisch ist mit dem Takttreiber 312a.
Aus diesem Grund und weil die Phase des Signals auf der Leitung 264n eine
Verschiebung von 180° gegenüber der
Phase des Signals auf der Leitung 264a hat, besitzt das
Signal am Ausgang des Takttreibers 292 am Knoten G gegenüber der
Phase des Signals Eo am Ausgang des Takttreibers 312a eine
Verschiebung von 180°.
Da die auf die Eingänge
des Phasendetektors 254 gegebenen Signale einander entgegengesetzt
sind, wenn die Verzögerungsregelschleife
verrastet ist, besitzt das Signal Eo im Wesentlichen die gleiche
Phase wie das Signal am Ausgang des Empfangspuffers 250.
Außerdem
wird die Verzögerung
der spannungsgesteuerten Verzögerungsschaltung 252 derart
eingestellt, dass das Signal Eo immer die gleiche Phase hat wie
der Befehlstakt, der an den Ausgang des Empfangspuffers 250 bei
A gekoppelt wird. Angenommen, jedes Paketwort innerhalb des Befehlspakets
sei gültig
bei der Anstiegsflanke des externen Taktsignals CKEXT, so ist das
auf das Schieberegister 202 (4) gekoppelte
Paketwort gültig
bei der Anstiegsflanke von ICLK, weil ICLK die richtige Phasenbeziehung
zu dem Signal am Knoten A hat und die Verzögerung im Empfangspuffer 250
im Wesentlichen die gleiche ist wie die Verzögerungen durch die Puffer 251a–j.
Im Betrieb wählt
der Multiplexer 310 einen der Ausgänge von der Verzögerungsleitung 260 ab,
wie dies bestimmt wird durch das Phasenbefehlswort CMDPH <0:3>, so dass das optimale
Taktsignal zwischen EO und E15 (6) als interner
Takt ICLK verwendet wird.
-
Zusammengefasst:
Die "innere" Verzögerungsregelschleife,
die durch den Phasendetektor 272 und die spannungsgesteuerte
Verzögerungsschaltung 260 gebildet
wird, erzeugt eine Folge von Signalen mit von 0° bis 180° zunehmenden Phasen. Die "äußere" Verzögerungsregelschleife, die gebildet
wird durch den Phasendetektor 254, die spannungsgesteuerte
Verzögerungsschaltung 252 und
die Verzögerungsleitung 260, richten
eines der Taktsignale innerhalb der Folge mit dem Befehlstakt aus.
Im Ergebnis besitzen sämtliche Taktsignale
am Ausgang der Verzögerungsleitung 240 einzelne
vorbestimmte Phasen gegenüber
der Phase des Befehlstakts am Knoten A.
-
Obschon
die Ausführungsform
des Taktgenerators 210 nach 5 von Verzögerungsregelschleifen Gebrauch
macht, versteht sich, dass auch andere verrastete Regelschleifen
ebenso wie Schaltungen ohne Regelschleife innerhalb der Taktsteuerschaltung 210 verwendet
werden können.
-
Grundsätzlich bestimmt
die Phasensteuerschaltung 214 den optimalen Phasenbefehl
CMDPH <0:3> nach Abschluss von
zwei Betriebsarten, nämlich
einen Lademodus und einen Analysemodus. Im Lademodus implementiert
die Phasensteuerschaltung 314 sequentiell den Phasenbefehl
CMDPH <0:3>, um sequentiell jede
Anzapfung der Verzögerungsleitung 310 (5)
auf den ICLK-Treiber 312 zu koppeln, während der Befehlsdekodierer 200 wiederholt
Initialisierungspakete empfängt.
Auf diese Weise versucht der Befehlsdekodierer 200, jedes
Initialisierungspaket innerhalb des Schieberegisters 202 exakt
einzufangen (4), ansprechend auf einzelne
interne Taktsignale ICLK, die sequentiell in ihrer zeitlichen Lage
gegenüber
den Initialisierungspaketen variieren. Während des Lademodus bestimmt
die Phasensteuerschaltung 314, welche Initialisierungspakete
erfolgreich im Schieberegister 202 aufgefangen wurden.
Dann erfolgt eine Aufzeichnung, welche angibt, welche Phasenbefehle
CMDPH <0:3> (d. h. welche Anzapfung
der Verzögerungsleitung 260)
den Takt ICLK dazu gebracht haben, das Schieberegister 202 zur
richtigen Zeit zu takten, um diese Initialisierungspakete erfolgreich
einzufangen.
-
Im
Analysemodus werden die Phasenbefehle in der Befehlsaufzeichung
ausgewertet. Insbesondere wird ein einzelner Phasenbefehl CMDPH <0:3>, der mit höchster Wahrscheinlichkeit
in der Lage ist, erfolgreich Paketwörter in einem Befehlspaket
einzufangen, aus den Phasenbefehlen ausgewählt, die erfolgreich ein Initialisierungspaket
eingefangen haben. Dieser ausgewählte
Phasenbefehl CMDPH <0:3> ist der Befehl, der dazu
dient, das ICLK-Signal im Normalbetrieb zu generieren. In den 7a und 7b ist
eine Blockdiagramm der Phasensteuerschaltung 314 zum Generieren
des Phasenbefehls CMDPH <0:3> dargestellt.
-
Gemäß 7A empfängt eine
Auswerteschaltung 59 ein Initialisierungswort Y<0:39>, ein Signal F<4> und einen Initialisierungsbefehl
CMDINIT. Das Signal F<4> wird erzeugt durch
das Schieberegister (4) in der Taktschaltung 220 eine
halbe Taktperiode nach vier Initialisierungspaketwörtern, d.
h. dem gesamten Initialisierungspaket, gespeichert im Schieberegister 202 und
transferiert in das Speicherregister 208. Das Initialisierungswort
Y<0:39> wird am Ausgang des
Speicherregisters 208 erzeugt und entspricht den vier Paketwörtern innerhalb
jedes Initialisierungspakets. Der Initialisierungsbefehl CMDINIT
wird von einer anderen (nicht gezeigten) Schaltung in dem Befehlsdekodierer 200 während der
Initialisierungsprozedur erzeugt.
-
Im
Betrieb analysiert, wenn der Initialisierungsbefehl CMDINIT aktiv
hoch ist, die Auswerteschaltung 350, das Initialisierungswort
Y<0:39>, um festzustellen,
ob das Initialisierungspaket exakt von dem Schieberegister 202 (4)
eingefangen wurde. Wenn das eingefangene Initialisierungswort Y<0:39> mit dem Initialisierungspaket übereinstimmt,
gibt die Auswerteschaltung 350 ein aktiv hohes Initialisierungs-Ergebnissignals INITRES
aus. Die Auswerteschaltung gibt außerdem ein Zwischenspeicherergebnissignal
LATRES ansprechend auf jeden Impuls F<4> aus,
solange das Signal CMDINIT hohen Wert hat, ungeachtet des Zustands
des Initialisierungsergebnissignals INITRES. Wie oben ausgeführt, wertet
im Lademodus der Initialisierungsprozedur die Auswerteschaltung 350 sechzehn
Initialisierungspakete aus, die an den Befehlsdekodierer 200 gelegt werden,
und zwar in ihrer zeitlichen Relation zu dem internen Taktsignal
ICLK. Damit gibt im Lademodus die Auswerteschaltung sechzehn Impulse
LATRES und zwischen 0 und 16 Signale INITRES aus, abhängig von der
Anzahl vom Schieberegister 202 erfolgreich eingefangener
Initialisierungspakete.
-
Wenn
mehrere Speicherbauelemente, die von der Phasensteuerschaltung 314 Gebrauch
machen, in einem Computersystem enthalten sind, beispielsweise in
dem in 1 gezeigten Computersystem, so kann die Auswerteschaltung 350 (nicht
gezeigte) Mittel aufweisen zum Verhindern, dass mehr als eine Phasensteuerschaltung 314 auf
die gleichen Initialisierungspakete anspricht, beispielsweise könnte ein
Speicherbauelement als das erste Speicherbauelement für die Initialisierung
ausgewählt
werden. Nach der Initialisierung würden das erste Speicherbauelement
und alle nachfolgenden Speicherbauelemente das nächste Speicherbauelement für die Initialisierung
freigeben. Alternativ könnten
die Taktsteuerschaltungen 210 sämtlicher Speicherbauelemente
in dem Computersystem gleichzeitig auf die gleichen 16 Initialisierungspakete
hin initialisiert werden.
-
Weiterhin
auf 7A Bezug nehmend, wird das Initialisierungsergebnis
(INTERES) von jeder von sechzehn Auswertungen an eine Selektorschaltung 354 gegeben,
zusammen mit zwei komprimierten Ergebniswörtern COMPRESA<0:15> und COMPRESB<15>. Die Selektorschaltung 354 koppelt eines
dieser drei Signale ansprechend auf Signale von einer Selektorsteuerschaltung 364 auf
ein 16-Bit-Register 360. Die Selektorsteuerschaltung 354 wiederum
wird von einer Modusschaltung 366 gesteuert. Diese Modusschaltung
empfängt
ein aktiv niedriges Signal RESET*, um die Phasensteuerschaltung 314 in
den Lademodus zu versetzen, sie empfängt ein aktiv hohes Signal
LDINITERES<15> (Lade-Initialisierungsantwort)
und bringt die Phasensteuerschaltung 314 in den Analysiermodus.
-
Im
Lademodus steuert die Modusschaltung 366 die Selektorsteuerschaltung 364 derart,
dass diese die Selektorschaltung 354 veranlasst, das Signal
INITERES von der Auswerteschaltung 350 auf das 16-Bit-Register 316 zu
schalten. Außerdem
wird während
des Lademodus die Bitstelle, an der das Signal INITERES gespeichert
ist, von dem zugehörigen
Signal LDINTERES<0:15> gesteuert. Wenn also
beispielsweise das Signal INITERES (welches angibt, ob das Initialisierungspaket
erfolgreich eingefangen wurde) für
eine erste Phase von ICLK entsprechend der ersten Anzapfung der
Verzögerungsleitung 260 an
das Register 360 gelegt wird, bewirkt ein Signal LD INITERES<0>, dass das Signal INITERES
in der ersten Bitstelle des Registers 360 gespeichert wird.
In ähnlicher
Weise wird für
eine zweite Phase von ICLK gehaltene Signal INITERES entsprechend
der zweiten Anzapfung der Verzögerungsleitung 69 in
der zweiten Bitstelle des Registers 360 ansprechend auf
ein Signal LD INITERES<1> gespeichert, etc.
Schließlich
wird das der sechzehnten Phase von ICLK entsprechende Signal INITERES
für die
letzte Anzapfung der Verzögerungsleitung 260 in
der letzten Bitstelle des Registers 360 ansprechend auf
ein Signal LDINITERES<15> gespeichert. Zu diesem
Zeitpunkt speichert das Register 316 16 Informationsbits,
welche kennzeichnend sind für
die sechzehn Phasen des Signals ICLK entsprechend den 16 Anzapfpunkten
der Verzögerungsleitung 260,
was besagt, dass diese Phasen erfolgreich beim Einfangen von 16
Initialisierungspaketen an dem Befehlsdekodierer 200 im
Lastmodus waren. Die gespeicherte Information wird von dem Register 360 als
RES<0:5> ausgegeben. Wie oben
ausgeführt,
schaltet dann das Signal LDINITERES<15> die
Modusschaltung 366 in den Analysemodus, da sämtliche Information über das
Einfangen der Initialisierungspakete in das Register 360 geladen
ist.
-
Um
ein Beispiel zu geben: das Register 360 kann nach Beendigung
des Lademodus als RES<0:15> "0000110011111000" ausgeben. Die logischen Werte "1" von RES<3–7,
10 und 22> bedeuten
also, dass das Signal ICLK, die von der vierten bis achten, der
elften und der zwölften
Anzapfung der Verzögerungsleitung 260 abgenommen
wurde, erfolgreich beim Einfangen von Initialisierungspaketen war.
-
Schaltet
das Signal LDINITERES<15> die Modusschaltung 360 in
den Analysiermodus, so steuert die Modusschaltung 360 die
Selektorsteuerschaltung 364 derart, dass diese die Selektorschaltung 354 veranlasst, an
das 16-Bit-Register 360 abwechselnd COMPRESA<0:15> und COMPRESB<0:15> zu legen. Die 16 Ausgänge des
Registers 360 werden auf 16 NAND-Gitter 374a–p gegeben,
die ihrerseits mit zugehörigen
Negatoren 378a–p gekoppelt
sind, so dass die NAND-Gatter 374 und die Negatoren 378 UND-Funktionen
erfüllen. Die
Eingänge
jedes NAND-Gatters 374 empfangen ein zugehöriges Bit
des Registers 360 und ein benachbartes Bit des Registers 360,
ausgenommen das erste NAND-Gatter 364a, welches das Ausgangssignal
von dem Bit 16 des Registers 360 empfängt. Die
Ausgänge
der Negatoren sind bezeichnet als COMP<0:15>,
wobei COMP<N>=RES(N)*RES (N–1) (ausgenommen
für COMP<0>, welches RES<15>*RES<0> gleicht). Die Signale
COMP<N> werden zu einem zugehörigen Eingang
des Registers 360 zurückgeführt. Allerdings
werden die Ausgänge
der Negatoren 378 unterschiedlich für die Signale COMPRESA<0:15> und die Signale COMPRESB<0:15> zurückgeführt. Für COMPRESA<0:15> wird jedes Signal
COMPRESA<N>*COMP<N–1> gesetzt. Für COMPRESB<0:15> ist COMPRESB<N> gleich COMP<N>*COMP<N+1>. Im Analysemodus wird das
Register 360 von dem Signal LDCOMPRES derart gesteuert,
dass die 16 Bits, die zum Register 360 zurückgeleitet
sind, parallel in das Register 360 geladen werden.
-
Der
Betrieb der Selektorschaltung 354, des Registers 360,
der NAND-Gatter 374 und der Negatoren 378 im Analysemodus
versteht sich am besten anhand des obigen Beispiels "0000110011111000" für den Anfangswert
RES<0:15>. Nachdem diese Werte
für RES<0:15> über die NAND-Gatter 374 und
Negatoren 378 geleitet sind, hat COMP<0:15> den
Wert "0000010001111000". Durch Vergleichen
mit RES<0:15> mit COMP<0:15> erkennt man, dass
COMP<0:15> das gleiche ist wie
RES<0:15>, nur das jede "1" rechts von einer "0" in
eine "0" umgewandelt wurde.
Wenn also die Signale COMP<0:15> zum Register 360 als
COMPRESA<0:15> zurückgeführt werden,
so ist jede "1" rechts von einer "0" in eine "0" geändert. Im
Ergebnis werden die neuen Werte von RES<0:15> die
früheren
Werte von COMPRESA<0:15>, d. h., 0000010001111000. Nachdem
diese Werte für
RES<0:15> über die NAND-Gatter 374 und
die Negatoren 378 gelaufen sind, wird COMP<0:15> zu "0000000000111000". Weil allerdings
COMPRESB<N>= COMP<N>*COMP<N+1>, wird COMP<0:15> zu dem Register 360 in
der Form "0000000001110000" zurückgekoppelt.
Wenn also die Signale COMP<0:15> zu dem Register 360 als
COMPRESB<0:15> zurückgeleitet
werden, ist jede "1" links von einer "0" in eine "0" umgewandelt.
Nachdem RES<0:15> erneut als COMPRESA<0:15> zurückgekoppelt
ist, lautet der neue Wert von RES<0:15> "0000000000110000", d. h., die "1" rechts
von einer "0" ist in eine "0" umgewandelt. Wenn schließlich der
letzte Wert RES<0:15> wiederum als COMPRES<0:15> zu dem Register zurückgekoppelt
ist, lautet das neue RES<0:15> "0000000000100000", d. h., die "1" links
von einer "0" ist in eine "0" geändert.
Wenn dieser abschließende
Wert RES<0:15> über die NAND-Gatter 374 und
die Negatoren 378 geleitet wird, lautet der neue Wert COMP<0:15> "0000000000000000".
-
Gemäß 7B wird
ein nur aus Nullen bestehender Wert COMP<0:15> von
einer Nulldetektorschaltung 380 festgestellt, der dann
ein Phasenauswahlsignal PHSELECTED erzeugt, weiterhin ein Phasenauswahl-Fertigsignal
PHSELDONE und ein Fertigsignal DONE, von denen jedes signalisiert,
dass die optimale Phase des internen Taktsignals ICLK ermittelt
wurde. Zu diesem Zeitpunkt stellt ein Ergebnisauswahlcodierer 386 anhand
des endgültigen
Werts RES<0:15> von "1111111111100000" fest, dass das sechste
Bit des Registers, nämlich
RES<5> diejenige Stelle im
Register 360 ist, die eine "1" enthält. Der
Ergebnisauswahlcodierer 386 gibt dann einen entsprechenden
Binärwert
P<0:3> in der Form "0101" aus. Der Ergebnisauswahlcodierer 386 entscheidet
auch zwischen einem Ergebnis, in welchem zwei oder mehr Einsen im
endgültigen
Wert von RES<0:15> enthalten sind. Ein
Anfangswert RES<0:15> von "0111001110011100" wird einen endgültigen Wert RES0:15> von "0010000100001000" erzeugen und damit
angeben, dass drei Phasen von ICLK mit gleicher Wahrscheinlichkeit
ein Befehlspaket einfangen. Der Ergebnisauswahlcodierer wählt die "1" niedrigster Wertigkeit als Endergebnis
aus, so dass ein endgültiger
Wert RES<0:15> der Form "0010000100001000" interpretiert würde als "0000000000001000".
-
Wie
oben ausgeführt,
gibt, wenn der endgültige
Wert RES<0:15> erhalten wurde, die
Nulldetektorschaltung 380 die Signale PHSELECTED, PHSELDONE
und DONE aus. Das Signal PHSELECTED veranlasst einen Multiplexer,
das Wort P<0:3> von dem Ergebnisauswahlcodierer 386 auf
ein Wort PHASEOUT<0:3> zu koppeln, welches
ansprechend auf das Signal PHSELDONE in einem Zwischenspeicher 394 gespeichert
wird. Der Zwischenspeicher 394 gibt das Wort P<0:3> entsprechend dem Endwert
RES<0:15> als Phasenbefehl CMDPH<0:3> aus. Wie oben ausgeführt wurde,
wird der Phasenbefehl CMDPH<0:3> von dem Multiplexer 310 (5)
dazu benutzt, eine der Anzapfungen der Verzögerungsleitung 360 zum
Erzeugen des internen Taktsignals ICLK auszuwählen. Bei dem oben gewählten Beispiel
mit P<0:3> in der Form "0101" würde der
Multiplexer 310 die sechste Anzapfung der Verzögerungsleitung
360 zum Erzeugen von ICLK auswählen.
-
Der
Multiplexer 390 und der Zwischenspeicher 394 werden
außerdem
im Lademodus dazu verwendet, den Multiplexer 310 zu veranlassen,
sequenziell jede der Anzapfungen der Verzögerungsleitung 360 auszuwählen. Da
das Signal PHSELECTED vor dem Ende des Analysiermodus inaktiv niedrigen
Pegel hat, koppelt der Multiplexer 390 das Wort E<0:3> von einem vier-Bit-Zähler 400 auf
den Eingang des Zwischenspeichers 394. Das inaktiv niedrige
Signal PHSELDONE, welches vor dem Ende des Analysiermodus erzeugt
wird, veranlasst den Zwischenspeicher 394, das Signal PHASEOUT<0:3> (entsprechend E<0:3> über den Zwischenspeicher 394 als
CMDPH<0:3> zu koppeln. Dieses
Wort CMDPH<0:3> legt fest, welche
Anzapfung der Verzögerungsleitung
360 zum Erzeugen von ICLK auszuwählen
ist.
-
Das
aktiv niedrige Signal RESET*, das, wie oben ausgeführt, im
Lademodus erscheint, gibt den 4-Bit-Zähler 404 frei. Der
Zähler 400 wird
von dem Impuls LATRES inkrementiert, der, wie oben ausgeführt wurde,
von der Auswerteschaltung 350 (7A) bei
jedem Empfang eines Initialisierungspakets erzeugt wird. Damit wird
bei jedem Empfang eines Initialisierungspakets im Lademodus der
Zähler 400 um
1 erhöht.
Der Zählerstand
des Zählers 400 wird über den
Multiplexer 390 an den Zwischenspeicher 394 gegeben.
Die Signale CMDPH<0:3> am Ausgang des Zwischenspeichers 394 wählen dann
sequenziell jede Anzapfung der Verzögerungsleitung 360,
wenn der Zähler 400 erhöht wird.
Der Zählerstand
des Zählers 400,
d. h., E<0:3> wird außerdem an
einen Vordekodierer 410 und einen Dekodieren 412 gelegt,
um entsprechende Lade-Anfangsergebnissignale LDINITRES<0:15> zu erzeugen. Wie oben
erläutert,
werden diese Signale LDINITRES<0:15> von dem Register 360 dazu
benutzt, dasjenige Bit im Register 360 zu ermitteln, in
welchem ein von der Auswerteschaltung 350 kommendes Signal
INITRES gespeichert ist. Damit lautet das Zählerausgangssignal E<0:3> am Anfang "0000", damit das Signal
LDINITRES<0> eine "1" ist und die Signale LDINITRES<1:15> den Wert "0" haben, wodurch bewirkt wird, dass das
Auswerteergebnis INITRES aufgrund des Empfangs des ersten Initialisierungspakets
als Null-Bit im Register 360 gespeichert wird. Gleichzeitig
wird der Zählerausgang
E<0:3> mit dem Wert "0000" über den Multiplexer 390 und
den Zwischenspeicher 394 geleitet, demzufolge der Phasenbefehl
CMDPH<0:3> den Wert "0000" hat. Der Wert "0000" von CMDPH<0:3> bewirkt, dass der
Multiplexer 310 die erste Anzapfung der Verzögerungsleitung 260 zum
Generieren von ICLK auswählt.
Nachdem der Zähler 400 auf
15 erhöht
ist, d. h., auf den Wert "1111", wird auch CMDPH<0:3> zu "1111" und veranlasst damit
den Multiplexer 310, die letzte Anzapfung der Verzögerungsleitung 260 zum
Generieren von ICLK auszuwählen.
Gleichzeitig bewirkt der Inhalt "1111" von E<0:3>, dass der Dekodieren 412 ein
aktiv hohes Signal LDINITRES<15> ausgibt, damit der
Wert INITRES von der Auswerteschaltung im Bit 15 des Registers 360 gespeichert
wird. Wie oben ausgeführt,
bewirkt der aktive hohe Zustand von LDINITRES<15> außerdem,
dass die Modusschaltung 366 (7)
in den Analysiermodus übergeht,
da die im Lademodus erhaltenen Anfangsergebnisse nun in das Register
geladen wurden. Die in 7A und 7B gezeigten
Phasensteuerschaltung 314 passt sich folglich selbst an
zur Verwendung der ICLK-Phase, die mit größter Wahrscheinlichkeit erfolgreich
ist beim Einfangen eines Befehlspakets im Normalbetrieb.
-
Die
im Blockdiagramm der 7A und 7B verwendete
Schaltung ist in den 8 bis 16 in größerer Einzelheit
dargestellt. Gemäß 8 ist
die Auswerteschaltung 350 speziell ausgebildet zum Nachweisen
eines vorbestimmten Initialisierungspakets. Bei der Ausführungsform
nach 8 hat das Initialisierungspaket, für dessen
Erfassen die Auswerteschaltung 350 ausgelegt ist, die in
Tabelle 1 dargestellten Inhalte:
-
-
Wie
oben in Verbindung mit 7 beschrieben
wurde, wird der Zählerstand
des Zählers 400 über den Multiplexer 390 und
den Zwischenspeicher 394 geleitet, um sequenziell jeden
Anzapfpunkt der Verzögerungsleitung 260 auszuwählen, wenn
der Zähler 400 gewählt wird.
Der Zählerstand
des Zählers 400 wird
auch an den Vordekoder 410 und den Dekoder 412 gelegt,
um ein entsprechendes Lade-Anfangsergebnissignal LDINITRES<0:15> zu erzeugen, um dasjenige
Bit des Register 360 zu spezifizieren, in welchem jedes
Signal LDINITRES von der Auswerteschaltung 350 gespeichert
ist.
-
Der
Zähler 400 ist
in üblicher
Weise durch vier Register 500–506 ausgebildet,
von denen jedes einen Eingang RESET* besitzt, ferner einen zu seinem
Eingang über
einen zugehörigen
Negator 500 zurückgeführten Ausgang
sowie ein Paar Takteingänge
CLK und CLK*. Das erste Register 500 wird von einem Impulsgenerator 510 über ein
Paar Negatoren 512, 514 getaktet, die auf jedes
Zwischenspeicherergebnissignal LATRES ansprechen. Damit kippt das
erste Register 500 jeden Impuls LATRES. Es sei daran erinnert,
dass das Signal LATRES von der Auswerteschaltung 350 (8)
jedes Mal dann erzeugt, wenn ein Ini tialisierungspaket empfangen
wird. Die übrigen
Register 502–506 werden
vom Ausgang des vorhergehenden Registers 500–506 getaktet,
so dass ihre jeweiligen Ausgänge
jedesmal dann den Zustand wechseln (kippen), wenn das Ausgangssignal
eines vorhergehenden Registers einen Übergang von hohen auf niedrigen
Wert ausführt.
Damit wird der Wert der Ausgangssignale E<0:3> des
Zählers 400 einmal
bei jedem Impuls LATRES inkrementiert, d. h., jedes Mal, wenn ein
Initialisierungspaket empfangen wurde.
-
Der
Ausgang des Zählers 400 ist
auf den Vordekodierer 410 geführt, der auch in 12 dargestellt ist.
Der Vordekodierer 412 verwendet ein NOR-Gatter 522,
welches nur dann auf Null geht, wenn E<0> oder E<1> jeweils Null ist.
Damit ist der Wert ZERO nur dann auf hohem Pegel, wenn der Zählerstand
des Zählers 0,
4, 8, 12 beträgt.
Der Ausgang ONE wird von einem NOR-Gatter 522 erzeugt,
welches über
einen Negator 524 das Signal E<1> und
das invertierte Signal E<0> empfängt. Der
Ausgang des NOR-Gatters 522 ist nur dann hoch, wenn E<1> niedrig und E<0>hoch ist. Damit ist
das Signal ONE nur dann auf hohem Wert, wenn der Zählerstand
des Zählers
1, 5, 9 oder 13 beträgt.
Der Ausgang TWO eines NOR-Gatters 528 geht nur dann auf
hohen Pegel, wenn E<0> niedrig ist und das über einen
Negator 510 an das NOR-Gatter 528 gelegte Signal
E<1> hohen Wert hat. Damit
ist das Signal TWO nur dann hoch, wenn der Zählerstand des Zähler 2,
6, 10 oder 14 ist. Schließlich
ist das Signal THREE am Ausgang eines Negators 532 nur
dann hoch, wenn die Signale E<0> und E<1> an den Eingängen eines
NAND-Gatters 534 beide hoch sind. Damit ist das Signal THREE
nur dann hoch, wenn der Zählerstand
des Zählers
3, 7, 11 oder 15 beträgt.
-
Die
Signale FOUR, FIVE, SIX und SEVEN werden durch Dekodieren von E<2> und E<3> mit Hilfe der gleichen
Schaltung erzeugt, wie sie auch zum Dekodieren von E<0> und E< 1> verwendet wird, um
die Signale ZERO, ONE, TWO und THREE zu erhalten. Damit soll sich
im Interesse der Kürze
die Erläuterung
des Dekodierens von E<2> und E<3> erübrigen. Allerdings sind in
der folgenden Tabelle 2 die Ausgänge
des Vordekodierers 510 angegeben.
-
-
Die
Ausgangssignale von dem Vordekodierer 410 werden von dem
Dekodieren 412 (7) weiter
dekodiert, um jedes der Lade-Anfangsergebnissignale LDINITRES*<0:15> zu erzeugen. Wie oben
in 7B erläutert
wurde, lädt
jedes Signal LDINITRES*<N> das Anfangsergebnis
INITRES aus der Auswerteschaltung 350 in die N Bits des
Registers 360. Wie in 13 gezeigt
ist, enthält
der Dekodierer 412 insgesamt 16 NAND-Gatter, kollektiv
mit dem Bezugszeichen 540 bezeichnet. Jedes der NAND-Gatter 540 empfängt eine einzigartige
Kombination aus zwei Eingangssignalen von dem Vordekodierer 410,
und sämtliche
NAND-Gatter 514 empfangen das Signal LATRES. Es sei daran
erinnert, dass das Signal LATRES von der Auswerteschaltung 350 (8)
jedesmal dann erzeugt wird, wenn ein Initialisierungspaket empfangen
wird. Allerdings geben nur die NAND-Gatter 540 ein aktives
niedriges Signal LDINITRES* aus, da nur ein NAND-Gatter 540 von
den beiden hohen Eingangssignalen des Vordekodierers 410 freigegeben
werden. Das aktiv niedrige Signal LDINITRES* lädt dann das Signal INITRES
in dasjenige Bit des Registers, welches dem durch die Ausgangssignale
des Vordekodierers 410 gekennzeichneten Zählerstand
entspricht. Die Art und Weise, in der die NAND-Gatter 540 diese
Funktion übernehmen,
ergibt sich für
den Fachmann aus 13 und der Tabelle 2.
-
Wie
oben in Verbindung mit 7B erläutert wurde, besteht die Funktion
des Ergebnisauswahlkodierers 386 darin, zu unterscheiden
zwischen einer Situation, in der zwei oder mehr Werte "1" sich in dem endgültigen Signal RES<0:15> befinden. Darin befindet
sich nur eine "1", wenn es nur einen
Satz von Einsen im Anfangswert RES>0:15> maximaler Länge gibt.
Gibt es allerdings zwei oder mehr Sätze im Anfangswert RES<0:15>, die die gleiche Anzahl
von Einsen haben, so enthält
der endgültige
Wert RES<0:15> mehr als eine "1". Der Ergebnisauswahlkodierer 386 wählt den
niedrigsten Wert "1" im endgültigen Wert
RES<0:15> und bringt die anderen
Einsen zwangsweise auf "0". Der Ergebnisauswahlkodierer 386 ist
in 14 in größerer Einzelheit
dargestellt.
-
Gemäß 14 enthält der Ergebnisauswahlkodierer 386 einen
Negator 550 sowie einen Satz von NAND-Gattern 552 bis 578,
die jeweils ein Bit aus RES<0:14> und ein oder mehrere
Signale vom Ausgang des Negators 550 empfangen, oder von
NAND-Gattern 552–578 empfangen,
die ihrerseits RES-Bits niedrigerer Ordnung empfangen. Der Negator 550 gibt
bei hohem RES<0> einen niedrigen Wert
aus. Allerdings können
die NAND-Gatter 572–578 ansprechend
auf hohe Eingangssignale RES nur dann einen niedrigen Wert ausgeben,
wenn sie nicht von einem oder mehreren Signalen aus dem Negator 550 oder
von den NAND-Gatter 552–578 gesperrt werden,
die RES-Bits geringerer Ordnung empfangen. Wenn der Negator 550 oder
irgendeines von den NAND-Gattern 552–578 einen niedrigen
Wert ausgibt, sperrt dies sämtliche
NAND-Gatter 552–578,
die RES-Bits höherer
Ordnung empfangen. Wenn beispielsweise RES<0> den
Wert "1" hat, sperrt der
niedrige Wert am Ausgang des Negators 550 die NAND-Gatter 552–554.
Der niedrige Wert am Ausgang des Negators 550 wird auch
an ein NAND-Gatter 590 gelegt, demzufolge ein niedriger
Wert am Ausgang des Negators 592 entsteht. Der Negator 592 gibt
ebenfalls einen niedrigen Wert ab, wenn die Ausgänge entweder vom NAND-Gatter 552 oder
vom NAND-Gatter 554 ansprechend auf hohe Signale RES<1> oder RES<2> niedrigen Wert annehmen.
Der niedrige Wert am Ausgang des Negators 552 sperrt die
NAND-Gatter 556, 558 und wird außerdem an
ein NAND-Gatter 594 gelegt, damit ein Negator 596 einen
niedrigen Wert ausgibt. Dieser wiederum sperrt NAND-Gatter 560, 562 und
wird an ein NAND-Gatter 502 gelegt, damit ein Negator 604 einen
niedrigen Wert ausgibt. Der niedrige Wert am Ausgang des Negators 604 wiederum
sperrt NAND-Gatter 564, 566 und wird an ein NAND-Gatter 606 gelegt,
damit ein Negator 608 einen niedrigen Wert ausgibt, der wiederum
NAND-Gatter 568, 570 sperrt und an ein NAND-Gatter 610 gelegt
wird, damit ein Negator 612 einen niedrigen Wert ausgibt.
Der niedrige Wert am Ausgang des Negators 612 sperrt NAND-Gatter 572, 574 und wird
an ein NAND-Gatter 614 gelegt, damit ein Negator 616 einen
niedrigen Wert ausgibt. Schließlich
sperrt der niedrige Wert am Ausgang des Negators 616 NAND-Gatter 576, 578.
Damit ist nur der Ausgang des Negators 550 auf niedrigem
Wert, unabhängig
davon, wie viele RES-Bits zusätzlich
zu RES<0> einen hohen Wert haben.
-
Die
Ausgänge
des Negators 550 und der NAND-Gatter 552–578 werden
auf einen Satz von NAND-Gattern 620–634 gegeben, die
ihrerseits vier NOR-Gatter 670–678 treiben.
Die Funktion dieser NAND-Gatter 620–632 sowie NOR-Gatter 670–678 besteht
darin, eine binäre
Zahl P<0:3> zu erzeugen, entsprechend
dem Komplement desjenigen Negators 550 oder NAND-Gatters 552–578,
welches einen niedrigen Wert abgibt. Der Negator 550 oder
das NAND-Gatter 552–578 wiederum
ist kennzeichnend für
das RES-Bit geringster Ordnung, welches eine "1" ist.
Beispielsweise dekodieren die NAND-Gatter 620, 622 gemeinsam RES<0, 2, 4, 6, 8, 10,
12, 14>. Die NAND-Gatter 632, 634 dekodieren
gemeinsam RES<8:15>.
-
Die
Signale P<0:3> oder E<0:3> vom Zähler 400 werden
von dem Multiplexer 390 (7B) auf
den Zwischenspeicher 394 gekoppelt. Der Multiplexer 390 ist
in 15 dargestellt. Die Signale P<0:3> werden über einzelne
Negatoren 700 an Durchlassgatter 702 gegeben,
die zu den Eingängen
einzelner Negatoren 704 geleitet werden. In ähnlicher
Weise werden die Signale E<0:3> über zugehörige Negatoren 706 an
zugehörige Durchlassgatter 708 gelegt,
die ebenfalls an Negatoren 704 gekoppelt. Die Durchlassgatter 702 werden
direkt und über
einen Negator 710 durch aktiv hohes Signal PHSELECTED freigegeben.
-
Wenn
die Durchlassgatter 702 freigegeben sind, werden die Signale
P<0:3> an die Negatoren 704 gegeben.
Wenn das Signal PHSELECTED inaktiv niedrig ist, werden die Durchlassgatter 708 freigegeben,
um das Signal E<0:3> an die Negatoren 704 zu
geben. Diese geben folglich abhängig
vom Zustand des Signals PHSELECTED als PHASEOUT<0:3> entweder
P<0:3> oder E<0:3> aus. Wie oben erläutert, ist
während
der Initialisierungsprozedur das Signal PHSELECTED niedrig, so dass
die Signale E<0:3> vom Zähler 400 die
Anzapfung der Verzögerungsleitung 260 auswählen und
dasjenige Bit des Registers 360 auswählen, in welchem jeder Wert
INITRES gespeichert ist. Nachdem aber erst einmal die optimale Anzapfung
der Verzögerungsleitung
im Analysemodus ausgewählt
wurde, geht PHSELECTED auf hohen Wert, um entsprechend dem endgültigen Wert
RES<0:15> P<0:3> auszuwählen und
so die Anzapfung der Verzögerungsleitung 260 zu
kennzeichnen.
-
Der
Multiplexer 390 enthält
außerdem
eine Verzögerungsschaltung 720,
die das Signal PHSELECTED empfängt
und ein Paar Negatoren 722, 724 treibt, um eine
kurze Zeitspanne nach der Erzeugung des Signals PHSELECTED das Signal
PHASEDONE zu erzeugen.
-
Die
Signale PHASEOUT<0:3> vom Multiplexer 390 werden
an den Zwischenspeicher 394 (7B) gelegt,
der in 16 in größerer Einzelheit dargestellt
ist. Die Signale PHASEOUT<0:3> werden an einzelne Zwischenspeicherschaltungen 730–736 gelegt.
Deren Ausgänge
werden an zugehörige
Durchlassgatter 740–746 gegeben,
die auf zugehörige
Negatorenpaare 750–756 gekoppelt
werden. Die Zwischenspeicherschaltungen 730–736 können selektiv
von zugehörigen
Durchlassgattern 760–766 umgangen
werden. Die Durchlassgatter 740–746 und die Durchlassgatter 760–766 sind
derart miteinander verschaltet, dass die Durchlassgatter 740–746 abwechselnd
freigegeben werden mit den Durchlassgattern 760–766.
-
Wie
bereits früher
erläutert
wurde, ist im Lademodus der Einleitungsbefehl CMDINIT hoch und gibt
damit die Durchlassgatter 760–766 entweder direkt
oder über
einen Negator 770 frei. Im Ergebnis werden die Zwischenspeicher
730-736 im Lademodus umgangen, so dass der Phasenbefehl CMDPH<0:3> am Multiplexer 310 (5)
zum Auswählen
der Anzapfung der Verzögerungsleitung 260 stets
dem Signal PHASEOUT<0:3> entspricht. Wenn allerdings
der endgültige
Wert RES<0:15> gewonnen wurde, wird
das Signal PHASEDONE hoch und triggert damit über den Negator 776 den
Impulsgenerator 774, und der von diesem erzeugte Impuls
wird an die S-Gänge
der Zwischenspeicherschaltung 730–736 gelegt, das Komplement
wird über
einen Negator 778 an die Eingänge S* der Zwischenspeicherschaltung 730–736 gegeben.
Die Zwischenspeicher 730–736 speichern dann
die Signale PHASEOUT <0:3> entsprechend den vom
Multiplexer 390 ausgewählten
Signalen P<0:3>. Die Signale P<0:2> wiederum entsprechen
den Werten niedrigster Ordnung des endgültigen Ergebnissignals RES<0:15>, welche eine "1" enthalten. Die in den Zwischenspeicherschaltungen 730–736 gespeicherten
Signalen PHASE-OUT<0:3> werden dann auf die
Negatorenpaare 750–756 mit
Hilfe der Durchlassgatter 740–746 gekoppelt, da
zu diesem Zeitpunkt das Signal CMDINIT auf niedrigen Wert gegangen
ist. Die Zwischenspeicher 730–736 speichern die
Signale PHASEOUT<0:3> solange, bis entweder
in den Zwischenspeichern 730–736 neue Signale
PHASEOUT <0:3> gespeichert wurden,
oder ein Rücksetzen der
Signale durch Anlegen des Signals RESET* über ein Paar von Negatoren 780–782 erfolgt
ist. Dann bewirkt CMDPH<0:3>, dass der Multiplexer 310 (5)
die Anzapfung der Verzögerungsleitung 260 auswählt, die zum
Erzeugen des Signals ICLK während
des Normalbetriebs verwendet wird.
-
Wenngleich
die bevorzugte Ausführungsform
der Erfindung in der Weise beschrieben wurde, dass sie hauptsächlich dazu
dient, die Phase eines internen Taktsignals so einzustellen, dass
sie exakt ein von außen angelegtes
Befehlspaket übernehmen
kann, versteht sich, dass die Erfindung auch für ähnliche Zwecke in Speicherbauelementen
und anderen Typen integrierter Schaltungen eingesetzt werden kann.
Beispielsweise kann, wie oben ausgeführt, das gleiche System dazu
benutzt werden, die Phase eines internen Datentakts einzustellen
in Relation zu dem externen Datentakts DCLK, der über die
Leitung 132 (2) empfangen wurde, um Daten
auf dem Datenbus 130 exakt zu übernehmen. Tatsächlich kann
das System dazu eingesetzt werden, die zeitliche Lage von Taktsignalen
so einzustellen, dass in exakter Weise jede Art von Eingangssig nalen übernommen
wird, die an irgendeinen Typ einer integrierten Schaltung angelegt
werden. Tatsächlich
kann das System mit geringfügigen
zusätzlichen
Schaltungsmaßnahmen
dazu benutzt werden, eine jeweilige Taktphase auszuwählen, die
am besten mit jedem Eingangssignal übereinstimmt, welche an eine
integrierte Schaltung angelegt wird. In einem solchen Fall würde das
System sequenziell jeden Eingangsanschluss der integrierten Schaltung
in der gleichen Weise auswerten, wie der Befehlsbus zu dem Zweck
ausgewertet wurde, die optimale Taktphase zum Abfangen von Befehlspaketen
vom Befehlsbus festzulegen.