EUR | USD

Profiteer van de prestaties en het lage verbruik van een 16-bits microcontroller

By Bill Giovino

Contributed By De Noord-Amerikaanse redacteurs van Digi-Key

Een lange batterijlevensduur is een belangrijke tevredenheidsfactor voor gebruikers van consumentenapparatuur. Bij batterijaangedreven Internet of Things (IoT)-eindpunten zorgt een langere batterijlevensduur voor lagere onderhoudskosten en een grotere betrouwbaarheid. Aangezien de microcontroller in deze apparatuur behoorlijk veel stroom kan afnemen, moeten ontwerpers de juiste architectuur kiezen om aan de vereisten voor dergelijke toepassingen te kunnen voldoen. In veel gevallen blijken 16-bits microcontrollers de beste keus te zijn.

Hoewel 8-bits microcontrollers steeds krachtiger worden, blijven hun prestaties op het gebied van verwerkingskracht en adresseerbaar geheugen beperkt. Hierdoor zijn 8-bitters ongeschikt voor toepassingen die hogere prestaties vereisen. Systemen op basis van 32-bits kernen zijn juist vaak weer overbemeten voor de toepassing, vooral als ze meer energie verbruiken dan nodig is.

De oplossing ligt in het midden met 16-bits microcontrollers, de "sweet spot" tussen 8-bits en 32-bits kernen. Ze combineren het lage energieverbruik van een eenvoudige 8-bits microcontroller met enkele voeding met diverse prestatie- en geheugenvoordelen van 32-bits kernen. Als een toepassing niet al te veel threads heeft en de geheugenvereisten niet te groot zijn, kan een 16-bits microcontroller het juiste prestatieniveau leveren met aanzienlijke energiebesparingen.

In dit artikel wordt de architectuur van 16-bits microcontrollers beschreven en wordt uitgelegd waarom ze de beste keus zijn voor veel batterijaangedreven IOT-eindpunt- en consumententoepassingen. Vervolgens worden enkele 16-bits microcontrollers van Microchip Technology en Texas Instruments besproken en wordt beschreven hoe u aan de slag kunt gaan met een 16-bits ontwerp.

Een microcontroller selecteren

Het kiezen van de juiste microcontroller voor een toepassing is een van de eerste stappen in het ontwerpproces, na het vaststellen van de projectvereisten. In de meeste gevallen wordt gekozen uit 8-, 16-, of 32-bits opties.

Het is opvallend hoe populair 8-bits microcontrollers zijn geworden, ze zijn het werkpaard van ontwikkelaars. De voordelige, energiezuinige 8-bits microcontrollers zijn ideaal voor eenvoudige taken. Ze hebben het laagste energieverbruik in de microncontrollerwereld met stand-bystromen die lager kunnen zijn dan 100 nano-ampère (nA).

Bovendien zijn ze makkelijk te gebruiken. 8-bits microcontrollers zijn meestal gebaseerd op accumulators, hoewel sommige modernere architecturen een registerset hebben. Het programmeringsmodel is eenvoudig en beperkt: accumulators of een kleine registerset met één statusregister, een stack-pointer en een of meer indexregisters. Vaak bevindt de stack zich in de hardware en is de programmateller (PC) ontoegankelijk voor firmware.

Hoewel de 8-bits architectuur populair is, loopt deze tegen zijn limieten aan bij netwerk- en communicatiegebruik. Bijna alle communicatiestacks en netwerkprotocollen zijn 16- of 32-bits, waardoor een 8-bits architectuur niet meer volstaat. Daarnaast zijn zelfs geavanceerde 8-bits microcontrollers vaak beperkt tot 16-bit adressering zonder paginering, wat limieten stelt aan de omvang en complexiteit van de firmware.

Aan het andere eind van het spectrum zijn 32-bits microcontrollers populair geworden voor toepassingen in alle prestatiebereiken. Ze hebben registergebaseerde architecturen die probleemloos netwerk- en communicatiegebruik kunnen ondersteunen. Ze bieden meestal 32-bits adressering, kunnen drijvendekommaberekeningen en complexe algebraïsche bewerkingen ondersteunen en hebben kloksnelheden tot in het gigahertz (GHz)-bereik. De 32-bits kernen hebben een ingewikkelder programmeringsmodel dat meerdere statusregisters, een door firmware aangestuurde PC, geavanceerd interruptbeheer en twee of meer lagen firmware-uitvoeringsprivileges kan omvatten.

16-bits microcontrollers zijn op hun beurt allemaal registergebaseerd en hun architectuur is net zo eenvoudig als die van een 8-bitter. Ze bieden meestal een goede energiezuinigheid met een verbruik dat vergelijkbaar is met dat van 8-bits kernen, en aanzienlijk lager dan dat van 32-bits kernen. Voor toepassingen die complexe berekeningen vereisen zijn er 16-bits microcontrollers met een rekenkundige coprocessors die de prestaties van een 32-bitter evenaren bij dezelfde interne kloksnelheid.

Er is ook een scala aan communicatiestacks die netwerkgebruik van 16-bits microcontrollers ondersteunen. Ethernet, CAN, USB en Zigbee zijn enkele voorbeelden van protocolstacks die net zo snel kunnen draaien op een 16-bitter als op een 32-bits microcontroller, vooropgesteld dat de toepassingscode in staat is om de stack te bedienen.

Adresseren van grote flashgeheugenarrays met een 16-bits microcontroller

Een van de belangrijkste verschillen tussen 32-bits en 16-bits architecturen in het geheugenadresseringsbereik. 32-bits microcontrollers hebben een 32-bits adresbus die toegang biedt tot maximaal 4 gigabyte (Gbytes) geheugen. Conventionele 16-bits microcontrollers hadden 16-bits adressering, wat toegang biedt tot slechts 64 kilobytes (Kbytes). Veel moderne 16-bits architecturen bieden tegenwoordig tot 24 bits aan uitgebreide adressering, goed voor een royale 16 megabytes (Mbytes) aan adresruimte.

Een goed voorbeeld van dergelijke uitgebreide adressering is de energiezuinige PIC24F-microcontrollerserie van Microchip Technology. Een van deze microcontrollers is de PIC24FJ1024GA, een 32 megahertz (MHz), 16-bits microcontroller met 1 Mbyte on-board flash en 32 Kbytes on-board SRAM. De microcontroller maakt gebruik van een eenvoudig programmeringsmodel dat vergelijkbaar is met dat van veel 8-bits microcontrollers (afbeelding 1).

Diagram van programmeringsmodel van Microchip PIC24FAfbeelding 1: Het programmeringsmodel van de Microchip PIC24F is vergelijkbaar met dat van een hoogwaardige 8-bits microcontroller. De component biedt een registergebaseerde architectuur met zestien algemene 16-bits registers, een stack-pointer, PC en vijf ondersteunende registers. (Afbeelding: Microchip Technology)

De PIC24 heeft een 23-bits programmateller die toegang heeft tot maximaal 8 Mbytes aan flash-programmageheugen. De microcontroller heeft zestien 16-bits registers die Working Registers (WREG) worden genoemd en worden aangesproken als W0 tot W15. Registers W0 tot W13 zijn algemene registers (GP's) die kunnen worden gebruikt voor de opslag van gegevens door middel van firmware-aansturing. W15 is een specifieke stack-pointer (SP). Hoewel de SP automatisch wordt verhoogd en verlaagd door middel van functie- en subroutine-aanroepen, programmeringsuitzonderingen en retourwaarden van aanroepen, kan deze ook door firmware worden gewijzigd, net als W0 tot W13.

W14 fungeert als stackframe-pointer (FP) met de LINK- en UNLINK-instructies. Het Stack Pointer Limit Register (SPLIM) is een onafhankelijk register en wordt in combinatie met de SP gebruikt om stackoverloop te voorkomen.

De PIC24 maakt gebruik van een Harvard-architectuur met afzonderlijke adres- en gegevensruimten. Het Data Table Page Address (TBLPAG)-register en Program Space Visibility Page Address (PSVPAG)-register worden met speciale instructies gebruikt voor de toegang tot en overdracht van gegevens tussen de adres- en gegevensruimten. Deze functie is gebruikelijk in 32-bits architecturen, maar zeldzaam bij 8-bits kernen.

Het 16-bits Repeat Loop Counter (RCOUNT)-register bevat de lusteller voor de REPEAT-instructie.

Het 16-bits CPU Core Control (CORCON)-register wordt gebruikt voor het configureren van interne bewerkingsmodi van de PIC24-kern.

Het 16-bits statusregister ten slotte bevat werkingsstatusbits voor de status van de PIC24-kern, inclusief statussen die het gevolg zijn van de laatst uitgevoerde instructie.

Volgens Microchip Technology is het prestatieniveau van de PIC24FJ1024GA606T 16 miljoen instructies per seconde (MIPS) bij 32 MHz, wat indrukwekkend is voor een 16-bits kern. De kern biedt veel functies die normaal alleen te vinden zijn in een 32-bits microcontroller, zoals een 17-bit x 17-bit hardware-multiplier die ook breukberekeningen ondersteunt, en een 32-bit x 16-bit hardware-divider. Dit is handig voor IoT-eindpunten die berekeningen op sensorgegevens moeten uitvoeren. De architectuur kan ook gelijktijdig gegevens uit het geheugen lezen en schrijven zonder prestatieverlies.

Hoewel de PIC24FJ1024GA606T een breed scala aan standaard randapparaten biedt, waaronder een USB On-the-Go (OTG), heeft deze een zeer laag energieverbruik voor batterijaangedreven toepassingen. De vereiste voedingsspanning bedraagt slechts 2,0 tot 3,6 volt en op volle snelheid vraagt de microcontroller maximaal 7,7 milliampère (mA) bij 32 MHz, waarden die moeilijk te realiseren zijn met een 32-bits kern. De klokken van de kern en randapparaten kunnen nauwkeurig worden beheerd met firmware. Er zijn twee instructies voor laagverbruiksstanden. De IDLE-instructie stopt de PIC24-kern terwijl de randapparaten blijven werken. De SLEEP-instructie stopt alle apparatuur, met uitzondering van de optionele watchdog en detectie van externe interrupts. De nullaststroom is slechts 2,8 mA (maximaal) en de maximale slaapstroom ligt tussen 10 en 45 microampère (µA), afhankelijk van de configuratie van de randapparaten. In de laagste verbruiksmodus, de slaapmodus met behoud van de RAM-inhoud, kan de stroomafname van deze PIC24F dalen tot slechts 190 nA.

Voor hogere prestaties biedt Microchip Technology een geavanceerde 16-bits microcontroller als onderdeel van hun dsPIC®-serie. Een voorbeeld is de 16-bits dsPIC33EP512GP506T met 512 Kbytes flash en een door Microchip opgegeven prestatieniveau van 70 MIPS. De dsPIC heeft bijna dezelfde kernregisters als de PIC24, met aanvullende registers voor ondersteuning van instructies voor digitale signaalverwerking (DSP) inclusief twee 40-bits accumulators en ondersteuning voor een 32-bits multiplier. Voor veel interne PIC24-microcontrollers zijn pen-compatibele dsPIC-upgrades beschikbaar die verbeterde prestaties mogelijk maken op dezelfde PC-printplaat.

Extra prestaties resulteren natuurlijk wel in een hoger energieverbruik. Deze dsPIC33 vereist een voeding van 3,0 tot 3,6 volt en trekt bij een prestatieniveau van 70 MIPS maximaal 60 mA.

Verlagen van het energieverbruik bij hogere prestaties

De MSP430FR599x-microcontrollerfamilie van Texas Instruments maakt gebruik van een ferro-elektrisch RAM-programmageheugen (FRAM) om hogere lees- en schrijfprestaties te realiseren bij een lager energieverbruik dan flash-microcontrollers. De MSP430FR5994IPNR 16-bits microcontroller is een lid van die familie met een 16 MHz klok en 256 Kbytes FRAM.

Deze MSP430FR-microcontrollerkern heeft prestatieverbeterende elementen zoals een tweewegs geassocieerde cache met vier 64-bits cacheregels voor betere FRAM-prestaties. Een 32-bits hardware-multiplier verbetert de prestaties bij zware rekentaken. De microcontroller heeft ook een Low Energy Accelerator (LEA)-coprocessor die onafhankelijk werkt van de MSP430-hoofdkern. Volgens TI kan de LEA een 256-punts complexe snelle Fourier-transformatie (FFT), een Finite Impulse Response (FIR)-filter en een matrixvermenigvuldiging tot wel 40x sneller uitvoeren dan een Arm® Cortex®-M0+. De LEA verhoogt de prestaties voor sensorfusie, afbeeldingsverbetering en verwerking van de gegevens van ultrasoonsensors. Dit zijn allemaal toepassingen waarbij een ontwikkelaar gewoonlijk eerst zal denken aan een 32-bits kern in plaats van een ultrazuinige 16-bits microcontroller.

Het programmeringsmodel voor de MSP430R is heel eenvoudig (afbeelding 2). Er zijn zestien 16-bits registers, R0 tot R15. R0 is de programmateller, R1 is de stack-pointer, R2 is het statusregister en R3 is een constant-generatorregister (gebruikt voor onmiddellijke operanden). R4 tot R15 zijn registers voor algemeen gebruik. De overige configuratieregisters maken gebruik van geheugentoewijzing, vergelijkbaar met de meeste 32-bits kernen.

Diagram van registerset van Texas Instruments MSP430-microcontrollerAfbeelding 2: De registerset van de MSP430-microcontroller wat configuratie betreft vergelijkbaar met andere registergebaseerde 16-bits kernen. De overige configuratieregisters maken gebruik van geheugentoewijzing. (Afbeelding: Texas Instruments)

Deze prestaties worden geleverd zonder verhoging van de stroomafname. In de stand-bymodus met actieve real-time klok (RTC), vraagt de TI MSP430FR5994 slechts 350 nA. In de laagverbruiksmodus trekt de component slechts 45 nA. Dit is lager dan enige andere 32-bits microcontroller, en zelfs lager dan de meeste 8-bits microcontrollers.

De MSP430FR5994IPNR kan werken binnen een bereik van 1,8 tot 3,6 volt. Als de firmware vanuit het FRAM draait en de cache niet wordt aangesproken, vraagt de MSP430FR slechts 3 mA. Als de code vanuit de cache draait, is de stroomafname slechts 790 µA. In combinatie met de LEA biedt dit aanzienlijke verwerkingsprestaties bij een extreem laag verbruik voor een 16-bits microcontroller.

Laagverbruikstoepassingen voor de MSP430FR5994-familie kunnen eenvoudig worden ontwikkeld met behulp van de TI MSP-EXP430FR5994 LaunchPad™. Deze bevat alles wat ontwikkelaars nodig hebben om te beginnen met het schrijven en debuggen van firmware voor de MSP-EXP430FR5994-microcontroller (afbeelding 3).

Afbeelding van de TI MSP-EXP430FR5994 LaunchPadAfbeelding 3: De TI MSP-EXP430FR5994 LaunchPad biedt alles wat ontwikkelaars nodig hebben om te beginnen met het schrijven en debuggen van firmware voor de MSP430FR5994 16-bits FRAM-microcontroller (afbeelding: Texas Instruments).

De LaunchPad heeft twee drukknoppen, twee LED's en een sleuf voor een microSD-kaart. Om het lage verbruik van de MSP430FR5994-microcontroller te demonstreren, heeft de LaunchPad een grote 0,22 Farad (F)-supercondensator waarmee de LaunchPad kan worden aangedreven. De supercondensator wordt geladen door de LaunchPad aan te sluiten op een externe voedingsbron en jumper J8 in de stand "Charge" te zetten. Het laden van de supercondensator neemt twee à drie minuten in beslag. Nadat drie minuten zijn verstreken, wordt jumper J8 in de stand "Use" gezet en wordt de externe voeding losgekoppeld. Afhankelijk van de toepassing kan de MSP430 vele minuten werken.

De LaunchPad kan ook worden gebruikt om de stroomafname van de MSP430 en de toepassing te meten. Het J101-isolatieblok heeft zeven jumpers waaronder een 3 volt voedingsjumper, 3V3. De 3V3 tweepens jumper kan worden verwijderd, waarna de toepassingsstroom via de twee pennen kan worden gemeten.

De LaunchPad ondersteunt ook TI's EnergyTrace™-technologie en kan op een computer worden aangesloten met behulp van de EnergyTrace grafische gebruikersinterface (GUI) van Texas Instruments. Dit stelt ontwikkelaars in staat om het real-time energieverbruik van de MSP430-microcontroller en de toepassing te volgen, zodat ze hun toepassing kunnen configureren voor de laagst mogelijke stroomafname.

Bij het volgen van het energieverbruik kan bijvoorbeeld blijken dat de MSP430-microcontroller soms hoge verbruikspieken laat zien. Stroompieken kunnen leiden tot achteruitgang en een kortere levensduur van de batterij. De pieken kunnen worden veroorzaakt door verkeerd geconfigureerde randapparaten, een externe of capacitieve belasting of zelfs door firmware die probeert om alles tegelijkertijd in te schakelen. Het volgen en registreren van de verbruikswaarden kan ontwikkelaars helpen om te bepalen waar de firmware moet worden aangepast om de stroompieken onder controle te krijgen.

Conclusie

Bij veel ingebedde toepassingen die een laag energieverbruik en gemiddeld prestatieniveau vereisen kunnen gebruikers kiezen voor een geschikte 16-bits microcontroller in plaats van een 32-bits exemplaar. Zoals hierboven beschreven is een 16-bitter voor veel toepassingen veel zuiniger in het gebruik van een 32-bits microcontroller, met behoud van het vereiste prestatieniveau.

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of Digi-Key Electronics or official policies of Digi-Key Electronics.

Achtergrondinformatie over deze auteur

Bill Giovino

Bill Giovino is een ingenieur in elektronica met een BSEE van de Syracuse University. Hij is een van de weinigen die met succes de overstap maakten van ontwerpingenieur naar ingenieur veldtoepassingen en vervolgens naar technologiemarketing.

Meer dan 25 jaar lang heeft Bill met veel toewijding nieuwe technologieën gepromoot ten overstaan van zowel technisch als niet-technisch publiek voor vele bedrijven, waaronder STMicroelectronics, Intel en Maxim Integrated. Toen hij bij STMicroelectronics actief was, hielp Bill bij de doorbraak van de eerste successen van het bedrijf in de sector van microcontrollers. Bij Infineon stond Bill in voor de eerste toepassingen van het microcontrollerontwerp van het bedrijf in de Amerikaanse autosector. Als marketing consultant voor zijn bedrijf CPU Technologies, hielp Bill vele bedrijven om laag presterende producten op te krikken en er een succesverhaal van te maken.

Bill was een van de eersten die het Internet of Things toepaste. Hij plaatste de eerste volledige TCP/IP-stack op een microcontroller. Bill is trouw aan het motto “Verkoop via opvoeding” en wijst op het toenemende belang van duidelijke, goed geschreven mededelingen om producten online te promoten. Hij is moderator van de populaire LinkedIn Semiconductor Sales & Marketing Group en spreekt vlot B2E.

Over deze uitgever

De Noord-Amerikaanse redacteurs van Digi-Key