Nutzung der Vorteile eines 16-Bit-Mikrocontrollers hinsichtlich Leistung und niedrigem Stromverbrauch
Zur Verfügung gestellt von Nordamerikanische Fachredakteure von DigiKey
2019-07-24
Damit die Benutzer mit ihrer Unterhaltungselektronik zufrieden sind, ist eine lange Batterielebensdauer erforderlich. Bei batteriebetriebenen IoT-Endpunkten (Internet der Dinge) senkt eine längere Batterielebensdauer die Wartungskosten und verbessert die Zuverlässigkeit. Da der Mikrocontroller in diesen Geräten eine beträchtliche Leistungsaufnahme aufweisen kann, müssen Entwickler die passende Architektur auswählen und anwenden, um den Anforderungen dieser Anwendungen gerecht zu werden. Häufig erweisen sich 16-Bit-Mikrocontroller hierfür als die beste Wahl.
Obwohl 8-Bit-Mikrocontroller leistungsstärker werden, bleibt ihre Leistung von Natur aus hinsichtlich Rechenleistung und adressierbarem Speicher beschränkt. Aus diesem Grund sind 8 Bit für leistungsstärkere Anwendungen nicht geeignet. Andererseits sind auf 32-Bit-Kernen basierende Systeme häufig zu viel des Guten für die Anwendung, insbesondere, wenn sie mehr Leistung als nötig aufnehmen.
Die Lösung liegt mit dem 16-Bit-Mikrocontroller genau in der Mitte zwischen 8-Bit- und 32-Bit-Kernen. Sie bieten die Energieeffizienz eines einfachen 8-Bit-Mikrocontrollers mit einer einzelnen Stromversorgung und dennoch einige der Leistungs- und Speichervorteile von 32-Bit-Kernen. Wenn eine Anwendung nicht intensiv Multithreading-gestützt ist und der Speicherbedarf nicht zu hoch ist, kann ein 16-Bit-Mikrocontroller das richtige Leistungsniveau mit erheblichen Energieeinsparungen bieten.
Dieser Artikel beschreibt die Architektur von 16-Bit-Mikrocontrollern und warum sie die beste Wahl für viele batteriebetriebene Verbraucher- und IoT-Endpunkt-Anwendungen sind. Anschließend geht er auf einige Beispiele für 16-Bit-Mikrocontroller von Microchip Technology und Texas Instruments ein und zeigt die ersten Schritte bei der Entwicklung eines 16-Bit-Designs.
Auswahl eines Mikrocontrollers
Die Auswahl des geeigneten Mikrocontrollers für eine Anwendung ist einer der ersten Schritte bei der Entwicklung nach der Definition der Projektanforderungen. Die Auswahl muss zwischen 8-, 16- und 32-Bit-Mikrocontrollern getroffen werden.
Die Bedeutung von 8-Bit-Mikrocontrollern wird häufig unterschätzt: Sie stellen für den Entwickler das „Arbeitstier“ dar. Es gibt keine Aufgabe, die für einen kostengünstigen 8-Bit-Mikrocontroller mit geringem Stromverbrauch zu unbedeutend ist. Diese Mikrocontroller bieten von allen Mainstream-Mikrocontrollern die niedrigste Leistungsaufnahme, wobei manche Standby-Ströme von weniger als 100 Nanoampere (nA) bieten.
Sie sind außerdem sehr benutzerfreundlich. 8-Bit-Mikrocontroller weisen üblicherweise eine akkumulatorbasierte Architektur auf, obwohl einige moderne Architekturen auch mit einem Registersatz verfügbar sind. Das Programmiermodell ist einfach und beschränkt: Akkumulatoren oder ein kleiner Registersatz mit nur einem Statusregister, einem Stapelzeiger und einem oder mehreren Indexregistern. Sehr häufig kann sich der Stapel in der Hardware befinden und der Programmzähler (PC, Program Counter) ist für die Firmware nicht zugänglich.
Die 8-Bit-Architektur stößt trotz ihrer Beliebtheit an ihre Grenzen, wenn versucht wird, sie für Netzwerk- und Kommunikationssysteme zu verwenden. Beinahe alle Kommunikationsstapel und Netzwerkprotokolle nutzen entweder 16 Bit oder 32 Bit, weswegen man nicht auf die 8-Bit-Architektur zurückgreifen kann. Des Weiteren sind selbst Highend-8-Bit-Mikrocontroller üblicherweise auf eine 16-Bit-Adressierung ohne Paging beschränkt, wodurch Größe und Komplexität der Firmware eingeschränkt werden.
Im Gegensatz dazu erfreuen sich 32-Bit-Mikrocontroller großer Beliebtheit in Anwendungen aller Leistungsbereiche. Sie verwenden registerbasierte Architekturen, die problemlos Netzwerk- und Kommunikationssysteme unterstützen. Bei diesen Mikrocontrollern stehen üblicherweise 32 Bits für die Adressierung zur Verfügung, sie unterstützen Gleitkomma-Mathematik und überaus anspruchsvolle algebraische Operationen sowie Taktraten bis in den Gigahertz-Bereich (GHz). Die 32-Bit-Kerne verwenden ein komplizierteres Programmiermodell, bei dem mehrere Statusregister, ein PC mit Firmware-Zugriff, ein ausgefeiltes Interrupt-Management sowie Firmware-Ausführungsrechte mit zwei oder mehr Ebenen möglich sind.
16-Bit-Mikrocontroller wiederum sind stets registerbasiert und verwenden ebenso einfache Architekturen wie 8-Bit-Mikrocontroller. Sie bieten tendenziell eine hohe Leistung bei geringem Stromverbrauch, eine erheblich niedrigere Stromaufnahme als 32-Bit-Architekturen und eine Leistungsaufnahme, die annähernd so niedrig ist wie bei 8-Bit-Kernen. Falls die Anwendung anspruchsvolle Mathematik erfordert, bieten manche 16-Bit-Mikrocontroller mathematische Coprozessoren, die bei derselben Taktfrequenz annähernd über die Leistung von 32-Bit-Mikrocontrollern verfügen.
Des Weiteren sind ausreichend Kommunikationsstapel vorhanden, um 16-Bit-Mikrocontroller in Netzwerksystemen einzusetzen. Ethernet, CAN, USB und Zigbee sind einige Beispiele für Protokollstapel, die mit einem 16-Bit-Mikrocontroller ebenso schnell ausgeführt werden können wie mit einem 32-Bit-Mikrocontroller. Voraussetzung hierfür ist lediglich, dass der Anwendungscode über ausreichend Leistung zur Verarbeitung des Stapels verfügt.
Adressierung großer Flash-Speicherarrays mit einem 16-Bit-Mikrocontroller
Einer der wichtigsten Unterschiede zwischen 32-Bit- und 16-Bit-Architekturen ist der Speicheradressierungsbereich. 32-Bit-Mikrocontroller verfügen über einen 32-Bit-Adressbus, der Zugriff auf bis zu 4 Gigabyte (GB) Speicher bietet. Herkömmliche 16-Bit-Mikrocontroller verwendeten 16 Bit für die Adressierung, mit denen auf lediglich 64 Kilobyte (KB) zugegriffen werden konnte. Viele moderne 16-Bit-Architekturen bieten inzwischen jedoch eine erweiterte Adressierung mit 24 Bit, sodass ein Adressraum von beträchtlichen 16 Megabyte (MB) möglich ist.
Ein gutes Beispiel für den Ansatz der erweiterten Adressierung ist die stromsparende Mikrocontroller-Familie PIC24F von Microchip Technology. Einer dieser Mikrocontroller ist der PIC24FJ1024GA, ein 16-Bit-Mikrocontroller mit 32 Megahertz (MHz), 1 MB On-Board-Flash und 32 KB On-Board-SRAM. Er nutzt ein einfaches Programmiermodell, das dem vieler 8-Bit-Mikrocontroller ähnelt (Abbildung 1).
Abbildung 1: Das Programmiermodell des PIC24F von Microchip ähnelt dem eines Highend-8-Bit-Mikrocontrollers. Der Mikrocontroller verfügt über eine registerbasierte Architektur mit sechzehn Allzweckregistern mit je 16 Bit, einem Stapelzeiger und fünf unterstützenden Registern. (Bildquelle: Microchip Technology)
Mit seinem 23-Bit-Programmzähler kann der PIC24 auf bis zu 8 MB Flash-Programmspeicher zugreifen. Er hat sechzehn 16-Bit-Register, die sogenannten „Arbeitsregister“ (Working Registers, WREG), die mit W0 bis W15 bezeichnet werden. Bei den Registern W0 bis W13 handelt es sich um Allzweckregister (GPs, General Purpose Registers), die zur Datenspeicherung mit Kontrolle durch die Firmware verwendet werden können. W15 ist ein dedizierter Stapelzeiger (SP, Stack Pointer). Obwohl der SP durch Funktions- und Unterprogrammaufrufe, Programmierausnahmen und Rücksprünge automatisch inkrementiert und dekrementiert wird, kann er ebenso wie W0 bis W13 durch die Firmware geändert werden.
W14 dient als der Rahmenzeiger (FP, Frame Pointer) des Stapels mit den Assembler-Befehlen LINK und UNLINK. Das Stack Pointer Limit Register (SPLIM) ist ein unabhängiges Register und wird mit dem SP verwendet, um Stapelüberläufe zu verhindern.
Der PIC24 verwendet eine Harvard-Architektur mit separaten Adress- und Datenräumen. Das TBLPAG-Register (Data Table Page Address) und das PSVPAG-Register (Program Space Visibility Page Address) wird mit speziellen Anweisungen verwendet, um auf Daten zuzugreifen und sie zwischen den Adress- und Datenräumen zu übertragen. Diese Funktion kommt auch in 32-Bit-Architekturen vor, ist bei 8-Bit-Kernen jedoch nur selten vorzufinden.
Das RCOUNT-Register (Repeat Loop Counter) mit 16 Bit enthält den Schleifenzähler für den Assembler-Befehl REPEAT.
Das CORCON-Register (CPU Core Control) mit 16 Bit wird zur Konfiguration der internen Betriebsmodi des PIC24-Kerns verwendet.
Das 16-Bit-Statusregister schließlich enthält Betriebsstatusbits zum Status des PIC24-Kerns, einschließlich des Status, der aus dem zuletzt ausgeführten Assembler-Befehl resultiert.
Microchip Technology gibt die Leistung für den PIC24FJ1024GA606T mit 16 Millionen MIPS (Million Instructions Per Second) bei 32 MHz an, was für einen 16-Bit-Kern beeindruckende Zahlen sind. Der Kern bietet zahlreiche Funktionen, die auch in einem 32-Bit-Mikrocontroller zu finden sind, etwa einen 17 Bit mal 17 Bit Hardware-Multiplizierer, der auch fraktionale Rechenoperationen unterstützt, sowie einen 32 Bit durch 16 Bit Hardware-Teiler. Das ist hilfreich für IoT-Endpunkte, die Berechnungen mit Sensordaten durchführen müssen. Die Architektur kann außerdem ohne Leistungseinbußen gleichzeitig in den Datenspeicher schreiben und daraus lesen.
Obwohl der PIC24FJ1024GA606T zahlreiche Standard-Peripheriebausteine wie beispielsweise USB On-the-Go (OTG) bietet, zieht er nur sehr wenig Strom in batteriebetriebenen Anwendungen. Die benötigte Versorgungsspannung liegt bei lediglich 2,0 Volt bis 3,6 Volt und bei voller Geschwindigkeit zieht der Mikrocontroller maximal 7,7 Milliampere (mA) Strom bei 32 MHz. Für einen 32-Bit-Kern ist das nur schwer zu erreichen. Die Firmware übernimmt die Feinabstimmung von Kern und Taktung der Peripheriebausteine. Es gibt zwei Assembler-Befehle für Energiesparmodi. Der Befehl IDLE stoppt den PIC24-Kern, während die Peripheriebausteine weiterhin ausgeführt werden. Der Befehl SLEEP stoppt den Betrieb aller Komponenten mit Ausnahme der optionalen Watchdog-Funktion und der externen Interrupt-Erkennung. Der Leerlaufstrom beträgt nur 2,8 mA (max.) und der maximale Ruhestrom liegt abhängig von der Konfiguration der Peripheriebausteine zwischen 10 und 45 Mikroampere (µA). Im sparsamsten Modus (im Ruhemodus unter Beibehaltung des RAM-Inhalts) kann der Stromverbrauch des PIC24F auf bis zu 190 nA gesenkt werden.
Für mehr Leistung bietet Microchip Technology im Rahmen der dsPIC®-Familie einen Highend-16-Bit-Mikrocontroller an. Ein Beispiel für einen solchen16-Bit-Mikrocontroller ist der dsPIC33EP512GP506T mit 512 KB Flash und einer von Microchip mit 70 MIPS angegebenen Leistung. Der dsPIC bietet annähernd die gleichen Kernregister wie der PIC24, wobei zusätzliche Register DSP-Anweisungen (Digital Signal Processing) unterstützen, zwei 40-Bit-Akkumulatoren und Unterstützung für einen 32-Bit-Multiplizierer eingeschlossen. Beim Upgrade eines PIC24-Systems stehen für viele PIC24-Mikrocontroller Pin-kompatible dsPIC-Upgrades zur Verfügung, wodurch mit derselben Platine mehr Leistung erzielt werden kann.
Selbstverständlich erfordert zusätzliche Leistung auch zusätzlichen Strom. Dieser dsPIC33 benötigt eine Spannungsversorgung mit 3,0 Volt bis 3,6 Volt und zieht bei 70 MIPS einen maximalen Strom von 60 mA.
Senkung des Stromverbrauchs bei gleichzeitiger Leistungssteigerung
Die Mikrocontroller-Familie MSP430FR599x von Texas Instruments verwendet den FRAM-Programmspeicher (Ferroelectric Random Access Memory) des Unternehmens, um bei Lese- und Schreibvorgängen bei einem geringeren Stromverbrauch als Flash-Mikrocontroller höhere Leistungszahlen zu erzielen. Der 16-Bit-Mikrocontroller MSP430FR5994IPNR ist ein Mitglied dieser Familie und bietet eine Taktrate von 16 MHz und 256 KB FRAM.
Dieser MSP430FR-Mikrocontrollerkern bietet Leistungsverbesserungen wie etwa einen zweifach assoziativen Cache mit vier Cache-Zeilen mit einer Zeilengröße von 64 Bit für mehr FRAM-Leistung. Ein 32-Bit-Hardware-Multiplizierer erhöht die Leistung für rechenintensive Operationen. Des Weiteren verfügt er über einen LEA-Coprozessor (Low Energy Accelerator), der vom MSP430-Kern unabhängig ist. Der LEA kann eine komplexe Fast-Fourier-Transformation (FFT) mit 256 Punkten berechnen, als FIR-Filter (Finite Impulse Response) fungieren und eine Matrixmultiplikation ausführen, die – laut TI – bis zu 40-mal schneller ist als mit einem Arm® Cortex®-M0+. Der LEA verbessert die Leistung für Sensorfusionen, Bildverbesserungen und die Verarbeitung der Daten von Ultraschallsensoren. Alles das sind Anwendungen, bei denen Entwickler üblicherweise zuerst über die Verwendung eines 32-Bit-Kerns nachdenken und nicht über die eines 16-Bit-Mikrocontrollers mit extrem niedrigem Stromverbrauch.
Das Programmiermodell für den MSP430R ist sehr einfach (Abbildung 2). Es gibt sechzehn 16-Bit-Register, die mit R0 bis R15 bezeichnet werden. R0 ist der Programmzähler, R1 der Stapelzeiger, R2 das Statusregister und R3 ein Konstantengenerator (für unmittelbare Operanden). Bei den Registern R4 bis R15 handelt es sich um Allzweckregister. Bei den übrigen Konfigurationsregistern handelt es sich um speicherabgebildete (Memory-Mapped) Register, ähnlich wie bei den meisten 32-Bit-Kernen.
Abbildung 2: Der Registersatz des Mikrocontrollers MSP430 ist anderen registerbasierten 16-Bit-Kernen in Bezug auf die Konfiguration sehr ähnlich. Die übrigen Konfigurationsregister sind speicherabgebildet. (Bildquelle: Texas Instruments)
Diese Leistungssteigerung bringt keinen erhöhten Stromverbrauch mit sich. Im Standby-Modus zieht der MSP430FR5994 von TI bei laufender Echtzeituhr lediglich 350 nA. Im Abschaltmodus sind es sogar nur 45 nA. Dieser Stromverbrauch ist geringer als bei jedem derzeit erhältlichen 32-Bit-Mikrocontroller und sogar geringer als bei den meisten 8-Bit-Mikrocontrollern.
Der MSP430FR5994IPNR kann mit Spannungen von 1,8 Volt bis 3,6 Volt betrieben werden. Wenn die Firmware über den FRAM und ohne Cache-Treffer betrieben wird, verbraucht der MSP430FR lediglich 3 mA. Wird Code aus dem Cache heraus ausgeführt, beträgt die Stromaufnahme nur 790 µA. In Kombination mit dem LEA ergibt sich für einen 16-Bit-Mikrocontroller hierdurch eine beträchtliche Verarbeitungsleistung bei einer überaus geringen Stromaufnahme.
Energiesparende Anwendungen für die MSP430FR5994-Familie können mithilfe des MSP-EXP430FR5994 LaunchPad™ von TI problemlos entwickelt werden. Dieses LaunchPad bietet einem Entwickler alles, was für das Schreiben und Debuggen von Firmware für den Mikrocontroller MSP-EXP430FR5994 erforderlich ist (Abbildung 3).
Abbildung 3: Das MSP-EXP430FR5994 LaunchPad von TI bietet einem Entwickler alles, was für das Schreiben und Debuggen von Firmware für den 16-Bit-FRAM-Mikrocontroller MSP-EXP430FR5994 erforderlich ist (Bildquelle: Texas Instruments).
Das LaunchPad verfügt über zwei Tasten, zwei LEDs und einen Einschub für eine Micro-SD-Karte. Um die Energiespareigenschaften des Mikrocontrollers MSP430FR5994 zu demonstrieren, verfügt das LaunchPad über einen großen Superkondensator mit 0,22 Farad (F), mit dem das LaunchPad betrieben werden kann. Der Superkondensator wird aufgeladen, indem das LaunchPad mit einer externen Stromversorgung verbunden und der Jumper J8 auf „Charge“ gesetzt wird. Es dauert zwei bis drei Minuten, um den Superkondensator komplett aufzuladen. Nach drei Minuten wird der Jumper J8 auf „Use“ gesetzt und das LaunchPad wird von der externen Stromversorgung getrennt. Je nach Anwendung kann der MSP430 für viele Minuten verwendet werden.
Das LaunchPad kann auch zur Messung der Stromaufnahme des MSP430 und der Anwendung verwendet werden. Der J101-Trennblock verfügt über sieben Jumper, einschließlich eines Jumpers für die 3-Volt-Spannungsversorgung (3V3). Der 3V3-Jumper kann entfernt werden, um über die zwei Pins den Anwendungsstrom zu messen.
Das LaunchPad unterstützt außerdem die EnergyTrace™-Technologie von TI und kann mit einem Computer verbunden werden, auf dem die grafische Benutzeroberfläche EnergyTrace (GUI) von Texas Instruments ausgeführt wird. So können Entwickler den Stromverbrauch des MSP430 und der Anwendung in Echtzeit beobachten und eine Feinabstimmung ihrer Anwendung hinsichtlich des Stromverbrauchs vornehmen.
Beispielsweise können die Überwachung und Protokollierung des Stromverlaufs des Mikrocontrollers MSP430 in Echtzeit gelegentliche Stromspitzen anzeigen. Stromspitzen können die Lebensdauer der Batterie verkürzen. Stromspitzen können durch fehlerhaft konfigurierte On-Chip-Peripheriebausteine, eine externe induktive oder kapazitive Last oder sogar von Firmware verursacht werden, die versucht, alle Funktionen gleichzeitig zu aktivieren. Die Überwachung und Protokollierung des Stromverlaufs zeigen den Entwicklern, wo die Firmware angepasst werden muss, um diese Stromspitzen unter Kontrolle zu bringen.
Fazit
Für viele batteriebetriebene, eingebettete Low-Power-Anwendungen mit mittlerer Leistung können sich Entwickler statt für einen 32-Bit-Kern für einen geeigneten 16-Bit-Mikrocontroller entscheiden. Wie sich gezeigt hat, kann für viele Anwendungen ein 16-Bit-Mikrocontroller verwendet werden, der sehr viel weniger Strom verbraucht als ein 32-Bit-Mikrocontroller und dennoch die erforderliche Leistung liefert.
Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.




