Pinkompatible 8- und 32-bit-Mikrocontroller ermöglichen einfache Produktskalierung Einsturz der Bitgrenzen

Bei der Auswahl eines Mikrocontrollers müssen sich Entwickler häufig zwischen hoher Rechenleistung und günstigem Preis oder geringer Leistungsaufnahme und zusätzlicher Funktionalität entscheiden...

Pinkompatible 8- und 32-bit-Mikrocontroller ermöglichen einfache Produktskalierung

Bei der Auswahl eines Mikrocontrollers müssen sich Entwickler häufig zwischen hoher Rechenleistung und günstigem Preis oder geringer Leistungsaufnahme und zusätzlicher Funktionalität entscheiden. Verändern sich anschließend die Anforderungen, muss man entweder mit einer nicht optimalen Lösung leben oder zusätzlich Zeit und Geld investieren, um Soft- und Hardware auf einen anderen Prozessorkern zu portieren. Bei der MCU-Familie Flexis beschränkt sich der Umstieg von einer preisgünstigen auf eine leistungsstärkere Version darauf, die MCU in der bestehenden Hardware-Umgebung auszutauschen und den Code neu zu compilieren. In kurzer Zeit kann man so eine 8-bit- in eine 32-bit-Architektur verwandeln.

Die Flexis-QE128-Baureihe von Freescale ist eine Mikrocontrollerfamilie, die sowohl mit 8- als auch mit 32-bit-Cores ein breites Preis-/Leistungs-Spektrum abdeckt. Als 8-bit-Core wird der S08-Kern eingesetzt, eine Weiterentwicklung der HC05- und HC08-Kerne. Die Baureihe beinhaltet die von Silicon Storage Technology (SST) lizenzierte SuperFlash-Technologie. Der 32-bit-Core ist der ColdFire-V1-Kern, eine Neuentwicklung im Rahmen der Cold-Fire-Familie. Um einen einfachen Umstieg zwischen dem S08 und dem V1 zu ermöglichen, nutzen beide Cores identische Peripheriefunktionen und sind zudem pinkompatibel.

Die CPU-Cores S08 und V1 unterscheiden sich von Grund auf. Bild 1 zeigt das Programmiermodell für den S08-Core, Bild 2 das des ColdFire V1 mit überlagertem S08-Modell, um die Ähnlichkeiten und Unterschiede herauszustellen. Der V1-Core verfügt über deutlich mehr und größere Register.

Der S08 weist als preisgünstige MCU am unteren Ende der Leistungsskala nur einen sehr kleinen CPU-Registersatz auf. Er verfügt lediglich über einen 8-bit-Akkumulator, ein aus zwei 8-bit-Registern (H und X) bestehendes 16-bit-Indexregister, einen 16-bit-Programmzähler, der einen zusammenhängenden Adressraum von bis zu 64 Kbyte abdeckt, einen 16-bit-Stackpointer sowie ein 8 bit breites Condition-Code-Register, von dem allerdings nur 6 bit benötigt werden.

Im Gegensatz dazu beinhaltet der V1 einen viel umfangreicheren Registersatz. Im Vergleich mit dem einen 8-bit-Akkumulator des S08 hat der V1 acht jeweils 32 bit breite Datenregister, acht 32-bit-Adressregister (der S08 hat nur ein 16-bit-Indexregister), einen 16-bit-Stackpointer sowie einen 24-bit-Programmzähler, der einen Adressraum von 16 Mbyte abdecken kann. Das Condition-Code-Register ist mit nur 5 bit sogar um 1 bit kleiner als das des S08. Der Grund dafür ist, dass die Interruptmaskierung nicht in der V1-CPU, sondern im Interrupt-Controller vorgenommen wird.

Auch der Vergleich der Busarchitekturen zeigt große Unterschiede. Der Bus des S08 ist relativ einfach strukturiert, er verfügt über einen 8 bit breiten Datenbus sowie einen 16-bit-Adressbus, über den auf alle Speicherbereiche (RAM, Flash sowie System- und Peripherieregister) zugegriffen wird. Um den Adressraum über 64 Kbyte hinaus zu erweitern, wurde eine MMU (Memory Management Unit) integriert. Mit Hilfe dieser MMU erzeugt man ein 16 Kbyte großes Paging-Fenster zwischen den Adressen 0x8000 und 0xBFFF. Bild 3 zeigt den Adressraum des S08 QE128.