Jack Gassett continues his tale as to how he came to create the Papilio FPGA Development Platform...
Goals for the Papilio
My goal for the Papilio was to create a platform for my own inventions, to make a platform that other inventors could adopt for their inventions, and try to figure out how to make FPGAs "beginner friendly." In the case of my own inventions, I needed a board that was as affordable as possible so I could sell products at a reasonable price. I also needed a platform that could be easily extended with whatever peripherals were required by any new inventions.
In order to satisfy these requirements, I added the "Wing" concept to the Papilio One. This meant that while an invention was being prototyped, you could add functionality à la carte as required, by plugging Wings into the Wing slots. Once you have everything working and you are ready to bring an invention to the market, you create a MegaWing. This is equivalent to an Arduino shield that plugs into the Papilio and provides a package of peripherals that provide a complete solution. Typical examples are the Arcade MegaWing and the RetroCade Synth MegaWing.
Other inventors can standardize on the Papilio and make their own MegaWings. A big advantage of this approach is that they don't have to deal with trying to use an FPGA vendor's starter kit that may or may not go away. This is because the Papilio is open-source, so the design is always going to be available.
Another alternative is for people to derive their own products based on the Papilio design. For example, Ian Lesnet and I teamed up to make the Open Bench Logic Sniffer, which was derived from the Papilio One design. With the Logic Sniffer, we solved the problem that bedeviled the Sump project I mentioned in Part 1 of this tale. By offering a low-cost piece of open-source hardware, we managed to put the Sump code into the hands of tens of thousands of hackers, and that just makes me smile.
The end result is that, as opposed to being at the mercy of a starter kit that is overpriced to begin, that keeps changing prices, that was never intended to be made into a product in the first place, and that may be discontinued at any time, with the Papilio there is now an open-source board that will always be available.
While I continue to create new inventions with the Papilio Platform, I also keep working on new ways to make FPGAs accessible to beginners. There is still a lot of work that can be undertaken, but here is what I've done so far. My first task was to adopt an AVR-compatible soft processor from OpenCores.org and make it Arduino compatible. The reason for this was to provide a familiar and comfortable environment for beginners to ease into using an FPGA, not to mention that there is a huge base of Arduino code that suddenly works on the Papilio FPGA.
I then started recording videos and making tutorials about how to integrate your own VHDL code into the AVR8 soft processor, thereby allowing you to offload tasks from the soft processor into the FPGA's programmable fabric. (See Max's column on FPGA Processors vs. Hardware Accelerators.)
I've also made tutorials for tasks ranging from using high-speed (3Mbit/s) UARTs to debugging logic inside the FPGA. What I haven't done is to try and teach VHDL, because this is such a deep topic and there are already so many resources that it doesn't make sense to do so. (See also the Free FPGA VHDL
book written by Hamster). Instead, I think my time is better spent developing people's PGA understanding and skills and providing lots of open-source examples that run on the Papilio board.
The truth is that you have to acquire mid-level skills with VHDL before you can design anything meaningful, and there is no shortcut... it takes time to reach that level. But, just because it takes time to learn VHDL does not mean that there isn't a lot of FPGA-related stuff that beginners can still do! Anyone can synthesize an existing design and start hacking away on it. Anyone can fire up the AVR8 or ZPUino soft processor and get access to VGA output, delta-sigma DACs, multiple SPI masters, and other capabilities that are not available on any other microcontroller. And anyone can slap an Arcade MegaWing onto the Papilio, merge a game ROM into a bit file, and then load that bit file and start hacking on games like PacMan, Pong, Space Invaders, and so forth. Finally, anyone can turn their Papilio into a MIDI synthesizer that uses Arduino sketches to put classic audio chips like the Commodore SID under their control.
And as for the future...
Who knows what the future holds? With the help and feedback of the Papilio community, I'm currently working on a new concept that just might put FPGA design into the hands of anyone who can draw a schematic.
I've been working on a library of open-source building blocks such as the AVR8 and ZPUino soft processors, SD card controllers, SPI masters, LCD controllers, VGA controllers, and more that can be wired together using the Xilinx schematic entry tool. This is still in the very early "proof of concept" stage, but I think it very well might be the key to unlock FPGA design for anyone who wants to experiment with this incredible technology!
Best regards, Jack Gassett