Bilanciamento delle prestazioni MCU e del consumo energetico con funzioni integrate
Contributo di Editori nordamericani di DigiKey
2017-05-10
Da tempo gli sviluppatori hanno avuto accesso agli MCU con i loro stati operativi a bassa potenza, che spengono le periferiche e persino il core stesso per ridurre i requisiti di potenza di un sistema. Tuttavia, per alcune applicazioni gli sviluppatori hanno bisogno di un controllo più diretto sull'utilizzo dell'energia per garantire che le parti del sistema rimangano alimentate per soddisfare i requisiti funzionali chiave.
I progettisti in passato hanno usato dispositivi di gestione energetica standalone per inserire un controllo preciso dell'alimentazione. Per contro, l'MCU ADuCM3029 di Analog Devices è una soluzione integrata in grado di aiutare gli sviluppatori a raggiungere più facilmente il massimo livello delle prestazioni riducendo allo stesso tempo al minimo il consumo energetico nei progetti realizzati per l'acquisizione dati dei sensori, dei dispositivi indossabili e di altre applicazioni per l'Internet delle cose (IoT).
MCU e gestione energetica
Per progetti a basso consumo, i progettisti possono trovare un'ampia serie di MCU avanzati progettati con opzioni di risparmio energetico. I dispositivi pensati per applicazioni attente ai consumi vantano di norma capacità quali la variazione della frequenza che permettono agli ingegneri di bilanciare le prestazioni risparmiando sui consumi.
In genere, le modalità a basso consumo offrono una riduzione dell'energia graduale spegnendo un numero crescente di sottosistemi MCU finché rimane operativo solo il circuito minimo richiesto per risvegliare l'MCU. Come ulteriore ausilio per la gestione energetica, MCU a bassissimo consumo aggiungono speciali modalità operative che gestiscono separatamente l'alimentazione al core del dispositivo e alle sue periferiche. Anche in questi casi, queste modalità speciali a volte spengono le periferiche in gruppo, oppure usano meccanismi automatici che lasciano allo sviluppatore poco controllo sui dettagli dell'allocazione dell'energia.
Sebbene la gestione energetica degli MCU in genere offra diverse modalità operative, la transizione a una modalità di basso consumo comporta un decadimento marcato delle funzionalità. In molti casi, le applicazioni possono tollerare perdite di funzionalità per periodi limitati. In altri casi, tuttavia, il controllo preciso del consumo energetico è essenziale per mantenere il funzionamento. Il processore ADuCM3029 di Analog Devices è studiato espressamente per supportare requisiti di gestione energetica più complessi in applicazioni a bassissimo consumo.
Basato su un core ARM® Cortex®-M3, ADuCM3029 offre 256 Kbyte di Flash ECC (codice di correzione errori) e 64 Kbyte di SRAM configurabile con protezione bit multi-parità. La variante ADuCM3027 ha 128 Kbyte di Flash, ma per il resto offre le stesse funzioni e le stesse caratteristiche del modello ADuCM3029.
Oltre a un acceleratore crittografico hardware integrato, il dispositivo include un convertitore analogico/digitale (ADC) a 8 canali, 12 bit, diverse periferiche digitali comprese SPI, I2C, UART, GPIO, porta seriale sincrona (SPORT) e un controller DMA a 25 canali. Nonostante le sue estese funzionalità, il dispositivo consuma in genere meno di 30 μA/MHz in modalità attiva. Con ADuCM3029, tuttavia, i progettisti possono regolare ulteriormente il rapporto d'equilibrio tra prestazioni funzionali e consumo energetico.
Regolazione del rapporto potenza/prestazioni
Come per gli MCU più avanzati, ADuCM3029 vanta diverse modalità di alimentazione studiate per ridurre i consumi durante i periodi di bassa attività. In modalità di ibernazione, il dispositivo consuma in genere meno di 750 nA spegnendo il core del processore e gran parte delle periferiche, mantenendo invece l'alimentazione alle aree SRAM selezionate dal programma. Quando l'applicazione non è attiva, la modalità di spegnimento del dispositivo richiede solo 60 nA.
Tuttavia, gli sviluppatori si trovano spesso a dover affrontare scenari che richiedono un certo grado di attività periferica quando il processore è inattivo. Per risolvere questo problema, ADuCM3029 mette a disposizione un'altra modalità alimentazione chiamata Flexi (sospensione flessibile). La modalità Flexi riduce il consumo energetico a soli 300 μA, offrendo al contempo funzionalità che risiedono tra la modalità attiva e quella di ibernazione. In modalità Flexi il core del dispositivo rimane in modalità sospensione, mentre le periferiche specificate dallo sviluppatore rimangono attive (Tabella 1).

Tabella 1: Le modalità di alimentazione dell'MCU ADuCM3029 di Analog Devices attivano (verde) o disattivano (rosso) automaticamente l'alimentazione a certi blocchi su chip, ma consentono comunque agli sviluppatori di controllare l'alimentazione a certe periferiche (arancione) o anche di configurare le dimensioni della SRAM mantenute (*) durante la modalità di ibernazione. (Tabella per gentile concessione di Analog Devices)
Gli sviluppatori possono mettere l'MCU in modalità Flexi semplicemente impostando su 0 i bit MODE nel registro PMG_PWRMOD del dispositivo ed eseguendo l'istruzione WFI (Wait For Interrupt). Col core del processore inattivo, lo sviluppatore può mantenere in funzione determinate periferiche scrivendo 0 in ogni bit corrispondente della periferica nel registro CLKG_CLK_CTL5 dell'MCU. Anche se il dispositivo non può eseguire istruzioni in questa modalità, può continuare a svolgere attività come i trasferimenti in memoria di DMA tra periferiche.
Dando la possibilità di mantenere le operazioni periferiche, la modalità Flexi offre una soluzione energeticamente efficiente a un problema comune in applicazioni in cui occorre campionare uno o più sensori su un certo periodo di tempo prima di coinvolgere il processore. In questo caso, gli sviluppatori possono usare la modalità ciclo automatico integrata dell'ADC per eseguire una o più conversioni su canali scelti e impostare il controller DMA in modo che trasferisca i campioni automaticamente su SRAM. Dopo un numero di conversioni specificate dal programmatore e dopo il trasferimento DMA associato, il controller DMA invia un interrupt per risvegliare il core per la successiva elaborazione dei dati campionati (Figura 1).

Figura 1: In modalità Flexi, il processore core ADuCM3029 di Analog Device è sospeso mentre determinate periferiche continuano a funzionare, permettendo operazioni quali il trasferimento DMA di più canali di campioni ADC che risvegliano il processore solo previo completamento. (Immagine per gentile concessione di Analog Devices)
Cache e clock
Nel bilanciare funzionalità e prestazioni, la modalità Flexi e altre modalità a basso consumo offrono ai progettisti un meccanismo potente per ridurre in modo significativo i consumi energetici nei propri progetti. Per molte applicazioni quali i sistemi alimentati a batteria, tuttavia, spesso i progettisti hanno bisogno di un controllo più preciso dei consumi. Con ADuCM3029, possono ridurre ulteriormente i consumi energetici sfruttando una combinazione di metodi tradizionali e nuovi.
Fra quelli tradizionali, l'uso della cache delle istruzioni può ridurre l'accesso a memoria non su chip o a memoria che assorbe energia come quella Flash. In sistemi basati su ADuCM3029, gli sviluppatori possono allocare fino a 4 kB di SRAM come cache. Nella pratica, i risparmi energetici specifici dipendono dal numero di utilizzi della cache, ma Analog Devices osserva che l'uso della cache in alcune applicazioni benchmark tipiche può ridurre in maniera significativa il consumo energetico (Tabella 2).
|
Tabella 2: Configurando ADuCM3029 di Analog Device per usare parte della sua SRAM come cache, le applicazioni benchmark tipiche possono venire eseguite a livelli di potenza vicini all'accesso SRAM a basso consumo invece che a quello Flash a consumo superiore. (Tabella per gentile concessione di Analog Devices)
La variazione della frequenza è un altro approccio tradizionale per ridurre i consumi. Frequenze di clock ridotte del processore rallentano l'istruzione di esecuzione ma abbassano anche i consumi energetici (Figura 2). Diversamente da molti altri approcci, tuttavia, ADuCM3029 permette agli sviluppatori di modificare dinamicamente le frequenze di clock separatamente per il processore e per le periferiche. In questo caso, il dispositivo usa un circuito ad aggancio di fase (PLL) e divisori di clock pilotati da un oscillatore interno a 26 MHz o da un cristallo esterno per generare clock per risorse su chip, compresi processore, memoria e interfacce. Un oscillatore interno a 32 kHz o un cristallo esterno pilotano i clock in tempo reale (RTC) del dispositivo e il timer watchdog. Gli sviluppatori possono modificare i rispettivi registri di clock del dispositivo durante il runtime per cambiare le frequenze di clock in funzione del variare dei requisiti applicativi o delle opportunità di riduzione dei consumi.

Figura 2: I progettisti impostano semplicemente alcuni registri in ADuCM3029 di Analog Device per scalare al volo la frequenza di clock dell'MCU e ottenere un calo corrispondente del consumo energetico. (Immagine per gentile concessione di Analog Devices)
Percorso di alimentazione migliorato
Oltre al suo supporto per metodi più convenzionali di riduzione del consumo, ADuCM3029 offre un approccio più nuovo basato su funzionalità hardware specifiche del dispositivo. Progettato nel percorso di alimentazione di ADuCM3029, un convertitore buck su chip colma la differenza tra l'intervallo della tensione di alimentazione del dispositivo, VBAT (1,74 V - 3,6 V), e la tensione operativa del dominio digitale interno (1,2 V).
Nel funzionamento normale, un regolatore LDO (a bassa caduta di tensione) integrato fornisce questa tensione interna. Come per qualsiasi LDO tipico, quando la differenza tra l'alimentazione dell'LDO e la tensione di carico è alta, il percorso di alimentazione predefinito dissipa semplicemente l'energia in eccesso, con conseguente spreco. Con questo MCU, invece, i progettisti possono ridurre questa perdita a tensioni di alimentazione superiori con solo pochi condensatori esterni (Figura 3). Sul lato del software, gli sviluppatori scrivono semplicemente nel registro di controllo buck (PMG_CTL1) per abilitare il convertitore buck.

Figura 3: Utilizzando solo poche righe di codice e alcuni condensatori esterni, gli sviluppatori possono permettere al convertitore buck su chip di ADuCM3029 di Analog Device di ridurre il livello di tensione applicato al regolatore LDO del dispositivo. (Immagine per gentile concessione di Analog Devices)
Fondato su una topologia della pompa di carica ad alta efficienza, basata su condensatore, il convertitore riduce il livello di tensione alimentata all'LDO. Di conseguenza, l'MCU presenta una drastica riduzione del consumo energetico a livelli di tensione all'estremità alta di VBAT (Figura 4). A livelli inferiori a 2,3 V, il convertitore buck entra in modalità bypass e segue VBAT.

Figura 4: A livelli di tensione di alimentazione (VBAT) superiori a circa 3 V, il convertitore buck su chip di ADuCM3029 riduce il consumo energetico dell'MCU, raggiungendo una riduzione relativa del 50% in modalità attiva, indicata qui, come pure in modalità Flexi. (Immagine per gentile concessione di Analog Devices)
Campionamento con ottimizzazione energetica
Funzioni come caching, regolazione della frequenza e conversione c.c./c.c. su chip lavorano a livello di sistema per contribuire a ridurre il consumo energetico. A livello di applicazione, funzioni come la modalità Flexi aiutano a ridurre i consumi energetici per operazioni periferiche quali il campionamento dei sensori. Anche questi metodi possono però rivelarsi insufficienti, in alcune applicazioni. Ad esempio, i dispositivi IoT alimentati a batteria spesso sono incaricati di campionare i sensori a velocità di acquisizione estremamente basse o di monitorare periodicamente un qualche processo esterno.
Per applicazioni con una lenta attività periodica, gli sviluppatori in genere fanno affidamento sull'RTC dell'MCU per mantenere una base temporale coerente, oltre che su timer di conto alla rovescia usati per risvegliare l'MCU in momenti precisi e prestabiliti. Di conseguenza, gli MCU avanzati presentano in genere modalità di alimentazione che mantengono la funzionalità RTC anche in modalità a bassissimo consumo. Con ADuCM3029, gli sviluppatori hanno accesso a due RTC separati, RTC0 e RTC1, che offrono ulteriori opzioni per bilanciare consumo e prestazioni.
Come notato nella Tabella 1, entrambi gli RTC supportano il funzionamento nelle modalità attiva, Flexi e di ibernazione, ma solo RTC0 rimane disponibile durante la modalità di spegnimento col consumo più basso. Nelle altre modalità, tuttavia, differenze specifiche tra i due clock danno agli sviluppatori flessibilità nell'implementazione di applicazioni di temporizzazione più complesse. Ad esempio, RTC0 conta il tempo a 1 Hz in unità di secondi, limitandolo a tempi di risveglio specificati solo in secondi. RTC1 può essere prescalato su un ampio intervallo e fornire tempi di risveglio anche di soli 30,7 μs. Anche l'alimentazione per ogni clock è diversa. RTC0 è alimentato dall'alimentazione primaria (VBAT), mentre RTC1 è alimentato dal dominio della potenza interna a 1,2 V. Di conseguenza, l'uso del convertitore buck opzionale riduce ulteriormente il consumo energetico effettivo dell'RTC1. Ma, cosa forse più importante, RTC1 supporta il meccanismo SensorStrobe di Analog Devices, una funzione esclusiva di campionamento a bassa potenza integrata in ADuCM3029.
SensorStrobe è un allarme RTC1 speciale che genera un impulso in uscita sul pin RTC1_SS1 dell'MCU. Gli sviluppatori possono collegare l'uscita SensorStrobe di ADuCM3029 a un dispositivo multisensore esterno come ADXL363 di Analog Devices per creare una soluzione di campionamento a bassissima potenza con solo pochi componenti (Figura 5).

Figura 5: Il meccanismo SensorStrobe dell'ADuCM3029 fornisce un allarme stabile, sincronizzato, a dispositivi esterni, consentendo l'implementazione di un sistema di acquisizione dati semplice quando combinato con un sensore integrato come ADXL363 di Analog Devices. (Immagine per gentile concessione di Analog Devices)
Analog Devices fornisce il sottosistema specifico illustrato nella Figura 5 come parte del suo kit di sviluppo ADuCM3029 EZ-KIT, ADZS-UCM3029EZLITE. Oltre a una configurazione semplice dell'hardware, questo approccio richiede solo poche righe di codice per impostare i registri del dispositivo associati e avviare il meccanismo SensorStrobe (Listato 1).
#define PRD_VAL 255
void SensorStrobe_Cfg()
{
// SensorStrobe Pin Mux
*pREG_GPIO2_CFG |= (0x3 << BITP_GPIO_CFG_PIN11);
// Resettare il contatore RTC
while(*pREG_RTC1_SR1 & 0x0180); //attendere sinc
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 0;
while(!(*pREG_RTC1_SR0 & 0x0080 )); //attendere sinc
// Configurazione SensorStrobe
// Trigger iniziale e valore ricarico automatico = 255 conteggi RTC
// RTC viene eseguito idealmente a 32 KHz, 1 conteggio RTC = 30,7 us
while(*pREG_RTC1_SR5 != 0);
*pREG_RTC1_SS1ARL = PRD_VAL;
// SensorStrobe da attivare dopo 255 conteggi RTC
*pREG_RTC1_CR4SS = (1 << 9); //Abilitare ricaricamento automatico
*pREG_RTC1_SS1 = PRD_VAL; // Valore di confronto iniziale
// Abilitare SensorStrobe
*pREG_RTC1_CR3SS = 1;
while(*pREG_RTC1_SR4 != 0x77FF);
// Inizializzare il valore del contatore su zero
while(*pREG_RTC1_SR1 & 0x0600);
*pREG_RTC1_CNT0 = 0;
*pREG_RTC1_CNT1 = 0;
while(!(*pREG_RTC1_SR0 & 0x0400));
// Abilitare (avviare) il contatore
while(*pREG_RTC1_SR1 & 0x0180); //attendere sinc
*pREG_RTC1_SR0 = 0xFF;
*pREG_RTC1_CR0 = 1;
while(!(*pREG_RTC1_SR0 & 0x0080)); //attendere sinc
return;
}
Listato 1: Gli sviluppatori devono impostare solo alcuni registri del dispositivo per sfruttare la funzione SensorStrobe dell'MCU ADuCM3029 di Analog Devices. (Immagine per gentile concessione di Analog Devices)
Durante il funzionamento di SensorStrobe, gli sviluppatori mettono ADuCM3029 in modalità di ibernazione per assicurare il consumo energetico minimo dell'MCU durante il processo di campionamento esteso. Mentre l'MCU rimane in modalità di ibernazione, RTC1 conta fino al valore desiderato specificato nei valori del registro stabiliti durante la configurazione di SensorStrobe. Quando le condizioni di conteggio di SensorStrobe sono soddisfatte, il segnale SensorStrobe viene applicato al pin di ingresso interrupt di ADXL363, risvegliando quel dispositivo. A sua volta, ADXL363 esegue le proprie routine di campionamento dei dati. Al completamento, ADXL363 emette un segnale sul pin di interrupt dell'MCU, causandone il risveglio dalla modalità di ibernazione e l'avvio dell'elaborazione dei dati campionati.
In passato gli sviluppatori implementavano abitualmente questo tipo di design di campionamento esteso utilizzando un RTC esterno, un timer, o anche un semplice oscillatore. Oltre ad accrescere la complessità del progetto, l'uso di una fonte di clock esterna interrompe la sincronizzazione del tempo tra i dati campionati e la base temporale propria dell'MCU. Di conseguenza, gli sviluppatori che usano l'approccio precedente hanno bisogno di ricampionare in modo efficace i propri dati per normalizzarne il timestamp su quello dell'MCU. Utilizzando RTC1 in modalità SensorStrobe, invece, gli sviluppatori possono assicurare che i timestamp rimangano sincronizzati sul sistema stesso basato su ADuCM3029.
Gli sviluppatori possono potenzialmente trovare un numero di meccanismi discreti che si avvicinano alle capacità di gestione integrata della potenza di ADuCM3029. Tuttavia, sfruttando le capacità interne di quel dispositivo, gli ingegneri possono ottenere facilmente un miglior equilibrio tra consumi e prestazioni.
Conclusione
La richiesta di sistemi che consumino meno energia continua a sfidare la capacità degli sviluppatori di ottenere il massimo delle prestazioni in progetti energeticamente efficienti e più piccoli. A peggiorare le cose, ogni applicazione richiede un equilibrio specifico tra prestazioni funzionali e consumo energetico.
Le funzioni di gestione energetica integrate dell'MCU ADuCM3029 di Analog Devices offrono agli sviluppatori la flessibilità richiesta per trovare più facilmente quell'equilibrio. Utilizzando questo dispositivo, gli sviluppatori possono ottenere la combinazione esclusiva di prestazioni elevate e basso consumo per ogni specifica applicazione.
Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di DigiKey o le sue politiche.




