Parallax Propeller

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Parallax Propeller

Der Parallax Propeller ist ein im Jahr 2006 eingeführter Mikrocontroller mit acht unabhängig arbeitenden 32-Bit-RISC-CPU-Kernen.

Programmiert wird der Propeller in der eigens für ihn entwickelten Hochsprache SPIN und in Assembler. Die Hochsprache Spin wird jedoch nicht in Maschinencode übersetzt, sondern in einen Zwischencode (Byte-Code) transformiert, der von einem Byte-Code-Interpreter im Prozessor abgearbeitet wird. Parallax stellt als integrierte Entwicklungsumgebung das „Propeller Tool“ kostenlos zur Verfügung.

Sowohl der Prozessor als auch die Programmiersprache SPIN (inklusive Compiler und Byte-Code-Interpreter) wurden von Chip Gracey, dem Mitbegründer und heutigen Vorsitzenden von Parallax, entwickelt.

Mittlerweile kann auch in C programmiert werden; verschiedene Compiler existieren als freie Software und als kommerzielles Produkt.

Mehrkern-Architektur[Bearbeiten]

Jeder der acht 32-Bit-Kerne, den man auch als Cog bezeichnet, besitzt eine elementare ALU, die Division nicht direkt unterstützt, sowie ein RAM für 512 32-Bit-breite long words (zusammen also 2 KiB) in dem sowohl ausführbarer Code als auch Daten abgelegt werden können. Selbstmodifizierender Code ist daher möglich und diese Möglichkeit wird auch genutzt. (Beispielsweise durch eine Anweisung, die verwendet wird, um einen Rücksprungmechanismus nach einem Aufruf eines Unterprogramms zu schaffen, der ohne einen Stack auskommt.)

Des Weiteren hat jeder CPU-Kern exklusiven Zugriff auf sämtliche I/O-Pins (insgesamt 32), auf zwei unabhängig konfigurierbare Zähler (verwendbar als Zähler, Zeitgeber oder numerisch gesteuerter Oszillator; auch als Analog-Digitalwandler nach dem Sigma-Delta-Verfahren und umgekehrt als Digital-Analog-Wandler mittels Pulsbreitenmodulation zu gebrauchen) und auf einen Videogenerator (erzeugt RGB-Signale zur direkten Ansteuerung eines Computer-Displays oder Composite-Signale für einen Fernseher gemäß der NTSC- oder PAL-Norm).

Gemeinsam genutzte Ressource ist ein Speicher von 64 KiB, dessen untere Hälfte als RAM und dessen obere Hälfte als ROM ausgelegt ist. Um sicherzustellen, dass höchstens ein Cog gleichzeitig auf diesen Speicher zugreift, findet das sogenannte Round-Robin-Verfahren Anwendung, bei dem jeder Cog während eines kleinen Zeitfensters exklusiv auf den gemeinsamen Speicher zugreifen kann, bevor der nächste Cog an der Reihe ist. Dies ist nichts anderes als ein Multiplexer, der in diesem Zusammenhang von Parallax auch als Hub bezeichnet wird.

Geschwindigkeit und Energiemanagement[Bearbeiten]

Der Propeller kann auf zwei Weisen mit einem Systemtakt versorgt werden: entweder durch einen internen On-chip-Oszillator (wodurch eine geringere Gesamtzahl an Bauteilen nötig ist, aber etwas Genauigkeit und thermische Stabilität verloren geht) oder einen externen Schwingquarz bzw. Keramikresonator (woraus bei höheren Gesamtkosten größere Geschwindigkeit und erhöhte Genauigkeit resultieren). Jede dieser Taktquellen kann durch einen auf dem Chip integrierten PLL-Taktvervielfacher geleitet werden, welcher auf eine Vervielfachung von 1×, 2×, 4×, 8×, oder 16× eingestellt werden kann.

Sowohl die eingebaute Oszillatorfrequenz (sofern verwendet) als auch der PLL-Multiplikatorwert können zur Laufzeit verändert werden. Korrekt eingesetzt kann dies die Energieeffizienz erhöhen. Beispielsweise kann der PLL-Multiplikator verringert werden, bevor eine aus Timing-Gründen benötigte längere Wartezeit ohne Instruktionsausführung eingelegt wird. Im Anschluss kann der Multiplikator wieder erhöht werden. Der Prozessor nimmt somit weniger Energie auf. Die Anwendung dieser Technik ist jedoch auf Situationen beschränkt, in denen kein anderer Cog Timing-abhängigen Code ausführt (sofern dieser Code nicht sorgfältig dafür entworfen wurde, mit solchen Veränderungen zurechtzukommen). Der Grund hierfür liegt in der effektiven Taktrate, welche alle Cogs gemeinsam haben.

ROM-Erweiterungen[Bearbeiten]

Im eingebauten ROM sind außer dem Spin-Interpreter und Boot-Loader noch einige Daten hinterlegt, die besonders für mathematische Berechnungen sowie für Audio- und Videoanwendungen hilfreich sein können:

  • ein Bitmap-Font-Satz benutzbar für die Schrift auf dem Bildschirm,
  • eine logarithmische Tabelle (Basis 2, 2048 Einträge),
  • eine antilogarithmische Tabelle (Basis 2, 2048 Einträge) für Umrechnungen,
  • eine Sinus-Tabelle (16 Bit, 2049 Einträge).

Bauformen[Bearbeiten]

Der Parallax Propeller ist verfügbar in den Bauformen 40-Pin-DIP, 44-Pin-LQFP, oder als besonders platzsparender QFN. Besonders die DIP-Bauform ist wegen der einfachen Handhabung bei Hobbyanwendern beliebt.

Externer EEPROM[Bearbeiten]

Der Propeller kann beim Aufstarten sein Programm aus einem externen seriellen EEPROM laden, nach Abschluss des Bootvorganges kann dieser Speicher für andere Aufgaben (etwa Speicherung von Messwerten) verwendet werden.

Open Source[Bearbeiten]

Der Propeller ist von seiner Hardware her als Verilog-Source unter der GPL veröffentlicht worden. [1] Auch der ROM Code wurde als kommentierter Quelltext veröffentlicht. [2] Somit kann der gesamte Prozessor nachvollziehbar auf einem FPGA nachgebildet werden.

Literatur[Bearbeiten]

  •  Shane Avery, Chip Gracey, Vern Graner: Programming and customizing the multicore propeller microcontroller – the official guide. Mcgraw-Hill, New York 2010, ISBN 978-0-07-166450-9.

Weblinks[Bearbeiten]

Herstellerseiten:

Downloadseiten:

Weiterführende Links:

Einzelnachweise[Bearbeiten]

  1. [1]
  2. [2]