wersja mobilna
Online: 736 Piątek, 2016.12.09

Technika

Mikrokontrolery Atmel - 32-bitowe rozwiązania o dużej wydajności i efektywności energetycznej oraz łatwości użycia

wtorek, 19 czerwca 2012 14:27

Atmel proponuje konstruktorom dwie różne architektury 32-bitowych mikrokontroleróww zależności od stopnia złożoności projektu i wymagań nakładanych na aplikację. Układy 32-bitowe AVR charakteryzują się efektywnym energetycznie rdzeniem, wydajnymi układami peryferyjnymi i bardzo niskim poborem mocy. Z kolei układy SAM3 i SAM4 z rdzeniem Cortex odznaczają się większą ilością pamięci, szerszą ofertą dostępnych opcji i posuniętą standaryzacją. Wszystkie te produkty obsługiwane są za pomocą jednego bezpłatnego narzędzia projektowego - Atmel Studio 6, które nie ma limitów kodu.

Spis treści » 32-bitowy AVR - wyjątkowo efektywny mikrokontroler
» Inne funkcje oszczędzania energii picoPower w UC3
» Wydajność przetwarzania UC3
» Rzegląd rodzimych układów UC3C
» Układy SAM3S i SAM4S upraszczają konstrukcję systemów
» SAM3X i SAM3A dostarczają więcej możliwości komunikacyjnych
» Narzędzia
» Kontrola wersji i ponowne użycie kodu
» Podsumowanie
» Pokaż wszystko
32-bitowy AVR - wyjątkowo efektywny mikrokontroler

Rys. 1. W procedurze obsługi przerwania procesor odczytuje aktualną prędkość wirowania silnika z przetwornika A/C, porównuje ją z wartością docelową, a następnie zmienia wartość PWM i przechodzi w stan uśpienia

32-bitowe mikrokontrolery AVR pojawiły się na rynku w 2006 roku jako tzw. procesory aplikacyjne. W rok później ukazała się wersja UC3, która obsługuje zestaw 16-bitowych i 32-bitowych instrukcji, zapewniający szybsze wykonywanie programu, większą zwartość kodu wynikowego i niższy pobór mocy.

CPU zaskakuje wysoką wydajnością, zapewnianą przez równolegle wykonujące się potoki rozkazów mnożenia, dzielenia i MAC. Rdzeń obsługuje arytmetykę stało- i zmiennoprzecinkową z opcjonalnym zaokrąglaniem i nasycaniem wyniku. Instrukcje charakterystyczne dla DSP są obsługiwane bezpośrednio przez rdzeń, zapewniając wysoką wydajność operacji arytmetycznych, co ma znaczenie w takich aplikacjach.

Przykładem może być dekodowanie mp3, które UC3 realizuje szybciej od równoważnego Corteksa-M4. Układy UC3 zapewniają wyjątkowo niski pobór mocy dzięki znanej technologii picoPower. W trybie aktywnym UC3 jest w stanie zejść poniżej 165 μA/MHz przy w pełni aktywnych potokach, na przykład w czasie obliczeń rekurencyjnych ciągu Fibonacciego.

Układ Brown Out Detector usypia działanie bloków procesora, kiedy nie są używane, co dodatkowo jest w stanie jeszcze bardziej zredukować poziom pobieranej mocy. Układy z picoPower zostały zaprojektowane w procesie technologicznym o niskich wartościach prądów upływu dla elementów półprzewodnikowych, stąd UC3L - pierwszy układ 32-bitowy picoPower, pobiera tylko 9 nA prądu w stanie shutdown.

Kolejną innowacją w rodzinie układów UC3 jest system zdarzeń (Event System). Jest to rozszerzenie podobne w działaniu do kanału DMA, w którym peryferia systemu mikroprocesorowego mogą w momentach wyzwalanych zdarzeniami zewnętrznymi komunikować się między sobą bez konieczności wykorzystywania CPU. System zdarzeń działa ze stałym opóźnieniem 2 cykli zegarowych, co pozwala na tworzenie aplikacji i systemów działających w czasie rzeczywistym.

Zdarzenia nie gubią się i są obsługiwane na poziomie układów peryferyjnych, co jest istotną zmianą w porównaniu do tradycyjnych metod obsługi zdarzeń w systemach o niskim poborze mocy, jaką realizuje się za pomocą przerwań. Za ich pomocą budzi się procesor po to, aby wykonał żądaną akcję lub przesłał dane. Przykładowo podczas sterowania silnikiem za pomocą PWM użytkownik może chcieć, aby silnik obracał się z minimalną prędkością.

Aby to osiągnąć, trzeba okresowo zmieniać wartości okresu sygnału PWM, aby silnik cały czas obracał się ze stałą prędkością. Wykorzystanie do tego celu przerwań, które wybudzają CPU, wydaje się naturalne. W procedurze obsługi przerwania procesor odczytuje aktualną prędkość wirowania silnika z przetwornika A/C, porównuje ją z wartością docelową, a następnie zmienia wartość PWM i przechodzi w stan uśpienia (rys. 1).

System zdarzeń automatyzuje te działania. Zdarzenie wygenerowane przez zegar RTC może wybudzić przetwornik A/C i wymusić konwersję, następnie przetwornik może autonomicznie przesłać zdarzenie do komparatora analogowego i zażądać porównania bieżącej prędkości obrotowej z ustawionym poziomem. W kolejnym kroku komparator analogowy przesyła zadanie do PWM po to, aby prędkość obrotowa została zmniejszona lub zwiększona.

Operacje te dzieją się całkowicie bez angażowania CPU. System zdarzeń zwykle obsługuje zdarzenia synchroniczne, ale można go wykorzystać do obsługi także asynchronicznej. W tym przypadku zdarzenia mogą być obsługiwane w czasie, gdy układy peryferyjne znajdują się w stanie głębokiego uśpienia, a zegar systemowy jest wyłączony.

Za prawidłowe działanie odpowiadają funkcje takie jak Sleep Walking i Asynchronous Wakeup będące częścią Advanced Power Manager. Sleep Walking pozwala systemowi zdarzeń obsługiwać zdarzenia asynchroniczne w różnych trybach uśpienia dzięki wymuszeniu lokalnego taktowania na czas przetwarzania zdarzenia. Po zakończeniu operacji żądanie wygasa, zegar jest wyłączany i moduł ponownie jest usypiany.

O wybudzeniu lub uśpieniu danego modułu decydują poszczególne obwody peryferyjne, one także są w stanie w razie potrzeby uruchomić CPU, stąd wzięła się nazwa tej funkcji Sleep Walking. Kolejny przykład dotyczy sytuacji, gdy za pomocą mikrokontrolera dokonywane są pomiary sygnału analogowego. Gdy jest on poniżej pewnej wartości progowej, system nic nie robi, tylko czeka do kolejnego pomiaru.

Gdy sygnał przekracza ustalony próg, wykonywane są określone operacje. W takim przypadku układ zegara RTC wybudza procesor ze stanu uśpienia w regularnych odstępach czasu będących częstotliwością próbkowania. CPU wykonuje pomiar i podejmuje odpowiednią akcję. W takim przypadku, gdy spojrzy się na zużywaną energię, w większości przypadków można założyć, że po odczytaniu wartości z przetwornika A/C nie będzie podejmowana żadna akcja.

To wielkie marnotrawstwo energii zasilającej. Za pomocą Sleep Walking układ peryferyjny może wybudzić system, gdy pojawi się zdarzenie kwalifikujące się do obsługi. RTC wybudza wówczas przetwornik A/C w regularnych odstępach czasu i układ ten porównuje zmierzoną wartość z progiem odniesienia. Dopiero gdy zmierzona wartość będzie większa od progowej, procesor zostanie wybudzony ze stanu uśpienia. Tak działające układy peryferyjne Atmel nazywa inteligentnymi.


Inne funkcje oszczędzania energii picoPower w UC3

Dynamiczne skalowanie częstotliwości taktowania pozwala mikrokontrolerowi zmieniać wydajność przetwarzania w locie, dopasowując ją do bieżącego obciążenia. Obniżanie i zwiększanie częstotliwości zegara jest płynne i następuje w czasie rzeczywistym. Układ zegara czasu rzeczywistego ma dodatkowy tryb kalendarzowy z wieloma funkcjami dotyczącymi rzadziej pojawiających się zdarzeń.

RTC obsługuje lata przestępne i pobiera jedynie 600 nA ze źródła zasilania. Wszystkie układy picoPower działają przy zasilaniu 1,6 V. Oznacza to, że wszystkie funkcje, łącznie z programowaniem Flash i przetwornikiem A/C, mogą pracować przy zasilaniu napięciem od 3,6 V aż do 1,6 V.

Stąd układy z rodziny UC3 mogą być bezpośrednio zasilane ze stabilizatora 1,8 V, co zapewnia 10% zapas w stosunku do wartości granicznych. Tak niskie wartości przekładają się na niższy koszt i wymagania w stosunku do źródła zasilania.


Wydajność przetwarzania UC3

Rys. 2. Rodzina układów UC3

Architektura układów UC3 została opracowana we współpracy ze specjalistami od kompilatorów po to, aby oprogramowanie to mogło w maksymalny sposób wykorzystać zaawansowane funkcje sprzętowe dostępne w rodzinie UC3 podczas generowania kodu maszynowego z języka C. Dobre dopasowanie skutkuje bardziej efektywnym kodem.

Co więcej, architektura mikrokontrolera jest przystosowana do uruchamiania programów z pamięci Flash, a efektywność działania układu sięga tutaj 1,5 DMIPS/MHz. Jest to istotnie więcej niż w konkurencyjnych rozwiązaniach, przykładowo Cortex M3 ma teoretyczną wydajność 1,25 DMIPS/ MHz przy wykorzystaniu pamięci Flash.

Układy z rodziny UC3 zawierają zestaw instrukcji DSP, które są w sposób natywny obsługiwane przez rdzeń mikrokontrolera. Jest ich ponad 70, w tym wykonywane w jednym cyklu mnożenie z dodawaniem (MAC). Biblioteka funkcji DSP stanowi część pakietu Atmel Software Framework, jest zoptymalizowana przez ekspertów zajmujących się układami AVR i szeroko wykorzystywana przy realizacji funkcji związanych z filtrowaniem sygnałów cyfrowych i transformacjami.

Z ramach rodziny UC3 dostępne są wersje wyposażone w jednostkę obliczeń zmiennoprzecinkowych. Zapewnia ona większą wydajność przetwarzania w porównaniu do rozwiązania, gdy wykorzystujemy tradycyjny układ posługujący się arytmetyką stałoprzecinkową i bibliotekę oprogramowania pozwalającą na pracę z liczbami rzeczywistymi.

Poza większą wydajnością obliczeń blok FPU zapewnia większą precyzję rachunków i w konsekwencji lepszy zakres dynamiki cyfrowych bloków przetwarzania sygnałów. Blok obliczeń zmiennoprzecinkowych dostępny jest we wszystkich układach z serii UC3C. Za wysoką wydajność komunikacji i wymiany danych pomiędzy blokami wchodzącymi w skład mikrokontrolera odpowiedzialna jest pamięć SRAM typu dual port sprzężona z CPU.

Pozwala ona na wielokrotne i jednoczesne odczyty i zapisy danych, co przyspiesza komunikację i likwiduje konieczność oczekiwania na dostęp. Pamięci są połączone z CPU za pomocą kilku magistral, przez co zapewniony został szybki i równoległy dostęp do danych. W ten sposób połączona jest pamięć Flash, SRAM i inne bloki mikrokontrolera o dużej wydajności.

Poza nimi dostępnych jest wiele kanałów DMA i wsparcie dla wielokrotnego buforowania danych (ping-pong). Daje to możliwość strumieniowania danych z USB bezpośrednio do bufora ping-pong w pamięci SRAM z gwarancją maksymalnego i nieprzerwanego transferu. Architektura UC3 zapewnia najwyższą szybkość komunikacji z interfejsami, takimi jak Hi-Speed USB, Ethernet, bardzo szybkie SPI i USART (do 33 Mbit/s przy 66 MHz).

Układy z rodziny UC3 wyróżniają się także najwyższą wydajnością analogowych bloków peryferyjnych. Dostępne są 12-bitowe przetworniki, w których konwerter analogowo-cyfrowy może zawierać do 16 kanałów, ma wejście różnicowe i zapewnia wyjściowy strumień sygnału cyfrowego o szybkości ponad 1,5 MSPS.

Kanały wejściowe przetwornika mają podwójne układy sample-and-hold zapewniające wysoką dokładność konwersji nawet dla małych sygnałów wejściowych. Dostępny jest także wzmacniacz programowalny. Wyjście przetwornika połączone jest z systemem zdarzeń i układem DMA. Wbudowany w mikrokontroler przetwornik C/A zawiera 4 niezależne kanały i obsługuje sygnały cyfrowe o szybkości ponad 1 MSPS.

Całość uzupełnia analogowy komparator o elastycznych trybach pracy z możliwością wprowadzenia w tryb niskiego poboru mocy. Jednym z trybów jest praca okienkowa, gdzie układ wskazuje, czy badany sygnał jest poniżej, w środku lub powyżej ustalonych progów napięciowych. W układach UC3 można znaleźć wiele unikalnych funkcji, dzięki którym użycie mikrokontrolera staje się prostsze.

Przykładem jest strona użytkownika (user page), czyli miejsce do przechowywania danych odporne na przypadkowe skasowanie pamięci lub upgrade firmware. Zawiera ona 16 bajtów zlokalizowanych w specjalnym obszarze pamięci on-chip i można wykorzystać je do przechowywania danych, takich jak numer wersji firmware, adres MAC, unikalny numer seryjny urządzenia i podobnych informacji.

W wybranych układach rodziny UC3 dostępny jest także blok chronionego dostępu (Secure Access Unit), za pomocą którego można przydzielać aplikacjom pracującym w systemie operacyjnym dostęp do wybranych bitów konfiguracyjnych i flag oraz urządzeń peryferyjnych.

Kolejnym udogodnieniem jest FlashVault, pozwalający na podział oprogramowania systemowego na części i zablokowanie wybranych obszarów w pamięci tak, aby zawartości nie można było skopiować, odczytać lub debugować. Możliwe jest tylko wykonanie znajdującego się tam programu.

Funkcja ta przydaje się do ochrony tajemnic firmowych w sytuacji, gdy oprogramowanie firmware tworzone jest razem z kilkoma innymi firmami, do których nie mamy pełnego zaufania. Wszystkie układy UC3 zawierają zaprogramowany fabrycznie bootloader, współpracujący domyślnie z portem USB, a w jednostkach bez niego z interfejsem UART. Kod źródłowy bootloadera jest dostępny i dla użytkownika dostępnych jest wiele bezpłatnych narzędzi pozwalających na skorzystanie z tych możliwości.