Wybór mikrokontrolera do nowych projektów: 8- czy 32-bitowy?

| Prezentacje firmowe Artykuły

Wzrost popularności 32-bitowych mikrokontrolerów w ostatnich latach jest ogólnie znany. Możliwości, jakie dają mikrokontrolery 32-bitowe i bogactwo układów peryferyjnych tłumaczą, dlaczego doświadczeni konstruktorzy wybierają je do nowych projektów. Konstruktorzy doskonale zdają sobie sprawę z tego, że coraz bardziej skomplikowane urządzenia wymagają dużej mocy obliczeniowej. Nie bez znaczenia są też zintegrowane peryferia oraz łatwy dostępu do narzędzi programistycznych oraz bibliotek.

Wybór mikrokontrolera do nowych projektów: 8- czy 32-bitowy?

Większość 32-bitowych mikrokontrolerów jest opartych na bardzo popularnych rdzeniach ARM i w związku z tym konstruktorzy mają pewność, że będą mogli skorzystać z narzędzi z różnych źródeł, szerokiego zakresu zestawów uruchomieniowych oraz sprzętu do testowania. Bliższe spojrzenie na trendy panujące na rynku mikrokontrolerów ujawnia, że nie tylko 32-bitowe mikrokontrolery wykazują znaczny wzrost popularności.

Wzrost sprzedaży mikrokontrolerów 8-bitowych jest zbliżony do 32-bitowców - 6,4 w porównaniu do 6,9% dla procesorów 32-bitowych. Inni analitycy podają, że tempo wzrostu sprzedaży mikrokontrolerów 8- i 32-bitowych jest identyczne. Trend wzrostowy w zakresie 8-bitowych mikrokontrolerów wyraźnie podkreśla, że musi być jakiś istotny powód, dla którego 8-bit MCU są stale stosowane. Celem tego artykułu jest przedstawienie powodów, dla których 8-bitowe mikrokontrolery zachowują duży udział w rynku mikrokontrolerów.

Istotne różnice

Tabela 1. Udział w rynku elektroniki wybranych grup mikrokontrolerów, źródło: iSuppli

Podstawową różnicą pomiędzy układami 8- i 32-bitowymi są: struktura kosztów i cen, wydajność procesora, łatwość obsługi, wydajność sprzętowa oraz statyczny pobór energii. Przy tworzeniu nowego projektu konstruktorzy muszą starannie oszacować wymagania dla MCU, biorąc pod uwagę wydajność, niezbędną liczbę interfejsów i dla urządzeń zasilanych bateryjnie - wszystkie istotne źródła poboru prądu.

Bez wątpienia układy 32-bitowe są wydajniejsze niż 8-bitowe, ale inżynierowie muszą wybrać pomiędzy tym, co najlepszego jest dostępne na rynku, a rzeczywistymi wymaganiami aplikacji. I jest to raczej wybór pomiędzy tym, co jest odpowiednie dla aplikacji, a nie ilu bitowy rdzeń procesora powinien być zastosowany.

Naturalnie na tę decyzję ogromny wpływ ma także koszt elementów. Krótko mówiąc, dla mniejszej liczby bramek prostsza jednostka 8-bitowa będzie tańsza od 32-bitowej. Porównując mikrokontrolery 8- i 32-bitowe najbardziej popularnych i wiodących producentów, każdy 8-bitowy mikrokontroler, który ma podobną wielkość pamięci Flash, liczbę wyjść itp. będzie o ok. 20% tańszy. Ale jest to tylko jeden z powodów. Kolejnym ważnym aspektem jest łatwość, z jaką projektant może przystąpić do tworzenia nowej konstrukcji opartej na 8-bitowych mikrokontrolerach.

Łatwość w tworzeniu nowych konstrukcji

Tabela 2. Porównanie układów 8- oraz 32-bitowych dla wybranego scenariusza

Uruchomienie pierwszej działającej aplikacji na mikrokontrolerze opartym o rdzeń ARM Cortex-M wymaga znajomości architektury oraz wiedzy na temat systemu taktowania rdzenia oraz peryferiów. Należy zadbać o ustawienie taktowania dla rdzenia, magistrali AHB, APBA, pamiętać należy także o liczbie cykli oczekiwania dla pamięci Flash. Zupełnie inaczej wygląda to w przypadku układów 8-bitowych Atmela.

Na przykład tinyAVR oraz megaAVR wymagają zainicjowania wskaźnika stosu, co zazwyczaj zabiera 4 linie kodu i aplikacja jest gotowa do startu. Wybór źródła taktowania, poziomu zadziałania dla brown-out detectora, resetu są pre-programowane i z domyślnymi wartościami układ jest w stanie działać. W układach 8-bitowych układy peryferyjne oraz CPU pracują na tych samych częstotliwościach, w związku z tym projektanci nie muszą obawiać się opóźnień w synchronizacji pomiędzy poszczególnymi elementami.

Wydajność

W rzeczywistości większość konstrukcji nie ma wysokich wymagań obliczeniowych. Zwykle wymagane są niewielkie operacje na danych, dlatego zbilansowanie rzeczywistych potrzeb z wymaganiami dotyczącymi zużycia energii oraz połączeniami peryferiów jest niezbędne.

Na przykład prosty termostat większość czasu jest w stanie uśpienia. Budzi się, aby zmierzyć temperaturę, a następnie włącza lub wyłącza przekaźnik lub przesyła instrukcje do kontrolera hosta i ponownie wpada w stan uśpienia. Wymagania obliczeniowe tej aplikacji są małe podobnie jak wiele innych aplikacji - detektory ognia, elektronarzędzia, przepływomierze, czy urządzenia kontroli.

Wymagania sprzętowe

Tabela 3. Pobór prądu wybranych mikrokontrolerów

Wiele współczesnych mikrokontrolerów ma zintegrowane różnego rodzaju funkcjonalności bezpośrednio związane z hardware. W przypadku Atmela zarówno rodzina AVR 8-bitowa, jak i ARM 32-bitowa jest to tzw. event system (system zdarzeń). Jest on zestawem funkcji sprzętowych, który pozwala na współdziałanie urządzeń peryferyjnych bez udziału rdzenia mikrokontrolera (CPU).

Pozwala to peryferiom na przesyłanie sygnałów wprost do innych bloków i zapewnia krótki i w 100% przewidywalny czas reakcji. Podczas pełnego korzystania z funkcjonalności systemu zdarzeń możliwa jest konfiguracja układu, aby wykonywał skomplikowane operacje z niewielkim udziałem procesora (CPU), oszczędzając jednocześnie cenną pamięć oraz czas wykonania.

W takiej sytuacji szybkość procesora nie jest jedynym decydującym czynnikiem. Należy zadać pytanie, ile cykli zajmie odpowiedź na przerwania, uruchomienie obsługi przerwania ISR oraz powrotu z niego. Jak pokazuje poniższy przykład, 8-bitowy mikrokontroler będzie bardziej wydajny w zakresie obsługi zdarzenia. Weźmy pod uwagę prosty przykład otrzymania 1 bajta na interfejsie SPI, wykorzystując przerwanie do jego wykrycia, a następnie uruchamiając proste ISR do odczytania bajta z obwodowego SPI i przechowania go w pamięci SRAM.

Tabela 2 zawiera porównanie pomiędzy 8-bitowym mikrokontrolerem Atmel AVR i 32-bitowym ARM Cortex M0+. Wymagane 12 cykli w stosunku do 33 cykli równe jest teoretycznie maksymalnej przepustowości SPI - 1,67 MB/s (13,3 Mbps) dla 8-bit CPU i 606 KB (4,8 Mbps) dla 32-bitowego CPU, gdy działają z częstotliwością 20 MHz.

Wydajność przetwarzania numerycznego może mieć także wpływ na stos i wymaganą pamięć. Zastosowanie algorytmu Fibonacciego jest bardzo dobrym sposobem na testowanie wymagań pamięciowych. Ponieważ używa się tylko zmiennej lokalnej, wszystko musi być wrzucone do stosu. Gdy porównujemy mikrokontrolery 8-bit AVR z ARM 32-bit Cortex-M0+ oraz zastosujemy 15-stopniowy rekurencyjny algorytm Fibonacciego, AVR korzysta w sumie z 70 bajtów stosów, włączając w to 30 powrotów (15 głębokich wywołań). Mikrokontroler oparty na platformie ARM używa 192 bajty (60 bajtów to stos powrotów). Oznacza to, że CSTACK jest przeszło trzykrotnie większy od rozwiązań 8-bitowych. Potwierdza to fakt, iż aplikacja na 32-bitowym mikrokontrolerze wymagać może 1,5-3 razy więcej pamięci SRAM w porównaniu do układu 8-bitowego.

Pobór energii

Tabela 4. Średni pobór prądu układów 8- oraz 32-bitowych

Na koniec należy przyjrzeć się kolejnemu ważnemu czynnikowi, jakim jest pobór energii statycznej. Może on być kluczowym czynnikiem decydującym o wyborze pomiędzy mikrokontrolerami 8- i 32-bitowymi, szczególnie dla w aplikacjach z zasilaniem bateryjnym. Tabela 3 ilustruje różnice w poborze energii między tymi mikrokontrolerami, zarówno w trybie statycznym, jak i aktywnym.

Agresywne technologie produkcyjne skutkują wzrostem prądu tranzystora, który podwaja się z każdym kolejnym procesem i jest proporcjonalny do liczby bramek. Ponadto upływ prądu gwałtownie rośnie w wyższych temperaturach, co może mieć znaczenie nawet w przy projektach konsumenckich. Wszędzie z sobą zabieramy telefony komórkowe, czy osobiste odtwarzacze multimedialne i wielokrotnie mogliśmy się przekonać, że latem temperatury w samochodzie często przekraczają 40°C.

Ilość czasu, jaką mikrokontroler spędzi w trybie aktywnym w stosunku do trybu statycznego ma znaczący udział w całkowitym poborze energii przez aplikację. Naturalnie stosunek trybu aktywnego do statycznego różni się w zależności od wymagań danej aplikacji. Biorąc pod uwagę wcześniejszy przykład przerwania SPI (tabela 2) i przy założeniu, że przepustowość danych SPI wynosi 80 kbps, 8-bitowy mikrokontroler 1,2% czasu spędzi w trybie aktywnym w porównaniu do 3,3% w przypadku mikrokontrolerów 32-bitowych.

Pobór energii zmienia się także wraz z technologią półprzewodnikową wykorzystaną w procesie produkcji. Ogólnie im bardziej zaawansowany proces tym niestety większe są prądy upływu w tranzystorach stanowiących bazę układu, co przekłada się na większy pobór mocy w stanie statycznym. Wraz z postępem w zakresie miniaturyzacji układów scalonych wartość natężenia prądu upływu jest bowiem na tyle duża, że straty mocy z tym związane mogą stanowić nawet 50% całkowitej mocy rozpraszanej w danym układzie.

Istotne jest również to, że jest to stały składnik bilansu energetycznego, którego wartość może dodatkowo wzrastać wraz ze wzrostem temperatury. Czyli układy 8-bitowe wykonane w starszych procesach mogą mieć lepsze parametry w zakresie poboru statycznego prądu, zwłaszcza w wyższych temperaturach. Dlatego wybierając mikrokontroler warto zdecydować się na taki model, w projekcie oraz produkcji którego zaimplementowano rozwiązania zmniejszające natężenie prądu upływu.

Wnioski

Na rozważania, czy w przyszłym projekcie zastosować 8 czy 32-bitowe mikrokontrolery wpływa wiele różnych czynników. Prowokują one wiele dyskusji, ale z pewnością oszacowanie wymagań technicznych dla MCU jest sporym wyzwaniem dla inżynierów. Obecnie istnieje wiele 8-bitowych mikrokontrolerów, które spełniają potrzeby przetwarzania na niskim poziomie oraz łączności bezprzewodowej. Na przykład seria Atmel ATmegaRFR2 ma chip 2,4 GHz zgodny z IEEE 802.15.4, który jest idealnym rozwiązaniem łączności bezprzewodowej dla tanich urządzeń zasilanych bateryjnie.

Ingar Fredriksen
Pal Kastnes

Atmel
JM elektronik sp. z o.o.
www.jm.pl