PulseRain M10: Play FPGA like Arduino
Over the past 10 years, FPGA device has grown into main stream. Instead of using a hardcore MCU, embedding a soft-core MCU into FPGA, with all the peripherals customized, is now within the reach of makers. And that's where PulseRain M10 comes into play, an open source design down to the silicon level!
The M10 board takes a distinctive technical approach by embedding an open source soft MCU core (96MHz) into an Intel MAX10 FPGA, while offering an Arduino compatible software interface and form factors. And it features onboard resources like voice CODEC, microSD socket, SRAM, onchip ADC and dual IO voltages.
And the following video is a quick demo of using the M10 board to make a home automation system with DTMF.
The video above demonstrates the following capabilities of the M10 board:
FPGA with a soft-core MCU running at 96MHz
DTMF decoder with voice CODEC and onboard microphone
Play audio file from the microSD card
Store audio samples in SRAM
Being able to work with Arduino Shield (In the video, the SparkFun Arduimoto shield is used to drive the DC motor)
Using on-chip ADC/TSD to obtain the temperature
As the video demo can attest, the M10 board is able to serve as a core module and easily morph into various cool things, as illustrated below. In fact, you can now completely replace your Arduino with M10!
Figure: The Application of M10 Board
And to dazzle the audience, here is another demo for a Wifi controlled Lego monster truck, with the M10 as the core module:
The architecture of M10 board is illustrated in the figure below. The FPGA we choose is Altera 10M08SAE144C8G that features 8K LE, 378Kb Block RAM, 172 KB flash memory, a 8-channel A/D converter with temperature sensing diode. Out of the box, we have pre-loaded this FPGA with our FP51-1T MCU that runs at 96MHz.
Figure: M10 Board Hardware Architecture
To compare notes against our initial expectations, the nitty-gritty of M10 hardware features are audited in the table below. The M10 board passed with flying colors!
People often say Hardware is the brawn while Software is the brain. Early we also promised that M10 board will be software friendly (aka smart :-). In this regard, we have come up with the following:
Figure: M10 BSP for Arduino IDE
We choose Arduino IDE to be our GUI based development environment. Starting V1.5, Arduino IDE has support for 3rd party hardware integration. All you have to do is to point the "Additional Boards Manager URLs" to our GitHub repository in "File/Preference/Additional Boards Manager URL". And then install the board support package in "Tools/Boards/Boards Manager"
We have included SDCC in our BSP since it is an open source compiler. And we have also offered our enhancement on top of it, along with our core library. With our BSP mapping out all the ugly details, the developers can simply use Arduino language to do the coding. This new approach has streamlined the developing process and saved developers from those idiosyncrasies that traditional approach will have to face.
Unlike Arduino that uses software bootloader for device programming, we have OCD (onchip debugger) built-in with the MCU core. This approach not only saves the precious onchip RAM, it also makes the device programming more reliable and robust.
The biggest benefit of using FPGA with soft MCU core is the flexibility. The hardware can be customized to particular application. And our FPGA peripheral library supports a wide variety of devices such as Serial SRAM, voice codec, MicroSD card etc. Like other Arduino boards, we also provide software library through GitHub with a use-friendly interface.
And the following is a tutorial on how to set up the M10 board for the first time.
For more information, please check the design resources at the bottom of this page.
Schematic and Layout
Quick Start Guide and Hardware Manual
Datasheet and TRM for FP51-1T MCU
TRM for M10 High Speed Configuration
TRM and Repository for Peripherals
The license agreement of PulseRain M10 Designs can be downloaded below: