PatentDe  


Dokumentenidentifikation DE60027038T2 24.08.2006
EP-Veröffentlichungsnummer 0001226507
Titel BUSSYSTEM OPTIMIERUNG
Anmelder Rambus Inc., Los Altos, Calif., US
Erfinder 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
Sprache des Dokument EN
EP-Anmeldetag 12.10.2000
EP-Aktenzeichen 009720871
WO-Anmeldetag 12.10.2000
PCT-Aktenzeichen PCT/US00/28134
WO-Veröffentlichungsnummer 2001029680
WO-Veröffentlichungsdatum 26.04.2001
EP-Offenlegungsdatum 31.07.2002
EP date of grant 29.03.2006
Veröffentlichungstag im Patentblatt 24.08.2006
IPC-Hauptklasse G06F 13/42(2006.01)A, F, I, 20051017, B, H, EP

Beschreibung[de]
GEBIET DER ERFINDUNG

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 12a12n, 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 12a12n gekoppelten Bus 30. Bus 30 ist ein Hochgeschwindigkeitsbus mit niedrigem Spannungshub, welcher mehrere Signalleitungen aufweist und Daten zwischen Slaves 12a12n und Master 11 überträgt.

Master 11 und jeder Slave 12a12n 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 12a12n 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 12a12n 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 12a12n Bus-Transceiver.

Master 11 und Slaves 12a12n 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 12a12n 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 12a12n 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 12a12n. 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 12a12n. Das durch den Takt 35 erzeugte Taktsignal wird durch eine Taktleitung 16 zu dem Master 11 und zu den Slaves 12a12n ü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 12a12n 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 12a12n 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 12a12n entlang des Busses 30 vorbei. Slaves 12a12n 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 12a12n 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 12a12n 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 702A702K 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 704A704k 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 706A706K 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 706A706K durch dieselbe Flanke von tclk getaktet werden.

Ausgleichstreiber 702A schließen einen Multiplexer 709, einen Satz von zusätzlichen Gates 712A712R und entsprechende binäre gewichtete Transistoren (1x, 2x, ... 2R – 1x), ein und einen Satz von subtrahierenden logischen Gates 711A711R und entsprechende binäre gewichtete Transistoren –1x, –2x, ..., –2R – 1x). In der in 36B dargestellten Ausführungsform enthält jedes der Ausgleichsregister 704A704K 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 711A711R gesteuert werden, aktiviert sind, und alle Transistoren, die durch addierende logische Gatter 712A712R 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 711A711R gesteuerten Transistoren und alle durch die addierenden logischen Gatter 712A712R 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 711A711R 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 702B702K 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 702A702K 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 704A704K 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 811A811K zwischen positiven und negativen Versionen von entsprechenden Ausgleichskoeffizienten C1EQ-CKEQ, gespeichert in Ausgleichsregistern in 804A804K, 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 804A804K durch entsprechende Zweierkomplementerzeuger 809A809K 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 811A811K 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 811A811K 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 804A804K 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 2931 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 (12a12n) 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]
  1. 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.
  2. 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.
  3. Verfahren nach Anspruch 2, ferner umfassend ein Generieren der Spannung der Daten von einem mittleren Spannungspegel des hohen Datenwertes und niedrigen Datenwertes.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. Verfahren nach Anspruch 7, ferner umfassend ein Speichern der Empfängerdaten in der zweiten integrierten Schaltkreisvorrichtung (12a).
  9. 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.
  10. 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.
  11. Verfahren nach Anspruch 7, 8, 9 oder 10, wobei das Verfahren als ein Teil einer Kalibrationssequenz durchgeführt wird.
  12. Verfahren nach wenigstens einem der Ansprüche 7 bis 11, wobei das Verfahren periodisch durchgeführt wird.
  13. Verfahren nach wenigstens einem der Ansprüche 7 bis 12, wobei das Verfahren während einer Initialisierung des Systems durchgeführt wird.
  14. 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.
  15. 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.
  16. 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.
  17. 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.
  18. 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.
  19. 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.
  20. 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.
  21. 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.
  22. 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.
  23. 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.
Es folgen 45 Blatt Zeichnungen






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com