Parallax Propeller

The Spin programming language and Propeller Tool integrated development environment (IDE) were designed by Chip Gracey and Parallax's software engineer Jeff Martin.

This included the Verilog code, top-level hardware description language (HDL) files, Spin interpreter, PropellerIDE and SimpleIDE programming tools and compilers.

Each of the eight 32-bit cores (termed a cog) has a central processing unit (CPU) which has access to 512 32-bit long words (2 KB) of instructions and data.

[4] The Propeller can be clocked using either an internal, on-chip oscillator (providing a lower total part count, but sacrificing some accuracy and thermal stability) or an external crystal oscillator or ceramic resonator (providing higher maximum speed with greater accuracy at higher total cost).

Only the external oscillator may be run through an on-chip phase-locked loop (PLL) clock multiplier, which may be set at 1x, 2x, 4x, 8x, or 16x.

The effective clock rate ranges from 32 kHz up to 80 MHz (with the exact values available for dynamic control dependent on the configuration used, as described above).

When running at 80 MHz, the proprietary interpreted Spin programming language executes approximately 80,000 instruction-tokens per second on each core, giving 8 times 80,000 for 640,000 high-level instructions per second.

Each cog has access to some dedicated counter-timer hardware, and a special timing signal generator intended to simplify the design of video output stages, such as composite PAL or NTSC displays (including modulation for broadcast) and Video Graphics Array (VGA) monitors.

Parallax thus makes sample code available which can generate video signals (text and somewhat low-resolution graphics) using a minimum parts count consisting of the Propeller, a crystal oscillator, and a few resistors to form a crude digital-to-analog converter (DAC).

The frequency of the oscillator is important, as the correction ability of the video timing hardware is limited to the clock rate.

In addition to the Spin interpreter and a boot loader, the built-in ROM provides some data which may be useful for certain sound, video, or mathematics applications: The math extensions are intended to help compensate for the lack of a floating-point unit, and more primitive missing operations, such as multiplication and division (this is masked in Spin but is a limit for assembly language routines).

[6] This compiler converts the Spin code into bytecodes that can be loaded (with the same tool) into the main 32 KB RAM, and optionally into the I²C boot electrically erasable programmable read-only memory (EEPROM), of the Propeller chip.

After booting the propeller, a bytecode interpreter is copied from the built in ROM into the 2 KB RAM of the primary COG.

This IDE, which Parallax names The Propeller tool, is intended for use under a Microsoft Windows operating system.

It has been jokingly opined that "If two languages were to meet in a bar – Fortran and BASIC – nine months later one would find Spin."

A special control mechanism is used to avoid I/O conflicts if one core attempts to use an I/O pin as an output while another tries to use it as input.

For example, the HYDRA Game Development Kit, (a computer system designed for hobbyists, to learn to develop retro-style video games) uses the built-in character generator and video support logic to generate a virtual graphics processing unit-generator that outputs VGA color pictures, PAL/NTSC compatible color pictures or broadcast RF video+audio in software.

[10] The design philosophy of the Propeller is that a hard real-time multi-core architecture negates the need for dedicated interrupt hardware and support in assembly.

Extending this technique, a Propeller can be set up to respond to eight independent interrupt lines with essentially zero handling delay.

Simultaneously, it emulates a serial port, using two other I/O pins that can be used to upload software directly to RAM (and optionally to the external EEPROM).

[20] A large subset of Pascal is implemented by a compiler and interpreter based on the p-code machine P4 system.

[21] PICo programmable logic controller (PLC, PICoPLC) supports output to Propeller processor.

The program is created in a GUI ladder logic editor and resulting code is emitted as Spin source.

No restrictions on target hardware as the oscillator frequency and IO pins are freely configurable in the ladder editor.

Parallax Propeller in dual in-line package
Parallax Propeller in TQFP
Screen capture of the graphics demo that Parallax created to demonstrate the NTSC video library
Screen capture of the PICoPLC ladder editor