-
Diese Erfindung betrifft allgemein
automatische Testgeräte,
und insbesondere die Verlängerungen
von synchronen Bussen in automatischen Testsystemen, die synchrone
Buseinrichtungen testen.
-
HINTERGRUND
DER ERFINDUNG
-
Moderne Computersysteme verwenden
synchrone Hochgeschwindigkeitsbusse zum Kommunizieren von Daten.
Synchrone Busse koordinieren Operationen auf einem Bus durch Bereitstellen
eines gemeinsamen Taktes für
sämtliche
Buseinrichtungen. Asynchrone Busse verwenden nicht einen gemeinsamen
Takt, um Aktivitäten
zu koordinieren. Beispiele von synchronen Bussen umfassen PCI, AGP und
Cardbus.
-
Hersteller von elektronischen Schaltungskarten
(elektronischen Schaltungsplatinen) verwenden automatische Testgeräte ("ATE" oder "Tester") um sicherzustellen,
dass ihre Produkte Anforderungen für ein Betriebsverhalten und
eine Funktionalität
erfüllen. In
einer Testkonfiguration ist eine Einheit, die sich unter einem Test
befindet ("UUT", Unit Under Test)
an einem Tester über
ein oder mehrere Schnittstellenverbinder angebracht, und der Tester
trainiert die UUT durch Reproduzieren der eigentümlichen Umgebung der UUT. Wenn
UUT selbst eine synchrone Buskarte ist, könnte ein Tester die Busumgebung
dadurch reproduzieren, dass ein vollständiger synchroner Bus eingebaut
wird, zu dem die UUT eine Verbindung hat.
-
Bestimmte Charakteristiken von synchronen Bussen
machen einen ATE Test von synchronen Buskarten problematisch. Eine
Hauptbeschränkung von
synchronen Bussen besteht darin, dass sie allgemein kurz gehalten
werden müssen,
um bei hoher Geschwindigkeit zu arbeiten. Synchrone Busse, die bei
33 MHz und darüber
arbeiten, sind selten mehr als ein Fuß lang. Die Notwendigkeit synchrone
Busse kurz zu halten zwingt den gesamten Bus mit seiner gesamten
begleitenden Hardware und Kühlung
an eine Stelle in der Nähe
der Testerschnittstelle. Das Gebiet um die Testerschnittstelle herum
weist jedoch eine Tendenz auf bereits überlaufen zu sein. Zusätzlich dazu,
dass sie das Hauptaugenmerk von den meisten Resourcen des Testers
ist, umfasst die Testerschnittstelle typischerweise auch Testadapter,
Zusatzgeräte,
und Behandler zum Laden und Entladen von UUTs. Deshalb steht die
Notwendigkeit synchrone Busse kurz zu halten in Konflikt mit dem
Mangel an verfügbarem
Platz in der Nähe
der Testerschnittstelle.
-
EP-A-0624846 offenbart ein Verfahren zum Verlängern eines
synchronen Busses unter Verwendung einer Zwischenverbindung. Signale
von dem synchronen Bus werden über
die Zwischenverbindung an eine entfernte Einrichtung getrieben.
Rückkehrsignale
von der entfernten Einrichtung werden über die Zwischenverbindung
angetrieben und an den synchronen Bus angelegt. Jedoch ist dieses
Verfahren begrenzt auf Zwischenverbindungen, die relativ kurz sind,
bei denen die Setzzeit von Signalen, die über die Zwischenverbindung
getrieben werden, nicht berücksichtigt
werden muss.
-
Synchrone Busse weisen auch das Problem auf,
dass sie eine schlechte Fehlerisolation aufweisen. Defekte auf einer
Karte können
als Fehler auf anderen Karten auftreten und können einen gesamten Bus zu
einer Fehlfunktion veranlassen. Ein kritischer Test für ein erfolgreiches
ATE ist die Fähigkeit Fehler
zu isolieren. Der Mangel einer Fehlerisolation, die den meisten
synchronen Bussen gemeinsam ist, steht in einem direkten Konflikt
mit der Notwendigkeit für
eine hohe Fehlerrelation in ATE.
-
Einige synchrone Busse unterstützen eine Änderung
von Buskarten mit einer angelegten Energie und können eine neue Karte "live" identifizieren, ohne
dass eine explizite Rücksetzung
benötigt
wird (ein Merkmal, welches als "hot-swapping" ("Heiß-Auswechselung"; "Auswechselung bzw.
Austausch im Betrieb")
bekannt ist). Viele Busse werden jedoch nicht aufgebaut, um zu ermöglichen,
dass Karten schnell geändert
werden können.
Diese Busse müssen
heruntergefahren werden, bevor eine Karte eingesetzt oder entfernt
werden kann, und eine zeitaufwendige Zurücksetzung muss ausgeführt werden,
bevor ein normaler Betrieb wieder aufgenommen werden kann. ATE Systeme
testen typischerweise ein großes
Volumen von Karten in einer Fertigungsstraßenweise. Für Busse, die ein hot-swapping nicht
unterstützen,
steht die zeitaufwendige Prozedur zum Auswechseln (swapping) von
Karten in einem Konflikt mit der ATE Anforderung für einen
höheren Durchsatz.
-
1 zeigt
einen synchronen Bus dieses Typs, der gewöhnlicherweise in modernen Computersystemen
verwendet wird, und illustriert die Notwendigkeit, dass synchrone
Busse kurz gehalten werden. Der Takttreiber 112 puffert
ein Mastertaktsignal 114 und stellt eine individuelle Version
des Mastertakts an jedem Taktempfänger 120 auf jeder
Einrichtung 122, 124 und 126, die in
den Bus 110 gesteckt sind, bereit. Der Takttreiber 112 verteilt
das Mastertaktsignal 114 an sämtliche Schlitze auf dem Bus
mit fast einer Null-Timing-Verschiebung: d.h. eine Phasenverschiebung
von fast Null tritt zwischen den Taktsignalen auf den unterschiedlichen
Schlitzen des Busses auf.
-
Wie in 1 gezeigt
umfasst jede Einrichtung 122, 124 und 126 auf
dem Bus 110 einen Datensender 116, einen Datenempfänger 118 und
einen Taktempfänger 120.
Der Bus 110 ist in einer Mehrfachabzweigungs-, Mehrfachmaster-Konfiguration angeordnet,
bei der irgendeine Einrichtung Daten an irgendeine andere Einrichtung/Daten
von irgendeiner Einrichtung auf den Bus senden oder empfangen kann.
Z.B. kann die Einrichtung 122 Datensignale unter Verwendung
ihres Senders 116 an die Einrichtung 126 senden,
und die Einrichtung 126 kann dann die Datensignale unter
Verwendung ihres Empfängers 120 empfangen.
-
1 identifiziert "Tprop" als die Zeit, die
benötigt
wird, dass Datensignale sich den Bus herunterbewegen und abklingen
(sich setzen). Tprop ist eine endliche Verzögerung in
Bezug auf eine Anzahl von Faktoren, einschließlich der physikalischen Länge des
Busses, seiner Impedanz, der Impedanz der Einrichtungen auf dem
Bus, einer induktiven und kapazitiven Last, und der Busabschlüsse. Wenn
die Periode des Mastertakts 114 viel länger als Tprop ist,
dann weisen Datensignale von der Einrichtung 122 eine geeignete
Zeit auf, um sich den Bus herunterzubewegen und an der Einrichtung 126 abzuklingen,
bevor die nächste
Taktflanke auftritt. Wenn Tprop sich der Taktperiode
annähert
oder diese übersteigt,
empfängt
die Einrichtung 126 jedoch ihre Taktflanke, bevor die Datensignale
abklingen, und ein ungültiges Takten
kann auftreten. Für
einen richtigen Betrieb muss Tprop immer
kleiner als die Taktperiode sein. Der praktische Test der Anforderung,
dass Tprop kleiner als die Taktperiode ist,
ist, dass sehr schnelle synchrone Busse auch eine Tendenz aufweisen
sehr kurz zu sein.
-
Verschiedene Techniken sind verwendet worden,
um die Länge
von synchronen Bussen zu verlängern,
mit einem Teilerfolg. Diese Techniken umfassen die Änderung
der Busbelastung, die Verlangsamung des Busses, die Überbrückung und
eine entfernte Bussteuerung.
-
ÄNDERUNG
DER BUSBELASTUNG
-
Die Verzögerungszeit Tprop hängt nicht
nur von der physikalischen Länge
des Busses, sondern auch von seiner elektrischen Belastung ab. Durch Verringern
der Bussbelastung ist es möglich
einen Bus physikalisch zu verlängern
und noch Tprop kürzer als die Taktperiode zu
halten.
-
Als eine praktische Vorgehensweise
erzeugt die Verringerung der Busbelastung nur kleine Verstärkungen.
Die meisten Busimplementierungen steuern eine Busbelastung agressiv
und lassen wenig Raum für
eine Besserung. Unter den besten Bedingungen erlaubt die Reduzierung
der Busbelastung (Buslast), dass synchrone Busse nur einige wenige
Inche verlängert
werden. In einer ATE Umgebung ist diese Verbesserung zu klein, um
nützlich
zu sein.
-
VERLANGSAMEN
DES BUSSES
-
Wenn die Taktperiode eines Busses
seine maximale Länge
begrenzt, kann man theoretisch einen Bus verlängern, indem seine Taktperiode
verlangsamt wird. Je länger
die Taktperiode ist, desto weiter können sich Daten ausbreiten,
bevor ein falsches Takten auftritt.
-
Eine Verlangsamung der Taktperiode
erscheint eine einfach und attraktive Vorgehensweise zum Verlängern eines
Busses sein, aber dieses Technik weist mehrere Nachteile auf. Zunächst erlauben
nicht alle Busse, dass ihre Taktperioden geändert werden. Zweitens, eine
Verwendung eines Busses bei reduzierter Geschwindigkeit verlangsamt Operationen
auf dem Bus und kann den Durchsatz eines gesamten Systems reduzieren.
Drittens addiert eine Verlängerung
eines Busses eine Belastung zu dem Bus hinzu und kann ein Umlaufen
(Ringing) in dem Taktsignal verursachen, wobei dieses Umlaufen selbst
ein falsches Takten verursacht. Die Reduzierung der Taktperiode
reduziert den Umlauf nicht. In einigen Umständen reduziert eine Verlangsamung der
Flanken des Takts jedoch tatsächlich
das Umlaufen. Eine Verlangsamung von Taktflanken ist in der Praxis
jedoch schwierig zu erreichen. Als letztes kann ein Testen von UUTs
bei reduzierter Geschwindigkeit unter Umständen fehlschlagen bestimmte
Typen von Defekten zu enthüllen.
Viele Fehler zeigen sich selbst nur dann, wenn eine UUT bei ihrer
Nenngeschwindigkeit betrieben wird. Eine Verlangsamung des Takts
steht einer Fehlerfassung entgegen und steht somit im Konflikt mit
einem Hauptzweck der ATE.
-
ÜBERBRÜCKUNG
-
2 zeigt
eine Busüberbrückung, eine kommerziell
verfügbare
Technik zum Verlängern
von synchronen Bussen. Ein Produkt, dass eine Form von Busüberbrückung bereitstellt,
ist das Modell 2130, welches von SBS Technologies, Inc.,
St. Paul, MN erhältlich
ist. Wie in 2 gezeigt
ist eine Überbrückungseinrichtung 218 zwischen
einem ursprünglichen
Synchronbus 210 und einem verlängerten synchronen Bus 212 angeordnet.
Die Überbrückungseinrichtung 218 kopiert
Signale zwischen Bussen 210 und 212 und erlaubt
einer entfernten Einrichtung 216 mit einer lokalen Einrichtung 214 vor-
und zurückzukommunizieren.
Eine Überbrückung schaltet Busses
effektiv in Reihe, während
die Busse elektrisch voneinander isoliert werden. Mehrfachbrückeneinrichtungen
können
in Kaskade angeordnet werden, um einen Bus noch weiter zu verlängern.
-
Jedes Bussegment, das einen Teil
einer überbrückten Konfiguration
bildet, muss mit der Spezifikation des Busses für eine maximale Länge übereinstimmen.
Somit erlaubt eine Überbrückung, dass Busse
in Kaskade angeordnet werden, aber sie verlängert die Länge von irgendeinem individuellen Bussegment
nicht. Deshalb zielt die Überbrückung nicht auf
die Notwendigkeit zum Freihalten des Gebiets um die UUT herum ab.
-
ENTFERNTE
BUSSTEUERUNG
-
Eine entfernte Bussteuerung ist verwendet worden,
um synchrone Busse über
lange Entfernungen zu verlängern.
Ein Produkt, das so erscheint, als ob es eine Form von entfernter
Bussteuerung bereitstellt, ist das Modell TA300 von Catalyst Enterprises, Inc.,
San Jose, CA. Eine entfernte Bussteuerung arbeitet durch Umsetzen
von Bussignalen in ein anderes Busprotokoll, Senden der ungesetzten
Signale an eine entfernte Stelle, und Umsetzen der Signale zurück wie in
ihre ursprüngliche
Form, um die Bussignale an der entfernten Stelle zu rekonstruieren.
-
3 zeigt
ein Beispiel einer entfernten Bussteuerung. Eine Steuereinrichtung 314 auf
einem lokalen Synchronbus 310 kommuniziert mit einer entfernten
Einrichtung 320 auf einem entfernten Synchronbus 312.
Die Busse kommunizieren unter Verwendung einer lokalen Umsetzungseinrichtung 316, die
in den lokalen synchronen Bus 310 gesteckt ist, einer entfernten
Umsetzungseinrichtung 318, die in den entfernten Bus 312 eingesteckt
ist, und einer Zwischenverbindung 322 zwischen den zwei
Umsetzungseinrichtungen. In bestimmten Anwendungen wird der entfernte
Bus 312 weggelassen, und die entfernte Einrichtung 320 wird
direkt in die Umsetzungseinrichtung 318 eingesteckt.
-
Eine entfernte Bussteuerung ist fast
unendlich verlängerbar,
weist aber viele Nachteile auf, insbesondere in einem ATE. Zunächst weist
eine entfernte Bussteuerung eine Tendenz auf kostenaufwendig zu
sein, weil sie einen signifikanten Betrag einer Hardware an Software
benötigt,
um ihre Steuerung zu erreichen. Zweitens kommuniziert eine entfernte
Bussteuerung nicht mit der entfernten Karte unter Verwendung der
natürlichen
Umgebung der entfernten Karte. Eine entfernte Bussteuerung benötigt eine
Umsetzung in ein anderes Protokoll, z.B. ein serielles Busprotokoll,
welches für
eine Übertragung über große Entfernungen
geeignet ist. Eine entfernte Bussteuerung verwendet nicht den natürlichen "Einrichtungstreiber" der entfernten Karte.
Ein "Einrichtungstreiber" ist ein Programm,
das eine Kommunikation zwischen dem Betriebssystem eines Hostcomputers
und einer Einrichtung managt. Eine entfernte Bussteuerung fügt ein anderes
Busprotokoll zwischen dem Betriebssystem und der Einrichtung ein
und verwendet den natürlichen
Einrichtungstreiber nicht, um die entfernte Karte zu trainieren.
Drittens erfordert eine entfernte Bussteuerung die Verwendung einer
Hardware in der Nähe
der UUT. Sogar dann, wenn die entfernte Bussteuerung 312 entfernt ist,
ist die Umsetzungseinrichtung 318 noch in der Nähe der UUT
angeordnet.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Im Hinblick auf den voranstehenden
Hintergrund ist es eine Aufgabe der Erfindung einen synchronen Bus
um eine beliebig lange Entfernung unter Verwendung des natürlichen
Busprotokolls des Busses zu verlängern.
-
Eine andere Aufgabe der Erfindung
besteht darin ein Austauschen von entfernten Buskarten im Betrieb
(hot-swapping) unabhängig
davon zu erlauben, ob der Bus normalerweise ein hot-swapping unterstützt.
-
Es ist noch eine weitere Aufgabe
zu verhindern, dass Fehler auf der entfernten Buskarte bewirken,
das Fehler an anderen Stellen eines Systems auftreten, und deshalb
eine Fehlerisolation zu fördern.
-
Um die vorangehenden Aufgaben und
andere Aufgaben und Vorteile bereitzustellen verwendet ein Verfahren
zum Verlängern
eines synchronen Busses eine Verlängerungseinrichtung, die physikalisch
an dem synchronen Bus angreift. Das Verfahren umfasst den Schritt
zum Empfangen einer Vielzahl von Bussignalen von dem synchronen
Bus, das Treiben der Vielzahl von Bussignalen an eine entfernte Einrichtung über eine
Zwischenverbindung, und das Empfangen von Rückkehrsignalen von der entfernten
Einrichtung über
die Zwischenverbindung. Das Verfahren umfasst das Einrichten eines
Aushalteintervalls, welches wenigstens so lang wie die Setzzeit der
Rückkehrsignale
ist, und das Anlegen der Rückkehrsignale
an den synchronen Bus, nachdem das Aushalteintervall abläuft.
-
In Übereinstimmung mit einem anderen
Aspekt der Erfindung umfasst ein Verfahren zum Verlängern eines
synchronen Busses unter Verwendung einer Verlängerungseinrichtung, die physikalisch
an dem synchronen Bus angreift, eine Überwachung des synchronen Busses,
um eine Transaktion mit der entfernten Einrichtung zu erfassen.
Die Transaktion umfasst Inhalte, die eine Konfiguration der entfernten Einrichtung
kodieren. Das Verfahren umfasst ferner das Speichern der Inhalte
der Transaktion mit der entfernten Einrichtung, um eine lokale Kopie
der Konfiguration der entfernten Einrichtung aufrecht zu erhalten.
-
In Übereinstimmung mit einem anderen
Aspekt der Erfindung umfasst ein Verfahren zum Testen von UUTs das
Aufbauen einer Aufzeichnung von Konfigurationsdaten für eine erste
UUT. Das Verfahren umfasst auch ein Abblocken eines Flusses von Energie
zwischen dem synchronen Bus und der ersten UUT, nachdem eine zweite
UUT installiert ist. Das Verfahren umfasst das Kopieren der Aufzeichnung von
Konfigurationsdaten für
die erste UUT auf die zweite UUT, bevor mit dem Test der zweiten
UUT weiter gemacht wird. Das Verfahren erlaubt dadurch, dass UUTs
sicher ausgetauscht werden, während der
synchrone Bus im Betrieb bleibt.
-
In Übereinstimmung mit einem anderen
Aspekt der Erfindung erleichtert ein Busverlängerer zum Verlängern eines
synchronen Busses das Testen von synchronen Buskarten. Der Busverlängerer umfasst
eine Verlängerereinrichtung,
die mit dem synchronen Bus gekoppelt ist, und eine Zwischenverbindung,
die mit der Verlängerereinrichtung
gekoppelt ist und sich über
eine Länge
zu einem Verbinder erstreckt, die angeordnet ist, um an einer UUT anzugreifen.
Die Verlängerereinrichtung
umfasst eine Aushalteschaltung, die mit der Zwischenverbindung und
dem synchronen Bus gekoppelt ist. Die Aushalteschaltung umfasst
ein Verzögerungsregister zum
Speichern eines Aushalteintervalls, auf Grundlage der Länge der
Zwischenverbindung, und eine Verzögerungsschaltung. Die Verzögerungsschaltung verhindert,
dass Rückkehrsignale,
die von der UUT ankommen, auf dem synchronen Bus bereitgestellt werden,
bis das Aushalteintervall abläuft.
-
Zusätzliche Aufgaben, Vorteile
und neuartige Merkmale der Erfindung ergeben sich näher aus
einer Berücksichtung
der folgenden Beschreibungen und den Zeichnungen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die Erfindung lässt sich besser durch Bezugnahme
auf die folgende ausführliche
Beschreibung und die beiliegenden Zeichnungen verstehen. In den Zeichnungen
zeigen:
-
1 eine
vereinfachte schematische Darstellung einer herkömmlichen synchronen Busarchitektur,
mit der die Erfindung arbeiten kann;
-
2 ein
Blockdiagramm, das die herkömmliche
Technik einer Überbrückung zeigt;
-
3 ein
Blockdiagramm, das die herkömmliche
Technik einer entfernten Bussteuerung zeigt;
-
4 ein
Blockdiagramm eines Busverlängerers,
in Übereinstimmung
mit der Erfindung;
-
5 ein
Blockdiagramm, welches die Bus-Snooper Schaltung der 4 mit Einzelheiten darstellt;
-
6 ein
Blockdiagramm, das die Aushalteschaltung der 4 mit Einzelheiten darstellt;
-
7 ein
Blockdiagramm, das die Verzögerungsbestimmungsschaltung
der 6 mit Einzelheiten
darstellt;
-
8a und 8b Flussdiagramme, die jeweils Beispiele
von Lese- und Schreiboperationen einer entfernten Einrichtung unter
Verwendung des Busverlängereres
der 4 beschreiben, wenn
die entfernte Einrichtung gerade in einem Buszielmodus arbeitet;
-
8c und 8d Flussdiagramme, die jeweils Beispiele
von Lese- und Schreiboperationen einer entfernten Einrichtung unter
Verwendung des Busverlängerers
der 4 beschreiben, wenn
die entfernte Einrichtung in einem Businitiatiormodus arbeitet;
-
9 ein
Blockdiagramm, das ein Testsystem zeigt, das einen Busverlängerer in Übereinstimmung
mit der Erfindung zum Testen einer entfernten UUT einschließt;
-
10a–10c ein Flussdiagramme, die
ein Verfahren zum Testen von ein oder mehreren entfernten UUTs in Übereinstimmung
mit der Erfindung darstellen.
-
BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORM
-
In Übereinstimmung mit der Erfindung
verlängert
ein Busverlängerer
einen physikalisch begrenzten synchronen Bus um einen beliebig langen Abstand,
während
das natürliche
Protokoll des synchronen Busses aufrecht erhalten wird. Der Busverlängerer unterstützt sowohl "Initiator" (Master) als auch "Ziel" (Slave) Operationen
einer entfernten Einrichtung. Der Busverlängerer in Übereinstimmung mit der Erfindung
ermöglicht,
dass die entfernte Einrichtung so arbeitet, als ob die entfernte
Einrichtung direkt in den Bus gesteckt wäre.
-
4 zeigt
in einer Blockdiagrammform einen Busverlängerer 400 in Übereinstimmung
mit der Erfindung. Der Busverlängerer
greift an einen Bus 110 (1),
z.B. einem PCI Bus, über
den Busverbinder 422 an. Eine Zwischenverbindung 418 ist
mit dem Busverlängerer
verbunden und verlängert
Bussignale über
einen beliebig langen Abstand zu einem entfernten Rückebenen-Verbinder 424,
wo eine entfernte Buskarte in Eingriff steht. Busabschlüsse 420 schließen die
Bussignale in der Nähe
des entfernten Rückebenen-Verbinders 424 ab.
-
Vorzugsweise nimmt der Busverlängerer 400 die
Form einer Standardbuskarte an. In der bevorzugten Ausführungsform
ist der Busverlängerer 400 eine
Einzelschlitz-PCI-Karte mit einer standardmäßigen PCI Größe und Form,
und kann in irgendeinen verfügbaren
Schlitz eines PCI Busses eingesteckt werden. Der Busverbinder 422 ist
vorzugsweise ein standardmäßiger PCI
Kartenverbinder und ein entfernter Rückebenen-Verbinder 424 ist
vorzugsweise ein standardmäßiger PCI
Rückebenen-Verbinder. Die Zwischenverbindung 418 ist
typischerweise ein Kabel, obwohl eine gedruckte Schaltungsplatine, eine
Flexikarte, oder irgendein anderes Mehrsignal-Leitungsmedium genauso
gut arbeiten können. Vorzugsweise
umfasst die Zwischenverbindung 418 Signalpfade mit gleichen
Längen,
und fügt
eine relativ geringe Timingverschiebung zwischen den Bussignalen
hinzu.
-
Wie in 4 gezeigt
umfasst ein Busverlängerer 400 eine
Bus-"Snooper" Schaltung 414,
eine entfernte Busschnittstelle 412, und eine Aushalteschaltung 416.
Die Bus-Snooper Schaltung 414 dekodiert Bustransaktionen
und führt
geeignete Aktivitäten
aus. Die entfernte Busschnittstelle 412 sendet und empfängt Bussignale
von dem Bus 110 und Rückkehrsignale
von der entfernten Einrichtung. Die Aushalteschaltung 416 wartet über ein
vorgegebenes Aushalteintervall, wobei sie nach dieser Zeit die Rückkehrsignale
an den Bus anlegt. Das Aushalteintervall ist vorzugsweise variabel
und wird auf ein Intervall gesetzt, welches ausreichend lang ist,
um zu ermöglichen,
dass die Rückkehrsignale
den Busverlängerer
erreichen und sich setzen.
-
In der bevorzugten Ausführungsform
wird die entfernte Busschnittstelle 412, die Bus-Snooper Schaltung 414 und
die Aushalteschaltung 416 zusammen auf einem einzelnen
Feld-programmierbaren Gatterfeld (Field Programmable Gate Array, "FPGA") unter Verwendung
einer 3,3 V CMOS Logik hergestellt. Ein FPGA wird zur Bequemlichkeit
verwendet und ist für
die Erfindung nicht wesentlich. Eine Anwendungs-spezifische integrierte
Schaltung (Application-Specific Integrated Circuit, ASIC) kann ebenfalls
verwendet werden sowie diskrete Komponenten oder andere Einrichtungen
mit hoher Dichte. Die FPGA Implementierung unterstützt ein
Betriebsverhalten mit 33 MHz und 32 Bit und stimmt mit dem PCI Version
2.2 Standard überein.
Die Konstruktion ist jedoch erweiterbar, um ein PCI Betriebsverhalten mit
66 MHz und 64 Bit auf anderen Bussen zu unterstützen.
-
Optional wird ein Steuerabschnit 410 innerhalb
des FPGA bereitgestellt, um mit einem ATE Controller über eine
Steuerleitung 426 zu kommunizieren. Unter Verwendung der
Steuerleitung 426 berichtet der Steuerabschnitt 410 Fehler
an den ATE Controller und empfängt
Betriebsbefehle von dem ATE Controller. Alternativ kommuniziert
der Steuerabschnitt direkt mit dem Bus 110, um Fehler zu
berichten und Betriebsbefehle zu empfangen. Vorzugsweise wird der
Steuerabschnitt 410 jedoch weggelassen, und der Busverlängerer 400 arbeitet
in einer selbstabgeschlossenen Weise, ohne dass eine explizite Steuerung
von außerhalb
des Busverlängerers benötigt wird.
Vorzugsweise benötigt
der Busverlängerer 400 eine
getrennte Software nicht oder verwendet diese nicht. Z.B. benötigt der
Busverlängerer
seinen eigenen Einrichtungstreiber nicht.
-
Die entfernte Busschnittstelle 412 markiert sowohl
die Quelle von Signalen, die an die entfernte Einrichtung gesendet
werden, als auch den Empfänger
von Rückkehrsignalen,
die von der entfernten Einrichtung gesendet werden. Um die Bussignale über eine
große
Entfernung an die entfernte Einrichtung zu senden und die Lastimpedanz
der Busabschlüsse 420 zu
treiben, umfasst die entfernte Busschnittstelle 412 vorzugsweise
Treiber mit niedriger Impedanz. Jeder Treiber mit niedriger Impedanz
besteht vorzugsweise aus mehreren CMOS Gattern des parallel geschalteten
FPGA. Um eine minimale Timingverschiebung zu erzielen weisen die
Treiber mit niedriger Impedanz vorzugsweise eine identische Schaltungstopologie
auf. CMOS Gatter werden vorzugsweise innerhalb des FPGA bereitgestellt,
um die Rückkehrsignale
von der entfernten Einrichtung zu empfangen und zu puffern. Durch
Aufrechterhalten einer konstanten charakteristischen Impedanz der Zwischenverbindung 418 und
durch Abschließen
des Busses mit Busabschlüssen 420 in
der Nähe
der entfernten Einrichtung, wird der Busverlängerer 400 Signale
ohne einen wesentlichen Umlauf oder eine wesentliche Verzerrung
senden und empfangen.
-
Der Busverlängerer 400 umfasst
auch eine Energieschaltschaltung 428, die mit der entfernten Busschnittstelle 412 gekoppelt
ist. Die Energieschaltschaltung blockt und leitet selektiv einen
Energieversorgungsstrom zwischen dem Verlängerer 400 und der
entfernten Einrichtung im Ansprechen auf ein digitales "Hot-Swapp" Signal, das an einem
Hot-Swapp Terminal 430 bereitgestellt wird, das in 4 gezeigt ist. Das Hot-Swapp
Signal weist diskrete Zustände auf,
nämlich
OFFEN und GESCHLOSSEN. Während des
OFFEN Zustands blockt die Energieschaltschaltung eine Energie an
der entfernten Einrichtung ab. Während
des GESCHLOSSEN Zustands leitet die Energieschaltschaltung Energie
frei zwischen dem Busverlängerer 400 und
der entfernten Einrichtung. Der Hot-Swapp Anschluss 430 kann
von irgendeiner geeigneten digitalen Quelle angesteuert werden,
z.B. von einem digitalen Bit an der Testerschnittstelle oder einem
manuellen Schalter. Vorzugsweise nehmen auch die Treiber mit niedriger
Impedanz der entfernten Busschnittstelle 412 einen hohen
Impedanzzustand in Ansprechen auf eine Aktivierung des Hot-Swapp
Signals an. Die Fähigkeit
der Energieschaltschaltung und der Niederimpedanz-Treiber Hochimpendanzzustände einzunehmen,
erlaubt der entfernten Einrichtung abgeschaltet zu werden oder sicher
ausgetauscht zu werden, während
der Bus 110 fortwährend
arbeitet.
-
Die Implementierung der Energieschaltschaltung 428 umfasst
Hochstrom-Schalteinrichtungen, vorzugsweise MOSFETs mit einem hohen Strom,
die extern zu dem FPGA sind. Die Schaltungsanordung, um die Niederimpedanz-Treiber
auf Hochimpedanzzustände
zu treiben, residiert vorzugsweise innerhalb des FPGA. Optional
kann die Energieschaltschaltung mit einer Energieablaufsteuerungs-Schaltungsanordnung
ausgerüstet
sein, um Energie von der entfernten Einrichtung und Übereinstimmung
mit einer vorgegebenen Timingsequenz anzulegen und zu entfernen.
-
5 zeigt
die Bus-Snooper-Schaltung 414 in einer Blockdiagrammform.
Die Bus-Snooper-Schaltung
dekodiert Bustransaktionen und führt geeignete
Aktivitäten
aus. Ein Busdecoder 510 ist mit dem Bus 110 und
der entfernten Busschnittstelle 412 verbunden und untersucht
Bustransanktionen zwischen dem Bus und der entfernten Einrichtung. Wenn
eine Transaktion ein Konfigurations-SCHREIB-Befehl an die entfernte
Einrichtung ist, speichert der Busdecoder die Inhalte des SCHREIB-Befehls
in einem entfernten Status 512. Wenn eine Transaktion ein
Konfigurations-LESE-Befehl an die entfernte Einrichtung ist, dann
informiert der Busdecoder einen Maskengenerator 516, der eine
Datenmaske aufbaut, um, wenn erforderlich, Daten zu modifizieren,
die von der entfernten Einrichtung zurückgelesen werden sollen. Wenn
eine Transaktion eine ist, die eine schnelle Antwort erfordert, dann
informiert der Busdecoder den lokalen Antwortgenerator 514,
der eine geeignete schnelle Antwort erzeugt.
-
Die Bus-Snooper-Schaltung 414 speichert die
Inhalte der Konfigurations-SCHREIB-Befehle, die an die entfernte
Einrichtung gerichtet sind, in dem entfernten Statusspeicher 512.
In der bevorzugten Ausführungsform
speichert die Bus-Snooper-Schaltung 414 die Inhalte von
sämtlichen
SCHREIB-Befehlen in dem entfernten Statusspeicher 512 nicht. Anstelle
davon speichert sie nur die Inhalte der Ziel-SCHREIB-Befehle, die an 64
bestimmte "Konfigurations-"Register der entfernten
Einrichtung gerichtet sind. Die PCI Spezifikation definiert 64 Konfigurations-Register
einer PCI Karte. Viele von diesen Registern müssen beschrieben werden, damit
der PCI Bus arbeitet. Wie bekannt ist schreibt der PCI Bus BIOS
erforderliche Werte von diesen 64 Konfigurations-Registern für jede Einrichtung,
die in den Bus eingesteckt ist, jedesmal, wenn eine PCI Busrücksetzung
auftritt.
-
Über
der Zeit und explizit auf jede PCI Busrücksetzung hin akkumuliert der
entfernte Statusspeicher 512 eine lokale Aufzeichnung von
sämtlichen
64 Konfigurations-Registern für
eine entfernte Einrichtung. Sobald sie gesammelt ist kann die Aufzeichnung
der Konfigurations-Register an einer entfernten Einrichtung neu
gespeichert werden oder an einer anderen entfernten Einrichtung
gespeichert werden, um einen bekannten stabilen Zustand zu konfigurieren.
Keine zusätzlichen
Rücksetzungen des
PCI Busses werden benötigt.
-
Register auf einer anderen PCI Karte
als die 64 Konfigurations-Register (d.h. Nicht-Konfigurations-Register) sind nicht
wesentlich zum Herstellen eines Busbetriebs. Wie von dem Benutzer
gewünscht
können
Inhalte der Nicht-Konfigurations-Register an die entfernte Einrichtung
kopiert werden, unter Verwendung von herkömmlichen Ziel-WRITE-Befehlen,
nachdem die 64 Konfigurations-Register gespeichert worden sind.
Alternativ kann ein Speicher zu dem entfernten Statusspeicher 512 hinzugefügt werden,
um sämtliche
Daten zu speichern, die an die entfernte Einrichtung geschrieben
werden, aber der Speicher wird bei zusätzlichen Kosten bereitgestellt
werden.
-
Die PCI Spezifikation unterstützt mehrere
logische Einrichtungen auf einer einzelnen PCI Karte. In Übereinstimmung
mit der bevorzugten Ausführungsform
unterscheidet die Bus-Snooper-Schaltung 414 zwischen unterschiedlichen
logischen Einrichtungen und stellt ausreichend Speicher bereit um zahlreiche
logische Einrichtungen zu unterstützen.
-
In der bevorzugten Ausführungsform
verwendet der Busverlängerer 400 eine
Zustandsmaschine (nicht dargestellt), um die Inhalte des entfernten
Statusspeichers 512 an die entfernte Einrichtung zu kopieren.
Die Zustandsmaschine arbeitet vorzugsweise im Ansprechen auf das
Hot-Swapp Signal und arbeitet unabhängig von dem Bus 110.
Die Zustandsmaschine steuert vorzugsweise die Energieschaltschaltung 428.
Wenn das Hot-Swapp Signal OFFEN ist, aktiviert die Zustandmaschine
die Energieschaltschaltung 428, um Energie an der entfernten
Einrichtung abzublocken. Wenn das Hot-Swapp Signal einen Zustand
von OFFEN nach GESCHLOSSEN ändert,
legt die Zustandsmaschine an die entfernte Einrichtung Energie an
und übergibt
die Inhalte des entfernten Statusspeichers 512 in die Konfigurations-Register
der entfernten Einrichtung.
-
Der Betrieb der Energieschaltschaltung 428 im
Zusammenhang mit der Zustandsmaschine erlaubt ein Hot-Swapping von
entfernten Einrichtungen. Da ein Hot-Swapping von entfernten Einrichtungen
unabhängig
von dem Bus 110 arbeitet, stellt die Erfindung effektiv
eine Hot-Swapping Möglichkeit
für Busse
bereit, die nicht direkt ein Hot-Swapping unterstützen.
-
Wie in 5 gezeigt
umfasst die Bus-Snooper-Schaltung 414 eine Maskengeneratorschaltung 516.
Die Maskengeneratorschaltung 516 arbeitet im Ansprechen
auf einen vordefinierten Satz von Ziel-LESE-Befehlen durch Erzeugen einer Datenmaske.
Der Maskengenerator 516 übergibt die Datenmaske an die
Aushalteschaltung 416 und die Aushalteschaltung 416 wendet
die Maske auf Rückkehrsignale
an, die von der entfernten Einrichtung zurückgelesen werden, um die Rückkehrsignale
zu modifizieren, wie benötigt.
-
Für
Ziel-LESE-Befehle von "Nicht-Konfigurations"-Registern ist die
Datenmaske transparent, d.h. sie ist angeordnet, um sämtliche
Daten unverändert durchzulassen.
Die Datennaske ist betreibbar, d.h. nicht transparent, nur für Ziel-LESE-Befehle
von bestimmten Konfigurations-Registern. Bestimmte Konfigurations-Register
speichern Daten, die Charakteristiken einer entfernten Einrichtung
identifiziert, die nicht gültig
sind, wenn die entfernte Einrichtung in einer verlängerten
Konfiguration verwendet wird. Z.B. speichern PCI Einrichtungen Konfigurationsdaten, die
eine Anzahl von Taktzyklen anzeigen, die sie benötigen, um auf eine bestimmte
Transaktion zu reagieren. Die Anzahl von Taktzyklen kann in einer
verlängerten
Konfiguration gültig
sein, da der Busverlängerer 400 in
einer anderen Anzahl von Taktzyklen antworten kann, um eine Verlängererlatenz
zu berücksichtigen.
Unter diesen Umständen
erzeugt der Maskengenerator 516 eine Datenmaske, die zum Modifizieren
des ungültigen
Bits oder von ungültigen Bits
der Daten, die von der entfernten Einrichtung zurückgelesen
werden, verwendet werden soll. Als ein anderes Beispiel zeigt ein
Konfigurations-Register an, ob eine PCI Karte eine 66 MHz Kommunikation unterstützt. Die
anfängliche
FPGA Implementierung des Busverlängerers 400 unterstützt eine
66 MHz Kommunikation nicht. In der FPGA Ausführungsform der Erfindung erzeugt
der Maskengenerator 516 eine Datenmaske, die eine negative
Antwort erzwingt, um sicherzustellen, dass ein 66 MHz Betrieb nicht
versucht wird.
-
Die Bus-Snooper-Schaltung 414,
die in 5 gezeigt ist,
umfasst auch einen lokalen Antwortgenerator 514. Der Bus-Decoder 514 identifiziert Transaktionen,
die schnelle Antworten benötigen, und
der lokale Antwort-Generator 514 erzeugt eine geeignete
schnelle Antwort. Der lokale Antwort-Generator wird verwendet, weil verlängerte Konfigurationen
eine Latenz hinzufügen,
die in Bus-Spezifikationen
nicht berücksichtigt
wird. Wenn z.B. in Übereinstimmung
mit PCI Bus-Spezifikation ein PCI Initiator eine Adresse an ein
PCI Ziel sendet, dann erwartet der Businitiator, dass das Busziel
innerhalb einer vorgegebenen Zeitgrenze antwortet. Der Businitiator
interpretiert eine fehlende Antwort als Bedeutungsinhalt darüber, dass
keine PCI Einrichtung in dem adressierten Schlitz installiert ist.
-
In einer verlängerten Konfiguration können entfernte
Busziele typischerweise nicht innerhalb der zulässigen Zeit antworten. Wenn
in Übereinstimmung
mit der Endung die entfernte Einrichtung als ein Busziel arbeitet,
gibt der lokale Antwortgenerator 514 eine Antwort an den
Businitiator stellvertretend für
die entfernte Einrichtung innerhalb der zulässigen Zeit ab. Die Antwort
des lokalen Antwortgenerators kann das Bereitstellen von ein oder
mehreren Wartezuständen
auf dem Bus 110 umfassen. Analog, wenn die entfernte Einrichtung
als ein Businitiator arbeitet, kann die Antwort des lokalen Antwortgenerators
ein Senden von einem oder mehreren Wartezuständen an die entfernte Einrichtung
stellvertretend für
das lokale Busziel innerhalb der Zeit, die für eine Antwort durch PCI Spezifikation
zugelassen wird, umfassen.
-
Wenn die entfernte Einrichtung als
ein Businitiator arbeitet, dann legt der lokale Antwortgenerator 514 kontinuierlich
Wartezustände
an die entfernte Einrichtung in Erwartung eines Initiator-LESE-
oder SCHREIB-Befehls von der entfernten Einrichtung an. Der Busverlängerer 400 kann
nicht warten, bis er einen Initiator-LESE- oder SCHREIB-Befehl von
der entfernten Einrichtung empfängt,
bevor er das Bereitstellen von Wartezuständen an der entfernten Einrichtung
beginnt, weil die entfernte Einrichtung die Wartezustände nicht
innerhalb der Zeit für
eine Antwort, die von der PCI Spezifikation zugelassen wird, empfangen
kann. Wenn die entfernte Einrichtung als ein Businitiator arbeitet,
stellt der lokale Antwortgenerator 514 deshalb vorzugsweise
Wartezustände
an der entfernten Einrichtung per Voreinstellung bereit und stoppt
eine Bereitstellung von Wartezuständen nur, sobald die Initiatortransaktion
abgeschlossen ist.
-
Um das Aufhängen des Busses (Bus-Hang-Up)
zu vermeiden, umfasst der lokale Antwortgenerator 514 vorzugsweise
einen Überwachungs-Timer
(nicht dargestellt). Wenn die entfernte Einrichtung nicht eingesteckt
oder nicht funktional ist, beendet der Überwachungs-Timer die Ausgabe
von Wartezuständen
und erlaubt, dass normale Busoperationen wieder aufgenommen werden.
Die Auszeit des Überwachungs-Timers ist vorzugsweise
auf einen großen
Wert eingestellt, um sämtliche
erwarteten normalen Verzögerungen
aufzunehmen. Wenn der Busverlängerer
Wartezustände
von dem Busziel selbst empfängt,
schaltet der Busverlängerer
den Überwachungs-Timer
ab, bis der Busverlängerer
ein Empfangen von Wartezuständen
stoppt, wobei nach dieser Zeit der Überwachungs-Timer ein Zählen beginnt.
-
Der Busverlängerer 400 umfasst
auch eine Aushalte-Schaltung 416. Die Aushalte-Schaltung empfängt Rückkehrsignale
von der entfernten Busschnittstelle 412 und wartet über ein
vorgegebenes Zeitintervall, bevor die Rückkehrsignale an dem Bus 110 freigegeben
werden.
-
Die 6 und 7 illustrieren die Aushalte-Schaltung 416 in
einer Blockdiagrammdarstellung. Wie in 6 gezeigt umfasst die Aushalte-Schaltung eine
Maskenschaltung 616, eine Verzögerungsschaltung 610 und
eine Vezögerungsbestimmungsschaltung 612.
Die Maskenschaltung 616 empfängt Rückkehrsignale von der entfernten
Busschnittstelle 412 und legt die Datenmaske, die von dem
Maskengenerator 516 erzeugt wird, an, um die Rückkehrsignale zu
modifizieren, wie benötigt.
Die Verzögerungsschaltung 610 empfängt Rückkehrsignale
von der Maskenschaltung 616 und blockiert deren Durchgang
an den Bus 110, bis die Verzögerungsschaltung 610 ein
Hinweissignal (Strobe-Signal) 614 empfängt.
-
Wie in 7 gezeigt
umfasst die Verzögerungsbestimmungsschaltung 612 einen
Signalabtaster 710, ein Verzögerungsregister 712 und
eine Hinweisschaltung (Strobe-Schaltung) 714. Der Signalabtaster
bestimmt ein Aushalteintervall, welches sich auf die Umlaufverzögerung zwischen
dem Busverlängerer 400 und
der entfernten Einrichtung bezieht. Das Aushalteintervall umfasst
vorzugsweise die Verzögerungszeit
von Bussignalen von dem Busverlängerer 400 an
die entfernte Einrichtung, die Antwortzeit der entfernten Einrichtung,
und die Setzzeit von Rückkehrsignalen,
die von der entfernten Einrichtung zurückkehren. Das Verzögerungsregister 712 speichert
den Wert des Aushalteintervalls. Wenn der Busverlängerer 400 einen
Befehl an die entfernte Einrichtung sendet, vergleicht die Hinweisschaltung 714 die
abgelaufene Zeit, seitdem der Befehl gesendet wird, mit dem Aushalteintervall.
Wenn die zwei Werte übereinstimmen,
aktiviert die Hinweisschaltung 714 das Hinweissignal 614 und
die Verzögerungsschaltung 610 gibt
die Rückkehrsignale
an den Bus zu dem nächsten
geeigneten Punkt in dem Buszyklus frei.
-
Der Signalabtaster 710 bestimmt
vorzugsweise das Aushalteintervall durch Simmulieren eines Ziel-LESE-Befehls
an der entfernten Einrichtung. Der Signalabtaster misst das Zeitintervall
zwischen der Ausgabe des Ziel-LESE-Befehls und der Zeit, wenn die
Rückkehrsignale
sich setzen. Die PCI Spezifikation bestimmt eine besondere Adresse
auf PCI Karten zum Speichern einer ID eines Herstellers und einer Antwortzeit
auf ein Ziel-LESEN dieser Adresse. Vorzugsweise simmuliert der Signalabtaster
ein Ziel-LESEN der
ID des Herstellers.
-
Der Signalabtaster 710 überwacht
die Rückkehrsignale.
Die Rückkehrsignale
messen sämtliche "1"-en, bevor sie ankommen und sich setzen.
Wenn die Antwort irgend etwas anderes als sämtliche "1"-en misst
und identische Ablesungen für
aufeinanderfolgende Messungen bereitstellt, dann haben sich die
Rückkehrsignale
gesetzt. Der Signalabtaster speichert einen Wert, der der abgelaufenen
Zeit in dem Verzögerungsregister 712 entspricht.
Da die Antwortzeit der entfernten Einrichtung bekannt ist (für ein Ziel-LESEN
des ID Registers definiert ist), kann eine Umlaufzeit bestimmt werden,
die unabhängig von
der Antwortzeit der entfernten Einrichtung ist.
-
In Übereinstimmung mit einer noch
anderen Alternative arbeitet der Signalabtaster 710 im
Ansprechen auf tatsächliche
(nicht-simmulierte) Ziel-LESEN-Befehle, und erzeugt ein neues Aushalteintervall
für jeden
Befehl.
-
Der Signalabtaster 710 bestimmt
vorzugsweise ein optimales Aushalteintervall automatisch auf eine
erste Verwendung des Busverlängerer 400 hin,
unter der Anweisung einer Zustandsmaschine (die nicht dargestellt
ist). Alternativ arbeitet der Signalabtaster 710 mit der
Ausgabe eines externen Befehl. Das gleiche Aushalteintervall wird
wiederholt für nachfolgende
Kommunikationen verwendet, bis der Signalabtaster wieder einen Befehl
zum Betrieb empfängt.
-
Gemäß einer noch anderen Alternative
stellt die Erfindung nicht einen Signalabtaster bereit und ein Wert
des Verzögerungs-Registers 712 wird
während
eines anfänglichen
Aufbaus des Systems eingerichtet. Der Wert des Verzögerungs-Registers 712 basiert
auf einer manuellen Messung oder einer Abschätzung der Umlaufverzögerung zwischen
dem Busverlängerer 400 und
der entfernten Einrichtung. Der Wert des Verzögerungs-Registers wird permanent
eingerichtet oder kann von Zeit zu Zeit verändert werden. Experimente haben
gezeigt, dass eine feste Verzögerung
von zwei (2) 33 Megahertz Buszyklen (60 Nanosekunden) ausreichend
ist, um eine Zwischenverbindung mit einer Länge von zehn Fuß aufzunehmen.
-
Vorzugsweise misst der Signalabtaster 710 das
Aushalteintervall durch Abtasten der Rückkehrsignale bei einem Vielfachen
der Busfrequenz, z.B. bei zweimal der Busfrequenz. Je höher die
Abtastrate des Signalabtasters ist, desto größer ist die Genauigkeit des
Aushalteintervalls und desto niedriger ist die Wahrscheinlichkeit,
dass das Aushalteintervall überbewertet
wird. Alternativ arbeitet der Signalabtaster 710 bei einer
Abtastrate, die gleich oder kleiner als die Busfrequenz ist.
-
Es wurde hier erkannt, dass andere
Verfahren zum Bestimmen, wann sich die Rückkehrsignale stabilisieren,
durch die Aushalteschaltung mit erfolgreichen Ergebnissen verwendet
werden könnten. Z.B.
könnte
die Aushalteschaltung einen Ringoszillator verwenden, um eine Oszillation
in einer Schleife einzurichten, der den Busverlängerer 400 und die Zwischenverbindung 418 einschließt. Die
Frequenz der Oszillation ist proportional zu der Umlaufverzögerung.
Als ein anderes Beispiel könnte
der Busverlängerer 400 mit
einer Zeitdomänen-Reflektometer-(TDR)-Schaltung
zum Messen einer Flugzeit (Ausbreitungszeit) von Signalen zwischen
dem Busverlängerer 400 und
dem entfernten Ende der Zwischenverbindung 418 bereitgestellt
werden.
-
Die 8a und 8b sind Flussdiagramme, die die
Aktivitäten
beschreiben, die von dem Busverlängerer 400 beschrieben
werden, der voranstehend beschrieben wurde, wenn die entfernte Einrichtung
als ein Busziel (Slave) arbeitet. 8a zeigt
die Busverlängereraktivitäten im Ansprechen
auf einen Ziel-LESE-Befehl. 8b illustriert
Busverlängereraktivitäten im Ansprechen
auf eine Ziel-SCHREIB-Befehl.
-
In 8a empfängt ein
Busverlängerer 400 einen
Ziel-LESE-Befehl von einem Businitiator auf dem Bus 110 und
die Bus-Snooper-Schaltung 414 dekodiert den Ziel-LESE-Befehl.
Im Schritt 810 erzeugt der lokale Antwortgenerator 514 eine
Bestätigung
stellvertretend für
das entfernte Busziel, dass die Zieladresse, die von dem Businitiator
spezifiziert wird, gültig
ist. Der lokale Antwortgenerator 514 stellt auch Wartezustände auf
dem Bus 110 bereit.
-
Im Schritt 812 erzeugt der
Maskengenerator 516 eine Datenmaske. Der Wert der Datenmaske
ist besonders für
die spezifizierte Zieladresse. Die Datenmaske ist selektiv angeordnet,
um Bits von Konfigurationsdaten zu modifizieren, die von der entfernten
Einrichtung zurückgelesen
werden sollen, wobei diese Bits Kommunikationscharakteristiken kodieren, die
nicht auf eine verlängerte
Konfiguration zugreifen. Die Datenmaske ist für die Inhalte von sämtlichen
Ziel-LESE-Adressen mit Ausnahme von denjenigen für Konfigurationsregister, die
nicht auf die verlängerte
Konfiguration angewendet werden, transparent. Vorzugsgweise umfasst
der Maskengenerator 516 einen lokalen Speicher (nicht dargestellt),
der Maskenwerte für
Zieladressen speichert, die eine Maske benötigen.
-
Im Schritt 814 überträgt der Busverlängerer 400 Bussignale
an die entfernte Einrichtung und im Schritt 816 beginnt
der Busverlängerer 400 ein
Herunterzählen
des Aushalteintervalls. Im Schritt 818 kommen die Rückkehrsignale
an den Busverlängerer 400 von
der entfernten Einrichtung an und der Busverlängerer wendet die Lesemaske
an, die im Schritt 812 erzeugt wird. Im Schritt 820 läuft das
Aushalteintervall ab und der Busverlängerer 400 gibt die
Rückkehrsignale
an den Bus 110 zu einer geeigneten Phase in den Buszyklus
hinein frei. Der lokale Antwortgenerator 514 hebt Wartezustände von
dem Bus 110 auf, wenn das Aushalteintervall abläuft, außer wenn zusätzliche
Wartezustände
angefordert werden. Wenn die entfernte Einrichtung zusätzliche
Wartezustände über den
Ablauf des Aushalteintervalls hinaus anfordert, hängt der
lokale Antwortgenerator 514 die zusätzlichen Wartezustände an den
Bus 110 an.
-
Die Schritte 810 bis 816 sind
in 8a so gezeigt, dass
sie in einer Sequenz auftreten. Es wurde hier jedoch erkannt, dass
die Sequenz von diesen Schritten verändert werden kann. Z.B. muss
die Datenmaske, die im Schritt 812 erzeugt wird, nicht
bereit sein, bis die Rückkehrsignale
den Busverlängerer 400 erreichen.
Vorzugsweise treten die Schritte 810 bis 816 gleichzeitig
auf.
-
8b zeigt
die Busverlängerer-Aktivitäten im Ansprechen
auf einen Ziel-SCHREIB-Befehl. Der Busverlängerer 400 empfängt einen Ziel-SCHREIB-Befehl
von einem Businitiator auf dem Bus 110, und die Bus-Snooper-Schaltung 414 dekodiert
den Ziel-SCHREIB-Befehl. Im Schritt 830 stellt der lokale
Antworgenerator 514 Wartezustände auf dem Bus 110 innerhalb
der zulässigen
Zeitgrenze für eine
Antwort bereit.
-
In Schritt 832 beginnt der
Busverlängerer 400 ein
Herunterzählen
des Aushalteintervalls. Wenn der Ziel-SCHREIB-Befehl ein Konfigurations-SCHREIB-Befehl
ist, d.h. ein SCHREIB-Befehl an eines der 64 "Konfigurations"-Register, speichert der Busverlängerer 400 eine
lokale Kopie von Konfigurationsdaten in Schritt 834. Wenn
die entfernte Einrichtung mehrere logische Einrichtungen umfasst, umfasst
der Speicherschritt 834 das Speichern von Konfigurationsdaten
für die
lokale Einrichtung, die besonders adressiert wird.
-
In Schritt 836 überträgt der Busverlängerer 400 Signale
an die entfernte Einrichtung. Sowohl "Konfigurations-" als auch "Nicht-Konfigurations-"SCHREIB-Befehle werden übertragen.
Wenn das Aushalteintervall abläuft
hebt der lokale Antwortgenerator 514 Wartezustände von
dem Bus 110 auf, außer
wenn zusätzliche
Wartezustände
angefordert werden. Wenn die entfernte Einrichtung zusätzliche Wartezustände nach
dem Ablauf des Aushalteintervalls anfordert, dann hängt der
lokale Antwortgenerator 514 die angeforderten Wartezustände an den
Bus 110 an.
-
8b zeigt
Schritte 830, 832, 834 und 836 in
einer Sequenz; jedoch müssen
diese Schritte nicht in irgendeiner bestimmten Reihenfolge auftreten.
Die Schritte 830 und 832 sind Teil eines "Snooping" ("Ergreifens") des Busses 110 und
können
in irgendeiner Sequenz auftreten oder können gleichzeitig auftreten.
In ähnlicher
Weise können
die Snooping-Schritte (832 und 834) und der Schritt
zum Übertragen
von Signalen an die entfernte Einrichtung (836) in irgendeiner
Sequenz auftreten oder können
gleichzeitig auftreten.
-
Die 8c und 8d sind Flussdiagramme, die die
Aktivitäten
beschreiben, die von dem Busverlängerer 400 ausgeführt werden,
der voranstehend beschrieben wurde, wenn die entfernte Einrichtung
als ein Businitiator (Master) arbeitet. 8c zeigt die Aktivitäten im Ansprechen auf einen
Initiator-LESE-Befehl, der von der entfernten Einrichtung erzeugt
wird. 8d zeigt Aktivitäten im Ansprechen
auf einen Initiator-SCHREIB-Befehl, der von der entfernten Einrichtung
erzeugt wird.
-
Wie in 8c gezeigt
stellt der Busverlängerer 400 vorher
Wartezustände
an der entfernten Einrichtung im Schritt 850 bereit. Im
Gegensatz zu dem Ziel-LESEN-Fall der 8a,
bei dem der Busverlängerer 400 lokal
zu dem Businitiator ist (d.h. der Busverlängerer und der Businitiator
sind in dem gleichen Bus 110 eingesteckt), gibt es hier
keine Einrichtung, die zu dem Businitiator "lokal" ist. Der Businitiator ist die entfernte
Einrichtung und kann im Allgemeinen eine Antwort von einem Busziel
innerhalb der zulässigen
Zeit für
eine Antwort, die von der PCI Spezifikation eingestellt wird, nicht
empfangen. Vorzugsweise gibt der lokale Antwortgenerator 514 deshalb
Wartezustände
an der entfernten Einrichtung kontinuierlich, per Voreinstellung,
immer dann vor, wenn der Busverlängerer
erfasst, dass die entfernte Karte gerade als ein Businitiator arbeitet.
Der Verlängerer hebt
die Wartezustände
nur im Ansprechen auf ein Initiator-LESEN auf, sobald er eine tatsächliche
Antwort von dem Busziel empfängt.
-
Der Busverlängerer 400 überwacht
konstant Rückkehrsignale,
um eine Businitiatoraktivität
von der entfernten Einrichtung zu erfassen. Im Schritt 852 erfasst
der Busverlängerer
eine Änderung
in den Rückkehrsignalen.
Um Fehler zu vermeiden wartet der Busverlängerer ein vorgegebenes Zeitintervall, welches
ausreicht, damit sich die Rückkehrsignale setzen,
bevor die Rückkehrsignale
an dem Bus 110 freigegeben werden. In einer Ausführungsform
ist dieses Zeitintervall das Aushalteintervall, das voranstehend
beschrieben wurde, und der Busverlängerer beginnt ein Zählen des
Aushalteintervalls im Schritt 854. Das Aushalteintervall
umfasst jedoch sämtliche Umlaufverzögerungen
und ist somit nicht mehr notwendig. Alternativ wartet der Busverlängerer eine Zeitperiode,
die kürzer
als das Aushalteintervall ist, aber ausreichend lang, damit den
Rückkehrsignalen erlaubt
wird sich zu setzen. Nachdem das vorgegebene Zeitintervall abläuft gibt
der Busverlängerer 400 die
Rückkehrsignale
an den Bus 110 (Schritt 856) zu den nächsten geeigneten
Punkt in dem Buszyklus.
-
Die Rückkehrsignale, die in Schritt 856 freigegeben
werden, kodieren den Initiator-LESE-Befehl von der entfernten Einrichtung.
Sobald sie bereitgestellt werden wartet der Busverlängerer 40 auf
eine Antwort von dem Busziel. Wenn der Busverlängerer Daten (gelesene Werte)
von dem Busziel empfängt, dann
hebt der Busverlängerer
Wartezustände
auf (Schritt 858) und sendet die Ergebnisse des Lesebefehls
an die entfernte Einrichtung (860). Wenn der Busverlängerer 400 einen
oder mehrere Wartezustände
von dem Busziel empfängt,
setzt der Busverlängerer
eine Bereitstellung von Wartezuständen an der entfernten Einrichtung
fort, bis der Busverlängerer
ein Empfangen von Wartezuständen
von dem Busziel stoppt. Der Busverlängerer 400 sendet
die Daten an die entfernte Einrichtung, wenn die Daten ankommen.
-
8d illustriert
die Busverlängereraktivitäten im Ansprechen
auf einen Initiator-SCHREIBEN-Befehl
von der entfernten Einrichtung. Wie voranstehend beschrieben stellt
der Busverlängerer kontinuierlich
Wartezustände
an der entfernten Einrichtung bereit, immer dann, wenn der Busverlängerer erfasst,
dass die entfernte Einrichtung als ein Businitiator arbeitet (Schritt 870).
Der Busverlängerer 400 überwacht
konstant Rückkehrsignale,
um einen Initiator-LESEN oder SCHREIBEN-Befehl von der entfernten
Einrichtung zu erfassen. Im Schritt 872 erfasst der Busverlängerer eine Änderung
in den Rückkehrsignalen.
Wie zuvor wartet der Busverlängerer ein
vorgegebenes Zeitintervall, damit sich die Rückkehrsignale setzen, bevor
die Rückkehrsignale
an dem Bus 110 freigegeben werden. In einer Ausführungsform
ist dieses Zeitintervall das Aushalteintervall, welches voranstehend
beschrieben wurde, und der Busverlängerer beginnt ein Zählen des
Aushalteintervalls im Schritt 874. Alternativ wartet der Busverlängerer eine
Zeitperiode die kürzer
als das Aushalteintervall ist, aber ausreichend lang, um den Rückkehrsignalen
zu erlauben, sich zu setzen. Nachdem das vorgegebene Zeitintervall
abläuft
gibt der Busverlängerer 400 die
Rückkehrsignale
an den Bus 110 (Schritt 876), zu dem nächsten geeigneten
Punkt in dem Buszyklus.
-
Die Rückkehrsignale kodieren den
Initiator-SCHREIBEN-Befehl von der entfernten Einrichtung. Wenn
das Busziel Wartezustände
im Ansprechen auf den SCHREIBEN-Befehl nicht erzeugt, dann hebt
der lokale Antwortgenerator 514 Wartezustände an der
entfernten Einrichtung auf, im Schritt 878. Wenn das Busziel
in der Tat Wartezustände
bereitstellt, dann wartet der lokale Antwortgenerator 514,
dass das Ziel Wartezustände
aufhebt, bis er Wartezustände
an der entfernten Einrichtung aufhebt.
-
9 illustriert
ein Testsystem 900 zum Testen einer entfernten UUT, die
den Busverlängerer 400 in Übereinstimmung
mit der Erfindung verwendet. 10 zeigt
Prozesse zum Testen von entfernten UUTs unter Verwendung des Testsystems
der 9. Der Busverlängerer 400 verhindert,
dass Fehler, die auf UUT auftreten, sich an den Bus 110 ausbreiten und
unterstützt
deshalb eine Fehlerisolation des Testsystems 900.
-
Wie in 9 gezeigt
wird der Busverlängerer 400 in
den Bus 110 eingesteckt. Die Zwischenverbindung 418 ist
mit dem Busverlängerer 400 verbunden und
erstreckt sich an eine entfernte UUT 918. Eine zusätzliche
Buseinrichtung 912 kann ebenfalls in den Bus 110 gesteckt
sein. Optional umfasst das Testsystem einen ATE Controller 920,
der über
eine optionale Steuerleitung 426 mit dem Busverlängerer 400 verbunden
ist.
-
Das Testsystem 900 arbeitet
als eine erste UUT, wie im Schritt 1010 der 10a gezeigt. Wenn die erste
UUT arbeitet, "snoopt" ("ergreift") der Busverlängerer 400 Daten,
die an die erste UUT geschrieben werden, und speichert gesnoopte
(ergriffene) Konfigurationsdaten in einem lokalen Speicher (Schritt 1012).
Ein Fehler kann auftreten, wenn das Testsystem die erste UUT betreibt.
Der Busverlängerer 400 fängt den
Fehler ein und erlaubt nicht, dass sich der Fehler an den Bus 110 ausbreitet.
In Übereinstimmung
mit einer optionalen Ausführungsform informiert
der Busverlängerer 400 den
ATE Controller 920 über
den Fehler durch die Steuerleitung 426. In Übereinstimmung
mit einer anderen optionalen Ausführungsform informiert der Busverlängerer 400 einen
Hostcomputer, in dem der Bus 110 installiert ist, über den
Fehler direkt über
den Bus 110. Im Schritt 1018 wird eine Energie
von der ersten UUT durch Aktivieren der Energieschaltschaltung 428 entfernt.
Wie voranstehend beschrieben wird die Energieschaltschaltung vorzugsweise
aktiviert, wenn der Benutzer oder ein Testprogramm einen OFFENEN
Pegel an den Hot-Swapp-Anschluss 430 anlegt. Vorzugsweise konfiguriert
eine Aktivierung des Hot-Swapp-Signals an dem Hot-Swapp-Anschluss 430 auch
die Niederimpedanztreiber innerhalb des Busverlängerers 400 auf Hochimpedanzzustände. Schritt 1018 kann
optional eine Energie an der ersten UUT in Übereinstimmung mit einer vorgegebenen
Timingsequenz abblocken.
-
Im Schritt 1020 (10b), wird die erste UUT 918 durch
eine zweite UUT des gleichen Typs wie die erste UUT ersetzt. Ein
Benutzer kann UUT manuell ersetzen oder ein spezialisiertes Behandlungsgerät in der
Nähe der
Testerschnittstelle kann die UUT automatisch ersetzen. Im Schritt 1022 legt der
Busverlängerer
Energie an die zweite UUT an, vorzugsweise im Ansprechen auf eine
Aktivierung des Hot-Swapp-Signals. Optional legt der Schritt 1022 Energie
an die zweite UUT in Übereinstimmung mit
einer vorgegebenen Timingsequenz an. Sobald Energie an der zweiten
UUT eingerichtet ist, kopiert der Busverlängerer die Inhalte seines lokalen
Speichers an die zweite UUT im Schritt 1024. Wenn die erste
und zweite UUT beide von dem gleichen Typ sind, sind die Konfigurationsdaten,
die in dem lokalen Speicher über
die erste UUT gespeichert sind, gültig für die zweite UUT. Im Schritt 1026 bearbeitet
das Testsystem die zweite UUT über
den Busverlängerer 400.
Der Busverlängerer 400 erlaubt
somit, dass die ersten und zweiten UUTs mit Energie zyklisch durchlaufen
und ausgetauscht werden, ohne die Notwendigkeit, den Bus 110 energiemäßig zyklisch
zu durchlaufen oder zurückzusetzen.
-
10c zeigt,
wie das Testsystem 900 sich von einem Fehler auf der ersten
UUT erholt. Energie wird an der ersten UUT im Schritt 1030 wieder
hergestellt. Im Schritt 1032 kopiert der Busverlängerer die Konfigurationsdaten,
die in seinem lokalen Speicher gespeichert sind, an die erste UUT
im Schritt 1034, wodurch die Konfigurations-Register der
ersten UUT wieder hergestellt werden. Das Testsystem 900 nimmt
Testoperationen im Schritt 1036 wieder auf. Kein energiemäßiges zyklisches
Durchlaufen oder Zurücksetzen
des Busses 110 wird benötigt.
-
Nachdem eine Ausführungsform beschrieben worden
ist, können
zahlreiche alternativen Ausführungsformen
oder Veränderungen
durchgeführt werden.
Z.B. kann der Busverlängerer 400 direkt
in einen Bus eingebaut werden und muss nicht als eine Buskarte implementiert
werden. Die bevorzugte Ausführungsform
ist auf den PCI Bus gerichtet; jedoch kann der Busverlängerer in Übereinstimmung
mit der Erfindung als irgendein synchroner Bus implementiert werden,
z.B. als ein Cardbus oder AGP.
-
Zahlreiche Busverlängerer werden
auf einem einzelnen Bus bereitgestellt, um zahlreiche Buskarten
an entfernte Orte zu verlängern.
Der Busverlängerer 400 kann
in einer Vielzahl von Anwendungen verwendet werden. Ingenieure und
Techniker müssen
häufig
Buskarten bei der tatsächlichen
Verwendung beobachten. Strikte Begrenzungen auf die Buslänge verhindern
die Verwendung von "Verlängererkarten", d.h., Karten die
Bussignale aus der Ebene des Busses herausleiten, um einen Zugriff
auf die Vorderseite und Rückseite
der Buskarte bereitzustellen. Der Busverlängerer 400 kann in
dieser Situation verwendet werden, um eine Buskarte an eine geeignete
Debugging-Stelle zu verlängern,
ohne Bustiminganforderungen zu verletzen. Die Erfindung kann auch
in Computerspeichern nützlich
sein, wo die Erfindung verwendet werden kann, um Operationen mit unterschiedlichen
Buskarten zu demonstrieren. Die Erfindung erlaubt, dass Buskarten,
für einen
Verbrauchervergleich, leicht ausgetauscht werden, und zwar ohne
Speicherpersonal zu benötigen,
um die Abdeckung eines Computers zu entfernen, ihn herunterzufahren
und den Computer neu zu booten, sobald eine neue Karte an der Stelle
ist.
-
Durchschnittsfachleute in dem technischen Gebiet
werden verstehen, dass Hinzufügungen, Streichungen
und Modifikationen an den bevorzugten Ausführungsformen durchgeführt werden
können,
die hier beschrieben wurden, ohne von dem Umfang der beigefügten Ansprüche abzuweichen.