PatentDe  


Dokumentenidentifikation DE10336585B4 17.01.2008
Titel Echtzeit-Interruptmodul für Betriebssysteme und zeitgetriggerte Anwendungen
Anmelder Texas Instruments Deutschland GmbH, 85356 Freising, DE
Erfinder Noha, Frank, 85414 Kirchdorf, DE;
Fernandez, Noemi, Houston, Tex., US
Vertreter Prinz und Partner GbR, 80335 München
DE-Anmeldedatum 08.08.2003
DE-Aktenzeichen 10336585
Offenlegungstag 10.03.2005
Veröffentlichungstag der Patenterteilung 17.01.2008
Veröffentlichungstag im Patentblatt 17.01.2008
IPC-Hauptklasse G06F 13/24(2006.01)A, F, I, 20051017, B, H, DE

Beschreibung[de]

Die vorliegende Erfindung bezieht sich auf ein Zeitgeber-Modul zur Erzeugung von Interrupts für ein System, das einen Echtzeit-Interrupt zur Verfügung stellt.

In einem mit einem Microcontroller ausgerüsteten System, das einen Echtzeit-Interrupt (RTI) zur Verfügung stellt, können Interrupts periodisch oder basierend auf Vergleichswerten erzeugt werden, unabhängig von der Softwareschleife oder dem CPU-Zustand. Primäre Funktion des RTI ist es, eine programmierbare Taktperiode zur Verfügung zu stellen, die von der Systemtaktdomäne getrennt ist. Damit kann der RTI benutzt werden, um periodische Interrupts für ein Betriebssystem zur Verfügung zu stellen. Er kann auch zum Messen der vergangenen Zeit innerhalb einer Anwendung oder zur Messung von Zeitintervallen für das Benchmarking von Programmcode verwendet werden.

In einer Umgebung, in der eine Kommunikationssteuerung allen Knoten, die an einen Bus (z.B. TTCAM, TTP/C, Flexray) angeschlossen sind, eine globale Zeit zur Verfügung stellt, müssen zeitgetriggerte Anwendungen mit einer solchen globalen Zeit synchronisiert sein. Falls die globale Zeit jedoch aufgrund eines Bus-Problems ausfällt, sollte die Anwendung ohne große Beeinträchtigung des Betriebsablaufs weiterlaufen.

Betriebssysteme in einer solchen Umgebung erfordern verschiedene Zeitbasen mit unterschiedlichen Auflösungen, die zwischen wenigen hundert Nanosekunden und Stunden liegen. Herkömmlicherweise müssen große Zähler (> 64 Bit) verwendet werden, um den gesamten Bereich mit einem für kurze Zeitbasen benötigten Hochfrequenztakt abzudecken. Für manche Anwendungen, die in einer derartigen Umgebung laufen, beispielsweise sicherheitsrelevante Automobil-Steuerungsanwendungen, besteht eine weitere Erfordernis darin, genau zu wissen, wann bestimmte periphere Ereignisse auftreten.

In dem Buch „PC Hardware" (Hans-Peter Messmer, Addison-Wesley, 5. Auflage 1998, Seiten 693 bis 705) ist ein programmierbarer Intervalltimer (PIT) beschreiben, mit dem drei unabhängige Interrupts erzeugt werden können. Der PIT enthält drei separate Abwärts-Zähler, die unabhängig voneinander mit unterschiedlichen Taktraten angesteuert werden können

Die US 5 708 817 zeigt eine Schaltung zur Verzögerung eines Interrupt-Signals. Die Schaltung weist einen Zähler auf, der solange aufwärts zählt, bis er bei Erreichen eines in einem Register gespeicherten Vergleichswerts von einem Komparator gestoppt wird.

US 5 975 739 offenbart einen Steuerprozessor mit einem Zeitgeber-Modul mit freilaufendem Zähler. Ein Komparator gibt ein Interrupt-Signal ab, wenn der Wert des freilaufenden Zählers einen in einem Vergleichsregister gespeicherten Wert erreicht.

Aufgabe der vorliegenden Erfindung ist es, ein Zeitgeber-Modul zur Erzeugung von Interrupts zur Verfügung zu stellen, welches auf eine globale Zeit synchronisiert ist, aber bei Ausfall des globalen Zeitsignals ohne große Beeinträchtigung weiterläuft.

Insbesondere ist ein Zeitgeber-Modul nach Anspruch 1 vorgesehen. Da der freilaufende Zähler mit dem Vorskalierungszähler kaskadiert ist und die Interrupt-Erzeugungseinheiten jeweils einen konfigurierbaren Vergleichswert verwenden, können Interrupts in einem großen Bereich von Zeitbasen auch mit nur zwei Zählern mäßiger Größe, beispielsweise 32-Bit-Zählern, erzeugt werden.

Wenigstens ein Zählerblock wird wahlweise entweder von einem internen Takt, dem Echtzeit-Interrupt-Taktsignal, oder von einem externen Takt gesteuert, der beispielsweise von einer Kommunikationssteuerung, wie sie manche zeitgetriggerte Anwendungen benötigen, zur Verfügung gestellt wird. Der externe Takt wird überwacht, indem geprüft wird, ob der externe Takt innerhalb eines Zeitfensters eintrifft, welches durch eine untere Grenze, die in einem Register für einen unteren Zeitbasis-Vergleichswert gespeichert ist, und einer oberen Grenze, die in einem Register für einen oberen Zeitbasis-Vergleichswert gespeichert ist, definiert ist. Wenn der Wert des Vorskalierungszählers das vorherbestimmte Zeitfenster verläßt, bevor der externe Takt detektiert ist, so zeigt dies an, daß der externe Takt ausgefallen ist, und die Inkrementierung des freilaufenden Zählers in dem Zählerblock wird von extern auf intern umgeschaltet. Um den durch das Zurückschalten auf den internen Takt in das Betriebssystem eingebrachten Jitter zu minimieren, sollten externe und interne Takte synchronisiert sein. Die Synchronisierung zwischen den externen und internen Takten kann durch Software erfolgen.

Bei der Verwendung von zwei Zählerblöcken arbeiten beide Zählerblöcke unabhängig voneinander und können so konfiguriert werden, daß sie unterschiedliche Zeitauflösungen zur Verfügung stellen. In jedem Zählerblock ist der freilaufende Zähler mit dem Vorskalierungszähler kaskadiert. Die Interrupt-Erzeugungseinheiten verwenden jeweils einen konfigurierbaren Vergleichswert. Folglich können Interrupts in einem weiten Bereich von Zeitbasen bei unterschiedlichen Zeitauflösungen erzeugt werden, selbst wenn in jedem Zählerblock Zähler mäßiger Größe, beispielsweise 32-Bit-Zähler, verwendet werden.

In bevorzugten Ausführungsformen ist der Vorskalierungszähler ein Aufwärtszähler, der mit einem Vergleichsregister kombiniert ist. Der freilaufende Zähler ist ebenfalls ein Aufwärtszähler und wird jedes Mal inkrementiert, wenn der Vorskalierungszähler den Vergleichswert erreicht. Die Ausgestaltung mit Aufwärtszählern vereinfacht die Bestimmung der Ortszeit in großem Maße, da eine derartige Bestimmung im wesentlichen nur das Auslesen der beiden Zählerstände der kaskadierten Zähler beinhaltet und eine Softwareberechnung zur Bestimmung der Anzahl der Taktzyklen, wie es bei Abwärtszählern erforderlich wäre, vermieden wird.

Wenn zwei Zählerblöcke vorgesehen sind, können die Vergleichsregister in den Interrupt-Erzeugungseinheiten für die beiden Zählerblöcke individuell konfiguriert werden. Für Betriebssysteme, die periodische Zeitintervalle benötigen, bieten bevorzugte Ausführungsformen eine automatische Aktualisierungsmöglichkeit für den Vergleichsregisterinhalt. Bei jeder Vergleichsübereinstimmung wird ein Aktualisierungswert, der in einem Aktualisierungsvergleichsregister gespeichert ist, zu dem Vergleichswert in dem Vergleichsregister addiert. Der Wert, welcher in dem Aktualisierungsvergleichsregister gespeichert ist, bestimmt das Zeitintervall, bis der nächste Interrupt erzeugt wird.

In weiteren bevorzugten Ausführungsformen ist eine Zeitstempelfunktionalität verwirklicht, indem jedem der Zähler ein Erfassungsregister zugeordnet ist, um die jeweiligen augenblicklichen Zählerstände als Reaktion auf ein externes Ereignis festzuhalten. Da die Zähler als Aufwärtszähler ausgeführt sind, ist es einfach, die lokale Zeit aus den Zählerständen zu bestimmen, die in den Erfassungsregistern gespeichert sind.

Weitere Merkmale und Vorteile der Erfindung gehen aus der folgenden detaillierten Beschreibung mit Bezug auf die Zeichnungen hervor. In den Zeichnungen zeigt:

1 ein Schaltbild eines Zeitgeber-Moduls gemäß der Erfindung mit zwei Zählerblöcken;

2 ein Schaltbild der Zeitbasissteuereinheit des Zeitgeber-Moduls aus 1;

3 ein erstes Zeitdiagramm für den Zählerstand vom Vorskalierungszähler des Zeitgeber-Moduls aus 1 in bezug auf ein externes Taktsignal; und

4 ein zweites Zeitdiagramm für den Zählerstand vom Vorskalierungszähler des Zeitgeber-Moduls aus 1 in bezug auf ein externes Taktsignal.

In 1 ist ein Schaltbild eines dualen Zeitgeber-Moduls 110 zur Erzeugung von Interrupts für ein System mit einem Microcontroller dargestellt, das ein dediziertes Echtzeit-Interrupt-Taktsignal RTICLK verwendet. Das duale Zeitgeber-Modul 110 weist einen ersten Zählerblock CB0 und einen zweiten Zählerblock CB1 auf.

Der erste Zählerblock CB0 besitzt einen ersten Vorskalierungszähler PSC0, der von dem Echtzeit-Interrupt-Taktsignal RTICLK inkrementiert wird, welches vom System zur Verfügung gestellt wird und ein erstes Vorskalierungs-Vergleichswert-Register PCVR0 zum Speichern eines ersten konfigurierbaren Wertes PCV0. Ein erster Komparator 112 vergleicht den augenblicklichen Zählerstand des ersten Skalierungszählers PSC0 mit dem konfigurierbaren Wert PCV0. Wenn der augenblickliche Zählerstand des ersten Vorskalierungszählers PSC0 mit dem konfigurierbaren Wert PCV0 übereinstimmt, gibt der erste Komparator 112 ein erstes internes Taktsignal CLKINT0 aus und setzt den ersten Vorskalierungszähler PSC0 auf Null zurück.

Der erste Zählerblock CB0 weist weiterhin einen ersten freilaufenden Zähler FRC0 auf, der wahlweise entweder von dem ersten internen Taktsignal CLKINT0 oder von einem externen Taktsignal NTU inkrementiert werden kann. Welches dieser Signale den ersten freilaufenden Zähler FRC0 inkrementiert, ist durch einen Wahlschalter 114 bestimmt, der von einer Zeitbasis-Steuereinheit TBCU gesteuert wird, die weiter unten ausführlich beschrieben ist. Wenn der freilaufende Zähler FRC0 überläuft, wird ein Interrupt für einen vektorisierten Interruptmanager erzeugt, der in 1 nicht gezeigt ist.

Der zweite Zählerblock weist einen zweiten Vorskalierungszähler PSC1 auf, der ebenfalls von dem Echtzeit-Interrupt-Taktsignal RTICLK inkrementiert wird. In einem zweiten Vorskalierungs-Vergleichswert-Register PCVR1 ist ein zweiter konfigurierbarer Wert PCV1 gespeichert, der von einem zweiten Komparator 212 mit dem augenblicklichen Zählerstand des zweiten Vorskalierungszählers PSC1 verglichen wird. Der zweite Zählerblock CB1 weist weiterhin einen zweiten freilaufenden Zähler FRC1 auf, der von einem zweiten internen Taktsignal CLKINT1 aus dem zweiten Komparator 212 inkrementiert wird, wenn der augenblickliche Zählerstand des zweiten Vorskalierungszählers PSC1 mit dem konfigurierbaren Wert PCV1 übereinstimmt. Bei einer Übereinstimmung wird der zweite Vorskalierungszähler PSC1 auf Null zurückgesetzt.

Da der erste Vorskalierungszähler PSC0 und der zweite Vorskalierungszähler PSC1 durch Konfigurieren der Werte in dem ersten Vorskalierungs-Vergleichswert-Register PCVR0 und dem zweiten Vorskalierungs-Vergleichswert-Register PCVR1, jeweils getrennt programmierbar sind, stellen der erste Zählerblock CB0 und der zweite Zählerblock CB1 unterschiedliche unabhängige Zeitbasen für das Zeitgeber-Modul 110 zur Verfügung, obwohl sie dasselbe Echtzeit-Interrupt-Taktsignal RTICLK verwenden.

Das duale Zeitgeber-Modul 110 umfaßt weiterhin vier Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3, zur Bereitstellung von Interrupt-Signalen INT0, INT1, INT2, INT3 und Anforderungssignalen für einen Speicher-Direktzugriff DMAREQ0, DMAREQ1, DMAREQ2, DMAREQ3.

Jede dieser Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 umfaßt ein Vergleichswert-Register CVR0, CVR1, CVR2, CVR3 zum Speichern eines Vergleichswertes, und einen Komparator 120, 122, 124, 126, zum Vergleichen des Vergleichswertes aus dem jeweiligen Vergleichswert-Register mit dem augenblicklichen Zählerstand eines ausgewählten freilaufenden Zählers FRC0, FRC1. Jede der Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 umfaßt weiterhin ein Aktualisierungswert-Register UVR0, UVR1, UVR2, UVR3, zum Speichern eines Aktualisierungswertes, und einen Addierer 130, 132, 134, 136, zum Addieren des Aktualisierungswertes zu dem im jeweiligen Vergleichswert-Register CVR0, CVR1, CVR2, CVR3 gespeicherten Vergleichswert.

Um die Eingänge der Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 wahlweise mit einem der Zählerblöcke CB0, CB1 zu verbinden, weist das duale Zeitgeber-Modul 110 einen Multiplexer MUX auf, der unten ausführlich beschrieben ist.

Die Funktion der Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 wird nun anhand der ersten Interrupt-Erzeugungseinheit IGU0 erklärt.

Angenommen, daß der erste freilaufende Zähler FRC0 des ersten Zählerblocks CB0 mit der ersten Interrupt-Erzeugungseinheit IGU0 über die Wählereinheit 140 verbunden ist, vergleicht der Komparator 120 den augenblicklichen Zählerstand des ersten freilaufenden Zählers FRC0 mit dem Wert aus dem Vergleichswert-Register CVR0. Wenn der aktuelle Zählerstand mit dem Wert aus dem Vergleichswert-Register CVR0 übereinstimmt, erzeugt der Komparator 120 ein Interrupt-Signal INT0 und ein Anforderungssignal für einen Speicher-Direktzugriff DMAREQ0. Dann wird der Aktualisierungswert, der in dem Aktualisierungswert-Register UVR0 gespeichert ist, automatisch aktualisiert, indem der Addierer 130 den Wert des Aktualisierungswert-Registers UVR0 zu dem Vergleichswert im Vergleichswert-Register CVR0 addiert. Dies gestattet der Interrupt-Erzeugungseinheit IGU0 die Bereitstellung eines periodischen Interrupt-Signals INT0, ohne die Notwendigkeit, einen neuen Wert im Vergleichswert-Register CVR0 per Software zu berechnen. Die Periode des Interrupt-Signals INT0 wird einfach durch Programmierung des Aktualisierungswertes in dem Aktualisierungswert-Register UVR0 konfiguriert. Darüber hinaus kann der Interrupt INT0 aktiviert oder deaktiviert werden.

In gleicher Weise werden die anderen Interrupts INT1, INT2, INT3 und die anderen Anforderungssignale für den Speicher-Direktzugriff DMAREQ0, DMAREQ1, DMAREQ2, DMAREQ3 von den anderen Interrupt-Erzeugungseinheiten IGU1, IGU2, IGU3 erzeugt.

Die konfigurierbaren Werte PCV0 und PCV1, die in den Vergleichswert-Registern PCVR0 und PCVR1 gespeichert sind, gestatten die Programmierung der Vorskalierungszähler PSC0 und PSC1, das heißt die Programmierung eines Verhältnisses zwischen dem Interrupttaktsignal RTICLK und einem Zwischentakt, mit welchem die freilaufenden Zähler FRC0 und FRC1 inkrementiert werden. Dadurch kann das Zeitgeber-Modul einfach konfiguriert werden, beispielsweise für die Verwendung in unterschiedlichen Systemen mit unterschiedlichen Taktsignalen.

Mit dem Zeitgeber-Modul 110 kann wegen der kaskadierten Vorskalierungszähler PSC0, PSC1 und den freilaufenden Zählern FRC0, FRC1 ein sehr weiter Periodenbereich für die Interrupt-Signale INT0, INT1, INT2, INT3 erzielt werden, ohne daß die Notwendigkeit für große Zähler (zum Beispiel > 64 Bit) besteht. Mit 32-Bit-Zählern kann ein Periodenbereich von einigen Nanosekunden bis zu Stunden oder Tagen verwirklicht werden, wobei die minimale Zeitauflösung von der Frequenz des Interrupttaktsignals RTICLK abhängt, welche typischerweise bis zu 400 MHz oder mehr betragen kann. Damit kann das Taktsignal im System wählbar vom VBUS oder vom Systemtakt abgeleitet werden.

Die vier Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 gestatten es dem Zeitgeber-Modul 110, vier unabhängige Interrupt-Signale INT0, INT1, INT2, INT3 mit unterschiedlichen Perioden, die einfach konfiguriert werden können, zur Verfügung zu stellen. Selbstverständlich ist die Anzahl von vier Interrupt-Erzeugungseinheiten nur beispielhaft.

Die lokale Zeit kann dadurch bestimmt werden, daß einfach die Werte des Vorskalierungszählers PSC0, bzw. PSC1 und des freilaufenden Zählers FRC0, bzw. FRC1 ausgelesen werden. Der freilaufende Zähler muß zuerst gelesen werden. Dies gewährleistet, daß beim CPU-Lesezyklus der Wert des Vorskalierungszählers PSC0, bzw. PSC1 in einem Zählerregister gespeichert wird. Der zweite Lesevorgang wird auf dieses Vorskalierungszählerregister angewandt, welches dann den Wert vom Zählerzyklus des vorhergehenden Lesevorgangs im Register des freilaufenden Zählers FRC0, bzw. FRC1 enthält, wodurch gewährleistet ist, daß die Werte aus beiden Zählern exakt demselben Zeitpunkt entsprechen. Da sowohl der Vorskalierungszähler PSC0, bzw. PSC1 als auch der freilaufende Zähler FRC0, bzw. FRC1 Aufwärtszähler sind, ist keine Softwareberechnung erforderlich, um die augenblickliche Zeit zu erhalten, wie dies bei Verwendung von Abwärtszählers erforderlich wäre.

Der Multiplexer MUX besitzt vier Wählereinheiten 140, 142, 144, 146, welche in einer Vergleichssteuereinheit CCU gesteuert werden. Jede dieser Wählereinheiten 140, 142, 144, 146 ist mit einer der Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 verbunden und besitzt zwei Eingänge, die mit den freilaufenden Zählern FRC0, FRC1 verbunden sind. Die Wählereinheiten 140, 142, 144, 146 werden einzeln gesteuert, um den Eingang der Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 entweder mit dem ersten Zählerblock CB0 oder mit dem zweiten Zählerblock CB1 zu verbinden. Jede der Interrupt-Erzeugungseinheiten IGU0, IGU1, IGU2, IGU3 kann mit einem anderen der beiden Zählerblocks CB0 und CB1 verbunden werden, beispielsweise können die Eingänge von IGU0 und IGU3 mit FRC0 und die Eingänge von IGU1 und IGU2 mit FRC1 verbunden werden oder der Eingang von IGU0 kann mit FRC0 und die Eingänge von IGU1, IGU2 und IGU3 können mit FRC1 verbunden werden, usw.

Da jeder der beiden Zählerblocks CB0 und CB1 eine unterschiedliche Zeitbasis zur Verfügung stellen kann, gestattet der Multiplexer MUX dem dualen Zeitgeber-Modul 110 eine einfache und schnelle Konfiguration für die Bereitstellung vierer unterschiedlicher Interrupt-Signale, INT0, INT1, INT2, INT3 und Anforderungssignale für einen Speicher-Direktzugriff DMAREQ0, DMAREQ1, DMAREQ2, DMAREQ3, mit Perioden, die auf unterschiedlichen Zeitauflösungen basieren. Daher können die Perioden innerhalb desselben dualen Zeitgeber-Moduls unter Verwendung nur eines Taktsignales, d.h. RTICLK, einen großen Bereich von Nanosekunden bis Stunden überdecken.

Um die Entwicklung eines Betriebssystems zu vereinfachen und den Bedarf an CPU-Ressourcen zu verringern, wenn zeitgetriggerte Funktionalität benötigt wird, besitzt der erste Zählerblock CB0 zusätzliche Fähigkeiten. Der erste freilaufende Zähler FRC0 kann entweder von dem ersten internen Taktsignal CLKINT0 oder von einer externen Taktquelle NTU getriggert werden, die beispielsweise von einem externen Bus wie etwa TTCAN oder Flexray abgeleitet wird. Die Auswahl zur Bestimmung, welche dieser Quellen verwendet wird, wird durch Software getroffen. Um Sicherheitsanforderungen zu erfüllen, ist es jedoch notwendig, eine Rückfallösung zu bieten, falls die externe Taktquelle beispielsweise wegen eines Busfehlers ausfällt. Zu diesem Zweck ist der erste Zählerblock CB0 mit einer Zeitbasissteuereinheit TBCU versehen, die in 2 im Detail dargestellt ist.

Die Zeitbasis-Steuereinheit TBCU weist ein Register für einen unteren Zeitbasis-Vergleichswert TBCPLR und ein Register für einen oberen Zeitbasis-Vergleichswert TBCPHR auf. Die Werte TBCPL und TBCPH in diesen beiden 32-Bit-Registern definieren die obere und untere Grenze eines Zeitfensterintervalls, in welchem eine Flanke in dem externen Taktsignal NTU erwartet wird. Ein erster Zeitbasiskomparator 150 ist vorgesehen, um den augenblicklichen 32-Bit-Zählerstand des ersten Vorskalierungszählers PSC0 mit dem unteren Zeitbasisvergleichswert TBCPL zu vergleichen, und ein zweiter Zeitbasiskomparator 152 ist vorgesehen, um den Zählerstand des ersten Vorskalierungszählers PSC0 mit dem oberen Zeitbasis-Vergleichswert TBCPH zu vergleichen.

Die Zeitbasissteuereinheit TBCU weist weiterhin einen Flankendetektor EDTC auf, der das externe Taktsignal NTU auf eine ansteigende Flanke überwacht. Der Flankendetektor EDTC ist aktiviert, während der Wert des ersten Vorskalierungszählers PSC0 innerhalb der Grenzen des Zeitfensters liegt, wobei dieser Fall von dem ersten und dem zweiten Zeitbasiskomparator 150, 152 erfaßt wird.

Bezugnehmend auf 3, die ein Zeitdiagramm mit dem Zählerstand des ersten Vorskalierungszählers PSC0 und ein Zeitdiagramm für das externe Taktsignal NTU zeigt, ist nun die Funktion der Zeitbasissteuereinheit TBCU beim Umschalten von interner auf externe Zeitbasis beschrieben.

Bei t = t0 entscheidet eine Anwendung, die Triggerquelle für den ersten freilaufenden Zähler FRC0 per Software von intern auf extern zu schalten. Mit dieser Wahl wird der Multiplexer 114 von dem ersten internen Taktsignal CLKINT0, das von dem ersten Komparator 112 kommt, auf das externe Taktsignal NTU umgeschaltet, und der erste Vorskalierungszähler PSC0 wird auf Null zurückgesetzt. Nun ist der Flankendetektor EDTC aktiv während eines Anfangs-Synchronisations-Intervalls, welches eine Periode des internen Taktsignals CLKINT0 plus den Wert des oberen Zeitbasisvergleichswertes TBCPH beträgt, oder solange, bis eine Flanke in dem externen Taktsignal NTU detektiert wird. Dies dient der Synchronisation der Phase des internen und des externen Taktsignals. Nicht zu vergessen ist, daß die Periode des internen Taktsignals CLKINT0 vom Komparator 112 durch den ersten konfigurierbaren Wert PCV0 in dem ersten Vorskalierungs-Vergleichswert-Register PCVR0 definiert ist.

Da eine Flanke des externen Taktsignals NTU des Anfangs-Synchronisations-Intervalls bei t = t1 auftritt, wird der erste Vorskalierungszähler PSC0 wieder auf Null gesetzt und der freilaufende Zähler FRC0 inkrementiert. Wenn die nächste Flanke im externen Taktsignal NTU bei t = t2 auftritt, wird der erste Vorskalierungszähler PSC0 wieder auf Null gesetzt und der freilaufende Zähler FRC0 inkrementiert. Um die Perioden des internen Taktsignals CLKINT0 und des externen Taktsignals NTU zu synchronisieren, muß der erste konfigurierbare Wert PCV0 jedoch per Software angepaßt werden, um die Periode des internen Taktsignals CLKINT0 zu verändern.

Mit Bezug auf 4 wird nun die Funktion der Zeitbasis-Steuereinheit TBCU beschrieben, wenn das externe Steuersignal NTU ausfällt.

Bei t = t4 tritt eine Flanke im externen Taktsignal NTU innerhalb des Zeitfensters auf, welches durch den unteren Zeitbasisvergleichswert TBCPL und den oberen Zeitbasisvergleichswert TBCPH definiert ist, welche auf der Zeitachse als t4 TBL bzw. t4 TBL markiert sind.

Bei t = t5 TBL wird der Flankendetektor EDTC wieder aktiviert, um das externe Taktsignal NTU zu überwachen. Bei t = t5 erreicht der Zählerstand des Vorskalierungszählers PSC0 den ersten konfigurierbaren Wert PCV0, der für die Periode des internen Taktsignals CLKINT0 steht. Da der Multiplexer immer noch auf "extern" geschaltet ist, wird der erste Vorskalierungszähler PSC0 auf Null gesetzt, aber der erste freilaufende Zähler FRC0 wird nicht inkrementiert. Der Flankendetektor überwacht jedoch weiterhin das externe Taktsignal NTU bis zum Ende des Zeitfensters bei t = t5 TBH, wenn der erste Vorskalierungszähler PSC0 den oberen Zeitbasisvergleichswert TBCPH erreicht. Es ist zu beachten, daß der obere Zeitbasisvergleichswert TBCPH geringer ist als der erste konfigurierbare Wert PCV0, ansonsten wäre der erste Vorskalierungszähler PSC0 nicht in der Lage, diesen Wert jemals zu erreichen. Dies deshalb, weil zur Vermeidung von Jitter der erste Vorskalierungszähler PSC0 auf Null gesetzt wird, wenn er den ersten Vorskalierungsvergleichswert PCVR0 erreicht.

Da bis t = t5 TBH keine Flanke in dem externen Taktsignal NTU detektiert wurde, schaltet der Flankendetektor EDTC den Multiplexer 114 zur Auswahl des internen Taktsignals CLKINT0 zurück. Optional kann ein Interrupt TBINT erzeugt werden, und der erste freilaufende Zähler FRC0 kann, falls dies beispielsweise in einem Register INC so konfiguriert ist, inkrementiert werden, um den fehlenden Taktzyklus des externen Taktsignals NTU zu kompensieren.

Um eine Zeitmarkenfunktionalität zu bieten, sind die Vorskalierungszähler PSC0, PSC1 und die freilaufenden Zähler FRC0, FRC1 Erfassungsregistern PSCCR0, PSCCR1, FRCCR0, FRCCR1 zugeordnet, um die jeweiligen augenblicklichen Zählerstände als Reaktion auf ein externes Ereignis zu erfassen. Diese Erfassungsregister PSCCR0, PSCCR1, FRCCR0, FRCCR1 werden von einer Erfassungssteuereinheit CCP gesteuert.

Die Erfassungssteuereinheit CCP kann so konfiguriert werden, daß sie bei externen Ereignissen CAP0, CAP1 das Erfassen der Zählerwerte vom ersten Zählerblock CB0 oder vom zweiten Zählerblock CB1 oder von beiden auslöst. Ein Interruptmanager, der in 1 nicht gezeigt ist, erzeugt diese Erfassungsereignisse CAP0, CAP1 für die Erfassungssteuereinheit CCP, wenn ein peripheres Modul einen Interrupt erzeugt hat. Der Interruptmanager ist außerdem so konfiguriert, daß er feststellen kann, welche Peripheriegeräte Erfassungsereignisse erzeugen dürfen.

Wenn ein Auslöseereignis CAP0, beispielsweise für den ersten Zählerblock CB0, empfangen wird, läßt die Erfassungssteuereinheit CCP den Wert des Vorskalierungszählers PSC0 in dem ersten Vorskalierungszähler-Auffangregister PSCCR0 speichern und den Wert des ersten freilaufenden Zählers FRC0 in dem Erfassungsregister des ersten freilaufenden Zählers FRCCR0 speichern. Die Erfassungsregister müssen in einer bestimmten Reihenfolge gelesen werden, und zwar zuerst das Erfassungsregister des ersten freilaufenden Zählers FRCCR0 und dann das Erfassungsregister des Vorskalierungszählers PSCCR0.

Da die Zähler PSC0, FRC0, PSC1, FRC1 Aufwärtszähler sind, kann eine Zeitmarke einfach durch Kombination der Werte aus den Erfassungsregistern erhalten werden, ohne daß wie bei Abwärtszählern eine Softwareberechnung durchgeführt werden muß. Die Zeitmarkenfunktionalität, welche die Erfassungsregister bieten, kann beispielsweise zum Benchmarking bestimmter Bereiche von Programmcode benutzt werden, indem die Zählerinhalte am Beginn und am Ende des gewünschten Programmcodebereichs gelesen und die Differenz zwischen den Werten berechnet wird.


Anspruch[de]
Zeitgeber-Modul zur Erzeugung von Interrupts für ein System mit einem Microcontroller, das einen Echtzeit-Interrupt unter Verwendung eines dedizierten Echtzeit-Interrupt-Taktsignals (RTICLK) zur Verfügung stellt, mit wenigstens einem Zählerblock, der aufweist:

– einen Vorskalierungszähler (PSC0), der von dem Echtzeit-Interrupt-Taktsignal (RTICLK) inkrementiert wird,

– ein Vorskalierungs-Vergleichswert-Register (PCVR0) zum Speichern eines konfigurierbaren Wertes (PCV0),

– einen Komparator (112) zum Vergleichen des aktuellen Zählerstandes des Vorskalierungszählers (PSC0) mit dem gespeicherten konfigurierbaren Wert (PCV0),

– einen freilaufenden Zähler (FRC0), der einen mit Interrupt-Erzeugungseinheiten (IGU0, IGU1, IGU2, IGU3) verbundenen Zählerausgang aufweist

– einen Multiplexer (114), der den Inkrementiereingang des freilaufenden Zählers entweder mit dem Ausgang des Komparators (112) oder mit einem externen Taktsignal (NTU) verbindet, und

– eine Zeitbasis-Steuereinheit (TBCU) aufweist, die den Multiplexer (114) ansteuert;

wobei die Zeitbasis-Steuereinheit (TBCU):

– durch eine Anwendung per Software veranlasst wird, den Multiplexer (114) auf das externe Taktsignal (NTU) umzuschalten (4),

– bei Detektion einer Flanke des externen Taktsignals (NTU) den Vorskalierungszähler (PSC0) auf Null zurücksetzt,

– einen Ausfall des externen Taktsignals (NTU) detektiert, wenn der Zählwert des Vorskalierungszählers (PSC0) ein vorbestimmtes Zeitfenster verlässt, bevor das externe Taktsignal (NTU) detektiert wird, und

– bei einem Ausfall des externen Taktsignals (NTU) den Multiplexer (114) auf den Ausgang des Komparators (112) umschaltet.
Zeitgeber-Modul nach Anspruch 1, bei dem das Zeitfenster durch eine untere Grenze (TBCPL), die in einem Register für einen unteren Zeitbasis-Vergleichswert (TBCPLR) gespeichert ist, und eine obere Grenze (TBCPH), die in einem Register für einen oberen Zeitbasis-Vergleichswert (TBCPHR) gespeichert ist, definiert ist. Zeitgeber-Modul nach Anspruch 2, bei dem die obere Grenze (TBCPH) niedriger ist als der konfigurierbare Wert (PCV0), der in dem Vorskalierungs-Vergleichswert-Register (PCVR0) gespeichert ist.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com