De stijgende populariteit van 32-bit microcontroller (MCU) apparaten binnen de embedded gemeenschap komt niet als een verrassing. Deze functionele apparaten zijn geschikt voor een groot aantal verschillende toepassingen, wat verklaart waarom veel embedded ontwikkelaars ze kiezen voor hun volgende ontwerpen. Ontwerpers zien in dat dergelijke complexe apparaten alles bieden wat ze nodig hebben in termen van rekenkracht, een rijke set randapparatuur en eenvoudige toegang tot een breed scala aan ontwikkeltools en bibliotheken.
Veel van deze 32-bits apparaten zijn gebaseerd op de zeer succesvolle ARM-kernen. Ontwikkelaars kunnen er dus op vertrouwen dat zij toegang hebben tot second source-apparaten en tot een uitgebreide reeks ontwikkelings-, test- en validatietools die op de markt beschikbaar zijn.
Bij een nadere beschouwing van recente MCU-markttrends blijkt echter dat 32-bits apparaten niet de enige zijn die een sterke groei doormaken (tabel 1). De snelgroeiende 8-bit MCU-markt heeft een samengesteld groeipercentage (6,4%) dat dicht in de buurt komt van dat van 32-bit (6,9%). Andere industrie-analisten voorspellen identieke groeipercentages voor 8- en 32-bit microcontrollers.
De opleving van 8-bit apparaten laat duidelijk zien dat er enkele dwingende redenen moeten zijn om een 8-bit apparaat te gebruiken in plaats van een 32-bit MCU. Dit artikel probeert enig inzicht te verschaffen in de reden waarom 8-bit apparaten marktaandeel behouden.
Essentiële verschillen
De belangrijkste verschillen tussen 8- en 32-bit MCU’s zijn kosten- en prijsstructuur, CPU-prestaties, gebruiksgemak, efficiëntie in hardware-naast-functies, en statisch stroomverbruik. Wanneer ontwikkelaars aan een nieuw ontwerp beginnen, moeten zij zorgvuldig de vereisten voor een MCU in kaart brengen op basis van de benodigde verwerkingscapaciteit, de mate waarin interfacing nodig is, en, voor ontwerpen die op batterijen werken, de zo belangrijke energieverbruikprofielen. Het lijdt geen twijfel dat een 32-bit MCU betere prestaties levert dan een 8-bit apparaat, maar de ingenieur staat voor de traditionele keuze tussen het beste beschikbare apparaat op de markt versus de werkelijke behoeften van een toepassing.
Uiteraard zullen deze beslissingen van grote invloed zijn op de waarschijnlijke bill of materials (BOM)-kosten. Met een lager aantal poorten zal een minder complex 8-bit apparaat zeker goedkoper zijn dan een 32-bit apparaat. Bij een vergelijking van 8- en 32-bit MCU’s van toonaangevende leveranciers, elk met een vergelijkbare hoeveelheid flash-geheugen, pin-out enz., kosten 8-bit apparaten doorgaans ongeveer 20% minder. Maar dit is slechts de eerste van vele overwegingen. Een ander aspect betreft het gemak waarmee een nieuwe ontwikkeling kan worden opgezet.
Ontwikkelingsgemak
MCU-leveranciers hebben de neiging meer mogelijkheden en functionaliteit toe te voegen aan hun 32-bit apparaten in vergelijking met 8-bit producten. Bijgevolg zijn er veel meer installatieoverwegingen bij een complexer apparaat. Hoewel sommige 32-bit MCU’s kunnen werken met een beperkte setup die vergelijkbaar is met die van een 8-bit apparaat, kunt u niet profiteren van de extra functies van het krachtigere apparaat.
Download dit artikel in .PDF-formaat Dit bestandstype bevat hoge resolutie afbeeldingen en schema’s indien van toepassing. |
Bijv. een typisch 32-bit ARM-apparaat heeft onafhankelijke klokinstellingen voor de kern zelf, de AHB-bus, de APBA-bus en de APBB-bus. Ze kunnen allemaal op verschillende frequenties worden ingesteld. Doorgaans moet de klok die u wilt gebruiken ook worden omgeschakeld, omdat deze in de software wordt ingesteld en niet in de hardware zoals bij de meeste 8-bit onderdelen. Bovendien betekent het veranderen van de klok dat je de wachttoestanden voor flash moet instellen, mogelijk gebaseerd op gemeten VCC spanning.
Een dergelijke setup kan echter veel eenvoudiger zijn met een 8-bit MCU. Bijvoorbeeld, Atmel’s tinyAVR en megaAVR producten vereisen slechts initialisatie van de stack pointer, die typisch vier regels code vergt, voorafgaand aan het coderen van de applicatie. De keuze van de klok, de brownout-detector, de functie van de reset-pin, enz. is allemaal voorgeprogrammeerd in het apparaat.
De architectuur is ook veel eenvoudiger dan die van een 32-bit apparaat met interne registers, randapparatuur en SRAM die alle op dezelfde databus worden toegewezen. De randapparatuur en de CPU werken normaliter op dezelfde frequentie, zodat geen configuratie van de periferiebus nodig is. Bovendien hoeven ontwerpers zich geen zorgen te maken over wachttijden bij het synchroniseren tussen verschillende klokdomeinen.
Prestaties
Wanneer het aankomt op de gewenste CPU-prestaties, moet de ingenieur alle gebruikssituaties in ogenschouw nemen. De realiteit is dat veel embedded ontwerpen geen hoge rekeneisen stellen. Vaak is zeer weinig manipulatie van gegevens vereist, zodat het afwegen van deze eisen tegen het stroomverbruik en de eisen aan de randapparatuur van cruciaal belang wordt.
Zo zal bijvoorbeeld een eenvoudige thermostaatapplicatie het grootste deel van zijn leven in een slaapstand doorbrengen. Zo nu en dan zal het ontwaken en de temperatuur meten en dan een beslissing nemen om een relais aan/uit te zetten of een instructie naar een host controller te sturen. Daarna hervat hij de slaapstand. De reken- en interface-eisen van deze toepassing zijn klein, maar veel andere toepassingen, zoals brandmelders, elektrisch gereedschap, debietmeters en apparaatregelingen hebben ook een soortgelijk gebruiksprofiel.
Efficiëntie van Hardware Near Functions
Veel moderne microcontrollers bevatten een aantal hardwarefuncties die dienen om de CPU zo efficiënt mogelijk te laten werken. In het geval van Atmel zijn zowel de 8-bit AVR als de 32-bit ARM-gebaseerde MCU-families voorzien van het Peripheral Event System. Een “event system” is een reeks hardwarematige functies waarmee randapparatuur kan samenwerken zonder tussenkomst van de CPU. Het stelt randapparatuur in staat signalen rechtstreeks naar andere randapparatuur te zenden, waardoor een korte en 100% voorspelbare responstijd wordt gegarandeerd.
Wanneer de mogelijkheden van het event-systeem volledig worden benut, kan de chip worden geconfigureerd om complexe bewerkingen uit te voeren met zeer weinig tussenkomst van de CPU, waardoor zowel kostbaar programmageheugen als uitvoeringstijd wordt bespaard. In het geval van het detecteren van een hardware event, is het belangrijk om eerst het event te detecteren en dan de besturing over te schakelen naar de gewenste interrupt service routine (ISR).
In deze situaties is CPU snelheid niet de enige bepalende factor. Het is een kwestie van hoe lang, in termen van cycli, het duurt om te reageren op de interrupt, de ISR uit te voeren, en terug te keren. Zoals het volgende voorbeeld laat zien, kunnen 8-bit apparaten efficiënter zijn in het afhandelen van hardware-na-acties.
Overweeg de ontvangst van één byte op de SPI, het gebruik van een interrupt om deze te detecteren, en vervolgens het uitvoeren van een eenvoudige ISR-routine om de byte van de SPI-periferie te lezen en in SRAM op te slaan. Aan de hand van dit scenario worden in tabel 2 vergelijkingen gemaakt tussen een Atmel 8-bit AVR-apparaat en een Atmel ARM Cortex M0+-gebaseerde 32-bit MCU. De resultaten zijn berekend op basis van de beschikbare informatie en zijn gebaseerd op minimale implementaties. Ingenieurs moeten dit echter controleren met hun eigen toepassingen, aangezien de interrupt-detectie en de terugkeer van de interrupt meer cycli kunnen vergen dan in de tabel is aangegeven. 12 cycli versus 33 cycli komt overeen met een theoretische maximale SPI-bandbreedte van 1,67 MB/s voor de 8-bit CPU en een bandbreedte van 606 kB/s voor een 32-bit CPU bij 20 MHz.
De mate van numerieke verwerking kan ook van invloed zijn op de stack en het benodigde geheugen. Het toepassen van het Fibonacci algoritme is een bijzonder goede methode om geheugenvereisten te testen. Omdat het slechts een lokale variabele gebruikt, moet alles naar de stack worden gepushed.
Bij een vergelijking tussen een 8-bit AVR en een ARM 32-bit CM0+-gebaseerd apparaat, en bij gebruik van een recursief 15-traps Fibonacci algoritme, gebruikt de AVR in totaal 70 bytes van de stack, inclusief 30 voor de return stack (15 calls diep). Het ARM-gebaseerde apparaat gebruikt 192 bytes (60 zouden de return stack moeten zijn). Dit betekent dat de CSTACK meer dan drie keer zo groot is als de 8-bit oplossing. In typische C-code komen meer variabelen op de stack vaak verpakt voor, dus dit is een extreme hoek. Maar 1,5 tot 3 maal zoveel SRAM is nodig voor dezelfde 8-bit-centrische toepassing op een 32-bit (versus een native 8-bit) apparaat.
Voedingsverbruik
Een MCU-artikel zou niet compleet zijn zonder het statische stroomverbruik te onderzoeken. Dit alleen al kan een sleutelfactor zijn bij de keuze tussen een 8- of 32-bit apparaat, vooral voor toepassingen die op batterijen werken. Tabel 3 illustreert de verschillen in stroomverbruik tussen 8- en 32-bit apparaten in zowel actieve als statische modus.
De progressieve fabricagetechnologieà “n verhogen de lekstroom van transistors, die bij elke procesgeneratie ruwweg verdubbelt en evenredig is met het aantal poorten. De lekstroom neemt exponentieel toe bij hogere temperaturen, hetgeen gemakkelijk over het hoofd kan worden gezien bij het ontwerpen van een consumentenontwerp. Mobiele telefoons en persoonlijke mediaspelers worden overal mee naar toe genomen, en zoals we allemaal hebben ondervonden, kan de temperatuur in de zomer in een auto gemakkelijk oplopen tot boven de 40°C.
De hoeveelheid tijd die de microcontroller zal doorbrengen in actieve modus versus statische modus draagt aanzienlijk bij aan het totale energiebudget van de toepassing.
Natuurlijk zal de verhouding tussen actieve en statische modus variëren, afhankelijk van de applicatie-eisen. Uitgaande van het SPI interrupt voorbeeld (tabel 2) en een SPI data bandbreedte van 80 kb/s, zal de 8-bit CPU 1,2% van zijn tijd in de actieve modus doorbrengen, vergeleken met de 32-bit CPU, die 3,3% in de actieve modus zal doorbrengen (tabel 4).
Conclusie
Om na te gaan of voor een toekomstig ontwerp een 8- of 32-bits microcontroller moet worden gebruikt, kan het gaan om een Internet of things (IoT)-toepassing. Hoe IoT in de praktijk vorm krijgt, roept veel discussie op, maar het zal ingenieurs zeker uitdagen om een gedetailleerde inschatting te maken van de MCU-vereisten. Draadloze connectiviteit, met name ZigBee, zal ook een essentieel onderdeel zijn, maar dat betekent niet automatisch dat er een apparaat met een hoger vermogen voor nodig is.
Download dit artikel in .PDF formaat Dit bestandstype bevat hoge resolutie afbeeldingen en schema’s indien van toepassing. |
Een aantal beschikbare 8-bit microcontroller producten voorziet in de behoefte aan lage verwerkingsniveaus en draadloze connectiviteit. Een voorbeeld hiervan is de Atmel ATmegaRFR2-serie, die een IEEE 802.15.4-compatibele, single-chip, 2,4-GHz draadloze microcontrolleroplossing biedt die geschikt is voor batterijgevoede, goedkope IoT-ontwerpen.
Ingar Fredriksen, Atmel’s MCU-marketingdirecteur voor de EMEA-regio, is gevestigd in Trondheim (Normay). Hij behaalde zijn Bachelor in Science-graad in elektrotechniek aan de Trodheim University College.
Paal Kastnes, stafingenieur in het MCU Applications-team, gespecialiseerd in het opleiden van Atmel-medewerkers en -klanten in het gebruik van Atmel’s microcontrollers en tools, is eveneens gevestigd in Trondheim. Hij behaalde zijn Bachelor in Science-graad in elektrotechniek aan de universiteit van Trondheim.