-
Die vorliegende Erfindung betrifft allgemein den Stromverbrauch in einem Mikrocontroller und insbesondere eine Vorrichtung und ein Verfahren für die Taktsteuerung in Operationsmodi mit einem niedrigen Stromverbrauch.
-
Ein niedriger Stromverbrauch wird zu einem immer wichtigeren Parameter für Mikrocontroller-Systeme. Der aktive Stromverbrauch in einem Mikrocontroller-System wird normalerweise durch die Schaltaktivität in dem Schaltungsaufbau bestimmt und ist proportional zu der an der digitalen Logik angelegten Taktfrequenz. Analoge Module weisen einen im wesentlichen fixen Stromverbrauch auf, der bei niedrigen Frequenzen oder in Modi mit geringem Stromverbrauch bestimmend sein kann. Getaktete Peripheriemodule in dem Mikrocontroller-System sind gewöhnlich in ungetakteten Ruhemodi mit einem extrem geringen Stromverbrauch nicht verfügbar, sodass Anwendungen getaktete Modi mit höherem Stromverbrauch verwenden müssen.
-
Herkömmliche Lösungen zur Reduktion des Stromverbrauchs in einem Mikrocontroller erfordern, dass der Takt für die CPU oder für Peripheriemodule ausgeschaltet wird, wozu gewöhnlich ein oder mehrere Ruhemodi in dem Mikrocontroller implementiert sind. Diese Lösung kann ausgeweitet werden, bis alle Takte und analogen Module ausgeschaltet wurden und nur ein Leckstrom bleibt, der gewöhnlich um mehrere Größenordnungen kleiner als der aktive Strom ist. Der Nachteil dieses herkömmlichen Ansatzes liegt darin, dass die Funktionalität des Geräts reduziert wird, weil die meisten Peripheriemodule für den Betrieb mit einem laufenden Takt ausgerichtet sind.
-
Die Druckschrift
US 6 163 851 A offenbart einen Prozessor mit einem alternativen Taktgenerator zum Erzeugen eines alternativen Taktsignals, das einer peripheren Schaltung während eines Energiesparmodus anstelle eines Systemtaktsignals zugeführt wird.
-
Aufgabe der vorliegenden Erfindung ist es, den Stromverbrauch in einem Mikrocontroller-System mit einer Mehrzahl von Peripheriemodulen weiter zu reduzieren.
-
Erfindungsgemäß wird diese Aufgabe durch ein Verfahren nach Anspruch 1 und ein Mikrocontroller-System nach Anspruch 3 gelöst. Bevorzugte Weiterbildungen sind Gegenstand der abhängigen Ansprüche.
-
Die hier angegebenen Implementierungen sorgen für eine Reduktion des Stromverbrauchs in einem Mikrocontroller-System, indem sie einen Takt in dem Mikrocontroller-System für eines oder mehrere Peripheriemodule in Reaktion auf ein internes oder externes Auslöseereignis aktivieren, sodass das eine oder die mehreren Peripheriemodule auf Ereignisse reagieren können, während sie in einem Ruhemodus mit einem geringen Stromverbrauch betrieben werden. In einigen Implementierungen geben ein oder mehrere Peripheriemodule in einem Mikrocontroller ein Taktanforderungssignal zu einem Takterzeuger in dem Mikrocontroller. In Reaktion auf das Taktanforderungssignal reaktiviert der Takterzeuger eine oder mehrere Schwingungsquellen. Der Takterzeuger nimmt die Takterzeugung nur für das eine oder die mehreren anfordernden Peripheriemodule auf, um den Stromverbrauch in dem Mikrocontroller auf ein Minimum zu reduzieren und die anderen Module in dem Mikrocontroller nicht zu stören.
-
Das hier angegebene Schema zur Reduktion des Stromverbrauchs bietet verschiedene Vorteile gegenüber herkömmlichen Techniken zur Reduktion des Stromverbrauchs. Das hier angegebene Schema zur Reduktion des Stromverbrauchs gestattet, dass Peripheriemodule in einem Mikrocontroller-System weiterhin in Ruhemodi mit extrem geringem Stromverbrauch reagieren können, wodurch Anwendungen mit einem geringeren Stromverbrauch ermöglicht werden. Das hier angegebene Schema zur Reduktion des Stromverbrauchs kann in Verbindung mit den meisten bestehenden Peripheriemodulen verwendet werden. Das hier angegebene Schema zur Reduktion des Stromverbrauchs ist mit geringen Implementierungskosten und einer geringen Komplexität verbunden.
- 1 ist ein Blockdiagramm, das ein beispielhaftes Mikrocontroller-System zum Implementieren einer Taktsteuerung in Betriebsmodi mit einem geringen Stromverbrauch zeigt.
- 2 ist ein schematisches Blockdiagramm, das die Verwendung einer asynchronen Logik in dem Mikrocontroller-System von 1 zeigt.
- 3 ist ein Blockdiagramm, das ein beispielhaftes Mikrocontroller-System mit einer darin implementierten Taktsteuerung für einen Analog-Digital-Wandlerbetrieb (ADC) mit einem geringen Stromverbrauch zeigt.
- 4 ist ein Blockdiagramm, das ein beispielhaftes Mikrocontroller-System mit einer darin implementierten Taktsteuerung für eine I2C-Adressen-Übereinstimmungserfassung mit einem geringen Stromverbrauch zeigt.
- 5 ist ein Flussdiagramm, das einen beispielhaften Taktsteuerungsprozess für eine Reduktion des Stromverbrauchs zeigt.
-
Das in dem Blockdiagramm von 1 gezeigte beispielhafte Mikrocontrollersystem 100 implementiert eine Taktsteuerung in Betriebsmodi mit einem geringen Stromverbrauch. In einigen Implementierungen kann das System 100 eine Schwingungsquelle 102, einen Takterzeuger 104, ein oder mehrere Peripheriemodule 106 (nur ein Peripheriemodul ist gezeigt), einen Event-Handler 108, eine CPU 110, ein oder mehrere Module 112 mit einem extrem geringen Stromverbrauch, einen Echtzeit-Zähler (RTC) 114 und einen oder mehrere externe Unterbrecher 116 umfassen.
-
Der Takterzeuger 104 steuert (z.B. aktiviert) die Schwingungsquelle 102, die einen Quelltakt (z.B. CLK_CPU) für die CPU 110 und Quelltakte (z.B. CLK0) für ein oder mehrere Peripheriemodule 106 erzeugt. Die Schwingungsquelle 102 kann ein beliebiger Typ von Schwingungsquelle sein, wobei es sich etwa um einen Hochgeschwindigkeits-Kristall-Oszillator, einen internen RC-Oszillator oder einen Phasenregelkreis handeln kann.
-
Der Quelltakt für die CPU 110 und die Quelltakte für die Peripheriemodule 106 können in einem Ruhemodus mit einem geringen Stromverbrauch gestoppt werden, um einen extrem niedrigen Stromverbrauch für das Mikrocontroller-System 100 vorzusehen. Während des Betriebs in dem Ruhemodus mit einem geringen Stromverbrauch gestattet der Event-Handler 108, dass die getakteten Peripheriemodule 106 auf interne und/oder externe Ereignisse reagieren, wenn die Peripherietakte gestoppt sind. In einigen Implementierungen umfasst der Event-Handler 108 einen Schaltungsaufbau, der zu jedem Peripheriemodul 106 und zu dem Takterzeuger 104 hinzugefügt werden kann, um das Erzeugen, Senden und Empfangen von Auslöseereignissen und Taktanforderungen zu unterstützen.
-
In einem Modus mit einem extrem geringen Stromverbrauch kann ein bestimmtes Peripheriemodul 106 (z.B. das Peripheriemodul 0) ein Wecksignal zu dem Event-Handler 108 senden, um anzugeben, dass das Peripheriemodul 106 einen Takt zum Betreiben einer Anwendung und/oder Ausführen einer Operation anfordert. In Reaktion auf das Wecksignal sendet der Event-Handler 108 ein Taktanforderungssignal (z.B. CLK_REQ0) zu dem Takterzeuger 104. In Reaktion auf das Taktanforderungssignal steuert oder aktiviert der Takterzeuger 104 die Schwingungsquelle 102, um einen Quelltakt zu dem Takterzeuger 104 zu geben. Der Quelltakt wird durch den Takterzeuger 104 verwendet, um einen Takt mit einer gewünschten Frequenz für das anfordernde Peripheriemodul 106 (z.B. das Peripheriemodul 0) zu erzeugen. In einigen Implementierungen umfasst der Takterzeuger einen Schaltungsaufbau (z.B. einen Verstärker, eine Taktteilungsschaltung) für einen Betrieb mit dem durch die Schwingungsquelle 102 vorgesehenen Quelltakt, um einen Takt für das anfordernde Peripheriemodul mit gewünschten Eigenschaften (z.B. einer gewünschten Frequenz) vorzusehen.
-
Das Peripheriemodul 106 kann den Takt zum Ausführen einer Operation verwenden. Wenn die Operation abgeschlossen ist, kann das Peripheriemodul 106 die CPU 110 unter Verwendung eines Interrupt-Signals (IRQ0) wecken. Weil die Schwingungsquelle 102 bereits läuft, können alle Takte in dem Mikrocontroller-System 100 schnell aktiviert werden.
-
2 ist ein schematisches Blockdiagramm, das die Verwendung einer asynchronen Logik in dem Mikrocontroller-System 100 von 1 zeigt. 2 zeigt die durch das System 100 verwendeten Taktsteuerfunktionen für eine Reduktion des Stromverbrauchs. Die Taktsteuerfunktionen können unter Verwendung von verschiedenen Konfigurationen und Schaltungseinrichtungen implementiert werden. In einigen Implementierungen können die Funktionen des Mikrocontroller-Systems 100 für die Reduktion des Stromverbrauchs konzeptuell durch die Schwingungsquelle 102, den Takterzeuger 104, das Peripheriemodul 106 und den Event-Handler 108 beschrieben werden. Die Funktionen des Event-Handlers 108 können konzeptuell durch einen Flip-Flop 118 (z.B. einen SR-Flip-Flop) oder ein ODER-Gatter 120 beschrieben werden. Die Funktionen des Takterzeugers 104 können konzeptuell durch ein Gatter 122 und ein Gatter 124 beschrieben werden.
-
In dem Ruhemodus mit einem extrem geringen Stromverbrauch kann ein internes oder externes Auslöseereignis durch das Peripheriemodul 106 und den Event-Handler 108 empfangen werden. Das Auslöseereignis erfordert, dass das Peripheriemodul 106 eine Operation ausführt. Weil das Peripheriemodul 106 ein getaktetes Peripheriemodul ist und weil sich das Mikrocontroller-System 100 in dem Ruhemodus befindet, werden die Schwingungsquelle 102 und der Takterzeuger reaktiviert, um den Takt für das Peripheriemodul 106 zu erzeugen. In herkömmlichen Systemen werden alle Quelltakte für alle Peripheriemodule und die CPU reaktiviert, auch wenn nur ein einzelnes Peripheriemodul einen Takt anfordert. Dies hat einen unnötigen Stromverbrauch zur Folge. In dem System 100 empfängt jedoch nur das anfordernde Peripheriemodul 106 einen Takt, wodurch eine Reduktion des Stromverbrauchs ermöglicht wird.
-
In einigen Implementierungen ist der Event-Handler 108 ein asynchroner Logik-Block, der in einer Hardware-Beschreibungssprache (z.B. RTL (Register Transfer Language)) beschrieben werden kann und zusammen mit einem Schaltungsaufbau für das Peripheriemodul 106 vorgesehen ist. Der Event-Handler 108 registriert, wann ein Ereignis auftritt. Diese Registrierung löst ein Taktanforderungssignal (CLK_REQ) für den Takterzeuger 104 aus, wodurch angegeben wird, dass das Peripheriemodul 106 (Peripheriemodul 0) einen Takt für seinen Betrieb anfordert. In der gezeigten beispielhaften Konfiguration wird das Ereignissignal in das ODER-Gatter 120 zusammen mit einem durch das Peripheriemodul 106 erzeugten OPERATION_GESTARTET-Signal eingegeben, um anzugeben, dass das Peripheriemodul 106 seinen Takt verwendet. Durch ein Auslöseereignis oder den Betrieb des Peripheriemoduls 106 wird der Flip-Flop 118 gesetzt. Die Ausgabe des Flip-Flops 118 ist CLK_REQ0 für das Peripheriemodul 106. CLK_REQ0 wird in ein UND-Gatter 124 zusammen mit dem Takt (CLK) aus der Schwingungsquelle 102 eingegeben. Wenn beide Signale hoch ausgegeben werden (z.B. logisch ,1'), wird CLK0 zu dem Peripheriemodul 106 gegeben. Es ist zu beachten, dass der asynchrone Logik-Block in 2 auf eine beliebige Anzahl von getakteten Peripheriemodulen erweitert werden kann.
-
Der Takterzeuger 104 wird mit einem asynchronen Logik-Block erweitert, der dem Event-Handler 108 ähnlich ist, wodurch sichergestellt wird, dass eine aktuell gewählte Schwingungsquelle 102 erneut aktiviert wird. Der Takterzeuger 104 nimmt die Takterzeugung erneut auf, aber nur für das anfordernde Peripheriemodul 106, sodass der Stromverbrauch auf ein Minimum reduziert wird und die anderen Module in dem System 100 nicht gestört werden. In der gezeigten beispielhaften Konfiguration empfängt das ODER-Gatter 122 in dem Takterzeuger 104 Taktanforderungssignale von dem Event-Handler 108 und erzeugt in Reaktion darauf ein Aktivierungssignal. Das Aktivierungssignal wird durch die Schwingungsquelle 102 empfangen und veranlasst, dass die Schwingungsquelle 102 erneut aktiviert wird und den Takt CLK erzeugt.
-
Nachdem CLK0 erneut aktiviert wurde, kann das Peripheriemodul 106 den Betrieb wieder aufnehmen. Dabei können ein oder mehrere Signale zu dem Event-Handler 108 ausgegeben und/oder unterdrückt werden, um anzugeben, dass CLK0 verwendet wird. Zum Beispiel kann ein OPERATION_GESTARTET-Signal ausgegeben werden und kann ein OPERATION_ABGESCHLOSSEN-Signal unterdrückt werden, um anzugeben, dass das Peripheriemodul 9 eine Operation gestartet hat und CLK0 verwendet. Nachdem die Operation abgeschlossen wurde, kann das Peripheriemodul 106 die CPU 110 mit einem Interrupt-Signal (IRQ) aufwecken, das alle Takte schnell aktivieren kann, weil die Schwingungsquelle bereits läuft. Wenn alternativ hierzu das Ergebnis der Operation keinen Interrupt erzeugt, kann das Peripheriemodul 106 das OPERATION-ABGESCHLOSSEN-Signal zu dem Event-Handler 108 ausgeben, der wiederum die Taktanforderung CLK_REQ0 zu dem Takterzeuger 104 unterdrückt. Der Takterzeuger 104 entfernt dann CLK0 zu dem Peripheriemodul 106 und deaktiviert die Schwingungsquelle 102, sodass das System 100 zu dem Ruhemodus mit einem geringen Stromverbrauch zurückkehrt, ohne dass die CPU 110 jemals aufgeweckt wird. Das System 100 bleibt also in dem Ruhemodus mit einem geringen Stromverbrauch, bis ein neues Auslöseereignis auftritt.
-
Das System 100 gestattet, dass eine beliebige Anzahl von Peripheriemodulen gleichzeitig Takte anfordern. Die Schwingungsquelle 102 wird aktiv, wenn wenigstens ein Peripheriemodul einen Start seines Taktes anfordert.
-
3 ist ein Blockdiagramm, das ein beispielhaftes Mikrocontroller-System 300 zeigt, das eine Taktsteuerung für einen ADC-Betrieb mit geringem Stromverbrauch implementiert.
-
Das Peripheriemodul in diesem Beispiel ist ein ADC 308, der durch ein Ereignis von dem RTC 314 ausgelöst wird, der durch einen 32-kHZ-Oszillator mit extrem niedrigem Stromverbrauch getaktet wird. Der ADC 308 überwacht einen On-Chip-Temperatursensor 304 und ist eingerichtet, um die CPU 310 zu wecken, wenn die Temperatur über einen bestimmten durch den Benutzer programmierbaren Schwellwert steigt. Weil sich die Temperatur langsam verändert, ist der RTC 314 eingerichtet, um jeweils nach einer Sekunde ein Auslöseereignis (z.B. ein Weckereignis) zu erzeugen. Der Modus mit einem geringen Stromverbrauch weist einen Stromverbrauch von 1 µA auf, wenn der RTC 314 und der 32-kHz-Oszillator laufen. In dieser beispielhaften Anwendung werden die Schwingungsquelle 302, der Takterzeuger 306 und der Event-Handler 312 wie mit Bezug auf 2 beschrieben betrieben.
-
In dieser beispielhaften Anwendung weist der ADC 308 während des Betriebs (mit dem Takterzeuger 306 und der Schwingungsquelle 302) einen Stromverbrauch von 500 µA und eine Wandlungszeit von 10 µs auf. Ohne den Event-Handler 312 und den Takterzeuger 306, die die asynchrone Logik für die Taktsteuerung vorsehen, wird der ADC 308 in einem reaktiven Ruhemodus betrieben, der einen Stromverbrauch von ungefähr 501 µA aufweist. Mit dem Event-Handler 312 und dem Takterzeuger 306, die eine asynchrone Logik für die Taktsteuerung vorsehen, kann der ADC 308 in jeder Sekunde nur für 10 µA betrieben werden, was einen durchschnittlichen Stromverbrauch von 1 µA + 500 µA * 10 µs = 1,005 µA ergibt. Der zusätzliche Stromverbrauch des ADC 308 ist also vernachlässigbar.
-
4 ist ein Blockdiagramm eines beispielhaften Mikrocontroller-Systems 400, das die Taktsteuerung für eine I2C-Adressübereinstimmungs-Erfassung mit einem niedrigen Stromverbrauch implementiert. I2C (inter-integrierte Schaltung) ist ein serieller Computerbus mit mehreren Mastern, der verwendet wird, um Peripheriemodule mit niedriger Geschwindigkeit mit einem Motherboard, einem eingebetteten System oder einem Mobiltelefon zu verbinden.
-
In dieser beispielhaften Anwendung kann ein Auslöseereignis eine Startbedingung auf einem I2C-Bus sein. Die Startbedingung geht einer beliebigen Adresse auf dem Bus voraus und gestattet, dass ein I2C-Slave-Peripheriemodul 406 ungetaktet bleibt, bis die Startbedingung auftritt. Der Event-Handler 410 kann mit einem asynchronen Schaltungsaufbau erweitert werden, um den Takt niedrig zu betreiben, während auf den Start des Peripherietakts CLK0 gewartet wird. Die Startbedingung löst den Event-Hanlder 410 aus, der eine Taktanforderung (CLK_REQ0) zu dem Takterzeuger 404 gibt. CLK0 wird aktiviert, sobald die Schwingungsquelle 402 reaktiviert wurde. Das I2C-Peripheriemodul 406 signalisiert, dass der Takt benötigt wird, bis die vollständige Adresse von dem Bus empfangen wurde. Dabei kann durch einen Startbedingungs-Detektor 412 bestimmt werden, ob die Adresse mit der Adresse des Slave-Peripheriemoduls 406 übereinstimmt. Wenn die Adresse übereinstimmt, wird die CPU 408 geweckt, während ansonsten die Taktanforderung unterdrückt oder entfernt wird und das System 400 zu dem Modus mit einem niedrigen Stromverbrauch zurückkehrt und auf die nächste Startbedingung wartet. In dieser beispielhaften Anwendung werden die Schwingungsquelle 402, der Takterzeuger 404 und der Event-Handler 412 wie oben mit Bezug auf 2 beschrieben betrieben.
-
Wie in diesen Beispielen gezeigt, ermöglicht das hier angegebene Schema zur Reduktion des Stromverbrauchs, dass ein beliebiges Peripheriemodul in einem Modus mit einem niedrigen Stromverbrauch aktiv ist, ohne dass der Stromverbrauch für den Modus mit einem niedrigen Stromverbrauch nennenswert erhöht wird oder eine komplexere Software erforderlich ist. Es können also mehr Anwendungen in Ruhemodi mit einem niedrigen Stromverbrauch betrieben werden, ohne dass dadurch der Stromverbrauch erhöht wird. Dank dieses Aufbaus kann der oben genannte asynchrone Logik-Block in bestehende Peripheriemodule und Takterzeuger integriert erden, ohne dass deren Aufbau komplexer vorgesehen werden muss oder ein andersartiger Aufbau vorgesehen werden muss. Der asynchrone Logik-Block kann mit minimalen Kosten in den meisten bestehenden Mikrocontroller-Systemen implementiert werden, sodass der hier beschriebene Aufbau vielseitig und nützlich angewendet werden kann.
-
5 ist ein Flussdiagramm, das einen beispielhaften Taktsteuerungsprozess 500 zur Reduktion des Stromverbrauchs zeigt. In einigen Implementierungen beginnt der Prozess 500, wenn ein Event-Handler eines Peripheriemoduls ein internes oder externes Auslöseereignis registriert, das mit dem Peripheriemodul assoziiert ist (502). In Reaktion auf das registrierte Auslöseereignis wird ein Taktanforderungssignal durch den Event-Handler unter Verwendung von zum Beispiel einem asynchronen Logik-Block erzeugt (504). In Reaktion auf das Taktanforderungssignal wird eine Schwingungsquelle reaktiviert (506). Ein Peripherietakt wird für das anfordernde Peripheriemodul unter Verwendung der reaktivierten Taktquelle erzeugt (508).