-
Die vorliegende Erfindung betrifft einen Zeitgenerator als Taktgeber für eine elektronische Schaltung, wobei der Zeitgenerator eingerichtet und ausgebildet ist, um einen Zeitstempel zu erzeugen. Die Erfindung betrifft auch ein Verfahren zum Erzeugen eines Zeitstempels für eine elektronische Schaltung.
-
Elektronische Schaltungen benötigen in der Regel einen Taktgeber oder Zeitgenerator, der hochpräzise Taktsignale oder Zeitsignale liefert, um einzelne Bausteine in den elektronischen Schaltungen zu synchronisieren. Beispielsweise werden bei Sensorschaltungen oder Abstandsmessungen, wie sie in Kraftfahrzeugen verwendet und im Automobilbereich eingesetzt werden, Laufzeiten von Signalen ermittelt, um daraus Abstände von Gegenständen zu ermitteln oder die Umgebung eines Fahrzeugs zu detektieren. Hierbei ist es wichtig, dass die Zeitmessung sehr exakt vorgenommen wird.
-
Um einen präzisen Zeitcode oder Takt zur Verfügung zu stellen, werden häufig synchron arbeitende elektronische Schaltungen verwendet, die mit hohen Taktfrequenzen arbeiten. In der Regel sind solche Schaltungen teuer, störungsanfällig und wenig robust. Auch ist deren Eignung für den Einsatz im Automobilbereich oftmals nicht gegeben, obwohl die hohen Taktfrequenzen eine gute Auflösung bei einer Abstandsmessung ermöglichen würden.
-
Im Stand der Technik sind Zeitgeneratoren bekannt, die einen Ringoszillator aufweisen. Die
US 2019 / 0 052 280 A1 ist beispielsweise auf einen Zeitgenerator gerichtet, der einen Ringoszillator mit einer ungeraden Anzahl von Verzögerungsgliedern mit je einem Verzögerungsausgang aufweist. Die Verzögerungsausgänge werden einer „Clock Signal Processing“ zugeführt. Die
US 2021/ 0 044 299 A1 und
US 2022/ 0 345 147 A1 sind jeweils auf einen Ringoszillator zur Steuerung eines Zählers gerichtet. Der Zähler weist dabei eine Grob- und Feinauflösung auf.
-
Alternativ können Zeitgeneratoren verwendet werden, die auf dem klassischen Vernier-Schema arbeiten, das eine Zeit-zu-Digital-Konvertierung mit hoher Auflösung erlaubt. Allerdings ist die Skalierung eines solchen Zeitgenerators auf viele Kanäle nur begrenzt möglich, sodass für hochauflösende Systeme mit vielen parallelen Kanälen eine Vielzahl von Zeitgeneratoren nötig ist, was den Flächenbedarf und Stromverbrauch deutlich erhöht. Aus diesem Grund ist ein Einsatz im Automobilbereich nicht vorgesehen, insbesondere dann nicht, wenn auf den Abstandsmessungen und den Erkennungen der Umgebung ein autonomes oder teilautonomes Fahren verwirklicht werden soll.
-
Es besteht somit ein hoher Bedarf an einem Zeitgenerator, der mit einer recht langsamen Technologie und geringen Taktfrequenzen von kleiner 300 MHz Zeitsignale im einstelligen Nanosekundenbereich und im Pikosekundenbereich zur Verfügung stellen kann. Dabei soll das erzeugte Zeitsignal einen geringen Fehler aufweisen und robust sein.
-
Gelöst wird die vorliegende Aufgabe durch einen Zeitgenerator mit den Merkmalen des Anspruchs 1 sowie durch ein Verfahren zum Erzeugen eines Zeitstempels als Zeitgeber für eine elektronische Schaltung mit den Merkmalen des Anspruchs 20.
-
Bevorzugte Ausgestaltungen der Erfindung werden in den abhängigen Ansprüchen beschrieben. Es versteht sich, dass die vorstehend genannten und die nachstehend noch zu erläuternden Merkmale nicht nur in der jeweils angegebenen Kombination, sondern auch in anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne den Rahmen der vorliegenden Erfindung zu verlassen. Insbesondere kann das Verfahren entsprechend den für die Vorrichtung in den abhängigen Ansprüchen beschriebenen Ausgestaltungen ausgeführt sein.
-
Gemäß einem ersten Aspekt betrifft die vorliegende Erfindung einen Zeitgenerator als Zeitgeber für eine elektronische Schaltung. Der Zeitgenerator ist dazu eingerichtet und ausgebildet, einen Zeitstempel zu erzeugen. Der Zeitstempel umfasst einen Grobcode und mehrere Feincodes. Der Grobcode wird auch Grobanteil und der Feincode Feinanteil genannt.
-
Erfindungsgemäß umfasst der Zeitgenerator einen Ringoszillator mit einer ungeraden Anzahl n von Verzögerungselementen oder Verzögerungsgliedern, die je einen Verzögerungsausgang aufweisen. An dem Verzögerungsausgang der Verzögerungselemente liegt ein Taktsignal an. Jedes der Verzögerungselemente wird von dem Ringoszillator auf eine vorgegebene Verzögerungszeit geregelt.
-
Der Zeitgenerator umfasst einen Taktteiler, der an einem Verzögerungsausgang des Ringoszillators angeordnet ist und mit diesem derart verbunden ist, dass jeder Verzögerungsausgang mit einem Taktteiler verbunden ist. Der oder die Taktteiler haben einen Taktteilerausgang, an dem ein Taktteilerausgangssignal ausgegeben wird. Die Taktteilerausgangssignale bilden die Feincodes des Zeitstempels, der von dem Zeitgenerator erzeugt wird.
-
Der Zeitgenerator umfasst weiter eine Startschaltung, um ein Initialisierungssignal zu erzeugen. Das Initialisierungssignal wird den Taktteilern übermittelt, um die Taktteiler zu triggern. Durch das Triggern wird der Taktteilerausgang in einen definierten Zustand gebracht und gehalten. Damit ist etwa ein asynchroner Reset für die Taktteiler möglich, wie er in manchen technischen Anwendungen gebraucht wird.
-
Der Zeitgenerator umfasst einen Taktgenerator, der mit einem Verzögerungsausgang des Ringoszillators verbunden ist und das Taktsignal, das an dem einen Verzögerungsausgang anliegt, derart empfängt und weiterverarbeitet, um daraus den Grobcode des Zeitstempels zu erzeugen.
-
Ein Ausgang des Zeitgenerators dient dazu, den in dem Zeitgenerator erzeugten Zeitstempel auszugeben. Der Zeitstempel liegt also am Ausgang des Zeitgenerators an und umfasst den Grobcode und den oder die Feincodes. Der Zeitstempel steht so anderen Schaltungen oder Bausteinen auf einer Platine oder elektronischen Schaltung zur Verfügung.
-
Der Zeitstempel wird aus den Feincodes und dem Grobcode generiert und umfasst somit die erzeugten Feincodes und den erzeugten Grobcode. Der Zeitstempel kann beispielsweise durch Zusammenführen der Feincodes, also der Taktteilerausgangssignale, und des im dem Taktgenerator erzeugten Grobcodes, also dem Ausgangssignal des Taktgenerators, erzeugt werden. Dies kann beispielsweise vor dem Ausgang erfolgen oder direkt vor dem Ausgang oder auch im Ausgang selbst.
-
Die in dem Taktteiler erzeugten Taktteilerausgangssignale sind so gestaltet, dass die Taktteilerausgangssignale zweier Taktteiler um eine Zeitdifferenz gegeneinander verschoben sind. Die Zeitdifferenz kann vorzugsweise einem Wert entsprechen, der sich aus dem Systemtakt geteilt durch das Doppelte der Anzahl der Verzögerungselemente im Ringoszillator ergibt. Die Zeitdifferenz zwischen zwei Taktteilerausgängen, also die Zeitdifferenz der Feincodes, ist abhängig von der Anzahl n der Verzögerungselemente im Ringoszillator sowie von der Verzögerungszeit der Verzögerungselemente.
-
Der Zeitstempel und der darin enthaltene Grobcode und die Feincodes sind derart ausgestaltet, dass der Grobcode und die Feincodes redundante Informationen aufweisen. Die Informationen sind derart redundant, dass eine zeitliche Verschiebung der Feincodes gegenüber einem Grobcode um höchstens (n-1)/2 Zeitdifferenzen stets zu einem korrekten Zeitstempel führt. Der Zeitcode, eine Zusammensetzung von Grobcode und Feincode, mit i Zuständen des Fein-codes und j Zuständen des Grobcodes wird durch einen geeigneten Decoder auf i * j / 2 Zeitstempel abgebildet. Die Zustände von Grob- und Feincode zusammen enthalten somit mehr Information als der decodierte Zeitstempel. Ein Teil der in den Zuständen des Feincodes enthaltenen Information ist ebenfalls in den Zuständen des Grobcodes enthalten. Diese Redundanz von Informationen wird genutzt, um jedem Zustand des Zeitstempels einen eindeutigen Zustand des Feincodes und zwei alternative eindeutige Zustände des Grobcodes zuzuordnen. Ein Phasenversatz zwischen Grob- und Feincode kann durch die redundanten Informationen so detektiert und korrigiert werden. Die im Zeitcode umfasste Information kann beispielsweise einen Zeitpunkt definieren, bevorzugt einen Zeitpunkt Tn relativ zu einem Zeitpunkt T0. In einem Lidarsystem kann beispielsweise T0 der Zeitpunkt des Aussendens eines Lichtimpulses sein und Tn der Zeitpunkt des Empfangens des reflektierten Lichtimpulses.
-
Die vorliegende Erfindung weist den Vorteil auf, dass mit dem Zeitgenerator ein Zeitstempel generiert wird, der auch für Schaltungen mit einem asynchronen Latching geeignet ist und der somit für digitale Schaltungen eingesetzt werden kann, die ein Zwischenspeichern von Codes erfordern. Der erzeugte Zeitstempel ist eindeutig und lässt sich auch in Schaltungen verwenden, bei denen der Zeitstempel nicht nur in einer Einheit, beispielsweise einem Chip oder einem ASIC, verwendet wird. Bei derart räumlich nah beieinanderliegenden Verarbeitungselementen, wie beispielsweise innerhalb eines Chips oder innerhalb eines ASICs, können auftretende Zeitverzögerungen zwischen Grobcode und Feincode fehlerfrei verarbeitet werden. Der mit dem erfindungsgemäßen Zeitgenerator erzeugte Zeitstempel eignet sich aber auch noch dann, wenn der Zeitstempel über weite Strecken innerhalb eines integrierten Schaltkreises verteilt werden muss, wie es beispielsweise bei Mehrkanal- oder Vielkanal-Zeit-zu-Digitalkonvertern (Time-to-Digital Converter) mit hoher Zeitauflösung gefordert ist. Bei derartigen Schaltungen wird ein für alle Kanäle des Time-to-Digital Converters gemeinsam genutzter Zeitstempel verwendet. Derartige Schaltungen ermöglichen auch einen asynchronen Betrieb und können deshalb mit Technologien verwendet werden, die geringe Taktfrequenzen von kleiner 500 MHz, bevorzugt kleiner 300 MHz, besonders bevorzugt kleiner 250 MHz aufweisen. Dennoch ist eine schnelle Verarbeitung von vielen gleichzeitigen oder sehr schnell hintereinander eintretenden optischen Ereignissen möglich. Die optischen Ereignisse können dabei mit einer Frequenz von 1 GHz und mehr verarbeitet werden, obwohl die Schaltungstechnologie und der verwendete Systemtakt im Bereich von wenigen 100 MHz, beispielsweise von höchstens 200 MHz, liegt.
-
Elektronische Schaltungen mit Vielkanal-Zeit-zu-Digitalkonvertern mit hoher Zeitauflösung, bei denen ein für alle Kanäle gemeinsamer Zeitstempel verwendet wird, stellen eine sehr effiziente Architektur dar. Gleichzeitig erfordert dies aber hohe Anforderungen an die Phasenlage zwischen dem Grobcode und dem Feincode des Zeitstempels. Diese Anforderungen werden durch den erfindungsgemäßen Zeitgenerator durch redundante Informationen im Feincode (Feinanteil) ermöglicht, sodass die effiziente Architektur auch bei hohen Zeitauflösungen praktisch umsetzbar ist. Eine weitere Anforderung, wonach sich von einem Zeitstempel zum darauffolgenden Zeitstempel lediglich 1 Bit im Code (Binärcode) des Zeitstempels ändert, wird zwar nicht notwendigerweise erfüllt. Dennoch erlaubt der zusammengesetzte Zeitstempel durch die redundante Information das asynchrone Abtasten des Zeitstempels mit maximal einem Zeitschritt-Fehler. Somit lässt sich der Zeitstempel auch in asynchronen Schaltungen verwenden.
-
Wesentlich bei der Lösung ist dabei der Ringoszillator, der eine ungerade Anzahl von n phasenverschobenen Taktsignalen erzeugt. Jedes dieser Signale wird durch einen Taktteiler oder Frequenzteiler auf bevorzugt die Hälfte der Frequenz reduziert, um so n phasenverschobene Taktteilerausgangssignale (Feincode) zu erzeugen. Diese Signale stellen den Feinanteil des Zeitstempels dar. Ein Signal aus dem Ringoszillator wird also verwendet, um einen digitalen Zähler, der bevorzugt verwendet wird, um den Grobcode (Grobanteil) des Zeitstempels zu takten, zu steuern und zu triggern. Somit läuft der Feincode mit der doppelten Periode im Vergleich zum klassischen Vernier-Schema. Der Feincode enthält dabei Informationen des niedrigwertigsten Bits des Grobcodes, was den redundanten Anteil zur Korrektur eines Phasenversatzes darstellt. Mit einer optionalen Decodierschaltung können somit jeweils zwei mögliche Werte eines Grobcodes in Verbindung mit einem eindeutigen Wert eines Feincodes zu einem entsprechend decodierten Wert führen. Somit kann ein Phasenversatz toleriert werden, der beispielsweise bis zu einer Größe von einer Periode akzeptiert werden kann.
-
Eine bevorzugte Ausführungsform des erfindungsgemäßen Zeitgenerators sieht vor, dass der Taktgenerator einen Synchronbaustein, einen Clock-Gate-Baustein, einen Zähler und einen Gray-Code-Generator umfasst. Vorzugsweise ist der Synchronbaustein mit einem der Verzögerungsausgangssignale verbunden.
-
Bevorzugt werden in dem Gray-Code-Generator 2m (2 hoch m) Gray-Codes erzeugt, wobei m eine natürliche Zahl ist. In einer besonders bevorzugten Ausführungsform erzeugt der Gray-Code-Generator 2(n-1) (2 hoch (n-1)) Gray-Codes. In dem Falle, dass der Ringoszillator beispielsweise sieben Verzögerungsglieder oder Verzögerungselemente umfasst, erzeugt der Gray-Code-Generator vorzugsweise 26, also 64 Gray-Codes.
-
Vorzugsweise ist der Zähler in dem Taktgenerator, der auch Gray-Code-Zähler genannt wird, vor dem Gray-Code-Generator angeordnet. Der Zähler ist ein getakteter digitaler Zähler. Mit jedem Takt schaltet er zum nächsten Zustand. Vorzugsweise ist der Zähler ein Standarddigitalzähler, sodass die Schaltzeit an die verwendete Technologie der Standarddigitalschaltung gebunden ist. Bei Verwendung von beispielsweise einer 350 nm-Technologie kann der Zähler mit maximal 200 MHz schalten. Dies entspricht einer Schrittweite von 5 ns für den Zeitstempel. Um eine höhere Auflösung zu erhalten, kann man den Takt für den Gray-Code-Zähler aus dem Ringoszillator erzeugen, was vorzugsweise geschieht, da der Taktgenerator mit einem der Verzögerungsausgänge des Ringoszillators verbunden ist und mit dem Taktsignal des Ringoszillators gespeist wird. Der Ringoszillator hat dabei bevorzugt die nützliche Eigenschaft, dass er bei n Verzögerungselementen n phasenverschobene Takte generiert. Der Phasenversatz der Takte entspricht der Periode p geteilt durch die Anzahl der Verzögerungselemente n, also p/n. Im vorliegenden Fall ergibt sich somit bei einer 350 nm-Technologie und einem Systemtakt von 200 MHz entsprechend 5 ns Schrittweite geteilt durch 7 Elemente eine Schrittweite von 715 Pikosekunden. Diese Schrittweite entspricht der Zeitdifferenz zwischen zwei Verzögerungselementen des Ringoszillators.
-
Da der Gray-Code-Generator bevorzugt 2(n-1) Gray-Codes erzeugt, weist der Zeitstempel folglich einen (n-1)-Bit-Grobcode und einen n-Bit-Feincode auf, die über den gesamten integrierten Baustein verteilt werden können bzw. über die gesamte sich anschließende Schaltung, beispielsweise zur direkten Laufzeitmessung in Lidar-Systemen. Beispielsweise können die Zeitstempel, die 2(n-1) Bit umfassen, verwendet werden für das Generieren einer Adresse für einen Speicher oder Latch-Baustein, wie er beispielsweise bei einer asynchronen SRAM-Kontrollschaltung zur Erfassung von Laufzeiten eines Lidar-Systems verwendet werden kann.
-
Eine bevorzugte Ausführungsform sieht vor, dass der Grobcode einen Gray-Code umfasst, der mittels des Gray-Code-Generators erzeugt wird.
-
Vorzugsweise ist der Zeitgenerator derart ausgebildet, dass die Periode des Feincodes der halben Taktlänge eines Gray-Codes entspricht. Ein Feincode hat also beispielsweise den Zustand 0 über die Taktlänge eines Gray-Codes und schaltet bei Änderung des Gray-Codes in den Zustand 1, wobei der Zustand 1 für die Dauer des zweiten Gray-Codes beibehalten wird. Der Gray-Code ändert seinen Zustand also, nachdem der Feincode die Hälfte seiner 2*n Zustände durchlaufen hat.
-
In einer bevorzugten Ausführungsform des Zeitgenerators wird der Clock-Gate-Baustein des Taktgenerators mittels eines Schaltsignals initiiert, also gestartet. Bevorzugt ist das Schaltsignal ein Start-of-Measurement-Signal, das die Erzeugung einer Sequenz von Zeitstempeln generiert. Bei einer Time-of-Flight-Messung startet das Start-of-Measurement-Signal oder Schaltsignal beispielsweise also die Messung, sodass zum Zeitpunkt t0 der erste Zeitstempel generiert wird, vorzugsweise der Zeitstempel 0, also ein Zeitstempel, bei dem sowohl der Gray-Code als auch alle Feincodes den Wert 0 aufweisen. Das Schaltsignal, das den Clock-Gate-Baustein initiiert, wird also verwendet, um den Grobcode mit dem Feincode zu synchronisieren. Dies gilt bevorzugt nicht nur beim Start einer Messung. Vorzugsweise erfolgt die Synchronisierung von Grobcode und Feincode direkt beim Erhalt des Startsignals, also wenn das Startsignal am Clock-Gate-Baustein des Taktgenerators anliegt. Der Vorgang kann mehrfach initiiert werden.
-
In einer bevorzugten Ausführungsform umfasst der Clock-Gate-Baustein einen Flip-Flop-Baustein, vorzugsweise einen synchronen Flip-Flop-Baustein. Besonders bevorzugt ist der (synchrone) Flip-Flop-Baustein mit einem logischen ODER-Gatter verknüpft.
-
Eine bevorzugte Ausführungsform sieht vor, dass der Synchronbaustein des Taktgenerators einen Flip-Flop-Baustein und einen Inverterbaustein umfasst, wobei bevorzugt das Initialisierungssignal für den Taktgenerator dem Synchronbaustein zugeführt wird.
-
In einer bevorzugten Ausführungsform ist der Zeitgenerator derart ausgebildet, dass der erzeugte Zeitstempel zu jedem beliebigen Zeitpunkt abgetastet werden kann. Besonders bevorzugt wird bei der Abtastung der korrekte Zeitwert des Zeitstempels erfasst, wobei der Zeitstempel mit einem maximalen Fehler von einem Zeitschritt festgestellt werden kann. Vorzugsweise wird zur Detektion des korrekten Zeitwerts (Zeitstempel) ein geeigneter Decoder verwendet.
-
Bevorzugt ist vorgesehen, dass der Zeitstempel mit dem maximalen Fehler auch dann abgetastet werden kann, wenn der Wert von einem Grobcode oder der Wert von einem Feincode oder der Wert von beiden Codes von einem Zustand zum nächsten Zustand wechselt. Bei einem Wechsel der Zustände von Grobcode und/oder Feincode können Fehler auftreten, beispielsweise dadurch, dass einer der Codes schon gewechselt hat, der andere aber noch nicht. Auf diese Weise entsteht ein „falscher“ Binärcode, der den Wert von mehreren Bits umfassen kann, obwohl sich lediglich 1 Bit im Grobcode und/oder Feincode geändert hat. Anhand der redundanten Information im Zeitcode kann ein geeigneter Decoder dennoch aus einen zu jedem beliebigen Zeitpunkt abgetasteten Zeitstempel den korrekten Binärwert mit maximal einem Zeitschritt-Fehler zuweisen. Insbesondere dann, wenn sich ein Bit des Grobcodes und ein Bit des Fein-Codes zeitgleich ändern.
-
Eine bevorzugte Ausführungsform des Zeitgenerators sieht vor, dass der Zeitstempel mit wenigstens einem Flip-Flop abgetastet wird. Vorzugsweise erfolgt die Abtastung durch eine Mehrzahl von Flip-Flops, besonders bevorzugt von n+m Flip-Flops, wobei n die Anzahl der Verzögerungselemente und m die Anzahl von Gray-Codes des Grobcodes ist. Vorzugsweise entspricht m=n-1, sodass insgesamt 2n-1 Flip-Flops für die Abtastung verwendet werden können.
-
In einer bevorzugten Ausführungsform werden die Verzögerungselemente des Ringoszillators mit einer Steuerspannung auf die vorgegebene Verzögerungszeit geregelt. Bevorzugt werden zwei Steuerspannungen verwendet. Vorzugsweise ist dieser Referenztakt unterhalb des Systemtakts des Ringoszillators. Besonders bevorzugt ist der Referenztakt besonders präzise (Abweichung ≤ ± 1%) und wird von außen erzeugt. Beispielsweise kann zur Erzeugung der beiden Steuerspannungen oder Kontrollspannungen eine PLL-Schaltung (Phase-Locked-Loop-Schaltung) verwendet werden, sodass der Ringoszillator insgesamt auf die korrekte Frequenz eingeregelt werden kann. Beispielsweise kann der Referenztakt der Steuerspannungen 1 MHz sein mit einer Abweichung von ± 1 %.
-
Vorzugsweise umfasst die Startschaltung des Zeitgenerators einen Speicherbaustein oder einen Flip-Flop-Baustein oder eine bistabile Kippstufe. Besonders bevorzugt hat die Startschaltung zwei hintereinander geschaltete Flip-Flop-Bausteine. Ebenso bevorzugt kann die Startschaltung genau einen Speicherbaustein für jeden Taktteiler für den Feincode aufweisen.
-
In einer bevorzugten Ausführungsform wird die Startschaltung von einem Startsignal initiiert bzw. geschaltet. Die Startschaltung beginnt erst mit dem Startsignal zu arbeiten. Das Startsignal wird vorzugsweise erst dann erzeugt, wenn der Ringoszillator eine definierte Frequenz erreicht hat, mit der er arbeitet. Erst dann wird die Startschaltung durch das Startsignal aktiviert und erzeugt das Initialisierungssignal für die Taktteiler.
-
Vorzugsweise erzeugt die Startschaltung für jeden Taktteiler ein Initialisierungssignal, wobei die Initialisierungssignale eine feste Phasenlage zu dem Takt des Taktteilers aufweisen.
-
In einer bevorzugten Ausführungsform werden mehrere Initialisierungssignale, bevorzugt in einer definierten Reihenfolge, derart erzeugt, dass die Phasenbeziehung der Taktteiler immer identisch ist. Besonders bevorzugt ist die Startschaltung so ausgebildet, dass die erzeugten Initialisierungssignale so sind, dass die Phasenbeziehung der Taktteiler identisch und unabhängig davon ist, welchen Zustand der Ringoszillator zum Zeitpunkt des Startsignals für die Startschaltung aufweist. Damit lässt sich ein unabhängiges Initialisierungssignal für den Ringoszillator erzeugen.
-
In einer bevorzugten Ausführungsform ist der Taktgenerator mit der Startschaltung derart verbunden, dass das Initialisierungssignal der Startschaltung dem Taktgenerator zugeführt und in diesem weiterverarbeitet wird.
-
Eine bevorzugte Ausführungsform sieht vor, dass der Ringoszillator des Zeitgenerators wenigstens fünf Verzögerungselemente oder Verzögerungsglieder aufweist, weiter bevorzugt wenigstens 7 Verzögerungselemente, sehr bevorzugt wenigstens 11 Verzögerungselemente und ebenfalls sehr bevorzugt wenigstens 15 Verzögerungselemente. In der praktischen Anwendung hat sich für viele Fälle herausgestellt, dass ein Ringoszillator bevorzugt ist, der genau 7 Verzögerungselemente hat. Bei der Verwendung einer 350 nm-Technologie mit einem Systemtakt von 200 MHz lassen sich auf diese Weise, also mit 7 Verzögerungselementen des Ringoszillators, Zeitschritte von 715 Pikosekunden erzeugen.
-
Eine bevorzugte Ausführungsform des Zeitgenerators sieht vor, dass an jedem Verzögerungsausgang des Ringoszillators eine Last anliegt, bevorzugt genau eine Last. Besonders bevorzugt ist die an jedem Verzögerungsausgang des Ringoszillators anliegende Last konstant. Ebenso bevorzugt sind die Lasten gleich groß.
-
Im Folgenden wird ein Ausführungsbeispiel der Erfindung unter Bezugnahme auf die beigefügten Abbildungen beschrieben. Es zeigen:
- 1 eine schematische Darstellung eines erfindungsgemäßen Zeitgenerators als Zeitgeber für eine elektronische Schaltung;
- 2 eine Startschaltung des Zeitgebers aus 1;
- 3 einen Taktgenerator des Zeitgenerators aus 1;
- 4 eine Ausführungsform eines Ringoszillators des Zeitgenerators aus 1;
- 5a-c ein Zeitdiagramm von Grobcode und Feincodes eines erzeugten Zeitstempels mit unterschiedlichen Phasenverschiebungen; und
- 6 ein schematisches Ablaufdiagramm des erfindungsgemäßen Verfahrens zum Erzeugen eines Zeitstempels als Zeitgeber für eine elektronische Schaltung.
-
1 zeigt einen Zeitgenerator 10 als Zeitgeber für eine elektronische Schaltung, der einen Zeitstempel erzeugt, welcher einen Grobcode und mehrere Feincodes umfasst. Der Zeitgenerator 10 hat einen Ringoszillator 20, mehrere Taktteiler 30, eine Startschaltung 40 und einen Taktgenerator 50 sowie einen Ausgang 60, an dem der erzeugte Zeitstempel anliegt und an eine elektronische Schaltung ausgegeben wird.
-
Der Ringoszillator 20 hat eine ungerade Anzahl n von Verzögerungselementen 22, wie sie beispielsweise in 4 gezeigt sind. Die Verzögerungselemente 22 sind bevorzugt Inverter 24 oder Inverterbausteine, die in einem Ring zusammengeschaltet sind. Jedes der Verzögerungselemente 22 hat einen Verzögerungsausgang 26, an dem je ein Taktsignal 28 anliegt. Jeder der n Verzögerungsausgänge 26 des Ringoszillators 20 ist mit je einem Taktteiler 30 verbunden. Die Taktteiler 30, die mit dem Taktsignal 28 eines Verzögerungselements 22 gespeist werden, werden jeweils von einem Initialisierungssignal 46 der Startschaltung 40 gespeist und kontrolliert. Jeder Taktteiler 30 weist einen Taktteilerausgang 32 auf, an dem ein Taktteilerausgangssignal 34 ausgegeben wird. Das Taktteilerausgangssignal bildet einen Feincode 14 des Zeitstempels 12, der in dem Zeitgenerator 10 erzeugt und an seinem Ausgang 60 ausgegeben wird.
-
Mit der Schaltung des vorliegenden Zeitgenerators 10 werden also n Taktteilerausgangssignale 34 erzeugt und somit n Feincodes 14, die Teil des Zeitstempels 12 sind. Mittels des Initialisierungssignals 46 der Startschaltung 40 werden also die insgesamt n Taktteiler 30, an die das Initialisierungssignal 46 übermittelt wird, getriggert, um jeweils den Taktteilerausgang 32 des Taktteilers 30 in einen definierten Zustand zu bringen und diesen zu halten. Dies entspricht der Möglichkeit, einen asynchronen Reset durchzuführen.
-
Das Initialisierungssignal, das in der Startschaltung 40 erzeugt wird, wird nicht nur den Taktteilern 30 übermittelt, sondern auch dem Taktgenerator 50. Der Taktgenerator 50 erhält als weiteres Eingangssignal eines der Taktsignale des Ringoszillators 20. Bevorzugt wird der Taktgenerator 50 mit dem Taktsignal des zweiten Verzögerungselements 22 des Ringoszillators 20 gespeist. Da die Verzögerungselemente 22 in der Regel Inverter sind, wird an jedem ihrer Ausgänge das Signal invertiert. Durch Wahl des Verzögerungsausgangs 26 des zweiten Inverters 24 wird also ein nicht invertiertes Taktsignal zur Speisung des Taktgenerators bevorzugt verwendet. Das Taktsignal ist nicht invertiert, da es durch zweimaliges Invertieren wieder in den nicht invertierten Zustand versetzt wird.
-
Mittels des Taktgenerators 50 und der an seinen Eingängen anliegenden Signale (Taktsignal 28 und Initialisierungssignal 46 der Startschaltung 40) wird ein Grobcode 16 erzeugt, der gemeinsam mit den Feincodes 14 dem Ausgang 60 zugeführt wird und Teil des am Ausgang 60 ausgegebenen Zeitstempels 12 ist.
-
Die Startschaltung 40 wird von einem Startsignal 72 initiiert, das in einer bevorzugten Ausführungsform von einer Startsignaleinheit 70 bereitgestellt werden kann. In einer weiter bevorzugten Ausführungsform ist die Startsignaleinheit 70 nicht Teil des Zeitgenerators 10, wie hier gezeigt. Vielmehr kann das Startsignal 72 ein Eingangssignal sein, welches von außerhalb des Zeitgenerators 10 kommt. Dabei kann es sich beispielsweise um ein globales Resetsignal handeln, das für den gesamten Zeitgenerator verwendet wird und in praktischen Ausführungsformen auch an anderen Stellen auftritt und verarbeitet wird. Dieses globale Resetsignal oder Startsignal 72 dient zum Aktivieren der Startschaltung, beispielsweise wenn auf den ICs die Versorgungsspannung sauber hochgefahren ist und der Ringoszillator 20 auf die korrekte Frequenz hochgeregelt ist.
-
2 zeigt eine Prinzipschaltung der Startschaltung 40 mit der externen Startsignaleinheit 70, die das Startsignal 72 zur Verfügung stellt. Die Startschaltung 40 umfasst zwei hintereinander geschaltete Flip-Flop-Bausteine 42, wobei wenigstens einer der beiden Flip-Flops 42 auch ein Speicherbaustein sein könnte. Vorzugsweise umfasst die Startschaltung für jeden Taktteiler 30 genau einen Speicherbaustein. Am Ausgang 44 der Startschaltung 40 wird das Initialisierungssignal ausgegeben, das den Taktteilern 30 und dem Taktgenerator 50 zur Verfügung gestellt wird.
-
In einer bevorzugten Ausführungsform kann die Startschaltung auch zusätzlich mit den n Taktsignalen 28 gespeist werden. Die Startschaltung 40 erzeugt in diesem bevorzugten Fall n phasenversetzte abgeleitete Initialisierungssignale. Diese abgeleiteten Initialisierungssignale schalten in einer bestimmten Sequenz und einer korrekten Phasenlage relativ zu den Taktsignalen 28. Mit anderen Worten steht das erste Taktsignal in einer definierten Phase zum ersten Initialisierungssignal, das zweite Taktsignal in einer definierten Phase zum zweiten Initialisierungssignal usw. und das n-te Taktsignal einer definierten Phase zum n-ten Initialisierungssignal. Zwei unterschiedliche Initialisierungssignale schalten bevorzugt in einer definierten Reihenfolge. Beides zusammen garantiert, dass die Taktteiler 30 immer in der korrekten Phasenlage zueinander starten.
-
Vorzugsweise erzeugt die Startschaltung mehrere Initialisierungssignale 46, besonders bevorzugt in einer definierten Reihenfolge, sodass die Phasenbeziehung der Taktteiler 30 immer identisch ist. Ebenfalls bevorzugt sind die Initialisierungssignale 46 unabhängig davon, welchen Zustand der Ringoszillator 20 zum Zeitpunkt des Anliegens des Startsignals hat.
-
3 zeigt eine bevorzugte Ausführungsform des Taktgenerators 50, der einen Synchronbaustein 52, einen Clock-Gate-Baustein 54, einen Zähler 56 und einen Gray-Code-Generator 58 umfasst.
-
Das Taktsignal 28 des zweiten Verzögerungsausgangs 26 des Ringoszillators 20 sowie das Initialisierungssignal 46 der Startschaltung 40 werden dem Synchronbaustein zugeführt und hier weiterverarbeitet. Am Ausgang des Taktgenerators 50 liegt der Grobcode 16 an, der in dem Taktgenerator 50 in Form eines Gray-Codes 18 erzeugt wird. Der Gray-Code 18 umfasst eine Binärfolge, die im Gray-Code-Generator 58 generiert wird.
-
Vorzugsweise kann der Gray-Code-Generator 58 eine Vielzahl von Gray-Codes erzeugen, bevorzugt 2m Gray-Codes, wobei m eine natürliche Zahl ist. Bevorzugt werden im Gray-Code-Generator 58 2(n-1) Gray-Codes erzeugt. Die Gray-Codes 18 werden vom Gray-Code-Generator 58 gemeinsam mit dem Zähler 56 generiert.
-
Vorzugsweise ist die Taktlänge der Feincodes 14 gleich der Taktlänge von zwei Gray-Codes.
-
Der Clock-Gate-Baustein 54 des Taktgenerators 50 wird mittels eines Schaltsignals initiiert, das bevorzugt als Start-of-Measurement-Signal (SOM-Signal) bezeichnet wird. Das Start-of-Measurement-Signal kann in einer entsprechenden SOM-Einheit 59 erzeugt werden.
-
In 4, die eine Ausführungsform des Ringoszillators 20 zeigt, ist zu erkennen, dass die Verzögerungselemente 22 bzw. die Inverter 24 von zwei Steuerspannungen 29 geregelt werden. Diese auch als Kontrollspannungen bezeichneten Spannungen werden von einer nicht dargestellten und externen Schaltung, beispielsweise einer Phase-Locked-Loop-Schaltung, erzeugt.
-
Sobald der Ringoszillator 20 mit einer hier nicht gezeigten Versorgungsspannung beaufschlagt wird, läuft er los. Er wird dann mittels der beiden Steuerspannungen 29 auf die korrekte Frequenz eingeregelt. Der Ringoszillator 20 muss die definierte Frequenz erreicht haben, bevor die Schaltung gestartet wird. Sobald die Frequenz erreicht ist, wird das Startsignal 72 der Startsignaleinheit 70 der Startschaltung 40 übermittelt, und über die optionalen, aber bevorzugten Resetsignale werden die Taktteiler 30 aktiviert. Die Taktteiler 30 können auch Frequenzteiler sein. Ab diesem Zeitpunkt läuft der Feincode des Zeitstempels kontinuierlich durch die 2 x n Zustände der Feincodes 14 des Zeitstempels 12.
-
In einer besonders bevorzugten Ausführungsform umfasst der Ringoszillator sieben Verzögerungselemente. In diesem Fall wird ein Feincode 14 aus sieben Taktteilerausgangssignalen 34 erzeugt. Insgesamt kann der Feincode somit vierzehn Zustände annehmen, da jedes Taktteilerausgangssignal 34 den Zustand 0 oder 1 annehmen kann.
-
Zu diesem Zeitpunkt ist der Zeitgenerator 10 bereit, Zeitstempel zu erzeugen. Die einmalige „Start-up-Sequenz“ ist abgeschlossen. Über das Start-of-Measurement-Signal der SOM-Einheit 59 wird nun auf Befehl von außen eine definierte Sequenz von Zeitstempeln generiert. Start- und Endzustand sowie Reihenfolge sind dabei immer identisch. Mit dem Start-of-Measurement-Signal wird der Taktgenerator 50 für den Grobcode 16 gestartet. Da der Feincode, wie oben erwähnt, kontinuierlich durch seine 2 x n Zustände läuft, ist es die Aufgabe des Taktgenerators, teilweise auch Taktgenerator für Grobzählerschaltung genannt, den Zähler 56 in einer gewünschten Art zu schalten und zu starten. Der Gray-Code-Generator 58 ist bevorzugt so zu starten, dass ein Gray-Code von Gray(0)=0000000(binär) genau dann startet, wenn der Feincode bzw. die vorhandenen Feincodes des Zeitgenerators 10 ebenfalls binär 0 sind, also F=0000000(binär).
-
Nach dem richtigen Start des Taktgenerators 50 beginnt nun die in 5a, die das Timing-Diagramm zeigt, dargestellte Sequenz aus Grobcode und Feincode. Der Grobcode durchläuft 2(n-1) Zustände, im vorliegenden Fall also 26 = 64 Zustände. Der Feincode durchläuft mehrfach seine vierzehn möglichen Zustände. Da aufgrund der Redundanz für jeden Durchlauf der Feincode-Zustände jeweils zwei Grobcode-Zustände benötigt werden, werden insgesamt 64/2x14 = 448 eindeutige Kombinationen (Gray(0), ..., Gray(63)) erzeugt. Unterhalb der Gray-Codes 18 ist in den 5a bis 5c der jeweilige Binärcode (b0000000, ..., b1000000) in der zweiten Zeile des Timing-Diagramms gezeigt. An den „letzten“ Grobcode mit Gray(63) (dargestellt in 5a) schließt sich der „erste“ Grobcode mit Gray(0) wieder an.
-
Die 5b und 5c zeigen die Zeitstempel mit einem Phasenversatz der Feincodes von (-3) bzw. (+3) Zeitschritten gegenüber dem Grobcode. Die Timing-Diagramme in 5b und 5c zeigen, dass es zu jedem Wert S des Zeitstempels einen eindeutig definierten Feincode und zwei eindeutig definierte Grobcodes gibt. So führen beispielsweise die Kombination aus Feincode gleich 0000111 und Grobcode gleich 000001 oder gleich 000000 zu einem Wert S des Zeitstempels von S = 3. Keine andere Kombination von Feincodes und Grobcodes führt zu dem Wert S = 3 für den Zeitstempel. Somit lässt sich aus dem Zeitstempel der Feincode eindeutig bestimmen.
-
Die letzte Zeile der jeweiligen Timing-Diagramme der 5a bis 5c gibt jeweils den decodierten Wert S des Zeitstempels zu einem bestimmten Zeitpunkt an.
-
Die steigende Flanke des Start-of-Measurement-Signals führt also dazu, dass eine Sequenz von 448 Zeitstempeln generiert wird. Bei einer Time-of-Light-Messung startet das Start-of-Measurement-Signal also die Messung, sodass zum Zeitpunkt t0 der entsprechende Zeitstempel 0 generiert wird.
-
Der Zeitstempel 12 umfasst also bei sieben Invertern 24 im Ringoszillator 20 gerade 6 Bit Grobcode 16 und 7 Bit Feincode 14, die über den gesamten integrierten Baustein oder die gesamte Schaltung verteilt werden können. Die asynchrone SRAM-Kontrolle beispielsweise für Lidar-Schaltungen bekommt also genau diese 6+7 Bit Zeitstempel und generiert daraus etwa die Adresse für einen Speicher.
-
Das Start-of-Measurement-Signal, das den Taktgenerator 50 initiiert, dient also dazu, den Grobcode mit dem Feincode zu synchronisieren.
-
Der in 3 gezeigte Clock-Gate-Baustein 54 umfasst beispielsweise einen Flip-Flop-Baustein, bevorzugt einen synchronen Flip-Flop-Baustein.
-
Der erfindungsgemäße Zeitgenerator 10 hat den Vorteil, dass die Länge des Ringoszillators 20, also die Anzahl der Verzögerungselemente 22, unabhängig ist von der Länge des Gray-Codes. Der Zähler 56 im Taktgenerator kann ein ganz normaler getakteter digitaler Zähler sein. Mit jedem Takt schaltet er zum nächsten Zustand. Als Standarddigitalschaltung ist die Schaltzeit des digitalen Zählers 56 aber an die Technologie gebunden, in der er gefertigt ist. Bei einer im Automobilbau typischerweise verwendeten 350 nm-Technologie kann der digitale Zähler maximal mit 200 MHz schalten. Dies entspricht einer 5 ns-Schrittweite für den Zeitstempel. Um eine höhere Auflösung zu erhalten, wird der Zähler 56 aus dem Ringoszillator 20 gespeist, in dem das Taktsignal 28 dem Taktgenerator 50 zugeführt wird. Der Ringoszillator 20 hat die nützliche Eigenschaft, dass er bei n Verzögerungselementen 22 eine Anzahl von n phasenverschobenen Takten generiert. Der Phasenversatz der Takte entspricht der Periode p geteilt durch die Anzahl der Verzögerungselemente n, also p/n. Bei einem Ringoszillator 20 mit sieben Verzögerungselementen 22 und jeweils einem Taktteiler 30 bei 200 MHz entsprechend 5 ns Schrittweite ergibt sich folglich ein Phasenversatz von 715 Pikosekunden.
-
Betrachtet man alle sieben Ausgänge der Taktteiler 30, so ergibt sich eine eindeutige Sequenz von Zuständen, die sich alle 715 Pikosekunden ändert. Man kann also davon sprechen, dass eine „Feininterpolation“ zwischen zwei Taktflanken vorgenommen wird. Der Code oder Zeitstempel, der sich ergibt, sieht entsprechend dem vorliegenden Beispiel mit sieben Verzögerungselementen im Ringoszillator wie folgt aus:
-
Der erfindungsgemäße Zeitgenerator weist den Vorteil auf, dass der Zeitstempel 12 zu jedem beliebigen Zeitpunkt mit einem Fehler oder einer Ungenauigkeit von maximal einem Zeitschritt bzw. maximal einem Least-Significant-Bit (LSB) abgetastet werden kann. Das Least-Significant-Bit ist der Wert von einem Binärcode zum nächsten des Zeitstempels, also der kleinste codierbare Zeitschritt, den der Zeitstempel 12 haben kann.
-
Die Abtastung erfolgt im normalen Fall so, dass der Feincode seinen neuen Ausgangszustand bereits eingenommen hat, bevor der Grobcode schaltet und sich somit der Gray-Code im Grobcode ändert. In diesem Fall kann ein maximaler Fehler von 1 Bit auftreten. Das Abtasten kann auch dann erfolgen, wenn sich der Zeitstempel gerade von einem Zustand zum nächsten ändert. Das ist zum Beispiel bei einem reinen Grobcode oder Gray-Code der Fall, da sich immer nur 1 Bit ändert. Der Gray-Code wird um maximal 1 Bit verstellt. Auch bei einem reinen Feincode ändert sich immer nur 1 Bit von einem Zustand zum nächsten. Bei dem Zeitstempel 12 und seinem Binärcode, der aus Grobcode und Feincodes besteht, ist dies jedoch nicht der Fall. Wird beispielsweise ein dreistelliger Binärcode angenommen, kann sich beispielsweise die Binärfolge 011 (=3) im nächsten Schritt zur Binärfolge 100(=4) ändern. Da sich in der Praxis jedoch nie alle Bits exakt gleichzeitig ändern, kann es bei einer Abtastung des Zeitstempels im Moment des Umschaltens prinzipiell zu Fehlern kommen. Hat sich im obigen Beispiel etwa das oberste Bit etwas schneller geändert und wurde etwas früher geschaltet, so folgt zunächst aus der Bitfolge 011 (=3) die Bitfolge 111 (=7) und erst im weiteren Schritt die Bitfolge 100(=4). Kurzfristig ist der Fehler also maximal 4 Dezimalschritte (7-3=4). Nimmt man zwei Anteile des Codes, die für sich jeweils die Eigenschaft aufweisen, dass sich von einem Wert zum nächsten lediglich 1 Bit ändert, ist diese Eigenschaft für die Kombination nicht mehr erfüllt. Erst durch die verwendete erfindungsgemäße Redundanz des erfindungsgemäßen Zeitgenerators lässt sich der zusammengesetzte Zeitstempel 12 wieder zu jedem Zeitpunkt mit einem Maximalfehler von einem Zeitschritt oder einem LSB abtasten.
-
Durch die erfindungsgemäße Kombination aus Feincode und Grobcode im Zeitstempel und die Tatsache, dass die Zeitdifferenz der Feincodes 14 lediglich von der Anzahl n der Verzögerungselemente 22 des Ringoszillators und von deren Verzögerungszeit abhängt, lässt sich ein maximaler Fehler von einem Zeitschritt garantieren. Mittels der redundanten Informationen, die Grobcode 16 und die Feincodes 14 aufweisen, ist eine zeitliche Verschiebung der Feincodes gegenüber dem Grobcode bis zu maximal (n-1)/2 Zeitdifferenzen möglich und führt dennoch zu einem korrekten Zeitstempel 12. Im Fall von sieben Verzögerungselementen 22 im Ringoszillator 20 sind also Verschiebungen zwischen Feincode und Grobcode um maximal ± drei Zeitdifferenzen vertretbar, ohne dass der ausgegebene Zeitstempel 12 fehlerhaft ist. Somit ist der Zeitgenerator 10 sehr robust und in vielen Anwendungen einsetzbar.
-
In 6 ist das erfindungsgemäße Verfahren zum Erzeugen eines Zeitstempels 12 als Zeitgeber für eine elektronische Schaltung nochmals schematisch gezeigt. In einem ersten Schritt S10 erfolgt ein Erzeugen von einer ungeraden Anzahl n von Taktsignalen 28, die zeitlich zueinander verzögert sind. Bevorzugt erfolgt das Erzeugen mittels eines Ringoszillators 20 mit n Verzögerungselementen 22. In einem weiteren Schritt S12 findet das Zuführen jedes Taktsignals 28 zu einem Taktteiler 30 zum Teilen der Frequenz des Taktsignals und zum Erzeugen je eines Feincodes 14 derart statt, dass zwei Feincodes 14 um eine Zeitdifferenz zueinander verschoben sind. Ein Schritt des Erzeugens S14 eines Initialisierungssignals 46 schließt sich an. Ein weiterer Schritt des Übermittelns S16 des Initialisierungssignals 46 sieht vor, das Initialisierungssignal 46 an jeden der Taktteiler 30 zu übertragen, um ein Freigeben der Taktteiler 30 zu initiieren.
-
Ein weiterer Verfahrensschritt des Erzeugens S18 eines Grobcodes 16 aus einem der Taktsignale 28 findet statt, sobald das Start-of-Measurement-Signal der SOM-Einheit 59 gesendet wird. In einem weiteren Schritt des Erzeugens S20 eines Zeitstempels 12 wird aus dem Grobcode 16 und mehreren Feincodes 14 der Zeitstempel 12 derart generiert, dass der Grobcode 16 und die Fein-codes 14 redundante Informationen aufweisen. Die redundanten Informationen des Zeitstempels 12 sind so gestaltet, dass auch eine zeitliche Verschiebung der Feincodes 14 gegenüber dem Grobcode 16 um höchstens (n-1)/2 Zeitdifferenzen noch zu einem korrekten und fehlerfreien Zeitstempel 12 führt. n ist dabei die Anzahl der in dem Ringoszillator 20 vorgesehenen Verzögerungselemente 22.
-
Eine bevorzugte Ausführungsform des Verfahrens sieht einen optionalen Schritt S22 vor, in dem ein Initialisierungssignal 46 für jeden der Taktteiler 30 erzeugt wird und an die entsprechenden Taktteiler verteilt wird.