WikiDer > Parallaxenpropeller

Parallax Propeller
Parallaxenpropeller

Das ParallaxePropeller, oder P8X32 wie sein offizieller Name ist, ist a Multiprozessor-Mikrocontroller mit acht 32-bitRISC-CPU-Kerne. Es wurde 2006 eingeführt und hat eine ganz besondere Architektur, die speziell für die Erzeugung von (einem oder mehreren) Videosignalen ausgelegt ist, aber auch für viele andere, zum Teil sehr schwierige Aufgaben sehr nützlich ist, oder gar nicht, wäre mit anderen Mikrocontrollern möglich.

Multicore-Architektur

Jeder der acht 32-BitKerne, die als COGs bezeichnet werden, haben eine elementare ALU (z. B. ist kein Divisionsbefehl vorhanden, aber ein Divisionsbefehl oder ein anderer mathematischer Befehl kann unter Verwendung der integrierten mathematischen Tabellen ausgeführt werden) und jede COG hat Zugriff auf 512 32-Bit-Speicherplätze, davon 496 als RAM-Speicher und 16 für den Zugriff auf die Register spezieller Hardware wie Zähler vorgesehen. Der RAM kann Befehle und Daten enthalten, aber jede Stelle kann auch als CPU-Register betrachtet werden. Selbstmodifizierender Code ist nicht nur möglich, sondern einiges Anweisungen in Maschinensprache sogar intern verwenden. Beispielsweise gibt es einen Befehl, der einen anderen Befehl modifiziert (den "RETURN"-Befehl) und dann zu einer beliebigen Adresse springt. Das macht a ANRUF/RÜCKKEHR-Unterprogrammmechanismus gemacht, dass funktioniert ohne a Stapel brauchen.

Zugriff auf einen (von den acht COGs gemeinsam genutzten) 32 KB RAM und 32 KB ROM Speicher (jeweils als 8K 32 Bit Wörter durchgeführt) wird von einem "Buscontroller"dass der name"die Nabe"trägt und wer ist auf einem"Round-Robin" (Rotationsplan) gibt jedem COG gleichmäßigen Zugriff. Jeder COG hat auch immer Zugriff auf alle 32 verfügbaren IO-Tore, zwei Hardwarezähler und zwei spezielle Videoregister, die das COG bei der Generierung eines PAL/NTSC-kompatiblen . unterstützen Composite-Videosignal.

Sehr hohe Ausführungsgeschwindigkeit

Die erste Version des Propellers (weitere sind in Entwicklung) läuft mit einer Taktfrequenz von 32 KHz bis 80 MHz. Bei einem 80-MHz-Takt kann die integrierte interpretierte SPIN-Programmiersprache ungefähr 80.000 8-Bit-Token pro Sekunde und COG interpretieren. Das sind 640.000 SPIN-Befehle pro Sekunde. Der Propeller kann jedoch auch Maschinensprachbefehle direkt ausführen, und da er ungefähr vier Taktperioden pro Befehl verwendet, kann der Propeller 20 MIPS pro COG oder insgesamt 160 MIPS für alle acht COGs ausführen.

Energieeffizienz

Der Propeller ist sehr sparsam, da er mit 3,3 Volt betrieben wird und nur 75 mA verbraucht, wenn alle COGs bei voller Geschwindigkeit voll im Einsatz sind. Wird ein COG jedoch nicht benötigt, wird es automatisch abgeschaltet und verbraucht praktisch keinen Strom. Dies und die Tatsache, dass die Taktfrequenz softwaregesteuert stark reduziert werden kann (ggf. auf 32 KHz), ermöglicht dem Propeller einen sehr sparsamen Energieeinsatz. Im sparsamsten Modus verbraucht er sogar nur wenige Mikroampere und kann viele Jahre mit wenigen Penlight-Batterien betrieben werden.

Eingebauter Quarzoszillator

Der Propeller kann mit einem eingebauten Taktgenerator oder mit einem Quarz getaktet werden. Wenn man einen Quarz verwenden möchte, kann dieser aus einem sehr weiten Frequenzbereich verwendet werden, ohne dass weitere Komponenten erforderlich sind. Wenn kein genaues Timing erforderlich ist, können Sie auch ohne Quarz arbeiten. Der Chip verwendet die intern erzeugte oder kristallerzeugte Frequenz, um ein softwaresteuerbares PLL-System anzusteuern, das die intern im Chip erforderlichen Frequenzen für die COGs und verschiedene Zähler erzeugt. Die intern erzeugte Frequenz kann höher als die Quarzfrequenz sein und einfach per Software ermittelt werden, um beispielsweise Energie zu sparen.

Eingebautes ROM

Das eingebaute ROM enthält eine Reihe nützlicher Einrichtungen, zum Beispiel eine Computerschrift, die zur Generierung von TC-Signalen verwendet werden kann, oder um lcd leiten. Darüber hinaus enthält es mehrere mathematische Tabellen zum Erzeugen von Sinus und zum "schnellen" Fourier-Transformation“, aber sie können auch verwendet werden, um die mangelnde Rechenleistung der CPU zu überwinden, indem sie beispielsweise bei der Division und Multiplikation helfen. Schließlich enthält das ROM Firmware zum Booten und Ausführen des „Bytecode-Interpreters“, der die spezielle Programmiersprache SPIN ausführt.

Eingebauter SPIN-Bytecode-Interpreter

Der Propeller hat einen eingebauten Byte-Code-Dolmetscher für die höhere Programmiersprache speziell für den Propeller namens 'SPIN'. Dies ist eine objektorientierte Programmiersprache, für die es eine (freie) Entwicklungsumgebung namens "Das Propellerwerkzeug", dieser läuft (vorerst nur) unter Windows XP (und Aussicht). SPIN läuft viel langsamer als die native Maschinensprache eines COG, ist jedoch nicht an das 2K-Speicherlimit eines COG gebunden und ist viel sparsamer mit dem Speicher, da jeder Befehl in nur einem Byte gespeichert wird und nicht in den vier, die für jeden Maschinensprachenbefehl erforderlich sind. Diese Lösung ist ein bisschen wie die des ARM9Prozessoren, die 8-Bit-„Daumen“-Code-Befehle für „Compact Slow Code“ und 32-Bit-Befehle für den Rest verwenden können, nur der Propeller macht dies mit Firmware, anstatt mit viel zusätzlicher Hardware.

Der Propeller kann eine Kopie des "SPIN-Code-Interpreters" in jeden seiner acht COGs laden, sodass acht SPIN-Programme gleichzeitig ausgeführt werden können. SPIN ist schnell genug, um Dinge in Software wie das Simulieren eines Fastens zu tun UART. Aus einem in SPIN geschriebenen Programm kann der Propeller jedoch auch Maschinensprachprogramme (in einem anderen COG) starten.

32 I/O-Ports

Die erste Version des Chips, offiziell als S8X32 bezeichnet, verfügt über einen 32-Bit-I/O-Port und ist in einem 40-Pin, 0,6 Zoll erhältlich TAUCHENChip oder ein 44-PinLQFP oder -QFNOberflächenmontage-TechnologieWohnraum zur Verfügung. Von den 40 verfügbaren Pins sind 32 für I/O-Pins verfügbar, vier für Strom und Masse und die restlichen vier für den Anschluss eines Quarzes sowie eines Reset- und Brownout-Enable-Pins.

Alle acht COGs können den 32-Bit-I/O-Port gleichzeitig ohne Einschränkung steuern, ein spezieller "Arbitrationsmechanismus" sorgt dafür, dass nichts Verrücktes passiert, wenn ein COG versucht, einen Pin als Eingang und ein anderer denselben Pin als Ausgang zu programmieren. Jedes COG verfügt außerdem über verschiedene Hardware-Zähler, mit denen es beispielsweise möglich ist, ein pulsweitenmoduliertes Signal (ohne die CPUs zu belasten) zu erzeugen, mit dem beispielsweise acht Audioausgänge erstellt werden können. Da diese Zähler auch Einrichtungen zum Modulieren der Phase des erzeugten Signals aufweisen, können die Zähler auch bei der Erzeugung des "Farbburst"-Signals helfen, das in den zusammengesetzten Videofarbsignalen gemäß den PAL- und NTSC-Standards verwendet wird.

Spätere Versionen des Propellers werden mehr COGs, mehr I/O-Pins, mehr Speicher haben und schneller sein.

Virtuelle E/A-Geräte

Die vom Propellerdesigner getroffenen Designentscheidungen (er wurde hauptsächlich von nur einer Person entwickelt) tragen erheblich dazu bei, dass der Propellerchip keine speziellen I/O-Schnittstellen aufweist, wie z ANZEIGE- und D/AKonverter, RS232, I²C und seriell SPISchnittstellen oder andere spezielle Schnittstellenhardware, da diese alle mit Software und den eingebauten Zählern simuliert werden können. es ist sogar ein komplettes möglich Videoanzeige-Controller in Software simulieren. Dies wird zum Beispiel in der verwendet Hydra-Spielkonsole, und ein Propeller-basiertes System, mit dem ein Bastler seine eigenen Videospiele entwickeln kann. Es ist sogar möglich, eine Funkfrequenz direkt zu übertragen (UKW-) um ein TV-Signal (einschließlich Audio) zu erzeugen, das direkt an den Antenneneingang eines Fernsehers angeschlossen werden kann. Aber man kann auch VGAMonitor angeschlossen werden.

Es stehen Softwarebibliotheken zur Verfügung, die viele verschiedene Lösungen zur Nachahmung von I/O-Geräten bieten, beispielsweise zur Steuerung der Motoren in Robotern, aber auch viele andere Schnittstellen, wie z USB, MIDI und MMC-Speicherkarten. Es gibt sogar Software zur Simulation eines kompletten a Synthesizer.

Unterbrechungsmechanismus

Ein Propeller nutzt nicht unterbrechen. Beim Anschluss des Propellers an einen sehr schnellen anderen Chip, zum Beispiel einen Ethernet-Chip, kann ein COG für diese Schnittstelle verwendet werden, die auch mit einem schnellen "UmfragenMechanismus funktioniert, der sonst einen Interrupt erfordern würde.

Startmechanismus

Wenn ein Propeller aufgrund eines Stromausfalls, einer Unterbrechung oder einer Software gestartet oder neu gestartet wird, lädt er die Bootcode-Firmware in eines der COGs und führt sie aus. Diese Software prüft kurz, ob Befehle von einem (software-simulierten) UART kommen, und wenn nicht, lädt sie SPIN-Code von einem externen EEPROM (über eine ebenfalls in Software generierte I2C-Schnittstelle) und lädt dann einen SPIN-Code-Interpreter in ein COG, und führt das in SPIN geschriebene Programm aus. Andere Programme können aus dem SPIN-Code auf anderen COGs gestartet werden, das können andere Kopien des SPIN-Interpreters sein, aber auch andere Maschinensprachenprogramme.

Externes EEPROM

Der Propeller kann nicht nur Anlaufen aus dem externen EEPROM, andere Programme können damit auch mehr Code in den 32K-Hauptspeicher laden, es können dann wesentlich größere Programme als 32K ausgeführt werden. Ein externes EEPROM von 1 MB ist möglich, es ist aber auch möglich über die I/O-Pins einen externen Speicher anzusteuern, zum Beispiel als Ganzes a wahlfreier Zugriff Zugänglicher 256K RAM kann mit nur zehn I/O-Pins angeschlossen werden.

Externe Links