Exploring New Possibilities with FPGA: Innovative Uses of Arduino and Raspberry Pi

Arduino and Raspberry Pi development boards are the pinnacle of transforming the way embedded systems are developed. Previously, the development of embedded systems started with hardware. The project steps generally are as follows:

1. Define system requirements, including rough estimates of processing speed and I/O requirements.

2. Choose the appropriate microcontroller or microprocessor that meets power, performance, and price requirements.

3. Connect the hardware prototype.

4. Debug the hardware prototype. If necessary, write a small amount of driver code to activate the lines.

5. After the hardware is operational, start executing the code.

6. Debug the code.

7. Ship it!

Now it is not so simple. First, there are thousands of processors and microcontrollers to choose from, and they come from numerous suppliers. No one can remember all these alternatives.

Secondly, the third step (connecting the hardware prototype) presents a practical problem, as globally, we have developed to a stage of using surface mount technology thirty years ago. For electrical engineering, the prototype development techniques commonly used in the 1970s, such as manual wiring and wire wrapping, are akin to hand-forging techniques. Such techniques are rarely used today. You indeed need to design, manufacture, and solder prototype printed circuit boards, and if there are better (faster, lower-cost) alternative options, who would spend time doing it that way?

This situation has created opportunities for development boards, which bypass steps one to four directly. The two most well-known development boards on the market currently are Arduino Uno (and its many variants) and Raspberry Pi. The latest model of Raspberry Pi is the Raspberry Pi 4 Model B. Although people often compare Arduino boards with Raspberry Pi boards, the two are fundamentally different.

Embedded Development: Starting with Arduino

Arduino is the name of an open-source computer hardware and software company, an open-source community project, a user community that designs and manufactures Arduino development boards, an integrated development environment (IDE), and the actual Arduino microcontroller boards themselves. (The name Arduino comes from a bar in Ivrea, Italy, where some of the original founders of the Arduino project used to meet.)

Exploring New Possibilities with FPGA: Innovative Uses of Arduino and Raspberry Pi

Figure 1: The Arduino Uno is an entry-level development board based on the 8-bit Atmel microcontroller, with some simple I/O functions, serving as a development platform for embedded designs that do not require high performance. (Image source: Arduino)

The original Arduino development board was based on Atmel’s AVR microcontroller. After developing code using the Arduino IDE, the Arduino IDE compiles the code and downloads it to the flash memory of the onboard microcontroller. The Arduino IDE supports C and C++ languages and has its unique special code structure rules. As the Arduino concept has developed greatly, newer Arduino models have upgraded to microcontrollers based on the 32-bit Arm® Cortex®-M0 for higher performance (Figure 1).

Arduino boards are designed as entry-level microprocessor development boards for controlling relatively simple embedded systems, so their I/O functions are very basic. Besides a few simple digital I/O and analog input pins on a 0.1-inch pin header, the Arduino Uno development board also has a USB port and a few onboard LEDs that can blink. It’s that simple. The I/O pins are controlled by software, so there are not many barriers when utilizing the performance of these pins.

Upgrading to Raspberry Pi!

If embedded designs require higher performance, one might consider upgrading from Arduino to the Raspberry Pi 3 B+ development board (Figure 2). Here are the key features of this development board:

  • Broadcom BCM2837B0, 1.4 GHz Cortex®-A53 (Arm®v8) 64-bit SoC

  • 1 GB LPDDR2 SDRAM

  • 2.4 GHz and 5 GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE

  • USB 2.0 Gigabit Ethernet (maximum throughput 300 Mbps)

  • Extended 40-pin GPIO header

  • Full-size HDMI

  • Four USB 2.0 ports

  • Extended 40-pin GPIO header

  • CSI camera port for connecting Raspberry Pi cameras

  • DSI display port for connecting Raspberry Pi touch screen displays

  • 4-pole stereo output and composite video port

  • Micro SD port for loading the operating system and storing data

  • 5V/2.5A DC power input

  • Power over Ethernet (PoE) support (requires a separate PoE HAT)

Exploring New Possibilities with FPGA: Innovative Uses of Arduino and Raspberry Pi

Figure 2: The Raspberry Pi 3 Model B+ is an excellent embedded hardware development platform with a quad-core 64-bit Arm application processor, 1 GB SDRAM, and rich I/O capabilities. (Image source: Raspberry Pi)

With so much processing power, memory, and I/O capabilities, you can do a lot. The Raspberry Pi 3 B+ development board runs Linux and has a vast support community. The Raspberry Pi 3 Model B+ is affordable, making it an excellent hardware platform for many embedded development projects.

What if you need to speed up?

If the Raspberry Pi 3 Model B+ meets all your embedded system design requirements, there’s no need to look for other products. Since this development board is affordable and extremely powerful, why complicate things? However, what if the special I/O functions required by your embedded system exceed the vast I/O resources of the Raspberry Pi Model 3 B+?

This is an example where you need the high-performance features of an FPGA, which excels at allowing you to define new high-speed interfaces using only software. No additional wiring is required. Additionally, you can use the Trenz Electronic TE0726-03M development board ZynqBerry (Figure 3), which integrates FPGA functionality into the form factor of the Raspberry Pi Model 2.

Exploring New Possibilities with FPGA: Innovative Uses of Arduino and Raspberry Pi

Figure 3: Trenz’s TE0726-03M ZynqBerry development board encapsulates a Xilinx Zynq Z-7010 SoC in the form factor of Raspberry Pi Model 2, suitable for embedded designs that require additional I/O performance. (Image source: Trenz Electronic)

ZynqBerry is based on Xilinx’s Zynq Z-7010 SoC, which combines a dual-core Arm® Cortex®-A9 32-bit microprocessor and FPGA. The devices created with this can handle more high-performance tasks compared to a single processor (or even four processors running at 1.4 GHz). You can program the Trenz ZynqBerry using the downloadable Xilinx Vivado tool suite, which provides an IDE for both the software (processor) and hardware (FPGA) sides of the Zynq SoC.

Prefer the Arduino form factor?

But what if you prefer the form factor of the Arduino Uno? Trenz Electronic’s TE0723-03M ArduZynq also meets your needs (Figure 4).

Exploring New Possibilities with FPGA: Innovative Uses of Arduino and Raspberry Pi

Figure 4: For Arduino projects that require more processing and I/O performance, Trenz Electronic’s TE0723-03M ArduZynq places the Xilinx Zynq SoC in the Arduino development board form factor. (Image source: Trenz Electronic)

Similar to the Trenz ZynqBerry, you can program the Trenz ArduZynq using the downloadable Xilinx Vivado tool suite.

Development boards like Arduino Uno and Raspberry Pi can simplify many embedded development choices, but they cannot address all embedded design challenges. When your needs exceed the capabilities of these development boards, there’s no need to change the form factor of the development board. You just need to add a little FPGA to the mix.

Exploring New Possibilities with FPGA: Innovative Uses of Arduino and Raspberry Pi

Leave a Comment

×