-
Gebiet
-
Ausführungsformen der vorliegenden Erfindung betreffen eine Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne. Einige Ausführungsformen der vorliegenden Erfindung betreffen einen FIFO (FIFO = First-In-First-Out) basierten Synchronisationsmechanismus für fraktionale Abtastratenwandler (FSRC).
-
Hintergrund
-
Eine Synchronisation von zwei Taktdomänen für einen Datenhandover wird in einer Vielzahl von Anwendungen verwendet, wie beispielsweise in Abtastratenwandlern (SRC) und in fraktionalen Abtastratenwandlern (FSRC).
-
Abriss
-
Ausführungsform der vorliegenden Erfindung stellen eine Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne bereit. Die Vorrichtung umfasst einen Rechner, einen first-in-first-out (FIFO) Speicher, einen Synchronisationspulsgenerator, einen Füllpegelinformationslieferanten und einen Rückkopplungsweg. Der Rechner ist mit dem Takt der ersten Taktdomäne getaktet und ist konfiguriert, eine Synchronisationspulszyklusdauerinformation zu liefern, die eine zeitliche Position von Synchronisationspulsen bei einem Takt der zweiten Taktdomäne beschreibt. Der FIFO-Speicher ist konfiguriert, um einen Eingangsdatenwert in Synchronisation mit der ersten Taktdomäne zu übernehmen und einen Ausgangsdatenwert in Synchronisation mit der zweiten Taktdomäne und in Reaktion auf einen momentanen Synchronisationspuls zu liefern. Der Synchronisationspulsgenerator ist mit dem Takt der zweiten Taktdomäne getaktet und ist konfiguriert, um den nachfolgenden Synchronisationspuls zu erzeugen, sodass der nachfolgende Synchronisationspuls sich an der zeitlichen Position befindet, die durch die Synchronisationspulszyklusdauerinformationen beschrieben ist. Der Füllpegelinformationslieferant ist konfiguriert, um eine Füllpegelinformation bereitzustellen, die einen Füllpegel des FIFO-Speichers beschreibt. Der Rückkopplungsweg ist für eine Rückkopplung der Füllpegelinformation zum Rechner konfiguriert, der weiter konfiguriert ist, um die Synchronisationspulszyklusdauerinformation basierend auf der Füllpegelinformation einzustellen.
-
Einige Ausführungsformen der vorliegenden Erfindung stellen eine Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne bereit. Die Vorrichtung umfasst einen Rechner, einen FIFO-Speicher, einen Synchronisationspulsgenerator, einen Füllpegelinformationslieferanten und einen Rückkopplungsweg. Der Rechner ist mit dem Takt der ersten Taktdomäne getaktet und ist konfiguriert, um eine Synchronisationspulszyklusdauerinformation zu liefern, die eine zeitliche Position von Synchronisationspulsen bei einem Takt der zweiten Taktdomäne beschreibt. Der FIFO-Speicher ist konfiguriert, um die Synchronisationspulszyklusdauerinformation, einen Eingabewiederladewert und einen Eingabeinkrementierwert in Synchronisation mit der ersten Taktdomäne zu übernehmen und die Synchronisationspulszyklusdauerinformation, einen Ausgabewiederladewert und einen Ausgabeinkrementierwert in Synchronisation mit der zweiten Taktdomäne und in Reaktion auf einen momentanen Synchronisationspuls zu liefern. Der Synchronisationspulsgenerator ist mit dem Takt der zweiten Taktdomäne getaktet und ist konfiguriert, um die Synchronisationspulszyklusdauerinformationen vom FIFO-Speicher zu empfangen und den nachfolgenden Synchronisationspuls so zu erzeugen, dass der nachfolgende Synchronisationspuls sich an der temporalen Position befindet, die durch die Synchronisationspulszyklusdauerinformationen beschrieben ist. Der Füllpegelinformationslieferant ist konfiguriert, eine Füllpegelinformation zu liefern, die einen Füllpegel des FIFO-Speichers beschreiben. Der Rückkopplungsweg ist konfiguriert, um die Füllpegelinformation zum Rechner zurückzuführen, der weiter konfiguriert ist, um die Synchronisationspulszyklusdauerinformationen basierend auf der Füllpegelinformation einzustellen.
-
Weitere Ausführungsformen der vorliegenden Erfindung stellen ein Verfahren zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne bereit. In einem ersten Schritt wird eine Synchronisationspulszyklusdauerinformation, die eine zeitliche Position von Synchronisationspulsen bei einem Takt der zweiten Taktdomäne beschreibt, in der ersten Taktdomäne bereitgestellt. In einem zweiten Schritt wird ein Eingabedatenwert in Synchronisation mit der ersten Taktdomäne übernommen und wird ein Ausgabedatenwert in Synchronisation mit der zweiten Taktdomäne und in Reaktion auf einen momentanen Synchronisationspuls, mit einem FIFO-Speicher bereitgestellt. In einem dritten Schritt wird der Synchronisationspuls in der zweiten Taktdomäne so erzeugt, dass sich der Synchronisationspuls bei einer zeitlichen Position befindet, die durch die Synchronisationspulszyklusdauerinformation beschrieben ist. In einem vierten Schritt wird eine Füllpegelinformation, die einen Füllpegel des ersten FIFO-Speichers beschreibt, bereitgestellt. In einem fünften Schritt wird die Füllpegelinformation zur ersten Taktdomäne zurückgeführt, um die Synchronisationspulszyklusdauerinformation basierend auf der Füllpegelinformation einzustellen.
-
Ein Aspekt der vorliegenden Offenbarung stellt eine Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne bereit. Die Vorrichtung weist einen Speicher auf, der von der ersten Taktdomäne und von der zweiten Taktdomäne verwendet wird, wobei jede Adresse des Speichers mit zumindest einem Datenwort und einem Gültigkeitswort verknüpft ist, das eine Gültigkeitszeit des zumindest einen Datenworts beschreibt. Die Vorrichtung ist konfiguriert, um das Gültigkeitswort basierend auf einem Füllpegel des Speichers zu bestimmen.
-
Kurzbeschreibung der Zeichnungen
-
Ausführungsform der vorliegenden Erfindung werden hierin unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
-
1 zeigt ein Blockdiagramm einer Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne gemäß einer Ausführungsform der vorliegenden Erfindung.
-
2 zeigt ein Blockdiagramm der Vorrichtung zur Synchronisation des Datenhandovers zwischen der ersten Taktdomäne und der zweiten Taktdomäne, die in der 1 gezeigt ist, die weiter einen ersten Datenprozessor an einen zweiten Datenprozessor aufweist.
-
3 zeigt ein Blockdiagramm einer Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer Taktdomäne niedriger Frequenz und einer Taktdomäne hoher Frequenz gemäß einer Ausführungsform der vorliegenden Erfindung.
-
4 zeigt ein Blockdiagramm einer Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne gemäß einer Ausführungsform der vorliegenden Erfindung.
-
5 zeigt in einem Diagramm beispielhafte Zeitplanungen der ersten Taktdomäne und der zweiten Taktdomäne der in 3 und 4 gezeigten Vorrichtung.
-
6 zeigt ein Blockdiagramm eines Speicherlayouts des FIFO-Speichers gemäß einer Ausführungsform der vorliegenden Erfindung.
-
7 zeigt ein Blockdiagramm der Vorrichtung zur Synchronisation des Datenhandovers zwischen der ersten Taktdomäne und der zweiten Taktdomäne, die in 4 gezeigt ist, wobei der Rechner weiter einen Controller aufweist.
-
8 zeigt ein Blockdiagramm des FIFO-Speichers, des Wiederladezählers 111 und des Füllpegelinformationslieferanten 112 gemäß einer Ausführungsform der vorliegenden Erfindung.
-
9 zeigt ein Blockdiagramm des Füllpegelinformationslieferanten gemäß einer Ausführungsform der vorliegenden Erfindung.
-
10 zeigt ein Ablaufdiagramm eines Verfahrens zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne gemäß einer Ausführungsform der vorliegenden Erfindung; und
-
11 ein schematisches Blockdiagramm einer Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne gemäß eines Aspekts der vorliegenden Offenbarung.
-
Gleiche oder äquivalente Elemente oder Elemente mit gleichen oder äquivalenten Funktionalitäten sind in der folgenden Beschreibung durch gleiche oder äquivalente Bezugszeichen bezeichnet.
-
Detaillierte Beschreibung
-
In der folgenden Beschreibung wird eine Vielzahl von Einzelheiten dargelegt, um eine umfassendere Erläuterung von Ausführungsformen der vorliegenden Erfindung darzulegen. Jedoch ist für den Fachmann erkennbar, dass Ausführungsformen der vorliegenden Erfindung ohne diese speziellen Einzelheiten praktiziert werden können. Bei anderen Beispielen sind bereits bekannte Strukturen und Vorrichtungen in der Form eines Blockdiagramms und nicht in Einzelheiten gezeigt, um eine Verschleierung von Ausführungsformen der vorliegenden Erfindung zu vermeiden. Zusätzlich können Merkmale verschiedener Ausführungsformen, die im nachfolgenden beschrieben werden, miteinander kombiniert werden, sofern nicht speziell etwas anderes angegeben ist.
-
1 zeigt ein Blockdiagramm einer Vorrichtung 100 zur Synchronisierung eines Datenhandovers zwischen einer ersten Taktdomäne 102 und einer zweiten Taktdomäne 104 gemäß einer Ausführungsform der vorliegenden Erfindung. Die Vorrichtung 100 umfasst einen Rechner 106, einen FIFO-Speicher 108, einen Synchronisationspulsgenerator 110, einen Füllpegelinformationslieferanten 112 und einen Rückkopplungsweg 114. Der Rechner 106 wird mit dem Takt clk1 der ersten Taktdomäne 102 getaktet und ist konfiguriert, um eine Synchronisationspulszyklusdauerinformation 116 zu liefern, die eine zeitliche Position von Synchronisationspulsen 118_n bei einem Takt clk2 der zweiten Taktdomäne 104 beschreibt. Der FIFO-Speicher 108 ist konfiguriert, um ein Eingangsdatenwert in Synchronisation mit dem Takt clk1 der ersten Taktdomäne 102 zu übernehmen und einen Ausgangsdatenwert 122 in Synchronisation mit dem Takt clk2 der zweiten Taktdomäne 104 und in Reaktion auf einen momentanen Synchronisationspuls 118_n (n = 1) zu liefern. Der Synchronisationspulsgenerator 110 ist mit dem Takt clk2 der zweiten Taktdomäne 104 getaktet und ist konfiguriert, um den nachfolgenden Synchronisationspuls 118_n (n = 2) zu erzeugen, so dass der nachfolgende Synchronisationspuls 118_n (n = 2) sich an der zeitlichen Position befindet, die durch die Synchronisationspulszyklusdauerinformation 116 beschrieben ist. Der Füllpegelinformationslieferant 112 ist konfiguriert, um eine Füllpegelinformation 124 zu liefern, die einen Füllpegel des FIFO-Speichers 108 beschreibt. Der Rückkopplungsweg 114 ist konfiguriert, um die Füllpegelinformation 124 zum Rechner 106 zurück zu führen, der weiter konfiguriert ist, um die Synchronisationspulszyklusdauerinformation 116 basierend auf der Füllpegelinformation 124 einzustellen.
-
Bei Ausführungsformen ist der Datenhandover zwischen der ersten Taktdomäne 102 und der zweiten Taktdomäne 104 durch den FIFO-Speicher 108 realisiert, z. B. durch einen asynchronen FIFO-Speicher, der mit dem Takt clk1 der ersten Taktdomäne 102 getaktet ist und dem Takt clk2 der zweiten Taktdomäne 104, wobei der Takt clk2 der zweiten Taktdomäne 104 gleich oder größer ist als der Takt clk1 der ersten Taktdomäne 102 oder umgekehrt. Darüber hinaus ist der FIFO-Speicher 108 konfiguriert, um den Ausgangsdatenwert 122 (nur) in Antwort auf Synchronisationspulse 118_n zu liefern, um einen synchronisierten Datenhandover zwischen der ersten Taktdomäne 102 und der zweiten Taktdomäne 104 zu realisieren.
-
Diese Synchronisationspulse 118_n werden durch den Synchronisationspulsgenerator 110 an der zeitlichen Position erzeugt, die durch die Synchronisationspulszyklusdauerinformation 116 beschrieben ist. Da der Synchronisationspulsgenerator 110 mit dem Takt clk2 der zweiten Taktdomäne 104 getaktet ist, können die Synchronisationspulse 118_n nur bei Takten (z. B. ansteigenden oder fallenden Taktflanken) der zweiten Taktdomäne 104 erzeugt werden. Somit befinden sich die Synchronisationspulse 118_n bei speziellen Takten (z. B. speziellen ansteigenden oder fallenden Taktflanken) der zweiten Taktdomäne 104, wobei die speziellen Takte durch die Synchronisationspulszyklusdauerinformation 116 definiert sind.
-
Durch Rückkopplung der Füllpegelinformation 114 zum Rechner 106 kann die Synchronisationspulszyklusdauerinformation 116 so eingestellt werden, dass der Füllpegel des ersten FIFO-Speichers 108 in einem vorbestimmten Bereich gehalten wird, wodurch ein synchronisierter Datenhandover mit einer fast konstanten Latenz bereitgestellt wird.
-
Beispielsweise kann der FIFO-Speicher 108 eine Mehrzahl von Speicherzellen aufweisen, wobei der Füllpegel des FIFO-Speichers 108 innerhalb eines vorbestimmten Bereichs gehalten wird, der durch einen Bereich von plus/minus einer oder zwei Speicherzelle(n) gehalten wird, d. h. der Füllpegel des FIFO-Speichers 108 kann (nur) in dem Bereich von plus/minus einer oder zwei Speicherzelle(n) variieren, wodurch ein Über- oder Unterlauf des FIFO-Speichers 108 vermieden wird und somit ein Datenhandover mit einer fast konstanten Latenz bereitgestellt wird (siehe 6).
-
Mit anderen Worten ist die Vorrichtung 100 in der Lage, einen konstanten (oder nahezu konstanten) Füllpegel des FIFO-Speichers 108 und somit eine konstante (oder nahezu konstante) Latenz des Datensynchronisationsmechanismus zu liefern. Darüber hinaus kann die Synchronisation auch in dem Fall von Änderungen des Taktes clk1 (oder der Taktfrequenz f1) der ersten Taktdomäne 102 oder des Taktes clk2 (oder der Taktfrequenz f2) der zweiten Taktdomäne 104 aufrechterhalten werden. Darüber hinaus ermöglicht die Vorrichtung 100 die Implementierung von fraktionalen Abtastratenwandlern (FSRC) mit einem Interpolationsverhältnis, das größer oder gleich 1 ist (f2/f1 ≥ 1).
-
2 zeigt ein Blockdiagramm der Vorrichtung 100 zur Synchronisation des Datenhandovers zwischen der ersten Taktdomäne 102 und der zweiten Taktdomäne 104, die in 1 gezeigt ist, weiter aufweisend einen ersten Datenprozessor 126 und einen zweiten Datenprozessor 128. Der erste Datenprozessor 126 ist mit dem Takt clk1 der ersten Taktdomäne 102 getaktet und ist konfiguriert, um eine Eingangsinformation 130 so zu verarbeiten, dass der Eingangsdatenwert 120 in Synchronisation mit der ersten Taktdomäne 102 für den FIFO-Speicher 108 geliefert wird. Der zweite Datenprozessor 128 ist mit dem Takt clk2 der zweiten Taktdomäne 104 getaktet und ist konfiguriert, um den Ausgangsdatenwert 122 in Synchronisation mit der zweiten Taktdomäne 104 und in Antwort auf den momentanen Synchronisationspuls 118_n (n = 1) vom FIFO-Speicher 108 zu empfangen, und den Ausgangsdatenwert 122 zu bearbeiten, so dass eine Ausgangsinformation 132 in Synchronisation mit dem Takt clk2 der zweiten Taktdomäne 104 bereitgestellt wird.
-
Bei einigen Ausführungsformen kann der erste Datenprozessor 126 als eine Datenquelle bezeichnet werden, während der zweite Datenprozessor 128 als eine Datensenke bezeichnet werden kann, da der erste Datenprozessor 126 den Eingangsdatenwert 120 für den FIFO-Speicher 108 liefert und der zweite Datenprozessor 128 den Ausgangsdatenwert 122 vom FIFO-Speicher 108 empfängt.
-
Im Folgenden werden unter Bezugnahme auf eine beispielhafte Ausführungsform Eigenschaften der Vorrichtung 100 zur Synchronisation eines Datenhandovers zwischen der ersten Taktdomäne 102 und der zweiten Taktdomäne 104 beschrieben. Mit anderen Worten werden im Folgenden ein Synchronisationsmechanismus für Signalverarbeitungsblöcke, die einen Datenhandover zwischen zwei verschiedenen Taktdomänen beinhalten, beschrieben, wobei die Taktfrequenz f1 der ersten Taktdomäne 102 (Datenquelle) niedriger ist als die Taktfrequenz f2 der zweiten Taktdomäne 104 (Datensenke). Somit kann nachfolgend in einer Ausführungsform die erste Taktdomäne 102 als eine Taktdomäne niedrigerer Frequenz bezeichnet werden, während die zweite Taktdomäne 104 als eine Taktdomäne hoher Frequenz bezeichnet werden kann. Somit kann das Verhältnis der Taktfrequenzen (f1/f2) beliebig und/oder größer als eins sein. Darüber hinaus kann die Wiederladerate von Daten in der Taktdomäne mit hoher Frequenz 128 (Datensenke) im Mittel dieselbe Rate aufweisen, wie die Taktfrequenz der Taktdomäne 102 mit niedriger Frequenz (Datenquelle). Selbstverständlich können Merkmale der folgenden Beschreibung auch auf die Vorrichtung 100 zur Synchronisation des Datenhandovers zwischen der ersten Taktdomäne 102 und der zweiten Taktdomäne 104 angewandt werden, die in 1 und 2 gezeigt ist.
-
Darüber hinaus kann der Synchronisationspuls 118_n als ein Wiederladesignal oder Wiederladepuls bezeichnet werden, da der zweite Datenprozessor 128 konfiguriert sein kann, um den Datenausgabewert 122 in Antwort auf einen Synchronisationspuls 118_n zu empfangen oder mit anderen Worten wieder zu laden.
-
3 zeigt ein Blockdiagramm einer Vorrichtung 100 zur Synchronisation eines Datenhandover zwischen einer ersten (oder niederfrequenten) Taktdomäne 102 und einer zweiten (oder hochfrequenten) Taktdomäne 104 gemäß einer Ausführungsform der vorliegenden Erfindung. Mit anderen Worten zeigt 3 die Struktur eines Signalverarbeitungssystems mit einem synchronisierten Datenhandover.
-
Die Vorrichtung 100 umfasst eine Datenquelle 126, eine Datensenke 128 und eine Synchronisationsstufe 140, wobei der FIFO-Speicher 108, der Synchronisationspulsgenerator 110 und der Füllpegelinformationslieferant 112, die in 1 und 2 gezeigt sind, in der Synchronisationsstufe 140 implementiert sein können.
-
Alternativ können der FIFO-Speicher 108 und der Füllpegelinformationslieferant 112 in der Synchronisationsstufe 140 implementiert sein, wobei der Rechner 106 in der Datenquelle 126 und der Synchronisationspulsgenerator 110 in der Datensenke 128 implementiert ist. In diesem Fall kann die Datenquelle 126 konfiguriert sein, um den Eingangsdatenwert 120 in Synchronisation mit der ersten (oder niederfrequenten) Taktdomäne 102 für die Synchronisationsstufe 140 zu liefern, wobei die Datensenke 128 konfiguriert sein kann, um den Ausgangsdatenwert 122 von der Synchronisationsstufe 140 in Synchronisation mit der zweiten (oder hochfrequenten) Taktdomäne 104 und in Antwort auf einen momentanen Synchronisationspuls 118_n (n = 1) zu empfangen. Darüber hinaus kann die Datenquelle 126 konfiguriert sein, um ein write-enable-Signal 142 für die Synchronisationsstufe 140 zu liefern, wobei die Datensenke 128, die den Synchronisationspulsgenerator 110 aufweist, konfiguriert sein kann, um die Synchronisationspulse 118_n (oder read-enable-Signale) für die Synchronisationsstufe 140 zu liefern.
-
Die Vorrichtung 100 gemäß dem Konzept der vorliegenden Erfindung funktioniert selbst dann, wenn das Verhältnis zwischen der Taktfrequenz der ersten (oder hochfrequenten) Taktdomäne 104 und der Taktfrequenz der zweiten (oder niederfrequenten) Taktdomäne (fhigh/flow) klein wird, z. B. größer als oder gleich eins, zwei oder drei. Darüber hinaus kann selbst in dem Fall von fraktionalen Frequenzverhältnissen (fhigh/flow) und/oder einem modulierten (zeitlich variierenden) Takt clkhigh der zweiten (oder hochfrequenten) Taktdomäne 104 der Synchronisationspuls 118_n (oder Datenwiederladesignal der Datensenke) richtig mit dem Takt clklow der ersten (oder niederfrequenten) Taktdomäne 102 synchronisiert sein. Dadurch kann sichergestellt werden, dass der Ausgangsdatenwert 122 nicht an den zweiten Datenprozessor 128 geliefert wird, bevor ein neuer Dateneingangswert 120 durch den ersten Datenprozessor 126 geliefert wird, oder in anderen Worten, dass das erneute Laden von Daten in der Datensenke 128 nicht erfolgt bevor neue Wiederladewerte durch die Datenquelle 126 geliefert werden. Zusätzlich ist die Vorrichtung 100, die in 3 gezeigt ist, dazu geeignet, einen Datenhandover von der Datenquelle 126 zur Datensenke 128 mit einer konstanten (oder nahezu) konstanten Latenz bereitzustellen.
-
Im Gegensatz zu bekannten Lösungen, bei welchen einfach ein asynchroner FIFO-Speicher 108 (oder Speicher) zur Synchronisation verwendet wird, umfasst die Vorrichtung 100 gemäß dem Konzept der vorliegenden Erfindung eine Synchronisationsstufe 140 mit einem Rechner 106, einem FIFO-Speicher 108, einem Synchronisationspulsgenerator 110 und einem Füllpegelinformationslieferanten 112. Die Vorrichtung 100 ist dazu geeignet eine konstante (oder nahezu konstante) Synchronisationslatenz oder in anderen Worten einen Datenhandover zwischen der ersten (oder niederfrequenten) Taktdomäne 102 und der zweiten (oder hochfrequenten) Taktdomäne 104 mit einer konstanten (oder nahezu konstanten) Latenz bereitzustellen. Somit kann die Latenz nicht vom Füllpegel des FIFO-Speichers 108 und somit nicht vom Beginn der Synchronisation abhängen. Darüber hinaus ist in geschlossenen Schleifensystemen, wie beispielsweise PLLs (PLL = Phasenregelkreis) eine konstante Latenz wünschenswert, um eine definierte Schleifenantwort zu erhalten. Selbst wenn die Leserate der Daten am Datensenkenport sich von der Schreibrate am Datenquellenport des FIFO-Speichers 108 unterscheidet, wird der Füllpegel des FIFO-Speichers 108 nicht wegdriften, d. h. wird sich die Latenz des Signalbearbeitungsblocks nicht ändern. Somit wird ein Unter- oder Überlaufen des FIFO-Speichers 108 selbst im Fall einer langfristigen Ratenfehlanpassung vermieden.
-
4 zeigt ein Blockdiagramm einer Vorrichtung 100 zur Synchronisation eines Datenhandovers zwischen einer ersten (oder niederfrequenten) Taktdomäne 102 und einer zweiten (oder hochfrequenten) Taktdomäne 104 gemäß einer Ausführungsform der vorliegenden Erfindung. Die Vorrichtung 100 umfasst einen Rechner 106, einen FIFO-Speicher 108, einen Wiederladezähler 111, eine Datenquelle 126 und eine Datensenke 128.
-
Bei einigen Ausführungsformen umfasst der Rechner 106 einen numerisch gesteuerten Oszillator 107 (NCO). Darüber hinaus umfasst der Wiederladezähler 111 den Synchronisationspulsgenerator 110, der in 1 und 2 gezeigt ist. Darüber hinaus weist bei einer Ausführungsform der FIFO-Speicher 108 einen asynchronen FIFO-Speicher auf. Zusätzlich weist der FIFO-Speicher den Füllpegelinformationslieferanten 112 auf, der in 1 und 2 gezeigt ist.
-
Wie in 4 gezeigt ist, ist in einer Ausführungsform der FIFO-Speicher 108 konfiguriert, um die Synchronisationspulszyklusdauerinformation 116 in Synchronisation mit der ersten (oder niederfrequenten) Taktdomäne 102 zu übernehmen und die Synchronisationspulszyklusdauerinformation 116 in Synchronisation mit der zweiten (oder hochfrequenten) Taktdomäne 104 und in Reaktion auf einen momentanen Synchronisationspuls 118_n (n = 1) zu liefern. Der Synchronisationspulsgenerator 110 ist konfiguriert, um die Synchronisationspulszyklusdauerinformation 116 vom FIFO-Speicher 108 in Synchronisation mit der zweiten (oder hochfrequenten) Taktdomäne 104 und in Reaktion auf einen momentanen Synchronisationspuls 118_n (n = 1) zu empfangen.
-
Darüber hinaus ist der Rechner 106 konfiguriert, um die Synchronisationspulszyklusdauerinformation 116 zu liefern, so dass die Synchronisationspulszyklusdauerinformation 116 eine Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne zwischen dem momentanen Synchronisationspuls 118_n (n = 1) und dem nachfolgenden Synchronisationspuls 118_n (n = 2) darstellt. Mit anderen Worten kann die Synchronisationspulszyklusdauerinformation 116 die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne zwischen nachfolgenden Synchronisationspulsen (z. B. 118_n (n = 1) und 118_n (n = 2)) und somit die Dauer der Synchronisationspulses 118_n definieren. Darüber hinaus kann der Rechner 106 konfiguriert werden, um die zeitliche Position des nachfolgenden Synchronisationspulses 118_n (n = 2) durch Erhöhen oder Verringern der Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 einzustellen, um einen vorbestimmten Füllpegel des FIFO-Speichers 108 beizubehalten.
-
Bei einigen Ausführungsformen ist der FIFO-Speicher 108 konfiguriert, um die Synchronisationspulszyklusdauerinformation 116 und die Eingangsdaten 120 in einen Taktzyklus der ersten (oder niederfrequenten) Taktdomäne 102 zu übernehmen und die Synchronisationspulszyklusdauerinformation 116 und den Ausgangsdatenwert 122 in einem Taktzyklus der zweiten (oder hochfrequenten) Taktdomäne 104 bereit zu stellen. In diesem Fall kann die Synchronisationspulszyklusdauerinformation 116 die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 104 beschreiben, für die der Ausgangsdatenwert 122 gültig ist.
-
Gemäß dem Konzept der vorliegenden Erfindung wird in einer Ausführungsform der Füllpegel des FIFO-Speichers 108 in den numerisch gesteuerten Oszillator 107 zurückgeführt. Der numerisch gesteuerte Oszillator 107 berechnet die Gültigkeit jedes Eingangsdatenwertes 120 (oder FIFO Eintrags) hinsichtlich der Taktanzahl in der zweiten (oder hochfrequenten) Taktdomäne 116 oder in anderen Worten hinsichtlich der Taktzyklen des zweiten (oder hochfrequenten) Taktsignals (fhigh). Die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 (Gültigkeitswert) wird zusammen mit dem Eingangsdatenwert 120 (aktuelle Daten) im FIFO-Speicher 108 gespeichert. Wenn eine FIFO-Speicherzelle gelesen wird, wird die Anzahl von Takten in der hochfrequenten Taktdomäne 116 (Gültigkeitswert) in den Wiederladezähler 111 geladen, der bei jedem Zyklus der zweiten (oder hochfrequenten) Taktdomäne um einen vorbestimmten Wert, z. B. eins, dekrementiert wird. Bei einem Zählerunterlauf läuft die Gültigkeit des Ausgangsdatenwertes 122 (momentane Daten) aus und der nächste Ausgangsdatenwert 122 wird aus dem FIFO-Speicher 108 gelesen. Natürlich sind alternativ Implementierungen des Wiederladezählers 111 möglich, z. B. bei welchen der Zählerwert inkrementiert wird.
-
Die Vorrichtung 100 gemäß dem Konzept der vorliegenden Erfindung ermöglicht es, dass das System einen konstanten (oder nahezu konstanten) Füllpegel des FIFO-Speichers 108 beibehalten kann und somit eine konstante (oder nahezu konstante) Latenz des Datensynchronisationsmechanismus. Zusätzlich wird durch Verwendung der Vorrichtung 100 die Synchronisation auch in dem Fall von Änderungen der Lese- und/oder Schreibrate des FIFO-Speichers 108 aufrechterhalten.
-
Darüber hinaus ermöglicht die Vorrichtung 100 die Implementierung von (fraktionalen) Abtastratenwandlern (FSRC) mit einem Interpolationsverhältnis, das größer oder gleich eins ist (fhigh/flow ≥ 1). Dies ist aufgrund der Trennung von Datenschreibzugriffen der Datenquelle 126 und Datenlesezugriffen der Datensenke 128 im Adressraum des FIFO-Speichers 108 und nicht durch eine Trennung hinsichtlich der Zeit möglich.
-
Bei einigen Ausführungsformen wird der Füllpegel des FIFO-Speichers 108 für einen Datenhandover zwischen der ersten (oder niederfrequenten) Taktdomäne 102 und der zweiten (oder hochfrequenten) Taktdomäne 104 durch eine Steuerungsschleife gesteuert, die den numerisch gesteuerten Oszillator 107 aufweist (siehe 7). Folglich ist der numerisch gesteuerte Oszillator konfiguriert, um die Füllpegelinformation 124, die den tatsächlichen Füllpegel des FIFO-Speichers 108 beschreibt, als ein Rückkopplungssignal zu verwenden und einen Korrekturwert des numerisch gesteuerten Oszillators 107, der für jeden Eingangsdatenwert 120 eingegeben wird, zu berechnen, der in den FIFO-Speicher 108 gestellt wird. Bei diesem Korrekturwert wird der Füllpegel des FIFO-Speichers 108 indirekt durch Änderung der Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 und somit eines Mittelwertes des Wiederladezählers 111 und ein entsprechendes Ändern der FIFO-Speicher-108-Leserate gesteuert.
-
Dies kann während der Start-Phase der Vorrichtung 100 (oder der Verarbeitungsblöcke) notwendig sein, um einen bestimmten Füllpegel des FIFO-Speichers 108 beizubehalten. Wenn die Taktrate der ersten (oder niederfrequenten) Taktdomäne 102 oder die Taktrate der zweiten (oder hochfrequenten) Taktdomäne 104 eine (vorübergehende oder permanente) Frequenzabweichung aufweist, kann dieser Mechanismus (oder Steuerungsschleife) dazu verwendet werden, um das Frequenzverhältnis (fhigh/flow) im numerisch gesteuerten Oszillator 107 zu korrigieren. Somit kann die Vorrichtung 100 bei Anwendungen verwendet werden, bei welchen das erneute Laden von niederfrequenten Daten bei der hohen Rate kontinuierlich mit der gemittelten niederen Datenrate ausgeführt wird (z. B. ein fraktionaler Abtastprobenratenwandler mit integriertem Ausgang).
-
Darüber hinaus kann die Vorrichtung gemäß dem Konzept der vorliegenden Erfindung selbst dann implementiert werden, wenn das Verhältnis zwischen der Taktfrequenz der ersten (oder niederfrequenten) Taktdomäne 102 (Datensenkenfrequenz) und die Taktfrequenz der zweiten (oder hochfrequenten) Taktdomäne 104 (Datenquellenfrequenz) niedrig wird, z. B. größer oder gleich eins, zwei oder drei, wie es für fraktionale Abtastratenwandler erforderlich ist, die in Breitbandpolarmodulatoren verwendet werden, wie beispielsweise LTE 20 (LTE = Long Term Evolution). Selbst wenn das Frequenzverhältnis (fhigh/flow) niedrig wird, z. B. nahe an eins, gibt es einen ausreichenden Freiraum für den Synchronisationspuls 118_n, der zeitlich nicht zwischen zwei Taktflanken, z. B. ansteigenden oder fallenden Taktflanken, der ersten (oder niederfrequenten) Taktdomäne 102 positioniert werden muss, wie es aus der nachfolgenden Diskussion deutlich werden wird.
-
5 zeigt ein Diagramm beispielhafter Timings der ersten (oder niederfrequenten) Taktdomäne 102 und der zweiten (oder hochfrequenten) Taktdomäne 104 der in den 3 und 4 gezeigten Vorrichtung 100. In 5 sind von oben nach unten die Timings 134 des Taktes clklow der ersten (oder niederfrequenten) Taktdomäne 102, die Timings 136 des Taktes clkhigh der zweiten (oder hochfrequenten) Taktdomäne 104 und die Timings 138 des Synchronisationspulses 118_n (n = 1) bis 118_n (n = 11) gezeigt. In 5 ist die erste (oder niederfrequente) Taktdomäne beispielhaft mit einer Taktfrequenz von 312 MHz getaktet, wobei die zweite (oder hochfrequente) Taktdomäne 104 beispielhaft mit einer Taktfrequenz von 700 MHz getaktet ist. Natürlich ist die folgende Beschreibung auch auf andere Taktfrequenzen der ersten Taktdomäne 102 und/oder der zweiten Taktdomäne 104 anwendbar.
-
Im Gegensatz zu bekannten Lösungen, bei welchen der Synchronisationspuls 118_n (oder der Wiederladepuls) mit einem ausreichenden Freiraum zwischen zwei Taktflanken, z. B. ansteigenden oder fallenden Taktflanken, der ersten (oder niederfrequenten) Taktdomäne 102 platziert werden muss, um Setup- und/oder Halte-Verletzungen beim Datentransfer von der ersten (oder niederfrequenten) Taktdomäne 102 zur zweiten (oder hochfrequenten) Taktdomäne 104 zu vermeiden, ermöglicht die Vorrichtung 100 einen setup- und halte-verletzungsfreien Datentransfer selbst für Frequenzverhältnisse (fhigh/flow) von weniger als drei. Darüber hinaus wird bei dem Abtasten der Position des Synchronisationspulses 118_n (oder Wiederladepulses) keine Unsicherheit eingebracht. Zusätzlich wird ein Jitter des Synchronisationspulses 118_n (oder Wiederladepulses) vermieden, der ansonsten durch Ganzzahl-Delta-Sigmamodulierte Zählwert-zyklen des Wiederladezählers eingeführt werden könnte. Darüber hinaus wird, selbst wenn der Takt der zweiten (oder hochfrequenten) Taktdomäne 104 moduliert ist, wie es der Fall bei PLLs in polaren Modulatoren (PLL = Phase Locked Loop) ist, keine Unsicherheit eingebracht.
-
Die Vorrichtung 100 gemäß dem Konzept der vorliegenden Erfindung ist für die Implementierung von beispielsweise fraktionalen Abtastratenwandlern in Breitbandpolarmodulatoren vorteilhaft. Diese Modulatoren benötigen fraktionale Abtastratenumwandler für eine Interpolation von AM (AM = Amplitudenmodulator) und PM (PM = Phasenmodulator) Signalen von einer Signalrate von mehreren 100 MHz (z. B. 312 MHz, wie in 5 dargestellt) zur modulierten RF Frequenz (RF = Radiofrequenz) im GHz Bereich, z. B. 1 GHz, 10 GHz oder 100 GHz.
-
Die erforderliche Tiefe des Synchronisations-FIFO-Speichers 108 kann von dem maximalen Timing-Jitter der Synchronisationspulse 118_n (oder Wiederladesignale) abhängen. Der Timing-Jitter der Synchronisationspulse 118_n (oder Wiederladesignale) kann von den Modulationsdaten und der Sequenz von Taktanzahlen in der zweiten (oder hochfrequenten) Taktdomäne 116 (oder Wiederladezählsequenz des numerisch gesteuerten Oszillators 107) abhängen. Dadurch muss sichergestellt werden, dass es keinen Zugriff auf dieselbe Speicherzelle (Speicherposition) des FIFO-Speichers 108 zur selben Zeit gibt. Somit kann der FIFO-Speicher 108 eine Tiefe von wenigstens 4 Speicherzellen (oder Registern) aufweisen. Eine Speicherzelle (oder Register) für den Schreibzugriff und eine Speicherzelle (oder Register) für den Lesezugriff und eine Speicherzelle (oder Register) vor und hinter der Leseadresse als Schutz für einen unbeabsichtigten Lese- und/oder Schreibzugriff auf dieselbe Speicherzelle (oder Register).
-
6 zeigt ein Blockdiagramm eines Speicherlayouts des FIFO-Speichers 108 gemäß einer Ausführungsform der vorliegenden Erfindung. Der FIFO-Speicher 108 weist eine Mehrzahl von Speicherzellen 140_0 bis 140_3 auf, wobei der FIFO-Speicher 108 konfiguriert ist, den Eingangsdatenwert 120 in eine Speicherzelle (z. B. 140_0) der Vielzahl von Speicherzellen 140_0 bis 140_3 zu übernehmen, die durch einen Schreibzeigerwert 142 angezeigt wird, und wobei der FIFO-Speicher 108 konfiguriert ist, den Ausgangsdatenwert 122 von einer anderen Speicherzelle (z. B. 140_2) der Mehrzahl von Speicherzellen 140_0 bis 140_3, zu liefern, die durch einen Lesezeigerwert 144 angezeigt ist.
-
Wie in 6 gezeigt ist, kann der Füllpegel des FIFO-Speichers 108 im Bereich 146 über plus/minus eine Speicherzelle (z. B. 140_1 bis 140_3) variieren. Mit anderen Worten können die Änderungen der Leseadresse, die durch den Lesezeigerwert 144 angezeigt wird (im Verhältnis zur Schreibadresse, die durch den Schreibezeigerwert 142 angezeigt wird) im Bereich von plus/minus einer Speicherzelle (z. B. 140_1 bis 140_3) aufgrund des Timing-Jitters des Synchronisationspulses 118_n (oder Wiederladesignals) variieren. Dadurch kann ein Über- oder Unterlauf des FIFO-Speichers 108 vermieden werden, und somit ein Datenhandover zwischen der ersten (oder niederfrequenten) Taktdomäne 102 und der zweiten (oder hochfrequenten) Taktdomäne 104 mit einer fast konstanten Latenz gewährleistet werden.
-
Bei einigen Ausführungsformen kann der FIFO-Speicher 108 eine Tiefe von zumindest vier (Speicherzellen) aufgrund der Notwendigkeit von zwei Schutzspeicherzellen (Speicheradressen) aufweisen. Dadurch wird ein mittlerer Füllpegel des FIFO-Speichers 108 zwei betragen. Daher wird die Verzögerung (oder Latenz), die durch den Synchronisation-FIFO-Speicher 108 eingeführt wird, im Mittel zwei Taktperioden der ersten (oder niederfrequenten) Taktdomäne 102 betragen.
-
7 zeigt ein Blockdiagramm der Vorrichtung 100 zur Synchronisation des Datenhandovers zwischen der ersten (oder niederfrequenten) Taktdomäne 102 und der zweiten (oder hochfrequenten) Taktdomäne 104, die in 4 gezeigt ist, wobei der Rechner 106 weiter einen Controller 150 aufweist. Mit anderen Worten zeigt 7 die Struktur des vollständigen, auf dem FIFO-Speicher 108 basierten fraktionalen Abtastratenumwandlers mit Rückkopplung des Füllpegels zum numerisch gesteuerten Oszillator 107.
-
Bei einer Ausführungsform ist der Controller 150 konfiguriert, um die Synchronisationspulszyklusdauerinformation 116 zu regulieren, um die Füllpegelinformation 124 in Richtung einer vorbestimmten Zielfüllpegelinformation zu bringen. Beispielsweise stellt die Synchronisationspulszyklusdauerinformation 116 eine Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 dar, wobei der Controller 150 konfiguriert ist, um die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 zu regeln, so dass der Füllpegel des FIFO-Speichers 108 innerhalb eines vorbestimmten Bereichs gehalten wird, wodurch ein Datenhandover mit einer fast konstanten Latenz bereitgestellt wird.
-
Darüber hinaus ist in einer Ausführungsform der Rechner 106 dazu konfiguriert, einen Ausgangswert 152 des Controllers 150 mit einem Frequenzverhältniswert 154 zu kombinieren, der ein Frequenzverhältnis zwischen der Taktfrequenz der zweiten (oder hochfrequenten) Taktdomäne 104 und der Taktfrequenz der ersten (oder niederfrequenten) Taktdomäne 102 beschreibt, um die Synchronisationspulszyklusdauerinformation 116 zu erhalten. Mit anderen Worten ist der Controller 152 konfiguriert, um den Frequenzverhältniswert 154, der das Verhältnis zwischen der Frequenz der zweiten (oder hochfrequenten) Taktdomäne 104 und der Frequenz der ersten (oder niederfrequenten) Taktdomäne 102 beschreibt, der in den numerisch gesteuerten Oszillator 107 zugeführt wird, zu korrigieren. Dabei kann der Frequenzverhältniswert 154 einen ganzzahligen und/oder fraktionalen Teil aufweisen.
-
Beispielsweise kann der Frequenzverhältniswert 154, der in den numerisch gesteuerten Oszillator 107 zugeführt wird, durch Addieren eines Ausgangswertes 152 des Controllers 150 zum Frequenzverhältniswert 154 mittels eines ersten Addierers 156 erhöht oder verringert werden. Zusätzlich kann ein Modulationsdatenwert 160, der die Modulationsdaten beschreibt, zum Frequenzverhältniswert 154, der in den numerisch gesteuerten Oszillator 107 zugeführt wird, mithilfe eines zweiten Addierers 162 addiert werden. Darüber hinaus kann der zweite Addierer 162 mit einem Ausgang eines Multiplexers 164 gekoppelt werden, der konfiguriert ist, um an seinem Ausgang basierend auf einem binären Steuerungssignal entweder den Modulationsdatenwert 160, der an seinem ersten Eingang vorliegt, oder einen Referenzwert (z. B. null), der an seinem zweiten Eingang vorliegt, zu liefern.
-
Zusätzlich kann der Rechner 106 eine Rückkopplungssteuerungsschleife 170 aufweisen. Die Rückkopplungssteuerungsschleife 170 kann den Controller 150, einen ersten Addierer 172, einen Eingang 174 für einen gewünschten Füllpegel des FIFO-Speichers 108 und einen Eingang 176 für die Füllpegelinformation 124 aufweisen. Die Füllpegelinformation 124, die am Eingang 176 vorliegt, wird von der gewünschten Füllpegelinformation abgezogen, die am Eingang 174 vorliegt, und wird in den Controller 150 mittels des ersten Addierers 172 zugeführt.
-
Der Füllpegel des FIFO-Speichers 108 wird durch die Anzahl von Takten in der Hochfrequenztaktdomäne 116 (Zählwert) für die Erzeugung der Synchronisationspulse 118_n (Wiederladesignale) gesteuert. Die Anzahl von Takten in der Hochfrequenztaktdomäne 116 (Zählwert) wird im numerisch gesteuerten Oszillator 107 erzeugt, der mit dem Takt der ersten (oder niederfrequenten) Taktdomäne 102 getaktet ist, oder mit anderen Worten, der auf dem Niederfrequenztakt betrieben wird. Somit ist eine Rückkopplung der Füllpegelinformation zur ersten (oder niederfrequenten) Taktdomäne 102 notwendig. Der tatsächliche Füllpegel des FIFO-Speichers 108 wird im Rückkopplungscontroller 150 verarbeitet, der im numerisch gesteuerten Oszillator 107 implementiert sein kann, und korrigiert zeitlich den Frequenzverhältniswert 154, um den gewünschten Füllpegel des FIFO-Speichers 108 einzurichten. Im regulären Betrieb ist die Rückkopplungssteuerungsschleife 170 des Füllpegels nur aktiv, wenn das Frequenzverhältnis (fhigh/flow) gestört ist. Es ist möglich, die Steuerungsschleife 170 auszuschalten oder eine Tiefenzone für die Füllpegelinformation 124 (oder Rückkopplungswert) zu definieren, wenn keine Steuerungsaktion stattfindet. Dadurch wird die Wechselwirkung des Rückkopplungscontrollers 150 minimieren.
-
8 zeigt ein Blockdiagramm des FIFO-Speichers 108, des Wiederladezählers 111 und des Füllpegelinformationslieferanten 112 gemäß einer Ausführungsform der vorliegenden Erfindung. Mit anderen Worten zeigt 8 eine mögliche Implementierung des FIFO-Speichers 108 und der Wiedersignal 118_n-Erzeugung.
-
Der FIFO-Speicher 108 umfasst eine Mehrzahl von Speicherzellen 140_0 bis 140_3, wobei der FIFO-Speicher 108 konfiguriert ist, den Eingangsdatenwert 120 in eine Speicherzelle der Mehrzahl von Speicherzellen 140_0 bis 140_3, die durch einen Schreibzeigerwert 142 bezeichnet sind, zu übernehmen oder zu empfangen, und wobei der FIFO-Speicher 108 konfiguriert ist, den Ausgangsdatenwert 122 von einer anderen Speicherzelle der Mehrzahl von Speicherzellen 140_0 bis 140_3, die durch einen Lesezeigerwert 144 bezeichnet sind, zu liefern. Im Beispiel aus 8 umfasst der FIFO-Speicher 108 vier Speicherzellen 140_0 bis 140_3. Natürlich kann der FIFO-Speicher 108 mehr als vier Speicherzellen aufweisen.
-
Wie in 8 gezeigt ist, kann der Eingangsdatenwert 120 bei einigen Ausführungsformen einen Eingangswiederladewert 120_1 und einen Eingangsinkrementwert 120_2 aufweisen. In diesem Fall ist der erste Datenprozessor 126 (Datenquelle) konfiguriert, die Eingangsinformation 130 so zu verarbeiten, dass der Eingangswiederladewert 120_1 und der Eingangsinkrementwert 120_2 in Synchronisation mit der ersten (oder niederfrequenten) Taktdomäne für den FIFO-Speicher 108 bereitgestellt werden. Der FIFO-Speicher 108 kann konfiguriert sein, um beispielsweise in einem Taktzyklus der ersten (oder niederfrequenten) Taktdomäne 102 den Eingangswiederladewert 120_1, den Eingangsinkrementwert 120_2 und die Synchronisationspulszyklusdauerinformation 116 zu übernehmen und einen Ausgangswiederladewert 122_1, einen Ausgangsinkrementwert 122_2 und die Synchronisationspulszyklusdauerinformation 116 in Synchronisation mit der zweiten (oder hochfrequenten) Taktdomäne 104 und in Antwort auf einen momentanen Synchronisationspuls 118_n (n = 1) zu liefern. Darüber hinaus ist der zweite Datenprozessor 128 (Datensenke) dazu konfiguriert, um den Ausgangswiederladewert 122_1 und den Ausgangsinkrementwert 122_2 in Synchronisation mit der zweiten (oder hochfrequenten) Taktdomäne 104 und in Antwort auf einen momentanen Synchronisationspuls 118_n (n = 1) vom FIFO-Speicher 108 zu empfangen und den Ausgangswiederladewert 122_1 und den Ausgangsinkrementwert 122_2 so zu bearbeiten, dass eine Ausgangsinformation 132 in Synchronisation mit der zweiten (oder hochfrequenten) Taktdomäne geliefert wird.
-
Beispielsweise kann der zweite Datenprozessor 128 (Datensenke) einen Integrator aufweisen, der konfiguriert ist, um den Ausgangswiederladewert 122_1 als Ausgangsinformation 132 in Antwort auf den momentanen Synchronisationspuls 118_n (n = 1) (oder Wiederladesignal) zu liefern und die vorherige Ausgangsinformation durch den Ausgangsinkrementwert 122_2 bei jedem nachfolgenden Takt der zweiten (oder hochfrequenten) Taktdomäne 104 zu inkrementieren.
-
Wie in 8 gezeigt ist, kann bei einigen Ausführungsformen der Schreibzeigerwert 142 durch einen ersten Grauzähler 180 erzeugt werden, der mit dem Takt clklow der ersten (oder niederfrequenten) Taktdomäne 102 getaktet ist. Der Grauzähler 180 kann konfiguriert sein, um in Synchronisation mit der ersten (oder niederfrequenten) Taktdomäne 102 zu zählen und ein grau-kodiertes Zählerlesen als Schreibzeigerwert 142 zu liefern. Beispielsweise ist der erste Grauzähler 180, wenn der FIFO-Speicher 108 vier Speicherzellen aufweist, konfiguriert, um von null auf drei unter Verwendung des Graukodes in Synchronisation mit der ersten (oder niederfrequenten) Taktdomäne 102 zu zählen und das Zählen, nachdem er von null auf drei gezählt hat, neu zu starten.
-
Darüber hinaus weist der erste Grauzähler 180 bei einer Ausführungsform einen Eingang für ein write-enable-Signal auf, wobei der erste Grauzähler 180 konfiguriert ist, um in Synchronisation mit der ersten (oder niederfrequenten) Taktdomäne 102 basierend auf dem write-enable-Signal 180 zu zählen. Darüber hinaus kann der erste Grauzähler 180 einen Eingang für ein Rücksetzsignal 182 aufweisen, wobei der erste Grauzähler 180 konfiguriert ist, um sein Lesen des Zählers auf einen Ausgangswert in Abhängigkeit von dem Rücksetzsignal 182 zurückzusetzen.
-
Bei einer Ausführungsform ist der Ausgang des ersten Grauzählers 180 mit einem Demultiplexer 184 gekoppelt, der konfiguriert ist, um eine einer Mehrzahl von Signalleitungen 186_0 bis 186_3 an seinem Ausgang basierend auf dem Schreibzählerwert 142, der an seinem Eingang vorliegt, zu aktivieren. Dadurch wird jede Signalleitung der Mehrzahl von Signalleitungen 186_0 bis 186_3 mit einer Speicherzelle der Mehrzahl von Speicherzellen 140_0 bis 140_3 des FIFO-Speichers 108 gekoppelt. Darüber hinaus ist jede Signalleitung 186_0 bis 186_3 mit der entsprechenden Speicherzelle der Vielzahl von Speicherzellen 140_0 bis 140_3 mittels eines oder-Blocks 188 gekoppelt, so dass die entsprechende Signalleitung 186_0 bis 186_3 basierend auf dem write-enable-Signal 180 aktiviert wird, das mit dem oder-Block 188 gekoppelt ist.
-
Der FIFO-Speicher 108 kann einen zweiten Grauzähler 190 aufweisen. Der Ausgang des zweiten Grauzählers 190 ist mit einem Multiplexer 200 gekoppelt, der konfiguriert ist, um an seinen Ausgang, basierend auf dem Lesezeigerwert 144, der an seinem Steuerungsanschluss vorliegt, den Ausgangswiederladewert 122_1, den Ausgangsinkrementwert 122_2 und die Synchronisationspulszyklusdauerinformation 116, die in einer Speicherzelle der Mehrzahl von Speicherzellen 140_0 bis 140_3 des FIFO-Speichers 108 gespeichert ist, bereitzustellen.
-
Die Vorrichtung 100 kann einen Zähler 202 aufweisen, der mit dem Takt clkhigh der zweiten (oder hochfrequenten) Taktdomäne getaktet und konfiguriert ist, um die Takte in der zweiten (oder hochfrequenten) Taktdomäne 104 zu zählen und ein Zähler-Lesen 204 bereitzustellen. Dadurch ist der Synchronisationspulsgenerator 110 konfiguriert, um den nachfolgenden Erzeugungspuls 118_n (n = 2) basierend auf dem Zähler-Lesen 204 zu erzeugen, so dass der nachfolgende Synchronisationspuls 118_n (n = 2) sich an der zeitlichen Position befindet, die durch die Anzahl von Takten in der zweiten Taktdomäne beschrieben ist, die durch die Synchronisationspulszyklusdauerinformation 116 repräsentiert wird, wobei das Zähler-Lesen 204 in Reaktion auf die Erzeugung des nachfolgenden Synchronisationspulses 118_n (n = 2) auf einen Ausgangswert gesetzt wird.
-
Darüber hinaus ist bei einer Ausführungsform die Vorrichtung 100 dazu konfiguriert, in Antwort auf den momentanen Synchronisationspuls 118_n (n = 1), das Zähler-Lesen 204 auf die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 104 zu setzen, die durch die Synchronisationstaktzyklusdauerinformation 116 repräsentiert wird, und das Zähler-Lesen 204 von dem eingestellten Zähler-Lesen in Synchronisation mit dem Takt der zweiten (oder hochfrequenten) Taktdomäne 104 herabzuzählen. Dadurch ist der Synchronisationspulsgenerator 110 konfiguriert, um das Zähler-Lesen 204 mit einer vordefinierten Zahl zu vergleichen und den nachfolgenden Synchronisationspuls 118_n (n = 2) zu erzeugen, wenn die vordefinierte Zahl gleich dem Zähler-Lesen 204 ist.
-
Beispielsweise kann der Zähler 202 einen Multiplexer 204, ein Register 206 und einen Addierer 208 aufweisen. Man beachte, dass die oben aufgelisteten Blöcke des Zählers 202 mit dem Takt clkhigh der zweiten (oder hochfrequenten) Taktdomäne 104 getaktet sind.
-
Ein Ausgang des Registers 206 zum Abtasten des Zähler-Lesens 204 kann mit dem Addierer 208 gekoppelt sein. Der Addierer 208 kann konfiguriert sein, einen vordefinierten Wert, z. B. eins, zum abgetasteten Zähler-Lesen hinzuzufügen. Ein Ausgang des Addierers 208 und der Eingang 210 für die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 sind mit Eingängen des Multiplexers 204 gekoppelt. Der Multiplexer 204 ist konfiguriert, um an seinem Ausgang die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 in Antwort auf einen Synchronisationspuls 118_n und ansonsten das inkrementierte Zähler-Lesen zu liefern. Der Ausgang des Multiplexers 204 ist mit einem Eingang des Registers 206 zum Abtasten des Zähler-Lesens 205 in Synchronisation mit der zweiten (oder hochfrequenten) Taktdomäne 104 gekoppelt.
-
Bei einer Ausführungsform umfasst der Synchronisationspulsgenerator 110 einen Komparator 210, der konfiguriert ist, um das Zähler-lesen 205 mit der vordefinierten Zahl zu vergleichen und den nachfolgenden Synchronisationspuls 118_n (n = 2) zu erzeugen, wenn die vordefinierte Zahl gleich dem Zähler-Lesen 204 ist. Alternativ kann der Synchronisationspulsgenerator 110 einen Komparator 210 und ein Register 212 aufweisen. In diesem Fall ist der Komparator 210 konfiguriert, um das Zähler-Lesen 204 mit der vordefinierten Zahl (z. B. null) zu vergleichen und den nachfolgenden Synchronisationspuls 118_n (n = 2) zu erzeugen, wenn die vordefinierte Zahl gleich dem Zähler-Lesen 204 ist, wobei das Register 212 konfiguriert ist, um den nachfolgenden Synchronisationspuls 118_n (n = 2) durch einen hochfrequenten Taktzyklus zu verzögern.
-
Wie in der Ausführungsform von 8 gezeigt sind, sind der Synchronisationspulsgenerator 110 und der Zähler 202 im Wiederladezähler 111 implementiert. Zusätzlich umfasst der Wiederladezähler 111 ein Register 214 zum Abtasten eines Rücksetzsignals 216 und eines Oder-Blocks 218. Ein Ausgang des Registers 214 ist mit einem Rücksetzeingang 194 des zweiten Grauzählers 190 und mit einem Eingang des Oder-Blocks 218 gekoppelt. Ein zweiter Eingang des Oder-Blocks 218 ist mit dem Ausgang des Registers 212 des Synchronisationspulsgenerators 110 gekoppelt. Der Ausgang des Oder-Blocks 218 ist mit einem Steuerungsanschluss des Multiplexers 204 des Zählers 202 derart gekoppelt, dass der Multiplexer 204 des Zählers 202 konfiguriert ist, um an seinem Ausgang die Anzahl von Takten in der zweiten (oder hochfrequenten) Taktdomäne 116 in Antwort auf einen Synchronisationspuls 118_n oder in Antwort auf das Rücksetzsignal 216 zu liefern, das durch das Register 214 des Wiederladezählers 111 abgetastet wird.
-
9 zeigt ein Blockdiagramm des Füllpegelinformationslieferanten 112 gemäß einer Ausführungsform der vorliegenden Erfindung. Mit anderen Worten zeigt 9 eine Implementierung des FIFO-Speicher-108-Füllpegeldetektors.
-
Der Füllpegelinformationslieferant 112 kann ein erstes Register 230 zum Abtasten des Schreibzeigerwertes 142 und ein zweites Register 232 zum Abtasten des Lesezeigerwertes 144 aufweisen. Dadurch ist der Füllpegelinformationslieferant 112 in einer derartigen Ausführungsform konfiguriert, um den abgetasteten Schreibzeigerwert 234 und den abgetasteten Lesezeigerwert 236 zu kombinieren, um einen Füllpegelwert 238 zu erhalten, der den Füllpegel des FIFO-Speichers 108 beschreibt und um die Füllpegelinformation 124 zu liefern, so dass die Füllpegelinformation den Füllpegelwert 238 darstellt.
-
Alternativ weist der Füllpegelinformationslieferant 112 eine erste Synchronisationszelle 238, die das erste Register 230 und ein drittes Register 240 aufweist, und eine zweite Synchronisationszelle 242 auf, die das zweite Register 232 und ein viertes Register 244 aufweist. Das erste und das dritte Register 230 und 240 der ersten Synchronisationszelle 238 und das zweite und vierte Register 232 und 244 der zweiten Synchronisationszelle 242 sind mit dem Takt der ersten (oder niederfrequenten) Taktdomäne 102 getaktet. In diesem Fall ist die zweite Synchronisationszelle 242 konfiguriert, um den Lesezeigerwert 144 von der zweiten (oder hochfrequenten) Taktdomäne 104 in die erste (oder niederfrequente) Taktdomäne 102 zu synchronisieren, wodurch der Lesezeigerwert 144 um zwei Zyklen der ersten (oder niederfrequenten) Taktdomäne 102 verzögert wird. Die erste Synchronisationszelle 238 kann den Schreibzeigerwert 142 auch um zwei Taktzyklen der ersten (oder niederfrequenten) Taktdomäne 102 verzögern.
-
Darüber hinaus weist bei einer Ausführungsform der Füllpegelinformationslieferant 112 einen ersten Grau-In-Binär-Wandler 246 und einen zweiten Grau-In-Binär-Wandler 248 auf. Der erste Grau-In-Binär-Wandler 246 ist konfiguriert, um den abgetasteten graukodierten Schreibzeigerwert 234 in einen binärkodierten Schreibzeigerwert 250 umzuwandeln, wobei der zweite Grau-In-Binär-Wandler 248 konfiguriert ist, um den abgetasteten graukodierten Lesezeigerwert 236 in einen binärkodierten Lesezeigerwert 252 umzuwandeln.
-
Die breite des binärkodierten Schreibzeigerwertes 250 und des binärkodierten Lesezeigerwertes 252 hängt von der Anzahl von Speicherzellen des FIFO-Speichers 108 ab. In dem Fall eines FIFO-Speichers 108 mit vier Speicherzellen 140_0 bis 140_3 können der binärkodierte Schreibzeigerwert 250 und der binärkodierte Lesezeigerwert 252 eine Breite von zwei Bits aufweisen.
-
Darüber hinaus kann der binärkodierte Lesezeigerwert 252 von dem binärkodierten Schreibzeigerwert 250 mittels eines Addierers 254 subtrahiert werden, wodurch am Ausgang des Addierers 254 der Füllpegelwert 238 bereitgestellt wird. Der Füllpegelwert 238 kann auch eine Breite von zwei Bits aufweisen.
-
Darüber hinaus kann der Füllpegelinformationslieferant 112 weiter konfiguriert sein, um eine Mehrzahl von Füllpegelwerten 238 zu summieren oder zu mitteln, um einen summierten oder gemittelten Füllpegelwert 276 zu erhalten, der einen mittleren Füllpegel des FIFO-Speichers 108 beschreibt, und um die Füllpegelinformation so bereitzustellen, dass die Füllpegelinformation den summierten oder gemittelten Füllpegelwert 276 darstellt.
-
Beispielsweise können, wie in 9 gezeigt ist, vier aufeinander folgende Füllpegelwerte 238 gemittelt werden, um die Synchronisation der Füllpegelinformation 124 in die erste (oder niederfrequente) Taktdomäne 102 zu vereinfachen. Dieses Mitteln ist ausreichend, um den Füllpegel des FIFO-Speichers 108 zu verfolgen, da (im Allgemeinen) die Frequenzabweichungen im Vergleich zur Lese-/Schreibrate des FIFO-Speichers 108 gering sind. Somit wird sich der Füllpegel nicht rasch ändern. Um eine Mehrzahl von Füllpegelwerten 238 zu summieren, kann der Füllpegelinformationslieferant 112 weiter ein fünftes Register 260, ein sechstes Register 262, ein siebtes Register 264, einen zweiten Addierer 266, einen Multiplexer 268 und einen Zähler 270 aufweisen. Der Zähler 270, z. B. ein 2-Bit-Zähler, kann konfiguriert sein, um in Synchronisation mit dem Takt der ersten (oder niederfrequenten) Taktdomäne zu zählen und einen Zähler-Lesewert 272 zu liefern, der das momentane Zähler-Lesen beschreibt. Darüber hinaus ist der Zähler 270 konfiguriert, um ein Steuerungssignal 174 bereitzustellen, wenn das Zähler-Lesen gleich einer vordefinierten Zahl ist (z. B. vier). Das fünfte Register 260 ist konfiguriert, um den Füllpegelwert 238 abzutasten (z. B. mit einer Breite von zwei Bit) der an seinem Eingang in Synchronisation mit dem Takt der ersten (oder niederfrequenten) Taktdomäne 102 vorliegt. Darüber hinaus ist ein Ausgang des fünften Registers 260 mit einem ersten Eingang des Multiplexers 268 und einem ersten Eingang des Addierers 266 gekoppelt, wobei der zweite Eingang des Multiplexers 268 mit einem Ausgang des Addierers 266 gekoppelt ist. Dadurch ist der Addierer 266 konfiguriert, um zum Füllpegelwert 238, der durch das fünfte Register 260 abgetastet wurde, eine vorherige Summe von Füllpegelwerten 278, die an seinem zweiten Eingang vorhanden sind, zu addieren, um eine momentane Summe von Füllpegelwerten zu erhalten. Der Multiplexer 268 ist konfiguriert, um an seinem Ausgang basierend auf dem Steuerungssignal 274 entweder den Füllpegelwert 238 als momentane Summe von Füllpegelwerten oder die momentane Summe von Füllpegelwerten, die durch den Addierer geliefert wird, bereitzustellen. Der Ausgang des Multiplexers 268 ist mit einem Eingang des sechsten Registers 262 gekoppelt, das konfiguriert ist, um die momentane Summe von Füllpegelwerten (z. B. mit einer Breite von vier Bits) in Synchronisation mit dem Takt der ersten (oder niederfrequenten) Taktdomäne 102 abzutasten. Ein Ausgang des sechsten Registers 262 ist mit einem Eingang des siebten Registers 264 und dem zweiten Eingang des Addierers 266 gekoppelt. Das siebte Register 264 ist konfiguriert, um die momentane Summe von Füllpegelwerten 278, die an seinem Eingang vorhanden ist, in Synchronisation mit dem Takt der ersten (oder niederfrequenten) Taktdomäne 102 und in Antwort auf das Steuerungssignal 274, das von dem Zähler 270 geliefert wird, wieder abzutasten und die wieder abgetastete momentane Summe von Füllpegelwerten als summierten Füllpegelwert 276 zu liefern. Der summierte Füllpegelwert 276 und der Zähler-Lesewert 272, der vom Zähler 270 geliefert wird, werden zum Rechner 106 durch den Rückkopplungsweg 114 als Füllpegelinformation 124 zurückgeführt. Man beachte, dass die oben aufgelisteten und in 9 gezeigten Blöcke mit dem Takt der ersten (oder niederfrequenten) Taktdomäne 102 getaktet sein können.
-
10 zeigt ein Flussdiagramm eines Verfahrens zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne gemäß einer Ausführungsform der vorliegenden Erfindung. Während die nachfolgende Beschreibung das Verfahren als eine Reihe von Schritten beschreibt, können zahlreiche Schritte in einer anderen Reihenfolge oder gleichzeitig miteinander durchgeführt werden. Zusätzlich müssen nicht alle Schritte notwendig sein, um die vorliegende Erfindung zu erfüllen. In einem ersten Schritt 300 wird eine Synchronisationspulszyklusdauerinformation, die eine zeitliche Position von Synchronisationspulsen bei einem Takt der zweiten Taktdomäne beschreibt, in der ersten Taktdomäne bereitgestellt. In einem zweiten Schritt 302 wird ein Eingangsdatenwert in Synchronisation mit der ersten Taktdomäne übernommen und es wird ein Ausgangsdatenwert in Synchronisation mit der zweiten Taktdomäne und in Antwort auf einen momentanen Synchronisationspuls mit einem FIFO-Speicher bereitgestellt. In einem dritten Schritt 304 wird der Synchronisationspuls in der zweiten Taktdomäne erzeugt, so dass der Synchronisationspuls sich an der zeitlichen Position befindet, die durch die Synchronisationspulszyklusdauerinformation beschrieben wird. In einem vierten Schritt 306 wird eine Füllpegelinformation, die einen Füllpegel des FIFO-Speichers beschreibt, in der zweiten Taktdomäne geliefert. In einem fünften Schritt 308 wird die Füllpegelinformation zur ersten Taktdomäne zurückgeführt, um die Synchronisationspulszyklusdauerinformation basierend auf der Füllpegelinformation einzustellen.
-
Bei einigen Ausführungsformen kann die Synchronisationspulszyklusdauerinformation in der Weise bereitgestellt werden, dass die Synchronisationspulszyklusdauerinformation in der Form eines kodierten numerischen Werts eine Anzahl von Takten in der zweiten Taktdomäne darstellt.
-
Darüber hinaus kann das Verfahren zum Synchronisieren eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne weiter den Schritt eines Zählens der Takte in der zweiten Taktdomäne und eines Bereitstellens eines Zählerlesens aufweisen, wobei der Synchronisationspuls basierend auf dem Zählerlesen erzeugt wird, sodass eine zeitliche Position des Synchronisationspulses basierend auf der Synchronisationspulszyklusdauerinformation eingestellt wird, und wobei das Zählerlesen in Reaktion auf eine Erzeugung des Synchronisationspulses auf einen Anfangswert gesetzt wird.
-
Zusätzlich kann das Verfahren zum Synchronisieren eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne weiter die Schritte eines Verarbeitens einer Eingangsinformation in der Weise, dass der Eingangsdatenwert in Synchronisation mit der ersten Taktdomäne für den FIFO-Speicher bereitgestellt wird, eines Empfangens des Ausgangsdatenwertes in Synchronisation mit der zweiten Taktdomäne und in Reaktion auf den Synchronisationspuls von dem FIFO-Speicher und eines Verarbeitens des Ausgangdatenwertes in der Weise, dass eine Ausgangsinformation in Synchronisation mit der zweiten Taktdomäne geliefert wird, aufweisen.
-
Weitere Ausführungsformen der vorliegenden Erfindung stellen eine Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne bereit. Die Vorrichtung umfasst ein Mittel zum Berechnen, ein Mittel für ein FIFO-Speichern, ein Mittel zum Erzeugen von Synchronisationspulsen und ein Mittel zum Bereitstellen einer Füllpegelinformation. Das Mittel zum Berechnen wird mit dem Takt der ersten Taktdomäne getaktet und ist konfiguriert, um eine Synchronisationspulszyklusdauerinformation bereitzustellen, die eine zeitliche Position von Synchronisationspulsen bei einem Takt der zweiten Taktdomäne beschreibt. Das Mittel zum FIFO-Speichern ist konfiguriert, um einen Eingangsdatenwert in Synchronisation mit der ersten Taktdomäne zu übernehmen und einen Ausgangsdatenwert in Synchronisation mit der zweiten Taktdomäne und in Reaktion auf einen momentanen Synchronisationspuls zu liefern. Das Mittel zum Erzeugen von Synchronisationspulsen ist mit dem Takt der zweiten Taktdomäne getaktet und ist konfiguriert, um den nachfolgenden Synchronisationspuls in der Weise zu erzeugen, dass der nachfolgende Synchronisationspuls sich an der zeitlichen Position befindet, die durch die Synchronisationspulszyklusdauerinformation beschrieben ist. Das Mittel zur Bereitstellung einer Füllpegelinformation ist konfiguriert, um eine Füllpegelinformation bereitzustellen, die einen Füllpegel des FIFO-Speichers beschreibt. Das Mittel zum Rückkoppeln ist konfiguriert, um die Füllpegelinformation zum Rechner zurück zu führen. Dadurch ist das Mittel zur Berechnung konfiguriert, um die Synchronisationspulszyklusdauerinformation basierend auf der Füllpegelinformation einzustellen.
-
11 zeigt ein schematisches Blockdiagramm einer Vorrichtung zur Synchronisation eines Datenhandovers zwischen einer ersten Taktdomäne und einer zweiten Taktdomäne gemäß einem Aspekt der vorliegenden Offenbarung.
-
Die Vorrichtung 1100 ist konfiguriert, um einen Datenhandover zwischen einer ersten Taktdomäne 1102 und einer zweiten Taktdomäne 1104 zu synchronisieren. Die Vorrichtung 1100 umfasst einen Rechner 1106 (der gleich dem Rechner 106 sein kann), einen FIFO-Speicher 1108 (der gleich dem FIFO-Speicher 108 sein kann), einen Synchronisationspulsgenerator 1110 (der gleich dem Synchronisationspulsgenerator 110 sein kann), einen Füllpegelinformationslieferanten 1112 (der gleich dem Füllpegelinformationslieferanten 112 sein kann) und einem Rückkopplungsweg 1114 (der gleich dem Rückkopplungsweg 114 sein kann). Darüber hinaus umfasst die Vorrichtung 1110 auch einen Phaseninformationslieferanten 1115.
-
Die Vorrichtung 1110 ist konfiguriert, um einen Eingangsdatenwert 1120 (oder eine Folge von Eingangsdatenwerten 1120) zu empfangen und einen Ausgangsdatenwert 1122 (oder eine Folge von Ausgangdatenwerten 1122) zu liefern. Darüber hinaus empfängt die Vorrichtung 1110 ein erstes Taktsignal clk1 und ein zweites Taktsignal clk2.
-
Der FIFO-Speicher 1108 empfängt die Eingangsdatenwerte 1120, wobei das erste Taktsignal clk1 beispielsweise ein Timing bestimmen kann, zu dem die Eingangsdatenwerte 1120 in den FIFO-Speicher eingegeben werden. Darüber hinaus kann das zweite Taktsignal clk2 beispielsweise in Kombination mit einem Synchronisationspuls ein Timing bestimmen, gemäß dem Ausgangsdatenwerte 1122 aus dem FIFO-Speicher 1108 gelesen werden.
-
Der Synchronisationspulsgenerator 1110, der typischerweise auf der Basis des zweiten Taktsignales clk2 betrieben wird, ist konfiguriert, um einen Synchronisationspuls zu liefern, der eine Zeit bestimmt, zu der ein Ausgangsdatenwert 1122 aus dem FIFO-Speicher 1108 gelesen wird, oder eine Zeit, zu der ein Ausgangsdatenwert 1122, der vom FIFO-Speicher 1108 geliefert wird, in eine Schaltung übernommen wird, die basierend auf dem zweiten Taktsignal clk2 betrieben wird. Der Synchronisationspulsgenerator 1110 empfängt eine Synchronisationspulszyklusdauerinformation 1116, die als ein Gültigkeitswort betrachtet werden kann, vom Rechner 1106. Die Synchronisationspulszyklusdauerinformation 1116 kann beispielsweise einen Zeitintervall zwischen Zeiten beschrieben, bei welchem nachfolgende Ausgangsdatenwerte 1122 vom FIFO-Speicher 1108 in eine Schaltung übernommen werden, die basierend auf dem zweiten Taktsignal clk2 betrieben wird. Entsprechend trägt die Synchronisationspulszyklusdauerinformation 1116 Information über die Gültigkeitszeit eines Datenworts (oder einer Mehrzahl von Datenworten), der bzw. die in dem FIFO-Speicher gespeichert sind. Beispielsweise kann die Synchronisationspulszyklusdauerinformation 1116 derart sein, dass ein Gültigkeitswort eine Gültigkeitszeit zumindest eines Datenwortes beschreibt, wobei jede Adresse des FIFO-Speichers 1108 mit zumindest einem Datenwort assoziiert ist. Entsprechend kann es eine Verbindung zwischen einem Gültigkeitsdatenwort (der Synchronisationspulszyklusdauerinformation) und einem oder mehreren Datenworten geben, die im FIFO-Speicher 1108 gespeichert sind.
-
Der Rechner 1106 kann beispielsweise mehrere Eingangsinformationselemente verwenden, um die Synchronisationspulszyklusdauerinformation 1116 zu bestimmen (d. h. die Gültigkeitsworte). Beispielsweise kann der Rechner 1106 eine Füllpegelinformation 1114 vom Füllpegelinformationslieferanten 1112 empfangen, wobei die Füllpegelinformation 1114 einen Füllpegel des FIFO-Speichers 1108 beschreibt. Dem entsprechend liefert der Rechner 1106, der vorzugsweise auf der Basis des ersten Taktsignals clk1 betrieben wird, die Synchronisationspulszyklusdauerinformation in der Weise, dass der Füllpegel des FIFO-Speichers 1108 in einer vorbestimmten Grenze gehalten wird oder zu einem Zielfüllpegelwert gebracht wird. Darüber hinaus kann der Rechner 1106 konfiguriert sein, um eine Phaseninformation 1117 vom Phaseninformationslieferanten 1115 zu erhalten, wobei die Phaseninformation 1117 beispielsweise eine Phasenbeziehung zwischen den Synchronisationspuls 1127, der vom Synchronisationspulsgenerator 1110 geliefert wird, und dem ersten Taktsignal clk1 (d. h. dem Takt der ersten Taktdomäne 1102) beschreiben kann. Mit anderen Worten kann die Phaseninformation 1117 von Phaseninformationslieferanten 1115 zum Rechner 1106 zurückgeführt werden und der Rechner 1106 kann konfiguriert sein, um die Synchronisationspulszyklusdauerinformation (die als eine Synchronisationspulstiminginformation betrachtet werden kann) basierend auf der Phaseninformation 1117, die durch den Rückkopplungsweg geliefert wird, einzustellen.
-
Dementsprechend kann der Rechner 1106 sowohl den Füllpegel des FIFO-Speichers 1108 und eine Phasenbeziehung zwischen dem Synchronisationspuls 1127 und dem ersten Taktsignal clk1 berücksichtigen, um die Synchronisationspulszyklusdauerinformation 1116 bereitzustellen. Somit wird das Zeitintervall zwischen Zeiten, bei welchen Ausgangsdatenwerte zur Schaltung der zweiten Taktdomäne 1104 vom FIFO-Speicher 1108 (d. h. die Gültigkeitszeit der Datenwerte) übernommen werden, eingestellt oder dynamisch eingestellt (in der Art einer Rückkopplung), um sowohl einen gewünschten Füllpegel des FIFO-Speichers 1108 beizubehalten als auch die gewünschte Phasenbeziehung zwischen dem Synchronisationspulssignal 1127 (das beispielsweise einen Takeover eines Ausgangsdatenwertes 1122 vom FIFO-Speicher 1108 zu einer Schaltung Triggern kann, die basierend auf dem zweiten Taktsignal clk2 betrieben wird) und dem ersten Taktsignal clk1 zu erhalten.
-
Gemäß einem Aspekt der vorliegenden Offenbarung, kann der Synchronisationspulsgenerator 1110 effizient angewandt werden, um die Phaseninformation 1117 zu liefern. Beispielsweise kann die Phaseninformation 1117 auf einem Zählwert basieren (oder diesem gleich sein), der von einem Zähler des Synchronisationspulsgenerators 1110 zu einem Zeitpunkt einer Flanke (oder zu einer Zeit, die durch eine Flanke bestimmt ist) des ersten Taktsignals clk1 erreicht wird. Darüber hinaus kann durch die Synchronisationspulszyklusdauerinformation eine Periodizität (beispielsweise ein Wiederladewert, der auf den Zähler angewandt wird, wenn eine gewisser minimaler Zählwert oder ein maximaler Zählwert vom Zähler erreicht wird) bestimmt werden.
-
Somit kann die Vorrichtung 1100 eine Synchronisation zwischen der ersten Taktdomäne 1102 und der zweiten Taktdomäne 1104 erreichen, so dass ein Unterlauf oder ein Überlauf des FIFO-Speichers 1108 vermieden wird und so dass das Timing des Synchronisationspulses 1127 an das Timing des ersten Taktsignals clk1 gut angepasst ist, so dass beispielsweise Verletzungen der Setup-und-Halte-Zeiten oder dergleichen vermieden werden.
-
Es ist zu beachten, dass die Funktionalität der Schaltung 1100 selbstverständlich über einen breiten Bereich modifiziert werden kann. Beispielsweise kann bei einigen Ausführungsformen der Datentransfer auch von der zweiten Taktdomäne zur ersten Taktdomäne stattfinden. Alternativ ist ein bidirektionaler Datenfluss ebenfalls möglich.
-
Darüber hinaus kann selbstverständlich das hierin mit Bezug zu anderen Ausführungsformen beschriebene Konzept in der Vorrichtung 1100 implementiert werden.
-
Auch sind verschiedene Konzepte einer Erzeugung der Füllpegelinformation 1114 und der Phaseninformation 1117 verwendbar, solange ein korrektes Timing ohne Unterläufe oder Überläufe des FIFO-Speichers 1108 und ohne andere Timingverletzungen erreicht wird.
-
Die Synchronisationspulszyklusdauerinformation, die als ein Gültigkeitswort betrachtet werden kann, kann mit einem oder mehreren Datenworten des FIFO-Puffers auf verschiedene Arten assoziiert sein. Beispielsweise kann in einigen Implementierungen die Synchronisationspulszyklusdauerinformation im FIFO-Speicher 1108 gespeichert sein. Alternativ kann jedoch die Synchronisationspulszyklusdauerinformation zwischen der ersten Taktdomäne und der zweiten Taktdomäne getrennt vom FIFO-Speicher 1108 ausgetauscht werden, wobei es jedoch bevorzugt ist, eine Assoziation zwischen einer Speicheradresse des FIFO-Puffers 1108 und einer entsprechenden Synchronisationspulszyklusdauerinformation 1116 zu haben.
-
Obwohl einige Aspekte im Kontext einer Vorrichtung beschrieben wurden, ist es verständlich, dass diese Aspekte auch eine Beschreibung des entsprechenden Verfahrens darstellen, wobei ein Block oder eine Vorrichtung einem Verfahrensschritt oder einem Merkmal eines Verfahrensschritts entspricht. Analog stellen Aspekte, die im Kontext eines Verfahrensschritts beschrieben wurden auch eine Beschreibung eines entsprechenden Blocks oder Elements oder Merkmals einer entsprechenden Vorrichtung dar. Einige oder alle Verfahrensschritte können durch eine (oder unter Verwendung einer) Hardwarevorrichtung, wie beispielsweise einen Mikroprozessor, einen programmierbaren Computer oder eine elektronische Schaltung ausgeführt werden. Bei einigen Ausführungsformen können ein oder mehrere der wichtigsten Verfahrensschritte durch eine derartige Vorrichtung ausgeführt werden.
-
Abhängig von bestimmten Implementierungserfordernissen können Ausführungsformen der Erfindung als Hardware oder Software implementiert sein. Die Implementierung kann durch Verwendung eines digitalen Speichermediums, wie beispielsweise einer Floppydisk, einer DVD, einer Blu-Ray, einer CD, eines ROMs, eines PROMs, eines EPROMs, eines EEPROMs oder eines Flashspeichers ausgeführt werden, die elektronisch lesbare Steuerungssignale darauf gespeichert aufweisen, die mit einem programmierbaren Computersystem kooperieren (oder dazu geeignet sind zu kooperieren), so dass das entsprechende Verfahren ausgeführt wird. Daher kann das digitale Speichermedium computerlesbar sein.
-
Einige Ausführungsformen gemäß der Erfindung umfassen einen Datenträger mit elektronisch lesbaren Steuerungssignalen, die dazu geeignet sind mit einem programmierbaren Computersystem zu kooperieren, so dass eines der Verfahren, die hierin beschrieben wurden, ausgeführt wird.
-
Allgemein können Ausführungsformen der vorliegenden Erfindung als ein Computerprogrammprodukt mit einem Programmcode implementiert sein, wobei der Programmcode ausführbar ist, um eines der Verfahren auszuführen, wenn das Computerprogrammprodukt auf einem Computer läuft. Der Programmcode kann beispielsweise auf einem maschinenlesbaren Träger gespeichert sein.
-
Andere Ausführungsformen umfassen das Computerprogramm zur Durchführung eines der hierin beschriebenen Verfahren, das auf einem maschinenlesbaren Träger gespeichert ist.
-
Mit anderen Worten ist eine Ausführungsform des erfindungsgemäßen Verfahrens daher ein Computerprogramm mit einem Programmcode zur Durchführung eines der hierin beschriebenen Verfahren, wobei das Computerprogramm auf einem Computer läuft.
-
Eine weitere Ausführungsform der erfindungsgemäßen Verfahren ist daher ein Datenträger (oder ein digitales Speichermedium, oder ein computerlesbares Medium), das darauf aufgezeichnet das Computerprogramm zur Durchführung eines der hierin beschriebenen Verfahren aufweist. Der Datenträger, das digitale Speichermedium oder das aufgezeichnete Medium sind typischerweise materiell und/oder nicht flüchtig.
-
Eine weitere Ausführungsform des erfindungsgemäßen Verfahrens ist daher ein Datenstrom oder eine Folge von Signalen, die das Computerprogramm darstellen, um eines der hierin beschriebenen Verfahren durchzuführen. Der Datenstrom oder die Folge von Signalen kann beispielsweise konfiguriert sein, um über eine Datenkommunikationsverbindung, wie beispielsweise über das Internet, übertragen zu werden.
-
Eine weitere Ausführungsform umfasst ein Verarbeitungsmittel, beispielsweise einen Computer, oder eine programmierbare Logikvorrichtung, die konfiguriert oder eingerichtet ist, um eines der hierin beschriebenen Verfahren auszuführen.
-
Eine weitere Ausführungsform umfasst einen Computer, der darauf installiert das Computerprogramm zur Durchführung eines der hierin beschriebenen Verfahren aufweist.
-
Eine weitere Ausführungsform gemäß der Erfindung umfasst eine Vorrichtung oder ein System, dass konfiguriert ist, um (beispielsweise elektronisch oder optisch) ein Computerprogramm zur Durchführung eines der hierin beschriebenen Verfahren zu einem Empfänger zu übertragen. Der Empfänger kann beispielsweise ein Computer, eine mobile Vorrichtung, eine Speichervorrichtung oder dergleichen sein. Die Vorrichtung oder System kann beispielsweise einen Fileserver zur Übertragung des Computerprogramms zum Empfänger aufweisen.
-
Bei einigen Ausführungsformen kann eine programmierbare Logikvorrichtung (beispielsweise ein programmierbares Gatterfeld) verwendet werde, um einige oder alle Funktionalitäten der hierin beschriebenen Verfahren auszuführen. Bei einigen Ausführungsformen kann ein programmierbares Gatterfeld mit einem Mikroprozessor kooperieren, um eines der hierin beschriebenen Verfahren auszuführen. Im Allgemeinen werden die Verfahren vorzugsweise durch eine beliebige Hardwarevorrichtung ausgeführt.
-
Die oben beschriebenen Ausführungsformen sind lediglich veranschaulichend für die Prinzipien der vorliegenden Erfindung. Es ist verständlich, dass Modifizierungen und Änderungen der Anordnungen und der Einzelheiten, die hierin beschrieben wurden, für Fachleute ersichtlich sind. Es wird beabsichtigt, dass Beschränkungen nur durch den Umfang der beigefügten Patenansprüche und nicht durch die speziellen Einzelheiten, die im Wege der Beschreibung und Erläuterung der Ausführungsformen hierin dargelegt wurden, erfolgen.