-
Gebiet der
Erfindung
-
Die
Erfindung betrifft im Allgemeinen Synchronisierermodule und Verfahren
und betrifft insbesondere Sychnonisierer, die in einer RTL- (Registertransferlevel-
bzw. ebnen) Simulation simuliert werden können.
-
Es
gibt viele integrierte Schaltungschips, die taktgesteuerte digitale
Schaltungen aufweisen, die mehr als einen Taktbereich bilden. In
derartigen Einrichtungen wird ein erster Teil der digitalen Schaltung
von einem ersten Taktsignal angesteuert, während ein zweiter Teil von
einem zweiten Taktsignal angesteuert wird. Das zweite Taktsignal
kann sich von dem ersten Taktsignal unterscheiden und kann sogar
von einer anderen Quelle erzeugt werden. Beispiele für Bauelemente,
die mehrere Taktbereiche aufweisen, sind Computerchipsätze, USB-
(universaler serieller Bus) Leitrechnersteuerungen und WLAN- (drahtlose
Nahbereichsnetzwerks-) Empfänger
oder Empfänger/Sender-Geräte. Im Stand
der Technik gibt es auch noch viele andere Gebiete, in denen ein
integrierter Schaltungschip mit mehr als einem Taktbereich auftritt.
-
In
vielen Anwendungen sind die digitalen Schaltungen in den diversen
Taktbereichen nicht unabhängig voneinander.
Beispielsweise kann eine Schaltung in einem der Taktbereiche ein
Signal von einer Schaltung in einem anderen Taktbereich für die Weiterverarbeitung
erhalten. D. h., in derartigen Bauelementen ist es erforderlich,
dass digitale Signale über
Taktbereiche hinweg ausgetauscht werden. Diese Taktbereich überschreitenden
Signale können
Einzel-Bit-Signale oder sogar Mehrfach-Bit-Bussignale sein.
-
Wenn
beispielsweise die in die 1a gezeigte
Anordnung genommen wird, ist darin eine Schaltung 100 gezeigt,
um ein erstes Taktsignal clk1 zu empfangen, während eine zweite digitale
Schaltung 110 ein anderes Taktsignal clk2 empfängt. Somit
sind die beiden digitalen Schaltungen 100, 110 in
unterschiedlichen Taktbereichen angesiedelt. Die Schaltung 100 in
dem ersten Taktbereich empfängt
das Einzel-Bit-Signal bit0 und führt
eine gewisse digitale Verarbeitung an diesem Signal aus. In dem
Beispiel aus 1a kann
die digitale Schaltung 100 ein Flip-Flop sein. Das Ausgangssignal
der Schaltung 100 wird dann über die Taktbereichsgrenze
als Signal bit1 geführt,
das dann die zweite digitale Schaltung 110 erreicht. Die
Schaltung 110 erzeugt das Einzel-Bit-Signal bit2 aus bit1
unter Ansteuerung durch das Taktsignal clk2.
-
Wie
in 1b gezeigt ist, speichert
die Schaltung 100 das eintreffende Signal bit0 bei einer
positiven Flanke, d. h. wenn das Taktsignal clk1 vom niedrigen Pegel
auf den hohen Pegel ansteigt. Die digitale Schaltung 110,
die auch eine Flip-Flop-Einrichtung sein kann, wird von dem Taktsignal
clk2 angesteuert, das in dem vorliegenden Beispiel eine höhere Frequenz
aufweist. An der positiven Flanke des zweiten Taktzyklus registriert
das Flip-Flop 110 in dem zweiten Taktbereich ein tiefpegeliges
Signal. Mit der positiven Flanke des dritten Taktsignalzyklus wird
ein hochpegeliges Signal korrekt zwischengespeichert. Jedoch in
der Zeit zwischen den positiven Flanken des zweiten und des dritten
Taktsignalzyklusses kann der Ausgangssignalpegel undefiniert sein.
Dies wird allgemein als ein metastabiler Zustand bezeichnet und
kann insbesondere eintreten, wenn die positive Flanke des zweiten
clk2-Taktzyklus in der Nähe
der positiven Flanke des clk1-Taktzyklus auftritt.
-
2a und 2b zeigen ähnliche Beispiele, in denen
Mehrfachbit-Bus-Signale von einem Taktbereich zu einem anderen geleitet
werden. In dem dargestellten Beispiel weist der Bus drei separate
Bit-Leitungen auf. Wie man aus 2b erkennen
kann, kann ein ähnliches
Problem, wie es zuvor mit Bezug zu 1b erläutert ist,
auftreten. Eine RTL-Simulation
(im Gegensatz zu Zeitablaufsimulationen auf Gatterebene) kann häufig darin
versagen, eine nicht korrekte Bus-Synchronisierung zu erkennen,
etwa jene aus 2a, da
der RTL-Simulator mit allen Bus-Bits in der gleichen Weise verfährt, d.
h. die Bits sind stets „in
Phase". Dieses Beispiel
zeigt ferner, dass ein Verfahren gemäß der 2a nicht geeignet sein kann, um in korrekter
Weise einen Bus für einen
weiteren Taktbereich zu synchronisieren. Wie 2b zeigt, können Wertefehler auf dem bus2
auftreten, da nicht alle Bits die gleiche Verzögerung erfahren und somit der
bus2 einen Wert trägt,
der nie im bus1 aufgetreten ist.
-
Um
das Problem der Taktbereich überschreitenden
Signale zu lösen,
kann eine gewisse Synchronisiereinrichtung den Schaltungen hinzugefügt werden.
Beispielsweise kann eine zusätzliche
Flip-Flop-Einrichtung 310 zwischen beiden digitalen Schaltungen 300, 320 auch
innerhalb des zweiten Taktbereichs eingerichtet werden. Dies ist
in 3a gezeigt. 3b zeigt dann, dass die
Ausgangssignale nun keine undefinierten Pegel mehr aufweisen.
-
4a zeigt ein Beispiel von
Bussignalen, die in korrekter Weise eine Taktbereichsgrenze überschreiben.
Ein Multiplexer 410 ist zwischen der ersten und der zweiten
digitalen Schaltung 400 bzw. 420 eingerichtet, um
entweder die Ausgangssignale der ersten digitalen Schaltung 400 zu
der zweiten digitalen Schaltung 420 weiterzuleiten, oder
das Ausgangssignal bus2 zu dem Eingangsanschluss der zweiten Schaltung 420 zurückzuspeisen.
Der Multiplexer 410 wird von einem „Capture"-Signal
bzw. Einfangsignal angesteuert. Wie man aus 4b erkennen kann, werden die Ausgangsbussignale
bus2 in korrekter Weise synchronisiert.
-
Obwohl
somit eine Signalsynchronisierung bei einer Taktbereichsüberschreitung
bereits im Stand der Technik möglich
ist, gibt es eine Reihe struktureller und funktioneller Probleme,
die die Ursache möglicher
Fehler sein können.
Beispielsweise können
Synchronisationsprobleme weiterhin auftreten, wenn der Gesamtschaltungsentwurf
Fehler oder Entwurfsschwachstellen aufweist, die im Voraus schwer
zu erkennen sind. Wenn beispielsweise ein Signal von einer speziellen
Quelle genommen wird und unabhängig
in zwei unterschiedlichen Wegen geleitet wird, die dann am Ende
wieder zusammengeführt
werden, kann eine korrekte Synchronisierung von dem Verzögerungsverhalten
beider Signalwege abhängen.
Ein weiterer üblicher Schwachpunkt
beim Entwerten ist die Verwendung der eigentlich korrekten Bussynchronisiererstruktur
gemäß 4a,
wobei jedoch ein unsynchronisiertes Signal für das Einfangssignal „capture2" verwendet wird.
-
Da
die digitale Schaltung für
gewöhnlich
relativ komplex ist, ist es häufig
nicht möglich,
derartige Entwurfsfehler im Voraus zu erkennen. Dies kann zu Funktionsfehlern
führen,
die lediglich in einer späten
Phase des Entwurfsvorganges erkennbar sind, oder die unter Umständen während der
Verifizierungsphase des Siliziumchips erst erkannt werden können. Auf
Grund der im Allgemeinen unzuverlässigen Natur derartiger Fehler ist
es noch schwieriger, die Fehlerquelle zu finden, wodurch sich erhöhte Schaltungsentwicklungskosten
ergeben.
-
ÜBERBLICK ÜBER DIE ERFINDUNG
-
Es
wird eine verbesserte Synchronisiertechnik bereitgestellt, die eine
bessere Modellierung des realen Verhaltens der Siliziumschaltung
für die
Simulation ermöglichen,
um damit Signalsynchronisierprobleme früher im Prozessablauf zu erkennen.
-
In
einer Ausführungsform
wird eine RTL-Simulationsvorrichtung bereitgestellt, die ausgebildet
ist, eine Bussynchronisierung über
eine Taktbereichsgrenze hinweg zu simulieren. Die Vorrichtung umfasst
ein erstes RTL-Entwurfselement, das ausgebildet ist, eine Schaltung
in einem ersten Taktbereich zu simulieren, und ein zweites RTL-Entwurfselement,
das ausgebildet ist, eine Schaltung in einem zweiten Taktbereich
zu simulieren. Die Vorrichtung umfasst ferner ein drittes RTL-Entwurfselement,
das ausgebildet ist, die Funktion eines Mehrstufensynchronisierers
mit mehreren Synchronisiererstufen zu simulieren, die in der Lage
sind, ein Synchronisierersignal zu erzeugen, das sich von den Synchronisiereisignalen
unterscheidet, die von anderen Synchronisiererstufen des Mehrfachsynchronisierers
erzeugt werden. Das dritte RTL-Entwurfselement
ist mit dem ersten und dem zweiten RTL-Entwurfselement gekoppelt.
Die RTL-Simulationsvorrichtung ist ausgebildet, mindestens eine
der mehreren Synchronisiererstufen dynamisch zu aktivieren und zu
deaktivieren.
-
In
einer weiteren Ausführungsform
wird ein Synchronisierermodul bereitgestellt, das ausgebildet ist, mit
einem ersten Zwischenspeicherregister verbunden zu werden, das von
einem ersten Taktsignal angesteuert wird, und mit einem zweiten
Zwischenspeicherregister verbunden zu werden, das von einem zweiten
Taktsignal angesteuert wird. Das erste Zwischenspeicherregister
gibt ein erstes digitales Signal aus, während das zweite Zwischenspeicherregister
ein zweites digitales Signal empfängt. Das Synchronisierermodul
umfasst eine Verzögerungseinheit,
die ausgebildet ist, selektiv das erste digitale Signal mittels
einer einstellbaren Verzögerung
selektiv zu verzögern,
um damit das zweite digitale Signal bereitzustellen.
-
In
einer weiteren Ausführungsform
wird eine HDL- (Hardwarebeschreibungssprache) Bibliothek bereitgestellt,
die mindestens ein Synchronisierermodul, wie es zuvor beschrieben
ist, umfasst.
-
Eine
noch weitere Ausführungsform
betrifft ein computerlesbares Speichermedium, das computerlesbare
Instruktionen speichert, die, wenn sie von einem Prozessor ausgeführt werden,
den Prozessor veranlassen, eine RTL-Simulation durchzuführen, um
eine Bussynchronisierung über
eine Taktbereichsgrenze hinweg zu simulieren. Das computerlesbare
Speichermedium umfasst ein erstes RTL-Entwurfselement, das ausgebildet
ist, eine Schaltung in einem ersten Taktbereich zu simulieren, und
ein zweites RTL-Entwurfselement, das ausgebildet ist, eine Schaltung
in einem zweiten Taktbereich zu simulieren. Das computerlesbare
Speichermedium umfasst ferner ein drittes RTL-Entwurfselement, das
ausgebildet ist, die Funktion eines Mehrstufensynchronisierers mit
mehreren Synchronisiererstufen zu simulieren, die in der Lage sind,
ein Synchronisierersignal zu erzeugen, das sich von den Synchronisierersignalen
unterscheidet, die von anderen Synchronisiererstufen des Mehrstufensynchronisierers
erzeugt werden. Das dritte RTL-Entwurfselement ist mit dem ersten
und dem zweiten RTL-Entwurfselement gekoppelt. Das computerlesbare
Speichermedium umfasst ferner computerlesbare Instruktionen, die
dynamisch mindestens eine der mehreren Synchronisiererstufen aktivieren
und deaktivieren.
-
Gemäß einer
noch weiteren Ausführungsform
wird ein Synchronisierersimulationsverfahren bereitgestellt, um
eine digitale elektronische Schaltung zu simulieren, die ein Synchronisierermodul
bildet, das mit einem ersten Register verbunden werden kann, das
von einem ersten Taktsignal angesteuert wird, und das mit einem
zweiten Register verbunden werden kann, das von einem zweiten Taktsignal
angesteuert wird, wobei das erste Register ein erstes digitales
Signal ausgibt und wobei das zweite Register ein zweites digitales
Signal empfängt.
Das Verfahren umfasst das selektive Verzögern des ersten digitalen Signals
mittels einer variablen Verzögerung
und das Bereitstellen des verzögerten
Signals als das zweite digitale Signal.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
begleitenden Zeichnungen sind hiermit mit inbegriffen und bilden
einen Teil der Beschreibung, um die Prinzipien der Erfindung zu
erläutern.
Die Zeichnungen sollen die Erfindung nicht auf lediglich die dargestellten
und beschriebenen Beispiele beschränken, wie die Erfindung praktiziert
und angewendet werden kann. Weitere Merkmale und Vorteile gehen
aus der folgenden detaillierteren Beschreibung der Erfindung hervor,
wie sie auch in den begleitenden Zeichnungen dargestellt ist, wobei:
-
1a eine
Blockansicht ist, die eine Digitalschaltung mit zwei unterschiedlichen
Taktbereichen darstellt, wobei ein taktbereichüberschreitendes Einzelbitsignal
vorhanden ist;
-
1b ein
Zeitablauf ist, der die Signalpegel der in 1a gezeigten
Schaltung darstellt;
-
2a eine
Blockansicht ist, die eine Digitalschaltung mit zwei unterschiedlichen
taktbereichüberschreitenden
Mehrfachbitbussignalen zeigt;
-
2b ein
Zeitablauf entsprechend der Schaltung aus 2a ist;
-
3a eine
Blockansicht ist, die eine Synchronisierung des taktbereichüberschreitenden
Einzelbitsignals zeigt;
-
3b ein
Zeitablauf ist, der den Betrieb der Schaltung aus 3a zeigt;
-
4a eine
Taktbereichsüberschreitungssynchronisierung
für Mehrfachbitbussignale
zeigt;
-
4b ein
Zeitablauf ist, der sich auf die Anordnung aus 4a bezieht;
-
5 ein
Graph ist, der eine Technik zur statischen Verifizierung der Bussynchronisierung
zeigt;
-
6a bis 6e Ausführungsformen
von Mehrstufensynchronisierern zeigen, die für eine dynamische Verifizierung
einer Einzelbit- oder Bussynchronisierung verwendet werden können;
-
7 eine
weitere Ausführungsform
eines Mehrstufensynchronisierers mit zwei Multiplexern zeigt;
-
8 einen
Mehrstufensynchronisierer gemäß einer
weiteren Ausführungsformen
zeigt, der eine reduzierte Anzahl an Elementen aufweist;
-
9a eine
Blockansicht ist, die zur Darstellung der Echtzeiterfordernisse
für eine
Einzelbit-Synchronisierung unter Anwendung eines Zweistufensynchronisierers
zeigt;
-
9b ein
Zeitablauf ist, der den Betrieb der in 9a gezeigten
Anordnung darstellt;
-
10a eine Blockansicht ist, die zur Darstellung
der Echtzeiterfordernisse für
eine Einzelbit-Synchronisierung unter Anwendung eines Dreistufensynchronisierers
verwendet wird;
-
10b ein Zeitablauf ist, der den Betrieb der in 10a gezeigten Anordnung darstellt;
-
11a eine Blockansicht ist, die zur Darstellung
der Echtzeiterfordernisse einer Bussignal-Synchronisierung unter
Anwendung von Zweistufensynchronisierem verwendet wird;
-
11b ein Zeitablauf ist, der die Funktion der in 11a gezeigten Anordnung darstellt;
-
12a eine Blockansicht ist, die zur Darstellung
der Echtzeiterfordernisse einer Bussignal-Synchronisierung unter
Anwendung von zweistufigen und dreistufigen Synchronisierern verwendet
wird;
-
12b ein Zeitablauf ist, der die Funktion der in 12a gezeigten Anordnung darstellt;
-
13a eine Ausführungsform
eines fünfstufigen
Synchronisierers zeigt;
-
13b ein Zeitablauf ist, der das Schalten des Synchronisierersignals
von einer unteren zu einer höheren
Stufe darstellt;
-
13c ein Zeitablauf ist, der das Schalten des Synchronisierungssignals
von einer höheren
zu einer unteren Stufe zeigt;
-
14 eine
Blockansicht ist, die ein Implementierungsbeispiel eines mehrstufigen
Synchronisierers gemäß einer
Ausführungsform
darstellt;
-
15 ein
Zustandsdiagramm ist, das die Zustände darstellt, die die Anordnung
aus 14 einnehmen kann; und
-
16 eine
Blockansicht ist, die einen Interruptgenerator als ein weiteres
Implementierungsbeispiel darstellt.
-
DETALLIERTE
BESCHREIBUNG DER ERFINDUNG
-
Die
anschaulichen Ausführungsformen
der vorliegenden Erfindung werden nunmehr mit Bezugnahme zu den
Zeichnungen beschrieben, wobei gleiche Elemente und Strukturen durch
die gleichen Bezugszeichen bezeichnet sind.
-
Bevor
nun detaillierter die Synchronisationsmodule der Ausführungsformen
beschrieben werden, die eine dynamische Verifizierung von Einzelbit-
und Bussynchronisierung ermöglichen,
wird auf 5 verwiesen, die eine statische
Verifizierungstechnik zeigt, die in Verbindung mit den Ausführungsformen
angewendet werden kann. In diesem Ansatz wird die gesamte Entwurfsstruktur
auf ein graphisches Modell abgebildet, das aus Vertex- und Kantenelementen
aufgebaut ist. Vertices können
Flops (in 5 als „f" bezeichnet) und kombinatorische Elemente
(mit „c" bezeichnet) sein.
Kanten sind in dem graphischen Modell als Drähte dargestellt.
-
In
dem statischen Verifizierungsansatz wird das Modell in Taktbereiche
und Stufenebenen eingeteilt. Wie man aus 5 erkennen
kann, zeigt das vorliegende Beispiel vier unterschiedliche Ebenen.
Wenn man das Beispiel einer Bussynchronisierung annimmt, so können diese
auf der Grundlage der Erkenntnis identifiziert werden, dass kombinatorische
Logikeingänge
Busanforderungen durch fettgedruckte vertikale Linien mit zugeordneten
Zahlen 1), 2) oder 3) dargestellt sind. Es ist anzumerken, dass
dieser Verifizierungsansatz es ermöglicht, die Anzahl der Busse
zu erkennen, die zum Erreichen einer korrekten Bussynchronisierung
erforderlich ist.
-
Wie
nachfolgend detaillierter beschrieben ist, können in den Ausführungsformen
mehrstufige Synchronisieren in einer Weise vorteilhaft ausgenutzt
werden, dass eine dynamische Verzierung von einer Einzelbit- oder
Bussynchronisierung möglich
ist. Beispiele von mehrstufigen Synchronisierern, die in den Ausführungsformen
verwendet werden können,
sind in den 6a bis 6c gezeigt.
In 6a sind vier parallel angeordnete Registersequenzen
vorgesehen, die alle das gleiche Eingangssignal empfangen. Die Registersequenzen,
die in 6a verwendet sind, besitzen
zwei bis fünf
Registerelemente, die Zwischenspeicher bzw. Latches, Flip-Flop-Einrichtungen
oder andere Zweizustandsysteme sein können, die in der Lage sind,
einen Speichervorgang bei Taktsignalschranken auszuführen. Wie
man aus 6a erkennen kann, sind die Ausgangsanschlüsse jeder
der Sequenzen mit einem Multiplexer verbunden, der ein beliebiges
Auswahlelement zum Auswählen
und Ausgeben eines der Signale sein kann.
-
Der
in 6b gezeigte mehrstufige Synchronisierer unterscheidet
sich von dem in 6a gezeigten dahingehend, dass
jede der Registersequenzen in der Länge um ein Element reduziert
ist, und dass ein einzelnes Registerelement an dem Ende des Synchronisierers
hinzugefügt
ist. Zu beachten ist, dass das erwähnte einzelne Registerelement
gleichermaßen
auch der linken Seite des mehrstufigen Synchronisierers hinzugefügt werden
kann. Der Synchronisierer der Ausführungsform aus 6b kann
die gleiche Funktion ausüben wie
jener aus 6a, besitzt jedoch eine auf
drei reduzierte Gesamtzahl an Registerelementen.
-
In 6c wird
dieses Konzept erneut angewendet, indem ein weiteres Registerelement
in jeder der Sequenzen entfernt und ein zweites Registerelement
an dem Ende hinzugefügt
wird. Wiederum können
ein oder zwei der zusätzlichen
Registerelemente, die so gezeigt sind, dass sie mit dem Ausgangsanschluss
des Multiplexers aus 6c verbunden sind, auch vorgesehen
werden, bevor die Registersequenzen verzweigt werden.
-
7 zeigt
eine weitere Ausführungsform,
die in gewisser Weise den Synchronisierer aus 6a wiedergibt,
die sich jedoch darin unterscheidet, dass ein zweiter Multiplexer
vorgesehen ist. D. h., während
die Registersequenzen in 6a jeweils
das gleiche Eingangssignal empfangen, stellt die Anordnung aus 7 einen
zusätzlichen
Multiplexer bereit. Dies ermöglicht
ein besseres Entkoppeln der Registersequenzen, um die Zuverlässigkeit
zu erhöhen,
wobei dies besonders für
die Bussynchronisierung vorteilhaft sein kann.
-
Obwohl
dies in 7 nicht gezeigt ist, sollte
erwähnt
werden, dass Ausführungsformen,
die ähnlich
zu jenen der 6b und 6c sind,
auch als Modifizierungen ausgehend von der Anordnung aus 7 möglich sind.
-
In 8 ist
ein mehrstufiger Synchronisierer gemäß einer Ausführungsform
dargestellt, wobei die Anzahl der Registerelemente soweit wie möglich reduziert
ist. In der Ausführungsform
aus 8 verbleibt lediglich eine einzige physikalische
Registersequenz. Um mehrere logische Registersequenzen mit unterschiedlicher
Länge zu
verwirklichen, werden Signale abgezweigt und werden separat dem
Multiplexer zugeführt.
D. h. das oberste Signal, das dem Multiplexer zugeführt wird,
ist das Ausgangssignal der gesamten Registersequenz. Das zweite
Signal, das dem Multiplexer zugeführt wird, wird von dem Ausgangsanschluss
des vierten Registerelements gewonnen, so dass dieses dem Ausgangssignal
einer Registersequenz mit vier Elementen entspricht. In ähnlicher
Weise entsprechen das dritte und das vierte Signal, die dem Multiplexer
zugeführt
werden, den Sequenzen aus drei bzw. zwei Registerelementen.
-
Zu
beachten ist, dass in einer Einzelbit-Synchronisierausführungsform
jedes der einzelnen Registerelemente, die in den 6a bzw. 6c, 7 und 8 gezeigt
sind, Einzelbit-Register,
etwa Flip-Flops, sein können.
In Bussynchronisier-Ausführungsformen
kann jedes der Registerelemente so ausgebildet sein, um temporär mehrere
Bits zu einem Zeitpunkt zu speichern, d. h. eines für jede Leitung
in dem Bus.
-
In
einer Ausführungsform
wird das Auswahlelement, etwa ein Multiplexer, in einer dynamischen
Weise so angesteuert, dass die verwendete Registersequenz geändert wird.
Die Änderung
kann regulär
oder irregulär
in reproduzierbarer Weise oder auch nicht durchgeführt werden.
In einer Ausführungsform
kann die Auswahleinrichtung durch ein zufälliges oder pseudozufälligs Steuersignal
angesteuert sein. Die Verwendung eines reproduzierbaren Signals,
etwa eines Pseudo-Zufall-Steuersignals, kann einen Lernprozess aus
dem Korrgieren von Entwurfsfehlern ermöglichen, indem die Simulationsergebnisse
vor und nach der Korrektur verglichen werden.
-
Bevor
dies detaillierter erläutert
wird, seien zunächst
die Echtzeitanforderungen für
Einzelbitsignale und Bussignale erläutert.
-
9a und 10a zeigen Beispiele, in denen zweistufige und
dreistufige Synchronisierer für
die Einzelbit-Synchronisierung verwendet sind. Wie man aus den 9b und 10b erkennen kann, wird die Synchronisierung korrekt
ausgeführt,
so dass angenommen werden kann, dass Einzelbitsignal für gewöhnliche keine
vollständige
Echtzeiterfordernis besitzen.
-
11a und 12a zeigen ähnliche
Anordnungen für
die Bussynchronisierung. Das Stufenmodul 1100 aus 11a benutzt zwei Stufen für jedes Bit, so dass sich daraus
der Zeitablauf aus 11b ergibt. 12a zeigt eine Anordnung, in der ein einzelnes
Bit durch ein zweistufiges Synchronisiererelement verarbeitet wird,
während
drei Stufen für
das zweite Bit verwendet werden. In 12b kann
man erkennen, dass das Ausgangssignal undefinierte Werte aufweisen
kann, die zu möglichen
Funktionsfehlern führen
können. Daraus
kann man schließen,
dass die Bussynchronisierung höhere
Echtzeitanforderungen im Vergleich zu der Einzelbit-Synchronisierung
besitzt.
-
In 13a ist ein mehrstufiges Synchronisierer wie in 8 gezeigt.
Dieser Synchronisierer wird nunmehr verwendet, um das Schalten von
einer tieferen zu einer höheren
Stufe und umgekehrt zu erläutern,
wobei angenommen wird, dass das Schalten bei jeder positiven Flanke
eines Taktereignisses möglich
ist.
-
13b zeigt ein Beispiel, in der die Synchronisierung
von Sync 2 auf Sync 5 umgeschaltet wird. Man kann erkennen, dass
das Ausgangssignal in korrekter Weise alle eintreffenden Daten wiedergibt,
obwohl die Daten eine Taktbereichsüberschreitung durchlaufen haben.
-
Das
Folgende ist eine kurze Zusammenfassung des Zeitablaufmodells zum
Umschalten von einer tieferen zu einer höheren Stufe, wobei angenommen
wird, dass tswitch an einer positiven Flanke
des clk-Signals auftritt und wobei Tclk =
1/fclk ist.
-
-
-
In 13c ist ein Beispiel gezeigt, um den Synchronisierer
von einer höheren
zu einer tieferen Stufe umzuschalten. In dem in 13c gezeigten Beispiel wird sync5 auf sync4 umgeschaltet.
In dieser und in anderen Ausführungsformen
kann das Schalten ledglich bei einer positiven Taktsignalflanke
möglich
sein, und wenn keine Daten verloren gehen. Die Bedingung für das Umschalten
von einer Rangebene zu einer nächst tieferen
kann so sein, dass beide Rangebenen den gleichen Wert aufweisen
müssen.
-
Im
Folgenden ist das Zeitablaufmodell für das Herunterschalten der
Registersequenzen kurz zusammengefasst, wobei angenommen wird, dass
tswitch an den positiven Taktsignalflanken
auftritt.
-
-
In 14 ist
ein mehrstufiger Synchronisierer als ein Implementierungsbeispiel
gemäß einer
Ausführungsform
gezeigt. In diesem Beispiel wird zwischen den Ebenen 2 und 3 mit
einer Schaltgeschwindigkeit umgeschaltet, die durch Erweitern der
Bitbreite der Zufallsvariablen SEL geändert werden kann.
-
15 zeigt
ein Zustandsdiagramm, das in der Ausführungsform aus 14 verwendet
werden kann. Wie zu erkennen ist, durchläuft der Synchronisierer die
beiden unterschiedlichen Synchronisiererstufen in einer Weise, wie
dies durch den Zufallswert sel gesteuert ist. Ein CRC- (zyklischer
Redundanzprüf-)
Generator kann verwendet werden, um reproduzierbare Pseudo-Zufalls-Verzögerungen
zweier oder dreier Taktzyklen für diesen
Zweck zu erzeugen. In einer weiteren beispielhaften Ausführungsform
kann ein linerares Rückkopplungsschieberegister
für den
Polynomausdruck 1 + x3 + x10 verwendet
werden. In einer noch weiteren Ausführungsform kann in dem CRC-Generator
ein linerares Rückkopplungsschieberegister
verwendet werden.
-
Es
wieder auf
14 verwiesen. Das Folgende ist
eine beispielhafte Verilog-Codierung, die in einer Ausführungsform
während
des RTL-Entwurfs verwendet werden kann:
-
Durch
Anwenden variabler Verzögerungen
in der oben beschriebenen Weise erlauben es die Ausführungsformen,
das Verhalten von in Silizium implementierten Schaltungen für Simulationszwecke
zu modellieren, um damit Signalsynchronisierprobleme sehr früh im Entwurfsablauf,
beispielsweise während
der RTL-Entwurfsphase, zu erkennen. Im Allgemeinen können die
Ausführungsformen
Synchronisierermodule verwenden, die unter Anwendung einer HDL-
(Hardwarebeschreibungssprache) Syntax und Semantik definiert sind.
Die Synchronisierungsmodule können
separat definiert werden oder können
als Teil einer Bibliothek vorliegen.
-
In 16 ist
ein Simulationsbeispiel eines Interruptgenerators gezeigt. Diese
Schaltung kann eine nicht korrekte Bussynchronisienrung aufweisen,
die von der Technik der vorliegenden Ausführungsformen bereits in der
RTL-Entwurfsphase aufgedeckt werden kann. In 16 ist
das Synchronisierermodul als Block 1620 vorgesehen. Ein
Impulsgenerator 1600 liefert ein Signal zu einem 4-Bit-Zähler 1610,
um den Zähler
zum Aufwärtszählen zu
aktivieren. Ferner empfängt
eine Eingangssignalerzeugungseinheit gen_int 1630 das Ausgangssignal
des Synchronisierers 1620, um einen Interrupt zu erzeugen
und auszugeben. Der Impulsgenerator 1600 zusammen mit dem
4-Bit-Zähler 1610 einerseits
und der Synchronisierer 1620 mit dem Eingangsgenerator 1630 anderseits
bilden unterschiedliche Taktbereiche. Zu beachten ist, dass separate
Rücksetzsynchronisierer 1640 und 1650 für die Taktbereiche
vorgesehen sein können.
-
Wie
zuvor beschrieben ist, wird eine Simulationstechnik bereitgestellt,
um einen, z. B. zweistufigen, Flip-Flop-Synchronisierer zu simulieren.
Bei der Simulation (jedoch nicht später in der realen Implementierung in
einer Siliziumschaltung) schaltet eine Schaltlogik zwischen beispielsweise
Verzögerungen
von zwei oder drei Zyklen hin und her. Dies simuliert das reale
Siliziumverhalten, in welchem Signalverzögerungen aus diversen Gründen manchmal
variieren. Hinsichtlich der Bussynchronisierung können in
gewissen Ausführungsformen
einzelne Busbits „außer Phase" gebracht werden
(im Gegensatz zu konventionellen RTL-Simulatoren, die alle Bus-Bits
in gleichen Weise behandeln), so dass der Entwurfsingenieur eine
nicht korrekte RTL-Beschreibung früh im Entwurfsprozess erkennen
kann.
-
Obwohl
die Erfindung mit Bezug zu den physikalischen Ausführungsformen
beschrieben ist, wie sie in Übereinstimmung
mit der Erfindung aufgebaut sind, erkennt der Fachmann, dass diverse
Modifizierungen, Variationen und Verbesserungen der vorliegenden
Erfindung im Lichte der obigen Lehren und innerhalb des Bereichs
der angefügten
Patentansprüche
durchgeführt
werden können,
ohne von dem Grundgedanken und beabsichtigten Schutzbereich der
Erfindung abzuweichen. Des weiteren wurden jene Bereiche, von denen
angenommen wird, dass der Fachmann damit vertraut ist, hierin nicht
beschrieben, um die Erfindung, wie sie hier beschrieben ist, nicht
unnötig
zu verdunkeln. Somit ist die Erfindung nicht durch die speziellen
anschaulichen Ausführungsformen,
sondern lediglich durch den Bereich der angefügten Patentansprüche beschränkt.