close-circle
Close
0%
0%

Play FPGA like Arduino

You can make a Lego Monster Truck out of it!

Similar projects worth following
close
Over the past 10 years, FPGA (Field Programmable Gate Array) device has grown into main stream, with its capacity surging and the unit cost dropping. 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. Introducing M10 board into the maker market will bring flexibility and expandability that current solutions (Raspberry Pi and Arduino) cannot offer.

The M10 board can serve as a core module and easily morph into various cool things. For starters, you can build a Lego Monster Truck out of it! (See below for more detail :-) In fact, you can now completely replace your Arduino with M10!

INTRODUCTION

Before you start, read this post and watch the video/pictures below to see how to make a Stick Shift Monster Truck with PulseRain M10 and other shields.

================================================

The PulseRain M10 Board is a versatile and expandable platform that can fit in a wide variety of scenarios, as illustrated below:

It is a FPGA platform that puts soft-core MCU into the FPGA, while presents a software interface and form factors like Arduino. It is an open source answer to the dominant proprietary solutions in the embedded systems, and it also offers the flexibility that standalone MCUs can not match. The great features it bears are as following:
  • Open Source Hardware

The schematic and layout are designed with Eagle CAD. The PCB design files can be found on GitHub, and they are licensed under "Creative Commons Attribution Share-Like 3.0".

The processor core and peripheral libraries (in System Verilog) are licensed under GPLv3. And for those who want to use them in ways that are incompatible with the GPLv3, we also offer commercial license instead.

All the firmware(sample code, libraries in C/C++) are licensed under LGPLv3 (GNU Lesser General Public License).

All the desktop software (Python script and utilities) are licensed under Apache License Version 2.0.

And the fine print of the license agreement can be found here, which is the official document that carries legal weight.

  • Versatile

This platform has the bells and whistles for common embedded applications, such as:

    • 8 channel onchip ADC in FPGA with temperature sensing diode
    • Onboard MicroSD socket. SD card controller as a peripheral in FPGA. MCU driver supports FAT32 file system.
    • 128KB onboard RAM (Microchip 23LC1024). 40KB onchip RAM for code/data in FPGA.
    • Silicon Lab Si3000 Voice Codec.
    • Switchcraft 3.5mm Phone Jack for Speaker. Onboard Microphone from CUI
    • FTDI FT232R for USB/UART
    • 3.3V / 5V IO support with Texas Instrument TXS0108E Voltage Translator.
    • PIHER 10mm Carbon Potentiometer
    • 2 Push Buttons, 3 LEDS (Blue, Red and Green)
    • DIODES, Inc. AP3429/A 1.0MHz, 2A DC-DC Buck Converter
    • 14 bit of Digital IO on Arduino Connector, 10 Position JTAG Connector that can be used for GPIO as well.
    • I2C / SPI / PWM Peripherals in FPGA
  • Expandable

M10 board's form factors are compatible with Arduino Shields in connector and mounting hole positions. The onboard FPGA (Altera 10M08SAE144C8G) can be migrated to a device as big as 25K LE, 675Kb BRAM, or as small as 4K LE, 189 Kb BRAM.

And all the peripherals are connected to the processor core through the open source Wishbone FASM bus interface, which gives users the greatest choice possible to add new peripherals. In this way, the hardware can be tailored to users' specific application.

  • Software Friendly

Arduino IDE can be used as 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 URL" to our GitHub repository in "File/Preference/Additional Boards URL". And then install the board support package in "Tools/Boards/Boards Manager".

  • DFM (Design for Manufacturing)
    • Regular shape (2.1 inch x 3.2 inch rectangular shape)
    • Pass DRC: Minimum Trace Width: 8 mil, Minimum Trace Clearance: 8 mil, Trace to Board Edge Clearance: 8 mil, Minimum Via Drill Diameter: 10 mil, 62 mil board thickness.
    • No Leadless Package (The FPGA is in TQFP 144 package).
    • ENIG (Electroless Nickel Immersion Gold) Finish for PCB fabrication.

HARDWARE ARCHITECTURE

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. And other open source processor cores (such as RISC-V...

Read more »

M10_quick_start.pdf

Quick Start Guide for PulseRain M10

Adobe Portable Document Format - 2.73 MB - 07/24/2017 at 06:28

eye
Preview
download-circle
Download

M10_schematic.pdf

Schematic for PulseRain M10

Adobe Portable Document Format - 181.34 kB - 07/23/2017 at 08:29

eye
Preview
download-circle
Download

datasheet_FP8051_1T.pdf

Datasheet for FP51 (FPGA based 1T 8051 core)

Adobe Portable Document Format - 1.17 MB - 07/22/2017 at 06:53

eye
Preview
download-circle
Download

M10_License.pdf

PulseRain M10 Designs - License Agreement

Adobe Portable Document Format - 1.32 MB - 07/23/2017 at 08:36

eye
Preview
download-circle
Download

PulseRain_M10_BOM.xlsx

Bill of Material in Microsoft Excel 2016 format.

sheet - 23.74 kB - 03/24/2017 at 04:43

download-circle
Download

  • 2 × CRCW06030000Z0EAHP Resistors (Fixed) / Zero Ohm Jumpers
  • 5 × VJ0603Y104JXJPW1BC Capacitors / Ceramic, 0.1 u
  • 6 × CRCW0603100RFKEA Resistors (Fixed) / Thick Film Surface Mount, 100 ohm
  • 6 × VJ0603Y102JXJPW1BC Capacitors / Ceramic, 1000p
  • 6 × CRCW0603100KFKEA Resistors (Fixed) / Thick Film Surface Mount, 100 K

View all 52 components

  • New Files Uploaded

    Changyi Gu07/24/2017 at 06:35 0 comments

    To meet the entry requirement for Hackaday Prize 2017, the following new files have been uploaded:

    *) Quick Start Guide for PulseRain M10

    *) Schematic for PulseRain M10

    *) Datasheet for FP8051 1T core

  • Hack a Dual Axis Gear Motor for Lego

    Changyi Gu07/13/2017 at 07:54 0 comments

    This is a follow up post to Stick Shift Lego Monster Truck

    =========================

    Last Month Hackaday had a post for "Converting a Robotic Motor For Lego Blocks",

    and I happen to be building a Lego Monster Truck and I need a good way to power steering my vehicle. So I followed the instructions in the above post. But it turns out it requires more hand craft skill than I thought, and I don't have the 4.8 mm drill bit either, thanks to the imperial systems (The closest one I have is 3/16 inch, but I couldn't make it to work).

    Fortunately, since I only control the gear box on one side, I found another way to hack:


    1) Get a DC 3V-6V Dual Axis Gear Motor. The motor can be obtain from banggood.com, or AliExpress for less than $1

    2) Use a 5/64 inch drill bit to drill a hole on one end of a Lego axle, as illustrated below. For the Lego axle, find the end that has a small dip, which is easy to position your drill bit.

    3) The DC motor has two axle heads, with one on each side. One of the axle head is tied to a gear inside the yellow gearbox, so there is not much you can do unless you open the yellow gear box. But the other axle head can be pulled out without opening the yellow gear box. And that one is attached to a metal axle with a seesaw head. Plug the reworked Lego axle from (2) into the metal axle, and you get yourself something that can be used to drive the Lego gear box


    4) Use PWM to control the motor, which will drive the Lego gear box (shown below before motor is mounted). Now my Lego monster truck can make turns left and right!

    ===========================
    PS: ways to mount the dollar motor

    There are many ways to mount the motor onto the Lego bricks. I simply use cable ties to attach the motor firmly to the Lego gearbox.
    But you can also stick a 2 x 4 plates (with holes in the middle) to the motor.


    Or you can use a Lego compatible DC motor support from the following

    (The motor in the following is NOT the same as the one I hacked)
    https://www.amazon.com/gp/product/B072HRR8W4/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1


  • Stick Shift Lego Monster Truck

    Changyi Gu07/10/2017 at 07:15 2 comments

    My daughter was pouting her lips last week because she found out her Lego bricks were stolen by her daddy. Fortunately, I'm now able to make it up by giving her something better.

    The Lego Monster Truck you see in the following video is a demonstration of PulseRain M10's capability. It uses one PulseRain M10 board, one PWM shield and one ESP8266 shield. Both shields are from Sparkfun.

    This monster trunk has two DC motors. One is for driving while the other is for steering. Most Wifi Robot cars on the market are using 4 wheel drive or 2+ 1 (Two wheels plus one caster). With 4 wheels or 2+1, the designers can avoid dealing with the steering mechanism. And to make turns, those cars will spin the wheels on each side in opposite direction. However, the drawback of such design is that each driving wheel was pushed by a separate DC motor. And no two DC motors are the same, especially for cheap ones used by toy. This makes it hard for those cars to go straight lines.

    Of course, those can be fixed by:

    (1) Manual calibration, where a potentiometer (or something with similar nature) can be used to keep the two DC motors spin the same way

    (2) Use better motors and better control mechanism. Instead of using open loop, a close loop control can be adopted. However, close loop requires a sensor (such as speed, position etc) for feedback. Those will just make things a lot complicated or more expensive.

    The Lego Monster Truck shown below takes a different approach. It uses Lego gears and beams for steering. To make it happen, I made a hack to one of the DC motor and the Lego axle (more to follow on this part) so that the motor can work with a Lego gear box.

    For driving force, another DC motor was used to drive two wheels with one axle. In this way, no need to worry about any mismatch of motors.

    And to control the truck, I chose a retro style joystick that is compatible with Atari 2600 . Yes, this is a stick shift vehicle :-)  For hardware building instructions, please go to http://limerick.pulserain.com/2017/07/how-to-build-lego-monster-truck.html . For firmware and host software, please go to https://github.com/PulseRain/Lego_Monster_Truck .


    Now, without further ado, Let me give you the Lego Monster Truck:

  • Attach Wifi Shield

    Changyi Gu06/13/2017 at 06:29 0 comments

    Got ESP8266 Wifi Shield from Sparkfun. Initially I thought I need to replace the DC Power Jack with a low profile one. But now it seems that is unnecessary :-)

  • A Few New Releases on GitHub

    Changyi Gu05/01/2017 at 01:09 0 comments

    RTL lib 1.1 is released on GitHub.

    Updated flash_loader for M10 high speed configuration solution.


    FP51_fast_core 1.0 is released on GitHub

    FP51-1T MCU core


    M10 High Speed Config Utility 1.0 is released on GitHub

    GUI to program M10 onchip flash


  • BOM on findchips.com

    Changyi Gu04/30/2017 at 06:11 0 comments

    The BOM of this project has also been uploaded to findchips.com to streamline the supply chain. The good news is findchips.com is a very handy tool to gauge the BOM cost and available stocks. The bad news is that we've just found the microSD socket in the current BOM (SCHD3A0100) is obsolete. Fortunately, we have found a pin compatible part from Molex (47219-2001)

  • License Agreement for PulseRain M10 Designs

    Changyi Gu04/30/2017 at 04:50 0 comments

    Being a HackadayPrize2017 entry, one of the obligations is to "document all open source licenses and permissions as well as any applicable third party licenses/restrictions". To fulfill this obligation, a file named "PulseRain M10 Designs – License Agreement" has been uploaded into the FILES area of this project.

    In a nutshell,

    • The FPGA portion of the PulseRain M10 Designs, as defined in the license agreement, are licensed under the terms and conditions set forth in GNU Public License Version 3 (GPLv3). And for those who want to use the FPGA portion of the PulseRain M10 Designs in ways that are incompatible with GPLv3, PulseRain Technology LLC. offers commercial licenses instead.


    But please do look at the fine print, as that's the official license agreement that carries legal weight.

  • Schematic / Layout V1.0 Release

    Changyi Gu04/23/2017 at 22:14 0 comments

    The initial test on pilot run boards runs ok. And the V1.0 schematic and layout files are now released under

    https://github.com/PulseRain/M10_PCB/tree/master/V1.0

    And the design was made with Eagle CAD 7.7

  • Pilot Run for Production

    Changyi Gu04/23/2017 at 06:59 2 comments

    Finally, the pilot run for production has come back! All the protruded components in V0.9 has been realigned so that the production version will have a smooth edge on all 4 sides. And standoffs and washers are also added, as illustrated below:

  • CRC 1.0 Release

    Changyi Gu03/31/2017 at 07:53 0 comments

    RTL and script for CCITT-CRC16 is released on GitHub under tag 1.0.

    The CRC library is released under MIT license. And its core is actually from OutputLogic.com

View all 12 project logs

View all instructions

Enjoy this project?

Share

Discussions

TegwynTwmffat wrote 04/02/2017 at 13:10 point

I want one of these - what's the approximate retail cost based on 1,000 units?

  Are you sure? yes | no

Changyi Gu wrote 04/03/2017 at 07:36 point

Thanks for your strong interest in this project! The PCB fabrication/assembly is currently in the pilot run for production. Like most other hardware products, there could be a variety of factors weighing in as the volume ramps up. That's why I hesitate to give your a number right now. 

Our plan is to start a crowd-funding campaign when we see the green light for volume production (Hopefully in a few months). And we shall have a better idea for pricing at that point. Stay tuned, please :-)

  Are you sure? yes | no

Ember Leona wrote 03/31/2017 at 23:04 point

Im am confused by the project. Its like Orgonian to me.

  Are you sure? yes | no

Changyi Gu wrote 04/01/2017 at 06:27 point

Think of it as an Arduino. But this time, instead of using an off-the-shelf Micro-controller like ATmega328P, you get to have a custom-made micro-controller with all the peripherals tailed to your application. 

  Are you sure? yes | no

Yann Guidon / YGDES wrote 03/24/2017 at 03:00 point

This reminds me of the Actuino project, that I started about 6 years ago, since then discontinued...

Why use a 8051 core ?

  Are you sure? yes | no

Changyi Gu wrote 03/24/2017 at 04:30 point

Thanks for asking. There are several possible options for the soft-core MCU:

(1) AVR. 

(2) 8051

(3) RISC-V

(4) LEON

For option (1), AVR is a nice choice. However, AVR is solely owned my Atmel (now Microchip). And ATMEL has never granted any license to anyone to implement AVR instruction set, and there could be potential patent issues as well. Although there are open source AVR cores available, it does not mean those implementations have the blessing from Atmel (Microchip). That's why AVR is a no-go.

For option (2), 8051 instruction set has been around for so long that it has already fallen into public domain. That's why you can find a plethora of vendors that supply various enhanced 8051 (As of today, there are more than 70 of them.) 8051 is widely adopted, has a large ecosystem, and is not burdened by license/royalty/patent to implement. That's why we pick it as a good choice for 8-bit implementation.

Option (3) is also a good option. And it is on our road map for 32-bit implementation.

Option(4) is a no-go, although LEON is also an open source core. That is because (A) Sparc V8 is not so popular, and (B) You still need to apply for a license if you want to put LEON into commercial use.

BTW, our 1T  8051 implementation can reach very high clock rate (more than 100MHz on Altera C8 grade device). Most other implementation will fall flat at 50~60 MHz. And the Arduino UNO is only running at a clock below 20MHz.

With a software library to support Arduino language, I think our offering is a good alternative to standard alone MCU.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates