This campaign is closed

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino, Redefining (µC, Raspberry Pi, IoT) Interfacing

You may also be interested in

Closed
Closed
Closed
Closed
Closed

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino, Redefining (µC, Raspberry Pi, IoT) Interfacing

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino, Redefining (µC, Raspberry Pi, IoT) Interfacing

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino, Redefining (µC, Raspberry Pi, IoT) Interfacing

Arduissimo Reloaded: MultiCore Cortex-M3 Arduino, Redefining (µC, Raspberry Pi, IoT) Interfacing

Tobias Strauch
Tobias Strauch
Tobias Strauch
Tobias Strauch
2 Campaigns |
Munich, Germany
$1,446 USD $1,446 USD 14 backers
6% of $23,926 Fixed Goal Fixed Goal
Highlights
Mountain Filled 2 Projects Mountain Filled 2 Projects

Arduissimo

Arduissimo is a MultiCore Arduino Project. It is based on the Low Cost FPGA Arduino Board – called “Morpheus I”, which is the central element of this project:

The following picture gives an overview of how to use it:

An Arduino board usually has a chip with one processor, program and data memory and a set of peripherals. You can program it using the Arduino IDE or other IDEs like the Atmel Studio and you can use the Arduino language or other languages like C++. You download the program through the USB interface for example.

This is also true for this project. You can use the enhanced Arduino IDE called the Arduissimo IDE or alternatives like the Atmel Studio and languages like the Arduino language or C++ as well. The difference is, that you now have 16 processors available and more program and data memory to run your code. The system has a maximum system performance of 166MHz, which means that when you use 5 processors, that each one of them is running at 33.2MHz. The system boots from the SD-card when applied.

The Arduino DUE is based on an ARM Cortex M3 CPU (“CM3”). This project is also based on a Cortex M3 compatible CPU.

But the performance increase and the multicore solution are not the only new aspects here. The cool thing is, that the system is optimized to execute virtual peripherals. Virtual peripherals provide the functionality of common peripherals like PWMs, serial interfaces etc., but they only exists as software code.

IDE

If you want to use the Arduino IDE – instead of Atmel Studio – then, don't worry. You can assign individual loops to individual processors or leave the multicore handling to the compiler. It is as simple as using the original Arduino IDE.

An additional frame lets you setup the project directory and structure. You can also define a set of sketch files for your project.

Virtual Peripherals

Virtual Peripherals replace fixed hardware peripherals with their functional counterparts in software using software code and standard GPIOs (General Purpose Inputs and Outputs). The concept of Virtual Peripherals is best explained with an example:

The picture shows how signals of a simple serial interface (cs (chip select), clk, data) change over time to transmit data. It becomes clear, that most of the time, the signals remain constant. Only at specific time-points they alternate their value. This is indicated with the little vertical arrows at the timeline arrow. These actions can be handled by a little software threads that modify the right signals at the right GPIOs at the right time.

This method can become very timing critical, when you need multiple (many) peripherals, but you only have one processor for it (and all the rest). This is where the MultiCore solution of this project is perfect. I has many processors available which quickly execute a thread when needed and then fall into waiting mode again. There is no fixed relation between a series of threads for one virtual peripheral and one processor. Threads are executed on any of the available processors at a given time-point.

The Arduissimo project fully supports Virtual Peripherals. The Arduissimo board has 99 General Purpose IOs. This allows you to use an almost unlimited number of PWMs, I2C, SPI etc. You can still use the standard Arduino Peripherals (for code compatibility for instance) and you can also use common predefined Virtual Peripherals as easy as writing Arduino code in the Arduissimo IDE. It is also possible to modify existing Virtual Peripherals or define new Virtual Peripherals. You can also use a more professional IDE like the Atmel Studio and other languages like C++ for it, as shown in the next picture.

Maybe this MultiCore project optimized for the embedded world, enabling Virtual Peripherals and using standard languages and programming flows is one way how the future might look like. So be one of the very first ones to support it.

RISC-V Version (NEW)

The project supports the recently announced RISC-V processor. A 16-core version is running on the Morpheus I board at 166MHz (3-stage) and can be used for your project using the RISC-V compiler flow.

[riscv.org:] “RISC-V (pronounced "risk-five") is a new instruction set architecture (ISA) that was originally designed to support computer architecture research and education, which we now hope will become a standard open architecture for industry implementations. RISC-V was originally developed in the Computer Science Division of the EECS Department at the University of California, Berkeley.”

Processing for FPGAs (NEW)

[wikipedia:] “Processing is an open source programming language and integrated development environment (IDE) built for the electronic arts, new media art, and visual design communities with the purpose of teaching the fundamentals of computer programming in a visual context, and to serve as the foundation for electronic sketchbooks.”

The Arduino folks adapted processing for the Arduino IDE. This project now enhanced this IDE by incorporating the FPGA compile flow. This allows you to define any peripheral of your choice and to use it on the Morpheus I board.

The FPGA compile flow is incremental, which means that the design only changes when the peripherals are modified. The implementation is based on a single Cortex M3 compatible CPU design.

Emulator and Virtual Prototyping

The Arduissimo project provides an emulator. An overview of the GUI gives the next picture.

With this emulator you can debug your Arduissimo code. It lets you set breakpoints and lets you step through the code. You can check out special function register values and display port waveforms. Also a stimulie pattern can be defined.

The emulator is open source java code, so anybody can modify and improve ;-) it.

Sometimes emulators are limited. This is why this project supports the idea of virtual prototyping. The emulator is based on a cycle accurate C model which is automatically derived from the MultiCore Arduissimo design. This cycle accurate C model can now be embedded in your simulation model of your robot or environment model. A demo project shows you how.

Low Cost FPGA Arduino (Morpheus I) Board

Finally, here is the specification of the magic Morpheus I board we are talking about all the time.

Specification details:

Size 98.5 mm x 60 mm
Power supply: DC 3.3V - 15V
Xilinx Spartan-6 LX25 CSG326 -2 (NEW)

ADC, 16-channel, 10-bit, ESD protection (NEW)
EEprom 4MB for configuration file and user data
High Speed USB, FTDI HS2232HL (13 pins for “245 fifo sync” connected to the
                FPGA)
SDRAM Interface 1: 6x 8MB (48MB), 166MHz, 32-bit data width
SDRAM Interface 2: 1x 8MBit, 166MHz, 16-bit data width
microSD-Card holder (6 pins connected to FPGA)
99 IOs:
      3 IOs: 2,54mm header (e.g. Raspberry Pi)
      2 IOs: 2mm header (e.g. Xbee, Bluetooth Bee)
      72 IOs: Arduino Mega footprint (72 IOs shared with uPlug)
      94 IOs: 8 uPlug connector slots (72 IOs shared with Arduino Mega) with 24
                LVDS pairs of equal length (24 IOs shared with Arduino Mega)
50MHz oscillator
Reset switch
One magic green LED
Power jack connector 2.1mm/5.5mm
Jumper for Bank3 VCC input
4 nice bumpers

This picture shows the front and the backside:

You can plug in a Bluetooth module:

or an Xbee module:

Raspberry Pi Bridge

There are mounting holes to place the Morpheus I board on top of your old Raspberry Pi or the new Raspberry Pi B+ Module. With the right connectors you can use one of the serial interfaces or the USB interface. There is also an Arduissimo library available so that they can nicely talk to each other via SPI or USB. (Picture shows a slightly older version of the Morpheus I board.)

In other words, your Raspberry Pi (B+) now has a flexible and large number of peripherals, something you might have already dreamed of.

uPlug (an outlook)

You might have wondered what these extra headers and screws are for. They are part of a Plug and Play system called uPlug, which is outside the scope of this campaign, but maybe subject of the next one.

You can plug in various modules. This picture shows an example you could use in your next drone project. It has a video in, Xbee, a temperature and humidity sensor, a navigation switch, drivers for servos and motors, a GPS module, a Wifi module, LEDs and keys, an SD Card holder for your flight data for instance and a 3-axis accelerometer and a 3-axis gyro.

With this example you can control your little robotic car. It has a bluetooth module, USB master interface to control other devices, a DAC, control modules for a stepper motors, DC motors and servos. It also shows loudspeaker, display, PMOD, Poti, LEDs and Key modules. And everything on top of an Raspberry Pi.

With the new High Speed IO channels and a few new uPlug modules, the Morpheus I board can be used for video processing. The interfaces allow conversion to/from HDMI, DVI, DSI, Raspberry Pi Cam, PAL, VGA, ...

The Morpheus I for FPGA nerds

Evaluation Board:

The Morpheus I board can also be used as a nice FPGA evaluation board. The user can download his own FPGA configuration file through the USB interface. With an additional adapter board, the JTAG pins can also be accessed when a Xilinx download cable should be used.

Logic Analyzer:

The 48MB 166MHz 32-bit SDRAM memory and 8MB 166MHz 16-bit SDRAM memory combined with the HS-USB interface make this board ideal to be used as a logic analyzer.

OpenCores Remap:

All uPlug boards can be used with it and some SoCs from opencores – like the MSP430, ARMs or the OpenRisc1200 - are remapped on this board and will be released as open source.

System Configurator:

The System Configurator helps you to download any bitfile to the Morpheus I. It also lets you define you SoC to be mapped on the Morpheus I. This also includes customer peripherals. It does the complete compiling and tool handling for you. Since there is still space available in the MultiCore Arduino design, it allows you to add customer logic to the Arduissimo project.

Last but not least, an FPGA nerd can also combine the Morpheus I with a standard Arduino and associated modules. This picture shows a possible video frame grabber. The video input stream is decoded into digital signals using a uPlug module, the FPGA handles the video bitstream and might use the memories for data storage. The communication to the Arduino Due can be based on any of the serial interfaces for instances. Still there are plenty of IOs available on the Morpheus I and of the Arduino Due.

Motivation

The motivation for this project is the realization of an idea I had as a student. This idea multiplies the functionality of a design – like the one of a Multi-Processor for example – BUT on a very much reduced area. I was certainly not the only one having this idea, but I had a lot of fun to continue working on this technique and I think it can be very useful in today's embedded world.

I call this further developed technique System Hyper Pipelining (SHP). This project is all about SHP, and instead of defining yet another evaluation board and compiler flow etc., I made everything Arduino compatible and created an Arduino board with an FPGA on it.

I programmed the FPGA that it provides now 16 Arduino processors - here Cortex M3 compatible processors - using SHP technology.

Although I think that it is really cool to run more than one processor on a very small device, and I'm very proud to demonstrate it, I thought I needed something even more useful to convince you guys. So I developed the concept of virtual peripherals on top of it. Almost all “embedded” programmer emulated any kind of interface already on a CPU and the concept of virtual peripherals is certainly not new, but when you combine it with System Hyper Pipelining, it can be very efficient.

So this project is all about some ideas and about the right mix of various technologies. With this project I want do demonstrate, that you can have a very efficient SHP-based MultiCore solution already on an FPGA and that you as an user can really benefit from it. So once the system is field proven then we can think about making an ASIC out of it. Then it will be even faster and more cost efficient.

Why Crowdfunding ?

The Morpheus I board can only be sold if the price is right. This can only be achieved when a minimum of 300 pieces are manufactured. To place an order of 300 pieces, I need your help by supporting this crowdfunding project.

Price

The price of the board is fair:

It is 84 € for the Indiegogo campaign (including German/EU VAT tax and EU wide shipping).

The hardware can be compared to the “Spartan 6 LX9 Microboard, MicroBlaze” from Xilinx, which costs me 91,90 € when I buy it at RS-online today (including German VAT tax and free shipping). The Morpheus I board is based on an LX25.

Shipping

All boards come in a nice Soft-Pac.

Shipping costs are 7€. Same for national (Germany) and international bakers.

Schedule

This schedule is based on worst case estimations. Due to the relative high investment I planned 1 round of prototypes and a relatively long time for assembly and shipping.

15.2. Order prototypes from manufacturer (assembly and shipping time: 35 days)
22.3 Test prototypes (7 days)
29.3 Order final product from manufacturer (assembly and shipping time: 42 days)
8.5   Test and post-assemble final product (10 days)
18.5  Shipping
26.5 Delivery

If everything goes well and only one round of prototyping is needed, boards arrive on the 26th May 2015.

Clarification

An FPGA is used, but no synthesis is needed for Arduissimo: For the Arduissimo solution a “frozen” design is used, means that it is not changed by the Arduissimo user and it will only be changed when a bug is found. Still the nerdy Arduissimo user can add customer designs of use the FPGA entirely for a new design. Only then synthesis is needed.

Virtual Peripherals: It is not true that one processor executes one peripheral, so that the numbers of virtual peripherals are limited. The algorithm of a Virtual Peripheral is sliced into individual threads. A thread is then executed on the next available processor. A Virtual Peripheral does not occupy processor resources when nothing needs to be done.

Limitation

The Virtual Peripherals do not support high speed peripherals like Gigabit Ethernet etc. It is fast enough to drive servos, motors, I2Cs, SPIs and related protocols below the range of 10MHz.

Risk

The Morpheus I board did go through several versions throughout the last years. The board will go through further testing throughout the crowdfunding phase. The crowdfunding goal and schedule covers 1 prototype and testing phases. I would consider the risk that the boards don't work as low.

The electronic parts of the Morpheus I are very common standard parts. I don't think that any of these will be discontinued by the manufacturer.

The Arduissimo FPGA design and the Arduissimo IDE work. Bugs can be cleared by modifying the source code.

Thank You

Thank you for reading the story of this crowdfunding campaign. If you think that MultiCore Programing and Virtual Peripherals can be a lot of fun, then please become a supporter and help us that this project can be realized. Thanks you so much, again.

Looking for more information? Check the project FAQ
Need more information
Let us know if you think this campaign contains prohibited content.

Choose your Perk

Plug and Play (NON-EU)

Currency Conversion $78 USD
€72 EUR
One Morpheus I board. For NON-EU bakers only. Including international shipping outside the EU.
Estimated Shipping
May 2015
0 claimed

Plug and Play w Raspi (NON-EU)

Currency Conversion $83 USD
€76 EUR
One Morpheus I board and one SPI Raspberry Pi connector. For NON-EU bakers only. Including international shipping outside the EU.
Estimated Shipping
May 2015
0 claimed

Plug and Play (EU)

Currency Conversion $91 USD
€84 EUR
One Morpheus I board. For EU bakers only. Including EU wide shipping.
Estimated Shipping
May 2015
0 claimed

Plug and Play with Raspi (EU)

Currency Conversion $97 USD
€89 EUR
One Morpheus I board and one SPI Raspberry Pi connector. For EU bakers only. Including EU wide shipping.
Estimated Shipping
May 2015
0 claimed

Double P&P with Raspi (NON-EU)

Currency Conversion $159 USD
€146 EUR
Two Morpheus I boards and two SPI Raspberry Pi connector. For NON-EU bakers only. Including international shipping outside the EU.
Estimated Shipping
May 2015
0 claimed

Double P&P with Raspi (EU)

Currency Conversion $187 USD
€172 EUR
Two Morpheus I boards and two SPI Raspberry Pi connector. For EU bakers only. Including EU wide shipping.
Estimated Shipping
May 2015
0 claimed

Classroom Edition (NON-EU)

Currency Conversion $707 USD
€650 EUR
10 Morpheus I boards. For NON-EU bakers only. Including international shipping outside the EU.
Estimated Shipping
May 2015
0 claimed

Classroom Edition (EU)

Currency Conversion $840 USD
€772 EUR
10 Morpheus I boards. For EU bakers only. Including EU wide shipping.
Estimated Shipping
May 2015
0 claimed

You may also be interested in

Up Caret