Anwendungsbeispiel ARM-Cortex MCU-Familie LPC1100 ersetzt 8- und 16-bit-Controller in Haushaltsgeräten

Die Branche der Haushaltsgeräte (weiße Ware) gehört zu jenen Segmenten, in denen der Anteil an Halbleitern in den kommenden Jahren stark wachsen wird. Das sinkende Preisniveau der Chips bietet Möglichkeiten, den Halbleiter-Anteil der Geräte zu erhöhen. Dabei dürften die Mikrocontroller ein hohes Wachstum verzeichnen, die stärksten Zuwächse werden laut IMS2009 auf 32-bit-Architekturen entfallen.

In einem typischen Haushaltsgerät finden sich mehrere Leiterplatten, die miteinander kommunizieren und jeweils einen Mikrocontroller als zentrales Element enthalten. Jede dieser Platinen, ob sie nun für die Benutzerschnittstelle, das Systemmanagement oder die Motorregelung zuständig ist, stellt individuelle Anforderungen, sodass die Auswahl der MCU schwierig ist. Werden mehrere MCU-Anbieter in die engere Wahl gezogen, muss beträchtliche Zeit aufgewendet werden, um sich mit den verschiedenen Core-Technologien, Peripherie-Programmierungen und Tools auseinanderzusetzen - ganz abgesehen vom Aufwand, der für das Management dieser Aktivitäten entsteht.

Auf diese Herausforderung hin wurde die Mikrocontroller-Familie LPC1100 von NXP ausgerichtet. Sie basiert auf dem 32-bit-Core ARM Cortex-M0 und eignet sich als Plattform für eine breite Palette von Anwendungen im Bereich der weißen Ware. Die LPC1100-Familie kombiniert 32-bit-Leistung mit geringer Leistungsaufnahme auf einer außergewöhnlich kleinen Chipfläche. Die Familie ist das jüngste Mitglied der Mikrocontroller-Familie LPC1xxx von NXP Semiconductors, die sich an kostensensible Märkte wendet; dazu zählt auch das Marktsegment der weißen Ware.

Die LPC1100-Familie profitiert vom "Ecosystem", das um die Cortex-M3-MCUs LPC1300 und LPC1700 entstanden ist. Die Palette der LPC1100-Peripheriefunktionen reicht von UARTs über I2C, SPI und CAN bis zum USB, das Ecosystem um die Familie besteht aus Compilern und Debugging-Tools von mehreren Tool-Anbietern, verschiedenen Betriebssystem-Implementierungen und Software-Stacks. Dank der Aufwärtskompatibilität zwischen Bausteinen mit Cortex-M0- und M3-Core können Entwicklungen für beide genutzt werden.

Verarbeitungsleistung

In der Motorregelungs-Platine sind die grundlegenden Funktionen zusammengefasst, die die Drehzahl des Motors regeln. Dies kann die Verarbeitung verschiedener Datentypen und die Nutzung elementarer MCU-Funktionen einschließen. Die Verwendung eines schnellen 32-bit-Cortex-M0-Cores mit bis zu 50 MHz Taktfrequenz unter Wahrung der flexiblen Arbeitsweise und Programmierung der MCU (letzteres sollte im Falle des Cortex-M0 komplett in C erfolgen) stellt eine günstige Alternative zu 16-bit-Hybrid-Implementierungen (z.B. eine Kombination aus MCU und DSP) dar.

Eine Cortex-M0-MCU übertrifft die Rechenleistung von High-End-Bausteinen auf 8- oder 16-bit-Basis. Mit seiner Verarbeitungsleistung von 0,8 DMIPS/MHz ist der Cortex-M0 zwei- bis viermal leistungsfähiger als seine nächsten 8- und 16-bit-Konkurrenten. Zwar sind die DMIPS- und MIPS-Angaben nicht immer der beste Indikator dafür, welche Leistungsfähigkeit eine Anwender-Applikation erreicht, doch gibt Bild 1 einen Überblick über die relative Rechenleistung bei einigen gängigen Routinen.

Die meisten üblicherweise verwendeten Cortex-M0-Thumb2-Befehle sind Single-Cycle-Instruktionen, und sämtliche 8-, 16- und 32-bit-Datentransfers werden mit einem einzigen Befehl ausgeführt. Multiplikationen benötigen stets viele Taktzyklen, wenn Langwörter auf 8- oder 16-bit-Hardware verarbeitet werden. Da der Cortex-M0 jedoch auf einer 32-bit-Architektur basiert, kann die NXP-Implementierung im LPC1100 zwei 32-bit-Wörter in einem einzigen Zyklus multiplizieren. Dazu dient ein 32 x 32-bit-Hardware-Multiplizierer, der über den MULS-Befehl direkt an den Core angebunden ist.

Bei Divisions-Tests auf Softwarebasis brachte es der LPC1100 mit Operanden jeglicher Art auf wettbewerbsfähige Ergebnisse. Der Testcode wurde zuvor aus dem Flash-Speicher heraus verarbeitet und mit einer Mathematik-Bibliothek verknüpft. Das Verlagern einiger wichtiger Funktionen aus der Mathematik-Bibliothek in das RAM ergab eine Leistungs-Steigerung. Um die Verarbeitungszeiten zu verkürzen, sollte sich die Funktion, die diese Bibliotheksfunktionen aufruft, ebenfalls im RAM befinden, um zusätzliche lange Verzweigungen von der ROM-Page auf die RAM-Page zu vermeiden.