Zerbe, Jared LeVan, Woodside, CA 94062, US; Donnelly, Kevin S., Los Altos, CA 94024, US; Sidiropoulos, Stefanos, Palo Alto, CA 94306, US; Stark, Donald C., Los Altos Hills, CA 94024, US; Horowitz, Mark A., Menlo Park, CA 94025, US; Yu, Leung, Austin, TX 79739, US; Vu, Roxanne, San Jose, CA 95138, US; Kim, Jun, Redwood City, CA 94065, US; Garlepp, Bruno W., Sunnyvale, CA 95086, US; Ho, Tsyr-Chyang, San Jose, CA 95131, US; Lau, Chung-Kwong, Benedict, San Jose, CA 95134, US
Vertreter
Eisenführ, Speiser & Partner, 28195 Bremen
DE-Aktenzeichen
60027038
Vertragsstaaten
AT, BE, CH, CY, DE, DK, ES, FI, FR, GB, GR, IE, IT, LI, LU, MC, NL, PT, SE
Die vorliegende Erfindung bezieht sich auf Bussysteme. Weiterhin bezieht
sich die vorliegende Erfindung insbesondere auf ein Verfahren und eine Vorrichtung
zur Optimierung der Spannungs- und Zeiteigenschaften in einem Bussystem, und auf
ein Verfahren zum Übertragen von Steuerinformation während einer Systemkalibration.
HINTERGRUND DER ERFINDUNG
Computersysteme und andere elektrische Systeme benutzen typischerweise
einen oder mehrere Busse, um integrierte Schaltungen und andere Systemkomponenten
miteinander zu verbinden. Daten werden, typischerweise in digitaler Form, zwischen
derartigen Schaltungen und Komponenten über einen Bus kommuniziert.
Neueste Trends in der Busentwicklung haben die mit verschiedenen Datenzuständen
des Busses assoziierten Spannungshübe dramatisch reduziert. Frühe Bussysteme sahen
von Versorgungsschiene zu Versorgungsschiene Spannungshübe von 3,5 oder 5,0 V bis
hinunter zu null V. Zeitgemäßere Bussysteme stellen Spannungshübe von weniger als
1 V zur Verfügung. Begrenzte Spannungshübe haben zu einem verringerten Energieverlust
und zu niedrigeren Pegeln von auf dem Bus induziertem Rauschen geführt. Diese Abnahmen
sind insbesondere im Kontext von Bussystemen, die mit immer weiter erhöhten Taktraten
laufen, wichtig.
Reduzierte Spannungshübe und erhöhte Datenraten stellen jedoch für
den Systemdesigner erhebliche Probleme dar. Reduzierte Spannungshübe stellen notwendigerweise
reduzierte Spannungsgrenzwerte zur Verfügung. Das bedeutet, dass die Fähigkeit von
Systemkomponenten, auf dem Bus einen Datenzustand von einem anderen zu unterscheiden,
reduziert ist, da die oberen und unteren Grenzen des Hubs näher zusammenrücken.
In ähnlicher Weise erfordern erhöhte Betriebsfrequenzen, das Systemkomponenten die
Daten auf dem Bus während kürzer und kürzer werdender Zeitintervallen erfassen.
Dementsprechend sind Spannungs- und Zeitgrenzwerte für Bussignale oft begrenzende
Faktoren bei einer Bestimmung der Leistungsfähigkeit des Gesamtsystems.
1 ist ein einfaches Blockdiagram eines
Bussystems mit einem Master 11 und Slaves 12a–12n,
die über einen Datenbus 30 und ein gefaltetes Taktsignal (Takt-zum-Master
„CTM" und Takt-vom-Master „CFM") verbunden sind. Wie in dem entsprechenden
Signalzeitdiagramm der 2 dargestellt ist, sind auf
dem Datenbus gültige Daten während einer Periode T sichtbar. Idealerweise würde
das Datensignal bei VHI für einen ersten Datenzustand und bei VLO für einen zweiten
Datenzustand klar definiert sein. VLI und VLO würden oberhalb und unterhalb einer
Referenzspannung, Vref gleich beabstandet sein. Solch ideale Beziehungen würden
eine maximale Spannungstoleranz zwischen hohen und niedrigen Datenzuständen und
entsprechend optimale Signalerfassungsfähigkeiten für Systemkomponenten zur Verfügung
stellen.
Darüber hinaus würden Daten zum Zeitpunkt t1 während des „Datenauges",
d. h. der Periode („tbit"), während sich gültige Daten auf dem Bus zwischen
Datenübergangsperioden befinden, erfaßt. Die Zeit t1 entspricht der Mitte des Datenauges
und liefert einen maximalen Zeitgrenzwert (1/2 tbit) für eine Datenerfassung zwischen
Datenübergangsperioden.
Unglücklicherweise existieren die idealen Spannungs- und Zeitgrenzwerte
gemäß 2 in tatsächlichen Bussystemen nicht.
3A und 3B illustrieren
typische Zeitverschiebungen zwischen dem idealen Auftreten eines Taktsignals innerhalb
des Datenauges und tatsächlichem Auftreten. Derartige Taktzeitverschiebungen rühren
von vielen möglichen Quellen her, wie etwa Unterschieden bei der Herstellung von
Signalleitungsspuren auf gedruckten Schaltungsplatinen oder Unterschieden in Signalübertragungszeiten
aufgrund des Aufbaus von stehenden Wellen, induziert durch Signal- und Taktreflektionen
und Rauschen auf Signalleitungen.
In 3A tritt ein CTM Signalübergang in
dem Datenauge um eine Periode &dgr; zu früh vor dem idealen Zeitpunkt des CTM Übergangs
auf. Mit anderen Worten liest der Master Daten von einem Slave relativ zu dem Takt
um eine Zeit &dgr; zu früh. In 3B tritt das CFM Signal
in dem Datenauge um die gleiche Zeit zu spät auf. Somit schreibt der Master Daten
um eine in dem Datenauge zu späte Zeit &dgr; in den Slave.
Geringe Unterschiede in der tatsächlichen Zeit des Taktsignals und/oder
des Datensignals werden zu einer Verschiebung ihrer idealen Zeitbeziehung
führen. Zusätzlich wird die bidirektionale Natur einiger Signalleitungen in dem
Bussystem zu Zeitverschiebungen unterschiedlicher Polaritäten in Abhängigkeit von
der Richtung des Datenflusses führen.
Jeder der mehreren Slaves, die mit dem Bus verbunden sind, kann einen
anderen und nicht vorhersagbaren Zeitfehler in Relation zu der idealen Anordnung
des Taktes aufweisen. Derartige Fehler reduzieren die Gesamt-Zeittoleranz in dem
System. In dem Maße, in dem tatsächliche Übergangszeiten wandern, tritt darüber
hinaus die Gefahr auf, dass eine Vorrichtung versuchen wird, während einer Datenübergangsperiode,
d. h. während einer Periode, in der die Daten auf dem Bus nicht gültig sind, zu
lesen. Diese Gefahr steigt mit der Systembetriebsfrequenz an.
Ein Vergleich zwischen 4A und 4B
illustriert das Problem von Spannungsfehlern in dem Bussystem der 1.
In 4A sind ideale Beziehungen zwischen VHI, VLO und Vref dargestellt,
wobei der Spannungshub von VHI zu Vref der gleiche ist, wie der Spannungshub von
Vref zu VLO. In einer Ausführungsform beträgt VHI 1,8 Volt, Vref 1,4 Volt und VLO
1,0 Volt. Im Kontrast dazu ist der Spannungshub von VHI zu Vref in der
4B viel geringer als der Spannungshub von Vref zu VLO. Solch eine
ungleiche Beziehung reduziert die Spannungstoleranz zum akkuraten Detektieren eines
Datenwertes auf dem mit VHI assoziierten Bus dramatisch.
Wo das Bussystem der 1 asymmetrische
Daten und eine einzige Referenzspannung, wie weiter unten detaillierter beschrieben
ist, verwendet, ist das Vorhandensein von Spannungsfehlern besonders schädlich.
Für derartige Systeme würde eine in der Mitte zwischen VHI und VLO angeordnete Referenzspannung
(Vref), wie etwa in 4A dargestellt, einen maximalen Spannungsgrenzwert
zur Verfügung stellen.
Unglücklicherweise verhindern eine Anzahl von Systemphänomenen die
stabile, zentrierte Positionierung von VHI und VLO gegenüber Vref. Beispielsweise
induziert ein Kanalgleichstromwiderstand Spannungsfehler in Strommodus-Signalübertragungssystemen.
Mit einem Kanalgleichstromwiderstand kann sich ein Schreibdatenauge bezüglich der
Spannung verschieben, wenn es sich entlang des Signalübertragungskanals bewegt.
Das bedeutet, dass Slaves, die sich weiter weg von dem Master befinden, eher kleinere
Spannungshübe erfahren als die Hübe von Slaves, die sich näher an dem Master befinden,
einfach aufgrund eines ansteigenden Kanalgleichstromwiderstands, welcher einen Spannungsteiler
mit dem Endwiderstand bildet. Darüber hinaus ist es sehr schwierig, Ausgangsspannungspegel
gegenüber Vref in Herstellungssystemen symmetrisch einzustellen, die reale Prozess-,
Spannungs- und Temperaturvariationen erfahren.
An einem gewissen Punkt werden Spannungsfehler, wie etwa die Zeitfehler,
die oben beschrieben sind, zu einem Datenfehler führen. Zumindest wird das Vorhandensein
von Spannungsfehlern die innerhalb eines Bussystems erlaubten Spannungstoleranzen
reduzieren.
Die unvermeidliche Verschlechterung der Zeit- und Spannungseigenschaften
von Bussystemsignalen und die damit verbundenen Probleme erkennend, suchten herkömmliche
Bussysteme danach, die Zeit- und Spannungsfehler durch grobe Anpassungen der Daten-
und/oder Taktsignale in dem Master zu kompensieren. Dieser Weg verbesserte Signalübertragungstoleranzen
dort, wo Verschlechterungen vorhersehbar waren, oder dort, wo eine sehr begrenzte
Anzahl von Komponenten mit einem einfachen Bus verbunden war. In dem Maße jedoch,
in dem Bussysteme bezüglich Komplexität und Größe zugenommen haben, wurde klar,
dass viele Faktoren, die die Zeit- und Spannungstoleranzen nachteilig beeinflussen,
nur individuelle Slavegeräte oder nur die relative Position des Slave zu dem Master
innerhalb des Gesamtsystems betreffen.
Daher erwies sich die herkömmliche Verwendung von Zeit- und Spannungsoffsets
in dem Master als nicht wirksam. Auf ähnliche Weise hat die Verwendung von feinen
Rekalibrationstechniken zu einer inkonsistenten Systemleistungsfähigkeit und zu
einer nicht akzeptablen Bandbreitenverschlechterung bei Hochfrequenzsystemen geführt.
Dementsprechend verbleibt ein Bedarf für einen Weg für eine Zeit- und Spannungsfehlerkompensation;
der zuverlässig ist und gut an komplexe Hochfrequenzbussysteme angepasst ist.
ZUSAMMENFASSUNG DER ERFINDUNG
Die vorliegende Erfindung liefert ein Verfahren und eine Vorrichtung
zum wirksamen Anpassen der Zeit- und/oder der Spannungseigenschaften von zwischen
einem Master und einem oder mehreren Slavegeräten über einen Bus gesendeten Datensignalen.
Die vorliegende Erfindung ist insbesondere gut für eine Verwendung in Bussystemen
angepasst, die eine Mehrzahl von Slavegeräten aufweisen, da die Zeit- und Spannungsanpassung
für jedes einzelne Slavegerät vorgenommen werden kann. Die Datenübertragung über
den Bus kann durch Kompensation von Spannungs- und Zeitverschiebungen
auf einer individuellen Basis optimiert werden.
Gemäß einem allgemeinen Aspekt der vorliegenden Erfindung werden mit
jedem Slavegerät assoziierte Offsetwerte verwendet, um Zeit- und/oder Spannungseigenschaften
anzupassen. Zeit- und assoziierte Offsetwerte können im allgemeinen als „Schreibe"
und „Lese" bezeichnet werden. Diese Begriffe werden einfach dazu verwendet,
die Richtung der Datenübertragung zwischen Master und Slave zu unterscheiden, und
sie werden nicht auf die SCHREIBE und LESE Operationen von klassischen Speichergeräten
beschränkt verwendet.
Die in der vorliegenden Erfindung beschriebenen Offsetwerte werden
typischerweise in Verbindung mit einer Taktungsschaltung, wie etwa einer Verzögerungsregelschleife
oder einer Phasenregelschleife, verwendet, um intern zu jedem Slavegerät Lese-/Schreib-Taktsignale
zu erzeugen.
Gemäß einem anderen Aspekt der vorliegenden Erfindung wird eine Zeitanpassungsschaltung
in jedem Slavegerät zur Verfügung gestellt, um ein optimiertes internes Lese/Schreib-Taktsignal
zu erzeugen. Dieses interne Lese-/Schreibe-Taktsignal wird typischerweise in Relation
zu einem an dem Slavegerät angelegten Mastertaktsignal und einem Offsetwert abgeleitet.
Die Zeitanpassungsschaltung kann viele Formen annehmen. und kann Zeitanpassungen
in absoluter Zeit sowie in Grad vornehmen. In vielen dieser Formen wird ein Lese-/Schreibe-Offset-Rückkopplungssignal
in Relation zu dem Offsetwert oder den Offsetwerten entwickelt und verwendet, um
das interne Lese-/Schreibe-Taktsignal zu erzeugen.
Gemäß einem zweiten allgemeinen Aspekt verwendet die vorliegende Erfindung
Offsetwerte, die speziell mit Bezug auf jedes Slavegerät bestimmt sind, um die Spannungspegel
oder den Spannungspegel von dem Slavegerät und/oder den Spannungspegel oder Antriebsstrom
für durch das Slavegerät übertragene Daten anzupassen.
Die vorliegende Erfindung ist auch auf eine Vorrichtung und ein Verfahren
zum Bestimmen der relevanten Zeit- und/oder Spannungsoffsets für jedes Slavegerät
in dem Bus gerichtet. Die Bestimmung dieser Offsets wird oft während einer Kalibrationsphase
des Betriebs für das Bussystem durchgeführt. Während einer Kalibration kann das
Bussystem Steuerinformation unter Verwendung eines Protokolls oder eines Steuerinformationspakets
kommunizieren, welches sich von dem Protokoll oder Steuerinformationspaket unterscheidet,
welches während des normalen Bussystembetriebs verwendet wird.
In noch einem weiteren Aspekt der vorliegenden Erfindung sind eine
oder mehrere Offsetwerte, entweder Spannung oder Synchronisation, in einem oder
mehreren Registern auf dem Master gespeichert. Ein mittlerer oder gemeinsamer Offsetwert
kann in dem Master gespeichert werden und jedem Slavegerät zugeführt werden, oder
es können individuelle Offsetwerte entsprechend jedem Slave in dem Master gespeichert
werden, und, wenn angemessen, ausgewählt werden, wenn Daten zu dem Slave gesendet
werden oder von diesem empfangen werden. Somit betrachtet die vorliegende Erfindung
in dem Slave befindliche Anpassungsschaltungen und in dem Master befindlichen Anpassungsschaltungen
sowohl für Zeit- als auch für Spannungsaspekte.
Auf ähnliche Weise kann in einem Bussystem der vorliegenden Erfindung
eine Tastverhältnisanpassung vorgenommen werden. Darüber hinaus kann unter Verwendung
der vorliegenden Erfindung ein Signalabgleich ebenfalls angepasst werden.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
1 ist ein Blockdiagramm eines Bussystems;
2 ist ein Zeitdiagramm, welches eine
ideale Beziehung zwischen einem Datenauge und einem Lese-/Schreibe-Taktsignal darstellt;
3A und 3B
sind Zeitdiagramme, die typische Zeitbeziehungen zwischen einem Datenauge und einem
Lese-/Schreibe-Taktsignal darstellen;
4A und 4B sind Spannungshubdiagramme,
die den Unterschied zwischen einem idealen Spannungshub und einem
typischen Spannungshub darstellen;
5 ist ein Blockdiagramm eines Bussystems,
welches eine beispielhafte Kanalsignalübertragung in größerem Detail darstellt;
6 ist ein Blockdiagramm, welches allgemein
den Zeitanpassungsaspekt der vorliegenden Erfindung darstellt, wie er auf eine typische
Slave-Gerät-/Master-Gerät-Beziehung angewendet wird.
7 ist ein Schaltungsdiagramm, welches
eine erste Ausführungsform einer Zeit-Offset-Schaltung gemäß der vorliegenden Erfindung
darstellt;
8 ist ein Schaltungsdiagramm, welches
eine zweite Ausführungsform einer Zeit-Offset-Schaltung gemäß der vorliegenden Erfindung
darstellt;
9 ist ein Schaltungsdiagramm, welches
eine dritte Ausführungsform einer Zeit-Offset-Schaltung gemäß der vorliegenden Erfindung
darstellt;
10 ist ein Schaltungsdiagramm, welches
eine vierte Ausführungsform einer Zeit-Offset-Schaltung gemäß der vorliegenden Erfindung
darstellt;
11 ist ein Schaltungsdiagramm, welches
eine fünfte Ausführungsform einer Zeit-Offset-Schaltung gemäß der vorliegenden Erfindung
darstellt;
12A und 12B
stellen Datenübertragungssynchronisationen in einem beispielhaften System mit doppelter
Datenrate dar;
13 ist ein Blockdiagramm, welches das
Hinzufügen eines Tastverhältnis-Offset-Registers bzw. von Tastverhältnis-Offset-Registern
zu einer Ausführungsform eines Bussystems innerhalb des Kontext der vorliegenden
Erfindung darstellt;
14 ist eine Ausführungsform eines Tastverhältnisanpassungsmechanismus,
welcher zur Verwendung mit den in dem System der 13
dargestellten Tastverhältnisregistern angepasst ist;
15 ist eine detailliertere beispielhafte
Schaltung, die eine mögliche Implementierung der in 14
dargestellten Tastverhältnisanpassungsschaltung darstellt;
16 ist ein Wellenform-Diagramm, welches
bestimmte Beziehungen zwischen den Signalen, die in der vorstehenden Tastverhältnisanpassungsschaltung
sichtbar sind, darstellt;
17 ist eine weitere Ausführungsform eines
Tastverhältnisanpassungsmechanismus, der zur Verwendung mit den in dem System der
13 dargestellten Tastverhältnisarbeitsregistern angepasst
ist;
18 ist eine detaillierte beispielhafte
Schaltung, die eine mögliche Implementierung eines des in der 17
dargestellten Tastverhältnisintegrierers darstellt;
19 ist eine detaillierte beispielhafte
Schaltung, die eine mögliche Implementierung der in der 17
dargestellten Tastverhältnisanpassungsschaltung darstellt;
20 ist ein Blockdiagramm, welches ein
Tastverhältnisanpassungsschema innerhalb des Kontext der vorliegenden Erfindung
dargestellt, wenn sie auf ein N-Datenratensystem angewendet wird;
21 ist eine detailliertere beispielhafte
Schaltung, die eine mögliche Implementierung der in 20
dargestellten Tastverhältnisanpassungsschaltung(en) darstellt,
22 ist noch eine weitere Ausführungsform
eines Tastverhältnisanpassungsmechanismus, der zur Verwendung mit dem(den) Tastverhältnisregister(n)
angepasst ist;
23 ist ein Blockdiagramm, welches ein
weiteres Tastverhältnisanpassungsschema innerhalb des Kontexts der vorliegenden
Erfindung darstellt, wenn sie auf ein N-Ratensystem angewendet wird;
24 ist ein Blockdiagramm, welches allgemein
den Spannungsanpassungsaspekt der vorliegenden Erfindung darstellt, wenn sie auf
eine typische Slave-Gerät-/Master-Gerät-Beziehung angewendet wird;
25 ist ein Blockdiagramm, welches einen
ersten mit der vorliegenden Erfindung konsistenten Ansatz zur Zeitkalibration darstellt;
26 ist ein Zeitdiagramm, welches den
in 25 dargestellten Zeitkalibrationsansatz darstellt;
27 ist ein Blockdiagramm, welches einen
zweiten Ansatz zur mit der vorliegenden Erfindung konsistenten Zeitkalibration darstellt;
28 ist ein Zeitdiagramm, welches einen
Abtastfensteransatz zur Zeitkalibration darstellt;
29 ist ein Blockdiagramm, welches einen
Abtastfensteransatz zur Spannungskalibration darstellt;
30 ist ein Spannungsdiagramm welches
den Abtastfensteransatz der Schaltung der 29 darstellt;
31 ist ein Blockdiagramm, welches eine
erste Ausführungsform einer mit der vorliegenden Erfindung konsistenten Spannungskalibrationsschaltung
darstellt;
32 ist ein Blockdiagramm, welches eine
zweite Ausführungsform einer mit der vorliegenden Erfindung konsistenten Spannungskalibrationsschaltung
darstellt;
33 ist ein Blockdiagramm, welches eine
dritte Ausführungsform einer mit der vorliegenden Erfindung konsistenten Spannungskalibrationsschaltung
darstellt;
34 ist ein Wellenformdiagramm, welches
einen angepassten Abtastfensteransatz zur Tastverhältnisanpassungskalibration darstellt;
35 ist ein Wellenformdiagramm, welches
eine nicht-abgeglichene Datenübertragung darstellt,
36A und 36B
sind beispielhafte übertragungsseitige Ausgangstreiberschaltungen, die eine temporäre
Abgleichsschaltung aufweisen;
37 ist eine beispielhafte empfängerseitige
Abgleichsschaltung;
38 ist ein Blockdiagramm eines Bussystems,
welches zusätzliche Kanalsignale gegenüber jenen, die in den 1
und 5 dargestellt sind, hervorhebt;
39 ist ein Zeitdiagramm, welches gerade
und ungerade Datenpaketdefinitionen relativ zu einem Taktsignal darstellt;
40 ist ein Blockdiagramm, welches im
Allgemeinen den Zeitanpassungsaspekt der vorliegenden Erfindung in Relation zu einem
beispielhaften Bussystem darstellt;
41 ist ein Zeitdiagramm, welches eine
beispielhafte Beziehung zwischen expandierten Steuerpaketen und normalen Datenpaketen
darstellt;
42 stellt Veränderungen in dem Format
eines beispielhaften Steuerinformationspakets zwischen einem normalen Modus des
Betriebs und einem Kalibrationsmodus des Betriebs dar;
43 stellt die Veränderungen auf eine
ausgewählte beispielhafte Decodierschaltung dar, die zur Implementierung des sich
unterscheidenden Modus zur Interpretation des Steuerinformationspakets der
26 benötigt wird; und
44 stellt im Allgemeinen die Anordnung
von einem oder mehreren „Offset-Registern" innerhalb des Masters im Vergleich
mit den früheren im Slave befindlichen Registern dar.
DETAILLIERTE BESCHREIBUNG
Um die Verwendung, die Implementierung und die mit der vorliegenden
Erfindung verbundenen Vorteile besser zu verstehen, wird ein ohne weiteres an die
vorliegende Erfindung angepasstes, allgemeines Bussystem mit Bezug auf die
5 beschrieben. In dem Blockdiagramm der 5
enthält ein Bussystem 10, welches in einigen zusätzlichen Details mit Bezug
auf das Bussystem der 1 dargestellt ist, einen zwischen
einem Master 11 und einer Vielzahl von Slaves 12a–12n
gekoppelten Bus 30. Bus 30 ist ein Hochgeschwindigkeitsbus mit
niedrigem Spannungshub, welcher mehrere Signalleitungen aufweist und Daten zwischen
Slaves 12a–12n und Master 11 überträgt.
Master 11 und jeder Slave 12a–12n
schließt typischerweise eine (nicht dargestellte) Schnittstellenschaltung ein, die
die entsprechende Vorrichtung an den Bus 30 koppelt. Innerhalb des Bussystems
10 kann ein Master mit einem weiteren (nicht dargestellten) Master und
mit Slaves 12a–12n kommunizieren. Im Unterschied hierzu
kommunizieren Slaves nur mit Mastern.
Master 11 enthält Intelligenz und erzeugt Kommandos an die
Slaves. Master 11 kann ein Mikroprozessor, ein digitaler Signalprozessor,
ein Graphikprozessor, ein peripherer Controller, ein Eingangs-/Ausgangs-(I/O)Controller,
ein DMA-Controller, ein Speichercontroller, eine Kommunikationsvorrichtung oder
ein anderer Typ eines intelligenten Controllers sein.
Slaves benötigen nur ein niedriges Niveau an Intelligenz. In einer
bevorzugten Ausführungsform sind Slaves 12a–12n DRAMs, sie
können jedoch ein oder mehrere andere Typen von Speichervorrichtungen einschließlich
elektrisch programmierbare Nur-Lese-Speicher (EPROMs), Flash EPROMs, Schreib-Lese-Speicher
(RAMs), statische RAMs (SRAMs), Video RAMs (VRAMs) usw. sein. In einer anderen Ausführungsform
sind Slaves 12a–12n Bus-Transceiver.
Master 11 und Slaves 12a–12n weisen
jeweils Datenbus[8:0]-Anschlüsse, mindestens einen BusCtrl Anschluss und BusEnable
Anschluss, einen ClkToMaster („CTM") Anschluss, einen ClkFromMaster („CFM")
Anschluss und einen Vref Anschluss auf. Diese Anschlüsse empfangen und senden Signale
mit niedrigen Spannungshub und entsprechen der Kanalsignalleitung bzw. zu den Kanalsignalleitungen
und Bussen, die in der 5 dargestellt sind. In der dargestellten
Ausführungsform wird ein Datenbus mit 9 Bit angenommen. Einem Durchschnittsfachmann
der Technik ist jedoch klar, dass der Bus jede sinnvolle Anzahl von Signalleitungen
aufweisen kann, und typischerweise Teil eines größeren Kommunikationskanals mit
einem Steuerbus und/oder einem Adressbus ist.
Master 11 kann konfiguriert sein, um Steuerinformation an
Slaves 12a–12n auf vielen verschiedenen Wegen zu kommunizieren.
Die BusCtrl und BusEnable Signalwege, die in der 1
dargestellt sind, sind typisch für solche Konfigurationen und können jeweils eine
Signalleitung oder eine Anzahl von Signalleitungen aufweisen. Darüber hinaus können
Master 11 und Slaves 12a–12n eine verkettete Initialisierungssignalleitung
aufweisen, die zwischen den in der 5 dargestellten
SOut und Sln Anschlüssen angeschlossen ist.
Datenbussignalleitungen 32 transferieren Daten zwischen Master
11 und Slaves 12a–12n. Die Datenbussignalleitungen
sind Übertragungsleitungen mit gesteuerten Impedanzen. Jede Datenbussignalleitung
32 endet an einem Ende in einem Endwiderstand (zusammengefasst als 20 dargestellt.)
Die Endwiderstände sind mit einer Endspannung Vterm verbunden. Der Widerstandswert
R jedes Endwiderstands 20 ist gleich der Leitungsimpedanz seiner Datenbussignalleitung
32. Solch eine Konfiguration hilft, unerwünschte Signalreflektionen auf
der Signalleitung zu verhindern. Andere Signalleitungen in dem Speichersystem
10, wie etwa eine BusCtrl Leitung 14, eine BusEnable Leitung
15, eine CTM Leitung 16a und eine CFM Leitung 16b enden
ähnlich, 23, 21 bzw. 22.
Eine Taktleitung 16 ist an einem Ende mit einem Takt
35 verbunden. In einer Ausführungsform ist der Takt 35 außerhalb
und unabhängig von Master 11 und Slaves 12a–12n.
Das durch den Takt 35 erzeugte Taktsignal wird durch eine Taktleitung
16 zu dem Master 11 und zu den Slaves 12a–12n
übertragen. Die Taktleitung 16 wird zurückgeführt, um zwei Signalsegmente
16a und 16b zu bilden. Segment 16a trägt das CTM-Signal
und Segment 16b trägt das CFM Signal.
Bussystem 10 schließt auch eine Referenzspannungsleitung
17 ein, welche Vref zu jedem der Master 11 und den Slaves
12a–12n koppelt. Wie in 5 dargestellt,
wird eine Spannung Vref in einem Spannungsteiler erzeugt, gebildet durch Widerstände
25 und 26 zwischen Endspannung Vterm und der Erde. Zusätzlich
zu Vref sind Master 11 und Slaves 12a–12n mit der
Erde (GND) über eine Leitung 18 und einer Quellenspannung
VDD über eine Leitung 19 verbunden.
In dem Bussystem 10 bewegen sich durch den Master
11 getriebene Daten an den Slaves 12a–12n entlang
des Busses 30 vorbei. Slaves 12a–12n sind in der
Lage, die Daten auf dem Bus in Übereinstimmung mit von dem Master 11 gesendeten
Steuerinformation zu „erfassen". Beispielsweise kann der Master eine Übertragung
von Daten durch Senden eines Zugriffsanfragepakets initiieren. Jeder Slave
12a–12n dekodiert das Zugriffsanfragepaket und bestimmt,
ob er ausgewählt wurde, um zu antworten. Wenn er ausgewählt wurde, dann antwortet
der Slave entsprechend beispielsweise durch Akzeptieren von Daten aus dem Datenbus
in einer Schreibeoperation oder durch Treiben von Daten auf den Datenbus in einer
Leseoperation.
Das vorstehende System ist beispielhaft für Systeme, die sich durch
asymmetrische Datenübertragung/Empfang über einen Bus auszeichnen, der aus mehreren
bezüglich der Impedanz ausgeglichenen Signalleitungen besteht. Über diese Signalleitungen
werden im Verhältnis zu einer einzelnen Referenzspannung Daten mit einer relativ
hohen Frequenz übertragen. Solch ein System ist empfänglich für die oben beschriebenen
Zeitfehler und Spannungen.
Wie im Folgenden zu erkennen sein wird, optimiert die vorliegende
Erfindung Busübertragungsbedingungen durch Minimieren der gesamten Zeit- und Spannungsfehler.
Betriebsgrenzwerte für das System werden dementsprechend verbessert und es werden
Daten mit größerer Zuverlässigkeit kommuniziert.
Grundsätzlich arbeiten Bussysteme in zwei Phasen; einer Kalibrationsphase,
in welcher Systembetriebsparameter bestimmt werden können, und eine normale Betriebsphase,
in welcher Daten mit hoher Geschwindigkeit in Übereinstimmung mit den während der
Kalibrationsphase etablierten Parametern übertragen werden. Eine wirksame Kalibration
der Betriebsparameter des Bussystems stellt eine Anzahl von Fragen, die unten im
Detail diskutiert werden.
Gemäß einem ersten allgemeinen Aspekt liefert die vorliegende Erfindung
ein System und ein Verfahren, durch welche individuelle Slave-Geräte ihre Lese-
und/oder Schreibsynchronisation anpassen, um einem Mastertaktsignal zu entsprechend.
Dieser Aspekt der vorliegenden Erfindung wird mit Bezug auf die 6
erläutert.
6 illustriert weiter die Beziehung zwischen
Master 11 und Slave 12a innerhalb des Kontexts der vorliegenden
Erfindung. Es ist beabsichtigt, dass alle Slaves 12a–12n
der 5 so konfiguriert sind, wie der in 6
dargestellte Slave, es wird jedoch zum Zwecke der Vereinfachung nur ein Slave dargestellt.
Darüber hinaus wurden Details, die sich nicht auf die vorliegende Erfindung beziehen,
aus dem in der 6 dargestellten System weggelassen.
Slave 12a enthält einen oder mehrere Empfänger
60 und einen oder mehrere Sender 70, die mit einem Datenbus
30 verbunden sind. Von dem Master 11 gesendete Daten werden über
den Datenbus 30 an die Empfänger 60 kommuniziert. Von dem Slave
12a zu dem Master 11 gesendete Daten werden auf den Datenbus
30 durch Sender 70 gesetzt. Die Konstruktion von Empfängern
60 und Sendern 70 ist herkömmlich und wird durch die Natur des
Slave-Gerätes und des Bussystems bestimmt.
Ein synchrones Empfangen von Daten durch die Empfänger 60
und ein synchrones Senden von Daten durch die Sender 70 wird jeweils durch
ein Empfangs-Taktsignal (RCLK) und ein Sende-Taktsignal (TCLK) gesteuert. Diese
Signale sind typisch für eine Klasse von Taktsignalen, die Daten zu/von dem Slave-Gerät
steuern und als „interne Lese/Schreibe-Taktsignale" bezeichnet werden. Das
RCLK-Signal wird von dem Betrieb einer Empfangsverzögerungs- oder Phasenregelschleifenschaltung
(DLL/PLL) 61 und einem Schreib-Offset-Register 62 abgeleitet.
Während derzeit eine DLL oder eine PLL bevorzugt wird, kann jede Taktungsschaltung
verwendet werden, die in der Lage ist, das interne Lese/Schreibe-Taktsignal in Beziehung
zu dem Mastertaktsignal und dem Offset-Wert genau zu erzeugen. Das TCLK-Signal wird
von dem Betrieb einer übertragenden DLL/PLL-Schaltung 71 und einem Lese-Offset-Register
72 abgeleitet. Wie im Folgenden gesehen werden kann, werden sowohl RCLK
als auch TCLK bevorzugt in Bezug auf die CTM und/oder die CFM Signale abgeleitet,
es kann jedoch jedes Taktsignal als das Mastertaktsignal dienen.
Die Empfangs-DLL/PLL 61 und die Sende-DLL/PLL 71
können separat implementiert oder in einer einzigen taktenden Schaltung unter Verwendung
von gut verstandenen Design-Prinzipien implementiert werden. Beispielsweise illustriert
die US-Patentanmeldung 08/795,657 der Anmelderin verschiedene mögliche Implementierungen
einer DLL/PLL-Schaltung. Das US-Patent 5,614,855 offenbart auch eine kompetente
DLL-Schaltung.
Das Schreibe-Offset-Register 62 speichert einen Offset-Wert,
welcher während einer Systemkalibration oder -initialisierung etabliert wurde. Der
gespeicherte Offset-Wert definiert eine Zeitanpassung, wie benötigt, an RCLK in
Relation zu dem Master-Takt-Signal (CTM).
Beispielsweise werden die individuellen Zeiteigenschaften des Slaves
12a in Relation zu dem Master-Taktsignal während der Kalibrationsphase
des Betriebs, typischerweise während der Systeminitialisierung, ermittelt und angepasst.
Wenn die nicht angepasste Anwendung des Master-Taktsignals auf Slave 12a
zu einer Ausführung einer Schreibeoperation außerhalb der Mitte des Datenauges,
siehe 3B, führt, dann wird ein Offset-Wert entsprechend
dem Zeitfehler &dgr; (Vorsprung oder Rückstand) berechnet und im Schreibe-Offset-Register
62 gespeichert. Dieser Offset-Wert passt, wenn er der Empfangs-DLL/PLL-Schaltung
61 zugeführt wird, die Synchronisation des RCLK-Signals derart an, dass
Daten des Datenbusses 30 in der Mitte des Datenauges akzeptiert werden,
wodurch jegliche Schreiboperationszeitfehler kompensiert werden.
Diese Zeitfehlerkompensation wird mit dem Slave 12a individuell
vorgenommen, und wird durch die DLL/PLL erhalten, d.h. festgelegt. Das Master-Taktsignal
bleibt fixiert. Innerhalb des Masters 11 ist keine Zeitanpassung oder Kompensation
notwendig. Die Schreibzeit kann auf diese Weise individuell für jeden Slave in dem
System angepasst werden.
Das Gleiche gilt für die Lesezeit jedes Slave. Der in dem Lese-Offset-Register
gespeicherte Offset-Wert wird ähnlich definiert und angewendet, um die Lesezeit
des Slave 12a wie benötigt anzupassen.
Das Blockdiagramm der 6 illustriert die
Beziehung der Zeitanpassungsschaltung(en) zu den Empfängern und Sendern in einem
Slave-Gerät zu einem Master-Gerät und zu einem Master-Taktsignal. Die
7 bis 11 illustrieren
verschiedene Ausführungsformen dieser Schaltungen in zusätzlichem Detail. Jede dieser
verschiedenen Ausführungsformen ist in der Lage, einen Offset in einem Slave-Gerät
DLL/PLL ohne einen Verbrauch übermäßiger Energie oder ohne einen erheblichen Bereich
innerhalb des Slave-Gerätes zu besetzen, zur Verfügung zu stellen.
Die in der 7 dargestellte Schaltung nutzt
den vollen Vorteil von Signalen, die typischerweise in herkömmlichen DLL/PLL Schaltungen
sichtbar sind. In dem dargestellten Beispiel wird ein 45° Block der DLL/PLL
Referenzschleife zusammen mit einer 45° früheren Version des Ausgangstaktes
von dem Phasenmischer mit feiner Schleife (englisch = fine loop phase mixer) erhalten.
Diese Eingänge werden einer Vektor-Schaltung 77 zugeführt, welche zwei
zusätzliche 45° Blöcke und eine entsprechende Last aufweisen kann. Mit dieser
Anordnung gibt die Vektor-Schaltung 77 den ursprünglichen –45°
Eingang (C0), einen 0°-Ausgang aus dem ersten 45° Block (C1) und einen +45°
Ausgang des zweiten 45° Blocks (C2) aus. Der 0° Ausgang des ersten 45°
Blocks wird entweder als RCLK oder als TCLK durch eine Schaltung 76 mit
angepasster Verzögerung ausgegeben.
Die drei Ausgänge (C0, C1 und C2) der Vektorschaltung 77
werden einem Phasenmischer 75 zugeführt. Durch Phasenmischung der drei
Signale ist der Phasenmischer 75 in der Lage, ein Offset-Rückkopplungssignal
zu erzeugen, welches zwischen –45°C und +45°C variiert. Der tatsächliche
Wert dieses Offset-Rückkopplungssignals, welches als ein Rückkopplungssteuersignal
zu der DLL/PLL zurückgegeben wird, wird durch den in dem Offsetregister (62
oder 72) gespeicherten Offsetwert definiert. Der Offsetwert wird dem Phasenmischer
75 durch einen Digitalanalog (DAC)-Wandler 74 zugeführt. Auf diese
Weise wird eine Systemzeit unter Verwendung von herausgezogenen 45° Abschnitten
(englisch = 45° pull-out sections) der DLL/PLL Referenzschleife angepasst. Somit
ist diese Ausführungsform in der Lage, eine Zeit von RCLK/TCLK zwischen –45°C
und +45°C anzupassen. Von Interesse ist, dass die Zeitanpassung, die durch die
Schaltung der 7 zur Verfügung gestellt wird, in Grad
vorgenommen wird, so dass die Anpassungsfähigkeit in Relation zu der Systembetriebsfrequenz
skaliert wird.
Im Kontrast hierzu liefert die in 8 dargestellte
Schaltung eine Zeitanpassung durch Verändern einer absoluten Zeitverzögerung. Der
durch die Schaltung der 8 implementierte Ansatz kann
nicht mit der Betriebsfrequenz skaliert werden und ist empfindlicher gegenüber Variationen
im Herstellungsprozess, der Spannung und der Temperatur, ist jedoch einfach zu implementieren
und verwendet eine relativ kleine Vorrichtungsfläche.
In der Schaltung der 8 empfängt DLL/PLL
ein Taktsignal oder eine stabile Frequenzquelle zusätzlich zu dem CTM und CFM Signalen,
die einem Sendephasendetektor 88 bzw. einem Empfangsphasendetektor
89 zugeführt werden. (Alternativ können CTM oder CFM als die Frequenzquelle
verwendet werden.) Der Sendephasendetektor 88 empfängt auch das TCLK Rückkopplungs
(Fbk)-Signal. Der Empfangsphasendetektor 89 empfängt
auf ähnliche Weise das RCLK Rückkopplungs (Fbk)-Signal. Die RCLK und TCLK-Signale
werden jeweils durch eine entsprechende Taktpufferkette 84 und
85 ausgegeben.
Die Rückkopplungssignale RCLKFbk und TCKLFbk werden durch Hinzufügen
oder Subtrahieren von Lasten angepasst, und passen somit die Verzögerung einer Kette
von Invertierern 82 und 83 an, ausgewählt entsprechend dem in
Schreib-Offsetregister 62 bzw. im Lese-Offsetregister 72 gespeicherten
Offsetwert. Die individuellen Bits der gespeicherten Offsetwerte können konfiguriert
werden, um die aktivierenden Knoten und Invertierer entsprechender MOS Kapazitäten
zu treiben, um eine binär gewichtete variable Last in den Rückkopplungswegen von
RCLKFbk und TCLKFbk zu der DLL/PLL Schaltung zu bewirken.
Eine andere Technik, um einen Zeitoffset zur Verfügung zu stellen,
ist in der in der 9 dargestellten Schaltung illustriert,
welche bezüglich des Betriebs der in 8 dargestellten
Schaltung analog ist. Diese Technik verwendet binär gewichtete Stromquellen, um
einen Offsetstrom in dem Eingabe-(Eingangs-)Differentialpaar des PLL/DLL Phasendetektors
zu platzieren. Siehe 88 oder 89 in 8.
Dieser Offsetstrom verschiebt (engl. = "pre-tilts") den Eingangsvergleicher in eine
Richtung oder die andere. Diese Verschiebung verschiebt das Einstell/Haltefenster
durch Anpassen des wirksamen Schnittpunkts. Die in 9
dargestellte Schaltung benötigt eine sehr kleine Fläche auf der Slavevorrichtung,
sogar kleiner als die in 8 dargestellte Schaltung.
Es sollte jedoch festgehalten werden, dass der auf diese Weise erzeugte Offset wirklich
ein Spannungs-Offset ist, welcher nur dann einen entsprechenden Zeit-Offset erzeugt,
wenn er mit der Eingangsflankenrate multipliziert wird. Im Ergebnis unterliegt der
Offset nicht nur Prozess-, Spannungs- und Temperatur-Variationen, sondern auch einer
Variation der Eingangsflankenrate.
Gemäß 9 werden die Ausgänge von binär
gewichteten Stromquellen in einer ersten Kette von Stromquellen 91 im Knoten
A in Übereinstimmung mit einem ersten Satz (A) von Offsetbits (1 ... n) aufsummiert.
Auf ähnliche Weise werden die Ausgänge der binär gewichteten Stromquellen in einer
zweiten Kette von Stromquellen 93 im Knoten B in Übereinstimmung mit einem
zweiten Satz (B) von Offsetbits (1 ... n) aufsummiert. Die ersten und zweiten Sätze
von Offsetbits werden in einem Offsetregister gespeichert, wie etwa dem Lese-Offsetregister
72 oder dem Schreibe-Offsetregister 62 der 6
und 8.
Eine andere Technik zum Erzeugen eines konstanten (in Grad) Phasenoffsets
ist in der 10 dargestellt. Diese Technik verwendet
DLL verwendende Verzögerungselemente mit anpassbarer Versorgungsspannung. In dieser
Ausführungsform wird eine Referenzschleifensteuerspannung 100 durch eine
Rückkopplungsreferenzschleife 101 auf einen angemessenen Wert gesetzt,
so dass die Verzögerung einer Anzahl von statischen oder halbstatischen Gates 0–180°
der Taktperiode überspannt. Die Referenzschleife 101 empfängt ein Eingangstaktsignal
und arbeitet mit einem Phasendetektor 102 und einer Ladungspumpe
103. Dieses Rückkopplungsreferenzschleifenausgangssignal stellt die Versorgung
der statischen Gates derart ein, dass deren RC Zeitkonstante ein angemessener Bruchteil
des Taktzyklus ist.
Die Referenzschleifensteuerspannung (VC) 100 wird
verwendet, um die peripheren Schleifen Interpolatoren sowie einen Abschnitt des
Haupttakt (CLK)-Puffers 105 und des Rückkopplungstakt (FbkCLK)
104 zu treiben. Das FbkCLK Signal wird zusammen mit dem Eingangstaktsignal
dem Phasendetektor 110 zugeführt. Das Ausgangssignal des Phasendetektors
110 wird dem Interpolator 111 zugeführt, welcher auch ausgewählte
Phasensignale von der Referenzschleife 101 empfängt.
Durch die Tatsache, dass die Verzögerungs-gegenüber-Versorgungseigenschaften
der Referenzschleifenpuffer und der Haupt- und Rückkoppelungspuffer nahe beieinander
liegen, bleibt der durch Verändern der Ladekapazität des Rückkoppelungstaktpuffers
104 eingeführte Offset über Versorgungs- und Temperaturvariationen konstant.
Beispielsweise sei angenommen, dass der Taktzyklus TC und der benötigte
Offset T0 ist. Die Referenzschleife wird auf Vc gesetzt, so dass N·R·Cref
= TC/2 ist, und das Offset Steuerregister 106 wird die Verzögerung
des Rückkopplungstaktpuffers einstellen, dass sie sich von dem Hauptaktpuffer um
T0 = M·R·Cfb unterscheidet. Da Spannungs- und Temperaturvariationen
N, Cref, M, Cfb nicht beeinflussen, und da die Referenzschleife R derart anpasst
ist, dass N·R·Cref immer gleich TC/2 ist, folgt, dass das
Verhältnis T0 und TC in erster Näherung konstant bleibt.
Die bestimmte, in 10 dargestellte Implementierung
verwendet eine digital gesteuerte Kapazität, um die Verzögerung des Rückkopplungstaktpuffers
104 anzupassen. Das gleiche Ergebnis kann durch Verändern des Widerstands
der Puffer erhalten werden, d.h. durch Steuern deren Weite oder durch Multiplexen
zwischen zwei oder mehreren der Verzögerungspuffer. Beide dieser Alternativen weisen
die Eigenschaft auf, dass sie einen Offset erzeugen, der relativ zur Taktperiode
konstant bleibt.
Wie die in den 7 und 10
dargestellten beispielhaften Schaltungen, liefert die Schaltung der 11
eine Zeitanpassung in Grad. In der in. 11 dargestellten
Ausführungsform wird jedoch ein Voll-Offset-Interpolator (englisch = Fulloffsetinterpolator)
121 in Verbindung mit einem primären Interpolator 120 verwendet.
Beide Interpolatoren empfangen einen Satz von Eingang-/oder Referenzvektoren von
der DLL/PLL Referenzschleife, wie beispielsweise die in 7
dargestellten. Der primäre Interpolator 120 erzeugt ein Rückkoppelungssignal
(CLKFbk), basierend auf den Referenzvektoren und dem Ausgang des Zählers
123. Zähler 123 empfängt den Ausgang des Phasendetektors
124, welcher das CLKFbk Signal mit einem Referenztaktsignal, wie etwa CTM
oder CFM, vergleicht.
Der Ausgang des Zählers 123 wird auch zu einer Addiererschaltung
125 zugeführt, welche den im Offset-Register 126 gespeicherten
Offset-Wert (n bits) addiert oder subtrahiert. Das Additionsergebnis wird dann dem
Offset-Zähler 127 zugeführt, dessen Ausgang dem Offset-Interpolator
121 zugeführt wird. Basierend auf den Referenzvektoren von der DLL/PLL
Referenzschleife und dem Offset-Zählerausgang erzeugt der Offset-Interpolator
121 ein Taktsignal (CLK).
Somit verwendet der Offset-Interpolator 121 die gleichen
grundlegenden Eingangsvektoren, wie der primäre Interpolator 120, weist
jedoch einen von seinem Mischsteuerwert addierten oder subtrahierten Offset-Registerwert
auf. Der zum Schließen der Steuerschleife verwendete Rückkopplungstakt (CLKFbk)
kann entweder der Ausgang des primären Interpolators 120 (wie dargestellt)
sein, oder der des Offset-Interpolators 121, den Unterschied erkennend,
dass ein Ausgang einen dem des anderen entgegengesetzten (d.h. die Polarität ist
invertiert) Offset-Registerwert aufweist.
Die in 11 dargestellte Implementierung
liefert einen willkürlichen Phasen-Offset, d.h. einen in einem Bereich von vollen
360° liegenden. Da dieser Offset in Grad statt in absoluter Zeit (Pico-Sekunden
der Anpassung) zur Verfügung gestellt wird, ist der Offset bezüglich PVT und Frequenz
stabil. Seine Größe ist vergleichbar zu der der vorstehenden beispielhaften Implementierungen.
Bis zu diesem Punkt wurden Zeitfehler im Kontext von in Relation zu
Datenaugen verschobenen Lese/Schreibe-Taktsignalen beschrieben. Einen beliebigen
der oben beschriebenen Mechanismen verwendend, kann ein korrekt angepasstes Lese/Schreibe-Taktsignal
für jedes Slave-Gerät entwickelt werden, um Taktsignalgrenzwerte in Relation zu
den auf dem Datenbus erscheinenden Daten zu maximieren. Zum Zwecke der Klarheit
beschrieben die oben dargestellten Beispiele Daten, die an einer Flanke des Lese/Schreibe-Taktes
kommuniziert werden. Viele moderne Bussysteme kommunizieren Daten jedoch zwischen
einem Master und einem oder mehreren Slaves unter Verwendung von mehr als einer
Flanke des Taktsignals oder unter Verwendung von mehreren Takten mit verschiedenen
Phasen. Alternativ kommunizieren moderne Systeme mehrere Bits in Relation zu einer
einzelnen Taktflanke, verwenden jedoch verschiedene Phasen-Offsets. Die Verwendung
von mehreren Taktflanken oder mehreren Takten bei verschiedenen Phasen führt zu
einer zusätzlichen Quelle von Zeitfehlern in dem Bussystem, nämlich Tastverhältnisfehlern.
Dieses Problem ist für ein beispielhaftes System mit doppelter Datenrate (DDR) in
den 12A und 12B
dargestellt.
In einem DDR-System werden zwei Bits von Daten auf einem oder mehreren
Datenbusleitungen während jedes Taktzyklus übertragen. Diese beiden Bits werden
oft als „gerade" und „ungerade" Daten-Bits bezeichnet. Eine Übertragung
mit doppelter Datenrate kann auf vielen Wegen erreicht werden, es werden jedoch
zwei hier dargestellt. In 12A wird ein einzelner interner
Takt (tclk) verwendet, um die Dauer der Datenübertragung auf den Bus sowohl für
die geraden als auch die ungeraden Daten-Bits einzustellen. In dem Beispiel sind
gerade Daten auf den hohen Zustand des internen Taktes (tclk) bezogen, und die ungeraden
Daten sind auf den niedrigen Zustand von tclk bezogen. Das Tastverhältnis von tclk
ist als Thoch1/TZyklus definiert. Da die „Breite" des
geraden Daten-Bit-Übertragungszyklus (oder des Datenauges) durch die Dauer des hohen
Zustandes von tclk definiert ist, kann ein zweites Tastverhältnis oder ein „Datentastverhältnis"
definiert werden. Das Datentastverhältnis ist die Breite des geraden Datenauges
dividiert durch die Summe der Breiten der geraden und ungeraden Datenaugen, d.h.
Tgerade/(Tgerade + Tungerade). Es sollte festgehalten
werden, dass aufgrund von Signalflackern Tgerade + Tungerade
typischerweise kleiner ist als TZyklus. Das Datentastverhältnis wird
etwa gleich zu dem Takttastverhältnis sein, obwohl leichte Unterschiede vorhanden
sein können, wenn andere ungerade/gerade Offsets in dem System vorhanden sind. Ein
ähnliches DDR-System kann unter Verwendung eines einzigen Taktes konstruiert werden,
wobei die Breiten der Datenaugen (ungerade und gerade) durch die Schnittpunkte der
wahren und der komplementären Formen des Taktes bestimmt werden, statt durch die
steigenden und fallenden Flanken des Taktes.
12B zeigt ein analoges System, welches
zwei Taktsignale, tclkE und tclkO, verwendet. Die fallende
(oder steigende) Flanke von tclkO definiert den Anfang des ungeraden
Datenauges und die fallende (oder steigende) Flanke von tclkE
definiert den Beginn des geraden Datenauges. Für dieses System ist das Tastverhältnis
von Interesse tatsächlich durch den Unterschied zwischen diesen beiden fallenden
Flanken dividiert durch das Tastverhältnis definiert, statt durch das Tastverhältnis
jedes Taktsignals. Das Datentastverhältnis kann wie oben definiert werden.
Die Zeitdiagramme der 12A und
12B sind mit Bezug auf einen Datenübertragungstakt
(tclk) gezeichnet. Ähnliche Diagramm können mit Bezug auf einen Datenempfangstakt
(rclk) gezeichnet werden. Wenn sie mit Bezug auf den Datenempfangstakt gezeichnet
werden, sind jedoch die rechte Hälfte des geraden Datenauges und die linke Hälfte
des ungeraden Datenauges von dem hohen Zustand von rclk umfasst. Wie bei dem oben
dargestellten Übertragungstaktbeispiel kann ein Differentialempfangstakt mit einer
an den Schnittpunkten bestimmten Zeit oder zwei asymmetrische Takte mit fallenden
(steigenden) Flanken verwendet werden, um die notwendigen Datenempfangsaugen zu
etablieren.
Die vorliegende Erfindung kann verwendet werden, um ein Tastverhältnis
oder Tastverhältnisse in Relation zu einem Sende- und/oder einem Empfangstakt korrekt
anzupassen. Darüber hinaus hat die vorliegende Erfindung eine Anwendung über DDR-Systeme
hinaus. Beispielsweise kann die vorliegende Erfindung zur Verwendung in einem Vierfachdaten
(englisch = Quad Data Rate) (QDR)-System angepasst werden, in welchem eine Synchronisation
zum Datenaustausch durch vier um 90° beabstandete Takte eingestellt wird. In
QDR-Systemen befinden sich tatsächlich vier verschiedene Datentastverhältnisse,
wobei jedes Datentastverhältnis als die Breite eines Auges für ein vorgegebenes
Daten-Bit dividiert durch die Breite aller Datenaugen definiert ist. Der Durchschnittsfachmann
der Technik wird sehen, dass die folgenden Prinzipien auf jedes N-Datenratensystem
angewendet werden können, wobei N eine ganze Zahl ist.
Unabhängig von der tatsächlichen Zahl von Taktsignalen oder -flanken
ist der gesamte Zeitgrenzwert von dem Bussystem durch die Breite des kleinsten,
durch ein Tastverhältnis definierten Datenauges, beschränkt. Somit sollte das Datentastverhältnis
für maximale Zeitgrenzwerte so nah wie möglich bei 1/N liegen, wobei N die Anzahl
der Tastverhältnis-definierenden Taktsignale oder -flanken in dem System ist.
Die variablen Auswirkungen, die oben beschrieben wurden, kombinieren
sich jedoch zu schiefen Tastverhältnisdatenaugen. Offsets in dem Systemtakt oder
in den internen Takterzeugungsschaltungen wird zu Tastverhältniszeitfehlern führen,
welche Zeitgrenzwerte reduzieren und die Anforderungen an die Zeit des Gesamtsystems
komprimieren. Somit ist eine Anpassung der fehlerhafte Tast- verhältnisse definierenden
Taktsignale notwendig, um eine Leistungsfähigkeit des Systembusses zu optimieren.
Eine Anpassung des Lesetastverhältnisses und/oder eine Anpassung des
Schreibtastverhältnisses kann in einer Weise erreicht werden, ähnlich zu der oben
in Bezug auf Lese/Schreibe-Takte diskutierten Weise. Beispielsweise kann, wie in
13 dargestellt, ein Schreibetastverhältnis-Offset-Register
63 und/oder ein Lesetastverhältnisoffsetregister 73 zu der in
Bezug auf die 6 dargestellten und beschriebenen Struktur
hinzugefügt werden. Der Empfangs-DLL/PLL-Puffer 61 und der Sende-DLL/PLL-Puffer
71 werden modifiziert, um die in den Registern 63 und
73 gespeicherten Lese/Schreibetastverhältnis-Offset-Werte zu akzeptieren
und zu verwenden. Diese Lese/Schreibetastverhältnis-Offset-Werte werden verwendet,
um die Tastverhältnisse der durch diese Puffer erzeugten Taktsignale anzupassen.
Eine Tastverhältnisanpassung benötigt nicht notwendigerweise eine
Verzögerung des aktiven Taktes, wie sie durch DLL/PLL zur Verfügung gestellt wird.
Eine Tastverhältnisanpassung kann genauso auf ein System angewendet werden, in dem
Verschiebungen zwischen internen und externen Zeitpunkten außerhalb des Slave-Gerätes,
außerhalb des Masters oder außerhalb sowohl des Masters als auch des Slave-Gerätes
kompensiert werden.
Mit anderen Worten kann eine Tastverhältnisanpassung nicht nur durch
Verwendung eines auf individuellen Slave-Geräten angeordneten Offset-Registers bewerkstelligt
werden, sondern auch durch Verwendung von einem oder mehreren globalen Offset-Registern,
die sich in dem Master befinden. Ein einzelner „mittlerer" Tastverhältnis-Offset-Wert
kann in dem globalen Register gespeichert werden und zu den individuellen Slave-Geräten
kommuniziert werden, oder es kann eine Mehrzahl von individualisierten Tastverhältnis-Offset-Werten
auf einer individuellen Basis gespeichert und an entsprechende Slave-Geräte oder
Gruppen von Slave-Geräten kommuniziert werden. Das eine oder die mehreren Tastverhältnis-Offset-Register
können alternativ außerhalb des Masters oder der Slave-Vorrichtung gespeichert werden.
Eine Ausführungsform einer Tastverhältnisanpassungsschaltung ist in
14 dargestellt. Diese Schaltung, die sich bevorzugt
innerhalb der DLL/PLL Pufferschaltung befindet, enthält einen Digitalanalogwandler
(DAC) 140 mit Strommodusausgang, der die Tastverhältnisanpassungswerte
von dem Lese/Schreibetastverhältnis-Offset-Register (63/73) empfängt.
In Antwort auf den empfangenen Tastverhältnisanpassungswert erzeugt DAC
140 zwei Stromsignale IOFFSET und IOFFSET, welche
der Tastverhältnisanpassungsschaltung 141 zugeführt werden.
In einem Nominalfall, in dem keine Tastverhältnisanpassung benötigt
wird, sind IOFFSET und IOFFSET gleich und das Differentialeingangssignal
gelangt unverändert durch die Tastverhältnisanpassungsschaltung 141, um
ein Ausgangssignal clkout zu bilden. Das Signal clkout wird dann durch eine Differential-zu-CMOS-Wandlerschaltung
142 umgewandelt, um ein Takt mit einem Ende zur Verwendung in den Empfänger-
oder Sendeschaltungen zu bilden. Alternativ kann die Differential-zu-CMOS-Wandlerschaltung
142 ersetzt werden durch einen Differential-Puffer/Verstärker, welcher
ein Differential-Taktsignal mit angemessener Stärke erzeugt, um die Empfänger- oder
Sendeschaltungen zu treiben.
Wenn etwas Unterschied in den Stromsignalen IOFFSET und
IOFFSET vorhanden ist, dann werden die Differentialwellenformen clkout
und clkout relativ zueinander verschoben. Diese Verschiebung in der Beziehung wird
deren Differentialtastverhältnis verändern. Wie derzeit bevorzugt, wird das Verhältnis
(IOFFSET, IOFFSET)/IOUT relativ konstant sein, was zu einer
besseren Unabhängigkeit von Spannungs- und Temperaturdrifts führt. Die Tastverhältnisveränderung
wird sich in dem durch Differential-zu-CMOS-Wandler 142 erzeugten Ausgangstaktsignal
(CLK) wiederspiegeln.
Die obige Schaltung führt eine Tastverhältnisanpassung in der Art
einer „offenen Schleife" durch. Das bedeutet, dass kein Rückkoppelmechanismus
zwischen dem korrigierten Taktsignal und der Tastverhältnisanpassungsschaltung existiert.
Demnach muss das System entweder einen ausreichenden Zeitgrenzwert aufweisen, um
nach einem einzigen Kalibrationszyklus während einer Initialisierung zu arbeiten,
oder das System muss periodische Rekalibrierungen durchführen.
Eine derzeit bevorzugte Ausführungsform der Tastverhältnisanpassungsschaltung
141 der 14 ist in der 15
dargestellt. Die in 15 dargestellte Schaltung empfängt
IOFFSET, IOFFSET, IOUT, clkin und clkin als Eingänge
und erzeugt clkout und clkout als Ausgänge. Beziehungen zwischen diesen Signalen
sind in der 16 weiter dargestellt.
Eine weitere beispielhafte Ausführungsform der Tastverhältnisanpassungsschaltung
ist in 17 dargestellt. Die der in 15
ähnliche Schaltung enthält einen DAC 170, der die Tastverhältnis-Offset-Werte
von dem Tastverhältnis-Offset-Register 63/73 empfängt, und eine
Tastverhältnis-Anpassungsschaltung 172, die clkin und clkin empfängt und
clkout und clkout an den Differential-zu-CMOS-Wandler 173 ausgibt, welcher
das Ausgangssignal (CLK) erzeugt.
Diese Ausführungsform enthält jedoch weiterhin einen Rückkoppelweg,
gebildet durch den Tastverhältnisintegrator 171 und den CMOS-zu-Differential-Wandler
174. Eine Ausführungsform eines Tastverhältnisintegrators 171
ist in der 18 dargestellt.
Zusätzlich zu IOFFSET und IOFFSET empfängt der
Tastverhältnisintegrator 171 Differentialrückkoppeltaktsignale FBin und
FBin. Die Differentialrückkoppeltaktsignale FBin und FBin steuern die Vorspannung
(Io) 180 unter Verwendung des Differentialpaars 181a/b. Wenn der
Rückkopplungstakt ein 50% Tastverhältnis aufweist, dann werden diese beiden Stromsignale
gleich sein und es wird sich die Spannungsdifferenz an den Knoten co und co nicht
verändern. Wenn jedoch das Tastverhältnis nicht 50% beträgt, dann wird eine Spannungsdifferenz
ansteigen oder fallen, wenn der Strom in Kapazitäten 182a/b integriert
wird.
Der Ausgang dieses in 18 dargestellten
Tastverhältnisintegrators wird der Tastverhältnisanpassungsschaltung der
9 zugeführt, wo er Strom in dem Differentialpaar
190a/b steuert. Wie bei der in 15 beschriebenen
Tastverhältnisanpassungsschaltung wird der Unterschied in Strömen Ia und Ib die
Ströme clkout und clkout gegeneinander verschieben, wodurch sich der Tastverhältnis
verändert.
Prinzipiell sollte dieses Tastverhältnisanpassungsschema das gewünschte
Taktsignaltastverhältnis ohne den Effekt erzeugen, dass der Tastverhältnisanpassungswert
von dem Tastverhältnis-Offset-Register zugeführt wird. In der Praxis werden jedoch
Geräte Fehlanpassungen in dem Tastverhältnisintegrator (171 in
17 und in 18) und in dem
CMOS-zu-Diferential-Wandler (174 in 17) nicht
herauskompensiert, so dass der optimale Anpassungswert für das Tastverhältnis-Offset-Register
manchmal nicht Null sein wird. Stromspiegel 185a/b der 18
fügen den Differential-Offset-Strom IOFFSET zu den Integrationsknoten
co und co hinzu. Dies wird das System veranlassen, ein Gleichgewicht für ein Tastverhältnis
FBin zu erreichen, welches nicht 50% beträgt. Somit kann, durch
Verändern von IOFFSET basierend auf dem in dem Tastverhältnis-Offset-Register
(63/73) gespeicherten Tastverhältnisanpassungswert das Tastverhältniss
des Taktes (CLK) korrekt angepasst werden. Jeder Wert für IOFFSET und
IOFFSET wird eine Kompensierungstastverhältnisanpassung auf FBin und
FBin benötigen, welche durch die durch die Tastverhältnisanpassungsschaltung
172 gebildete Rückkopplungsschleife, den Differential-zu-CMOS-Wandler
173, den CMOS-zu-Differential-Wandler 174 und den Tastverhältnisintegrator
171 durchzuführen ist. Wie in der in 15 dargestellten
Ausführungsform ist das Verhältnis von (IOFFSET, IOFFSET)/Io
relativ konstant.
Die durch die beispielhaften Schaltungen von oben gelehrten Richtlinien
und Relationen können allgemein auf Systeme mit N Takten erzeugenden N-Datenratensignalen
erweitert und angewendet werden. Diese Anwendung ist in 20
als Konzept dargestellt, in welchem eine Mehrzahl von Tastverhältnis-Offset-Werten
201 (a ... n) jeweils den Tastverhältnisanpassungsschaltungen
202 (a ... n) zugeführt werden, um Eingangstaktsignale clkin (a ... n)
korrekt anzupassen. In dieser Ausführungsform wird jedes Taktsignal durch einen
Tastverhältnis-Offset verzögert, es kann jedoch ein einzelner durchschnittlicher
Tastverhältnis-Offset-Wert jeder Tastverhältnisanpassungsschaltung zugeführt werden.
In einer bevorzugten Implementierung enthält jede Tastverhältnisanpassungsschaltung
202 in 20 die in 21
dargestellte Schaltung. Das Verhalten der Schaltung ist analog zu der in
8 dargestellten Schaltung. In der Schaltung der
21 wird die Taktsignalverzögerung durch Hinzufügen
oder Subtrahieren von Lasten von einer Kette von Invertern 210 angepasst,
welche entsprechend dem in dem Tastverhältnis-Offset-Wertregister 211 gespeicherten
Tastverhältnis-Offset-Wert ausgewählt werden. Durch Anpassen der relativen Verzögerungen
der N Verzögerungsanpassungsschaltungen 202 kann die Größe der N-Datenaugen
individuell definiert werden.
Eine Variation dieses Schemas würde sein, statt N N – 1 Puffer
zu verwenden, wobei die Größe des zu dem N-ten Takt korrespondierenden N-ten Datenauge
durch Bewegen aller anderen Datenaugen relativ zu diesem letzten Takt definiert
ist. In einer anderen verwandten Ausführungsform würden anstelle der Inverter der
8 die konstanten Verzögerungspuffer der 10
verwendet werden. Dieses Schema würde den Vorteil haben, dass die Verzögerungsanpassungen
die Umgebungsbedingungen nicht verändern würden.
In noch einer weiteren Ausführungsform, gezeichnet in Bezug auf ein
DDR-System, wird die in 22 dargestellte Schaltung verwendet,
um angemessene Verzögerungsanpassungen zur Verfügung zu stellen. Die Schaltung der
22 ist identisch zu der der 17,
außer dass der DAC und der Tastverhältnis-Offset-Anschluss in dem Tastverhältnisintegrator
ersetzt wurden. Der Offset wird durch Verschieben des Differentialrückkopplungstaktes
FBin1 unter Verwendung in der Verzögerungsanpassungsschaltungen 220a/b
zur Verfügung gestellt, die von Registern 221a/b Tastverhältnisanpassungswerte
erhalten, bevor er als FBin2 in den Tastverhältnisintegrator 171 eingegeben
wird. Die Verzögerungsanpassungsschaltungen 220a/b können ähnlich zu den
in den 8 oder 10
dargestellten Schaltungen sein.
Die in den 20 und 21
dargestellte Ausführungsform ist ausgelegt, um in einem Slave-Gerät eine Tastverhältnisanpassung
zu bewirken. Es ist jedoch auch möglich, das Tastverhältnis des Masters unter Verwendung
von ähnlichen Schemata und Schaltungen anzupassen. Natürlich werden Schaltungen,
die sich im Master befinden, um eine Tastverhältnisanpassung zu bewirken, aus einem
einzigen Tastverhältnisanpassungsregister bestehen, welches einen einzigen „mittleren"
Tastverhältnisanpassungswert speichert, oder aus einer Vielzahl von Registern, die
für jedes entsprechende Slave-Gerät Tastverhältnisanpassungswerte speichern. In
der letzteren Implementierung wählt der Master den angemessenen Tastverhältnisanpassungswert
auf der Basis des Slave-Gerätes aus, welche Daten eingeschrieben hat oder von welcher
Daten ausgelesen werden.
23 illustriert eine weitere Ausführungsform
einer Tastverhältnisanpassungsschaltung, die mehrere Takte korrigiert. In diesem
Schema werden die individuellen Takte aus unterschiedlich Phasen-Taktsignalen (ϕ1,
ϕ2, ϕ3), die von dem spannungsgesteuerten Oszillator (VCO) oder von der
Verzögerungsleitung 230 kommen, erzeugt. (Jede vernünftige Anzahl von Phasen-verschobenen
Taktsignalen kann verwendet werden, es sind jedoch drei in diesem Beispiel dargestellt).
Basierend auf den in den Tastverhältnisregistern 233 (a ... n) gespeicherten
Tastverhältnisanpassungswerten passen Phasenauswähler/Interpolatoren 232
(a ... n) die genaue Synchronisation der Ausgangstaktflanken in Relation zu einem
Nominalwert an. Eine Bewegung dieser Taktsignalflanken verändert die Größen der
entsprechenden Datenaugen. In einer anderen Variation dieses Schemas wird die Phasenauswähler-/Interpolatoroperation
sowohl durch den Tastverhältnisanpassungswert als auch durch das Gesamtphasenanpassungsregister
gesteuert, welches verwendet wird, um die Phasen aller internen Takte auf gewünschte
Beziehungen bezüglich eines Referenztaktes zu setzen.
Zusätzlich zu Zeitfehlern werden Bussysteme oft von Spannungsfehlern
geplagt. Spannungsfehler und deren Auswirkungen wurden in der Diskussion der
4A und 4B oben diskutiert.
In einem zweiten allgemeinen Aspekt liefert die vorliegende Erfindung
ein System und ein Verfahren, durch welches individuelle Slave-Vorrichtungen die
Spannung von von dem Datenbus empfangenen Daten anpassen oder kompensieren und/oder
die Spannung/den Strom von auf den Datenbus gegebenen Daten anpassen. Analog zu
den oben beschriebenen Zeitanpassungstechniken findet eine Spannungsanpassung durch
die einzelnen Slave-Geräte statt.
Während einer Spannungsanpassung wird der Ausgangsspannungshub genau
eingestellt und es wird jeder Spannungsoffset in den empfangenen Daten kompensiert.
Diese beiden Funktionen können auf vielen bestimmten Wegen erreicht werden. Grundsätzlich
werden, nachdem der Ausgangshub des Masters und die Eingangspegel optimal etabliert
sind, die sich ergebenden Signalpegel als Referenz betrachtet, und es werden sowohl
Slave-Eingangsoffsets als auch Spannung/Strom am Slave-Ausgang angepasst, um diesen
Referenzen zu entsprechen.
24 illustriert einen grundsätzlichen
Ansatz einer Spannungsanpassung, in welcher von dem Datenbus 30 an dem
vorderen Ende eines Empfängers 60 (von dem nur ein Teil dargestellt ist)
empfangene Signale einem differentialkompensierenden Verstärker 240 eingegeben
werden. Die Schreibedatenspannungspegel werden mit Vref verglichen und in Übereinstimmung
mit einem in einer Spannungsoffsetschaltung 241 gespeicherten Schreibespannungsoffsetwert
angepasst. Auf ähnliche Weise wird ein Ausgangsstrom eines Treibers 242
in Übereinstimmung mit einem in einer Stromsteuerschaltung 243 gespeicherten
Lesespannungsoffsetwert angepasst. Dieses Beispiel legt ein Slave-Ausgangsschema
basierend auf gesteuerten Stromquellenausgangstreibern zugrunde, lässt sich jedoch
ohne weiteres an andere Formen von Ausgangstreibern anpassen.
In dem in 24 dargestellten Ansatz enthält
der Master eine extensivere Logik und Steuerschaltung, die benötigt wird, um den
Ausgangsstrompegel und einen Eingangsspannungsoffset für jeden Slave in dem System
zu kalibrieren. Da typischerweise in einem System mehr Slave als Master vorhanden
sind, wird die Auswirkung der Spannungskalibrations- und Anpassungskomponenten auf
das Gesamtsystem minimiert. Darüber hinaus wird der Slave-Matritzenraum erhalten.
Die in den 7 bis 11
dargestellten beispielhaften Schaltungen illustrieren verschiedene Ausführungsformen,
in denen eine oder mehrere Offsetwerte verwendet werden, um eine Lese/Schreibesynchronisation
auf das Zentrum eines vorbestimmten Datenauges anzupassen. Durch Anpassung einer
Lese/Schreibesynchronisation auf der Basis jedes einzelnen Slaves können die Auswirkungen
an jedem Slave individuell und unabhängig voneinander kompensiert werden. Darüber
hinaus illustrieren die in den 13 bis 23
dargestellten beispielhaften Schaltungen verschiedene Ausführungsformen, in denen
eine oder mehrere Offsetwerte verwendet werden, um Lese/Schreibetaktarbeitszyklen
anzupassen. Um Lese/Schreibezeit (einschließlich eines Tastverhältnis) auf der Basis
jedes einzelnen Slaves anzupassen, müssen der eine oder die mehreren Offsetwerte
bestimmt und für jedes Slave-Gerät gespeichert werden.
Der Prozess des Bestimmens und Speicherns der Slave-Offsetwerte oder
des Slave-Offsetwertes wird während der Kalibrationsphase des Systembetriebs durchgeführt.
Die Kalibrationsphase tritt typischerweise während der Systeminitialisierung auf,
kann jedoch auch auf andere Weise ausgeführt werden. Beispielsweise kann Kalibration
periodisch oder nach Erfassung einer bestimmten Grenzzahl von Bitfehlern durchgeführt
werden. Die tatsächliche Bestimmung der Zeitoffsetwerte kann unter Verwendung vieler
verschiedener Techniken durchgeführt werden. Einige Techniken sind unten beschrieben.
Eine Technik wird als 90° Kalibration bezeichnet und benötigt
die Verwendung einer DLL/PLL auf dem Master, die in der Lage ist, seinen Taktausgang
um 90° zu verschieben. Zusammen illustrieren das Blockdiagramm der
25 und das Zeitdiagramm der 26
diese Technik, welche verwendet wird, um das Master-Sende-zu-Slave oder den Schreibe-Weg
zu kalibrieren.
In 25 weist Master 11 eine Sende-DLL/PLL
mit einem normalen (0°) Ausgangstaktsignal und einem Kalibrations-verschobenen
(90°) internen Sendetaktsignal auf. Während der Kalibrationsphase wählt Master
11 den Kalibrationsverschobenen Ausgangstakt und sendet dann eine Datensequenz
an den Empfänger 60 oder die Empfänger 60 in Slave 12a
(einige Überlegungen für eine korrekte Kalibrationsphasen-Datensequenz werden unten
diskutiert). Bei einem dem normalen Ausgangstakt von der Sende-DLL/PLL des Masters
11 entsprechenden vorgegebenen Datenauge würde ein korrekt zentrierter
Slave-Empfangstakt in der Mitte des Datenauges übergehen. Siehe
Signal A in der 26. Da das Kalibrations-verschobene
interne Sendetaktsignal Daten um 90° verschiebt, wird nun ein zentrierter Übergang
des Slave-Empfangstaktes „A" in der Mitte der Datenübergangsregion anstelle
der Mitte des Datenauges stattfinden. In Fällen, in denen der Slave Empfangstakt
zu früh kommt, Signal „ A' in 26, oder zu spät,
Signal A'' in 26, wird der Übergang nicht in der Mitte
des Datenübergangs stattfinden. Unter der Annahme, dass die Datenstruktur, die während
der Kalibration verwendet wird, eine ausgeglichene Anzahl von 0 auf 1 und 1 auf
0 Übergängen aufweist, dann erlaubt dieses Resultat einem Slave-Empfänger
60 als ein Phasendetektor zu arbeiten.
Wenn beispielsweise ein Datenübergang von einer „0" auf eine
„1" auf der Datenbusleitung in den Slave-Empfänger angenommen wird, dann
würde der frühauftretende Slave-Empfänger-Taktübergang A' ständig einen Ausgang
„0" erzeugen. Auf ähnliche Weise würde der spätauftretende Slave-Empfänger-Taktübergang
A'' ständig einen Ausgang „1" erzeugen. Somit kann der Datenausgang durch
den Slaveempfänger verwendet werden, um während der Kalibrationsphase Phaseninformation
zu bestimmen. Die aus diesem Kalibrationsprozess abgeleiteten Slave-Empfängerdaten
können in dem Slave gespeichert werden und während einer nachfolgenden Leseoperation
an den Master zurückgegeben werden.
Die vorstehenden Fähigkeit können durch Systemdesigner verwendet werden,
um einen angemessenen Schreibe-Offsetwert zu definieren. Viele verschiedene Algorithmen
können im Rahmen einer routinemäßigen Designauswahl implementiert werden, was zu
einem „zentrierenden" Schreibeoffsetwert in einer minimalen Zeit und mit
minimalen Ressourcen führt. Beispielsweise kann ein einfacher einzelner Datenübergang
vom Master 11 zu dem Slave 12a in einem großen Datenblock überschrieben
werden, beispielsweise 128 Bit, die aus 64 Einsen, gefolgt von 64 Nullen, bestehen.
Diese Bits werden in dem Slave gespeichert und zu dem Master zurückgelesen. Der
Master bestimmt, ob in dem Datenblock ein Eins-auf-Null-Übergang aufgetreten ist
und verwendet diese Information, um den Schreib-Offset-Wert zu inkrementieren oder
zu dekrementieren. Diese Schrittsequenz setzt sich fort, bis mit jeder Iteration,
an welchem Punkt ein zentrierender Offset-Wert erhalten wurde, der Offset-Wert zwischen
„0" und „1" vor- und zurückzittert, (d.h. „hin- und herspringt"
(englisch = toggles)).
Konzeptuell erweitert die vorstehende Technik herkömmliche DLL/PLL
Regelschleifentechniken, um Zeit-Offset-Steuerung zu implementieren, indem unter
Verwendung der Slave-Empfänger als Phasendetektoren eine verteilte Pseudo-DLL aufgebaut
wird. Unter der Annahme eines 90° verschiebbaren DLL-Taktes innerhalb des Masters
ist somit die zusätzlich zum Implementieren von Zeitkalibration notwendige Hardware
minimal. Wenn einmal der Ausgang der Datenempfänger oder des Datenempfängers hin-
und herspringt, dann kann die verteilte Schleife festgelegt werden (englisch = locked)
und die Synchronisation des Masterausgangstaktes kann auf normal (0°) zurückgesetzt
werden.
Ein ähnlicher Ansatz für eine Slave-Sendetaktkalibration (d.h. eine
Lese-Offset-Wert-Bestimmung) kann aus dem Vorstehenden ohne weiteres abgeleitet
werden. In diesem Ansatz wird der interne Empfängertakt um 90° verschoben und
die Masterdatenempfänger dienen als Phasendetektoren. Der Prozess des Übertragens
eines Datenblocks, nach Anzeigedatenübergängen Ausschau haltend (englisch: looking
for tell-tale data transistions), des Anpassens des Offset-Werts und des Wiederholens
bis zur Bestimmung des optimalen Lese-Offset-Werts wird wie oben erklärt durchgeführt,
außer der Überlegung, dass der Datenfluss zwischen den beiden Prozessen umgekehrt
wird. 27 illustriert diesen Ansatz und das Vorhandensein
einer Empfänger-DLL/PLL 145 mit einem Ausgangstakt, welcher um 90°
verschiebbar ist.
Die in den 25 und 27
dargestellten Schaltungen erfordern, dass die Sende- und Empfangs-DLL/PLL auf dem
Master Schaltungen aufweisen, die die um 0° und 90° verschobenen Taktsignale
zur Verfügung stellen. Derartige flächenraubende Schaltungen werden jedoch nicht
bei den zahlreicheren Slave-Geräten benötigt, und derartige phasenverschobene Takte
sind in vielen DLL/PLL-Entwürfen leicht erhältlich. Somit erfüllen diese Konfigurationen
die Zwecke der vorliegenden Erfindung mit reduzierten Systemgesamtkosten.
Ein anderer Ansatz zur Zeitkalibration verwendet ein „Abtastfenster",
wie es in 28 dargestellt ist, um einen angemessenen
Offsetwert für Slave-Lese-oder-Schreibezeit zu bestimmen. Während der Kalibration
werden die Offsetinterpolatoren über einem Datenfenster abgetastet, wenn der Master
für einen Übergang von einer zulässigen Region zu einer unzulässigen Region, das
heißt einem Datenübergang von 0 bis 1 oder von 1 auf 0, sucht. Ein Weg, um diese
Abtastwirkung zu erreichen ist es, ein Register in dem Master (oder dem Slave) -DLL/PLL
mit einem Bereich von Offsetwerten zur Verfügung zu stellen. Durch Hindurchfahren
durch den Bereich von Offsetwerten und Anwenden jedes Wertes auf den Lese/Schreibetakt,
wird sich der Datenübergang in Relation zu dem Datenauge bewegen. Ein Offsetwert
wird die voreilende Flanke des Datenauges finden, und ein anderer
Offsetwert wird die nacheilende Flanke des Datenauges finden. Nachdem der Master
beide Flanken des zulässigen Fensters des Datenauges lokalisiert hat und die beiden
entsprechenden Offsetwerte identifiziert hat, kann der Master dann die beiden Offsetwerte
nehmen und auf der Hälfte zwischen diesen interpolieren, um die mittige Position
für den Lese/Schreibetakt relativ zu dem Datenauge zu finden.
Wenn einmal ein angemessener Offsetwert bestimmt wurde, wird er in
das entsprechende Offsetregister in dem Slave geschrieben. Alternativ kann das Offsetabtasten
durch Offsetinterpolation in der Slave-Vorrichtung durchgeführt werden. Der erste
Ansatz des Lokalisierens der benötigten Interpolatoren in dem Master spart jedoch
Gesamtfläche in dem System.
Wie in 24 dargestellt, werden einer oder
mehrere Offsetwerte verwendet, um Slave-Lese/Schreibe-Spannungen in Relation zu
Vref anzupassen. Durch Anpassen der Lese/Schreibe-Spannungen durch einen Slave nach
dem anderen wird Vref als eine Referenz erhalten, und es werden Spannungseffekte
auf einem lokalen Niveau kompensiert, statt ein Kompensationsschema auf Systemniveau
zu erzwingen. Um die Lese/Schreibe-Spannungen durch einen Slave nach dem anderen
anzupassen, muss der eine oder müssen die mehreren Offsetwerte bestimmt und in der
Spannungsoffsetschaltung und der Stromsteuerschaltung der 24
oder in äquivalenten Schaltungen gespeichert werden.
Der Prozess des Bestimmens und Speicherns der Spannungsoffsetwerte
oder des Spannungsoffsetwertes wird wie der Prozess zum Bestimmen und Speichern
der Zeitoffsetwerte bzw. des Zeitoffsetwertes während der Kalibrationsphase durchgeführt.
Die tatsächliche Bestimmung der Spannungsoffsetwerte kann unter Verwendung vieler
verschiedener Techniken durchgeführt werden. Einige Techniken werden unten beschrieben.
Die erste Technik zum Kalibrieren von Slave-Spannungen, das heißt
Bestimmen der Spannungsoffsetwerte, ist in den 29 und
30 dargestellt. Analog zu dem Zeitkalibrationsabtastfensteransatz
verwendet diese Technik ein Abtastfenster, um Slave-Spannungen zu kalibrieren. Das
bedeutet, dass der Abtastfensterrückkopplungsmechanismus auf Spannungen anstelle
von auf Zeit angewendet wird.
Die in 29 dargestellte Schaltung nimmt
eine Spannungskalibrierung an, die auf den Eingangs-(oder Schreibe-)Spannungshub
für Daten gerichtet ist, die von dem Master zu dem Slave gesendet wurden. Wenn Daten
während einer Kalibration von dem Master 11 in einen Empfänger in einem
Slave 12a geschrieben werden, dann wird deren Spannungspegel in
290 mit einem extern zugeführten Vref Signal verglichen. Das Vergleichsergebnis
wird durch eine Steuerlogik 291, ein Vref Register 292 und einen
DAC 293 zu einem Offsetanschluss eines stabilisierenden (1X)-Verstärkers
294 zurückgekoppelt. Die Natur eines Knotens „a" in 29
wird durch die Natur des Vref Signals bestimmt. Wenn Vref extern erzeugt wird, oder
ein anderweitig spannungsgesteuertes Signal ist, dann wird Knoten „a" eine
Addiererschaltung oder andere Mittel zum Kombinieren der beiden Signalwege umfassen.
Alternativ kann, wenn Vref dem Slave-Gerät durch den in einem Offsetregister gespeicherten
Wert intern erzeugt wird, eine Addiererschaltung weggelassen werden.
Wie bei dem oben beschriebenen Abtastfensteransatz werden obere und
untere zulässige/unzulässige Übergangspunkte identifiziert. Auf dem Slave wird Vref
in Überstimmung mit einem finalen, auf halbem Wege zwischen den Offsetwerten, die
zu den oberen und unteren zulässigen/unzulässigen Übergangspunkten korrespondieren,
angeordneten Anpassungsoffsetwert eingestellt.
In einer anderen Technik wird eine Schreibespannungskalibration durch
die Verwendung von in den Slave-Empfängern oder in dem Slave-Empfänger lokalisierten
Spannungsoffsetlöschungsschleifen bewerkstelligt. Diese Technik ist in der
31 dargestellt, in welchem ein Master 11 tatsächlich
die Vref der Slaves antreibt. Master 11 enthält einen Schalter
310 zwischen einem nominalen Vref Erzeuger 311 und einer Vo1 Spannungsquelle
312. Während der Schreibespannungskalibration schaltet Master
11 den Slave Vref auf Vo1 und treibt gleichzeitig Vo1 auf seine Ausgangstreiber
315.
Slave 12a wird in einen Schreibeoffsetkalibrationsmodus gesetzt,
in dem jeder Slave-Empfänger das empfangene Datensignal bei Vo1 mit dem „Master"-Vo1
Signal vergleicht, welches durch die Vref Signalleitung zugeführt wird. Dieser Vergleich
findet in der Spannungslöschungsschleife 318 statt, welche aus einem als
ein Vergleicher 317 wirkenden Slave-Empfänger und einer Offsetlöschungsschaltung
319 besteht. Spannungsoffsetwerte werden durch eine Offsetlöschungsschaltung
319 des Slave-Empfängers so lange zugeführt (addiert oder subtrahiert),
bis sein Ausgang hin- und herspringt, an welchem Punkt die Offsetschleife festgehalten
wird. Auf diese Weise werden Offsets, die von Herstellungsdefekten in dem Slave-Empfänger
und/oder durch I·R Abfälle, die in dem Datenbus vorhanden sind, verursacht
werden, eliminiert.
In einer anderen Anpassung der in 31
dargestellten Schaltung wird ein binärer Masterstromsteuerwert einfach um ein Bit
nach rechts verschoben auf die Hälfte seines Wertes. Der resultierenden Wert wird
dem Ausgangstreiber 315 zugeführt. Der Slave vergleicht dementsprechend
den Ausgang des Treibers 315, Vo1 bei der Hälfte seines normalen Stroms,
mit Vref. Wie oben wird eine Offsetlöschungsschleife gefahren, bis der Ausgang hin-
und herspringt.
Auf ähnliche Weise werden Lesespannungsausgangshübe für den Slave
kalibriert. Beispielsweise wird in 32 ein Stromsteuerregister
320 in Slave 12a um ein Bit nach rechts verschoben, um aus einem
Slave-Sender die Hälfte des nominalen Ausgangswerts zu treiben. Ein entsprechender
Empfänger in dem Master tastet den Ausgangspegel des zurückgegebenen Datensignals
ab und vergleicht es mit Vref. Ein sich aus diesem Vergleich ergebendes aufwärts/abwärts
Signal wird zu Slave 12a über eine Rückkoppelsignalleitung rückgekoppelt.
Das aufwärts/abwärts Signal wird zugeführt, um einen Slave-Stromsteuerwert in einem
Stromsteuerregister 321 so lange zu inkrementieren oder zu dekrementieren,
bis der Ausgang des Masterempfängers hin- und herspringt, an welchem Punkt die Ausgangshubschleife
festgehalten wird. Diese Schleife kompensiert auch einen Gleichstromkanalwiderstand,
da das „Abtastungs-„ Element in dem Weg, das heißt der Masterempfänger,
das gleiche Element ist, welches zum Erfassen von Lesedatenübertragungen verwendet
wird.
Alternativ kann der Leseausgangsspannungshub unter Verwendung einer
Schaltung ähnlich der in 33 dargestellten kalibriert
werden. Hier überträgt Slave 12a sowohl eine „1" als auch eine „0"
auf verschiedenen Datenbusleitungen 335a und 335b. Master
11 weist einen Präzisionswiderstandsteiler 330 auf, welcher diese
Signale empfängt und sie kombiniert, um eine Ausgangsspannung Vhub/2 zu bilden.
Diese Ausgangsspannung wird dann in einem Masterdatenempfänger mit Vref verglichen.
Das Ergebnis dieses Vergleichs wird dann zurück zu Slave 12a als ein aufwärts/abwärts
Signal gesendet und einem Stromsteuerregister 331 zugeführt, welches so
lange entsprechend inkrementiert oder dekrementiert wird, bis der Ausgang des „Vergleichs-"
Datenempfängers in dem Master zwischen 0 und 1 hin- und herspringt.
Wie bei der Zeit- und Spannungskalibration, muss es einen Weg zum
Bestimmen der angemessenen Werte geben, die in die Tastverhältnisanpassungsregister
zu programmieren sind. Dies kann ohne weiteres unter Verwendung einer modifizierten
Version des Abtastfensters gemäß 28 erreicht werden.
Das modifizierte Abtastfenster ist in der 34 dargestellt.
Anstelle eines einzigen Satzes von Kurven, die den variierenden Werten des Offsetregisters
entsprechen, sind mehrere Sätze vorhanden, von denen jeder einen unterschiedlichen
Wert für den Tastverhältnisanpassungsoffset entspricht. Jeder Satz weist das gleiche
Tastverhältnis auf, jedoch unterschiedliche Phasen, abhängig von dem Tastverhältnisanpassungsoffsetwert.
Wie zuvor, wird durch die Tastverhältnisanpassungsoffsetwerte gefahren, um die voreilenden
und nacheilenden Flanken des Datenauges aufzufinden. Zur Kalibration des Tastverhältnisses
muss diese Prozedur jedoch N-mal für ein N-Datenratensystem gefahren werden, um
die Flanken jedes Auges zu finden.
Das in 34 dargestellte Beispiel illustriert
diese Prozedur für ein DDR System, wobei das Durchfahren zweimal ausgeführt wird,
einmal, um die Flanken des geraden Auges zu finden, und einmal, um die Flanken des
ungeraden Auges zu finden. Die Prozedur wird für jeden Wert des Tastverhältnisoffsetregisters
wiederholt. Die Vorrichtung wählt die Tastverhältnisoffsetwerte, welche die Breite
der geraden und ungeraden Augen möglichst gleich machen.
Wenn die Beziehungen (das heißt das Abbilden (englisch = mapping))
zwischen Tastverhältnisanpassungsoffsetwerten und den korrespondierenden Augengrößen
bekannt sind, kann ein zweites Verfahren verwendet werden. Genauer gesagt wird die
Größe jedes Auges unter Verwendung nominaler Tastverhältnisoffsetwerte gemessen,
dann werden die angemessenen Registerwerte gewählt, um die Augen basierend auf den
bekannten Beziehungen gleich groß zu machen.
Wenn die Beziehungen nicht bekannt sind, können sie geschätzt werden,
indem die Tastverhältnisanpassungsoffsetwerte auf die Extrema ihrer Bereiche gesetzt
werden und dann die Größen der Augen durchgefahren und gemessen werden. Angemessene
Werte können durch Interpolation zwischen den gemessenen Arbeitszyklen an den Extrema
gewählt werden.
Ein anderer Ansatz würde sein, einfach die Gesamtgröße des zusammengesetzten
Auges zu messen, und die Tastverhältnisoffsetregistereinstellungen zu wählen, die
diese Größe zur größten gemacht haben.
Bis hier wurden Zeit-(einschließlich Tastverhältnis) und Spannungsanpassungen
als getrennte Phänomene diskutiert. Während verschiedene Anpassungsmechanismen beschrieben
wurden, welche diese Probleme getrennt adressieren, wird ein Durchschnittsfachmann
der Technik erkennen, dass Zeitanpassungen und Spannungsanpassungen besser als einen
in Beziehung zueinander stehende Familie von Betriebssystemparametern aufzufassen
ist. Eine wirksame Busoptimierung sucht danach, sowohl Zeit- als auch Spannungsgrenzwerte
zu maximieren, obwohl Verbesserungen des einen oder des anderen unterschiedliche
Probleme der Systemleistungsfähigkeit lösen. Das Zusammenspiel zwischen Signalsynchronisation
und Signalspannungsnotwendigkeit erkennend, wird das Konzept des Signalausgleichs
nunmehr adressiert.
Signalausgleichsparameter können auch angepasst werden, um Spannungsgrenzwerte
für Datensignale auf dem Systembus zu erhöhen. Ein Ausgleich beinhaltet dynamisches
Verändern der Treiberstärke eines Kanalausgangstreibers, um Rauschsignale auf dem
Bus zu kompensieren. Rauschsignale können aus vielen Quellen entstehen, einschließlich
Übersprechen zwischen benachbarten Kanälen oder verbleibenden oder unerwünschten
Signalreflektionen auf dem Bus. Unabhängig von ihrer Natur oder ihrem Ursprung verursachen
Rauschsignale, dass Signalspannungen von einem Tastverhältnis zum anderen variieren.
Eine Kompensation für Signalspannungsvariationen aufgrund von verbleibenden Signalen
auf dem Kanal wird als „temporärer Ausgleich" bezeichnet. Ein Ausgleich für
Signalspannungsvariationen aufgrund von induktiver Kopplung benachbarter Kanäle
wird als „Übersprech-(oder räumlicher) Ausgleich" bezeichnet.
Temporärer und Übersprechausgleich werden unten getrennt voneinander
diskutiert. Es sollte festgehalten werden, dass die Schaltung zum Erreichen beider
Formen von Ausgleich in einem Mastersender oder in entsprechenden Slave-Sendern
vorhanden sein kann.
35 stellt eine Signalwellenform eines
hypothetischen Kanals dar, die aus einer nicht ausgeglichenen Übertragung von Daten
mit einer logischen Struktur von 0,1,1,0 resultiert. Die Spannung auf dem Kanal
steigt während Übertragung der ersten logischen 0 auf VOH an und fällt dann in Richtung
auf VOL während Übertragung der ersten logischen 1. Wie dargestellt, erreicht die
Spannung auf dem Kanal VOL während einer Übertragung der ersten logischen 1 nicht
und erreicht stattdessen ein lokales Minimum von 200 mV oberhalb von VOL. Im Gegensatz
dazu fällt die Spannung auf dem Kanal während einer Übertragung der zweiten logischen
1 auf 100 mV unterhalb von VOL. Schließlich erreicht die Spannung auf dem Kanal
ein lokales Maximum von 200 mV unterhalb von VON während einer Übertragung der letzten
zweiten logischen 0.
Das Vorstehende illustriert, wie Signalspannung auf einem Kanal durch
vorhergehende Übertragungen auf demselben Kanal beeinflusst wird. Im allgemeinen
wird eine logische 1, die einer Übertragung einer logischen 0 folgt, weniger wahrscheinlich
VOL erreichen, als eine logische 1, die einer Übertragung einer weiteren logischen
1 folgt. Genauso wird eine logische 0, die einer logischen 1 folgt, weniger wahrscheinlich
VOH erreichen, als eine logische 0, die einer weiteren logischen 0 folgt. Diese
beiden Effekte führen zu einer reduzierten Spannungstoleranz an dem Empfänger, was
das System empfänglicher für Fehler macht, die durch Rauschen und andere grenzwertreduzierende
Effekte verursacht werden.
36A illustriert einen Ausgangstreiber
700, der eine Schaltung zum temporären Ausgleich gemäß einer Ausführungsform
der vorliegenden Erfindung aufweist. Ein Datensignal, Datenj, wird verwendet, um
einen gewichteten Treiber 701 zu steuern (englisch = to gate). Wenn Datenj
eine logische 1 ist, dann wird der gewichtete Treiber 701 auf EIN geschaltet,
in einem Maße, welches durch einen Stromsteuerwert (CCTL) in einem Register
703 bestimmt ist, so dass ein Strom ISIG durch den Treiber
701 fließt. Gewichtete Ausgleichstreiber 702A–702K
werden ähnlich durch entsprechende vorherige Versionen des Datensignals (Datenj-1,
Datenj-2, ..., Datenj-K) gesteuert, um Ausgleichsströme IEQ1 bis IEQK
abzusenken (englisch = to sink). Somit ist der Gesamtstrom, der durch RTERM
fließt, gegeben durch: IOL = ISIG + IEQ1 + IEQ2
+ IEQK, wobei jeder der IEQ Terme durch Ausgleichskoeffizienten
gesteuert wird, die in entsprechenden Ausgleichsregistern 704A–704k
gespeichert sind. Da die Ausgangsspannung VOUT gleich VTERM – IOL·RTERM
ist, kann VOUT ausgeglichen werden, um vorhergehende Ausgänge durch angemessenes
Einstellen von Ausgleichskoeffizienten zu kompensieren.
36B illustriert eine Ausführungsform
eines Ausgangstreibers 700 in größerem Detail. Wie dargestellt, schließt
der gewichtete Treiber 701N gewichtete binäre Transistoren (1xm, 2x, ...
2N – 1x) ein, so dass ISIG gegeben ist durch Datenj·CCTL·IEINHEIT,
wobei IEINHEIT der Strom durch den 1x Transistor ist, wenn er aktiv ist.
Ein Datenvergangenheitserzeuger 705 empfängt Datenj und ein
Sendetaktsignal tclk, und erzeugt K verzögerte Datensignale, Datenj-1 bis Datenj-K.
In einer Ausführungsform wird ein neuer Datenwert an jeder steigenden Flanke und
an jeder fallenden Flanke von tclk gesendet. Somit werden die verzögerten Datensignale
erzeugt, indem die Datenj durch eine Sequenz von Flip-Flops 706A–706K
geleitet werden, die alternierend durch fallende und steigende Flanken von tclk
getaktet werden. Durch diese Anordnung gibt das Flip 706A Datenj-1 aus,
das Flip-Flop 706B gibt Datenj-2 aus, und so weiter bis zum Flip-Flop
706K, welches Datenj-K ausgibt. In einer alternativen
Ausführungsform, in welcher Daten nur auf einer Taktflanke pro Zyklus vom tclk gesendet
werden (ein Datenwert pro Taktflanke anstelle von zwei), können Flip-Flops
706A–706K durch dieselbe Flanke von tclk getaktet werden.
Ausgleichstreiber 702A schließen einen Multiplexer
709, einen Satz von zusätzlichen Gates 712A–712R
und entsprechende binäre gewichtete Transistoren (1x, 2x, ... 2R – 1x), ein
und einen Satz von subtrahierenden logischen Gates 711A–711R
und entsprechende binäre gewichtete Transistoren –1x, –2x, ..., –2R
– 1x). In der in 36B dargestellten Ausführungsform
enthält jedes der Ausgleichsregister 704A–704K einen mit
Vorzeichen versehenen Wert, gebildet durch einen Vorzeichenkoeffizienten (bit S)
und einen Größenkoeffizienten (z.B. C1, C2, ..., CK). Speziell bezugnehmend auf
das Ausgleichsregister 704A wird der Vorzeichenkoeffizient verwendet, um
zwischen invertierten und nicht-invertierten Versionen des Datenwerts Datenj auszuwählen,
während jedes Bit des Größenkoeffizienten in ein logisches Gatter-Paar eingegeben
wird. Jedes logische Gatter-Paar besteht aus einem addierenden und einem subtrahierenden
logischen Gatter, wobei beide einen Multiplizierer aufweisen, der mit der Bit-Position
des Größenkoeffizienten korrespondiert, jedoch mit entgegengesetzten Vorzeichen.
Beispielsweise wird Bit 1 des Größenkoeffizienten in die logischen Gattern
712A und 711A eingegeben, welche in Abhängigkeit von dem Zustand
von Datenj-1 die 1x bzw. die –1x Transistoren aktivieren. Ähnlich wird Bit
2 des Größenkoeffizienten den logischen Gatter 712B und
711B eingegeben, um eine Aktivierung der 2x und –2x Transistoren
zu steuern, und Bit R des Größenkoeffizienten wird in die logischen Gatter
712R und 711R eingegeben, um die Aktivierung der 2R – 1x
und –2R – 1x Transistoren zu steuern. Obwohl 36B
anzeigt, dass der Größenkoeffizient mindestens drei Bit (d.h. R = 3) aufweist, kann
der Größenkoeffizient mehr oder weniger als drei Bit aufweisen, ohne den Bereich
der vorliegenden Erfindung zu verlassen.
Den Betrieb des Ausgleichstreibers 702A reflektierend kann
erkannt werden, dass dann, wenn der Größenkoeffizient im Register 704A
Null ist, alle Transistoren, die durch subtrahierende logische Gatter
711A–711R gesteuert werden, aktiviert sind, und alle Transistoren,
die durch addierende logische Gatter 712A–712R gesteuert
werden, ausgeschaltet sind. Dies ist wahr, unabhängig von dem Zustand von Datenj-1
oder dem Vorzeichen-Bit S. Daher wird der Ausgleichsstrom, leq1 zu 2R·IEINHEIT,
wenn der Größenkoeffizient Null ist. Wenn der Größenkoeffizient bei einem Maximum
steht (d.h. alle Bits gesetzt) und Datenj-1 ist eine logische Eins und der Koeffizient
ist positiv (d.h. Vorzeichen-bit ist gleich null), dann sind alle durch die subtrahierenden
logischen Gatter 711A–711R gesteuerten Transistoren und
alle durch die addierenden logischen Gatter 712A–712R gesteuerten
Transistoren aktiviert, so dass der Ausgleichsstrom 2R·IEINHEIT
wird. Anders herum, wenn der Größenkoeffizient an einem Maximum steht und Datenj-1
eine logische Null ist und der Vorzeichenkoeffizient negativ ist, dann sind alle
durch die subtrahierenden logischen Gatter 711A–711R und
gesteuerten Transistoren und alle durch die addierenden logischen Gatter gesteuerten
Transistoren ausgeschaltet, so dass der Ausgleichsstrom ausgeschaltet ist. Allgemeiner
gesprochen ist der Strom IEQ1 durch den folgenden Ausdruck gegeben:
IEQ1 = 2R·IEINHEIT + (C1·2R)·Polarität(Datenj-1)·IEINHEIT,
wobei C1 positiv oder negativ sein kann, und wobei Polarität (Datenj-1) = 1, wenn
Datenj-1 gleich 1 ist; und-1, wenn Datenj-1 gleich 0 ist. Die durch die Ausgleichsschaltungen
702B–702K gezogenen Ströme werden durch die Koeffizienten
C2–CK gesteuert. Durch diese Anordnung erlaubt jede der Ausgleichsschaltungen
dem Strom relativ zu 2R·IEINHEIT basierend auf entsprechenden
Koeffizienten und verzögerten Datenwerten angehoben zu werden oder vermindert zu
werden. Somit ist der Gesamtstrom IOL gegeben durch den Ausdruck:
Durch Auswahl des Stroms 2R·K·IEINHEIT derart,
dass er dem gewünschten hohen Strompegel auf dem Kanal (VOH) entspricht, können
die Koeffizienten in dem Ausgleichsregister verwendet werden, um einen Stromhub
oberhalb und unterhalb des zum Erzeugen von VOH verwendenden Nominalstroms zu bewirken,
und oberhalb und unterhalb des zu Erzeugung von VOL verwendeten Nominalstroms zu
bewirken. Diese Stromhübe können ihrerseits verwendet werden, um den Kanal zu übersteuern
oder zu untersteuern, die Ausgangsspannung für zurückliegende Ausgangspegel kompensierend.
Es ist zu beachten, dass der durch den 1x Transistor in den Ausgleichstreibern gezogene
Strom IEINHEIT unterschiedlich sein kann von dem durch den 1x Transistor
in dem gewichteten Treiber 701 gezogenen Strom IEINHEIT.
Obwohl 36A und 36B
eine Herunterziehschaltung (englisch = pull-down circuit) zum Ausgleichen der Kanalspannung
darstellen, kann eine Kombination von Heraufzieh- und Herunterziehschaltungen in
einer alternativen Ausführungsform verwendet werden. Beispielsweise kann ein Satz
von gewichteten Transistoren, gekoppelt zwischen VTERM und dem Ausgang
der Treiberschaltung 700, verwendet werden, um das Ausgangssignal proportional
zu einem negativen Ausgleichskoeffizienten heraufzuziehen und ein korrespondierender
Satz von gewichteten Transistoren kann verwendet werden, um das Ausgangssignal proportional
zu einem positiven Ausgleichskoeffizienten herunterzuziehen. Im Allgemeinen kann
jede Schaltung zum Anpassen von Kanalspannungen verwendet werden, ohne den Bereich
der vorliegenden Erfindung zu verlassen.
Wie oben erwähnt, beinhaltet ein Ausgleich von Übersprechen einen
Ausgleich einer Kanalspannung, um übersprochene Signal von benachbarten Kanälen
zu kompensieren. Die in den 36 und 37
dargestellten Schaltungen können modifiziert werden, um einen Ausgleich für Übersprechen
zur Verfügung zu stellen. Gemäß 36A kann beispielsweise
der Datenvergangenheitserzeuger 705 entfernt werden und es können die Ausgänge
von benachbarten Schaltungen mit den Eingängen von Ausgleichstreibern
702A–702K gekoppelt werden. Durch diese Anordnung können
Ausgleichsströme IEQ1 – IEQK erzeugt werden, basierend
auf dem Zustand von benachbarten Kanälen und gewichtet durch die Koeffizienten,
die in den Ausgleichsregistern 704A–704K gespeichert sind.
Wie bei temporärem Ausgleich kann eine Kombination von gewichteten Herauszieh- und
Herunterziehschaltungen oder anderen Schaltungen zum Anpassen von Spannungen verwendet
werden, um einen Ausgleich von Übersprechen durchzuführen. Wie oben diskutiert,
kann eine vorgegebene Vorrichtung sowohl eine Schaltung zum Ausgleich von Übersprechen
als auch eine temporäre Ausgleichsschaltung ausschließen.
Die vorstehenden Beispiele von temporärem Ausgleich und Übersprechen-Ausgleich
wurden auf eine Ausgleichstreiberschaltung oder sendeseitige Schaltungen bezogen.
Eine solche Schaltung kann jedoch auch empfängerseitig eingebaut werden.
37 illustriert beispielsweise einen Busempfänger
800 mit einer Ausgleichsschaltung gemäß einer Ausführungsform der vorliegenden
Erfindung. In einem analogen Addierer 817 werden hereinkommende Daten,
Datenj, mit einem Ausgleichs-Offset 816 aufsummiert, was einen ausgeglichenen
Datenwert, DEQ, zum Vergleich mit VREF erzeugt. Der Ausgleichs-Offset
816 wird durch Addieren und Subtrahieren von Ausgleichskoeffizienten C1–CK
gemäß dem Zustand von entsprechenden zuvor empfangenen Datenwerten, Datenj-1 bis
Datenj-K, erzeugt.
Ein Datenvergangenheitserzeuger 705 empfängt den Ausgang
des Vergleicheqrs 830 und erzeugt die Datenvergangenheitswerte, Datenj-1,
Datenj-2, ... Datenj-K. Die Datenvergangenheitswerte werden verwendet, um über Multiplexer
811A–811K zwischen positiven und negativen Versionen von
entsprechenden Ausgleichskoeffizienten C1EQ-CKEQ, gespeichert in Ausgleichsregistern
in 804A–804K, auszuwählen. Wie bei den Ausgleichkoeffizienten,
die mit Bezug auf die 36B diskutiert wurden, können
die Ausgleichkoeffizienten C1EQ-CKEQ positive oder negative Werte annehmen. Wie
in 37 dargestellt, wird eine negative Version des Inhalts
jedes Ausgleichsregisters 804A–804K durch entsprechende
Zweierkomplementerzeuger 809A–809K erzeugt. Jede Anzahl
von Schaltungen zum Erzeugen negativer Versionen der Ausgleichskoeffizienten können
in alternativen Ausführungsformen verwendet werden. Auch kann eine Einerkomplementschaltung
in alternativen Ausführungsformen anstelle einer Zweierkomplementschaltung verwendet
werden.
Eine digitale Addierschaltung 814 empfängt den Ausgang jedes
der Multiplexer 811A–811K und liefert eine Summe von Koeffizienten
an den Digital/Analog-Wandler 815, welcher den Ausgleichs-Offset
816 erzeugt. In einer alternativen Ausführungsform werden getrennte Digital/Analog-Wandler
verwendet, um die Ausgänge von Multiplexern 811A–811K in
entsprechende Analogwerte umzuwandeln. Diese analogen Werte werden dann mit hereinkommenden
Datenwerten, Datenj, in einem analogen Addierer 817 kombiniert. In dieser
Ausführungsform kann die Addierstufe 814 weggelassen werden, was die zum
Liefern eines gültigen Offset-Werts am Addierer 817 benötigte Zeit reduziert.
In einer weiteren alternativen Ausführungsform wird der Addierer
817 verwendet, um den Ausgleichs-Offset 816 zu VREF hinzuzuaddieren,
anstelle der hereinkommenden Daten. In diesem Fall wird der Ausgleichs-Offset mit
umgekehrter Polarität erzeugt.
In noch einer weiteren Ausführungsform des Busempfängers wird statt
einer digitalen eine analoge Schaltung zum Ausführen des Ausgleichs verwendet. Eine
Abtast- und Halteschaltung wird verwendet, um vergangene Datensignale (d.h. Datenj-1
– Datenk) zu erfassen. Die Amplitude der erfassten Signale wird
durch Ausgleichskoeffizienten C1EQ – CKEQ aus Registern
804A–804K gewichtet und dann in den Addierer 817
eingegeben. Ein Ausgleich des Übersprechens wird auf diese Weise auch erreicht,
bis auf die Tatsache, dass benachbarte Signale durch Ausgleichskoeffizienten statt
durch vorhergehende Datensignale auf dem gleichen Signalweg gewichtet werden.
Ausgleichskoeffizienten können unter Verwendung der oben zur Bestimmung
von Spannungs-Offset-Werten beschriebenen Techniken bestimmt werden. Siehe
24 und 29–31
und die obigen, darauf bezogene Diskussion. Gemäß der in 29
dargestellten Abtastfenster Rückkoppeltechnik kann beispielsweise ein Slave einer
Sequenz von Mustern von aufeinanderfolgenden Bits (z.B. 101, 001, 010, 110 ...)
in einen Mastern schreiben, um dem Master zu erlauben, den Signalgrenzwert in dem
letzten Bit jedes Musters zu bestimmen. Beispielsweise kann der Master bestimmen,
dass die Spannung des Kanals 200 mV oberhalb von VOL in dem letzten Bit in dem letzten
Bit des Musters 01 und 200 mV unterhalb von VON in dem letzten Bit des Musters
10 liegt, und kann einen Koeffizienten zur Verfügung stellen, der dem Slave-Gerät
± 200 mV liefert.
Somit können durch Ausmessen des Effekts von hin- und herspringenden
Bits in verschiedenen Positionen in der Struktur temporäre Ausgleichskoeffizienten
bestimmt werden, an den Slave zurückgegeben werden und in temporären Ausgleichsregistern
innerhalb des Senders oder des Empfängers des Slave installiert werden. Ausgleichskoeffizienten
für den Sender des Masters können auf ähnliche Weise bestimmt werden, wobei der
Slave Grenzwertmessungen an den Master zurückgibt, so dass der Master seine eigenen
Koeffizienten bestimmt.
In einer alternativen Ausführungsform kann jedes Bit in jedem Ausgleichsregister
während Übertragen der Sequenz von Bit-Strukturen gesetzt werden, und dann zur Übertragung
derselben Frequenz zurückgesetzt werden. Toleranzmessungen können durch eine Empfangsvorrichtung
(z.B. einem Master, wenn ein Sender eines Slaves ausgeglichen wird) durchgeführt
werden, und zum Bestimmen verwendet werden, ob das Ausgleichs-Bit gesetzt bleiben
soll. Wenn der Grenzwert verbessert wird, dann wird das getestete Bit gesetzt. Sonst
wird das Bit zurückgesetzt. Durch sukzessives Testen des Effekts jedes Bits in dem
Ausgleichsregister, sich von dem signifikantesten Bit bis zu dem am wenigsten signifikanten
Bit bewegend, kann ein angemessener Ausgleichswert bestimmt werden. Wenn einmal
der Inhalt eines gegebenen Ausgleichsregisters etabliert ist, können die Bits in
dem nächsten Register getestet werden. Gemäß 36A kann
beispielsweise ein Koeffizient C1 zuerst bestimmt werden, dann der Koeffizient C2
usw.
Koeffizienten zum Ausgleich von Übersprechen können auch unter Verwendung
der mit Bezug auf die 24 und 29-31
beschriebenen Techniken bestimmt werden. Anstelle des Messens von Toleranzen, die
sich aus einer Übertragung eines vorgegebenen temporären Bit-Musters ergeben, werden
die Toleranzen jedoch basierend auf räumlichen Bit-Strukturen (beispielsweise unterschiedlichen
Strukturen von Bits, die auf benachbarten Kanälen des Busses zur gleichen Zeit übertragen
werden, statt sukzessive auf einem einzigen Kanal) bestimmt. Durch Hin- und Herwechseln
jeder der Bit-Positionen in der Struktur können räumliche Koeffizienten bestimmt
werden und in den Übersprechausgleichregistern für den getesteten Sender installiert
werden. Auch kann jedes Bit jedes Registers durch Vergleichen von Grenzwerten sukzessive
bestimmt werden, die gemessen wurden, wenn das Bit gesetzt wird, mit Grenzwerten,
die gemessen wurden, wenn das Bit zurückgesetzt wird.
Verschiedene beispielhafte Techniken wurden präsentiert, bei denen
Zeit-Offsets und Spannungs-Offsets und Ausgleichs-Offset während der Kalibrationsphase
des Systembetriebs bestimmt werden können. Es bestehen jedoch einige Punkte, die
berücksichtigt werden sollten, wenn zuverlässige und effiziente Kalibrationsprozeduren
entworfen werden. Eine Definition einer angemessenen Kalibrationsdatensequenz ist
ein solcher Punkt.
Mehrere Kalibrationssequenzen sind möglich, es sind jedoch wenige,
die optimal sind. Eine erste bevorzugte Sequenz besteht aus sehr einfachen 0-auf-1
und 1-auf-0 Übergängen bei einer Datenrate (Frequenz), die wesentlich niedriger
ist, als die normale Datenrate des Kanals während der Operationsphase des Bussystems.
Eine Datenrate mit einer Periode, die größer ist als der Zeitspeicher des Kanals,
beispielsweise das Doppelte der elektrischen Buslänge, wird normalerweise
angemessen sein. Da die in den vorstehenden Ausführungsformen als Phasenempfänger
funktionierenden Takt- und Datenempfänger während der Kalibrationsphase mit normaler
Frequenz betrieben werden, die Datenübertragungsrate jedoch erheblich reduziert
ist, werden alle Zeitverschiebungen, die als eine Funktion der Datenrate auftreten,
eliminiert. In der Theorie können die niederfrequenten Daten als der Durchschnitt
der Verteilung von Offsets in einem System mit frequenzabhängigen Offsets betrachtet
werden. Die verschiedenen Offset-Register, oder vielmehr die darin gespeicherten
Offset-Werte, werden unter Verwendung dieser niederfrequenten Daten und Zeit bestimmt,
und es werden Spannungsverschiebungen entsprechend minimiert.
Dieser Ansatz funktioniert, da der Kanal (Datenbus) der Daten zwischen
dem Master und den Slaves überträgt, bei unterschiedlichen Datenraten unterschiedlich
reagiert. Das heißt, dass Daten bei unterschiedlichen Sendefrequenzen zu unterschiedlichen
Offsets führen, die durch Resonanzen und Diskontinuitäten bei dieser Frequenz erzeugt
werden. Hypothetisch ist die Mitte der Verteilung für solche Offsets mehr oder weniger
der gleich Ort, wie die Übergänge von sehr niederfrequenten Daten, wobei solche
Daten durch große Datenblöcke mit einem einzigen Datenübergang konstruiert werden
können. Derartige sehr niederfrequente Daten regen keine harmonischen an, wie dies
höherfrequente Daten können, und der einzelne Datenübergang kann innerhalb des Kalibrationsprozesses
ohne weiteres erkannt werden. Somit können durch Phasendetektion der sehr niederfrequenten
Daten in Empfängern, die mit sehr viel höheren Taktraten laufen, die Zeit- und Spannungs-Offsets
korrekt bestimmt werden.
Eine zweite bevorzugte Kalibrationsfrequenz besteht aus einem Spektrum
von Kalibrationsdaten, die bei einer sehr niedrigen Frequenz beginnen und langsam
ansteigen, bis die Grundfrequenz erreicht ist. Bei diesem Ansatz wird keine Datenfrequenz
gegenüber der anderen bevorzugt, so dass jede Frequenz die gleiche Anzahl von Datenübergängen
erhält, und somit Phasendetektorbestimmungen vor der Frequenz verändert werden.
In einer dritten bevorzugten Kalibrationssequenz beobachtet der Master
die Fensterbreite gültiger Daten unter Verwendung des oben erklärten Abtastansatzes
und bestimmt, ob der Kommunikationskanal bei der gegebenen Frequenz zuverlässig
läuft. Wenn der Master feststellt, dass das Fenster für die gültigen Daten nicht
adequat ist, reduziert er die Betriebsfrequenz und etabliert die Fensterbreite für
gültige Daten bei der neuen Frequenz erneut. Da die Offset-Register des Masters
für die meisten der vorstehenden Ausführungsformen in Grad kalibriert sind, kann
der Prozentsatz der für eine zuverlässige Kommunikation benötigten gültigen Bit-Zeit
einmal für alle Operationsfrequenzen gespeichert werden, und es muss die finale
Operationsfrequenz nicht ein ganzzahliges Vielfaches der ursprünglichen Operationsfrequenz
sein.
Vorrangig unter den Kalibrationssachverhalten ist die Tatsache, dass
Datenübertragungen, und insbesondere Steuerdatenübertragungen, zwischen dem Master
und den Slaves vor Abschluss der Zeit- und Spannungskalibrationsprozeduren inhärent
suspekt sind. 38 zeigt das beispielhafte Bussystem
der 5 in einem etwas anderen Detail. Der Kommunikationskanal
zwischen Master und Slaves, wie zuvor dargestellt, schließt typischerweise einen
Steuerbus, eine serielle Datenverbindung, zusätzlich zu dem Datenbus, und externe
Taktsignale oder ein externes Taktsignal ein.
Wie festgestellt, kommunizieren viele moderne Bussysteme Daten zwischen
dem Master und den Slaves in Paketen. Dies ist insbesondere wahr, wenn das Bussystem
ein Speichersystem aufweist. Somit wird das Problem des Kommunizierens zuverlässiger
Steuerdaten von dem Master zu einem Slave oft durch die Paketnatur der kommunizierten
Steuerdaten verstärkt. In noch einem weiteren Aspekt adressiert die vorliegende
Erfindung dieses Problem.
38 zeigt die grundlegende Konfiguration
eines auf einem Paketprotokoll aufgebauten Speichersystems. Während des normalen
Betriebs sendet der Master Steuerdaten über „n" Steuerleitungen zu einem
oder mehreren Slave-Geräten. Die Slaves dekodieren das durch die Steuerdaten angezeigte
Kommando und führen die angeforderte Operation durch, wie etwa eine Lese- oder eine
Schreibe-Operation. Während einer Schreibe-Operation werden Daten von dem Master
zu dem Slave über den Datenbus transferiert, und während einer Lese-Operation werden
Daten von einem Slave zu dem Master über den Datenbus zurückgegeben. Die Steuer-
und Datenpakete werden synchron relativ zu dem externen Referenztakt, zum Beispiel
CTM und CFM, gesendet. Da in vielen hochleistungsfähigen Anwendungen Datenpakete
sowohl auf den steigenden als auch auf den fallenden Flanken des Taktsignals gesendet
werden, können die Datenpakete als „gerade" oder „ungerade" in Abhängigkeit
von ihrer Beziehung zu dem externen (EXT.) Takt angesehen werden, wie in
39 dargestellt ist. Das System, welches in
38 dargestellt ist, schließt auch einen seriellen
Anschluss mit niedriger Geschwindigkeit ein, welcher typischerweise während einer
Systeminitialisierung verwendet wird, um eine Vorrichtungsidentifizierung
zu übertragen.
Viele der Zeitanpassungsschaltungen, die oben erklärt wurden, und
die sich in einem Slave befinden, können durch das Diagramm in 40
funktional zusammengefasst werden. Ein angepasster interner Takt, CLKINT (ANGEPASST),
ist entwickelt und wird auf einem Slave-Datenempfänger oder -sender 400
angewendet. Der angepasste interne Takt wurde abgeleitet von einem internen Takt
(CLKINT), der typischerweise durch eine Taktwiederherstellungsschaltung
401 auf dem Slave erzeugt wird, welcher den externen Takt als einen Eingang
empfängt. Der interne Takt wird durch eine Verzögerungsanpassungsschaltung
402 angepasst, die eine Verzögerung zwischen –&tgr;D und
+&tgr;D in Relation zu einem Anpassungswert zur Verfügung stellt, welcher
in einem Offset-Register 403 gespeichert ist. Innerhalb dieses verallgemeinerten
Ansatzes für einen Ausgleich eines Zeit-Offsets wird der Master den Anpassungs-Offset-Wert
in dem Offset-Register des Slave variieren, während er eine Sequenz von Daten schreibt
und liest, bis ein optimaler Offset-Wert bestimmt ist, welcher die beste Gesamtsystemtoleranz
zur Verfügung stellt.
Bevor die Empfänger und Sendersynchronisation auf ein Master-Taktsignal
(EXT.CLK) kalibriert ist, können die Lese- und Schreibe-Befehlspakete, die über
den Steuerbus gesendet werden, unglücklicherweise möglicherweise nicht richtig empfangen
werden. Eine unzuverlässige Steuerung macht eine Kalibration sehr schwierig.
Um diese Schwierigkeit zu überwinden, kann eine serielle Verbindung
mit niedriger Geschwindigkeit verwendet werden, um Kommandos an ein nicht-kalibriertes
Slave-Gerät zu senden. Diese Lösung weist jedoch verschiedene Probleme auf. Zunächst
ist der serielle Anschluss sehr langsam. Im Ergebnis wird der Kalibrationsprozess
schwer handhabbar und benötigt eine unangemessene Menge an Zeit. Als zweites wird
das Slave-Gerät gezwungen, die Lese-Schreibekommandos mit niedriger Geschwindigkeit
mit normalen Steuer- und Datenübertragungen zu multiplexen. Diese Fähigkeit verlangt
erhebliche zusätzliche Steuerlogik. Solche zusätzliche Hardware kann bestimmte kritische
Wege während eines Normalbetriebs des Slave-Gerätes verzögern.
Ein anderer Ansatz zum Überwinden der unzuverlässigen Natur eines
Transfers eines Steuerpakets zu nicht-kalibrierten Slave-Geräten verlangt, dass
das Steuerkommandopaket mit der Hälfte seiner normalen Rate übertragen wird. Solch
ein Schema ist in der 41 dargestellt. Durch Laufen
mit der Hälfte der normalen Rate und Verzögern von Steuerdaten um einen Viertel
Zyklus weisen Bits auf den Steuerbusleitungen das Doppelte des normalen Zeitgrenzwertes
auf. Solch ein erweiterter Zeitgrenzwert ist ausreichend, um Steuerdaten zuverlässig
zu übertragen, sogar ohne Kalibration des Slave-Gerätes. Eine Übertragung nur der
gerade Steuer-Bits, um 90° nach vorne verschoben, würde Steuerdaten mit einem
ähnlich erweiterten Zeitgrenzwert zur Verfügung stellen.
Während sie im Allgemeinen dem Senden von Steuerpaketen über die serielle
Verbindung überlegen ist, bietet die vorstehende Technik dem Systemdesigner einige
Herausforderungen. Das Slave-Gerät muss in der Lage sein, auf zwei verschiedene
Protokolle zu reagieren – eines für den regulären Betrieb und das andere für
die Kalibration. Einige beispielhafte Techniken zum Erreichen dieses Ergebnisses
werden unten erklärt.
Es sei als ein Beispiel angenommen, dass der Slave eine Speichervorrichtung
ist, das Steuerpaket typischerweise aus Bit-Feldern besteht, die eine Anzahl verschiedener
Komponenten darstellen, einschließlich: eine Vorrichtungs-ID, die identifiziert,
auf welches Slave-Gerät zugegriffen wird, einen Operations Code, der die Natur der
Operation identifiziert, eine Adresse, die einen in Beziehung zu der Operation stehenden
Ort identifiziert, und eine Schreibe-Maske, die einen Abschnitt der zu speichernden
Schreibe-Daten auswählt.
Während einer Kalibration der Speichervorrichtung sind nicht alle
diese Felder notwendig. Wenn das System beispielsweise ein Verfahren zum Aktivieren/Deaktivieren
der Speichervorrichtung durch die serielle Verbindung aufweist, was typisch ist,
dann wird während der Kalibration das Geräte-ID-Feld nicht benötigt, alle Speichervorrichtungen
außer den zu kalibrierenden können ohne weiteres unter Verwendung der seriellen
Verbindung deaktiviert werden. Die Schreibe-Maske muss während der Kalibration nicht
verwendet werden. Darüber hinaus ist nur ein Sub-Satz der normalen Operations Codes
während der Kalibration notwendig, da die Speichervorrichtung nur einfache Lese-
und Schreibe-Kommandos ausführen muss. Schließlich wird nur ein Abschnitt des typischen
Adressfelds benötigt. Die adressierbaren Speicheranforderungen der Speichervorrichtung
während der Kalibration sind im Vergleich mit dem Normalbetrieb stark reduziert.
Dementsprechend können viele der Steuerpaket-Bits während der Kalibration für andere
Zwecke verwendet werden.
42 vergleicht das Format eines Steuerpakets
im Normalbetrieb mit dem Format eines Steuerpakets in einem Kalibrationsmodus.
Das Beispiel nimmt eine Sendeperiode mit vier Taktzyklen an, einen Steuerbus mit
fünf Leitungen, und eine „normale" ungerade/gerade Übertragung auf den steigenden
und fallenden Flanken des Taktes an. In dem Beispiel sind „D" Bits Geräte-ID-Bits,
„O"-Bits sind Operations Code (Opcode)-Bits, „ST" sind Rahmen-Bits,
„M" Bits sind Schreibe-Masken-Bits und „A" Bits sind Adress-Bits.
In dem Datenpaket des Kalibrationsmodus werden benötigte Kalibrationsbits
in den ungeraden Positionen angeordnet. Die gerade positionierten Bits werden tatsächlich
zu „kümmere dich nicht darum" (englisch = „don't care") Bits. Diese
Anordnung von Bits erlaubt es während des normalen und des Kalibrationsmodus des
Betriebs, das gleiche Gesamtsteuerpaketformat und -protokoll zu verwenden.
Während der Kalibration wird die Steuerpaketdekodierlogik richtige
Bits für die ungeraden Bits und „kümmere dich nicht darum" Bits für die geraden
Bits empfangen. Die zum Dekodieren von Steuerdaten während des Normalbetriebs verwendete
Logik benötigt bemerkenswert wenig Modifikation, um während der Kalibration auch
Steuerdaten zu dekodieren. Wie in der 43 dargestellt
ist, müssen nur das einzelne zusätzliche Gatter und die Steuerleitung, kombiniert
420, zu der normalen Logik hinzugefügt werden.
In dem durch die 42 und 43
dargestellten Beispiel veranlasst ein serielles Register-Bit alle Steuerpakete dazu,
verarbeitet zu werden, unabhängig von dem Zustand der Steuerpaket D[4:0]-Bits oder
dem Geräte-ID-Register. Solange das serielle Register-Bit vor den Beginn der Kalibration
gesetzt ist und das System keine maskierten Schreibzugriffe ausführt, wird die Steuerverbindung
mit den oben beschriebenen, erweiterten Grenzwert zuverlässig arbeiten.
Beschränkungen des adressierbaren Speicherbereichs, die sich durch
das Vorstehende ergeben, müssen berücksichtigt werden, wenn eine Kalibrationssequenz
definiert wird. Darüber hinaus müssen, da Opcode- und Adress-Bits unter Verwendung
dieses Ansatzes kannibalisiert werden, das Steuerpaketformat und die entsprechende
Kalibrationssteuerlogik modifiziert werden. Derartige Abwägungen sind dem Durchschnittsfachmann
der Technik bekannt. Die vorstehenden Beispiele des Steuerpakets und der damit verbundenen
Dekodierlogik sind hochspezifisch für eine derzeit bevorzugte Ausführungsform des
Bussystems. Jedes vernünftige Steuerpaketformat, jede Definition von Bits und jede
sich daraus ergebende Dekodierlogik kann verwendet werden, um eine duale Operation
der Speichervorrichtung zu bewirken, wie zwischen normaler Operation und Kalibration,
mit minimaler Grundlast (engl. „overhead").
Die vorstehenden Ausführungsformen der vorliegenden Erfindung illustrieren
verschiedene Implementierungen der Zeit- und/oder Spannungssteuerschaltungen in
den Slave-Geräten eines beispielhaften Bussystems. Die Bussystemdesigner könnten
jedoch wünschen, die Größe, die Kosten und die Komplexität der Slave-Geräte zu minimieren.
Alternativ können Bussystemdesigner eine sehr leistungsstarke Mastervorrichtung
zur Verfügung stellen. Was immer die Motivation ist, dies zu tun, können die Zeit-
und/oder Spannungssteuerschaltungen, die zuvor als in individuellen Slave-Geräten
befindlich beschrieben wurden, in dem Master implementiert werden.
Ein Master, der derartige Schaltungen aufweist, kann im Allgemeinen
Spannungs/Zeitanpassungen auf eine von zwei Weisen implementieren: einem Durchschnittssteueransatz
oder einem individuellen Steueransatz. In dem Durchschnittssteueransatz werden optimierende
Spannungs-/Zeit-Offsets während der Kalibration für jedes Slave-Gerät kalibriert.
Wenn einmal ein Feld von Offset-Werten kalkuliert wurde, wird ein durchschnittlicher
Offset-Wert in dem Master bestimmt. Dieser durchschnittliche Offset-Wert wird in
einem Register auf dem Master gespeichert und verwendet, um die Lese-/Schreibe-Synchronisation
oder die Lese-/Schreibe-Spannung für Daten anzupassen, die zwischen dem Master und
allen Slave-Geräten kommuniziert werden.
In dem individuellen Slave-Gerätsteueransatz wird ein separater Zeit-/Spannungs-Offset-Wert
in dem Master für jeden Slave gespeichert, um ein Feld von Zeit-/Spannungs-Offset-Werten
zu erzeugen. Wie oben beschrieben, kann ein angemessener Offset-Wert während der
Kalibration für jeden Slave bestimmt werden. Einmal bestimmt, wird der Offset-Wert
den Lese-/Schreibe-Operationen speziell zugeführt, die den entsprechenden Slave
verwenden.
44 stellt ein Beispiel dar, in welchem
eine Stromsteuerung für jedes Slave-Gerät auf einer individuellen Basis unter Verwendung
von in dem Master gespeicherten Offset-Werten implementiert ist. Wie es in vielen
modernen Bussystemen typisch ist, nimmt dieses Beispiel an, dass jedes Slave-Gerät
(12a–12n) innerhalb des Bussystems durch eine einzigartige
Geräte-ID identifiziert ist. Somit wird eine „Anfrage" für eine Zugriff (Lese/Schreibe)
auf Daten in einem Slave einen Geräte-ID-Indikator aufweisen. Dieses Beispiel zeigt
eine Geräte-ID-Abbildungsschaltung 430, die eine Anfrage empfängt und daraus
ein Geräte-ID Signal extrahiert. Das Geräte-ID-Signal wird einer
Auswahlschaltung 431, wie etwa einen MUX, zugeführt, welche auch eine Vielzahl
von Offset-Werten empfängt. Stromsteuerregister 432 (CCTLa, CCTLb ... CCTLn)
enthalten jeweils einen Offset-Wert für eine entsprechendes Slave-Gerät (12a,
12b, ..., 12n). Eine Sendesteuerregister CCTL (BCT)
433 wird auch zur Verfügung gestellt. Der in dem Sendesteuerregister gespeicherte
Offset-Wert wird durch den Master verwendet, wenn den gesamten Slave-Geräten Daten
kommuniziert werden. Dieser Offset-Wert kann der oben erwähnte durchschnittliche
Steuerwert sein.
Im normalen Betriebsmodus wird jedoch die von einer Slave-Zugriffsanfrage
extrahierte Geräte-ID verwendet, um einen entsprechenden Stromsteuer-Offset-Wert
für die Slave-Geräte, auf die zugegriffen wurde, auszuwählen. Der ausgewählte Stromsteuer-Offset-Wert
wird dann eine Treiberschaltung 434 zugeführt, welche den Strom von Schreibesignalen
(Steuer- oder Daten-) anpasst, der dem Slave-Gerät zugesandt wird. Das Beispiel
zeigt eine einzelne Signalleitung, es können jedoch ein oder mehrere Treiberschaltungen
den Ausgangsstrom auf einer Anzahl von Datenbussignalleitungen anpassen.
Aus diesem bestimmten Beispiel kann ein Durchschnittsfachmann der
Technik erkennen, dass ein sehr ähnlicher Ansatz herangezogen werden kann, um Lesesignalspannungsanpassungen
in dem Master zu implementieren. Darüber hinaus können auch Lese-Schreibe-Zeitanpassungen
auf der Basis eines durchschnittlichen Zeit-Offset-Wertes oder eines Feldes von
Zeit-Offset-Werten, die in dem Master gespeichert sind, vorgenommen werden. Zeitsteueranpassungen
können in Relation zu einem bestimmten Offset-Wert durch Anpassen des Master-Lese-/Schreibe-Taktsignals
oder durch Kommunizieren eines internen Lese-Schreibesignals, welches für die Slave-Geräte
spezifisch ist, über eine Signalleitung vorgenommen werden.
Anspruch[de]
Verfahren zum Bestimmen eines Ausgleichstreiberstromoffsets für eine
Slavevorrichtung (12a), die Daten an eine Mastervorrichtung (11)
über einen Datenbus (30) sendet, mit:
Treiben von Daten auf den Datenbus (30) an der Slavevorrichtung (12a);
Empfangen der Daten an der Mastervorrichtung (11) in einer Vergleichsschaltung;
Vergleichen eines Spannungspegels der Daten mit einer Referenzspannung;
Generieren eines Signals basierend auf dem Vergleich zwischen der Referenzspannung
und dem Spannungspegel der Daten, wobei das Signal eine Richtung zum Anpassen des
Spannungspegels der Daten derart angibt, dass der Spannungspegel der Daten zu der
Referenzspannung angepasst wird;
Kommunizieren des Signals von der Mastervorrichtung (11) an die Slavevorrichtung
(12a); und
Anpassen eines Wertes in einem Register (321, 331) gemäß dem Signal,
wobei das Register (321, 331) in der Slavevorrichtung (12a)
angeordnet ist und der Wert in dem Register (321, 331) einen Treiberstromoffset
für die Slavevorrichtung (12a) definiert.
Verfahren nach Anspruch 1, wobei ein Treiben von Daten auf den Datenbus
(30) weiterhin ein Treiben eines hohen Datenwertes auf eine erste Signalleitung
(335a) des Datenbusses (30) und ein Treiben eines niedrigen Datenwertes
auf eine zweite Signalleitung (335b) des Datenbusses (30) umfasst.
Verfahren nach Anspruch 2, ferner umfassend ein Generieren der Spannung
der Daten von einem mittleren Spannungspegel des hohen Datenwertes und niedrigen
Datenwertes.
Verfahren nach Ansprüchen 1, 2 oder 3, ferner umfassend ein Verschieben
des Wertes in dem Register (321), um den Treiberstromoffset für die Slavevorrichtung
(12a) zu halbieren, bevor Daten auf den Datenbus (30) an der Slavevorrichtung
(12a) getrieben werden.
Slavevorrichtung (12a) zur Verwendung in Verbindung mit einer
Mastervorrichtung (11), welche mit der Slavevorrichtung (12a)
durch einen Datenbus (30) verbunden ist, mit:
einem Register (321, 331) zum Speichern eines Treiberstromoffsetwertes;
einem Treiber zum Bereitstellen eines Datensignals auf einer Signalleitung des Datenbusses
(30); und
einer Stromsteuerschaltung, die an den Treiber gekoppelt ist, zum Steuern eines
Ausgangstroms des Treibers in Übereinstimmung mit dem Treiberstromoffsetwert, der
in dem Register (321, 331) gespeichert ist, wobei die Stromsteuerschaltung
zum Empfangen eines Signals ausgebildet ist, das eine Richtung zum derartigen Anpassen
eines Spannungspegels der Daten angibt, so dass der Spannungspegel der Daten an
eine Referenzspannung angepasst wird, wobei der Treiberstromoffsetwert in dem Register
(321, 331) in Übereinstimmung mit dem Signal angepasst wird.
System mit: einem Slave (12a);
einem Master (11), der an den Slave (12a) gekoppelt ist, wobei
der Master enthält:
Mittel zum Empfangen eines Datensignals, welches durch den Slave (12a)
über einen Datenbus (30) gesendet ist; und
Mittel zum Genieren eines Signals, das eine Richtung zum derartigen Anpassen eines
Spannungspegels der Daten angibt, so dass der Spannungspegel der Daten an eine Referenzspannung
angepasst wird;
Mittel zum Übertragen des Signals an den Slave (12a); und
wobei der Slave (12a) aufweist:
ein Register (321; 331) zum Speicher eines Treiberstromoffsetwertes
in Übereinstimmung mit dem Signal, welches durch den Master (11) übertragen
ist;
einen Treiber zum Treiben der Daten auf den Datenbus (30); und
eine Stromsteuerschaltung, die an den Treiber gekoppelt ist, zum Steuern eines Ausgangstromes
des Treibers in Übereinstimmung mit dem Treiberstromoffsetwert, der in dem Register
(321, 331) gespeichert ist, wobei die Stromsteuerschaltung des
Slaves (12a) dafür ausgebildet ist, das Signal von dem Master (11)
zu empfangen und den Treiberstromoffsetwert in dem Register (321,
331) in Antwort auf das Signal anzupassen.
Verfahren eines Betriebes in einem System, das eine erste integrierte
Schaltkreisvorrichtung (11, 12a) und eine zweite integrierte Schaltkreisvorrichtung
(12a, 11) umfasst, mit:
Senden einer Datensequenz von der ersten integrierten Schaltkreisvorrichtung (11,
12a) an die zweite integrierte Schaltkreisvorrichtung (12a,
11);
Abtasten der Datensequenz durch die zweite integrierte Schaltkreisvorrichtung (12a,
11) zum Erzeugen von Empfängerdaten;
Senden der Empfängerdaten von der zweiten integrierten Schaltkreisvorrichtung (12a,
11) an die erste integrierte Schaltkreisvorrichtung (11,
12a);
Durchführen eines Vergleichs zwischen der Datensequenz und den Empfängerdaten; und
basierend auf dem Vergleich, Generieren einer Information, die einen kalibrierten
Zeitoffset angibt; und
Verwenden der Information, die den kalibrierten Zeitoffset angibt, um eine Zeit
anzupassen, die einem Datenübertragen von der ersten integrierten Schaltkreisvorrichtung
(11, 12a) an die zweite integrierte Schaltkreisvorrichtung (12a,
11) zugeordnet ist.
Verfahren nach Anspruch 7, ferner umfassend ein Speichern der Empfängerdaten
in der zweiten integrierten Schaltkreisvorrichtung (12a).
Verfahren nach Anspruch 7 oder 8, ferner umfassend ein Einstellen einer
Sendezeit der Daten durch die erste integrierte Schaltkreisvorrichtung (11)
basierend auf der Information, die den kalibrierten Zeitoffset angibt.
Verfahren nach Anspruch 7 oder 8, ferner umfassend ein Einstellen
einer Zeit eines Abtastens der Daten durch die zweite integrierte Schaltkreisvorrichtung
(12a, 11) basierend auf der Information, die den kalibrierten
Zeitoffset angibt.
Verfahren nach Anspruch 7, 8, 9 oder 10, wobei das Verfahren als ein
Teil einer Kalibrationssequenz durchgeführt wird.
Verfahren nach wenigstens einem der Ansprüche 7 bis 11, wobei das
Verfahren periodisch durchgeführt wird.
Verfahren nach wenigstens einem der Ansprüche 7 bis 12, wobei das
Verfahren während einer Initialisierung des Systems durchgeführt wird.
Verfahren nach wenigstens einem der Ansprüche 7 bis 13, wobei der
kalibrierte Zeitoffset ein Offset relativ zu einem Mastertakt ist, der durch die
zweite integrierte Schaltkreisvorrichtung (12a) empfangen wird.
Verfahren nach wenigstens einem der Ansprüche 7 bis 14, wobei die
erste integrierte Schaltkreisvorrichtung (11) eine Controllervorrichtung
und die zweite integrierte Schaltkreisvorrichtung (12a) eine Speichervorrichtung
ist und wobei das Verfahren weiterhin ein Durchführen von Schreiboperationen zu
der Speichervorrichtung unter Verwendung der Information aufweist, die den kalibrierten
Zeitoffset angibt.
Verfahren nach wenigstens einem der Ansprüche 7 bis 15, wobei:
Senden der Datensequenz von der ersten integrierten Schaltkreisvorrichtung (11,
12a) zu der zweiten integrierten Schaltkreisvorrichtung
(12a, 11) ein Senden eines Kalibrationstaktsignales umfasst, welches
durch ungefähr 90° bezüglich eines Haupttaktsignales verschoben ist; und
Senden von Daten von der ersten integrierten Schaltkreisvorrichtung (11,
12a) an die zweite integrierte Schaltkreisvorrichtung (12a,
11) ein Senden von Daten in Verbindung mit Senden des Haupttaktsignales
umfasst.
Verfahren nach wenigstens einem der Ansprüche 7 bis 16, wobei Senden
der Datensequenz, Abtasten der Datensequenz, Senden der Empfängerdaten und Durchführen
des Vergleichs eine Vielzahl von Malen wiederholt werden, wobei eine Vielzahl von
unterschiedlichen Zeitoffsets verwendet wird und ein Generieren der Information,
die den kalibrierten Zeitoffset angibt, ein Identifizieren eines Zeitoffsets umfasst,
der einer Veränderung in den Empfängerdaten im Vergleich zu den Empfängerdaten bei
einem anderen Zeitoffset zugeordnet ist.
Verfahren nach wenigstens einem der Ansprüche 7 bis 16, wobei Senden
der Datensequenz, Abtasten der Datensequenz, Senden der Empfängerdaten und Durchführen
des Vergleichs eine Vielzahlen von Malen wiederholt werden, wobei eine Vielzahl
von unterschiedlichen Zeitoffsets verwendet wird und ein Generieren der Information,
die den kalibrierten Zeitoffset angibt, ein Identifizieren erster und zweiter Zeitoffsets
umfasst, die gegenüberliegenden Flanken eines Datenauges zugeordnet sind, und wobei
der kalibrierte Zeitoffset ein Offset zwischen dem ersten und zweiten Zeitoffset
ist.
System mit:
einem Signalweg (30);
einer ersten integrierten Schaltkreisvorrichtung (11) mit einer Sendervorrichtung,
welche zum Übertragen einer Datensequenz auf dem Signalweg (30) ausgebildet
ist;
einer zweiten integrierten Schaltkreisvorrichtung (12a), welche an den
Signalweg (30) gekoppelt ist, mit:
einer Empfängervorrichtung (60), welche zum Abtasten der Datensequenz zum
Erzeugen von Empfängerdaten ausgebildet ist; und
einer Sendervorrichtung, welche zum Übertragen der Empfängerdaten an die erste integrierte
Schaltkreisvorrichtung (11) ausgebildet ist;
wobei die erste integrierte Schaltkreisvorrichtung (11) weiterhin dafür
ausgebildet ist:
einen Vergleich zwischen der Datensequenz und den Empfängerdaten durchzuführen;
basierend auf diesem Vergleich eine Information zu generieren, die einen kalibrierten
Zeitoffset angibt; und
die Information, die den kalibrierten Zeitoffset angibt, zum Anpassen einer Zeit
zu verwenden, die der Übertragung von Daten von der ersten integrierten Schaltkreisvorrichtung
(11) an die zweite integrierte Schaltkreisvorrichtung (12a) zugeordnet
ist.
System nach Anspruch 19, wobei die zweite integrierte Schaltkreisvorrichtung
(12a) ein Register (62) zum Speichern eines Wertes aufweist, der
der Information entspricht, die den kalibrierten Zeitoffset angibt.
System nach Anspruch 20, wobei die zweite integrierte Schaltkreisvorrichtung
(12a) eine Regelschleifenschaltung (60) zum Generieren eines Empfangstaktsignals
aufweist, das in Übereinstimmung mit dem Wert angepasst wird, der in dem Register
(62) gespeichert ist.
System nach mindestens einem der Ansprüche 19, 20 oder 21, wobei die
erste integrierte Schaltkreisvorrichtung (11) ein Register zum Speichern
eines Wertes aufweist, der der Information entspricht, die den kalibrierten Zeitoffset
angibt.
System nach Anspruch 22, wobei die erste integrierte Schaltkreisvorrichtung
(11) eine Regelschleifenschaltung (140) zum Generieren eines Sendetaktsignals
aufweist, das in Übereinstimmung mit dem Wert angepasst wird, der in dem Register
gespeichert ist.