Papilio FPGA Shield for Arduino
Papilio FPGA Shield for Arduino
The Papilio FPGA Shield will allow Arduino users to tap into the amazing power of an FPGA using their existing Arduino skills!
The Papilio FPGA Shield will allow Arduino users to tap into the amazing power of an FPGA using their existing Arduino skills! Read more
About this project
The Papilio FPGA Shield (P/Shield) is the next, evolutionary step for the family of easy to use and Open Source Papilio FPGA boards. The P/Shield builds on the proven Papilio One design and packs in more I/O, speedy SRAM, and the ever popular Arduino footprint. When paired with an Arduino, the ease of the Arduino and the power of an FPGA form a potent combination that allows makers of all skill levels to create things only imagined before. When used without an Arduino, the P/Shield continues the strong Papilio tradition as a beginner friendly FPGA board with unlimited potential for expansion and growth. Finally, users of all skill levels will appreciate the Arduino inspired FPGA community at Papilio.cc. Experts and beginners alike can come together to discover answers to questions, to share tutorials, and to share their work on the Papilio Playground.
Benefits for Arduino Users
Arduino users get the best of both worlds, the ease and elegance of the Arduino and the power and flexibility of an FPGA to bring any idea to life.
The P/Shield provides the following benefits for Arduino users:
- Arduino sketches will have access to 64 I/O pins that can operate independently or be divided into 8-bit Wing slots. Wings are like mini shields, but they don't interfere with each other, its like being able to use 8 Shields at once without worrying about conflicts.
- Arduino sketches will be able to tap into rewritable FPGA fabric. The rewritable fabric of an FPGA allows each I/O pin to become virtually any kind of hardware. The FPGA can be loaded with 64 PWM pins, or 64 Delta-Sigma Audio DACs, or 16 SPI Masters, or even any combination of the above.
- Arduino sketches will have access to the extreme speed and parallel processing of an FPGA. The P/Shield's FPGA can run at speeds up to 250Mhz and the parallel nature enables extremely powerful hardware. The Arduino will be able to tap into and control things like a VGA controller, or a DVI/HDMI controller, or HD Video, or mixing multiple audio streams. These specific applications will require the FPGA and Arduino libraries to be created by experts and is outside the scope of this Kickstarter project, but the P/Shield is the hardware that will make it possible.
Benefits as a standalone FPGA Board
The P/Shield is the next generation Papilio board which enjoys all the benefits of the previous Papilio boards and some key new features :
- Easy and straight forward design makes it easy on beginners, there are no shared pins to contend with and no complicated configuration files just to get started.
- The P/Shield is great for learning FPGA's, the simple yet extensible design allows users to direct their learning in directions that interest them. Tutorials, screencasts, and videos at the Papilio.cc website help beginners learn key FPGA concepts.
- The P/Shield adds SRAM into the mix, SRAM is one of the most important new features. It will enable advanced projects such as uClinux, a Java Virtual Machine, extended color depth for VGA output, and more capable video game output.
- The P/Shield cuts down costs by eliminating the expensive FTDI chip. Users have the option to program the FPGA using an Arduino, a Programming Wing, or a Xilinx programming cable.
Benefits for FPGA Experts
Its all about exposure, writing Arduino libraries to accompany FPGA cores is a little more work but just imagine what will happen when that extra step is taken and these cores are placed in the hands of all the talented and creative Arduino enthusiasts of the world. People in hackerspaces and basements around the world will be using and talking about your work. The sheer amount of Arduino users alone means that core authors will get the pleasure of seeing magical things created with their "Papilio Community Cores".
What is an FPGA?
A non-technical explanation of FPGA technology that uses an analogy to rewritable CD technology.
So what will the Papilio FPGA Shield project deliver
This project is focused on a clearly defined task, creating the Arduino FPGA Shield hardware and providing a single example of a "Papilio Community Core". The deliverables of this Kickstarter project will be:
- An Arduino Shield with a Xilinx Spartan 3A or Spartan 6 FPGA
- Ability to program the FPGA from the Arduino
- Wishbone connection between the Arduino and FPGA
- A single "Papilio Community Core" example, which will preferably be a VGA controller.
As a bonus we will develop an optional Audio Visual Overshield that will fit over the Papilio FPGA Shield and will allow many exciting Open Source FPGA projects to run on the Papilio FPGA Shield. Projects like:
- Michael Poppitz's "Sump" logic analyzer puts a 32 channel 200Mhz logic analyzer at your fingertips.
- MikeJ's classic Arcade games like Pac-Man provide a great way to learn about classic hardware and hours of fun to play. www.FPGAArcade.com
- The AVR8 Soft Processor with support for the Arduino IDE allows multiple 8 bit soft processors to run in parallel inside the FPGA.
- Alvaro Lopes' ZPUino soft processor provides a fast 32-bit 100Mhz soft processor with Arduino IDE support.
The AV Overshield will provide the following features:
- 4096 color VGA port
- Two joystick ports for Atari, Commodore, and classic arcade joysticks.
- Two PS/2 connectors for keyboard and mouse.
- Stereo Audio Jack for high quality Delta-Sigma DAC output.
When I was developing the Open Bench Logic Sniffer with Ian Lesnet one of the things that people really enjoyed and appreciated was that it was developed in an open forum. I want to continue that tradition by maintaining a Video Diary of the progress of the design and an open forum where people are free to make comments and give their ideas and feedback. There is now a Forum dedicated to the development of the Papilio FPGA Shield. Please drop by and feel free to ask any questions, suggest features, or even get directly involved with design reviews, documentation, or code contributions. Everyone is welcome, this is an Open Source project that encourages participation at any level.
We hope to be starting from an existing Spartan 3A design, but if it is determined to be unsuitable we might start over with a Spartan 6 chip. We expect it to take anywhere from 2-6 months to complete the design and submit it for manufacturing depending on which chip is ultimately used.
What is the money for?
The money will be to fund prototypes and the first production run of boards. We intend to use a BGA chip and Multi-layer PCB which is very expensive in small quantities. If we can get enough backers we will be able to enjoy the economies of scale that will make this design feasible.
The Papilio FPGA Shield will allow Arduino users to tap into the amazing power of an FPGA without doing anything differently then they already do! How will this work? The Papilio FPGA Shield will plug into the Arduino just like any other shield, but once plugged in a Wishbone bridge will provide access to "Papilio Community Cores" running inside the FPGA. "Papilio Community Cores' will include Arduino libraries that will make it a breeze to use and interact with cores on the FPGA. The end result, Arduino users will add a library to their sketch and interact with it just like they always have, but behind the scenes their sketches will be driving fast, highly parallel hardware running inside an FPGA.
Quick question, what are "Papilio Community Cores"? In short, they provide Arduino compatibility for FPGA Cores. Cores are written in VHDL or Verilog and run inside an FPGA to provide functionality such as a VGA controller, encryption engine, or TFT LCD Controller. Since FPGA's are completely parallel in nature you can keep adding cores to an FPGA until it runs out of fabric and each core can run up to several hundred MHz independently of each other. There are an abundance of Open Source Wishbone compatible cores available at places like Opencores.org but they are only the first piece of the puzzle for Arduino compatibility. Arduino users expect to add a library and go, "Papilio Community Cores" take the additional steps to make this a reality. They will include an Arduino library that exposes the functionality of the core in an easy to use and understand format. They will provide any hardware needed to communicate with the outside world such as a VGA connector through the use of Papilio Wings. Finally, and most importantly, they will provide a bit file that has been certified and tested on the Papilio hardware and is easily loaded along with the library.
Why should people wanting to learn VHDL and Verilog like the Papilio FPGA Shield
The Papilio FPGA Shield will provide a clear and gentle path to ramp up your FPGA skills. Start with "Client Level Programming" by using the Arduino libraries. Once you've mastered that start writing your own libraries for existing cores. Finally, start writing your own cores and libraries, along the way there will be plenty of examples to learn from and you can learn at your own pace as you ease into FPGA development.
The existing Papilio community provides screencasts and video tutorials ranging from generating clocks to debugging internal FPGA logic to help you learn key FPGA skills. All of the existing learning material will be applicable to the Papilio FPGA Shield and will continue to be updated and extended. The best way to learn is through examples and the Papilio aims to provide lots of Open Source examples.
Why should Hardware Hackers like the Papilio FPGA Shield
Just like the Arduino is extensible, the Papilio FPGA Shield is designed from the ground up to be extensible. Right off the bat, the Papilio FPGA Shield aims to put 64 I/O pins under control of the Arduino. But it gets even better, those 64 I/O pins are grouped together into what are called Wing Slots. Each of those Wing Slots can have a completely independent and parallel PCB connected to it. Need to access a high speed ADC? Take a look at the Papilio Wing Playground and see if someone has already contributed a Wing for that, if not make it yourself and share it with the community. Want to add HDMI, a CMOS camera, a touchscreen LCD, or a LVDS LCD? An FPGA puts all of these PCB's within reach and Papilio Wings makes it easy to share those PCB's with everyone.
[Papilio Wings Example - With VGA, Joystick, Audio, and PS/2 Wings all connected at once]
We expect it to be possible to make PCC's that provide:
-DVI and HDMI video output. It might even be possible to output 720p Video Streams.
-TFT LCD controllers
-Ability to mix multiple audio streams
The possibilities are endless and only limited by the imagination of the community.
The goal is to add a Programming Wing header that exposes the JTAG pins. Adding a low cost Programming Wing will allow the board to be used without an Arduino and should also allow the FPGA to be programmed in less than a second.
While uClinux is outside of the scope of this initial Kickstarter project it should be possible to bring uClinux up on this board. I've always heard that 1MB of space is the minimum required for uClinux. We have 512KB of SRAM with the 4Mb chip and we can store the filesystem in the SPI Flash or on a uSD card. Worst case scenario is requiring an upgrade of the SRAM to 8Mb or 16Mb.
As far as what can be done when it is used as a shield, the Gameduino provides an excellent example of whats possible with Arduino/FPGA integration. The FPGA provides the VGA controller and supporting hardware that is fast enough to generate game elements such scrolling backgrounds, sprites, and sprite collisions. The Arduino then controls that hardware using sketches and libraries that make it easy for makers of all skill levels to make a game. The end result of the Arduino/FPGA integration is a solution that can accomplish something the Arduino would never be capable of while maintaining the ease of use that the Arduino is known for.
The Papilio FPGA shield embraces this idea but provides a more general purpose platform that will allow Arduino interfaces to be created for *any* type of hardware. VGA, TFT LCD’s, HDMI/DVI are just the examples that come to mind first.
The Papilio community is hard at work on some demos as we speak, Alvaro Lopes has created a VGA core and an Arduino library that makes it easy to create VGA interfaces. With it he has created a sketch that implements a Tetris clone. BenL has created an elegant solution to allow NTSC/PAL TV output using a handful of resistors.
We are also looking at making an Arduino library that will make it easy to transition from LiquidCrystal interfaces to VGA or NTSC/PAL interfaces. The idea is to create a virtual HD44780 inside a VGA or NTSC/PAL controller. All an Arduino user would have to do is use our library instead of the LiquidCrystal library and specify a couple extra things like a background image and the location for the virtual HD44780 display. The end result? Arduino users who have built a sketch using the LiquidCrystal library would be able to switch to VGA or NTSC/PAL by simply changing the library they use and adding a couple more lines of code!
Contrary to the lettering the Spartan 3A is an upgrade from the Spartan 3E device. The Spartan 3A chip makes more efficient use of resources and provides advanced features such as DNA security. But the single biggest factor is that the Spartan 3A allows multi-booting from an SPI Flash. This means we can have a bootloader bit file that will allow the FPGA to be programmed and can boot multiple bit files.
The Spartan 3A also directly supports TMDS output which means it should be very easy to develop a DVI or HDMI Wing. The Spartan 3E does not provide this capability.
Yes, the multi-boot feature of the Spartan 3A means that we can fit as many designs onto the board that will fit in SPI Flash. A Spartan 3E based design is going to require a computer every time a new game is to be loaded.
Support this project
- (45 days)