Balansera MCU-prestanda och effektförbrukning med integrerade funktioner
Bidraget med av DigiKeys nordamerikanska redaktörer
2017-05-10
Utvecklare har nu ett tag haft tillgång till MCU:er som har driftlägen med låg effekt, där kringutrustning, och även själva kärnan, stängs av för att minska systemets effektkrav. Men för vissa tillämpningar måste utvecklare ha en mer direkt kontroll över strömanvändningen för att se till att delar av systemet förblir strömsatta så att viktiga funktionskrav uppfylls.
Konstruktörer har tidigare använt fristående krafthanteringsenheter för att bygga in exakt effektstyrning. I motsats till det är MCU:n ADuCM3029 från Analog Devices en integrerad lösning som kan hjälpa utvecklare att lättare uppnå maxprestanda och samtidigt minimera effektförbrukningen i konstruktioner byggda för insamling av sensordata, bärbar teknik och andra IoT-tillämpningar (Internet of Things – Sakernas internet).
MCU:er med krafthantering
För lågeffektkonstruktioner kan tekniker hitta en mängd avancerade MCU:er utformade med strömsparalternativ. Enheter för effektkänsliga tillämpningar har ofta funktioner som frekvensskalning som gör att tekniker kan byta prestanda mot lägre effekt.
Normalt har lågeffektlägen gradindelad effektminskning genom att allt fler MCU-delsystem stängs av tills bara minimalt med kretsar som krävs för att väcka MCU:n är i drift. Som en ytterligare förbättring av krafthanteringen har MCU:er med ultralåg effekt speciallägen för drift som separat hanterar effekten för enhetens kärna och kringutrustning. Även i sådana fall stänger dessa speciallägen ibland av kringutrustning som grupp eller använder automatiska mekanismer som ger utvecklaren lite detaljkontroll över effektallokeringen.
Trots att MCU-krafthanteringen normalt har flera olika driftlägen med låg effekt innebär övergången till lågeffektläge vanligtvis en kraftig minskning av funktionaliteten. I många fall kan tillämpningar tåla funktionsförluster under en begränsad tid. Men i vissa fall är en exakt kontroll över effektförbrukningen avgörande för att upprätthålla driften. Analog Devices ADuCM3029-processor har utformats specifikt för att stödja mer komplexa krafthanteringskrav i tillämpningar med ultralåg effekt.
ADuCM3029 är byggd kring en ARM® Cortex®-M3-kärna och har 256 kB Flash med felkorrigeringskod (ECC) och 64 kB konfigurerbart SRAM med multiparitetsbitskydd. En variant, ADuCM3027, har 128 kB Flash men annars samma funktioner som ADuCM3029.
Tillsammans med en integrerad Crypto Accelerator för maskinvara innehåller enheterna en 8-kanalig, 12-bitars analog-till-digitalomvandlare (A/D-omvandlare) och digital kringutrustning som SPI, I2C, UART, GPIO, synkron seriell port (SPORT) och 25-kanalig DMA-styrenhet. Även med sina omfattande funktioner förbrukar enheten normalt mindre än 30 μA/MHz i aktivt läge. Men med ADuCM3029 kan konstruktörer ytterligare justera balansen mellan funktionella prestanda och effektförbrukning.
Justera effekt/prestanda
Som de flesta avancerade MCU:er har ADuCM3029 flera strömlägen utformade att minska effekten vid låg aktivitet. I viloläge förbrukar enheten normalt mindre än 750 nA genom att processorkärnan och den mesta kringutrustningen stängs av och där strömmen finns kvar i programvalda SRAM-regioner. När applikationen är inaktiv kräver enhetens avstängningsläge bara 60 nA.
Men utvecklare står ofta inför scenarier som kräver viss kringutrustningsaktivitet när processorn är inaktiv. För att hantera det här problemet har ADuCM3029 ett extra strömläge, flexibelt viloläge (Flexi). Flexi-läget sänker effektförbrukningen till bara 300 μA, med funktionalitet som ligger mellan aktivt läge och vilolägen. I Flexi-läge förblir enheten i viloläge och viss kringutrustning som anges av utvecklaren är aktiv (tabell 1).

Tabell 1: Strömlägen i Analog Devices ADuCM3029-MCU aktiverar (grönt) eller inaktiverar (rött) automatiskt strömmen till vissa on-chip-block men tillåter fortfarande utvecklare att styra effekten till viss kringutrustning (orange) eller till och med att konfigurera storleken på SRAM som behålls (*) vid viloläge. (Tabellkälla: Analog Devices)
Utvecklare kan sätta MCU:n i Flexi-läge genom att ställa in MODE-bitar i enhetens PMG_PWRMOD-register på 0 och köra WFI-instruktionen (Wait For Interrupt). Med processorkärnan inaktiv kan utvecklaren hålla specifik kringutrustning funktionell genom att skriva 0 till varje kringutrustnings motsvarande bit i MCU:ns CLKG_CLK_CTL5-register. Trots att enheten inte kan köra instruktioner i det här läget kan den fortsätta att utföra aktiviteter som DMA-överföringar mellan kringutrustning och minne.
Flexi-läget ger möjlighet att behålla driften i kringutrustning och har en energieffektiv lösning på ett vanligt problem i sensortillämpningar där en eller flera sensorer måste samplas under viss tid innan processorn blandas in. I sådana fall kan utvecklare använda den integrerade A/D-omvandlarens autocykelläge för att utföra en eller flera omvandlingar på vissa kanaler och ställa in DMA-styrenheten på att överföra samplingarna automatiskt till SRAM. Efter ett antal omvandlingar angivna av programmeraren och tillhörande DMA-överföring utfärdar DMA-styrenheten Interrupt för att väcka kärnan för efterföljande bearbetning av de samplade data (figur 1).

Figur 1: I Flexi-läge är Analog Devices ADuCM3029:s processorkärna i vila medan kringutrustningen är i drift, så att åtgärder som DMA-överföring av flera kanalers A/D-omvandlarsamplingar som bara väcker processorn när det har slutförts. (Bildkälla: Analog Devices)
Cache och klockor
När det gäller funktionalitet kontra prestanda ger Flexi-läget och andra lågeffektlägen konstruktörer en kraftfull mekanism för att minska effekten betydligt i konstruktionerna. För många tillämpningar, som batteridrivna system, behöver konstruktörer ofta mer detaljerad kontroll över effektförbrukningen. Med ADuCM3029 kan konstruktörer ytterligare minska effekten genom att utnyttja en kombination av konventionella och nya metoder.
Bland typiska konventionella metoder kan användningen av instruktionscache minska åtkomsten till off-chip-minne eller on-chip-minne med hög effektförbrukning som Flash. I ADuCM3029-baserade system kan utvecklare allokera så mycket som 4 kB SRAM att fungera som cache. I praktiken beror specifika strömbesparingar på antal träffar i cachen men Analog Devices noterar att användningen av cache i vissa typiska benchmark-tillämpningar kan minska effektförbrukningen betydligt (tabell 2).
|
Tabell 2: Konfigurera Analog Devices ADuCM3029 att använda visst SRAM som cache, typiska benchmark-tillämpningar kan köras på effektnivåer som närmar sig lågeffekt-SRAM istället för Flash med högre effekt. (Tabellkälla: Analog Devices)
Frekvensskalning är en annan sedan länge använd metod för att minska effekten. Lägre processorsklockfrekvens ger långsam instruktionskörning men även lägre effektförbrukning (figur 2). Men till skillnad från många andra metoder kan utvecklare med ADuCM3029 dynamiskt ändra klockfrekvenser separat för processorn och för kringutrustningen. Här använder enheten en faslåst slinga och klockdelare som drivs med en 26 MHz intern oscillator eller extern kristall för att generera klockor för on-chip-resurser som processor, minne och gränssnitt. En 32 kHz intern oscillator eller extern kristall driver enhetens realtidsklockor (RTC) och watchdog-timer. Utvecklare kan ändra enhetens respektive klockregister under körtiden för att ändra klockfrekvenser så att de matchar ändrade tillämpningskrav eller möjligheter till effektminskning.

Figur 2: Konstruktörer kan helt enkelt ange några register i Analog Devices ADuCM3029 för att skala MCU:ns klockfrekvens direkt och åstadkomma motsvarande minskning i effektförbrukningen. (Bildkälla: Analog Devices)
Förbättrad kraftväg
Förutom stödet för mer konventionella effektminskningsmetoder har ADuCM3029 även nyare metoder baserade på specialiserade maskinvarufunktioner. En on-chip Buck-omvandlare konstruerad i ADuCM3029:s kraftväg överbryggar differensen mellan enhetens spänningsintervall, VBAT (1,74–3,6 V), och den interna driftspänningen för digitala domäner (1,2 V).
I normal drift hämtar en integrerad LDO-regulator den här interna spänningen. Som i alla typiska LDO-regulatorer avleder standardkraftvägen helt enkelt överskottsenergi när differensen mellan LDO-regulatorns matning och utgångsspänningen är stor, vilket resulterar i förlorad kraft. Men med den här MCU:n kan konstruktörer minska förlusten vid högre matarspänning med bara några få externa kondensatorer (figur 3). På programvarusidan skriver utvecklare till Buck-kontrollregistret (PMG_CTL1) för att aktivera Buck-omvandlaren.

Figur 3: Med hjälp av bara några kodrader och några externa kondensatorer kan utvecklare aktivera Analog Devices ADuCM3029-enhetens on-chip Buck-omvandlare för att minska spänningsnivån som tillförs till enhetens LDO-regulator. (Bildkälla: Analog Devices)
Baserat på en högeffektiv, kondensatorbaserad pumptopologi minskar omvandlaren spänningsnivån som tillförs till LDO-regulatorn. Till följd av det får MCU:n en dramatisk minskning av effektförbrukningen vid höga VBAT-spänningsnivåer (figur 4). Vid nivåer under cirka 2,3 V försätts Buck-omvandlaren i förbikopplingsläge och följer VBAT.

Figur 4: Vid matningsspänningsnivåer (VBAT) över cirka 3 V minskar ADuCM3029-enhetens on-chip Buck-omvandlare MCU-effektförbrukningen och åstadkommer 50 % relativ minskning i aktivt läge, som visas här, samt i Flexi-läge. (Bildkälla: Analog Devices)
Effektoptimerad sampling
Funktioner som cachning, frekvensskalning och on-chip DC/DC-omvandling fungerar på systemnivå för att minska effektförbrukningen. På tillämpningsnivå hjälper funktioner som Flexi-läge till med effektminskningen för kringutrustningsoperationer som sensorsampling. Men också dessa metoder kan visa sig vara otillräckliga i vissa tillämpningar. Till exempel belastas batteridrivna IoT-enheter ofta med samplingssensorer vid mycket låga insamlingsnivåer eller övervakar periodvis vissa externa processer.
För tillämpningar med långsam periodisk aktivitet förlitar sig utvecklare normalt på MCU:ns realtidsklocka för att hålla en konsekvent tidsbas och driva nedräkningstimers som används till att väcka MCU:n vid exakta, förutbestämda tidpunkter. Därför har avancerade MCU:er normalt strömlägen som behåller RTC-funktionaliteten även i lågeffektlägen. Med ADuCM3029 har utvecklare tillgång till två separata realtidsklockor, RTC0 och RTC1, som ger ytterligare alternativ för att balansera ström och prestanda.
Som noteras i tabell 1 stöder båda realtidsklockorna drift i aktivt läge, Flexi-läge och viloläge men bara RTC0 förblir tillgänglig under avstängningsläge med lägsta effekt. Men i de andra lägena ger distinkta skillnader mellan de två klockorna utvecklare flexibilitet i implementeringen av mer komplexa tidstillämpningar. Till exempel räknar RTC0 tiden vid 1 Hz i sekunder, vilket begränsar den till väckningstider som bara anges i sekunder. RTC1 kan förskalas i ett brett intervall och ge väckningstider ned till 30,7 μs. Även effekten skiljer sig för varje klocka. RTC0 drivs med den primära försörjningen (VBAT), medan RTC1 drivs med den interna 1,2 V-effektdomänen. I det fallet minskar användningen av Buck-omvandlaren (tillval) ytterligare RTC1:s effektiva effektförbrukning. Och kanske viktigare: RTC1 stöder Analog Devices SensorStrobe-mekanism, en unik samplingsfunktion med låg effekt inbyggd i ADuCM3029.
SensorStrobe är ett RTC1-speciallarm som genererar en utgångspuls på MCU:ns RTC1_SS1-stift. Utvecklare kan ansluta ADuCM3029:s SensorStrobe-utgång till en extern multisensorenhet som Analog Devices ADXL363 för att skapa en samplingslösning med mycket låg effekt med bara några få komponenter (figur 5).

Figur 5: ADuCM3029:s SensorStrobe-mekanism ger externa enheter ett stabilt, synkroniserat larm, vilket tillåter implementering av ett enkelt datahämtningssystem när det kombineras med en integrerad sensor som Analog Devices ADXL363. (Bildkälla: Analog Devices)
Analog Devices tillhandahåller det specifika delsystemet som visas i figur 5 som en del av dess ADuCM3029 EZ-KIT-utvecklingssats, ADZS-UCM3029EZLITE. Tillsammans med en enkel maskinvarukonfiguration kräver den här metoden bara några rader kod för att konfigurera de associerade enhetsregistren och starta SensorStrobe-mekanismen (lista 1).
#define PRD_VAL 255
void SensorStrobe_Cfg()
{
// SensorStrobe Pin Mux
*pREG_GPIO2_CFG |= (0x3 << BITP_GPIO_CFG_PIN11);
// Återställ RTC-räknaren
while(*pREG_RTC1_SR1 & 0x0180); //vänta till synkronisering
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 0;
while(!(*pREG_RTC1_SR0 & 0x0080 )); //vänta på synkronisering
// SensorStrobe-konfiguration
// Första trigger- och Autoreload-värde = 255 RTC-antal
// RTC körs idealiskt vid 32 kHz, 1 RTC-antal = 30,7 us
while(*pREG_RTC1_SR5 != 0);
*pREG_RTC1_SS1ARL = PRD_VAL;
// SensorStrobe som ska utlösas efter 255 RTC-antal
*pREG_RTC1_CR4SS = (1 << 9); //Aktivera Autoreload
*pREG_RTC1_SS1 = PRD_VAL; // Första Compare-värde
// Aktivera SensorStrobe
*pREG_RTC1_CR3SS = 1;
while(*pREG_RTC1_SR4 != 0x77FF);
// Initiera räknarvärdet till noll
while(*pREG_RTC1_SR1 & 0x0600);
*pREG_RTC1_CNT0 = 0;
*pREG_RTC1_CNT1 = 0;
while(!(*pREG_RTC1_SR0 & 0x0400));
// Aktivera (starta) räknaren
while(*pREG_RTC1_SR1 & 0x0180); //vänta till synkronisering
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 1;
while(!(*pREG_RTC1_SR0 & 0x0080)); //vänta på synkronisering
return;
}
Lista 1: Utvecklare måste bara konfigurera några få enhetsregister för att dra nytta av Analog Devices ADuCM3029 MCU:ns SensorStrobe-funktion. (Bildkälla: Analog Devices)
Vid SensorStrobe-drift sätter utvecklare ADuCM3029 i viloläge för att säkerställa minimal MCU-effektförbrukning under den utökade samplingsprocessen. När MCU:n är i viloläge räknar RTC1 till det önskade värdet som anges i registervärdena som etablerats vid SensorStrobe-konfigurationen. När SensorStrobe-räkningsvillkoren har uppfyllts skickas SensorStrobe-signalen till ADXL363:s brytaringångsstift, vilket väcker den enheten. ADXL363 kör i sin tur egna datasamplingsrutiner. När de är klara skickar ADXL363 en signal till MCU:ns brytarstift, så att MCU:n vaknar ur viloläge och börjar bearbeta de samplade data.
Utvecklare implementerade tidigare rutinmässigt den här typen av utökad samlingsdesign med hjälp av en extern realtidsklocka, timer eller till och med en enkel oscillator. Förutom att ge en mer komplex konstruktion delar användningen av en extern klockkälla upp tidsynkroniseringen mellan de samplade data och MCU:ns egen tidsbas. I sådana fall har utvecklare som använde den tidigare metoden behövt effektivt sampla om sina data för att normalisera dess tidsstämpel till MCU:ns. Med genom att använda RTC1 i SensorStrobe-läge kan utvecklare säkerställa att samplingstidsstämplar förblir synkroniserade med själva ADuCM3029-baserade systemet.
Utvecklare kan potentiellt hitta ett antal diskreta mekanismer som närmar sig de integrerade krafthanteringsfunktionerna i ADuCM3029. Men genom att utnyttja den enhetens interna funktioner kan tekniker enkelt åstadkomma en bättre balans mellan effekt och prestanda.
Slutsatser
Behovet av system med lägre effekt fortsätter att utmana utvecklares möjlighet att uppnå maximala prestanda i mindre, energieffektiva konstruktioner. Mot bakgrund av denna svårighet kräver varje tillämpning en unik balans mellan prestanda och effektförbrukning.
De integrerade krafthanteringsfunktionerna i Analog Devices ADuCM3029-MCU ger utvecklare med flexibiliteten som krävs för att lättare hitta den balansen. Med hjälp av den här enheten kan utvecklare leverera den unika kombinationen av höga prestanda och låga effekt som krävs för varje specifik tillämpning.
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.




