Arduino announced several new products at the 2018 Bay Area Maker Faire. One of those products is the MKR Vidor 4000, an FPGA-based board. You can read their official announcement here. (Over here is a write-up on the new Uno WiFi Rev 2.) The goal of the MKR Vidor is to make FPGA accessible to makers and innovators. It represents a new shift in hardware focus for the Arduino team.
An FPGA is a Field Programmable Gate Array. In other words, it is reconfigurable hardware. Unlike a microcontroller, an FPGA is not running software. Instead, its gate array changes configurations for a specific task.
The example I like to think about is a rotary encoder. You might find one on the spindle of a motor. As the motor spins, an IR sensor detects slits in the encoder to track speed and direction. In a microcontroller based system, you might use an interrupt to monitor the IR sensor. Even though interrupts can respond quickly, there is still a chance of missing a pulse. Plus, the rest of the microcontroller has to wait while the interrupt is handled. In an FPGA, however, you would build a hardware counter with the pulse driving the counter’s clock input. This counting happens independently of whatever else the FPGA is doing.
Lastly, I should point out, a widespread FPGA activity is to embed a microcontroller “core.” This flexibility allows the designer to have best of both worlds. The MKR Vidor board includes the FPGA, a D21 SAM microcontroller, u-blox WiFi module, Microchip’s ECC508 crypto authenticator.
MKR Vidor 4000 Key Features
Product details are scarce at the moment but here are essential details to know.
- FPGA Intel Cyclone 10 (Altera)
- 8M RAM
- 2MB Flash
- MIPI (Video)
- Mini PCI-Express
From that list, here are three areas I want to touch on and add a bit more detail. I hope this information is helpful to those of you that are not as embedded into the professional landscape. (Get it, embedded?)
- FPGA Intel Cyclone 10 (Altera). If you were not aware, Intel acquired Altera some years ago. These chips offer high-speed digital interfaces along with plenty of logic blocks. Their target application is machine vision which explains the MIPI and Mini PCIe. Cyclone 10 FPGA here.
- MIPI (Video). The MIPI Alliance is an industry organization that publishes interface specs for mobile products. The first standard was for displays and cameras. The standard has been extended to other busses as well. The idea is that you should be able to connect a MIPI-compatible display to a MIPI-compatible controller. The actual physical connection might vary by manufacturer, but all the same signals are there. (It’s like I2C on steroids.)
- Mini PCI-Express. For most people, PCI-Express is just a thing inside their computer. From a PC perspective, PCIe slots replaced the older PCI (and PCI-X) standards about a decade ago. Today it is common for PCIe to be used as a high-speed, high-bandwidth interconnect within a system.
Being Arduino, the MKR Vidor is not just the hardware. There is software coming to make programming the FPGA more accessible.
Programming the MKR Vidor 4000
Sorry, I do not have a better picture. I did get to see a brief one-on-one demo of the software. However, it was such an early stage version I was asked not to share pictures. (I don’t see that as a negative, the person showing me didn’t have access to the latest.) The idea is that the FPGA’s hardware is set up as blocks. You connect them with IP pieces.
IP means intellectual property. In the context of FPGAs, it means pre-configured pieces. For example, it is common to drop-in a microcontroller into an FPGA design. Someone owns that microcontroller’s code, so it is their “IP block.” It is a common practice in the FPGA world.
What libraries or IP is available?
At launch these IP blocks are going to be available:
- MIPI Camera Input
- DVI Output
- 120 MHz Sigma Delta DAC
- QR Code Tracker
- Quad Encoder
- I2C, I2S, SPI, and UART
- FIR Filter
That is just a sample of what you could use an FPGA to do. Seasoned FPGA programmers are probably wondering how flexible the underlying software is or how to create IP blocks.
Verilog and VHDL on the Arduino Vidor?
I want to address an elephant, or well, a question that I heard pop-up over and over. If you are familiar with FPGA development, then you are no doubt familiar with Verilog, VHDL, and RTL. While the toolchain for the Vidor provides SOME access to these languages, that is not the intent. The intent of the ecosystem to make it easy for anyone to configure an FPGA.
When it comes down to it, the team is thinking about how designers unfamiliar with FPGAs can get up and running quickly. It does not appear they are trying to reinvent the toolchain for high-level language programmers, atleast not yet. So do not think of the MKR Vidor 4000 was a “learn VHDL” platform. Instead, it is a “use FPGAs” platform. This distinction is important when setting expectations for the board. (I can already hear the complaints about how it doesn’t do X or support Y. Where neither X or Y achieve the goal of making using FPGAs easier.)
Without access to those types of languages, what can you do with an FPGA or the MKR Vidor?
What can you do with the FPGA?
FPGAs excel at processes that can be highly parallelized. The list of IP blocks above should give some insight into what can be done.
The example demo at the show was a real-time QR-Code tracking camera. The board captured relatively high frame-rate video and could put points on the QR-Code. It also put a point on my nose, which leaves me wondering how robotic I really am.
The FPGA is a first-order filter looking for sections of the image to analyze. It then passes those sections off to the onboard microprocessor to more accurately identify the QR-codes fiducial blocks.
What does Vidor mean?
After Massimo Banzi finished the State of the Arduino Talk, we got a chance to ask questions. The first one came from me and was one I couldn’t find details on anywhere.
Massimo explained that internally he liked 5-letter code names for projects. Internal code names is a standard development technique for hardware. When you are developing a roadmap, products might be years away, so you aren’t sure about their market name yet.
It turns out, Vidor is a city in north-eastern Italy. It was also the code name for this new Arduino FPGA board. The original intention was to change to a market name before release, but MKR Vidor 4000 ended up sticking.
Where to get the MKR Vidor
The Arduino MKR Vidor 4000 has a price around $60 with availability planned for June. More information and a news sign-up are available on the product page.