Utnyttja en 16-bitarsmikrostyrenhets prestanda och låga effekt
Bidraget med av DigiKeys nordamerikanska redaktörer
2019-07-24
Lång batterilivslängd är viktigt för användarnöjdheten när det gäller konsumentenheter. För batteridrivna IoT-slutpunkter minskar längre batterilivslängd underhållskostnaderna och förbättrar tillförlitligheten. Eftersom mikrostyrenheten som används i dessa enheter kan innebära en avsevärd effektförbrukare måste konstruktörerna välja och tillämpa rätt arkitektur för att uppfylla behoven i dessa tillämpningar. I många fall visar sig 16-bitars mikrostyrenheter vara det bästa valet.
Medan 8-bitars mikrostyrenheter blir allt kraftfullare är deras prestanda fortsatt begränsade när det gäller bearbetningskraft och adresserbart minne. Detta eliminerar 8-bitarssystem från tillämpningar med högre prestanda. Å andra sidan är system som bygger på 32-bitarskärnor ofta överdimensionerade för tillämpningen, särskilt när de förbrukar mer kraft än nödvändigt.
Lösningen ligger i mitten med 16-bitars mikrostyrenheter den perfekta avvägningen mellan kärnor med 8 och 32 bitar. De erbjuder den låga effekten hos en enkel 8-bitars mikrostyrenhet med en källa samtidigt som de ger en del av de prestanda- och minnesfördelar som 32-bitarskärnorna kan erbjuda. Om en tillämpning inte är intensivt flertrådig och om minneskraven inte är för höga kan en 16-bitars mikrostyrenhet ge rätt nivå av prestanda med betydande kraftbesparingar.
Den här artikeln beskriver arkitekturen hos mikrostyrenheter på 16 bitar och hur det gör dem till det bästa valet för många batteridrivna konsument- och IoT-slutpunktstillämpningar. Därefter introduceras några exempel på 16-bitarsmikrostyrenheter från Microchip Technology och Texas Instruments och du får en beskrivning av hur du kan komma igång med en 16-bitarskonstruktion.
Välja en mikrostyrenhet
Att välja rätt mikrostyrenhet för en tillämpning är ett av de första stegen i designprocessen efter att projektkraven har definierats. De tre vanligaste kraven är mellan 8-, 16- och 32-bitarsmikrostyrenheter.
Mikrostyrenheterna på 8 bitar är oerhört utbredda och har blivit konstruktörernas verkliga arbetshäst. Inget jobb är för litet för 8-bitarsmikrostyrenheter med deras låga kostnad och låga effekt. De har den lägsta effektförbrukningen i standardmikrostyrenhetssortimentet med vissa modeller med strömvärden i vänteläge under 100 nanoampere (nA).
De är dessutom enkla att använda. 8-bitarsmikrostyrenheten är normalt ackumulatorbaserad, men vissa mer moderna arkitekturer har en registeruppsättning. Programmeringsmodellen är enkel och begränsad. Ackumulatorer eller en liten registeruppsättning med ett enskilt statusregister, en stackpekare och ett eller flera indexregister. Ofta kan stacken finnas i maskinvaran och programräknaren (PC) är inte tillgänglig för den fasta programvaran.
Trots att den är populär når 8-bitarsarkitekturen sina gränser när den försöker aktiveras i nätverks- och kommunikationsarbete. Nästan alla kommunikationsstackar och nätverksprotokoll är antingen på 16 eller 32 bitar, vilket gör det nödvändigt att lämna 8-bitarsarkitekturen. Dessutom är även extra avancerade 8-bitarsmikrostyrenheter normalt begränsade till 16-bitarsadressering utan paging, vilket begränsar den fasta programvarans storlek och komplexitet.
I den andra änden av skalan har 32-bitarsmikrostyrenheter blivit populära i tillämpningar i alla prestandaområden. Dessa är registerbaserade arkitekturer som enkelt stödjer nätverkande och kommunikation. De har normalt 32 bitars adressering, kan stödja flytpunktsmatematik och avancerade algebrafunktioner samt klockfrekvenser upp till gigahertzområdet (GHz). 32-bitarskärorna har en mer komplicerad programmeringsmodell som kan inkludera fler statusregister, en programräknare som är exponerad för den fasta programvaran, sofistikerad avbrottshantering samt två eller flera lager av körningsbehörigheter för fast programvara.
16-bitarsmikrostyrenheterna är alla registerbaserade, med arkitekturer som är lika enkla som hos en 8-bitarsmodell. De brukar ha bra prestanda vid låg effekt, betydligt lägre strömförbrukning än 32-bitarsarkitekturer samt strömförbrukning som nästan är lika låg som hos 8-bitarskärnor. Om tillämpningen kräver avancerad matematik har vissa 16-bitarsmikrostyrenheter matematikprocessorer som har vissa gemensamma matematikprestanda som en 32-bitarsmodell med samma klockfrekvensintervall.
Det finns även många kommunikationsstackar med stöd för nätverkande 16-bitarsmikrostyrenheter. Ethernet, CAN, USB och Zigbee är några exempel på protokollstackar som kan köras lika snabbt på en 16- som en 32-bitarsmikrostyrenhet så länge tillämpningskoden har tillräcklig tillgänglig prestanda för att underhålla stacken.
Adressera stora Flash-minnesmatriser med en 16-bitarsmikrostyrenhet
En av de viktigaste skillnaderna mellan 32-bitars- och 16-bitarsarkitekturer är minnesadresseringsområdet. 32-bitarsmikrostyrenheter har en 32-bitars adressbuss som ger tillgång till upp till 4 gigabyte (Gbyte) minne. Traditionella 16-bitarsmikrostyrenheter hade 16 bitars adressering som endast gav 64 kilobyte (kbyte). Dock har nu många moderna 16-bitarsarkitekturer upp till 24 bitars utökad adressering, vilket möjliggör hela 16 megabyte (Mbyte) adressutrymme.
Ett bra exempel på den utökade adressmetoden är PIC24F-mikrostyrenhetsfamiljen med låg effekt från Microchip Technology. En av dessa mikrostyrenheter är PIC24FJ1024GA, en mikrostyrenhet med 32 megahertz (MHz) och 16 bitar med 1 Mbyte inbyggt Flash och 32 kbyte inbyggt SRAM. Den använder en enkel programmeringsmodell som liknar många 8-bitarsmikrostyrenheter (figur 1).
Figur 1: Microchip PIC24F programmeringsmodell liknar en avancerad 8-bitarsmikrostyrenhet. Den har en registerbaserad arkitektur med sexton universella 16-bitarsregister, en stackpekare, PC och fem stödregister. (Bildkälla: Microchip Technology)
PIC24 har en 23-bitars programräknare med tillgång till 8 Mbyte flashprogramminne. Den har sexton 16-bitarsregister som kallas arbetsregister (WREG) som kallas W0 till W15. Register W0 till W13 är universella register (GP) som kan användas för att lagra data under fast programvarukontroll. W15 är en dedikerad stackpekare (SP). Medan SP ökas och minskas automatiskt genom funktions- och delrutinanrop, programmeringsundantag och anropsreturer kan det även modifieras med fast programvara som W0 till 13.
W14 fungerar som stackrampekare (FP) med LINK- och UNLINK-monteringsinstruktionerna. SPLIM (Stack Pointer Limit Register) är ett oberoende register och används med SP för att hindra stackspill.
PIC24 använder en Harvard-arkitektur med separata adress- och datautrymmen. Registren Data Table Page Address (TBLPAG) och Program Space Visibility Page Address (PSVPAG) används med specialanvisningar för att komma åt och överföra data mellan adress- och datautrymmena. Det här är en funktion som är vanlig i 32-bitarsarkitekturer, men ovanlig i 8-bitarskärnor.
16-bitarsregistret Repeat Loop Counter (RCOUNT) innehåller slingräknare för REPEAT-monteringsinstruktionen.
16-bitarsregistret CPU Core Control (CORCON) används för att konfigurera de interna driftlägena för PIC24-kärnan.
Slutligen innehåller 16-bitarsstatusregistret driftstatusbitar för PIC24-kärnans status, inklusive status som resulterar från den senast körda monteringsinstruktionen.
Microchip Technology anger prestandan hos PIC24FJ1024GA606T som 16 miljoner instruktioner per sekund (MIPS) vid 32 MHz – imponerande för en 16-bitarskärna. Kärnan har många av de funktioner som finns i 32-bitarsmikrostyrenheter, som en 17 gånger 17-bitars maskinvarumultiplikator som också har stöd för bråkmatematik samt en 32-bitars gånger 16-bitars maskinvarudelare. Det här är användbart för IoT-ändpunkter som behöver utföra beräkningar på sensordata. Arkitekturen kan även läsa och skriva från dataminnet samtidigt utan prestandaförluster.
Samtidigt som PIC24FJ1024GA606T har ett brett sortiment av standardkringenheter, inklusive en USB On-the-Go (OTG) har den mycket låg effektförbrukning för batteridrivna tillämpningar. Den nödvändiga matningsspänningen är endast 2,0 till 3,6 volt och vid full hastighet drar mikrostyrenheten maximalt 7,7 milliampere (mA) vid 32 MHz – vilket är svårt för en 32-bitarskärna att uppnå. Den fasta programvaran har fin kontroll över kärnan och periferiklockor. Det finns två monteringsinstruktioner med låg effekt. IDLE-instruktionen stoppar PIC24-kärnan samtidigt som det tillåter kringutrustningen att köras. SLEEP-instruktionen stoppar alla enhetsfunktioner med undantag för watchdog (tillval) och extern avbrottsidentifiering. Tomgångsströmmen är endast 2,8 mA (max) och den maximala viloströmmen ligger mellan 10 och 45 mikroampere (µA), beroende på konfigurationen av kringenheterna. I det lägsta effektläget, insomningsläge med RAM med bibehållet innehåll kan denna PIC24F dra så lite som 190 nA.
För högre prestanda erbjuder Microchip Technology en avancerad 16-bitarsmikrostyrenhet som en del av dsPIC®-familjen. Ett exempel är 16-bitars dsPIC33EP512GP506T med 512 kbyte flashminne och Microchip-angiven prestanda på 70 MIPS. dsPIC har nästan samma kärnregister som PIC24, med ytterligare register för att stödja digitala signalbehandlingsinstruktioner (DSP) inklusive två 40-bitarsackumulatorer och 32-bitars multipliceringsstöd. Vid uppgradering av en PIC24 i systemet har många PIC24-mikrostyrenheter tillgängliga stiftkompatibla dsPIC-uppgraderingar som ger ökad prestanda med samma kretskort.
Givetvis innebär extra prestanda att det krävs extra kraft. dsPIC33 kräver spänningstillförsel på 3,0 till 3,6 volt och när den kärs med 70 MIPS drar den maximalt 60 mA.
Sänka effekt och öka prestanda
Texas Instruments MSP430FR599x mikrostyrenhetetsfamij använder företagets FRAM-programminne (ferroelectric random access memory) för att uppnå högre läs-/skrivprestanda vid lägre effekt än Flash-mikrostyrenheter. MSP430FR5994IPNR 16-bitars mikrostyrenhet ingår i familjen med 16 MHz klockfrekvens och 256 kbyte FRAM.
Den här MSP430FR-mikrostyrenhetskärnan har prestandaförbättringar som inkluderar tvåvägsförknippat cacheminne med fyra cacherader med 64-bitars radstorlek för bättre FRAM-prestanda. En 32-bitars maskinvarumultiplikator förbättrar prestandan för beräkningsintensiva åtgärder. Den har även en hjälpprocessor med lågenergiaccelerator (LEA) som arbetar oberoende av huvud MSP430-kärnan. LEA kan utföra en 256-punkters komplex snabb Fourier-omvandling (FFT), ett ändligt impulssvarsfilter (FIR) och matrismultiplikation som, enligt TI, är upp till 40x snabbare än Arm® Cortex®-M0+. LEA förbättrar prestandan för sensorfusionsåtgärder, förbättrar bilder och bearbetar ultraljudssensordata. Det här är tillämpningar där en utvecklare oftast först tänker sig en 32-bitarskärna, inte en 16-bitarsmikrostyrenhet med ultralåg effekt.
Programmeringsmodellen för MSP430R är mycket enkel (figur 2). Det finns sexton 16-bitarsregister R0 till R15. R0 är programräknaren, R1 är stackpekaren, R2 är statusregistret och R3 är en konstantgenerator (används för omedelbara operander). R4 till R15 är universella register. Resten av konfigurationsregistren är minnesmappade, liknande de flesta 32-bitarskärnor.
Figur 2: MSP430 mikrostyrenhetsregisteruppsättningen har liknande konfiguration som andra registerbaserade 16-bitarskärnor. Återstående konfigurationsregister är minnesmappade. (Bildkälla: Texas Instruments)
Den här prestandan kommer utan att förbruka mer effekt. I standbyläge, med endast realtidsklockan (RTC) igång, förbrukar TI MSP430FR5994 endast 350 nA. I avstängningsläge drar den endast 45 nA. Det här är lägre än någon känd 32-bitarsmikrostyrenhet, till och med lägre än de flesta 8-bitarsmikrostyrenheter.
MSP430FR5994IPNR kan användas från 1,8 till 3,6 volt. Med fast programvara som körs från FRAM utan cacheanvändning kräver MSP430FR endast 3 mA. Om koden körs från cache är strömförbrukningen endast 790 µA. Kombinerat med LEA ger det här betydande behandlingsprestanda med extremt låg effektförbrukning för en 16-bitarsmikrostyrenhet.
Lågeffekttillämpningar för MSP430FR5994-gfamiljen kan enkelt utvecklas med TI MSP-EXP430FR5994 LaunchPad™. Denna LaunchPad innehåller allt en utvecklare behöver för att komma igång med att skriva och felsöka fast programvara för mikrostyrenheten MSP-EXP430FR5994 (figur 3).
Figur 3: TI MSP-EXP430FR5994 LaunchPad har allt en utvecklare behöver för att börja koda och felsöka fast programvara för MSP430FR5994 16-bit FRAM-mikrostyrenheten (Bildkälla: Texas Instruments).
LaunchPad har två tryckknappar, två LED-lampor och plats för ett microSD-kort. För att demonstrera lågeffektkapaciteten hos MSP430FR5994-mikrostyrenheten har LaunchPad en stor superkondensator på 0,22 farad (F) som kan driva LaunchPad. Superkondensatorn laddas genom att koppla LaunchPad till extern strömtillförsel och ställa in byglingen J8 på "Ladda". Det tar två till ter minuter att ladda superkondensatorn helt. När tre minuter har gått flyttas byglingen J8 is till inställningen "Använd" och den externa strömtillförseln avlägsnas. Beroende på tillämpning kan MSP430 köras i flera minuter.
LaunchPad kan även användas för att mäta stömförbrukningen hos MSP430 och tillämpningen. Isoleringsblocket J101 har sju byglingar inklusive en strömförsörjningsbygling på 3 volt, 3V3. Den tvåpoliga byglingen 3V3 kan avlägsnas och tillämpningsströmmen kan mätas genom de två stiften.
LaunchPad har även stöd för TI:s EnergyTrace™-teknik och kan ansluta till en dator med Texas Instruments EnergyTrace grafiska användargränssnitt (GUI). Det gör det möjligt för utvecklare att observera strömförbrukning i realtid från MSP430-mikrostyrenheten och tillämpningen så att de kan fininställa tillämpningen för strömförbrukning.
Till exempel kan strömövervakning och loggning i realtid visa att MSP430-mikrostyrenhetens strömförbrukning har höga toppar då och då. Strömspikar kan försvaga batteriet och minska dess livslängd. Strömspikar kan orsakas av felkonfigurerade kringenheter på kretsen, en extern induktiv eller kapacitiv belastning eller till och med fast programvara som försöker slå på allt samtidigt. Strömövervakning och loggning kan visa utvecklarna var de bör justera den fasta programvaran för att kontrollera spikarna.
Slutsats
För många batteridrivna inbäddade tillämpningar med låg effekt och medelhög prestanda kan utvecklarna välja en lämplig 16-bitarsmikrostyrenhet istället för att välja en 32-bitarskärna. Som visas kan en 16-bitarsmodell för flera tillämpningar ha mycket lägre effekt än 32-bitarsmikrostyrenhet samtidigt som önskad prestanda uppnås.
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 DigiKey or official policies of DigiKey.




