Ausgleich zwischen Leistung und Energieverbrauch von MCUs durch integrierte Funktionen
Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey
2017-05-10
Seit einiger Zeit verfügen die Entwickler über MCUs mit Funktionen wie einem Low-Power-Betriebsmodus, der Abschaltung von Peripheriebausteinen und sogar des Cores selbst, die den Energieverbrauch des Systems reduzieren können. Bei manchen Anwendungen benötigen die Entwickler allerdings eine direktere Kontrolle des Energieverbrauchs, um sicherzustellen, dass bestimmte Teile des Systems weithin mit Strom versorgt werden, um die Grundfunktion aufrechtzuerhalten.
Bisher wurden für eine exakte Energiesteuerung eigenständige Energieverwaltungsbausteine eingesetzt. Dagegen bietet die MCU ADuCM3029 von Analog Devices eine integrierte Lösung, die es für Entwickler einfacher macht, eine maximale Leistung zu erzielen und dabei den Energieverbrauch zu minimieren, wenn es um die Erfassung von Sensordaten, Wearables und andere Anwendungen für das Internet der Dinge (Internet of Things, IoT) geht.
Energieverwaltung mit MCUs
Es steht ein breites Spektrum von hochentwickelten MCUs mit Energiesparoptionen zur Verfügung. Bausteine, die für stromsparende Anwendungen bestimmt sind, verfügen standardmäßig über Funktionen wie Frequenzskalierung, mit der ein Ausgleich zwischen Leistung und niedrigerem Energieverbrauch geschaffen werden kann.
Stromsparmodi bieten typischerweise eine stufenweise Energieeinsparung durch Abschaltung einer gewissen Anzahl von Subsystemen der MCU an, sodass nur der Teil der Elektronik, der zum Aufwecken der MCU erforderlich ist, in Betrieb bleibt. Eine weitere Verfeinerung der Energieverwaltung besteht darin, dass MCUs mit extrem niedrigem Energieverbrauch über spezielle Betriebsmodi verfügen, die den Kern des Bausteins und seine Peripherie getrennt mit Strom versorgen. Auch in diesen Fällen werden manchmal Peripheriebausteine von diesen speziellen Modi als Gruppe heruntergefahren, oder es werden automatisierte Verfahren angewendet, die dem Entwickler nur wenig Kontrolle über die Details der Energiezufuhr erlauben.
Die Energieverwaltung einer MCU bietet normalerweise eine ganze Reihe von Energiesparmodi, aber der Übergang in einen Energiesparmodus führt in der Regel zu einem Einbruch der Funktionalität. In vielen Fällen ist ein solcher Einbruch der Funktionalität für kurze Zeit verschmerzbar. In manchen Fällen ist aber für die Aufrechterhaltung des Betriebs eine exakte Kontrolle über den Stromverbrauch erforderlich. Der Prozessor ADuCM3029 von Analog Devices ist speziell für die Unterstützung komplexerer Anforderungen an die Energieverwaltung bei Anwendungen mit extrem geringem Energieverbrauch ausgelegt.
Der ADuCM3029 mit seinem ARM® Cortex®-M3-Core verfügt über 256 KB Flash-Speicher mit Fehlerkorrektur (ECC) und über 64 KB konfigurierbares SRAM mit mehreren Paritäts-Bits. Eine Variante, der ADuCM3027, verfügt über 128 KB Flash-Speicher und entspricht bezüglich der weiteren Features und Funktionen dem ADuCM3029.
Neben der integrierten Hardware-Krypto-Beschleunigung verfügt der Baustein über einen 8-Kanal-12-Bit-Analog-Digital-Wandler (ADC) sowie über mehrere digitale Peripheriebausteine wie I2C, UART, GPIOs, einen synchronen seriellen Anschluss (SPORT) und einen 25-Kanal-DMA-Controller. Trotz seines großen Funktionsumfangs verbraucht der Baustein typischerweise weniger als 30 μA/MHz im aktiven Modus. Mit dem ADuCM3029 kann das Gleichgewicht zwischen funktionaler Leistung und Energieverbrauch noch feiner abgestimmt werden.
Abstimmung von Energieverbrauch und Leistung
Wie die meisten der hochentwickelten MCUs verfügt der ADuCM3029 über mehrere Energiemodi, mit denen der Stromverbrauch in Zeiträumen der Inaktivität reduziert werden kann. Im Ruhemodus verbraucht der Baustein typischerweise weniger als 750 nA. Dabei werden der Prozessor und die meisten Peripheriebausteine abgeschaltet, aber die Stromversorgung ausgewählter SRAM-Bereiche aufrechterhalten. In Zeitabschnitten, in denen die Anwendung nicht aktiv ist, verbraucht der Abschaltmodus des Bausteins nur 60 nA.
Allerdings stehen die Entwickler immer häufiger vor Szenarien, in denen ein Teil der Peripherie aktiv bleiben muss, wenn der Prozessor deaktiviert ist. Für dieses Problem bietet der ADuCM3029 einen zusätzlichen Energiemodus, der als „flexibler Schlafmodus“ (Flexi) bezeichnet wird. Der Flexi-Modus reduziert den Stromverbrauch auf nur 300 μA, wobei sich die Funktionalität zwischen dem aktiven und dem Ruhemodus bewegt. Im Flexi-Modus bleibt der Kern das Bausteins im Schlafmodus, während bestimmte vom Entwickler angegebene Peripheriebausteine aktiv bleiben (Tabelle 1).

Tabelle 1: Die Energiemodi der MCU ADuCM3029 von Analog Devices aktivieren (grün) oder deaktivieren (rot) die Stromzufuhr für bestimmte Blöcke auf dem Chip automatisch, ermöglichen dabei aber den Entwicklern, die Stromversorgung für bestimmte Peripheriebausteine (orange) zu steuern oder die Größe von im Ruhemodus mit Strom versorgten SRAM-Bereichen (*) zu konfigurieren. (Bildquelle: Analog Devices)
Die MCU kann durch einfaches Setzen der MODE-Bits im Register PMG_PWRMOD auf 0 und Ausführung der Anweisung WFI (Wait for interrupt, auf Interrupt warten) in den Flexi-Mode versetzt werden. Ist der Prozessorkern deaktiviert, können bestimmte Peripherie-Funktionen durch Schreiben von 0 in die den Peripheriebausteinen entsprechenden Bits des MCU-Registers CLKG_CLK_CTL5 aufrechterhalten werden. Der Baustein kann zwar in diesem Modus keine Anweisungen ausführen, aber Aktivitäten wie DMA-Übertragungen zwischen Peripheriebausteinen und dem Arbeitsspeicher können weiterhin durchgeführt werden.
Durch die Möglichkeit, den Betrieb von Peripheriebausteinen aufrechtzuerhalten, bietet der Flexi-Modus eine energieeffiziente Lösung für ein bei Sensoranwendungen verbreitetes Problem, wenn die Daten eines oder mehrerer Sensoren über einen bestimmten Zeitraum erfasst werden müssen, bevor der Prozessor tätig wird. In diesem Fall können mithilfe des automatischen Schleifenmodus (Auto-Cycle Mode) des integrierten ADC eine oder mehrere Konvertierungen auf ausgewählten Kanälen durchgeführt und die Proben mithilfe des DMA-Controllers automatisch in das SRAM übertragen werden. Nach einer vom Programmierer festgelegten Anzahl von Konvertierungen und der darauf folgenden DMA-Übertragung generiert der Controller einen Interrupt, um den Kern für die darauffolgende Verarbeitung der erfassten Daten aufzuwecken (Abbildung 1).

Abbildung 1: Im Flexi-Modus schläft der Core-Prozessor des ADuCM3029 von Analog Devices, während ausgewählte Peripheriebausteine in Betrieb bleiben. So können Vorgänge wie DMA-Übertragungen von ADC-Proben auf mehreren Kanälen durchgeführt werden, nach deren Beendigung der Prozessor aufgeweckt wird. (Bildquelle: Analog Devices)
Cache und Taktzyklen
Beim Ausgleich zwischen Funktionalität und Leistung bieten der Flexi-Modus und die anderen Modi mit geringem Energieverbrauch einen wirksamen Mechanismus zur Reduzierung des Stromverbrauchs von neuen Entwicklungen. Bei vielen Anwendungen, z. B. bei batteriebetriebenen Systemen, ist allerdings eine weitergehende Kontrolle über den Stromverbrauch nötig. Mit dem ADuCM3029 kann der Stromverbrauch durch die Verbindung von herkömmlichen und neuen Methoden noch einmal reduziert werden.
Neben den herkömmlichen Methoden können über den Einsatz eines Anweisungscaches die Zugriffe auf Arbeitsspeicher außerhalb des Chips oder auf stromhungrigen Arbeitsspeicher wie Flash-Speicher auf dem Chip reduziert werden. Auf Systemen auf ADuCM3029-Basis können bis zu 4 KB SRAM als Cache zugewiesen werden. In der Praxis hängt die Energieersparnis im Einzelnen von den Cache-Trefferraten ab, aber Analog Devices merkt an, dass der Stromverbrauch einiger typischer Benchmark-Anwendungen durch einen Cache signifikant verringert werden kann (Tabelle 2).
|
Tabelle 2: Wenn im ADuCM3029 von Analog Devices ein Teil des SRAM als Cache konfiguriert wird, können typische Benchmark-Anwendungen mit einem Energieverbrauch ausgeführt werden, der eher einem SRAM-Zugriff mit niedrigem als einem Flash-Speicher-Zugriff mit höherem Energieverbrauch entspricht. (Bildquelle: Analog Devices)
Die Skalierung der Frequenz ist ein weiterer seit Langem bewährter Ansatz zur Energieersparnis. Geringere Taktfrequenzen verlangsamen die Ausführung von Anweisungen, verringern aber andererseits den Energieverbrauch (Abbildung 2). Im Gegensatz zu anderen Ansätzen können beim ADuCM3029 die Taktfrequenzen für den Prozessor und die Peripherie getrennt reduziert werden. Hier werden im Baustein ein Phasenregelkreis und Frequenzteiler eingesetzt, die von einem internen 26 MHz-Oszillator oder externen Quarz gesteuert werden, um die Taktzyklen für Ressourcen auf dem Chip zu generieren, darunter Prozessor, Arbeitsspeicher und Schnittstellen. Ein interner 32 kHz-Oszillator bzw. ein externer Quarz generiert die Taktzyklen für die Echtzeituhren (RTCs) und den Watchdog-Timer. Die entsprechenden Taktregister des Bausteins können von den Entwicklern während der Laufzeit geändert werden. So können die Taktfrequenzen an die sich ändernden Anforderungen der Anwendung angepasst bzw. Gelegenheiten zur Energieeinsparung genutzt werden.

Abbildung 2: Die Entwickler müssen nur wenige Register des ADuCM3029 von Analog Devices setzen, um die Taktfrequenz der MCU im Betrieb zu skalieren und so den Energieverbrauch zu reduzieren. (Bildquelle: Analog Devices)
Verbesserter Strompfad
Neben der Unterstützung von konventionelleren Methoden der Energieeinsparung bietet der ADuCM3029 einen neuen Ansatz auf der Grundlage von speziellen Hardwarefunkionen. Ein im Strompfad des ADuCM3029 eingebauter Abwärtswandler überbrückt den Unterschied zwischen dem Versorgungsspannungsbereich des Bausteins, VBAT (1,74 V - 3,6 V), und der Betriebsspannung für den digitalen Bereich (1,2 V).
Im Normalbetrieb gelangt die interne Spannung an einen eingebauten LDO-Regler (Low-Dropout). Wie bei jedem typischen LDO wird bei einem großem Unterschied zwischen Versorgungs- und Lastspannung des LDOs die überschüssige Energie einfach abgeführt, wodurch Energie verschwendet wird. Bei dieser MCU kann dieser Verlust dagegen bei höheren Versorgungsspannungen mithilfe einiger externer Kondensatoren reduziert werden (Abbildung 3). Softwareseitig werden nur Werte in das Steuerregister des Abwärtswandlers (PMG_CTL1) geschrieben, um den Abwärtswandler zu aktivieren.

Abbildung 3: Mit nur wenigen Codezeilen und einigen externen Kondensatoren kann der On-Chip-Abwärtswandler des ADuCM3029 von Analog Devices aktiviert werden, um den Spannungspegel für den am LDO-Regler angelieferten Spannungspegel zu reduzieren. (Bildquelle: Analog Devices)
Auf der Grundlage einer hocheffizienten Ladepumpentechnologie auf Kondensatorbasis reduziert der Wandler den am LDO angelieferten Spannungspegel. Dies führt zu einer dramatischen Reduzierung des Stromverbrauchs der MCU bei Spannungspegeln am oberen Ende von VBAT (Abbildung 4). Bei Pegeln unter 2,3 V wird der Abwärtswandler in den Bypass-Modus geschaltet und es wird VBAT geliefert.

Abbildung 4: Bei einer Versorgungsspannung (VBAT) von über ca. 3 V reduziert der On-Chip-Abwärtswandler des ADuCM3029 den Stromverbrauch, wodurch wie hier eine relative Ersparnis von 50 % im aktiven Modus sowie im Flexi-Modus erzielt wird. (Bildquelle: Analog Devices)
Energieoptimierte Datenerfassung
Funktionen wie Cache, Skalierung der Frequenz und chipintegrierter DC/DC-Konvertierung laufen auf Systemebene und tragen zur Reduzierung des Energieverbrauchs bei. Auf Anwendungsebene tragen Funktionen wie der Flexi-Modus zur Reduzierung des Verbrauchs bei Aktivitäten der Peripherie wie der Erfassung von Sensordaten bei. Allerdings erweisen sich auch diese Methoden bei manchen Anwendungen als unzureichend. Batteriebetriebene IoT-Geräte müssen häufig Sensordaten mit sehr geringer Geschwindigkeit erfassen oder gewisse externe Prozesse periodisch überwachen.
Bei Anwendungen mit langsamer periodischer Aktivität verlassen sich die Entwickler normalerweise auf die RTC der MCU als konsistente Zeitbasis und zur Steuerung von Countdown-Timern, die die MCU zu exakten festgelegten Zeitpunkten aktivieren. Daher verfügen hochentwickelte MCUs heutzutage über Energiemodi, die die Funktion der RTC selbst in Modi mit sehr geringem Energieverbrauch aufrechterhalten. Mit dem ADuCM3029 können Entwickler auf zwei unterschiedliche RTCs zugreifen, RTC0 und RTC1, die weitere Modi für den Ausgleich zwischen Energieverbrauch und Leistung zur Verfügung stellen.
Wie in Tabelle 1 angegeben, unterstützen beide RTCs den Betrieb im aktiven Modus, im Flexi-Modus und in den Ruhemodi, aber nur RTC0 bleibt im Schlafmodus, dem Modus mit dem geringsten Energieverbrauch, verfügbar. In den anderen Modi haben die Entwickler die Möglichkeit, aufgrund bestimmter Unterschiede zwischen den beiden Uhren komplexere Timing-Aktionen zu implementieren. RTC0 zählt beispielsweise mit 1 Hz in Einheiten von einer Sekunde, was die Aufwachzeiten auf die Angabe von ganzen Sekunden einschränkt. RTC1 kann über einen großen Bereich skaliert werden, was die Festlegung von Aufwachzeiten ab 30,7 μs erlaubt. Auch die Stromversorgung ist für jede der Uhren unterschiedlich. RTC0 wird von der primären Spannungsversorgung (VBAT) gespeist, während RTC1 vom internen Spannungsbereich von 1,2 V versorgt wird. Die Nutzung des optionalen Abwärtswandlers reduziert den effektiven Energieverbrauch von RTC1 weiter. Vielleicht noch wichtiger ist die Tatsache, dass RTC1 den SensorStrobe-Mechanismus von Analog Device unterstützt, ein einzigartiges im ADuCM3029 integriertes Feature für die Datenerfassung mit geringem Energieverbrauch.
SensorStrobe ist ein spezieller Alarm der RTC1, der am Pin RTC1_SS1 der MCU einen Ausgangspuls generiert. Der SensorStrobe-Ausgang des ADuCM3029 kann an einen externen Multisensorbaustein wie den ADXL363 von Analog Devices angeschlossen werden. So entsteht mit nur wenigen Komponenten eine Datenerfassungslösung mit geringem Energieverbrauch (Abbildung 5).

Abbildung 5: Der SensorStrobe-Mechanismus des ADuCM3029 stellt einen stabilen synchronisierten Alarm für externe Komponenten bereit. Dies ermöglicht die Implementierung eines einfachen Datenerfassungssystems mit einem integrierten Sensor wie dem ADXL363 von Analog Devices. (Bildquelle: Analog Devices)
Analog Devices bietet das in Abbildung 5 als Teil des Entwicklungskits ADuCM3029 EZ-KIT gezeigte Subsystem ADZS-UCM3029EZLITE an. Dieser Ansatz benötigt neben einer einfachen Konfiguration der Hardware nur wenige Codezeilen, mit denen die zugeordneten Register des Bausteins eingerichtet werden und der SensorStrobe-Mechanismus gestartet wird (Listing 1).
#define PRD_VAL 255
void SensorStrobe_Cfg()
{
// SensorStrobe Pin Mux
*pREG_GPIO2_CFG |= (0x3 << BITP_GPIO_CFG_PIN11);
// RTC-Zähler zurücksetzen
while(*pREG_RTC1_SR1 & 0x0180); //auf Synchronisierung warten
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 0;
while(!(*pREG_RTC1_SR0 & 0x0080 )); //auf Synchronisierung warten
// SensorStrobe-Konfiguration
// Anfängliche Auslösung und Wert automatisch neu laden = 255 RTC-Takte
// RTC läuft idealerweise mit 32 kHz, 1 RTC-Takt = 30,7 us
while(*pREG_RTC1_SR5 != 0);
*pREG_RTC1_SS1ARL = PRD_VAL;
// SensorStrobe nach 255 RTC-Takten auslösen
*pREG_RTC1_CR4SS = (1 << 9); //Automatisches Neuladen aktivieren
*pREG_RTC1_SS1 = PRD_VAL; // Anfänglicher Vergleichswert
// SensorStrobe aktivieren
*pREG_RTC1_CR3SS = 1;
while(*pREG_RTC1_SR4 != 0x77FF);
// Zähler auf 0 initialisieren
while(*pREG_RTC1_SR1 & 0x0600);
*pREG_RTC1_CNT0 = 0;
*pREG_RTC1_CNT1 = 0;
while(!(*pREG_RTC1_SR0 & 0x0400));
// Zähler aktivieren (starten)
while(*pREG_RTC1_SR1 & 0x0180); //auf Synchronisierung warten
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 1;
while(!(*pREG_RTC1_SR0 & 0x0080)); //auf Synchronisierung warten
return;
}
Listing 1: Um die SensorStrobe-Funktion der MCU ADuCM3029 von Analog Devices einsetzen zu können, müssen nur wenige Register gesetzt werden. (Bildquelle: Analog Devices)
Während des SensorStrobe-Betriebs wird der ADuCM3029 in den Ruhemodus versetzt, um während der umfangreichen Erfassung von Proben einen minimalen Energieverbrauch der MCU sicherzustellen. Während sich die MCU im Ruhemodus befindet, zählt RTC1 auf den gewünschten Wert herunter, der bei der Einrichtung von SensorStrobe im Register festgelegt wurde. Wenn der Zähler den gewünschten Wert für SensorStrobe erreicht hat, wird das SensorStrobe-Signal an den Interrupt-Eingangs-Pin des ADXL363 angelegt und der Baustein wird aktiviert. Dann führt der ADXL363 seine eigenen Datenerfassungsroutinen aus. Nach Beendigung legt der ADXL363 ein Signal an den Interrupt-Pin der MCU an, wodurch die MCU aus dem Ruhemodus aktiviert wird und mit der Verarbeitung der erfassten Daten beginnt.
Früher mussten die Entwickler diese Art der erweiterten Erfassung mit einer externen RTC, einem Timer oder sogar mit einem einfachen Oszillator implementieren. Dabei macht eine externe Taktquelle nicht nur den Aufbau komplizierter, sondern zerstört auch die Synchronisierung zwischen den erfassten Daten und der eigenen Zeitbasis der MCU. Daher mussten Entwickler, die wie beschrieben vorgegangen sind, die Daten vollständig neu erfassen, um den Zeitstempel auf den der MCU zu normalisieren. Durch die Verwendung von RTC1 im SensorStrobe-Modus ist dagegen sichergestellt, dass die Zeitstempel der Proben mit dem des ADuCM3029-Systems synchron sind.
Potenziell stehen mehrere verschiedene Mechanismen zur Verfügung, die den integrierten Energieverwaltungsmöglichkeiten des ADuCM3029 nahe kommen. Durch Verbesserung der internen Fähigkeiten ist es möglich, ein besseres Gleichgewicht zwischen Energieverbrauch und Leistung zu erzielen.
Fazit
Die Nachfrage nach Systemen mit niedrigem Energieverbrauch verlangt von den Entwicklern weiterhin die Fähigkeit, maximale Leistung mit geringen Abmessungen und Energieeffizienz zu verbinden. Dies wird dadurch erschwert, dass jede Anwendung ein individuelles Gleichgewicht zwischen funktioneller Leistung und Energieverbrauch erfordert.
Die integrierten Energieverwaltungsfunktionen der MCU ADuCM3029 von Analog Devices bieten den Entwicklern die Flexibilität, dieses Gleichgewicht einfacher herzustellen. Mithilfe dieses Bausteins können die Entwickler die für jede spezifische Anwendung erforderliche einzigartige Kombination von hoher Leistung und niedrigem Energieverbrauch erzielen.
Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.




