Novinka:PF2013, mikrokontrolér!
(Kategória: Iné)
Zaslal wek
31.12.2012-14:57

V rámci koncoročného sumarizovania, pokúsme sa v niekoľkých bodoch zhrnúť, aký je stav vecí v oblasti mikrokontrolérov...

1. Procesorové jadrá

Procesorové jadro v mcu určuje jeho "výpočtové schopnosti", ale predovšetkým sa od neho odvíja značná časť programového vybavenia potrebného na použitie, menovite prekladače všetkých druhov a "ekosystém" okolo nich. Ten prvý fakt je lákadlom na tvorbu nových jadier s novými možnosťami a schopnosťami, lenže ten druhý je naopak brzdou, ktorá núti mnohých výrobcov sa držať osvedčených jadier s už existujúcim viac či menej prepracovaným a rozsiahlym súborom dostupných asemblerov, kompilátorov a celých IDE.

Procesorové jadro, presnejšie typická šírka dátového slova spracovávaného v jednej operácii, je aj základom pre najhrubšiu klasifikáciu mikrokontrolérov ako 8-, 16- a 32-bitové (zdá sa, že 4-bitové mcu sa v tomto období predsalen už prepadávajú do nenávratna). Pritom zaujímavé je sledovať aj iné faktory, napríklad šírku inštrukčného slova. Z tohoto pohľadu je paradoxným javom je aj to, že napríklad 8-bitové AVR ako aj 32-bitové ARM-CortexM jadrá používajú rovnako 16-bitové inštrukčné slovo.

Z najrozšírenejších 8-bitových jadier je treba spomenúť klasické jadro x51 (množstvo výrobcov), skupina jadier pochádzajúcich z koncepcie 6800 (Freescale, ST), varianty 8-bitového jadra PIC (Microchip), jadro AVR (Atmel). 16-bitové jadrá predstavuje napríklad rodina MSP430 (TI) ako aj 16-bitové varianty PIC a dsPIC (Microchip). 32-bitové jadrá sú hitom súčasnosti, pod vedením variánt jadra ARM typu Cortex-M (NXP, ST, TI/exLuminary, Freescale, Atmel a mnoho ďalších), kde základnym "modelom" je Cortex-M3, "zjednodušenou" variantou s menšou inštrukčnou sadou a tým menšou zabranou plochou na kremíku (pre lacnejšie aj keď pomalšie mcu namierené ako náhrada 8-bitov) je Cortex-M0 a novší Cortex-M0+, a špičkovou variantou je Cortex-M4, ktorý má implementované aj inštrukcie pre prácu s pohyblivou rádovou čiarkou. Jadrám ARM v oblasti 32-bitov sekundujú jadrá MIPS (Microchip) a AVR32 (Atmel).

Okrem týchto "konvenčných" jadier je k dispozícii aj viacero "exotických", či len jednoducho menej používaných, jadier. Namátkovo spomeňme 8-bitovú rodinu Z8 (Zilog) alebo 16-bitové MAXQ (Maxim) či C166 (Infineon).

Aj keď sa nejedná o typické mikrokontroléry, nedá mi na tomto mieste nespomenúť skutočné exoty v podobe viacjadrových procesorov, pretože spoločnosti, ktoré ich vyvíjajú, vyrábajú a uvádzajú na trh, to robia s nefalšovanou oddanosťou a vytrvalosťou; naviac sú určené do aplikácií nie nepodobných tým, kde sa používajú "skutočné" mcu. Jedným z takýchto neobvyklých obvodov je Parallax Propeller, ktorý má na sebe 8 16-bitových jadier a unikátny "kolotoč", prostredníctvom ktorého sa jadrá postupne dostávajú k zdieľaným prostriedkom na čipe. Ďalšia takáto netypická rodina je xCORE firmy XMOS, kde je integrovaných na jednom čipe 8 až 32 výkonných 32-bitových jadier.


2. Rýchlosť

Aj keď sa vykonávacia rýchlosť od jednotiek megahertzov v počiatkoch éry mikrokontrolérov posunula do oblasti desiatok MHz, stále je to najmenej o jeden rád menej než stovky MHz v oblasti mikroprocesorov pre multimediálne a sieťové aplikácie, či jednotky GHz u mikroprocesorov pre mobilné a PC aplikácie. Samozrejme toto má svoje dôvody:
  • v mcu je program vykonávaný z pamäte typu FLASH, ktorej vybavovacia doba je obmedzená v súčasnosti na zhruba 20-30ns. Vyššie rýchlosti sú dosahované vďaka rôznym typom cache, nie je však efektívne takto zvyšovať rýchlosť viac než cca. 2-5x
  • technológie potrebné pre vyššie hodinové frekvencie by spôsobili neúnosný nárast ceny mcu
  • riadiace aplikácie typické pre mikrokontroléry obvykle nepotrebujú vyšší výpočtový výkon
  • pripájané periférie obvykle nepotrebujú rýchlejšiu obsluhu
  • s hodinovou frekvenciu rastie spotreba, ohrev, aj elektromagnetické rušenie
  • mnohé aplikácie je efektívnejšie riešiť rozdelením úloh do viacerých mcu


Vysoké hodinové frekvencie nad cca 20MHz sa nedajú generovať priamo z kryštálového oscilátora, a tak je v rýchlejších mcu štandardom zabudovaná PLL. Štandardom je dnes aj interný RC oscilátor, ktorý umožňuje beh bez pripojeného externého kryštálu či oscilátora, a nezriedka je k dispozícii aj nízkopríkonový nízkofrekvenčný kryštálový oscilátor pre aplikácie s potrebou hodín reálneho času.


3. Pamäte

Pamäte tvoria (a vždy tvorili) významnú časť plochy čipu mcu. So zmenšením tranzistora dokonca pri tradične malých 8-bitových jadrách začínajú tvoriť prevažujúcu časť, keďže sú aplikácie mcu čoraz komplikovanejšie, čím rasú nároky na všetky druhy pamäte.

Tradične majú mcu takmer o rád viac programovej pamäte než pamäte typu RAM pre dáta. Je to tak okrem iného aj kvôli zabranej ploche na jednu bunku FLASH (čo je 1 tranzistor) oproti 6-tranzistorovej bunke SRAM. (Dátová pamäť typu DRAM sa od prvých generácií mcu už nepoužíva kvôli vysokej spotrebe a potrebe udržiavať trvalo hodinový kmitočet v určenom rozmedzí). Programová pamäť je dnes takmer výhradne typu FLASH, aj keď niektorí výrobcovia ponúkajú aj modely s OTP EPROM (t.j. raz naprogramovateľné); maskou programovaná ROM sa už dnes nepoužíva. Novinkou, ktorá však zatiaľ neujala (a ani nepreukázala nejakú výraznú výhodu) je feroelektrická pamäť, z ktorej sa dá aj vykonávať program (TI, Fujitsu).

Je príjemné, že v moderných mcu sa SRAM (do ktorej patrí nielen pamäť pre premenné ale aj zásobník a niekde aj časť pracovných registrov) nepočíta už na desiatky či stovky byte ale je k dispozícii v jednotkách až desiatkach kB; napokon v moderných 32-bitových mcu je niekoľko kB RAM abosulútne nevyhnutných už len pre ich základnú funkcionalitu. FLASH pamäte siahajú od jednotiek kB až po takmer nezdravé jednotky MB, pričom "samoprogramovateľnosť" v niektorej jej podobe je štandardom. Negatívnym trendom však je, že v moderných mcu sa vytráca pamäť typu EEPROM, t.j. preprogramovateľna po byte a s endurance v rádoch stoviek tisíc prepisov. Toto je daň za technológiu s vysokou integráciou.

4. Periférie

Zmenšujúca sa cena tranzistora v integrovanom obvode prináša vylepšenia a rozšírenia aj v oblasti zabudovaných periférií. Snáď neexistuje rozhranie či funkčný blok, ktorý by nebol v niektorom mcu k dispozícii. Nie sú neobvyklé špičkové mcu s viac než poltuctom sériových rozhraní typu SPI, I2C, UART či CAN, ale aj v menších 8-bitových sa dnes nachádza široké spektrum periférií. Pritom tieto periférie už nie sú vonkoncom jednoduché, majú niekoľko rôznych režimov a na ich konfiguráciu slúži veľké množstvo registrov.

Veľké množstvo periférií by pritom znamenala aj väčšiu záťaž na procesor, ktorý je však tiež čiastočne odľahčený mnohými vylepšeniami. Najzásadnejšia je pritom jednotka priameho prístupu k pamäti (DMA), pomocou ktorej dokážu periférie "prijíať" či "vyslať" balík údajov bez potreby presúvať každý jednotlivý údaj pomocou procesorového jadra; ale vylepšenia sa týkajú aj priamo periférií, napr. zaradením vyrovnávacích pamätí FIFO, jednotiek pre výpočet a kontrolu kontrolných súčtov typu CRC, apod.

Periférie pritom v mnohých mcu nemajú pevne priradené piny, ale sa k jednotlivým pinom pripájajú cez viac či menej pružne konfigurovateľnú maticu.

Je potrebné si na tomto mieste uvedomiť, že moderné mcu sú vytvárané ako "skladačka" z funkčných blokov. Toto má viaceré následky, napríklad nie úplne konzistentnú dokumentáciu, keďže výrobcovia jednotlivé funkčné bloky častokrát nevyvíjajú sami, ale ich nakupujú ako hotové riešenia. Najmä pri 32-bitových mcu platí, že jadrom je všeobecné procesorové jadro, ktoré nebolo navrhnuté s ohľadom na úzku integráciu s perifériami tak, ako u tradičných 8- a 16-bitových mcu, a tak keď príde napr. na presné časovanie jednotlivých udalostí, tieto mcu sa správajú skôr ako niekdajšie procesorové dosky (a teda vhodnejšie by pre ne bolo tradičné označenie SoC, System-on-Chip).

5. Napájanie a spotreba

V napájaní mcu sa objavujú dva trendy: mcu so širokým rozsahom napájacích napätí (typicky napr. 2.5 až 5V, ale aj iné rozsahy) a mcu pre úzky rozsah napájacích napätí (napr. 5V, alebo 3.3V). Pritom veľká časť používaných technológií (najmä s malou dĺžkou kanála tranzistora) si vyžaduje veľmi nízke napájacie napätia; toto je však typicky generované napäťovým regulátorom integrovaným na čipe častokrát dokonca bez vedomia užívateľa. Trendom je pritom mať periférie tolerantné na vyššie napätia, takže typická kombinácia je napr. napájanie 3.3V, jadro napájané 1.8V z integrovaného regulátora a periférie 5V tolerantné. Nie sú neobvyklé aj mcu určené pre veľmi nízke napájacie napätia pre aplikácie, ktoré sa majú napájať z jedného článku s napätím dokonca až pod 1.0V.

Čo sa týka spotreby, trendom je ju znižovať. Prispieva k tomu na jednej strane aj technológia - nízke napájacie napätie znamená aj nižší spotrebovaný prúd a tým nižší príkon - ale mnohé môže urobiť aj programátor. Každý moderný mcu má k dispozícii niekoľko režimov so zníženým príkonom, keď sa zastavuje procesorové jadro a aj časť periférií počas čakania na nejakú udalosť (napr. príjem externého signálu alebo dobehnutie vopred nastaveného časovača), ale nie je dnes neobvyklý aj zložitý systém vypínania hodín a napájania do jednotlivých periférií, ktorý umožňuje nastaviť optimálnu spotrebu individuálne podľa potreby aplikácie.





Toto bol len veľmi stručný a hrubý prehľad toho, čo sa v súčasnom svete mikrokontrolérov deje. Rozsiahlejší by sa napokon do formátu článku na mcu.cz ani nezmestil. Nevyšiel bohužiaľ priestor ani na rozbor typických aplikácií, diskusiu vývojových prostriedkov a podpory vývoja zo strany výrobcov, ani na zoznam jednotlivých výrobcov a radov mcu.

Dopustili sme sa teda určite mnohých zjednodušení, vynechali sme množstvo dôležitých a zaujímavých faktov. Dúfame však, že aj napriek tomu článok pobavil a stane sa námetom pre diskusiu a úvahy.

Všetko dobré a veľa úspechov v roku 2013 praje server mikrozone!




Táto novinka je z mikroZONE
( http://www.mikrozone.sk/news.php?extend.904 )