Parallax Propeller 1 Goes Open Source

OpenPropellerProjectOpenSourceProp1Banner

Parallax has embraced open source hardware by releasing the source code to its Propeller 1 processor (P8X32A). Designed by [Chip Gracey] and released in 2006, the 32-bit octal core Propeller has built up a loyal fan base. Many of those fans have created development tools for the Propeller, from libraries to language ports. [Ken, Chip], and the entire Parallax team have decided to pay it forward by releasing the entire source to the Propeller.

The source code is in Verilog and released under GNU General Public License v3.0. Parallax has done much more than drop 8-year-old files out in the wild.  All the configuration files necessary to implement the design on an Altera Cyclone IV using either of two different target boards have also been included. The DE0-Nano is the low-cost option. The Altera DE2-115 dev board is more expensive, but it also can run the upcoming Propeller 2 design.

The release also includes sources for the mask ROM used for booting, running cogs, and the SPIN interpreter. [Chip] originally released this code in  2008. The files contain references to PNut, the Propeller’s original code name.

We’re excited to see Parallax taking this step, and can’t wait to see what sort of modifications the community comes up with. Not an Altera fan? No problem – just grab the source code, your favorite FPGA tools, and go for it! Starved for memory? Just add some more. 8 cogs not enough? Bump it up to 16.  The only limits are the your imagination and the resources of your target device.

Interested in hacking on a real Propeller? If you’re in Las Vegas, you’re in luck. A Propeller is included on each of the nearly 14,000 badges going to DEFCON 22 attendees. While you’re there, keep an eye out for Mike and The Hackaday Hat!

60 thoughts on “Parallax Propeller 1 Goes Open Source

  1. Woooow. Super exciting to see a silicon company step up and release RTL for a processor design. GPL3 is a good move to protect their investment and ensure only pay-it-forward projects make use of it. This should spur on some exciting and very creative expansion of the Propeller universe. Kudos to Parallax!

    1. not really. GPLv3 has some backdoors… you only have to give the source to your direct clients. and those clients can be limited to provide ample distribution to that source via other means.

      GPLv2 was tight.

  2. I’m trying to understand the business value of this release. Is this code that has zero value to a copycat in China? How do hobbyists (who apparently have been OK with not seeing the code) benefit from this release? Does open source translate to more sales?

    1. I think it is a trust and an ecosystem thing. The parallax design is on the fringes; while is has a loyal following with hobbyists, it really hasn’t ever hit the big time. Also, the prop1 is expensive for 2014 for what it does. Maybe the thinking is that companies which ship volume will use the prop for designs, and if the design volumes justify it, they can turn it into an ASIC, an option they didn’t have before. Knowing full well that 90% of all designs never make it to that kind of volume, perhaps they will sell more chips.

      It is also insurance for any company which would pick the prop. Should parallax fold or give up on the propeller family, this is an escape hatch for legacy designs. That escape hatch might lead a company to use the propeller in a design that they might have not before.

      1. I’m pretty certain its already manufactured as an ASIC, the release just includes FPGA configuration support because it makes sense and the average Joe doesn’t have access to actual manufacturing — most universities don’t. I was one of the demo coders for the Hydra Propeller-based educational game console and I actually have a pre-production Propeller chip that was validated (and, I’m told, possibly corrected — lasers FTW!) by Chip himself.

        I think they just see value in open-sourcing it as they prepare to launch the 2nd generation Propeller which is much more powerful.

        I’m glad to see it, its quite an interesting design. When it was launched, it had quite a lot of computational grunt for the money if your design mapped well. Moreso, compared to anything else you could get in a 40-pin DIP.

    2. Much of the info has been reversed engineered already and newer ARM processors and SBC’s (RPi anyone?) are taking over the market. So they get a bunch of publicity and generate interest in their brand. Also they look like good guys.

    3. Propeller isn’t like traditional microcontroller, so it is a bit of a business risk to have vendor lock-in. This also means that you now no longer have to worry about second sourcing this part even if it went EOL.

      By releasing the chip design, they would encourage people to try it out in a FPGA. More user base would be good marketing their next generation Propeller products. This is one way to survive in a market that is being taken over by ARM.

  3. That’s great news! Parallax and the Prop1 deserve our utmost respect.

    Parallax released the software source code for the on-board Spin bytecode executor years ago (after a challenge in the forums to reverse-engineer the “encrypted” onboard code), and the new SimpleIDE development tools have been open-source from the beginning, but the old Propeller tool and the hardware design were still closed-source until now.

  4. While I commend parallax for doing this, the only use for this code will be hobbyists tinkering on FPGAs.
    The choice of GPL means that legally the code can’t be used in any FPGA design of consequence or ASIC. Because it’s essentially impossible to put out a design without incorporating vendor/3rd party IP, the users will be:
    1. Academics
    2. Hobbyists
    3. Chinese cloners who don’t care about licenses

    If you want to write RTL and see it actually used by people, forgo the Stallman’s Army License and use something like MIT/BSD that allows compilation along with closed code.

    1. But someone who looks at this release and realizes that they could make it into something more useful for their own use, they could contact Parallax to get it licensed a different way, too.

      Maybe? I dunno, I’m spitballing here.

    2. Ahh more FUD about GPL.. yes you CAN use GPL code in a commercial product. Saying you cant is a flat out lie.

      Dont believe me? All Panasonic, NEC, LG, Samsung and Sharp TV sets run linux. yet they dont ship with the source code.

      1. software works differently than synthesizing HDL and cramming everything into one bitstream. That’s where the legality of GPL is in question. There’s no way to link at runtime or pull in gpl’d dependencies. It has to be the equivalent of statically linked.

        1. What the heck does “linking” mean for synthesized HDL? In normal software that would involve putting code *inside* the running GPLed software. Here the only interaction would be through its standardized I/O. If you stuck a (closed source) module *inside* the Propeller module, that would be the equivalent of “linking.” But not just implementing it.

          It could easily be partitioned into its own isolated portion and interfaced to the rest of the system with a “standard interface”. How does that not satisfy the GPL?

          1. That’s an interesting point. If I design a VHDL block that does not modify the Propeller code and interface that block with the Propeller HDL within a bit file, what the difference between that and putting my block in a seperate chip and interfacing via external GPIOs?

          2. In general I have no idea how you apply the GPLv3 to firmware. Most of the terms make no sense. Logically, the only thing that makes sense to me is to treat each HDL module as a separate program. In which case you don’t have to worry about GPL when including it in other firmware, unless you replace something *internal* with something non-GPL (and non System Library ish, e.g. a primitive for an FPGA resource).

      2. They’re all GPL violators. Just because copyright infringement is very widespread doesn’t render the license meaningless.

        1. As long as they’re contributing their modifications upstream or otherwise making their source code available to the public somehow, they’re not violating anything.

          There’s nothing in the terms of the GPL that prevents such software from merely being bundled with proprietary products, and there are no provisions that demand the source code be shipped with the compiled product.

      3. ” All Panasonic, NEC, LG, Samsung and Sharp TV sets run linux. yet they dont ship with the source code.”

        This is not entirely true. At least for LG, which is a case of RTFM, because LG provides a link to the source in the manual.

      4. Do get your facts straight before describing anything as “a flat out lie”.

        If Panasonic and co. are shipping me a product containing binary executables of GPLed code they need not ship the source with it. But they do need to provide it if I ask them for it. See section 3 of the GPL v2.

    3. Bullshit. Stop spreading FUD. You can use it commercially, you just have to share/make available any modifications you make, which is only a good thing and keeps things open they way they should be. Frankly more companies should be doing this, and it will help end the absurdness that is so called ‘IP’ which is holding back so many facets of society and civilization.

  5. I think the license is a problem. The altera compiler adds code to the bitfile that the person compiling does not have rights to opensource to (or give Alteras patents away). Therefore the bitfile itself will be undistributable. Thus it is only useful for hobbyists who are not planning to release or opensource anything.

    1. I’m probably ignorant here, so i’ll just ask. Why does it matter if you have access to the Verilog code? Can’t you use xilinx or some other alternative to generate the bitfile?

  6. Will it looks like they have done a lot of work over at the parallax site since I was there last.

    I still only have one question about the propeller chip an that is –

    WHY

    Why would you want this chip? What use is it? Sure it would be fun to play with but what problem is it a solution to?

    It’s like putting 8 micro-controllers on one circuit board, sure you now have 8 times the MIPS but why would you do that in the first place?

    It is just so so niche that I can’t even think of a purpose for it.

    1. Its popular with small pinball manufacturers who find it more convenient to have semi-independent cores controlling the solenoids/DMD/audio instead of a stack of microcontrollers or a CPU with a realtime OS. Having the pins be assignable per core also simplifies revisions.

    2. It’s not about the chip, it’s about the microcontroller CORE being available. Lucky me, I just happen do own a DE0-Nano :-) Regarding your question: Multicore is good for speed. The more cores, the faster you can calculate stuff. Of corse multicore controllers bring issues single core does not have, but let’s not dive into details. Major benefit I see: Education. If you’re interested in design of a controller this might be a nice reference. If you’re not interested, pass on. I do not blame you. (I mean it, really, there are more things to life than design files of microcontrollers.).

    3. Why not though

      Propeller can do more… you can make 8bit games, do 8bit retro computer stuff, its good for video and audio or just multitasking microcontroller stuff
      You’d need a shield to do most of that stuff with arduino

      It’s a halfway point…like the ipad mini

    4. “Why not?” is the answer to your question. Arbitrarily parallel tasks are simple to do on the Prop, and then you don’t need to worry about running I2C lines between your 8 separate MCU’s on one board. The Prop is still a bit of a niche product (lack of hardware peripherals is a big drawback), but computationally, it’s a very capable chip.

    5. There is big advantage to having multicore it is no need for interrupts. This is good as this avoid interrupt latency and jitter. But there is a better design than the propeller for that and it is xcore from http://www.xmos.com

      1. Jacques,
        I think you’ve also hit on the reason for this release, the xcore is a very good chip and Parallax has some real competition. Multicore is better than interrupt driven design for real time control. Making the propeller open source would allow hybrid systems to be implemented.

    6. Why use the Propeller? Because up to 8 tasks are trivial. Because once you’ve coded a nifty little driver with hardly a clock cycle free, short of stomping on the driver’s pins or shared memory, nothing the rest of your code does will break the driver. Because if you plan to keep a core(s) free, when the boss comes over and says “can you make it flip burgers too?” you can smile and say yes “I’ve got a free core for that”.

  7. From the story: “Parallax has embraced open source hardware by…”

    No. This is much bigger. This is huge. This has shown up in a concrete way what a sham Open Source Hardware is.

    Sure you have the schematics and layout files for that Arduino board. So what? You don’t have the design for the guts of the thing, the AVR MCU that makes it work.

    Now for the first time you really do actually have open source hardware. Everything in your project from the application code, to the schematic, to the PCB layout, to the very processor it runs on can be open.

    I believe this is the first time in history a vendor has open sourced the design of a processor hey have in current production.

    As for those who wonder why anyone would use a Propeller chip…As an extreme example can you think of a regular MCU that can control 20 odd PWM servos whilst running your application code as if it had the whole machine to itself? Having processor cores handle real-time events is a whole lot easier than using a single core machine and a bunch of prioritized, nested interrupts. It removes a whole mess of timing dependencies and complication.

    No a Propeller does not have the straight line speed of an STM32F4, but that is not what it’s about.

    1. >No. This is much bigger. This is huge.
      >This has shown up in a concrete way what a sham
      > Open Source Hardware is.

      I’m glad someone else noticed this. The open hardware thing as it stands is a bit of a joke if the hardware in question is any more complex than a bunch of passives.

    2. It’s one thing for a vendor to say “This is what works, so deal with it.”
      It’s another thing to say “This is what works. Want it some other way? Okay, do it.”

      Raises the bar for EVERY MCU manufacturer from Atmel, TI, Freescale, ST, to Microchip and beyond.

      1. Parallax mainly sells to hobbyists and isn’t even remotely considered in the same league as Atmel let alone the giants in the field. They don’t even have a presence at Design West.

        And if companies want to roll their own ASIC, companies like Altera can help them do it. What Parallax has done has altered that this at all.

        It’s mostly a SOP to it’s fanbois.

    3. > I believe this is the first time in history a vendor has open sourced
      > the design of a processor hey have in current production.
      Sun released the RTL source for OpenSPARC T1 and OpenSPARC T2 under GPL when they were still making them. This was before they were borged by Oracle though.

  8. I love the Propeller. It definitely has a place in the ol’ tool arsenal. No you can’t use it in every application (or even most), but once in a while it’s just the right tool for the job. This move, however, isn’t going to make much of a difference, if any, in my day-to-day work. I also question whether it’s a smart business move for Parallax (a little press, for a few days, that’s about it). GPL? Not sure about that either. So meh to this. But long live the Propeller!

    1. Matt says I’m a Propeller fan.

      Quite true.

      I also use ARM, and AVR and MIPS and XMOS.

      In times gone by I used 8085, Z80, x86, 68xxx and AMD29xxx and a bunch of embedded processors you have never heard of.

      They all have, or had, application areas where they shine and where they do not.

      The Propeller happens to shine in cases where you need multiple real-time interactions
      at speeds that don’t call for an FPGA or custom chip but are too fast for an interrupt
      driven single core MCU.

      The XMOS devices are the only competition in that area. I’m a fan of those
      as well, but they have complexity of their own that you might want avoid unless needed.

      All this “ba doom tish” nonsense does not really say anything useful.

  9. The Propeller is a fantastic 8 core 32bit processor. All it’s peripherals are soft.
    So, for example, you use a serial object for a UART. You load the code into one of the cores and it takes care of the whole UART interface – no need to understand the UART registers, it just works. Want 4 UARTS then load the 4-port serial object into a core. What pins do you want the UART(s) on? Just select them in software form the 32 available. No need to worry about whether they are available on that pin because you are using another hardware peripheral. Want 16 UARTS? No problems.
    Then there are I2C, SPI, 1-wire and many other peripherals. Want a special one, then write it yourself.
    Now you only need one chip to do all sorts of hardware peripherals. So you don’t need to rummage through all those masses of datasheets to see which processor variant to use.
    Did I mention that the peripheral objects are intelligent? Well they are. For instance, the PS2 Serial object can translate all the keyboard characters because the PS2 keyboard sends every keystroke, both being pressed, and again when released. Same goes for the UART. You just put characters into a buffer, and get the received ones out of a buffer.
    There is an object to control the SD card. It is a combined SPI object and the FAT16/32 driver.
    There is Video (VGA and Composite) built right into the hardware, and objects to drive this. For RGB VGA, use 8 pins and 8 resistors! For Composite Video (NTSC/PAL), use 3 pins and 3 resistors.
    And there is no need for interrupts, so you don’t have to worry about time critical code being interrupted. This makes your code simpler to write and easier to understand. You are just writing blocks of code. So your code blocks are much easier to reuse.

    Now, what about the FPGA code that has been released? There are a number of uses…
    * Safety net for commercial users
    * If you want to understand precisely how an instruction works, you can look for yourself
    * If your a hobbyist, then playing with this code and an FPGA board lets you understand just how processors work. You can add that special instruction you thought makes sense.
    * As an educational tool
    * If you are a commercial user, and you want your own specialised Chip, you can use this to create your own version. Once debugged, provided you have the volumes you might be able to get Parallax to manufacture the chip for you.
    * Perhaps your changes make sense to Parallax, and they may indeed add it into another version of a new chip
    * To my knowledge, no chip vendor has ever open sourced their proprietary information for their current design.

    WTG Parallax!!!

    1. There is 1589 lines of verilog. Perhaps all you are missing is that it takes surprisingly little HDL to create a capable 32 bit processor and an all round useful and flexible device.

      1. A CPU is simple, but I would have expected more code for the periphery and glue. But I am not familiar with the propeller, maybe it really is a very bare bones device.

        1. Indeed the Propeller is a “bare bones” device. If you can call having 8 independent processors “bare bones”.

          You won’t find any hardware dedicated to UARTS or SPI or PWM or USB as you do on many common or garden MCU’s and SoC’s.

          But that is the entire point. You can make those peripherals in software running on one of those cores. This makes the device amazingly flexible. You can put whatever interfaces you like in there. Mix and match as many as can fitted in (Which may well be more than one soft device per core, so that 8 is not a hard limit). With a single stock of Propellers in your lab you have a whole bunch of different possibilities. You can even change the mix of peripherals as your design and requirements change with out having to change your chosen device to some other PIC or AVR that has exactly what you need.

          There is a huge range of such “soft peripherals” already created in the Parallax OBEX library. You just drop that code into your design and you have it. Want to change interfaces, just get the code. Job done. Crazy enough to want to drive 32 PWM servos today? No problem.

          Having said that you will find counter/timer hardware and hardware video assistance. A Propeller can drive VGA and composite video. For example:
          http://www.youtube.com/watch?v=7GDA6pbgg68 with sound. Don’t let anyone tell you the Propeller is slow.

      1. That is true. And I suspect it always will be no matter if FPGAs get a bit cheaper with time.

        Still, it may be that if you have a design that requires a lot of external logic hardware or something you are designing for an FPGA anyway that needs a nice simple processor core the this P1 HDL may be just what you are looking for and will make the entire system cheaper.

    1. I think it’s fantastic.

      I also think you are an ignorant leech.

      You cannot “rip off” what is being offered for free anyway.

      From your comment I doubt you have the skill to make money out of it.

    1. I’m just started working on it. The actual build is already there because it is using the same FPG as Nano, but the tricky part will be to interface it. I bought the connector/prototype board for the SDK to be be able to interface my own card to it.
      It adds: 12-bit VGA, Simple Audio Sound, MIDI in, Atari Joystick, PS2-connector and SPI-connected SD-Card.

  10. The idealist in me thinks this is great.

    The realist in me thinks things like this aren’t done unless it’s mainly a PR move, resulting in no loss of income.

    Both sides agree this must mean the release of Propeller 2 is finally imminent, and that Parallax is betting on it being a killer chip. Is there a date and finalized spec sheet?

    1. You say that as if a bit of PR and not losing income is a bad thing. As opposed to some idealogical “great”.

      The realist in you should think that we do actually like to have groups of people work together to develop and build all the nice things we need and want. Generally today that means companies and the use of money.

      If Parallax raises awareness of their products by this move and hence hopefully makes more sales then they will be able to continue and develop more good stuff.

  11. I’m really loving the theme/design of your blog. Do yoou ever run into any webb browser compatibility problems?
    A number of my blog readers hawve complained about my site not
    worling correctly in Explorer but looks great in Firefox.
    Do you hae any advice to help fix this problem?

    1. You can fix that problem by letting your users know that they should be using the most recent IE version possible. That gets rid of most issues but leaves a few. Life is too short to be supporting old browser incompatibilities. Especially when your users can quickly and easily download FireFox or Chrome for free. If they are really interested in what you have to say that is what they will do. If not, do you care about them?

      There will be some remaining difference between browsers. It’s impossible to advise unless you can give specific details of what it is that is broken.

      This is way off topic, why ask it here? There are plenty of other places where these things are discussed.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s