Výkon 8-bitových mikrokontrolérů není pro některé aplikace dostačující a na druhé straně 32bitové mikrokontroléry mají nadměrnou spotřebu.
Řešení je použít 16bitový mikrokontrolér. Nabízí nízkou spotřebu, potřebuje jednu napájecí úroveň a zároveň poskytuje některé výhody 32bitových jader. Pokud aplikace není náročná na více podprocesů a požadavky na paměť nejsou příliš velké, pak 16bitový mikrokontrolér může poskytnout správnou úroveň výkonu s významnými úsporami energie.
Tento článek popisuje architekturu 16bitových mikrokontrolérů od Microchip Technology a Texas Instruments,
Výběr mikrokontroléru
Výběr správného mikrokontroléru pro danou aplikaci je jedním z prvních kroků, který musíme učinit. Máme na výběr mezi 8, 16 a 32bitovými mikrokontroléry.
8bitové mikrokontroléry jsou často podceňovány. Jsou schopny dosáhnout spotřeby pod 100 nA. Jejich použití je snadné a kvůli své nízké spotřebě jsou vhodné pro bateriové zařízení. Obsahují sadu registrů, která se skládá ze stavového registru, ukazatele zásobníku a jeden nebo více indexových registrů. Zásobník je často v hardwaru a program counter (PC) je pro firmware nepřístupný.
8-bitová architektura naráží na své limity, pokud potřebujeme obsloužit nějaký druh komunikace. Téměř všechny komunikační sady a síťové protokoly jsou buď 16bitové nebo 32bitové. Navíc i špičkové 8bitové mikrokontroléry nejsou schopny 16bitového adresování bez stránkování. To omezuje velikost a složitost firmwaru.
Na druhé straně se 32bitové mikrokontroléry staly populárními pro aplikace všech výkonových rozsahů. Jedná se o architektury, které snadno podporují vytváření sítí a komunikaci. Obvykle mají 32 bitové adresování, mohou podporovat matematické operace s plovoucí desetinnou čárkou, algebraické operace na špičkové úrovni a taktovací frekvence dosahuje i několika GHz. 32bitová jádra mají složitější programovací model, který může obsahovat více stavových registrů, PC(program counter) je zpřístupněn pro firmware, sofistikované řízení přerušení a dvě nebo více vrstev autentizace.
16bitové mikrokontroléry mají podobnou architekturu jako 8bitové. Mají výrazně nižší odběr proudu než 32bitové. Spotřeba energie je téměř tak nízká jako u 8bitových mikrokontrolérů. Pokud aplikace vyžaduje složité matematické operace, některé 16bitové mikrokontroléry mají integrovány matematické procesory, které mají stejný matematický výkon jako 32bitové při stejné vnitřní hodinové rychlosti.
Existuje také spousta komunikačních balíčků pro 16bitové mikrokontroléry. Ethernet, CAN, USB a Zigbee mohou běžet stejně rychle na 16bitovém i na 32bitovém mikrokontroléru za předpokladu, že aplikační kód má dostatečný výkon pro obsluhu zásobníku.
Řešení velkých polí paměti Flash pomocí 16bitového mikrokontroléru
Jedním z nejdůležitějších rozdílů mezi 32bitovou a 16bitovou architekturou je rozsah adresování paměti. 32bitové mikrokontroléry mají 32bitové adresování, které poskytuje přístup až ke 4 Gbytes paměti. 16bitové mikrokontroléry mají 16 bitové adresování, které mají přístup pouze k 64 Kbytes. Mnoho moderních 16bitových architektur však nyní obsahuje až 24 bitů rozšířeného adresování. To umožňuje zvýšení adresního prostoru na 16 Mbytů.
Dobrým příkladem rozšířeného přístupu k adresování je rodina mikrokontrolérů PIC24F od Microchip Technology, která se vyznačuje nízkou spotřebou. Jedním z těchto mikrokontrolérů je PIC24FJ1024GA. Jedná se o 16bitový mikrokontrolér, který pracuje na frekvenci 32 MHz, s 1 Mbyte Flash a 32 kB SRAM paměti. Používá jednoduchý programovací model podobný 8bitovým mikrokontrolérům (obrázek 1).
Obrázek 1: Programovací model mikrokontroléru PIC24F je podobný 8bitovému mikrokontroléru špičkové úrovně. Má architekturu s šestnácti univerzálními 16bitovými registry, ukazatelem zásobníku, programovým čítačem a pěti podpůrnými registry. (Zdroj obrázku: Microchip Technology)
PIC24 má 23bitový programový čítač, který má přístup k 8 MB programové paměti Flash. Má šestnáct 16bitových registrů s názvem Working Registers (WREG) označovaných jako W0 až W15. Registry W0 až W13 jsou registry pro všeobecné použití (GP), které lze použít k ukládání dat pod kontrolou firmwaru. W15 je vyhrazený ukazateli zásobníku (SP).
W14 slouží jako ukazatel zásobníku (Stack Frame pointer - FP) s instrukcemi LINK a UNLINK. Registr limitů zásobníku (Stack Pointer Limit Register - SPLIM) je nezávislý registr a používá se s SP, aby se zabránilo přetečení zásobníku.
PIC24 používá Harvardskou architekturu s odděleným prostorem pro adresy a data. Registr Table Page Address (TBLPAG) a registr Program Space Visibility Page Address (PSVPAG) se používají pro přístup a přenos dat mezi adresou a datovými prostory. Toto je vlastnost běžná v 32bitových architekturách, ale vzácná v 8bitových jádrech.
16bitový Repeat Loop Counter(RCOUNT) obsahuje počítadlo smyček pro instrukci REPEAT.
16bitový registr CPU Core Control (CORCON) se používá ke konfiguraci interních provozních režimů jádra PIC24.
16bitový stavový registr obsahuje bity provozních stavů jádra PIC24, včetně stavu vyplývajícího z poslední provedené instrukce.
Výkon PIC24FJ1024GA606T je 16 milionů instrukcí za sekundu při 32 MHz. Má mnoho funkcí, které se vyskytují v 32bitovém mikrokontroléru. Například 17bit x 17bit hardwarový multiplikátor, který podporuje také zlomkovou matematiku a 32bit x 16bit hardwarový dělič. To je užitečné pro koncové body IoT, které potřebují provádět výpočty s daty ze senzorů. Architektura může také číst a zapisovat z datové paměti současně bez ztráty výkonu.
PIC24FJ1024GA606T má širokou škálu standardních periferií, včetně USB On-the-Go (OTG) a současně má velmi nízkou spotřebu energie. Potřebné napájecí napětí je pouze 2,0 až 3,6 voltů a při plné zatížení čerpá maximálně 7,7mA při 32 MHz. Firmware má kontrolu nad jádrem a periferními hodinami. Existují dvě instrukce pro režim nízké spotřeby. Instrukce IDLE zastaví jádro PIC24 a zároveň umožní spuštění periferií. Instrukce SLEEP zastaví veškerou činnost zařízení s výjimkou watchdogu a detekci externího přerušení. V režimu IDLE je proud pouze 2,8 mA a v režimu SLEEP je proud mezi 10 a 45 µA v závislosti na konfiguraci periferií. Nejnižší možná spotřeba 190 nA se dosáhne v režimu SLEEP s RAM pamětí.
Pro vyšší výkon nabízí Microchip špičkový 16bitový mikrokontrolér dsPIC33EP512GP506T, který je součástí rodiny dsPIC®. Tento mikrokontrolér má 512 kB Flash paměť výkon 70 MIPS.
DsPIC má téměř stejné základní registry jako PIC24 a další registry pro instrukce zpracování digitálního signálu (DSP), včetně dvou 40-bitového uložiště a 32-bitové násobičky. Některé mikrokontroléry rodiny dsPIC jsou pinově kompatibilní s mikrokontroléry PIC24.
Výkon 70 MIPS nabízí dsPIC33, který vyžaduje napájení od 3,0 do 3,6 V při spotřebě maximálně 60 mA.
Snížení spotřeby a zvýšení výkonu
Rodina mikroprocesorů MSP430FR599x od Texas Instruments využívá ferroelektrickou paměť s náhodným přístupem (FRAM). Tím dosáhne vyšší rychlost čtení / zápisu a zároveň nižší spotřebu energie než s použitím paměti Flash. 16bitový mikrokontrolér MSP430FR5994IPNR s hodinami 16 MHz a 256 kBbyt FRAM pamětí patří o této rodiny.
Jádro mikrokontroléru MSP430FR má obousměrnou přidruženou mezipaměť se čtyřmi řádky vyrovnávací paměti o velikosti 64bitů na řádek pro lepší výkon FRAM. 32bitový hardwarový multiplikátor zvyšuje výkon pro matematicky náročné operace. Má také ko-procesor Low Energy Accelerator (LEA), který pracuje nezávisle na hlavním jádru. LEA může provádět 256-bodovou komplexní Fourierovu transformaci (FFT), filtr s konečnou impulsní odezvou (FIR) a násobení matic. Texas Instruments uvádí, že to je 40x rychlejší než Arm Cortex M0 +. LEA zlepšuje výkon operací se senzory, zrychluje zpracování obrazů a je schopen zpracovávat data z ultrazvukových senzorů. Pro tyto všechny aplikace se běžně používají 32bitové mikrokontroléry, nikoli nízkoenergetický 16bitový mikrokontrolér.
Programový model MSP430R je velmi jednoduchý (obrázek 2). Existuje šestnáct 16bitových registrů R0 až R15. R0 je programový čítač, R1 je ukazatel zásobníku, R2 je stavový registr a R3 je generátor konstant (používaný pro okamžité operandy). R4 až R15 jsou registry pro všeobecné použití. Zbytek konfiguračních registrů je mapován do paměti, podobně jako většina 32bitových jader.
Obrázek 2: Sada registrů mikrokontroléru MSP430 je podobná jiným 16bitovým jádrům. Zbývající konfigurační registry jsou mapovány do paměti. (Zdroj obrázku: Texas Instruments)
V pohotovostním režimu se spuštěnými hodinami reálného času (RTC) odebírá MSP430FR5994 pouze 350 nA. V režimu „Shutdown“ spotřeba klesne pouze na 45 nA. To je nižší spotřeba než jakýkoli v současnosti známý 32bitový mikrokontrolér, dokonce nižší než většina 8bitových mikrokontrolérů. MSP430FR5994IPNR může pracovat od 1,8 do 3,6 V. Vzhledem k tomu, že firmware běží mimo FRAM, spotřeba je pouze 3 mA. Pokud kód běží z mezipaměti spotřeba klesne na 790 µA.
Nízkoenergetické aplikace lze snadno vyvinout pomocí TI MSP-EXP430FR5994 LaunchPad. Tento LaunchPad obsahuje vše, co je potřeba pro psaní a ladění firmware pro mikrokontrolér MSP-EXP430FR5994 (obrázek 3).
Obrázek 3: LaunchPad TI MSP-EXP430FR5994 má vše, co vývojář potřebuje pro začátek programování a ladění firmwaru pro 16bitový FRAM mikrokontrolér MSP430FR5994 (Zdroj obrázku: Texas Instruments).
LaunchPad má dvě tlačítka, dvě LED diody a slot pro microSD kartu. Pro demonstraci schopností mikrokontroléru MSP430FR5994 má LaunchPad super kondenzátor o hodnotě 0,22 F, který je schopen napájet LaunchPad. Super kondenzátor se nabíjí z externího napájení a nastavením propojky J8 na nastavení „Charge“. Plné nabití super kondenzátoru trvá dvě až tři minuty. Po uplynutí tří minut Jumper J8 přesuneme do nastavení „Use“ a externí napájení se odpojí. V závislosti na aplikaci MSP430 dokáže běžet mnoho minut.
LaunchPad lze také použít k měření aktuální spotřeby MSP430 a aplikace. Sada jumperů J101 obsahuje sedm propojek, včetně jumperu napájení 3 V a 3V3. Propojka 3V3 může být odstraněna, a tím jsme schopni přes tyto kolíky měřit proud aplikace.
LaunchPad také podporuje technologii TI EnergyTrace a může se připojit k počítači pomocí grafického uživatelského rozhraní (GUI). To umožňuje sledovat údaje o spotřebě energie v reálném čase. Pomocí toho lze vyladit aplikaci z hlediska spotřeby energie.
Například monitorování proudu v reálném čase nám může ukázat špičkový odběr mikrokontroléru MSP430. Aktuální špička může baterii degradovat a zkrátit její životnost. Aktuální nárůst může být způsoben nesprávně nakonfigurovanými periferními, externím indukčním nebo kapacitním zatížením nebo dokonce firmwarem.
Závěr
Pro mnoho vestavěných bateriových aplikací lze zvolit vhodný 16bitový mikrokontrolér místo 32bitového. Jak jsme si ukázali, pro mnoho aplikací může 16bitový mikrokontolér mít mnohem nižší spotřebu než 32bitový mikrokontrolér a zároveň dosáhnout dostatečného výkonu.
Článek vyšel v originále " Take Advantage of a 16-bit Microcontroller’s Performance and Low Power" na webu DigiKey.com, autorem je Bill Giovino