Add a Dash of FPGA to Arduino and Raspberry Pi Dev Board Mix
The Arduino and Raspberry Pi development boards—dev boards—sit at the apex of a revolution in the way engineers develop embedded systems. Once upon a time, you developed an embedded system starting with the hardware. Here were the project steps, broadly speaking:
- Spec out the system requirements including a rough estimate of processing speed and the I/O requirements.
- Select an appropriate microcontroller or microprocessor that met the power, performance, and price requirements.
- Wire up a hardware prototype.
- Debug the hardware prototype. Write a little driver code if necessary to wiggle the lines.
- After the hardware is running, start slinging code.
- Debug the code.
- Ship it!
Things aren’t so simple now. First, there are literally thousands of processors and microcontrollers to choose from—available from numerous vendors. No one can keep all of these alternatives in their head.
Second, item number three above (wire up a hardware prototype) presents a real problem since the world evolved to surface mount technology three decades ago. Hand wiring and even the wire wrapping technology that was so prevalent as a prototyping technique in the 1970s is akin to blacksmithing for electrical engineering. It’s rare today. You really need to design, fabricate, and solder up a prototype pc board, and who has time for that if there are better (faster and lower cost) alternatives?
This situation created an opportunity for dev boards that short circuit steps one through four above. Two of the most famous dev boards on the market today are the Arduino Uno (and its numerous variants) and the Raspberry Pi. The most current model of the Raspberry Pi is the Raspberry Pi 3 Model B+. Although often mentioned in the same breath, the Arduino and the Raspberry Pi dev boards are not at all similar.
Arduino is the name of an open source computer hardware and software company, an open source community project, the user community that designs and manufactures the Arduino dev boards, an integrated development environment (IDE), and the actual Arduino microcontroller board itself. (The name Arduino comes from a bar in Ivrea, Italy, where some of the original founders of the Arduino project used to meet.)
Figure 1: The Arduino Uno, an entry-level dev board based on an 8-bit Atmel microcontroller with some simple I/O capabilities, serves as a development platform for embedded designs that don’t need high performance. (Image source: Arduino)
The first Arduino dev boards were based on Atmel AVR microcontrollers. You developed code using the Arduino IDE, which then compiled the code and downloaded it into the onboard microcontroller’s flash memory. The Arduino IDE supports the C and C++ languages with special code structuring rules unique to the Arduino IDE. Because the Arduino concept has grown tremendously, newer Arduino variants have stepped up to microcontrollers based on the 32-bit Arm® Cortex®-M0 for more performance (Figure 1).
Because they were designed as introductory microprocessor dev boards for controlling relatively simple embedded systems, the Arduino dev boards have very simple I/O capabilities. Along with some 0.1 inch headers with simple digital I/O and analog input pins, Arduino Uno dev boards have a USB port and a few onboard LEDs to blink. That’s it. The I/O pins are under software control, so you won’t get much in the way of performance from them.
Stepping up to Raspberry Pi
If your embedded design needs more performance, then the Raspberry Pi 3 B+ dev board is a considerable step up from the Arduino (Figure 2). Here are its important features:
- Broadcom BCM2837B0, Cortex®-A53 (Arm®v8) 64-bit SoC @ 1.4 GHz
- 1 GB LPDDR2 SDRAM
- 2.4 GHz and 5 GHz IEEE 802.11.b/g/n/ac wireless LAN, Bluetooth 4.2, BLE
- Gigabit Ethernet over USB 2.0 (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 a Raspberry Pi camera
- DSI display port for connecting a Raspberry Pi touchscreen display
- 4-pole stereo output and composite video port
- Micro SD port for loading an operating system and storing data
- 5 V/2.5 A DC power input
- Power over Ethernet (PoE) support (requires separate PoE HAT)
Figure 2: The Raspberry Pi 3 Model B+ serves as an excellent embedded hardware development platform with a quad core, 64-bit Arm application processor, 1 Gbyte of SDRAM, and extensive I/O capabilities. (Image source: Raspberry Pi)
You can do a lot with that much processing power, memory, and I/O capability. The Raspberry Pi 3 B+ dev board runs Linux and there’s a huge support community surrounding the product. Considering its low price, the Raspberry Pi 3 Model B+ makes a great hardware platform for many embedded development projects.
What happens when you feel the need for speed?
If the Raspberry Pi 3 Model B+ meets all of your embedded system’s design requirements, then you need go no further. Considering the low price of this extremely capable dev board, why bother? However, if your embedded system calls for special I/O capabilities beyond the considerable I/O resources of the Raspberry Pi Model 3 B+, then what?
This situation is an example of when you need the high performance capabilities of FPGAs, which excel at allowing you to define new types of high-speed interfaces, defined using only software. No extra wiring needed. Plus, you can get FPGA capabilities already built into the Raspberry Pi Model 2’s form factor with Trenz Electronic's TE0726-03M dev board—the ZynqBerry (Figure 3).
Figure 3: The Trenz TE0726-03M ZynqBerry dev board packages a Xilinx Zynq Z-7010 SoC in a Raspberry Pi Model 2 form factor for embedded designs that need additional I/O performance. (Image source: Trenz Electronic)
The ZynqBerry is based on a Xilinx Zynq Z-7010 SoC, which fuses a dual core Arm® Cortex®-A9 32-bit microprocessor with an FPGA, resulting in a device that can handle many more high performance tasks than can a processor alone (or even four processors running at 1.4 GHz). You program the Trenz ZynqBerry with 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 Arduino Uno’s form factor? Trenz Electronic has you covered there as well with the TE0723-03M ArduZynq (Figure 4).
Figure 4: Trenz Electronic’s TE0723-03M ArduZynq puts a Xilinx Zynq SoC into the Arduino dev board form factor for Arduino projects that need more processor and I/O performance. (Image source: Trenz Electronic)
Like the Trenz ZynqBerry, you program the Trenz ArduZynq with the downloadable Xilinx Vivado tool suite.
Boards like the Arduino Uno and Raspberry Pi simplify many embedded development choices, but they’re not capable of meeting all embedded design challenges. When your requirements jump beyond the capabilities of these boards, there’s no need to change the board form factor. All you need to do is add a little FPGA to the mix.