Arduino MKR Vidor 4000
Overview
The Arduino MKR Vidor 4000 brings Arduino’s ease of use to the work with the most powerful reprogrammable chips that exist: FPGAs. With Vidor you can create a board where all pins are PWM signals controlling the speed of motors. You can capture sound in real time and make a sound effect pedal for your guitar. It is possible to create a real-time computer reading sensor information and sending it to a state-of-the-art monitor or capture video and overlay sensor information on the image that will then later be sent over to a screen. You can connect to the Arduino IoT Cloud and control a complex laboratory machine running a large amount of motors. You could even prototype your own processors inside the FPGA and have it to work in parallel to the other microcontroller on the board. Vidor is a device that invites for experimentation, precision, and high speed computation.
The main chip on the board is the Intel® Cyclone® 10CL016; it contains 16K logic elements, 504 KB of embedded RAM, and 56 18×18 bit HW multipliers for high-speed DSP operations. Each pin can toggle at over 150 MHz and can be configured for functions such as UARTs, (Q)SPI, high resolution/high frequency PWM, quadrature encoder, I2C, I2S, Sigma Delta DAC, etc.
The board comes with 8 MB of SRAM to support the FPGA operations on video and audio. The FPGA code is stored in a 2 MB QSPI Flash chip, of which 1 MB is allocated for user applications. It is possible to perform high-speed DSP operations for audio and video processing. Therefore, the Vidor includes a Micro HDMI connector for audio and video output, and a MIPI camera connector for video input. All of the board’s pins are driven both by SAMD21 and FPGA, while respecting the MKR family format. Finally, there is a Mini PCI Express connector with up to 25 user programmable pins, that can be used for connecting your FPGA as a peripheral to a computer or to creat your own PCI interfaces.
The board’s microcontroller is a low power Arm® Cortex®-M0 32-bit SAMD21, like in the other boards within the Arduino MKR family. The WiFi and Bluetooth® connectivity is performed with a module from u-blox, the NINA-W10, a low power chipset operating in the 2.4GHz range. On top of those, secure communication is ensured through the Microchip® ECC508 crypto chip. Besides that, you can find a battery charger, and a directionable RGB LED on-board.
See all of the board’s connectors in the following image:
The Power of the FPGA
If you are not familiar with the term, an FPGA is a Field Programmable Gate Array, a chip where the logic commanding its operations is not written at the time of manufacturing. It is possible to write your own CPU, a series of dedicated high frequency PWM outputs, a digital sound mixer, video overlay machine, or anything you can imagine. The main limitation is the amount of logical gates needed to design any of those applications.
As a way to exemplify how such a powerful processor can be integrated in your typical Arduino workflow, we have created a series of libraries that can perform some simple tasks incorporaring the microcontroller and the specialized FPGA code. See the following examples to see how it works:
Draw the Arduino logo: see how to use the VidorGraphics library to output video signal to a monitor via the HDMI connector. Check the code here.
Enable camera: get a video signal from a camera and send it to your computer monitor. See the example here.
If you are an FPGA-savy developer you will be glad to know that we have released a series of libraries providing many of the basic functionalities needed for your projects. You can check this group of Github repositories containing all of the open source Vidor code we have created.
WiFi and Arduino IoT Cloud
At Arduino we have made connecting to a WiFi network as easy as getting an LED to blink. You can get your board to connect to any kind of existing WiFi network, or use it to create your own Arduino Access Point. The specific set of examples we provide for the MKR Vidor 4000 can be consulted at the WiFiNINA library reference page.
Bluetooth® and BLE
The communications chipset on the MKR Vidor 4000 can be both a BLE and Bluetooth® client and host device. Something pretty unique in the world of microcontroller platforms. If you want to see how easy it is to create a Bluetooth® central or a peripheral device, explore the examples at our ArduinoBLE library.
We Make it Open for you to Hack Along
The MKR Vidor 4000 is a multiple processor device that invites for experimentation. Hacking the WiFiNINA module allows you to, for example, make use of both WiFi and BLE / Bluetooth® at once on the board. Yet another possibility is having a super-lightweight version of linux running on the module, while the main microcontroller controls low level devices like motors, or screens. These experimental techniques, require advanced hacking on your side. They are possible via modifying the module’s firmware that you can find at our github repositories.
BEWARE: this kind of hacking breaks the certification of your WiFiNINA module, do it at your own risk.
Battery Power
Its USB port can be used to supply power (5V) to the board. It has a Li-Po charging circuit that allows the Arduino MKR Vidor 4000 to run on battery power or an external 5 volt source, charging the Li-Po battery while running on external power. Switching from one source to the other is done automatically.
Getting Started
The Getting Started section contains all the information you need to configure your board, use the Arduino Software (IDE), and start tinkering with coding and electronics. If you want to know more about programming VHDL, the low level language used to write parallel code that will be executed on the FPGA, check this reference page.
Currently you need to generate the FPGA code using an external software. The following tutorials, by Arduino community member Daniel Hertz, explain how to create FPGA code with Intel® Quartus® authoring tool:
Getting Started With FPGAs Using the Arduino MKR Vidor 4000: read the introduction here.
How to Program the Arduino MKR Vidor 4000’s FPGA with Quartus IDE: check the tutorial here.
Technical Specifications
The Arduino MKR Vidor 4000 is based on the SAMD21 microcontroller and Intel® Cyclone® 10CL016.
FPGA Block
FPGA | Intel® Cyclone® 10CL016 (datasheet) |
PCI | Mini PCI Express port with programmable pins |
Camera Connector | MIPI camera connector |
Circuit Operating Voltage | 3.3V |
Digital I/O Pins | 22 headers + 25 Mini PCI Express |
PWM Pins | All Pins |
UART | Up to 7 (depends on FPGA configuration) |
SPI | Up to 7 (depends on FPGA configuration) |
I2C | Up to 7 (depends on FPGA configuration) |
Analog Input Pins | n/a |
Analog Output Pins | n/a |
External Interrupts | n/a |
DC Current per I/O Pin | 4 or 8 mA |
Flash Memory | 2 MB |
SDRAM | 8 MB |
EEPROM | n/a |
Clock Speed | 48 MHz – up to 200 MHz |
Video Output | Micro HDMI |
Microcontroller Block
Microcontroller | SAMD21 Cortex®-M0+ 32bit low power ARM MCU (datasheet) |
Radio module | u-blox NINA-W102 (datasheet) |
Board Power Supply (USB/VIN) | 5V |
Secure Element | ATECC508 (datasheet) |
Supported Battery | Li-Po Single Cell, 3.7V, 1024mAh Minimum |
Circuit Operating Voltage | 3.3V |
Digital I/O Pins | 8 |
PWM Pins | 13 (0 .. 8, 10, 12, 18 / A3, 19 / A4) |
UART | 1 |
SPI | 1 |
I2C | 1 |
Analog Input Pins | 7 (ADC 8/10/12 bit) |
Analog Output Pins | 1 (DAC 10 bit) |
External Interrupts | 10 (0, 1, 4, 5, 6, 7, 8, 9, 16 / A1, 17 / A2) |
DC Current per I/O Pin | 7 mA |
CPU Flash Memory | 256 KB (internal) |
SRAM | 32 KB |
EEPROM | no |
Clock Speed | 32.768 kHz (RTC), 48 MHz |
LED_BUILTIN | 6 |
USB | Full-Speed USB Device and embedded Host |
LED_BUILTIN | 6 |