Mikrokontrolery o niskim poborze mocy – przegląd rozwiązań

| Technika

Zastosowań dla mikrokontrolerów o niskim poborze mocy przybywa, głównie dzięki popularyzacji Internetu Rzeczy, urządzeń przenośnych oraz elektroniki noszonej. W komponentach tego typu implementowane są różne rozwiązania konstrukcyjne, które zwiększają efektywność zarządzania zużyciem energii. W artykule przedstawiamy ich przykłady.

Mikrokontrolery o niskim poborze mocy – przegląd rozwiązań

W przypadku urządzeń zasilanych bateryjnie zmniejszenie poboru mocy jest krytycznym celem projektowym. Ograniczając zużycie energii, wydłuża się żywotność baterii, a zarazem pozwala to na użycie mniejszej i lżejszej baterii, a nawet na całkowite z niej zrezygnowanie na rzecz pozyskiwania energii zasilania z otoczenia. Można dzięki temu nie tylko ograniczyć koszty, ale również zmniejszyć rozmiary oraz wagę urządzenia. Te dwie cechy, w połączeniu z jak najrzadszą potrzebą ładowania akumulatorów, są kluczowe w elektronice użytkowej oraz Internecie Rzeczy.

Dlatego w zestawieniu z niskim zużyciem energii na znaczeniu tracą nawet wydajność i szybkość obliczeniowa mikrokontrolerów. Oczywiście wciąż są to ważne ich cechy, ale nie dąży się już do osiągnięcia ich maksimum za wszelką cenę, ponieważ priorytetem jest energooszczędność. Tę konstruktorzy starają się osiągnąć, stosując różne ulepszenia, choć uzyskanie znaczącego zmniejszenia zużycia energii wymaga radykalnej zmiany w projektowaniu.

Od czego zależy pobór mocy?

Sumaryczny pobór mocy ma dwie składowe: prąd upływu, pobierany w stanie spoczynku i składową dynamiczną, przy przełączaniu stanów logicznych. Generalnie dominuje ta druga, zwłaszcza przy wyższych napięciach zasilania. Składowa dynamiczna jest proporcjonalna do częstotliwości sygnału zegarowego. Dlatego w mikrokontrolerach energooszczędnych zwykle nie przekracza ona 50 MHz, podczas gdy te, w których optymalizacja poboru mocy nie jest priorytetem, pracują przy częstotliwościach taktowania rzędu setek megaherców, a nawet powyżej 1 GHz.

Ponieważ jednak składowa dynamiczna jest też wprost proporcjonalna do kwadratu napięcia pracy, to właśnie przede wszystkim ta wielkość ma decydujący wpływ na ograniczenie zużycia energii (jednocześnie, chociaż nie w takim stopniu, wpływa też na składową statyczną). Przykładowo, w porównaniu z poborem mocy przy napięciu przełączania 1,8 V, w razie jego obniżenia do 0,5 V uzyskuje się aż 13-krotne zmniejszenie prądu, a przy 0,3 V nawet jego 36-krotną oszczędność.

Praca przy poziomach progowych znacznie poniżej tych tradycyjnych wymaga jednak zupełnie innego podejścia do projektowania struktur scalonych. Te w swoich mikrokontrolerach w postaci technologii SPOT (Subthreshold Power Optimized Technology) zaimplementowała, opatentowała i skomercjalizowała już jakiś czas temu firma Ambiq.

Historia technologii SPOT

Koncepcja SPOT nie jest jednak nowa – już w latach 70. zeszłego wieku dostrzeżono jej potencjał. Jej pierwsze ówczesne wdrożenia obejmowały rozruszniki serca i tagi RFID, lecz poza tym nie zyskała powszechnej akceptacji. Ponownie zainteresowano się nią dopiero w latach 90. zeszłego wieku, ale tylko w ramach akademickich jednostek badawczych, gdzie już wówczas przewidywano, jakie znaczenie będą miały w przyszłości technologie ograniczania poboru mocy.

Wśród naukowców, którzy pracowali nad tym zagadnieniem, byli przyszli założyciele Ambiq, którym ostatecznie ideę SPOT udało się wprowadzić w życie. Nie było to jednak łatwe i dlatego nad koncepcją datowaną na lata 70. zeszłego stulecia twórcy Ambiq pracowali kilka lat, od 2004 roku, żeby dopiero w 2010 roku ją skomercjalizować. Zajęło to tyle czasu, ponieważ o ile w pierwszych projektach, które wykorzystywały tranzystory w technologii SPOT, były one liczone w dziesiątkach, co pozwalało na ich "ręczne" projektowanie, o tyle układy scalone, w których wykorzystuje się je w milionach sztuk, wymagały już odpowiednich narzędzi sprzętowych i programowych.

Wyzwania

W praktyce technologia SPOT polega na tym, by zmodyfikować projekt standardowy pod kątem działania przy niższych poziomach napięć. Badacze z firmy Ambiqu w pracy nad tym zadaniem napotkali liczne wyzwania. Takim były modele tranzystorów, które nie spełniały oczekiwań w związku z tym, że koncentrowały się na stanie wysokim, natomiast pracę w przedziale 0–napięcie progowe modelowały niedokładnie. Istniejące modele były zatem niewystarczające do symulacji na potrzeby wdrożenia technologii SPOT.

Problem stanowiły też zakłócenia, w tym przypadku ze względu na to, że stosunek poboru prądu w stanie wysokim i niskim jest rzędu zaledwie tysiąca, podczas gdy w technologii tradycyjnej jest kilka rzędów wielkości większy. Kolejne wyzwanie to wrażliwość układów w technologii SPOT na czynniki w procesie produkcyjnym, jak również środowiskowe, na przykład temperaturę. Jeśli chodzi o tę ostatnią, to konstruktorzy muszą uwzględnić fakt, że prąd w stanie niskim w podwyższonej temperaturze ma wartość zbliżoną do wartości prądu w stanie wysokim w temperaturze niższej. W związku z tym wymagane są rozwiązania, dzięki którym stany logiczne będą prawidłowo identyfikowane bez względu na warunki pracy układu.

Mikrokontrolery w technologii SPOT

Wyzwania te udało się pokonać inżynierom z firmy Ambiq, czego rezultatem było wykorzystanie technologii SPOT do opracowania rodziny mikrokontrolerów Apollo, pierwszej opartej na tym rozwiązaniu, o poborze prądu 30 μA/MHz w trybie pracy i 100 nA w trybie sleep. Bazują one na rdzeniu ARM Cortex M4F, co odróżniało je od innych mikrokontrolerów zoptymalizowanych pod kątem zużycia energii, które tradycyjnie opierały się na rdzeniu ARM Cortex-M0+. W rodzinie Apollo warto i przede wszystkim można było wybrać ten pierwszy model z dwóch powodów. Przede wszystkim zmiana ta nie skutkowała wzrostem poboru mocy. Ponadto ze względu na lepszą wydajność obliczeniową rdzenia M4F mikrokontrolery Apollo lepiej sprawdzają się w zastosowaniach wymagających odczytu i analizy danych z wielu czujników jak IoT. W rezultacie, dzięki technologii SPOT, uzyskano lepsze osiągi w zakresie poboru mocy niż w konkurencyjnych mikrokontrolerach opartych na rdzeniu M0+, a zarazem wydajność obliczeniową rdzenia M4F, wcześniej zarezerwowaną dla mikrokontrolerów bardziej energochłonnych.

Warto zaznaczyć, że nie wszystkie obwody w obrębie układów z rodziny Apollo są wykonane w technologii SPOT, chociaż jest ich przeważająca większość. Maksymalna częstotliwość zegara 24 MHz z kolei została wybrana jako kompromis między optymalnym poborem mocy a wydajnością obliczeniową jako wystarczająca w większości docelowych zastosowań mikrokontrolerów Apollo, czyli IoT i elektronice noszonej.

 
Rys. 1. Pobór prądu przy różnych napięciach progowych

Techniki oszczędzania energii

Oprócz radykalnych zmian w projektowaniu układów scalonych wprowadzane są również drobniejsze modyfikacje. Te dotyczą m.in. technik zarządzania poborem mocy. Funkcje te są m.in. zoptymalizowane pod kątem zapewnienia maksymalnej żywotności baterii, mimo dużych i szybkich zmian w poborze prądu podczas przełączania między trybami uśpienia i aktywnym. Pozwala na to wydłużenie czasu pracy w trybie uśpienia przez szybkie przejście do stanu aktywności i równie szybkie przełączenie odwrotne, dzięki czemu do minimum jest skrócony czas szczytowego poboru mocy.

Optymalizacja zużycia energii w trybie uśpienia to kolejny sposób na zaoszczędzenie energii. W tym celu często jedynym podsystemem, który pozostaje włączony w tym trybie, jest RTC, który również powinien zużywać jak najmniej energii – w mikrokontrolerach energooszczędnych ten komponent przeważnie zużywa najwyżej kilkaset nanoamperów.

Ponadto prawidłowo zaprojektowana funkcja budzenia dopasowuje czas wyjścia mikrokontrolera z trybu uśpienia do czasu wybudzenia podzespołów, z którymi współpracuje. Takimi są przykładowo przetworniki analogowo-cyfrowe, wykorzystywane, jeżeli mikrokontroler jest częścią węzła sieci sensorów albo IoT. Synchronizacja jest ważna, ponieważ jeżeli mikrokontroler przejdzie w tryb aktywny zbyt szybko, nim jeszcze wybudzi się przetwornik A/C, energia zużyta przez ten czas przez mikrokontroler zostanie zmarnowana. Oprócz tego zastąpienie licznika 16-bitowego 32-bitowym skutkuje rzadszym generowaniem przerwań wybudzania, a dzięki temu oszczędnością energii, zwykle kosztem możliwym do zaakceptowania w postaci rzadszych odczytów pomiarów z czujnika.

Ogranicza się również pobór mocy podczas bezprzewodowej transmisji danych. W tym celu zastępuje się skomplikowane protokoły komunikacyjne prostszymi, dzięki czemu dane są przesyłane krócej. Mimo to problematyczny jest odbiór danych – jeżeli główny odbiornik, który ich nasłuchuje, nie jest całkowicie wyłączony w trybie uśpienia, może zużywać duże ilości energii, a potencjalnie też zwiększać opóźnienie. Alternatywą są zoptymalizowane pod kątem bardzo niskiego poboru mocy odbiorniki WURx (Wake-Up Receiver).

Jaka jest rola odbiorników WURx?

W wielu aplikacjach Internetu Rzeczy dane, w bardzo małych ilościach, są przesyłane bardzo rzadko, na przykład zaledwie kilka razy dziennie – w takim przypadku przeważnie bateria, w którą wyposażono węzły IoT, wystarcza na cały okres eksploatacji. Jeżeli jednak dodatkowo muszą one co jakiś czas skanować sieć, aby odebrać dane, których transmisja nie jest planowana, sprawa się komplikuje. Żeby nie wiązało się to z nadmiernym zużyciem energii, podstawowy odbiornik, PCR (Primary Connectivity Radio), jest uzupełniony o odbiornik WURx, którego jedyną rolą jest skanowanie sieci i w razie wykrycia transmisji wybudzenie pracującego w trybie bardzo niskiego poboru mocy odbiornika PCR. Na pierwszy rzut oka wydaje się, że to rozwiązanie nie ma sensu, jak bowiem dodatkowy element może zmniejszyć zużycie energii?

W praktyce jednak, o ile PCR jest w pełni funkcjonalnym odbiornikiem, przeznaczonym do przesyłania oraz odbierania danych potencjalnie z szybkością Mb/s albo nawet Gb/s, WURx odbiera tylko jeden pakiet Wake-Up (WUP). Wówczas wybudza PCR.

 
Rys. 2. WURx jest odbiornikiem pomocniczym

Wyzwania w realizacji WU

W 2016 roku rozpoczęto prace nad standaryzacją odbiorników WURx w ramach specyfikacji IEEE 802.11, przemianowując je na Wake-Up Radio (WUR). Termin ten oznacza, że WURx jest nie tylko energooszczędnym odbiornikiem, ale zaimplementowano w nim także warstwę łącza danych. WUR powinien spełniać następujące warunki: pobór mocy czynnej nie może przekraczać 1 mW, musi być zapewniona kompatybilność ze starszymi urządzeniami IEEE 802.11 w tym samym paśmie i zasięg taki sam, jak w przypadku PCR. Aby spełnić pierwszy warunek, wykorzystywana jest dwustanowa modulacja OOK (On-Off Keying), która polega na włączaniu i wyłączaniu sygnału nośnej. Jest to elementarna forma modulacji cyfrowej, o prostej architekturze odbiornika opartego na detektorze obwiedni bez energochłonnych bloków porównujących fazy. Ponadto ponieważ dokładny poziom mocy sygnału nie jest ważny, regulacja wzmocnienia w odbiorniku może być uproszczona. Drugi warunek oznacza, że starsze urządzenia powinny być w stanie rozpoznać, że odbiornik WUR nie jest docelowym odbiorcą danych, by wstrzymać się z transmisją. Informuje o tym specjalne pole w ramce WUP. Ostatni warunek jest najtrudniejszy do spełnienia – w tym celu maksymalnie obniża się prędkość transmisji do zaledwie 62,5 kb/s.

 
Rys. 3. Schemat blokowy węzła IoT z odbiornikiem WURx

Kontrolery pomocnicze

Na rysunku 3 przedstawiono schemat blokowy węzła IoT z odbiornikiem WURx. Gdy wykryje on transmisję, wybudza mikrokontroler, który z kolei włącza urządzenia peryferyjne, takie jak przetwornik A/C i podstawowy odbiornik. Funkcja WURx może być zaimplementowana w mikrokontrolerze albo w oddzielnym układzie scalonym.

Podobnym rozwiązaniem jest skorzystanie z kontrolera czujnika, który pełni analogiczną funkcję, jak odbiornik WURx w komunikacji bezprzewodowej. Podczas gdy główny mikrokontroler jest zwykle układem 32-bitowym, kontroler sensora jest typowo układem 16-bitowym, zoptymalizowanym pod kątem poboru mocy, który działa niezależnie. Tak jak WURx pozwala głównemu odbiornikowi na pozostawanie w trybie sleep tak długo, jak to tylko możliwe, tak kontroler czujnika umożliwia dłuższą pracę w trybie uśpienia głównego mikrokontrolera, który jest wybudzany tylko w celu wykonywania zadań wymagających dużej mocy obliczeniowej.

 
Rys. 4. Kontroler czujnika wybudza główny mikrokontroler tylko w razie potrzeby

 

Monika Jaworowska