Die zunehmende Beliebtheit von 32-Bit-Mikrocontrollern (MCU) in der Embedded-Community ist keine Überraschung. Diese funktionsreichen Bausteine eignen sich für eine Vielzahl unterschiedlicher Anwendungen, was erklärt, warum viele Embedded-Entwickler sie für ihre nächsten Designs auswählen. Die Entwickler erkennen, dass diese komplexen Bausteine alles bieten, was sie in Bezug auf die reine Rechenleistung, eine umfangreiche Peripherie und den einfachen Zugang zu einer breiten Palette von Entwicklungswerkzeugen und Bibliotheken benötigen.
Viele dieser 32-Bit-Bausteine basieren auf den äußerst erfolgreichen ARM-Kernen. So können Entwickler sicher sein, dass sie Zugang zu Second-Source-Bausteinen und einem umfassenden Satz von Entwicklungs-, Test- und Validierungstools haben, die auf dem Markt verfügbar sind.
Eine genauere Betrachtung der jüngsten MCU-Markttrends zeigt jedoch, dass 32-Bit-Bausteine nicht die einzigen sind, die ein starkes Wachstum verzeichnen (Tabelle 1). Der aufstrebende 8-Bit-MCU-Markt weist eine zusammengesetzte Wachstumsrate (6,4 %) auf, die derjenigen des 32-Bit-Marktes (6,9 %) nahe kommt. Andere Branchenanalysten prognostizieren identische Wachstumsraten für 8- und 32-Bit-Mikrocontroller.
Der Aufschwung bei 8-Bit-Geräten macht deutlich, dass es einige zwingende Gründe geben muss, ein 8-Bit-Gerät anstelle einer 32-Bit-MCU zu verwenden. Dieser Artikel soll Aufschluss darüber geben, warum 8-Bit-Bausteine ihren Marktanteil behalten.
Wesentliche Unterschiede
Die Hauptunterschiede zwischen 8- und 32-Bit-MCUs liegen in der Kosten- und Preisstruktur, der CPU-Leistung, der Benutzerfreundlichkeit, der Effizienz bei hardwarenahen Funktionen und dem statischen Stromverbrauch. Bei der Entwicklung eines neuen Designs müssen die Entwickler die Anforderungen an eine MCU auf der Grundlage der erforderlichen Verarbeitungsleistung, des Umfangs der benötigten Schnittstellen und – bei batteriebetriebenen Designs – der wichtigen Stromverbrauchsprofile sorgfältig abwägen. Es besteht kein Zweifel, dass eine 32-Bit-MCU eine höhere Leistung als ein 8-Bit-Gerät bietet, aber der Ingenieur steht vor der traditionellen Entscheidung zwischen dem besten auf dem Markt erhältlichen Gerät und den tatsächlichen Anforderungen der Anwendung.
Natürlich haben diese Entscheidungen einen großen Einfluss auf die voraussichtlichen Kosten der Stückliste (BOM). Bei einer geringeren Anzahl von Gattern wird ein weniger komplexer 8-Bit-Baustein sicherlich billiger sein als ein 32-Bit-Baustein. Vergleicht man 8- und 32-Bit-MCUs führender Anbieter, die jeweils über eine ähnliche Menge an Flash-Speicher, Pin-Out usw. verfügen, so kosten 8-Bit-Geräte in der Regel etwa 20 % weniger. Aber das ist nur der erste von vielen Aspekten. Ein weiterer Aspekt betrifft die Einfachheit der Einrichtung für eine neue Entwicklung.
Einfache Entwicklung
MCU-Anbieter neigen dazu, ihren 32-Bit-Bausteinen im Vergleich zu 8-Bit-Produkten mehr Merkmale und Funktionen hinzuzufügen. Folglich ergeben sich bei einem komplexeren Gerät weitaus mehr Überlegungen zur Einrichtung. Während einige 32-Bit-MCUs mit einem begrenzten Setup ähnlich dem eines 8-Bit-Geräts betrieben werden können, können Sie die zusätzlichen Funktionen des leistungsfähigeren Geräts nicht nutzen.
Diesen Artikel im .PDF-Format Dieser Dateityp enthält gegebenenfalls hochauflösende Grafiken und Schaltpläne. |
Ein typischer 32-Bit-ARM-Baustein hat beispielsweise unabhängige Takteinstellungen für den Kern selbst, den AHB-Bus, den APBA-Bus und den APBB-Bus. Sie alle können auf unterschiedliche Frequenzen eingestellt werden. In der Regel müssen Sie auch auf den gewünschten Takt umschalten, da er in der Software und nicht wie bei den meisten 8-Bit-Bauteilen in der Hardware eingestellt ist. Darüber hinaus bedeutet eine Änderung des Taktes, dass man die Wartezustände für den Flash einrichten muss, möglicherweise in Abhängigkeit von der gemessenen VCC-Spannung.
Eine solche Einrichtung kann jedoch mit einer 8-Bit-MCU viel einfacher sein. Die tinyAVR- und megaAVR-Produkte von Atmel erfordern beispielsweise nur die Initialisierung des Stack-Pointers, die typischerweise vier Codezeilen in Anspruch nimmt, bevor die Anwendung kodiert wird. Die Wahl des Taktgebers, des Brownout-Detektors, der Funktion des Reset-Pins usw. ist im Baustein vorprogrammiert.
Die Architektur ist auch viel einfacher als bei einem 32-Bit-Baustein mit internen Registern, Peripheriegeräten und SRAM, die alle auf demselben Datenbus abgebildet werden. Die Peripheriegeräte und die CPU laufen normalerweise mit der gleichen Frequenz, so dass keine Peripheriebuskonfiguration erforderlich ist. Außerdem müssen sich die Entwickler keine Gedanken über Latenzzeiten bei der Synchronisierung zwischen verschiedenen Taktdomänen machen.
Leistung
Wenn es um die gewünschte CPU-Leistung geht, sollte der Ingenieur alle Anwendungsfälle berücksichtigen. Die Realität ist, dass viele eingebettete Designs keine hohen Anforderungen an die Rechenleistung haben. Oft ist nur eine sehr geringe Datenverarbeitung erforderlich, so dass ein Abwägen zwischen diesen Anforderungen und dem Stromverbrauch und den Anforderungen an die Peripheriegeräte entscheidend ist.
Eine einfache Thermostatanwendung wird beispielsweise die meiste Zeit ihres Lebens im Ruhezustand verbringen. Von Zeit zu Zeit wacht sie auf, misst die Temperatur und entscheidet dann, ob sie ein Relais ein- oder ausschaltet oder einen Befehl an einen Host-Controller sendet. Dann geht er wieder in den Ruhezustand über. Die Rechen- und Schnittstellenanforderungen dieser Anwendung sind gering, aber viele andere Anwendungen wie Brandmelder, Elektrowerkzeuge, Durchflussmesser und Gerätesteuerungen haben ein ähnliches Nutzungsprofil.
Effizienz von Hardware-nahen Funktionen
Viele moderne Mikrocontroller enthalten einige Hardware-Funktionen, die dazu dienen, die CPU so effizient wie möglich zu betreiben. Im Falle von Atmel verfügen sowohl die 8-Bit-AVR- als auch die 32-Bit-ARM-basierten MCU-Familien über das Peripheral Event System. Ein Ereignissystem ist eine Reihe von hardwarebasierten Funktionen, die es Peripheriegeräten ermöglichen, ohne Eingreifen der CPU zu interagieren. Es ermöglicht Peripheriegeräten, Signale direkt an andere Peripheriegeräte zu senden, wodurch eine kurze und zu 100 % vorhersehbare Reaktionszeit gewährleistet wird.
Wenn die Fähigkeiten des Ereignissystems vollständig genutzt werden, kann der Chip so konfiguriert werden, dass er komplexe Operationen mit sehr wenig Eingriffen der CPU durchführt, wodurch sowohl wertvoller Programmspeicher als auch Ausführungszeit eingespart wird. Bei der Erkennung eines Hardware-Ereignisses ist es wichtig, zuerst das Ereignis zu erkennen und dann die Kontrolle auf die gewünschte Interrupt-Service-Routine (ISR) zu übertragen.
In diesen Situationen ist die CPU-Geschwindigkeit nicht der einzige entscheidende Faktor. Es geht darum, wie lange es in Zyklen dauert, auf den Interrupt zu reagieren, die ISR auszuführen und zurückzukehren. Wie das folgende Beispiel zeigt, können 8-Bit-Geräte bei der Verarbeitung von hardwarenahen Aktionen effizienter sein.
Betrachten Sie den Empfang eines Bytes auf der SPI, die Verwendung eines Interrupts, um es zu erkennen, und die anschließende Ausführung einer einfachen ISR-Routine, um das Byte von der SPI-Peripherie zu lesen und im SRAM zu speichern. Anhand dieses Szenarios werden in Tabelle 2 Vergleiche zwischen einem Atmel 8-Bit-AVR-Baustein und einer Atmel ARM Cortex M0+-basierten 32-Bit-MCU gezogen. Die Ergebnisse wurden anhand der verfügbaren Informationen berechnet und basieren auf minimalen Implementierungen. Ingenieure sollten jedoch ihre eigenen Anwendungen überprüfen, da die Unterbrechungserkennung und die Rückkehr von der Unterbrechung mehr Zyklen benötigen könnten als in der Tabelle angegeben. Der Bedarf von 12 Zyklen gegenüber 33 Zyklen entspricht einer theoretischen maximalen SPI-Bandbreite von 1,67 MB/s für die 8-Bit-CPU und einer Bandbreite von 606 kB/s für eine 32-Bit-CPU, wenn sie mit 20 MHz läuft.
Der Grad der numerischen Verarbeitung kann sich auch auf den Stapel und den benötigten Speicher auswirken. Die Anwendung des Fibonacci-Algorithmus ist eine besonders gute Methode zum Testen des Speicherbedarfs. Da er nur eine lokale Variable verwendet, muss alles auf den Stack gepusht werden.
Bei einem Vergleich zwischen einem 8-Bit-AVR und einem ARM 32-Bit-CM0+-basierten Gerät und der Verwendung eines rekursiven 15-stufigen Fibonacci-Algorithmus verwendet der AVR insgesamt 70 Byte Stack, einschließlich 30 für den Rückgabestack (15 Aufrufe tief). Das ARM-basierte Gerät verwendet 192 Bytes (60 davon sollten Return-Stack sein). Das bedeutet, dass der CSTACK mehr als dreimal so groß ist wie bei der 8-Bit-Lösung. In typischem C-Code liegen die Variablen auf dem Stack oft in einem gepackten Format vor, so dass dies eine extreme Ecke ist. Die Aussage, dass für dieselbe 8-Bit-zentrierte Anwendung auf einem 32-Bit-Baustein (im Vergleich zu einem nativen 8-Bit-Baustein) 1,5 bis 3 Mal mehr SRAM benötigt wird, ist jedoch eine faire Schätzung.
Stromverbrauch
Kein MCU-Artikel wäre vollständig, ohne den statischen Stromverbrauch zu untersuchen. Dies allein kann ein Schlüsselfaktor bei der Wahl zwischen einem 8- oder 32-Bit-Gerät sein, insbesondere bei batteriebetriebenen Anwendungen. Tabelle 3 veranschaulicht die Unterschiede in der Leistungsaufnahme von 8- und 32-Bit-Bauteilen sowohl im aktiven als auch im statischen Modus.
Aggressive Fertigungstechnologien erhöhen den Transistorleckstrom, der sich mit jeder Prozessgeneration etwa verdoppelt und proportional zur Anzahl der Gates ist. Der Leckstrom steigt bei höheren Temperaturen exponentiell an, was bei der Entwicklung eines Verbraucherdesigns leicht übersehen werden kann. Mobiltelefone und Personal Media Player werden überallhin mitgenommen, und wie wir alle festgestellt haben, können die Temperaturen im Sommer in einem Auto leicht auf über 40°C ansteigen.
Die Zeit, die der Mikrocontroller im aktiven Modus im Vergleich zum statischen Modus verbringt, trägt erheblich zum Gesamtleistungsbudget der Anwendung bei.
Natürlich hängt das Verhältnis zwischen aktivem und statischem Modus von den Anforderungen der Anwendung ab. Nimmt man das vorherige SPI-Interrupt-Beispiel (Tabelle 2) und geht von einer SPI-Datenbandbreite von 80 kb/s aus, verbringt die 8-Bit-CPU 1,2 % ihrer Zeit im aktiven Modus, während die 32-Bit-CPU 3,3 % im aktiven Modus verbringt (Tabelle 4).
Fazit
Bei der Überlegung, ob ein 8- oder 32-Bit-Mikrocontroller für ein zukünftiges Design verwendet werden soll, kann es sich um eine Internet-of-Things-Anwendung (IoT) handeln. Wie das IoT tatsächlich Gestalt annimmt, ist Gegenstand zahlreicher Debatten, aber es wird die Ingenieure auf jeden Fall vor die Herausforderung stellen, eine detaillierte Bewertung der MCU-Anforderungen vorzunehmen. Drahtlose Konnektivität, insbesondere ZigBee, wird ebenfalls eine wesentliche Komponente sein, aber das bedeutet nicht automatisch, dass ein Gerät mit höherer Leistung benötigt wird.
Download this article in .PDF-Format Dieser Dateityp enthält hochauflösende Grafiken und Schaltpläne, falls zutreffend. |
Eine Reihe von verfügbaren 8-Bit-Mikrocontroller-Produkten befriedigt den Bedarf an niedrigen Verarbeitungsstufen und drahtloser Konnektivität. Ein Beispiel dafür ist die ATmegaRFR2-Serie von Atmel, die eine IEEE 802.15.4-konforme, drahtlose 2,4-GHz-Ein-Chip-Mikrocontroller-Lösung bietet, die sich für batteriebetriebene, kostengünstige IoT-Designs eignet.
Ingar Fredriksen, MCU-Marketingdirektor von Atmel für die EMEA-Region, hat seinen Sitz in Trondheim, Norwegen.
Paal Kastnes, Ingenieur im MCU-Anwendungsteam, der sich auf die Schulung von Atmel-Mitarbeitern und Kunden im Umgang mit Atmel-Mikrocontrollern und -Tools spezialisiert hat, ist ebenfalls in Trondheim ansässig. Er erwarb seinen Bachelor-Abschluss in Elektrotechnik am Trondheim University College.