Dlaczego warto zamienić 8-bitowy mikrokontroler… na inny 8-bitowy mikrokontroler?
Gdy możliwości konwencjonalnego mikrokontrolera 8-bitowego zostają wyczerpane i nie pozwala on obsłużyć bardziej rozbudowanej aplikacji ani uzyskać wyższej szybkości, zazwyczaj rozważana jest jego wymiana na model 32-bitowy. Układ 32-bitowy jest w stanie szybciej wykonywać bardziej złożony kod, pozwalając na implementację bardziej rozbudowanych funkcjonalności i zwiększenie wydajności systemu. Obecnie dostępne mikrokontrolery 32-bitowe mogą kosztować jedynie pół dolara, dzięki czemu wpływ takiej zamiany na końcową cenę produktu będzie znikomy.
Wśród obserwatorów rynku często występuje przekonanie o niepodważalnej wyższości mikrokontrolerów 32-bitowych pod względem szybkości i możliwości. Od kilku lat przewidują oni spadki sprzedaży modeli 8-bitowych oraz upowszechnienie się projektów wykorzystujących potencjał modeli 32-bitowych.
Jednak obserwatorzy ci nadal nie doczekali się spełnienia swych przewidywań. Okazuje się, że użytkownicy układów 8-bitowych mogą spodziewać się większego wzrostu wydajności w najnowszych generacjach 8-bitowych mikrokontrolerów, niż w przypadku tanich 32-bitowych alternatyw. Co więcej, pozostając przy platformie 8-bitowej, programiści zachowują korzyści wynikające ze znajomości dotychczasowych narzędzi programistycznych i list rozkazowych oraz możliwości ponownego wykorzystania kodu aplikacji. Ponadto układy 8-bitowe cechują się wyższą trwałością i możliwością pracy z większymi prądami.
Niniejszy artykuł opisuje najnowszą architekturę popularnej na rynku rodziny 8-bitowych mikrokontrolerów Microchip PIC, demonstrując możliwość zwiększenia wydajności procesora bez zwiększania długości słowa.
Przełom w architekturze nowych mikrokontrolerów 8-bitowych
Wymiana mikrokontrolera 8-bitowego na 32-bitowy zazwyczaj jest rozważana, gdy projektant uzna, że 8-bitowy rdzeń procesora stanowi wąskie gardło spowalniające wykonywanie kodu aplikacji. Czynnik ten ogranicza też możliwość pracy systemów w czasie rzeczywistym.
Implementując projekt na 32-bitowym mikrokontrolerze, opartym np. na rdzeniu ARM Cortex-M, wąskie gardło zostaje natychmiast usunięte – kosztem wyższego poboru mocy i złożoności kodu. Innymi słowy, migracja na platformę 32-bitową usuwa problem wąskiego gardła poprzez poszerzenie tego gardła – procesor jest w stanie wykonać więcej użytecznych instrukcji.
Innym rozwiązaniem tego samego problemu jest stworzenie dodatkowych, pracujących równolegle zasobów obliczeniowych, które znacząco obniżają liczbę instrukcji obsługiwanych przez procesor 8-bitowy. Jednocześnie utrzymany jest dostęp do dodatkowych i bardziej zaawansowanych funkcji zwiększających możliwości systemu. Właśnie takie rozwiązanie firma Microchip oferuje obecnie w postaci swej najnowszej serii 8-bitowych mikrokontrolerów PIC.
Omawiane rozwiązanie polega na stworzeniu architektury, która obejmuje dotychczasowy, pojedynczy 8-bitowy rdzeń procesora, a także dodatkowe i różnorodne układy peryferyjne niezależne od rdzenia (CIP). Każdy układ CIP stanowi zasób sprzętowy obsługujący określoną funkcje. Wybór funkcji dostępnych w układach CIP został dopasowany do typowych wymagań użytkowników układów 8-bitowych. Obejmują one funkcje analogowe, generatory PWM i innych przebiegów, timery pozwalające m.in. na pomiar kąta lub czasu ładowania, funkcje logiczne i matematyczne, funkcje monitorowania, układy peryferyjne obsługujące komunikację przewodową i bezprzewodową, wykrywanie dotyku i moduły kontrolera wyświetlacza, a także układy zarządzania zasilaniem.
Zapewne niektórzy użytkownicy będą chcieli zaimplementować funkcje niedostępne w układach CIP i nie odniosą korzyści z nowej architektury. Tym niemniej większość typowych projektów 8-bitowych będzie w stanie efektywnie wykorzystać paletę układów CIP dostępnych w nowych mikrokontrolerach PIC.
Przez „układy peryferyjne niezależne od rdzenia” Microchip rozumie zasoby sprzętowe, które pracują w sposób autonomiczny w tle. Przekazując funkcje do układów CIP projektant jest w stanie zmniejszyć obciążenie głównego procesora.
Użycie układów CIP można zobrazować na przykładzie tostera – typowego urządzenia 8-bitowego. Komponenty zasilacza impulsowego tostera można skonstruować z układów CIP, takich jak:
- Programowalny kontroler impulsowy
- Sterowniki PWM o rozdzielczości 10 lub 16 bitów
- Komparatory wysokiej szybkości
- Przetwornik cyfrowo-analogowy (DAC)
- Układ kompensacji zmian napięcia
Ponieważ elementy grzewcze tostera pobierają duży prąd, istnieje ryzyko wywoływania interferencji elektromagnetycznych prowadzących do zakłóceń i trzasków, jak również obciążenia komponentów systemu, gdy toster jest włączony. 8-bitowy mikrokontroler PIC jest w stanie wyeliminować to ryzyko, implementując przetwornicę typu ZVS. Także w tym wypadku dostępne są odpowiednie komponenty CIP: funkcja analogowego wykrywania przejścia przez zero oraz timer umożliwiają pomiar odstępu między momentami zerowego napięcia. To pozwala projektantowi ustalić czas włączenia nagrzewających się elementów w momencie zerowego napięcia lub w jakimkolwiek innym momencie czasowym między tymi punktami.
Co więcej, oferta CIP obejmuje układy wejścia/wyjścia (I/O) o wysokiej wydajności prądowej – są one podłączone do pojedynczego pinu chronionego przez obwód stabilizujący prąd. Układ taki może dostarczyć prąd wejściowy do 100 mA, jest zatem wystarczający do obsługi zewnętrznego triaka włączającego elementy grzewcze. Wbudowana funkcja detekcji przejścia przez zero oraz wysokoprądowe wyjście I/O pozwalają projektantowi wyeliminować zewnętrzne komponenty, które byłyby konieczne w przypadku innych mikrokontrolerów.
Implementacja wykrywania przejścia przez zero w układzie CIP nie wymaga stosowania izolatora optycznego od strony zasilania. Z kolei wysokoprądowe wyjście I/O eliminuje potrzebę użycia zewnętrznego tranzystora mocy. To obniżenie liczby wykorzystywanych komponentów przekłada się na obniżenie kosztów materiałów, kosztów montażu i oszczędność powierzchni płytki.
W istocie cały układ zarządzania zasilaniem można zaimplementować w 8-bitowym mikrokontrolerze PIC bez udziału głównego procesora. Wszystkie wymienione funkcje można w łatwy sposób skonfigurować za pomocą narzędzia MPLAB Code Configurator, które stanowi wtyczkę dla zintegrowanego środowiska programistycznego MPLAB X przeznaczonego do mikrokontrolerów PIC. Jest to środowisko graficzne generujące kod C, który należy dodać do podstawowego kodu programu. Takie rozwiązanie znacząco ogranicza potrzebę korzystania ze specyfikacji mikrokontrolera przez programistę, skracając czas i ułatwiając implementację układów peryferyjnych w 8-bitowym rozwiązaniu.
Kontrola napędu jest innym zastosowaniem, w którym dobrze sprawdzają się układy CIP. Wśród nich znajduje się układ akceleratora matematycznego, który stanowi sprzętowy układ mnożący i może w ciągu 8 cykli procesora zrealizować funkcję, która w normalnej implementacji zajmowałaby 520 cykli.
Innym przykładem zadania wymagającego obliczeniowo, które w normalnym przypadku byłoby realizowane przez procesor 8-bitowy, może być automatyczna regulacja jasności ekranu LCD w zależności od natężenia światła otoczenia. W konwencjonalnej architekturze mikrokontrolera takie zadanie polega na odczycie wartości z zewnętrznego czujnika oświetlenia, obliczeniu odpowiedniej jasności piksela, a następnie zaktualizowaniu wartości piksela sterującej wyświetlaczem. Takie podejście wymaga wykonania złożonej procedury, którą demonstruje rys. 1.
Rys. 1. Złożony automat zaimplementowany w warstwie programowej wymaga intensywnej pracy procesora.
Nowa 8-bitowa architektura mikrokontrolerów PIC pozwala większość tych zadań wykonać w konfigurowalnej komórce logicznej – jednym z układów CIP, widocznym na rys. 2. W tym wypadku wtyczka MPLAB Code Configurator ponownie została wykorzystana do konfiguracji wybranych funkcji logicznych, takich jak AND, OR, NAND lub NOR oraz przerzutników. Szeregowy interfejs w postaci kolejnego układu CIP łączy procesor z konfigurowalną jednostką logiczną, a sterownik PWM – trzeci układ CIP – odpowiada na regulację prądu, co pokazano na rys. 3.
Konwencjonalna implementacja programowa, pokazana na rys. 1, wykorzystuje całą moc procesora pracującego z szybkim zegarem i może nawet przekroczyć możliwości mikrokontrolera opartego na 32-bitowym rdzeniu ARM Cortex-M0+. Układy CIP pozwalają niemal całkowicie wyeliminować to obciążenie procesora, dzięki czemu może on wykonywać inne operacje systemu, jak też pracować z niższym zegarem i wolniejszym oscylatorem. To z kolei przekłada się na obniżony pobór mocy, jak też mniejszy koszt.
Rys. 2. Prosty układ do sterowania pikselami oparty na konfigurowalnej komórce logicznej, która zastępuje funkcję programową w typowej implementacji z użyciem konwencjonalnego mikrokontrolera.
Rys. 3. Ta prosta implementacja zmniejsza obciążenie procesora do jednej instrukcji na każdy cykl odświeżania.
Nowe podejście do implementacji systemów
Przykłady opisane wyżej dowodzą, że znaczne zmniejszenie obciążenia CPU można uzyskać poprzez implementację kluczowych fragmentów aplikacji w sprzętowych układach CIP zamiast stosowania procedur programowych wykonywanych przez procesor. Takie rozwiązanie pozwala zwiększyć wydajność procesora bez potrzeby migracji projektu na zupełnie nową platformę 32-bitową.
Jest to innowacyjne podejście do implementacji systemów, które wymaga od projektantów rozpoznania fragmentów aplikacji możliwych do realizacji w układach CIP. Jednocześnie liczba odwołań do procesora powinna zostać ograniczona do minimum. Wtyczka MPLAB Code Configurator sprawia, że ta metoda implementacji typowych 8-bitowych funkcji staje się znacznie prostsza. Wtyczka stanowi intuicyjne narzędzie, które w praktyce zapewnia dużą oszczędność czasu.
Projektanci gotowi na skorzystanie z nowego rozwiązania będą w stanie wprowadzić nowe funkcjonalności do istniejących gotowych produktów oraz zwiększyć wydajność systemu bez konieczności migracji na układy 32-bitowe. Uzyskają też oszczędność energii oraz zmniejszenie kosztu systemów.
8-bitowe mikrokontrolery nadal mają przed sobą długą przyszłość.