Arduino MKR Vidor 4000
Bring the power of FPGAs to your embedded projects.
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.
See what Massimo Banzi, Arduino Co-founder, has to say about this board in the following video.
The main chip on the board is the Intel® Cyclone® 10CL016; it contains 16K logic elements, 504 KB of embedded RAM, and 56 18x18 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.
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.
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.
Check the Arduino Forum for questions about the Arduino Language, or how to make your own Projects with Arduino. Need any help with your board please get in touch with the official Arduino User Support as explained in our Contact Us page.
You can find here your board warranty information.
The Arduino MKR Vidor 4000 is based on the SAMD21 microcontroller and Intel® Cyclone® 10CL016.
|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|
|DC Current per I/O Pin||4 or 8 mA|
|Flash Memory||2 MB|
|Clock Speed||48 MHz - up to 200 MHz|
|Video Output||Micro HDMI|
|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)|
|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)|
|Clock Speed||32.768 kHz (RTC), 48 MHz|
|USB||Full-Speed USB Device and embedded Host|
You can build your own board using the following files:
Download the full pinout diagram as PDF here.
Additional I2C Port
The MKR Vidor 4000 has an additional connector meant as an extension of the I2C bus. It's a small form factor 5-pin connector with 1.0 mm pitch. The mechanical details of the connector can be found in the connector's datasheet.
The I2C port, also referred to as the Eslov self-identification port within Arduino, comes with: SDA, SCL, GND, +5V, and an extra digital pin meant to send an alarm to the otherwise plain I2C devices connected to it. The pinout is shown in the following image:
If you are interested in designing your own modules for Arduino boards with this expansion port, the connector we suggest using is code: SHR-05V-S-B, also in the picture.
Batteries, Pins and board LEDs
- Battery capacity: Rechargeable Li-Ion, or Li-Po. Please make sure the battery connector suits your battery.
- Battery connector: The connector is of type JST S2B-PH-SM4-TB(LF)(SN). Mating connector is JST PHR-2.
- Vin: This pin can be used to power the board with a regulated 5V source. If the power is fed through this pin, the USB power source is disconnected. This is the only way you can supply 5v (range is 5V to maximum 6V) to the board not using USB. This pin is an INPUT.
- 5V: This pin outputs 5V from the board when powered from the USB connector or from the VIN pin of the board. It is unregulated and the voltage is taken directly from the inputs.
- VCC: This pin outputs 3.3V through the on-board voltage regulator. This voltage is 3.3V if USB or VIN is used.
- LED ON: This LED is connected to the 5V input from either USB or VIN. It is not connected to the battery power, thus minimizing the impact on battery usage. It is therefore normal to have the board properly running on battery power without the LED ON being lit.
- Onboard LED: On MKR Vidor 4000 the onboard LED is connected to D6.