-
Zeit-
(oder Phasen-) Akkumulatoren werden häufig verwendet, um die aktuelle
Zeit in einer digitalen Schaltung zu verfolgen. Ein Zeitakkumulator
ist durch ein Addieren eines Zeitinkrements zu der aktuellen Zeit
mit einer Rate, die die Taktfrequenz genannt wird, wirksam. Das
Zeitinkrement kann fest, variabel oder zeitveränderlich sein. Ein Beispiel
einer zeitveränderlichen
Implementierung ist eine Servo-Schleife, die verwendet wird, um
das Zeitinkrement zu variieren, um den Zeitakkumulator in Synchronisation
mit einer externen Zeitreferenz zu halten. Je höher die Taktfrequenz, desto
höher die
Auflösung
des Zeitakkumulators und desto genauer kann der Zeitakkumulator
verwendet werden, um Ereignisse zeitlich zu steuern. Beispielsweise
kann ein Zeitakkumulator verwendet werden, um einen Zeitgeberwert
zu setzen, die Zeit eines externen Ereignisses aufzuzeichnen (d.
h. einen Zeitstempel) oder ein Auslösesignal für ein externes Ereignis zu
einer gegebenen Taktfrequenz zu erzeugen.
-
Eine
höhere
Taktfrequenz reduziert jedoch notwendigerweise die Zeit, die verfügbar ist,
um die Addition des Zeitinkrements und irgendwelche anderen Operationen
zu berechnen, die an dem Zeitinkrementwert durchgeführt werden
müssen
(z. B. Servoschleifenberechnungen). Falls der Zeitakkumulator in
einer Vorrichtung implementiert ist, die bei einer hohen Taktfrequenz
wirksam ist, die nicht genügend Zeit
erlaubt, damit der Zeitakkumulator alle Berechnungen desselben vor
dem nächsten
Takt abschließen
kann, kann die aktuelle Zeit, die durch den Zeitakkumulator aufgezeichnet
wird, ungenau sein. Lösungen
für dieses
Problem umfassen ein Verwenden einer schnelleren Hardware bei dem
Zeitakkumulator oder ein Entspannen der Genauigkeitsanforderungen
der Vorrichtung und ein Verwenden einer niedrigeren Takt frequenz,
wodurch dem Zeitakkumulator mehr Zeit zwischen Taktpulsen gegeben
wird, in der die Berechnungen durchzuführen sind. Eine schnellere
Hardware ist gewöhnlich
jedoch teurer und bei vielen Anwendungen ist ein Reduzieren der
Genauigkeit der Vorrichtung eventuell nicht erwünscht. Deshalb besteht ein
Bedarf nach einem langsameren Zeitakkumulator, der zum Wirksamsein
bei einer höheren
Taktfrequenz in der Lage ist.
-
Es
ist die Aufgabe der vorliegenden Erfindung, einen Zeitakkumulator
und ein Verfahren zum Akkumulieren von Zeit mit verbesserten Charakteristika
zu schaffen.
-
Diese
Aufgabe wird durch einen Zeitakkumulator gemäß Anspruch 1 und ein Verfahren
gemäß Anspruch
15 gelöst.
-
Ausführungsbeispiele
der vorliegenden Erfindung sehen einen einstellbaren Zeitakkumulator vor,
der zum Liefern einer ausreichenden Berechnungszeit ungeachtet der
Taktfrequenz in der Lage ist. Der Zeitakkumulator umfasst ein erstes
Register, das eine aktuelle Zeit speichert, und ein zweites Register,
das einen Zeitinkrementwert speichert, der einem Multiplizierer
entspricht, der mit einem ursprünglichen
Zeitinkrement multipliziert ist, das einem Taktpuls eines Taktsignals
zugeordnet ist. Das Taktsignal ist in Rechenintervalle geteilt,
wobei jedes Rechenintervall eine vorbestimmte Anzahl von Taktpulsen äquivalent
zu dem Wert des Multiplizierers umfasst. Der Zeitakkumulator umfasst
ferner einen Summationsknoten zum Addieren der aktuellen Zeit zu
dem Zeitwert, um eine aktualisierte aktuelle Zeit in jedem Rechenintervall
zu erzeugen.
-
Bei
einem Ausführungsbeispiel
umfasst der einstellbare Zeitakkumulator ferner einen Zähler zum Zählen von
Taktpulsen in dem Taktsignal, um einen Taktzustand zu bestimmen,
der eine aktuelle Anzahl von gezählten
Taktpulsen angibt. Der Zähler
erzeugt ein Taktfreigabesignal zu dem ersten Register, wenn die
aktuelle Anzahl von gezählten
Taktpulsen gleich der vorbestimmten Anzahl von Taktpulsen ist. Ansprechen
auf einen Empfang des Taktfreigabesignals wird das erste Register
getaktet, um die aktuelle Zeit zu dem Summationsknoten auszugeben.
-
Bei
einem Aspekt der Erfindung umfasst der Zeitakkumulator ferner einen
ersten und einen zweiten Multiplexer. Der erste Multiplexer wählt zwischen Zeitoptionen
aus, wobei jede Zeitoption ein Zeitwert ist, der einer ursprünglichen
Zeit entspricht, die einem jeweiligen Vielfachen des ursprünglichen
Zeitinkrements hinzugefügt
ist, das geringer als der Multiplizierer ist. Auf einen Empfang
eines Auslösesignals
bzw. Triggersignals hin erzeugt der Zähler ein erstes Auswahlsignal,
das den Taktzustand angibt, zu dem ersten Multiplexer für eine Auswahl
einer Ausgewählten
der Zeitoptionen, die dem Taktzustand zugeordnet ist. Zusätzlich erzeugt
der Zähler
auch ein zweites Auswahlsignal in einem ersten Zustand in Abwesenheit
des Auslösesignals
und in einem zweiten Zustand auf einen Empfang des Auslösesignals hin.
Der zweite Multiplexer speichert die aktualisierte aktuelle Zeit
als die aktuelle Zeit in dem ersten Register, wenn das zweite Auswahlsignal
sich in dem ersten Zustand befindet, und speichert die ausgewählte Zeitoption
als die aktuelle Zeit in dem ersten Register, wenn das zweite Auswahlsignal
sich in dem zweiten Zustand befindet.
-
Bei
einem anderen Aspekt der Erfindung umfasst der Zeitakkumulator ferner
ein Zeitstempelregister, das verbunden ist, um ein Auslösesignal
zu empfangen. Ansprechend auf das Auslösesignal speichert das Zeitstempelregister
die aktuelle Zeit aus dem ersten Register und den Taktzustand aus dem
Zähler
als einen Zeitstempel.
-
Bei
einem weiteren Aspekt der Erfindung umfasst der Zeitakkumulator
ferner eine Steuerung zum Erzeugen eines Auslösesignals basierend auf Statussignalen,
die durch jeweilige Komparatoren erzeugt werden. Jedes der Statussignale
gibt einen Zustand der aktuellen Zeit relativ zu einer jeweili gen Auslösezeit an.
Jede der Auslösezeiten
stellt eine ursprüngliche
Auslösezeit
bei einem jeweiligen Vielfachen des ursprünglichen Zeitinkrements dar,
das geringer als der Multiplizierer ist. Die Komparatoren erzeugen
die jeweiligen Statussignale derselben in entweder einem ersten
Zustand, wenn die aktuelle Zeit die jeweilige Auslösezeit überschreitet,
oder einem zweiten Zustand, wenn die aktuelle Zeit der jeweiligen
Auslösezeit
vorangeht. Bei einem exemplarischen Ausführungsbeispiel bestimmt die
Steuerung einen Taktzustand des Taktsignals in einem aktuellen Rechenintervall
aus der Anzahl von Statussignalen in dem ersten Zustand und erzeugt
das Auslösesignal bei
dem Taktpuls, der dem Taktzustand entspricht, in einem nachfolgenden
Rechenintervall.
-
Die
offenbarte Erfindung wird mit Bezug auf die zugehörigen Zeichnungen
beschrieben, die exemplarische Ausführungsbeispiele der Erfindung
zeigen und die hierin durch Bezugnahme in die Beschreibung derselben
aufgenommen sind.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
schematisches Blockdiagramm, das einen einstellbaren Zeitakkumulator
gemäß Ausführungsbeispielen
der vorliegenden Erfindung darstellt;
-
2 Zeitdiagramme
des Betriebs des einstellbaren Zeitakkumulators von 1 gemäß Ausführungsbeispielen
der vorliegenden Erfindung;
-
3 einen
exemplarischen Prozess zum Akkumulieren von Zeit gemäß Ausführungsbeispielen
der vorliegenden Erfindung;
-
4 ein
schematisches Blockdiagramm einer exemplarischen Implementierung
des einstellbaren Zeitakku mulators, um die Zeit zu setzen, gemäß Ausführungsbeispielen
der vorliegenden Erfindung;
-
5 einen
exemplarischen Prozess zum Setzen der Zeit unter Verwendung eines
einstellbaren Zeitakkumulators gemäß Ausführungsbeispielen der vorliegenden
Erfindung;
-
6 ein
schematisches Blockdiagramm einer exemplarischen Implementierung
des einstellbaren Zeitakkumulators, um die Zeit aufzuzeichnen, gemäß Ausführungsbeispielen
der vorliegenden Erfindung;
-
7 einen
exemplarischen Prozess zum Aufzeichnen der Zeit unter Verwendung
eines einstellbaren Zeitakkumulators gemäß Ausführungsbeispielen der vorliegenden
Erfindung;
-
8A und 8B schematische
Blockdiagramme von exemplarischen Implementierungen des einstellbaren
Zeitakkumulators, um einen Auslöser
zu erzeugen, gemäß Ausführungsbeispielen
der vorliegenden Erfindung; und
-
9 einen
exemplarischen Prozess zum Erzeugen eines Auslösers unter Verwendung eines einstellbaren
Zeitakkumulators gemäß Ausführungsbeispielen
der vorliegenden Erfindung.
-
1 ist
ein schematisches Blockdiagramm, das einen exemplarischen und vereinfachten
einstellbaren Zeitakkumulator 10 gemäß Ausführungsbeispielen der vorliegenden
Erfindung darstellt. Der einstellbare Zeitakkumulator 10 umfasst
ein Zeitinkrementregister 20, einen Summationsknoten 50,
ein Zeitregister 60 und einen Zähler 80. Das Zeitinkrementregister 20 behält einen
Zeitinkrementwert 35 bei, der durch den Summationsknoten 50 zu
einer aktuellen Zeit 70 addiert wird, um eine aktualisierte
aktuelle Zeit 55 zu erzeugen.
-
Die
aktualisierte aktuelle Zeit 55 ist in dem Zeitregister 60 als
die aktuelle Zeit 70 gespeichert. Das Zeitregister 60 gibt
die aktuelle Zeit 70 zu dem Summationsknoten 50 aus,
um die aktuelle Zeit 70 in Synchronisation mit einem Taktsignal 90 zu
aktualisieren.
-
Der
Zeitinkrementwert 35 ist ein Vielfaches eines ursprünglichen
Zeitinkrements 30, dahingehend, dass das ursprüngliche
Zeitinkrement 30 mit einem Multiplizierer 40 multipliziert
ist, um den Zeitinkrementwert 35 zu erzeugen. Das ursprüngliche Zeitintervall
ist die Menge an Zeit, die bei jedem Taktpuls zu der aktuellen Zeit
addiert wird, der hierin als eine Taktperiode (von einer ansteigenden
Flanke des Taktsignals 90 zu der nächsten ansteigenden Flanke des
Taktsignals 90) definiert ist. Das ursprüngliche Zeitinkrement 30 entspricht
dem Zeitintervall zwischen aufeinanderfolgenden Taktpulsen in dem
Taktsignal 90. Falls beispielsweise das Taktsignal 90 alle 10
Nanosekunden (ns) einen Taktpuls erzeugt, beträgt das ursprüngliche
Zeitinkrement 30 10 ns. Falls somit der Zeitakkumulator 10 zum
Wirksamsein bei der Taktfrequenz des Taktsignals 90 in
der Lage ist, ist der Wert des Multiplizierers 40 „1", um bei jedem Taktpuls 10 ns
zu der aktuellen Zeit 70 zu addieren.
-
Falls
jedoch der Zeitakkumulator 10 mit einer langsameren Rate
als der Taktfrequenz läuft,
ist der Wert des Multiplizierers 40 (N) von dem Verhältnis zwischen
der Taktperiode und der Betriebszeit des Zeitakkumulators 10 abhängig. Falls
beispielsweise der Zeitakkumulator 10 20 Nanosekunden (ns)
benötigt,
um die aktuelle Zeit 70 zu berechnen und zu speichern,
und die Taktperiode 10 ns beträgt, beträgt der Wert des Multiplizierers 40 zwei
(N = 2). Somit wird das ursprüngliche
Zeitintervall 30 mit zwei multipliziert, um den Zeitinkrementwert 35 von
20 ns zu erzeugen (2·10
ns = 20 ns), der zu der aktuellen Zeit 70 addiert wird.
Folglich darf der Zeitakkumulator 10 bei 1/N·Taktfrequenz
wirksam sein, während
immer noch die Zeitauflösung
und die Genauigkeit beibehalten ist, die durch die Taktfrequenz
geliefert wird. Bei einigen Ausführungsbeispielen
kann der Wert des Multiplizierers 40 zwischen Aktualisierungen
der aktuellen Zeit abhängig
von dem Verhältnis
der Taktperiode und der Betriebszeit des Zeitakkumulators 10 variieren.
-
Es
ist klar, dass die Taktfrequenz des Taktsignals 90 durch
die erwünschte
Taktfrequenz einer Vorrichtung bestimmt ist, die den Zeitakkumulator 10 umfasst,
und deshalb von der Anwendung abhängig ist. Bei einigen Ausführungsbeispielen
kann der Wert des Multiplizierers 40 variieren, um den
Zeitakkumulator 10 mit einer zeitveränderlichen Taktfrequenz zu synchronisieren.
Wie es oben beschrieben ist, ist der Wert des Multiplizierers 40 gleich
der Anzahl von Taktpulsen des Taktsignals 90, die notwendig
sind, damit der Zeitakkumulator 10 die Berechnungen desselben
durchführen
kann. Diese Anzahl von Taktpulsen wird hierin als ein Rechenintervall
bezeichnet. Somit aktualisiert der Zeitakkumulator 10 die
aktuelle Zeit 70 einmal in jedem Rechenintervall.
-
Der
Zähler 80 zählt die
Taktpulse des Taktsignals 90, um einen Taktzustand zu bestimmen,
der eine aktuelle Anzahl von gezählten
Taktpulsen angibt. Wenn die Anzahl von gezählten Taktpulsen gleich dem
Wert des Multiplizierers 40 ist und deshalb ein Rechenintervall
vergangen ist, erzeugt der Zähler 80 ein
Taktfreigabesignal 95 zu dem Zeitregister 60,
das das Zeitregister 60 durch das Taktsignal 90 taktet.
Das Zeitregister 60 gibt die aktuelle Zeit 70 zu
dem Summationsknoten 50 aus, der die aktuelle Zeit 70 zu
dem Zeitinkrementwert 35 addiert und die aktualisierte
aktuelle Zeit 55 erzeugt, die in dem Zeitregister 60 als
die neue aktuelle Zeit 70 gespeichert wird. Somit wird
der Zeitakkumulator 10 jeden N-ten Taktpuls aktualisiert.
Zusätzlich
wird der Zähler 80 rückgesetzt,
sobald der Zähler 80 das
Taktfreigabesignal 95 erzeugt hat, um ein Zählen von
Taktpulsen während
des nächsten
Rechenintervalls zu beginnen.
-
Der
Betrieb des einstellbaren Zeitakkumulators 10 von 1 wird
mit Bezug auf die Zeitdiagramme, die in 2 gezeigt
sind, besser verständlich. Wie
es in 2 zu sehen ist, umfasst das Taktsignal 90 Taktpulse 200,
die durch bekannte Zeitintervalle getrennt sind, derart, dass die
ansteigende Flanke jedes Taktpulses 200 mit einer Rate
empfangen wird, die der erwünschten
Auflösung
entspricht. Der Zählerwert 210 wird
jedes Mal inkrementiert, wenn der Zähler 80 eine ansteigende
Flanke eines Taktpulses 200 während eines Rechenintervalls 215 erfasst.
Somit gibt der Zählerwert 210 den
Taktzustand des Taktsignals 90 an, wobei der Taktzustand
der aktuellen Anzahl von gezählten
Taktpulsen 200 in dem Taktsignal 90 entspricht.
In 2 umfasst das Rechenintervall 215 drei
Taktpulse 200 und deshalb wird der Zählerwert 210 bei der
ansteigenden Flanke des nächsten
Taktpulses 200 nach dem dritten gezählten Taktpuls 200 rückgesetzt.
-
Jeder
Zählerwert 210 (gezählter Taktpuls) stellt
eine unterschiedliche Phase des Rechenintervalls 215 dar.
Durch ein Bemerken der Phase des Rechenintervalls 215 können verschiedenen
Zeitsteuerungsoperationen bei der Taktfrequenz des Taktsignals 90 durchgeführt werden,
obwohl der Zeitakkumulator 10 lediglich mit 1/N·der Taktfrequenz aktualisiert
wird, wie es unten in Verbindung mit 4-9 detaillierter
beschrieben ist.
-
Das
Taktfreigabesignal 95 wird auf ein Zählen von „N" Taktpulsen 200 hin erzeugt.
Wie es in 2 gezeigt ist, wird das Taktfreigabesignal 95 beispielsweise
bei der ansteigenden Flanke des dritten gezählten Taktpulses 200 erzeugt
(allgemein bei dem Bezugszeichen 220 gezeigt). Wenn das
Taktfreigabesignal 95 erzeugt ist, wird die aktuelle Zeit 70 aktualisiert.
Da das Rechenintervall 215 drei Taktpulse 200 umfasst,
wird das Taktfreigabesignal 95 alle drei Taktpulse 200 erzeugt
und wird der Wert 230 der aktuellen Zeit 70 alle
drei Taktpulse 200 aktualisiert. Wie es in 2 gezeigt
ist, wird beispielsweise zu einer anfänglichen Zeit der Wert 230 der
aktuellen Zeit 70 von T0 auf T3 aktualisiert, derart, dass der Wert der aktuellen
Zeit 70 am Ende des ersten Rechenintervalls 215 T3 beträgt.
Nach drei Taktpulsen 200 wird der Wert 220 der
aktuellen Zeit 70 erneut von T3 auf T6 aktualisiert, derart, dass der Wert 220 der
aktuellen Zeit 70 am Ende des zweiten Rechenintervalls 215 T6 beträgt.
-
3 stellt
einen exemplarischen Prozess 300 zum Akkumulieren von Zeit
gemäß Ausführungsbeispielen
der vorliegenden Erfindung dar. Der Prozess 300 beginnt
bei einem Block 310, bei dem ein Zeitinkrementwert aus
der Multiplikation eines Multiplizierers mit einem ursprünglichen
Zeitintervall bestimmt wird. Das ursprüngliche Zeitintervall ist die Menge
an Zeit, die benötigt
wird, um zu der aktuellen Zeit bei jedem Taktpuls (Taktperiode)
addiert zu werden, und der Multiplizierer wird aus der Zeit bestimmt, die
erforderlich ist, um die Akkumulation durchzuführen. Falls beispielsweise
ein Taktpuls alle 10 ns auftritt und die Akkumulationszeit 30 ns
beträgt,
beträgt der
Wert des Multiplizierers drei. Somit wird das ursprüngliche
Zeitintervall (10 ns) mit drei multipliziert, um den Zeitinkrementwert
von 30 ns zu erzeugen.
-
Der
Prozess geht bei einem Block 320 weiter, bei dem ein Taktsignal
mit einer Taktfrequenz empfangen wird. Unter Verwendung des oben
beschriebenen Beispiels beträgt
die Taktfrequenz eines Taktsignals, das alle 10 ns einen Taktpuls
erzeugt, 100 MHz. Bei einem Block 330 werden die Taktpulse des
Taktsignals gezählt.
Vor dem Empfangen des Taktsignals wird beispielsweise ein Zähler auf
eins initialisiert. Sobald das Taktsignal zu dem Zähler eingegeben
ist, wird der Zähler
bei der ansteigenden Flanke jedes Taktpulses in dem Taktsignal um
eins inkrementiert. Unter Verwendung des gleichen Beispiels wird,
falls die Zeit zwischen ansteigenden Flanken von sequentiellen Taktpulsen
10 ns beträgt,
der Zähler
alle 10 ns um eins inkrementiert.
-
Der
Prozess geht bei einem Block 340 weiter, bei dem der aktuelle
Wert des Zählers
mit einer vorbestimmten Anzahl von Taktpulsen gleich dem Wert des
Multiplizierers verglichen wird. Falls der aktuelle Wert des Zählers nicht
gleich dem Wert des Multiplizierers ist, zählt der Zähler weiterhin Taktpulse. Unter
Verwendung des gleichen Beispiels wird, wenn die Zähler die
ansteigende- Flanke eines ersten Taktpulses in dem Taktsignal erfasst,
der Zähler von
eins auf zwei inkrementiert. Da der Wert des Multiplizierers drei
beträgt,
zählt der
Zähler
weiterhin Taktpulse, bis der Zähler
drei Taktpulse gezählt
hat.
-
Sobald
der aktuelle Wert des Zählers
gleich dem Wert des Multiplizierers ist, wird bei einem Block 350 der
Zeitinkrementwert, der bei dem Block 310 bestimmt wird,
zu einer aktuellen Zeit addiert, um die aktuelle Zeit zu aktualisieren.
Falls beispielsweise die aktuelle Zeit 30 ns beträgt und das
Zeitwertinkrement 30 ns beträgt,
wird bei dem Block 350 die aktuelle Zeit auf 60 ns erhöht. Bei
einem Block 360 wird der Zähler rückgesetzt und der Prozess wiederholt
sich bei dem Block 320. Falls die aktualisierte aktuelle
Zeit von dem Block 350 60 ns beträgt und der Wert des Multiplizierers
immer noch drei beträgt,
zählt unter Verwendung
des gleichen Beispiels der Zähler
drei zusätzliche
Taktpulse in dem Taktsignal bei dem Block 330 und wird
nach den drei zusätzlichen
Taktpulsen die aktuelle Zeit von 60 ns auf 90 ns erhöht.
-
4 ist
ein schematisches Blockdiagramm einer exemplarischen Implementierung
des einstellbaren Zeitakkumulators 10 gemäß Ausführungsbeispielen
der vorliegenden Erfindung. In 4 wird der einstellbare
Zeitakkumulator 10 in Verbindung mit einer Auslöseschaltung
(nicht spezifisch gezeigt) verwendet, um nicht nur eine neue Zeit,
um dieselbe in das Zeitregister 60 zu laden, sondern auch
die Phase zu identifizieren, bei der die Aktualisierung auftreten sollte.
Wie bei 1 umfasst der Zeitakkumulator 10 das
Zeitinkrementregister 20, das den Zeitinkrementwert 35 speichert, das
Zeitregister 60, das die aktuelle Zeit 70 speichert,
den Summationsknoten 50 zum Addieren des Zeitinkrementwerts 35 zu
der aktuellen Zeit 70, um die aktualisierte aktuelle Zeit 55 zu
erzeugen, und den Zähler 80 zum
Zählen
der Taktpulse des Taktsignals 90.
-
Der
Zeitakkumulator 10 umfasst ferner einen ersten Multiplexer 410 und
einen zweiten Multiplexer 430. Der erste Multiplexer 410 wählt zwischen
Zeitoptionen 405a, 405b, 405c ... 405N aus,
die in Registern 400a, 400b, 400c ... 400N gespeichert
sind. Die Zeitoption 405a, die in dem Register 400a gespeichert
ist, entspricht einem neuen Zeitwert, der in den Zeitakkumulator
geladen wird, um die aktuelle Zeit 70 des Zeitakkumulators 10 zu
einer speziellen Zeit zu aktualisieren. Die Zeitoptionen 405b, 405c ... 405N, die
in den nachfolgenden Registern 400b, 400c ... 400N gespeichert
sind, sind alle ein Zeitintervall auseinander, wobei sich das Zeitintervall
auf die Menge an Zeit zwischen aufeinanderfolgenden Taktpulsen in dem
Taktsignal 90 bezieht. Somit ist die Zeitoption 405b,
die in dem Register 400b gespeichert ist, gleich dem neuen
Zeitwert plus dem Zeitintervall, ist die Zeitoption 405c,
die in dem Register 400c gespeichert ist, gleich dem neuen
Zeitwert plus zweimal dem Zeitintervall und ist die Zeitoption 405N,
die in dem Register 400N gespeichert ist, gleich dem neuen
Zeitwert plus (N – 1)-mal
dem Zeitintervall.
-
Wie
es oben beschrieben ist, zählt
der Zähler 80 die
Taktpulse des Taktsignals 90, um eine Taktzustand zu bestimmen,
der eine aktuelle Anzahl von gezählten
Taktpulsen angibt. Die Anzahl von unterschiedlichen Taktzuständen ist äquivalent
zu der Anzahl von Taktpulsen in dem Rechenintervall. Somit stellt
jeder Taktzustand (gezählte
Taktpuls) eine unterschiedliche Phase des Rechenintervalls dar.
Die Phaseninformationen werden verwendet, um eine der Zeitoptionen 405a ... 405N auszuwählen, die
in den Registern 400a ... 400N gespeichert sind,
um dieselbe als die neue aktuelle Zeit 70 in das Zeitregister 60 zu
laden.
-
Genauer
gesagt, ist der Zähler 80 verbunden,
um ein Auslösesignal 420 zu
empfangen, um ein Laden von einer der Zeitoptionen 405a ... 405N in das
Zeitregister 60 auszulösen.
Wenn der Zähler 80 das
Auslösesignal 420 empfängt, erzeugt
der Zähler 80 ein
erstes Auswahlsignal 440, das den aktuellen Taktzustand
angibt, zu dem ersten Multiplexer 410, um die spezielle
Zeitoption 405a ... 405N zu identifizieren, die
der erste Multiplexer 410 auswählen sollte. Jeder Taktzustand
entspricht einer speziellen Zeitoption 405a ... 405N.
Beispielsweise entspricht die Zeitoption 405a einem anfänglichen
Taktzustand, entspricht die Zeitoption 405b einem ersten
Taktzustand, entspricht die Zeitoption 405b einem zweiten Taktzustand
und entspricht die Zeitoption 405N einem N-Taktzustand.
Falls beispielsweise das erste Auswahlsignal 400 angibt,
dass der aktuelle Taktzustand der zweite Taktzustand ist, wählt der
erste Multiplexer 410 die Zeitoption 405c aus,
die in dem Register 400c gespeichert ist.
-
Zusätzlich zu
dem Taktfreigabesignal 95 und dem ersten Auswahlsignal 440 erzeugt
der Zähler 80 ferner
ein zweites Auswahlsignal 450 zu dem zweiten Multiplexer 430.
Das zweite Auswahlsignal 450 weist einen ersten Zustand
auf, wenn der Zähler 80 das Auslösesignal 420 nicht
empfängt,
und einen zweiten Zustand, wenn der Zähler 80 das Auslösesignal 420 empfängt. Der
zweite Multiplexer 430 wählt zwischen der ausgewählten Zeitoption 405,
die durch den ersten Multiplexer 410 geliefert wird, und
der aktualisierten aktuellen Zeit 55 aus, die durch den
Summationsknoten 50 geliefert wird und die als die neue
aktuelle Zeit 70 in dem Zeitregister 60 zu speichern
ist. Der zweite Multiplexer 430 wählt die aktualisierte aktuelle Zeit 55 von
dem Summationsknoten 50 als die neue aktuelle Zeit 70 aus
und speichert dieselbe in dem Zeitregister 60, wenn das
zweite Auswahlsignal 450 sich in dem ersten Zustand befindet.
Gleichermaßen wählt der
zweite Multiplexer 430 die ausgewählte Zeitoption 405 von
dem ersten Multiplexer 410 als die neue aktuelle Zeit 70 aus
und speichert dieselbe in dem Zeitre gister 60, wenn das
zweite Auswahlsignal 450 sich in dem zweiten Zustand befindet.
-
5 stellt
einen exemplarischen Prozess 500 zum Setzen der Zeit unter
Verwendung eines einstellbaren Zeitakkumulators gemäß Ausführungsbeispielen
der vorliegenden Erfindung dar. Der Prozess 500 beginnt
bei einem Block 510, bei dem ein neuer Zeitwert gesetzt
und in den einstellbaren Zeitakkumulator geladen wird. Bei einem
Block 520 werden die Zeitoptionen für jede Phase aus dem geladenen
neuen Zeitwert bestimmt. Jede Zeitoption beginnt mit dem neuen Zeitwert
und addiert zu demselben ein Vielfaches (N) des Zeitintervalls zwischen aufeinanderfolgenden
Taktpulsen eines Taktsignals, wobei N ≥ 0. Falls es beispielsweise drei
Phasen in einem Rechenintervall gibt, können die drei Zeitoptionen
den neuen Zeitwert, den neuen Zeitwert plus dem Zeitintervall und
den neuen Zeitwert plus zweimal dem Zeitintervall umfassen.
-
Der
Prozess geht bei einem Block 530 weiter, bei dem ein Auslösesignal
bei dem Zeitakkumulator empfangen wird, um das Laden des neuen Zeitwerts
in den Zeitakkumulator auszulösen.
Bei einem Block 540 wird der Taktzustand (Phase des Rechenintervalls)
zu der Zeit, zu der das Auslösesignal
empfangen wird, bestimmt und bei einem Block 550 wird die
Zeitoption, die dem aktuellen Taktzustand entspricht, als der neue
Zeitwert ausgewählt,
der in den Zeitakkumulator geladen wird. Unter Verwendung des oben
beschriebenen Beispiels wird, falls der aktuelle Taktzustand zu
der Zeit, zu der das Auslösesignal
empfangen wird, angibt, dass das Taktsignal sich in der zweiten
Phase des Rechenintervalls befindet, die zweite Zeitoption, die
dem neuen Zeitwert plus dem Zeitintervall entspricht, als die neue
aktuelle Zeit für
den Zeitakkumulator ausgewählt.
-
6 ist
ein schematisches Blockdiagramm einer anderen exemplarischen Implementierung
des einstellbaren Zeitakkumulators 10 gemäß Ausführungsbeispielen
der vorliegenden Erfindung. In 5 wird der
einstellbare Zeitakkumulator 10 in Verbindung mit einer
Auslöseschaltung
(nicht gezeigt) verwendet, um die Zeit eines externen Ereignisses durch
ein Erzeugen eines Zeitstempels aufzuzeichnen. Wie bei 1 umfasst
der Zeitakkumulator 10 das Zeitinkrementregister 20,
das den Zeitinkrementwert 35 speichert, das Zeitregister 60,
das die aktuelle Zeit 70 speichert, den Summationsknoten 50 zum Addieren
des Zeitinkrementwerts 35 zu der aktuellen Zeit 70,
um die aktualisierte aktuelle Zeit 55 zu erzeugen, und
den Zähler 80 zum
Zählen
der Taktpulse des Taktsignals 90.
-
Der
Zeitakkumulator 10 umfasst ferner ein Zeitstempelregister 600 zum
Erzeugen und Speichern eines Zeitstempels. Das Zeitstempelregister 600 ist
verbunden, um die aktuelle Zeit 70 von dem Zeitregister 60 und
einen aktuellen Taktzustand 610 von dem Zähler 80 zu
empfangen. Bei jedem Taktpuls gibt der Zähler 80 den aktuellen
Taktzustand 610 (z. B. die Anzahl von gezählten Taktpulsen)
aus, um die aktuelle Phase des Rechenintervalls anzugeben. Die Phaseninformationen
werden verwendet, um zu ermöglichen,
dass das geeignete Zeitinkrement zu der aktuellen Zeit 70 in
entweder einer Hardware oder einer Software addiert wird, um einen
korrekten Zeitstempel zu erzeugen.
-
Um
einen Zeitstempel zu erzeugen, speichert (latcht) ein externes Ereignis
eine Kopie des Zeitregisters 60 durch ein Senden eines
Zeitstempelfreigabesignals 620 zu dem Zeitstempelregister 600 zwischen.
Wenn das Zeitstempelregister 600 das Zeitstempelfreigabesignal 620 empfängt, wird
das Zeitstempelregister 600 durch das Taktsignal 90 getaktet,
um sowohl die aktuelle Zeit 70 von dem Zeitregister 60 als
auch den aktuellen Taktzustand 610 von dem Zähler 80 zu
speichern. Die aktuelle Zeit 70 in Verbindung mit dem aktuellen
Taktzustand 610 bildet den Zeitstempel.
-
7 stellt
einen exemplarischen Prozess 700 zum Aufzeichnen der Zeit
unter Verwendung eines einstellbaren Zeitakkumulators gemäß Ausführungsbeispielen
der vorliegenden Erfindung dar. Der Prozess 700 beginnt
bei einem Block 710, bei dem ein Zeitstempelauslösesignal
durch den einstellbaren Zeitakkumulator empfangen wird. Das Zeitstempelauslösesignal
wird durch ein externes Ereignis erzeugt, um die Zeit des externen
Ereignisses aufzuzeichnen. Der Prozess geht bei Blöcken 720 und 730 weiter,
bei denen sowohl die aktuelle Zeit des einstellbaren Zeitakkumulators
als auch der aktuelle Taktzustand zu der Zeit eines Empfangs des
Zeitstempelauslösesignals
bestimmt werden. Bei einem Block 740 werden die aktuelle
Zeit und der aktuelle Taktzustand als der angeforderte Zeitstempel
für das externe
Ereignis beibehalten. Mit einer Kenntnis des aktuellen Taktzustands
kann der tatsächliche
(korrekte) Zeitstempel bestimmt werden (z. B. durch ein Addieren
eines Vielfachen des Zeitintervalls zwischen aufeinanderfolgenden
Taktpulsen entsprechend dem aktuellen Taktzustand zu der aktuellen
Zeit).
-
8A und 8B sind
schematische Blockdiagramme von anderen exemplarischen Implementierungen
des einstellbaren Zeitakkumulators gemäß Ausführungsbeispielen der vorliegenden
Erfindung. In 8A und 8B wird
der einstellbare Zeitakkumulator 10 verwendet, um ein Auslösesignal zu
erzeugen, um ein externes Ereignis auszulösen. Obwohl es in 8A und 8B nicht
spezifisch gezeigt ist, umfasst der Zeitakkumulator 10 wie
in 1 das Zeitinkrementregister, das den Zeitinkrementwert
speichert, das Zeitregister 60, das die aktuelle Zeit 70 speichert,
den Summationsknoten zum Addieren des Zeitinkrementwerts zu der
aktuellen Zeit 70, um die aktualisierte aktuelle Zeit zu
erzeugen, und den Zähler
zum Zählen
der Taktpulse des Taktsignals.
-
In 8A umfasst
der Zeitakkumulator 10 ferner ein Auslöseregister 810, das
eine Auslösezeit 815 speichert,
einen Differenzknoten 800 zum Bestimmen eines Differenzwerts 805,
der die Differenz zwischen der aktuellen Zeit 70 und der
Auslösezeit 815 darstellt,
Register 820a, 820b, 820c ... 820N,
die jeweilige Zeitintervallwerte 825a, 825b, 825c ... 825N speichern,
Komparatoren 830a, 830b, 830c ... 830N zum
Vergleichen der jeweiligen Zeitintervallwerte 825a, 825b, 825c ... 825N mit
dem Differenzwert 805 und eine Steuerung 850.
Jeder der Komparatoren 830a, 830b, 830c ... 830N erzeugt
ein jeweiliges Statussignal 840a, 840b, 840c ... 840N zu
der Steuerung 850. Jedes der Statussignale 840a, 840b, 840c ... 840N gibt
den Zustand der aktuellen Zeit 70 relativ zu einer jeweiligen
inhärenten
Auslösezeit
an, wobei jede inhärente
Auslösezeit
die gespeicherte Auslösezeit 815 bei
einem jeweiligen Vielfachen des Zeitintervalls zwischen aufeinanderfolgenden
Taktpulsen darstellt, wobei das Vielfache zwischen Null und der Anzahl
von Taktpulsen in einem Rechenintervall (d. h. dem Multipliziererwert)
liegt.
-
Beispielsweise
kann sich jedes Statussignal 840a, 840b, 840c ... 840N entweder
in einem ersten Zustand befinden, wenn die aktuelle Zeit 70 die
jeweilige inhärente
Auslösezeit überschreitet,
oder einem zweiten Zustand, wenn die aktuelle Zeit 70 die jeweilige
inhärente
Auslösezeit
nicht überschreitet. Basierend
auf der Anzahl von Statussignalen 840a, 840b, 840c ... 840N in
dem ersten Zustand bestimmt die Steuerung 850 den aktuellen
Taktzustand des Taktsignals in einem aktuellen Rechenintervall.
Die Steuerung 850 erzeugt das Auslösesignal 860 bei dem
Taktpuls entsprechend dem bestimmten Taktzustand in einem nachfolgenden
Rechenintervall.
-
Bei
einem Ausführungsbeispiel
vergleicht jeder Komparator 830a, 830b, 830c ... 830N den
jeweiligen Zeitintervallwert 825a, 825b, 825c ... 825N mit dem
Differenzwert 805, um zu bestimmen, ob der Differenzwert 805 kleiner
oder gleich dem jeweiligen Zeitintervallwert 825a, 825b, 825c ... 825N ist.
Falls der Differenzwert 805 kleiner oder gleich zumindest einem
der Zeitintervallwerte 825a, 825b, 825c ... 825N ist,
erzeugt die Steuerung 850 das Auslösesignal 860 in dem
nächsten
Rechenintervall bei einem Taktpuls, der aus der Anzahl von Statussignalen 840a, 840b, 840c ... 840N bestimmt ist,
die angeben, dass der Differenzwert 805 kleiner als der
jeweilige Zeitintervallwert 825a, 825b, 825c ... 825N ist.
-
Falls
es beispielsweise vier Taktpulse in einem Rechenintervall gibt und
jeder Taktpuls 10 ns beträgt,
beträgt
der erste Zeitintervallwert 825a null, beträgt der zweite
Zeitintervallwert 825b zehn, beträgt der dritte Zeitintervallwert 825c zwanzig
und beträgt
der vierte Zeitintervallwert 825N dreißig. Falls die Auslösezeit 815 auf
62 ns gesetzt ist und die aktuelle Zeit 80 ns beträgt, ist
der Differenzwert 805 18 ns und würde der erste Komparator 830a ein
Statussignal 840a ausgeben, das angibt, dass der Differenzwert 805 größer null
ist, würde
der zweite Komparator 830b ein Statussignal 840b ausgeben,
das angibt, dass der Differenzwert größer zehn ist, würde der
dritte Komparator 830c ein Statussignal 840c ausgeben,
das angibt, dass der Differenzwert kleiner als zwanzig ist, und
würde der
vierte Komparator 830N ein Statussignal 840N ausgeben,
das angibt, dass der Differenzwert kleiner als dreißig ist.
-
Wenn
zwei der Komparatoren (die Komparatoren 830c und 830N)
Statussignale 840c und 840N erzeugen, die angeben,
dass der Differenzwert 805 kleiner oder gleich den jeweiligen
Zeitintervallwerten 825c und 825N ist, bestimmt
die Steuerung 850, dass das Auslösesignal 860 sich
in der zweiten Phase des Rechenintervalls befinden sollte. Die Steuerung 850 erzeugt
dann das Auslösesignal 860 in
der zweiten Phase des nächsten
Rechenintervalls. Falls alle vier Komparatoren 830a, 830b, 830c ... 830N Statussignale 840a, 840b, 840c ... 840N erzeugten, die
angeben, dass der Differenzwert kleiner oder gleich den jeweiligen
Zeitintervallwerten 825a, 825b, 825c ... 825N ist,
würde die
Steuerung 850 als ein anderes Beispiel bestimmen, dass
sich das Auslösesignal 860 in
der ersten Phase des Rechenintervalls befinden sollte. Falls lediglich
ein Komparator 830N ein Statussignal 840N erzeugte,
das angibt, dass der Differenzwert kleiner oder gleich dem jeweiligen
Zeitintervallwert 825N ist, wür de die Steuerung 850 als
ein weiteres Beispiel bestimmen, dass sich das Auslösesignal 860 in
der vierten Phase des Rechenintervalls befinden sollte.
-
In 8B umfasst
der Zeitakkumulator 10 ferner ein Register 810,
das die ursprüngliche
Auslösezeit 815 speichert,
Register 870a, 870b ... 870N, die jeweilige
Auslösezeitintervallwerte 875a, 875b ... 875N speichern,
die jeweils die ursprüngliche
Auslösezeit 815 darstellen,
die zu einem Vielfachen des Zeitintervalls zwischen aufeinanderfolgenden
Taktpulsen addiert ist, wobei das Vielfache zwischen 0 und dem Multipliziererwert
(N-1) liegt, Komparatoren 830a, 830, 830c ... 830N zum
Vergleichen der jeweiligen Auslösezeitintervallwerte 815, 875a, 875b ... 875N mit
der aktuellen Zeit 70 und die Steuerung 850. Wie
bei 8A erzeugt jeder der Komparatoren 830a, 830, 830c ... 830N ein
jeweiliges Statussignal 840a, 840, 840c ... 840N zu
der Steuerung 850, das den Zustand der aktuellen Zeit 70 relativ
zu den Auslösezeitintervallwerten 815, 875a, 875b ... 875N angibt.
-
Bei
einem Ausführungsbeispiel
vergleicht beispielsweise jeder Komparator 830a, 830, 830c ... 830N den
jeweiligen Auslösezeitintervallwert 815, 875a, 875b ... 875N mit
der aktuellen Zeit 70, um zu bestimmen, ob die aktuelle
Zeit 70 größer oder
gleich (erreicht oder vorbei) dem jeweiligen Auslösezeitintervallwert 815, 875a, 875b ... 875N ist.
Falls die aktuelle Zeit 70 größer oder gleich zumindest einem
der Auslösezeitintervallwerte 875a, 875b ... 875N ist,
erzeugt die Steuerung 850 das Auslösesignal 860 in dem
nächsten
Rechenintervall bei einem Taktpuls, der aus der Anzahl von Statussignalen 840a, 840, 840c ... 840N bestimmt
ist, die angeben, dass die aktuelle Zeit 70 kleiner als
der jeweilige Auslösezeitintervallwert 815, 875a, 875b ... 875N ist.
-
9 stellt
einen exemplarischen Prozess 900 zum Erzeugen eines Auslösers unter
Verwendung eines einstellbaren Zeitakkumulators gemäß Ausführungsbeispielen
der vorliegenden Erfindung dar. Der Prozess 900 beginnt
bei einem Block 910, bei dem eine Anzahl (N) von Zeitintervallwerten
entsprechend der Anzahl von Taktzuständen eines Rechenintervalls
geliefert wird. Jeder Zeitintervallwert ist ein Vielfaches eines
Zeitintervalls zwischen aufeinanderfolgenden Taktpulsen, wobei das
Vielfache zwischen null und der Anzahl von Taktpulsen in dem Rechenintervall
(d. h. dem Multipliziererwert) liegt. Der Prozess geht bei Blöcken 920 und 930 weiter,
bei denen eine Auslösezeit
geliefert wird und die Auslösezeit
entsprechend jedem Zeitintervallwert bestimmt wird. Bei einem Ausführungsbeispiel
ist beispielsweise die Auslösezeit,
die jedem Zeitintervallwert entspricht, durch den Zeitintervallwert
selbst dargestellt. Bei einem anderen Ausführungsbeispiel ist die Auslösezeit,
die jedem Zeitintervallwert entspricht, die Auslösezeit, die zu dem jeweiligen
Zeitintervallwert hinzugefügt
wird.
-
Der
Prozess geht bei einem Block 940 weiter, bei dem die aktuelle
Zeit während
eines aktuellen Rechenintervalls empfangen wird. Bei einem Block 950 wird
die aktuelle Zeit mit der Auslösezeit
verglichen, die jedem Zeitintervallwert entspricht. Bei einem Ausführungsbeispiel
wird zum Beispiel die Differenz zwischen der Auslösezeit und
der aktuellen Zeit bestimmt und wird diese Differenz mit den Zeitintervallwerten
selbst verglichen. Bei einem anderen Ausführungsbeispiel wird die aktuelle
Zeit mit der Auslösezeit
verglichen, die zu jedem Zeitintervallwert addiert wird.
-
Bei
einem Block 960 wird eine Entscheidung getroffen, ob die
aktuelle Zeit größer als
die Auslösezeit
ist, die einem oder mehreren der Zeitintervallwerte entspricht.
Falls nicht, wiederholt sich der Prozess bei dem Block 940,
um einen neunen Zeitwert zu empfangen. Falls dem so ist, geht der
Prozess bei einem Block 970 weiter, bei dem der aktuelle
Taktzustand des Taktsignals in dem aktuellen Rechenintervall basierend
auf der Anzahl von Auslösezeiten
bestimmt wird, die Zeitintervallwerten entsprechen, die größer als
die aktuelle Zeit sind. Der Prozess geht dann bei einem Block 980 weiter,
bei dem ein Auslösesignal
in dem nächsten Rechenintervall
bei dem Taktpuls erzeugt wird, der dem bestimmten Taktzustand entspricht.
-
Wie
Fachleute auf dem Gebiet erkennen, können die innovativen Konzepte,
die in der vorliegenden Anmeldung beschrieben sind, über einen breiten
Bereich von Anwendungen modifiziert und variiert werden. Folglich
sollte der Schutzbereich des Gegenstands des Patents nicht auf irgendeine
der spezifischen, exemplarischen, erörterten Lehren begrenzt sein,
sondern ist anstelle dessen durch die folgenden Ansprüche definiert.