Hackaday Prize Entry: An FPGA’d Propeller

The Parallax Propeller is an exceptionally interesting chip that doesn’t get the love it deserves. It’s a 32-bit microcontroller with eight independent cores that are each powerful enough to do some real computation.  Around this time last year, the source for the Propeller was opened up and released under GPL 3.0, along with the mask ROM and an interpreter for the Propeller-specific language, Spin. This release is not only a great educational opportunity, but a marvelous occasion to build some really cool hardware as [antti.lukats] is doing with the Soft Propeller.

[antti]’s Soft Propeller is based on the Xilinx ZYNQ-7000, a System on Chip that combines a dual core ARM Cortex A9 with an FPGA with enough logic gates to become a Propeller. The board also has 16MB of Flash used for configuration and everything fits on a Propeller-compatible DIP 40 pinout. If you’ve ever wanted to play around with FPGAs and high-power ARM devices, this is the project for you.

[antti] already has the Propeller Verilog running on his board, and with just a bit more than 50% of the LUTs used, it might even be possible to fit the upcoming Propeller 2 on this chip. This build is just one small part of a much larger and more ambitious project: [antti] is working on a similar device with HDMI, USB, a MicroSD, and 32MB of DDR2 RAM. This will also be stuffed into a DIP40 format, making it an incredibly powerful system that’s just a bit larger than a stick of gum.

The 2015 Hackaday Prize is sponsored by:

23 thoughts on “Hackaday Prize Entry: An FPGA’d Propeller

    1. Multicore on the propeller is a bit of a double whammy. Very very nice feature to have. However absolutely required. The only hardware peripherals are the I/O ports and 2 internal counters per “cog”. There is no uart, spi or i2c, no interrupts, no PWM output from the counters or anything like that. You quite quickly find yourself requiring more threads just to solve simple tasks.

      1. Im a bit into the theory behind multicore. I am interested how shared resources are handled, how cores can be safely synchronized and stuff like that.

        The Peripherals should be quite easy to implement. Are there no free IPs available?

  1. When it comes to Zynq series, I’d like to see a dedicated app that lets you program – the Zynq.
    Cutting the umbilical cord back to the IDE on a master PC.

    That’s more a software request than a hardware one, however.

  2. I made the mistake of buying a DE1 as my first FPGA board,
    took me months to be using it and years later half the board has still never been used.
    This was before there was a decent selection of small FPGA boards available.

    My only real option was a Pluto which is not particularly in the same league as my DE1 (I got he DE1 with a school discount)
    Don’t even think I ever insytalled the software for mt Xilinx board because I don’t want nealy 25Gb of software I’d hardly use filling up space in my laptop HDD

    1. The original DE1 was my first FPGA development board, too. I had been doing FPGA development at work for a couple of years before I purchased it, though. Like you said, there were not a lot of (inexpensive) options at the time, but it is still a great board for hobby use… plenty of usable GPIO on 0.1″ pitch headers at a reasonable voltage. There’s plenty of logic to be useful. Dropping in a Nios II can expand the usefulness of the board quite a bit, too. It really is a great board for learning and experimenting. There are better (er, different?) options available now. Some of the Cyclone V SoC development boards look nice. I had an Arrow SoCKIT on my desk for a while, but time did not allow for much more than installing the toolchain and building the default Linux (Yocto) build.

      Just an FYI, Altera dropped Cyclone II (DE1) support starting in Quartus 13.1, I believe.

    2. Strange that you call that a mistake. There are plenty of opensource projects specifically for DE1, I myself made two old computers on it. It’s exceptionally easy to use and the connectors are easy to hook up to. It’s old now, indeed, but it was designed 10 years ago and is still usable. And at the time there were not many alternatives.

      1. The mistake was simply buying an expensive piece of gear when a smaller simpler board would have suited me fine.
        I haven’t used it to it’s full potentional, the most I got out of it was simple VGA graphics and making use of the Nios II soft core.
        And yes it’s not longer supported in the latest web editions of Quartus.While some of my FPGAs are not supported in the older ones, so I need to run two copies of the behemoth!

  3. I don’t understand the market for this product. The Zync7000 is $77@qty1 and to run a soft core processor that is already generations behind? That’s like running a Commodore 64 emulator on your Raspberry Pi so you can toggle GPIO…

    However as an embedded bit of kit in the style of Digilent’s Electronics Explorer Board you could have an entire learning kit briefcase style to equip schools with. I would buy that.

    1. Have to agree. I don’t see a market for it at all. And it’s rather odd that he’s running a old soft core processor that very few use or even heard on it for bit banging.

      And there is nothing on how it talks to the ARM core at all. This is bad.

      Yeah it’s going to be expensive as well. I don’t see it selling for less than $150.00 – 200.00 considering the price of Zynq chips and that it’s a six layer board. That is not cheap.

      And it already has a competitor in the form of Digilent’s CMOD S6

    2. If you want to experiment with the Propeller just buy the actual Propeller IC. It’s only $8 in single piece quantity. They have a C compiler for it, or you can use their “SPIN” language, which is pretty easy to learn.
      Or, run 8 Chinese Pro Mini’s for $16 in parallel, and figure out how to get them all to talk to each other and share data.

      1. That’s an interesting idea. Set up 8 IO lines on each as a data bus, plus some kind of chip select bus. They all would have IO lines available for other uses. Maybe have one master device to coordinate everything. They are less than $2 (with shipping) each out of China these days, so it would be a neat experiment.

        1. Of course the ATMega328 is only an 8 bit device, compared to the 32 bit propeller, but I have played with the propeller quite a bit, and some operations are actually faster on the ATMega328. For one thing you don’t have to wait for the “hub” to get clocked around to the “cog” you want to transfer data to / from like you do on the propeller.

          1. @uminded – Yes, it would be a crazy bunch of code to run all those in parallel. But how would you code multi-threaded applications on the STM32F4?

  4. I was really excited when the propeller came out — until I got to use one, anyway.

    They have no integrated rom, so you have to program a dedicated rom chip via SPI (and that makes the “boot” up kind of slow), and you have to program them in either SPIN (which is worse than BASIC, IMO — it’s a real fucking nightmare), or assembly.

    Not to mention a single threaded ARM Microcontroller/SoC (which has embedded ROM, etc.) can out perform the thing (even in threading, with the right libraries…)

    If there would have been a good C++, C#, or even Java compiler for them, it would have been a good step in the right direction… IMO.

  5. Also, I’m pretty sure the propeller 2 is vaporware (they’ve been talking about it since before they released the propeller 1, and citing all kinds of ridiculous features, that keep changing as they come back to reality, like an ADC and DAC on every single pin, and all kinds of crazy stuff).

    1. At the risk of sounding apologetic, Propeller 1 has been out for nearly a decade. It’s only been the last year or so where the FPGA version of it was released. So at least, please, do yourself the service of speaking in an intelligent manner, like you know what you’re saying, so people do not have to come and clarify your statements.

      If ARM manufacturers can multiplex GPIO, ADC, DAC, EMIF, LCD drive and whatever else they want on some pin… whatever pins they choose to gate as they want… why can’t Parallax? I mean, you only get to use one pin for one function at any one moment, and changing functions may require some other external circuitry, right?

      So why the hate?

Leave a Reply to Dave Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.