Prestaties en energieverbruik van MCU's met elkaar in balans brengen met geïntegreerde functies
Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey
2017-05-10
Ontwikkelaars hebben al geruime tijd toegang tot MCU's met werkingsmodi met laag energieverbruik, waarbij randapparatuur en zelfs de kern worden uitgeschakeld om de door het systeem benodigde energie te beperken. Voor sommige toepassingen is echter een meer directe controle over het stroomverbruik nodig, om te verzekeren dat delen van het systeem gevoed blijven om aan fundamentele functionele vereisten te voldoen.
In het verleden gebruikten ontwerpers standalone apparaten voor energiebeheer om een nauwkeurige voedingsregeling in te bouwen. De ADuCM3029 MCU van Analog Devices daarentegen biedt een geïntegreerde oplossing die het ontwikkelaars gemakkelijker maakt om maximale prestaties te verkrijgen en tegelijkertijd het energieverbruik te minimaliseren in ontwerpen die bestemd zijn voor sensorgegevensacquisitie, wearables en andere Internet of Things (IoT)-toepassingen.
MCU’s die gericht zijn op energiebeheer
Voor ontwerpen met laag energieverbruik zijn tal van geavanceerde MCU's te vinden die over energiebesparingsopties beschikken. Apparaten die bestemd zijn voor energiegevoelige toepassingen, beschikken standaard over functies zoals frequentieschaling die ingenieurs in staat stellen een compromis te vinden tussen prestaties en lager energieverbruik.
Bedrijfsmodi met laag energieverbruik bieden doorgaans een geleidelijke vermogensreductie, waarbij een voor een steeds meer MCU-subsystemen worden uitgeschakeld, totdat alleen de minimale circuits die nodig zijn om de MCU te wekken operationeel blijven. Als verdere verfijning voor energiebeheer hebben MCU's met ultra-laag energieverbruik bovendien speciale werkingsmodi die de stroom naar de apparaatkern en de randapparatuur apart beheren. Maar ook in deze gevallen schakelen deze speciale modi de randapparaten soms als één groep uit of gebruiken ze geautomatiseerde mechanismen die de ontwikkelaar weinig controle geven over de details van de stroomtoewijzing.
Hoewel het energiebeheer van een MCU doorgaans een reeks energiebesparende bedrijfsmodi biedt, brengt de overgang naar een energiebesparende modus doorgaans een bruuske daling in de functionaliteit met zich mee. In vele gevallen kunnen toepassingen functionaliteitsverlies voor beperkte perioden tolereren. In sommige gevallen is een precieze regeling van het energieverbruik echter van essentieel belang om de functionaliteit te behouden. De ADuCM3029 processor van Analog Devices is specifiek ontworpen om meer complexe vereisten qua energiebeheer te ondersteunen in applicaties met ultra-laag energieverbruik.
De ADuCM3029, gebouwd rond een ARM® Cortex®-M3-kern, biedt 256 Kbytes flash met foutcorrectiecode (ECC) en 64 Kbytes configureerbaar SRAM met multi-pariteit-bit-beveiliging. Een andere variant, de ADuCM3027, heeft 128 Kbytes flash, maar biedt verder dezelfde functies en functionaliteit als de ADuCM3029.
Samen met een geïntegreerde hardware crypto-accelerator, omvatten de apparaten een 8-kanaals 12-bits analoog/digitaal-omzetter (ADC), evenals meerdere digitale randapparaten waaronder SPI, I2C, UART, GPIO's, synchrone seriële poort (SPORT) en 25-kanaals DMA-controller. Maar ondanks deze uitgebreide functionaliteit verbruikt het apparaat in de actieve modus standaard minder dan 30 μA/MHz. Met de ADuCM3029 kunnen ontwerpers de balans tussen functionele prestaties en energieverbruik nog fijner op elkaar afstemmen.
De optimale balans vinden tussen energieverbruik en prestaties
Net als de meeste geavanceerde MCU's beschikt de ADuCM3029 over meerdere energiemodi die erop gericht zijn om het verbruik tijdens perioden met lage activiteit te beperken. In de slaapstand bedraagt het typische verbruik van het apparaat minder dan 750 nA; dit wordt bereikt door de processorkern en de meeste randapparaten uit te schakelen, terwijl de voeding naar door via een programma geselecteerde SRAM-gebieden wordt gehandhaafd. Voor periodes waarin de toepassing inactief is, vereist de uitschakelmodus van het apparaat slechts 60 nA.
Ontwikkelaars hebben echter vaak te maken met scenario's waarin ook bij inactieve processor een zekere mate van activiteit van de randapparatuur vereist is. Om dit probleem op te lossen biedt de ADuCM3029 een extra energiemodus, de zogeheten flexibele slaapmodus (Flexi). De Flexi-modus brengt het stroomverbruik terug tot slechts 300 μA, maar biedt een functionaliteit die tussen de actieve modi en de slaapmodi in ligt. In de Flexi-modus blijft de apparaatkern in de slaapmodus terwijl specifieke, door de ontwerper gespecificeerde randapparaten actief blijven (Tabel 1).

Tabel 1: de energiemodi van de ADuCM3029 MCU van Analog Devices activeren (groen) of deactiveren (rood) automatisch de voeding naar bepaalde blokken op de chip, maar bieden ontwikkelaars wel de mogelijkheid om de stroom naar bepaalde randapparatuur te regelen (oranje) of zelfs de omvang van het in slaapstand vastgehouden SRAM (*) te configureren. (Bron tabel: Analog Devices)
Ontwikkelaars kunnen de MCU eenvoudig in de Flexi-modus zetten door de MODE-bits in het PMG_PWRMOD register van het apparaat op 0 in te stellen en de instructie WFI (wait for interrupt) uit te voeren. De ontwikkelaar kan specifieke randapparatuur functioneel houden wanneer de processorkern inactief is. Dit gebeurt door 0 te schrijven naar elke overeenkomstige bit van de randapparatuur in het CLKG_CLK_CTL5 register van de MCU. Alhoewel het apparaat in deze modus geen instructies kan uitvoeren, kan het wel doorgaan met het uitvoeren van activiteiten zoals DMA-overdrachten tussen randapparaten en het geheugen.
Doordat de Flexi-modus de mogelijkheid biedt om randapparatuur operationeel te houden, vormt hij een energie-efficiënte oplossing voor een veelvoorkomend probleem in sensortoepassingen waarbij een of meer sensoren voor een bepaalde tijd moeten worden gesampled voordat de processor erbij wordt betrokken. In dit geval kunnen ontwikkelaars de automatische cyclusmodus van ADC gebruiken om één of meer conversies op geselecteerde kanalen uit te voeren, en de DMA-controller in te stellen voor automatische overdracht van de samples naar het SRAM. Na een via programmering gespecificeerd aantal conversies en bijbehorende DMA-overdracht, geeft de DMA-controller een interrupt om de kern te wekken voor de daaropvolgende verwerking van de gesamplede gegevens (Afbeelding 1).

Afbeelding 1: in de Flexi-modus, slaapt de kernprocessor van de ADuCM3029 van Analog Devices terwijl bepaalde geselecteerde randapparaten blijven werken, om bewerkingen zoals DMA-overdracht van meerdere kanalen van ADC-samples mogelijk te maken en de processor pas na afloop van de bewerkingen te wekken. (Bron afbeelding: Analog Devices)
Cache en klokken
Wanneer het er om gaat om een compromis te vinden tussen functionaliteit en prestaties, bieden de Flexi-modus en andere energiebesparende modi ontwerpers een krachtig mechanisme om het energieverbruik van hun ontwerpen aanzienlijk terug te brengen. Bij veel toepassingen, bijvoorbeeld op batterijen werkende systemen, is echter vaak een nog preciezere controle over het stroomverbruik vereist. Met de ADuCM3029 kunnen ontwerpers, dankzij een combinatie van conventionele en nieuwe methodes, het energieverbruik nog verder terugbrengen.
Onder de standaard conventionele methoden vinden we bijvoorbeeld het gebruik van instructie-cache om de toegang tot geheugen buiten de chip of een energieverslindend geheugen op de chip, zoals Flash, te verminderen. Bij op ADuCM3029 gebaseerde systemen kunnen ontwikkelaars maar liefst 4 KB SRAM toewijzen om als cache te dienen. In de praktijk is specifieke energiebesparing afhankelijk van de cache-hitfrequenties, maar Analog Devices wijst erop dat het gebruik van cache in sommige standaard benchmark-toepassingen het energieverbruik aanzienlijk kan verminderen (tabel 2).
|
Tabel 2: door de ADuCM3029 te configureren om iets van zijn SRAM als cache te gebruiken, kunnen typische benchmark-toepassingen op energieniveaus werken die in de buurt komen van energiezuinige SRAM-toegang in plaats van de meer stroom vragende flash-toegang. (Bron tabel: Analog Devices)
Frequentieschaling is een andere benadering die van oudsher wordt gebruikt om het energieverbruik te verminderen. Lagere processor-kloksnelheden vertragen de uitvoeringsinstructie maar resulteren ook in een lager energieverbruik (Afbeelding 2). In tegenstelling tot veel andere benaderingen geeft de ADuCM3029 ontwikkelaars echter de mogelijkheid tot separate dynamische aanpassing van de klokfrequenties voor de processor en de randapparatuur. Hier gebruikt het apparaat een fase-vergrendelde lus en klokverdelers die worden aangestuurd door een interne oscillator van 26 MHz of extern kristal om klokken te genereren voor resources op de chip, zoals de processor, het geheugen en interfaces. Een interne oscillator van 32 kHz of extern kristal stuurt de real-time klokken (RTC's) en watchdog-timer van het apparaat aan. Ontwikkelaars kunnen de respectieve klokregisters van het apparaat gedurende de runtime wijzigen om de klokfrequenties aan te passen aan veranderende toepassingsvereisten of mogelijkheden voor vermindering van het stroomverbruik.

Afbeelding 2: ontwerpers stellen simpelweg een paar registers in de ADuCM3029 van Analog Devices in om de klokfrequentie van de MCU in een oogwenk te schalen en een overeenkomstige daling van het stroomverbruik te verkrijgen. (Bron afbeelding: Analog Devices)
Verbeterd vermogenspad
Samen met de ondersteuning voor meer conventionele energiebesparende methoden, biedt de ADuCM3029 ook nieuwe benaderingen die zijn gebaseerd op specifieke functies van de apparaathardware. Een buckconverter op chip, die in het ontwerp is opgenomen in het stroompad van de ADuCM3029, overbrugt het verschil tussen het voedingsspanningsbereik van het apparaat, VBAT (1,74 V - 3,6 V) en de bedrijfsspanning van het interne digitale domein (1,2 V).
Gedurende normaal bedrijf wordt deze interne spanning geleverd door een geïntegreerde low-drop-out (LDO)-regelaar. Zoals met elke typische LDO zal, wanneer het verschil tussen de voedings- en belastingsspanning van de LDO hoog is, het standaard vermogenspad eenvoudigweg overtollige energie afvoeren, met stroomverspilling als resultaat. Met deze MCU kunnen ontwerpers dit verlies bij hogere voedingsspanningen echter beperken door slechts enkele externe condensators te gebruiken (Afbeelding 3). Op softwareniveau betekent dit dat er eenvoudigweg naar het buck-controleregister (PMG_CTL1) wordt geschreven om de buckconverter in te schakelen.

Afbeelding3: met behulp van wat coderegels en een aantal externe condensators, kunnen ontwikkelaars de buckconverter van de ADuCM3029 van Analog Devices inschakelen om het op de LDO-regelaar van het apparaat toegepaste spanningsniveau te beperken. (Bron afbeelding: Analog Devices)
De converter, gebaseerd op een zeer efficiënte condensator-gebaseerde laadpomptopologie, verlaagt het spanningsniveau dat aan de LDO wordt geleverd. Als gevolg daarvan vertoont de MCU een drastische vermindering van het energieverbruik op spanningsniveaus aan de hoge zijde van VBAT (Afbeelding 4). Op niveaus onder de 2,3 V, schakelt de buckconverter in bypassmodus en volgt VBAT.

Afbeelding 4: bij voedingsspanningsniveaus (VBAT) van meer dan ca. 3 V, beperkt de buckconverter op chip van de ADuCM3029 het energieverbruik van de MCU, met een relatieve reductie van 50% in zowel de actieve modus, hier getoond, als in de Flexi-modus. (Bron afbeelding: Analog Devices)
Sampling bij optimaal energieverbruik
Functies zoals caching, frequentieschaling en DC-DC omzetting op chip werken op systeemniveau om het energieverbruik te helpen verlagen. Op toepassingsniveau helpen functies zoals de Flexi-modus om het energieverbruik te beperken voor randapparatuurbewerkingen, zoals sensor-sampling. Toch kunnen bij sommige toepassingen zelfs deze methoden onvoldoende blijken te zijn. Op batterijen werkende IoT-apparaten zijn bijvoorbeeld vaak belast met de sampling van sensors op zeer lage acquisitiesnelheden of de periodieke bewaking van bepaalde externe processen.
Voor toepassingen met langzame periodieke activiteit grijpen ontwikkelaars meestal terug op de RTC van de MCU om een consistente tijdbasis te handhaven en voor het aansturen van afteltimers, die worden gebruikt om de MCU op precieze, vooraf bepaalde tijden te wekken. Geavanceerde MCU's beschikken daarom over het algemeen over energiemodi die zelfs in zeer energiezuinige modi de functionaliteit van de RTC in stand houden. Met de ADuCM3029 kunnen ontwikkelaars beschikken over twee separate RTC's, RTC0 en RTC1, die aanvullende opties bieden voor het uitbalanceren van energieverbruik en prestaties.
Zoals te zien is in Tabel 1 ondersteunen beide RTC's de werking in de actieve modus, Flexi-modus en slaapmodus, maar blijft alleen RTC0 beschikbaar tijdens de uitschakelmodus met het laagste stroomverbruik. Binnen de andere modi bieden duidelijke verschillen tussen de twee klokken ontwikkelaars echter flexibiliteit bij het implementeren van complexere timing-toepassingen. RTC0 telt de tijd bijvoorbeeld op 1 Hz in eenheden van seconden, beperkt tot wektijden die alleen in seconden gespecificeerd zijn. RTC1 kan over een breed bereik worden voorgeschaald en biedt wektijden van slechts 30,7 μs. Ook de voeding naar de klokken is verschillend. RTC0 wordt gevoed vanaf de primaire voeding (VBAT), terwijl RTC1 stroom krijgt van het interne 1,2 V voedingsdomein. Als zodanig verlaagt het gebruik van de optionele buckconverter het effectieve energieverbruik van RTC1 nog verder. En wat misschien nog wel belangrijker is, RTC1 ondersteunt het SensorStrobe-mechanisme van Analog Devices, een unieke, weinig stroom verbruikende samplingfunctie die in de ADuCM3029 is ingebouwd.
SensorStrobe is een speciaal RTC1-alarm dat een uitgangsimpuls op de RTC1_SS1 pen van de MCU genereert. Ontwikkelaars kunnen de SensorStrobe-uitgang van de ADuCM3029 verbinden met een extern apparaat met meerdere sensors, zoals de ADXL363 van Analog Devices, om met slechts enkele onderdelen een sampling-oplossing met zeer laag stroomverbruik te creëren (Afbeelding 5).

Afbeelding 5: het SensorStrobe-mechanisme van de ADuCM3029 biedt een stabiel, gesynchroniseerd alarm naar externe apparaten, en maakt implementatie van een simpel gegevensacquisitiesysteem mogelijk wanneer het wordt gecombineerd met een geïntegreerde sensor zoal de ADXL363 van Analog Devices. (Bron afbeelding: Analog Devices)
Analog Devices levert het specifieke subsysteem dat op Afbeelding 5 te zien is als deel van de ontwikkelingskit ADuCM3029 EZ-KIT, de ADZS-UCM3029EZLITE. Samen met een eenvoudige hardwareconfiguratie vereist deze benadering slechts luttele coderegels om de bijbehorende apparaatregisters in te stellen en het SensorStrobe-mechanisme te starten (lijst 1).
#define PRD_VAL 255
void SensorStrobe_Cfg()
{
// SensorStrobe Pin Mux
*pREG_GPIO2_CFG |= (0x3 << BITP_GPIO_CFG_PIN11);
// Reset the RTC counter
while(*pREG_RTC1_SR1 & 0x0180); //wait until sync
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 0;
while(!(*pREG_RTC1_SR0 & 0x0080 )); //wait for sync
// SensorStrobe configuration
// Initial trigger and auto reload value = 255 RTC counts
// RTC runs at 32KHz ideally, 1 RTC count = 30.7us
while(*pREG_RTC1_SR5 != 0);
*pREG_RTC1_SS1ARL = PRD_VAL;
// SensorStrobe to be triggered after 255 RTC counts
*pREG_RTC1_CR4SS = (1 << 9); //Enable Autoreload
*pREG_RTC1_SS1 = PRD_VAL; // Initial Compare Value
// Enable SensorStrobe
*pREG_RTC1_CR3SS = 1;
while(*pREG_RTC1_SR4 != 0x77FF);
// Initialize the counter value to zero
while(*pREG_RTC1_SR1 & 0x0600);
*pREG_RTC1_CNT0 = 0;
*pREG_RTC1_CNT1 = 0;
while(!(*pREG_RTC1_SR0 & 0x0400));
// Enable (start) the counter
while(*pREG_RTC1_SR1 & 0x0180); //wait until sync
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 1;
while(!(*pREG_RTC1_SR0 & 0x0080)); //wait for sync
return;
}
Lijst 1: ontwikkelaars hebben slechts een paar apparaatregisters nodig om hun voordeel te doen met de SensorStrobe-functie van de ADuCM3029 MCU van Analog Devices. (Bron afbeelding: Analog Devices)
Gedurende de werking van SensorStrobe wordt de ADuCM3029 in de slaapmodus gezet om ervoor te zorgen dat de MCU gedurende het uitgebreide sampling-proces slechts een minimum aan energie verbruikt. Terwijl de MCU in de slaapmodus blijft, telt RTC1 tot aan de gewenste waarde, zoals gedurende de instelling van SensorStrobe in de registerwaarden is gespecificeerd. Op het moment dat aan de telvoorwaarden van SensorStrobe wordt voldaan, wordt het SensorStrobe-signaal toegepast op de interrupt-ingangspen van de ADXL363, zodat het apparaat wordt gewekt. Op zijn beurt voert de ADXL363 zijn eigen gegevens-samplingprocedures uit. Na afloop geeft de ADXL363 een signaal aan de interrupt-pen van de MCU, waardoor de MCU wakker wordt uit de slaapmodus en begint met het verwerken van de gesamplede gegevens.
Vroeger implementeerden ontwikkelaars dit soort uitgebreide samplingfuncties gewoonlijk met behulp van een externe RTC, timer of zelfs een eenvoudige oscillator. Maar het gebruik van een externe klokbron maakt niet alleen het ontwerp complexer, maar verstoort ook de tijdsynchronisatie tussen de gesamplede gegevens en de eigen tijdbasis van de MCU. Daarom moesten ontwikkelaars die de eerdere benadering gebruikten, hun gegevens opnieuw samplen om het tijdstempel te normaliseren met dat van de MCU. Door gebruik van RTC1 in SensorStrobe-modus kunnen ontwikkelaars ervoor zorgen dat sample-tijdstempels gesynchroniseerd blijven met de op het ADuCM3029 gebaseerde systeem zelf.
Er zijn wellicht aparte mechanismen te vinden die de geïntegreerde energiebeheermogelijkheden van de ADuCM3029 benaderen. Maar door gebruik te maken van de interne mogelijkheden van dat apparaat, kan eenvoudig een betere afstemming tussen energieverbruik en prestaties worden bereikt.
Conclusie
De vraag naar energiezuinigere systemen blijft ontwikkelaars voor de uitdaging stellen om maximale prestaties te verkrijgen in kleinere, energie-efficiënte ontwerpen. Wat alles nog moeilijker maakt, is dat voor elke toepassing een unieke balans tussen functionele prestaties en energieverbruik moet worden gevonden.
De geïntegreerde energiebeheerfuncties van de ADuCM3029 MCU van Analog Devices bieden ontwikkelaars de flexibiliteit die nodig is om het vinden van die balans te vergemakkelijken. Door dit apparaat te gebruiken, kunnen ontwikkelaars voor elke individuele toepassing de meest geschikte combinatie tussen hoge prestaties en laag energieverbruik verkrijgen.
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




