Ograniczanie poboru prądu w mikrokontrolerach

| Technika

Najważniejsze, a zarazem przeciwstawne cele, jakie stawiane są urządzeniom elektronicznym, to cena, wydajność i energooszczędność. Potrzeba ustawicznego poprawiania tych parametrów zwiększyła się wraz z rozwojem multimedialnych i medycznych urządzeń przenośnych oraz wprowadzaniem coraz bardziej restrykcyjnych norm ekologicznych. W artykule przedstawiono technologie ograniczające pobór mocy w procesorach, stosowane przez wiodących producentów mikrokontrolerów.

Ograniczanie poboru prądu w mikrokontrolerach

Rys. 1. Układ pomiarowy do badania efektywności energetycznej

Każde urządzenie można podzielić na funkcjonalne bloki i analizować pobór mocy dla każdego z nich. Najczęściej wykorzystywanym i najprostszym sposobem zmniejszenia poboru dla bloku procesora jest optymalne przełączanie jego pracy między stanem aktywnym a różnymi poziomami uśpienia.

Większość procesorów oferuje kilka stopni uśpienia, różniących się liczbą nieaktywnych modułów oraz czasem potrzebnym na powrót do stanu aktywnego. Niedawno firma Atmel wprowadziła nową technologię Pico Power oraz udostępniła dane demonstrujące wpływ poprawnego stosowania technik programistycznych podczas projektowania energooszczędnych urządzeń. Swoje opracowania w tym zakresie ma też wielu innych producentów.

Pico Power firmy Atmel

Tabela 1. Przykładowe efekty optymalizacji programowej

W nowej serii mikrokontrolerów Pico Power firmy Atmel poszczególne bloki funkcjonalne mogą pracować z różnymi częstotliwościami bazowymi, możliwe jest też całkowite odłączenie zasilania od wybranych modułów.

Zawarty w artykule przykład, opracowany w oparciu o dane producenta, pokazuje, jak dużą rolę podczas projektowania energooszczędnych urządzeń ma fakt dobrego poznania mechanizmów oferowanych przez zastosowany procesor i świadomego ich użycia.

W badaniu wykorzystano układ z rysunku 1. Mikrokontroler ATmega88PA zasilony jest z kondensatora ładowanego przed startem systemu napięciem 5,5 V. Czas pracy układu na zgromadzonym w kondensatorze ładunku określa skuteczność poszczególnych technik.

Układ ma za zadanie odczytanie wartości napięcia na wejściu analogowym i wysłanie jej w kodzie ASCI przez UART. Program symuluje następnie 1000 pustych cykli procesora i powtarza całą pętlę co sekundę. Jako punkt referencyjny zastosowano "nieoptymalny" kod, w którym procesor taktowany jest wewnętrznym zegarem 8 MHz, dane na UART wysyłane są z prędkością 19,2 kb/s, a interwał 1-sekundowy uzyskuje się, czytając flagę przerwania timera.

Rys. 2. Struktura wewnętrzna mikrokontrolerów PIC

W tej konfiguracji układ pracuje przez 6 sekund. Pierwszym sposobem wydłużenia pracy procesora jest włączenie rezystorów polaryzujących (pull up) na nieużywanych wejściach oraz odłączenie zasilania od nieużywanych modułów (SPI, TWI i timerów). Czas pracy wzrósł o 50% do 9 sekund.

W kolejnym kroku zmniejszono częstotliwość pracy procesora z 8 do 2 MHz. Dzięki temu można obniżyć wartość napięcia BOD (ramka) z 2,7 do 1,8 V. Zabieg ten wydłużył czas pracy ponadczterokrotnie do 40 sekund. Efekt ten jest jednak spowodowany nie tylko zmniejszeniem poboru prądu, lecz również obniżeniem granicznego napięcia na kondensatorze, przy którym procesor nadal pracuje.

Wprowadzenie procesora w stan uśpienia i wyłączenie BOD podczas uśpienia (procesor nie wykonuje wtedy żadnych zadań) pozwala na wydłużenie czasu pracy prawie 5-krotnie. Dodatkowo na poprawę wyniku wpłynęło zwiększenie prędkości transmisji danych z 19,2 do 115,2 kb/s. Dzięki temu czas potrzebny na przesłanie danych jest krótszy i procesor może szybciej przejść w stan uśpienia.

Układ zoptymalizowany działa ostatecznie 217 sekund. Z danych tych wynika, jak bardzo ważnym czynnikiem podczas doboru procesora są jego parametry pracy w trybach uśpienia i możliwie szybkie ich przełączanie. Od wielu lat zdecydowanym liderem w produkcji procesorów o niskim poborze mocy jest firma Texas Instruments z rodziną procesorów MSP. Nowe miejsce w tym obszarze próbuje wywalczyć sobie firma Microchip, wprowadzając technologię Deep Sleep.

Deep Sleep firmy Microchip

Tabela 2. Dane porównawcze procesorów Microchip i TI

Firma Microchip stara się zdobyć rynek procesorów małej mocy, reklamując tryb uśpienia, w którym procesor pobiera 20 nA prądu. Taka wartość to ewenement i żadnemu innemu producentowi nie udało się jej osiągnąć.

Technologię Deep Sleep wprowadzono w rodzinie 16-bitowych procesorów PIC: w strukturze procesora wbudowano przełączniki, które pozwalają na pełne odcięcie zasilania od wybranych modułów. System ten eliminuje problem wycieku prądu w tranzystorach w całym odłączonym module.

W najgłębszym stanie uśpienia zasilonych pozostaje tylko kilka modułów (rys. 2), takich jak moduł przerwań zewnętrznych, część pamięci RAM, watchdog czy RTC. Dwa moduły oznaczone gwiazdką to odpowiednio DSBOR i DSWDT. Są to moduły Brown Out Reset i watchdog zaprojektowane specjalnie do pracy w stanie Deep Sleep.

Ich pobór prądu ograniczono do 450-500 nA, gdzie w zwykłych rozwiązaniach wartości te sięgają 5-50 μA. W przytaczanym przez producenta przykładzie procesora pobierającego 20 nA w stanie Deep Sleep żaden z tych modułów nie jest aktywny.

Ze względu na wyłączenie części modułów zmniejszyła się także liczba możliwych sposobów wybudzenia procesora. Wybudzenie procesora uzyskuje się poprzez zewnętrzne wejście przerwania lub resetowania procesora, alarmy RTC, przerwanie watchdoga lub przerwanie z BOD (tylko w procesorach, które pozostawiają ten moduł włączony w Deep Sleep).

Niemożliwe jest wybudzenie procesora z modułów takich jak przetwornik A/C czy bloków komunikacji zewnętrznej. Nowatorskim rozwiązaniem jest tutaj odłączenie bloku pamięci RAM przy równoczesnym zabezpieczeniu jej krytycznych sekcji w mniejszym bloku pamięci podręcznej, który pozostaje aktywny.

Tak intensywne ograniczenie funkcji procesora powoduje jednak długi czas wybudzania. Może on trwać nawet 1-3 ms i jest niewiele krótszy niż proces uruchamiania procesora po podłączeniu zasilania. Ważnym argumentem konkurencji było niebezpieczeństwo wyłączania zasilania pamięci RAM oraz wyłączenie modułu BOR. Połączenie tych dwóch rozwiązań może mieć bardzo niebezpieczne konsekwencje i wiele trudno przewidywalnych zachowań systemu.

Pamięć FRAM Texas Instruments

Rys. 3. Konstrukcja komórki pamięci FRAM

Konstruktorzy firmy Texas Instruments podkreślają od dawna, że "Low-power jest składnikiem ich DNA". Nagłośniony rewelacyjnie niski pobór prądu w procesorach Microchip uderzał głównie w dotychczasowego monopolistę na tym rynku - rodzinę procesorów MSP. W odpowiedzi inżynierowie tej firmy przeprowadzili własne badania porównawcze, w których podważyli sensowność danych przedstawionych przez konkurenta.

Głównymi zarzutami było zasilenie procesora napięciem 1,8 V, ryzykowne wyłączanie modułów BOD i części RAM oraz oczywiście długi czas przywracania systemu do stanu aktywnego. Niemniej oferta TI, pod wpływem aktywności w tej dziedzinie konkurencyjnych firm, została rozszerzona o procesory zaopatrzone w pamięci typu FRAM.

Technologia ta w porównaniu do Flash ma niski pobór mocy, szybkie cykle zapisu oraz wysoką trwałość. Zasada działania tych pamięci opiera się na efekcie ferroelektrycznym, występującym w krysztale PZT, w którego skład wchodzą atomy Pb, Zr, Ti oraz tlenu. Zr i tlen tworzą w tej strukturze dipole elektryczne, które ulegają uporządkowaniu pod wpływem pola magnetycznego i pozostają uporządkowane po jego odłączeniu.

BOR/BOD

Brown Out Reset/Detection - moduł nadzorujący wartość napięcia zasilania. Przy spadku zasilania do zadanej wartości moduł wywołuje reset procesora i pozostawia ten stan aż do powrotu zasilania. System ten zapewnia poprawną i przewidywalną pracę pozostałych modułów, oraz pozwala ograniczyć liczbę nieprawidłowych wpisów do pamięci nieulotnych.

Dzięki temu zjawisku pamięć FRAM daje się łatwo i szybko programować i nie wymaga wcześniejszego czyszczenia. Zapisanie jednego słowa w pamięci FRAM zajmuje ok. 100 ns, gdzie w technologii Flash ta sama czynność zajmuje dziesiątki, a nawet setki μs.

Pamięć typu FRAM może służyć równocześnie jako RAM, Flash i EEPROM, dzięki czemu upraszcza się struktura układu oraz oprogramowanie. Deklarowana przez producenta trwałość pamięci FRAM osiąga wartość 1014 cykli, co jest wynikiem nieporównywalnym do 10-100 tysięcy cykli oferowanych w pamięciach Flash.

W przypadku zmiany wartości tej samej komórki pamięci co 1 ms może ona ulec uszkodzeniu po 3 tysiącach lat. W obliczeniach tych należy jednak pamiętać, że pamięć ta używana jest także jako RAM.

Dla zabezpieczenia pamięci programu przed przypadkowym zapisem procesory TI zaopatrzone są w moduły ochrony pamięci. Podczas opracowywania oprogramowania ustala się statyczne obszary pamięci służące jako pamięć programu, pamięć podręczna lub EEPROM. Z pewnością układy z FRAM mają szansę na osiągniecie jeszcze lepszej wydajności energetycznej w układach mikrokontrolerów.

Bartłomiej Grześkowiak