"La tarjeta PulseRain M10 de PulseRain Technology... es una placa de desarrollo FPGA de diseño abierto que integra un núcleo MCU funcionando a 96 MHz, tomando con ello un enfoque técnico distintivo."
"It’s now possible to embed a soft-core MCU into an FPGA rather than using a hard-core ASIC MCU and here is where PulseRain comes into play with an open source design down to the silicon level."
The PulseRain M10 is an FPGA dev board. But unlike standard dev boards, the M10 takes a distinctive technical approach by embedding an open source soft MCU core (96 MHz) in an Intel/Altera MAX10 FPGA, while offering an Arduino-compatible software interface and form factor. It also features onboard resources like a voice CODEC, microSD socket, SRAM, onchip ADC, TSD (Temperature Sensor Diode) and dual IO voltages. On top of that, the whole design is 100% open, including the PCB design, the System Verilog code for the FPGA, and the software.
In a bid to dazzle the audience, here is a quick demo of the M10 board used to make a home automation system controlled by DTMF (Dual Tone Multi-Frequency)
As the video shows, the M10 board offers the following major capabilities:
The past ten years have witnessed FPGA (Field Programmable Gate Array) technology making its way into embedded systems, thanks to the relentless breakthrough of semiconductor processes. Since an FPGA is programmable hardware by definition, the boundary between hardware and software has started to blur. With FPGAs in the picture, designers have more leeway to shift workloads between FPGA hardware and software, as both can be modified without a touch of the soldering iron.
And that’s where PulseRain M10 comes into play, a FPGA board that has a soft-core MCU and a rich set of peripherals, with 100% open hardware and software!
With the M10, the hardware is as programmable as the software. The software is no longer fettered by the once carved-in-stone hardware, and you are free to push the boundary between the two.
The M10 board has the following major components: (The packages of these components has been carefully chosen to avoid BGA or QFN packages.)
The M10 features an Arduino compatible software interface:
The M10 has chosen Arduino IDE for its GUI-based development environment. The Arduino IDE has support for third-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 URLs" and then install the board support package in "Tools/Boards/Boards Manager"
The M10’s Arduino support package uses SDCC as its open source compiler. With the supporting package mapping out all the details, developers can simply use Arduino language for coding. This new approach streamlines the development process and saves developers from the idiosyncrasies of the traditional approach.
Unlike Arduino, which uses software bootloader for device programming, the M10 has an OCD (onchip debugger) built into the MCU core. This approach not only saves precious onchip RAM, it also makes device programming more reliable and robust.
The biggest benefit of using an FPGA with a soft MCU core is flexibility. The hardware can be customized to a particular application. And the PulseRain FPGA peripheral library supports a wide variety of devices such as Serial SRAM, voice codec, MicroSD card etc. Like other Arduino boards, software libraries for those peripherals can be directly installed in the Arduino IDE.
Just like Arduino, the M10 can serve as a core module to work with other Arduino shields. However, the M10 is much more flexibile in this regard, thanks to the soft-core MCU in FPGA. Its rich set of peripherals also makes the M10 more versatile and less dependent on external shields.
The M10 comes in handy for makers, FPGA designers, and embedded system engineers. It is also a good fit for educators teach both microcontroller and digital design.
The M10 is an FPGA dev board to begin with. So it can do anything that regular FPGA boards can do. And the good part is that you don’t need a JTAG cable to download the FPGA image (bistream). The M10 comes with PulseRain High Speed Configuration Solution for MAX10, and the FPGA image (bitstream) can be programmed through the Micro USB port.
For educators who teach both FPGA (digital design) and microcontroller coding, the M10 can serve both purposes, as it is a soft-core microcontroller inside an FPGA. The 100% open software and hardware combined with the Arduino-compatible software interface makes the learning curve less deep.
For FPGA hackers and makers, the M10 board can be a good replacement for Arduino UNO, with the extra benefit of flexibility and ability to customize. The following are two good examples:
The M10 is good at voice applications. In particular, it works well for DTMF-based (Dual Tone Multi-Frequency) control, as the video at the beginning part of this page can attest. It can also be easily turned into a voice recorder, as it has all the necessary hardware.
The M10’s soft-core MCU runs at 96 MHz, which surpasses most standalone MCUs in its category. Its customizable hardware also makes it a lot easier to integrate with other shields, particularly the popular ESP8266 Wi-Fi Controller. The ESP8266 needs to be controlled by a UART. The Arduino UNO Rev3 has to use a software-emulated UART to work with ESP8266, at a limited baud rate of 9600 bps. But with M10’s high speed MCU and a second hardware UART (921600 bps), working with ESP8266 becomes more straightforward, with extra CPU cycles for more tasks. Want proof? The following is a demonstration of the M10 and ESP8266 working to make a Wi-Fi-controlled Lego monster truck.
Microcontroller: Soft-core FP51-1T, with support package for Arduino IDE
Onboard Peripherals and Components:
Form Factor and Input/Outputs:
|EmbeddedMicro Mojo||Alorium XLR8||PulseRain M10|
|FPGA||Spartan 6 XC6SLX9||MAX10 10M08SAU169C8G||MAX10 10M08SAE144C8G|
|Soft Core MCU||N/A||ATMega328 Clone||PulseRain FP51-1T (Enhanced 1T 8051)|
|Is the MCU Core Open Source?||N/A||No||Yes|
|MCU Clock Rate||Unknown||32 MHz||96 MHz|
|Board Package for Arduino IDE||N/A||Yes||Yes|
|Standalone Utility for Configuration||Yes||No||Yes|
|Additional SRAM||No||No||1 Mbit (128 KB)|
|onboard microphone / SpeakJack||No||No||Yes|
|microSD Support||No||No||Yes s|
|Arduino Compatible Form Factor||No||Yes||Yes|
|Dual IO Voltage (3.3 V / 5 V)||No||5 V In/3.3 V Out||Yes|
|Host Interface||Micro USB||Mini USB||Micro USB|
At this point, the M10 board has completed its pilot run successfully with our contract manufacturer and a small batch has thus been produced.
For high volume production, we expect the component sourcing, PCB fabrication, and assembly will all be carried out by the same contract manufacturer. But the final FPGA programming and ATP (Acceptance Test Procedure) will be done in our own facility. The ATP document can be found in https://github.com/PulseRain/M10_PCB/raw/master/docs/M10_ATP.pdf
The early bird units are expected to ship by 01/31/2018, with the rest of the units expected to ship by 03/28/2018.
Fulfillment of the M10 board will be handled by Crowd Supply, and will ship from their Portland, OR warehouse.
For those who back the M10 x 4 option, the free book will be shipped directly from the publisher.
More information on logistics can be found in the Crowd Supply Guide.
The international shipping fee is based on the quote we received from the couriers, with insurance included.
The M10 has a BOM of 47 lines. The biggest potential risk is component sourcing as volume increases. To reduce this risk, the BOM is being closely monitored through "findchips.com". Backup BOMs can be readily produced for some passive components if needed.
|PCB Schematic||PCB Design Files|
|Quick Start Guide||Hardware Manual|
|MCU datasheet||MCU Technical Reference Manual|
|Repository for FPGA||Arduino IDE package|
|M10 High Speed Configuration TRM|
|RTL Repository for M10 High Speed Configuration||Repository for M10 High Speed Config Utility|
|TRM for I2C||M10I2C Library|
|TRM for microSD||M10SD Library|
|TRM for voice CODEC||M10CODEC Library|
|TRM for DTMF||M10DTMF Library|
|TRM for SRAM||M10SRAM Library|
|TRM for PWM||M10PWM Library|
|TRM for UART||M10SerialAUX Library|
|TRM for ADC||M10ADC Library|
|TRM for JTAG UART||M10JTAG Library|
Users are more than welcome to post their questions and suggestions at http://forum.pulserain.com.
More information can also be found on http://m10.pulserain.com.