MakerLab
ArduinoArduino MKR Vidor 4000

Arduino MKR Vidor 4000: The FPGA-Powered Microcontroller for Advanced Projects

A powerful Arduino board featuring an Intel Cyclone 10 FPGA and SAMD21 microcontroller, ideal for high-performance and custom hardware applications.

Arduino MKR Vidor 4000

The Arduino MKR Vidor 4000 is a significant departure from typical Arduino boards, integrating a powerful Intel Cyclone 10 FPGA alongside the familiar SAMD21 Cortex-M0+ microcontroller found on other MKR boards. This dual-chip architecture allows for parallel processing, hardware acceleration, and the creation of custom digital logic, making it suitable for applications requiring high-speed data processing, real-time control, or custom hardware interfaces that go beyond the capabilities of a standard microcontroller.

At its heart, the SAMD21 microcontroller handles the general-purpose tasks, communication protocols, and Arduino sketch execution, while the FPGA is a blank canvas for digital hardware design. Users can program the FPGA using high-level synthesis (HLS) tools or traditional Hardware Description Languages (HDLs) like Verilog or VHDL to implement custom logic, accelerators, or even soft-core processors. This versatility positions the MKR Vidor 4000 as a bridge between traditional microcontroller development and hardware design, appealing to embedded engineers, advanced makers, and students looking to explore FPGA technology.

Released around 2018, the MKR Vidor 4000 was designed to push the boundaries of what was possible with an Arduino platform. It offers a unique combination of ease of use for microcontroller tasks with the raw power and flexibility of an FPGA. This makes it an excellent choice for projects involving machine vision, advanced sensor fusion, high-frequency signal processing, custom communication protocols, or even implementing entirely new hardware peripherals that can be defined by the user.

The board is part of the Arduino MKR family, known for its compact size and focus on IoT applications. However, the Vidor 4000 elevates this by adding significant computational and hardware design capabilities. It's best suited for users who are comfortable with both software programming and have an interest in or a need for hardware acceleration and custom digital logic design. It's not a simple drop-in replacement for a basic Arduino Uno but rather a platform for more ambitious and complex projects.

Watch

Related video, embedded from YouTube.

Specifications

Microcontroller / SoCMicrochip SAMD21 Cortex-M0+ and Intel Cyclone 10CL016 FPGA
Architecture32-bit ARM Cortex-M0+ (SAMD21) / FPGA (Intel Cyclone 10)
Clock speedSAMD21: 48 MHz / FPGA: Varies based on design
Flash / StorageSAMD21: 256 KB Flash / FPGA: Configuration memory (e.g., 16 MB SDRAM, 2 MB QSPI Flash)
RAM / SRAMSAMD21: 32 KB SRAM / FPGA: External SDRAM (e.g., 16 MB) and internal block RAM
Operating voltage3.3V
Digital I/O pinsSAMD21: 22 GPIO / FPGA: Up to 100+ pins mappable to FPGA logic
Analog / ADCSAMD21: 8x 12-bit ADC channels
PWMSAMD21: 10x PWM channels
ConnectivityWi-Fi 802.11 b/g/n (U-blox NINA-W102 module), Bluetooth 4.2
USBMicro-USB connector for programming and power
Power input5V via Micro-USB or VIN pin (regulated to 3.3V internally)
Dimensions67.64mm x 25mm

Pinout & pin functions

PinFunction
3V33.3V power output
GNDGround
VINInput voltage (typically 5V, regulated internally)
RESETSystem reset pin
D0 (RX)Digital I/O, UART RX
D1 (TX)Digital I/O, UART TX
D2Digital I/O
D3Digital I/O, PWM capable
D4Digital I/O
D5Digital I/O, PWM capable
D6Digital I/O, PWM capable
D7Digital I/O
D8Digital I/O
D9Digital I/O, PWM capable
D10Digital I/O, SPI SS (Slave Select)
D11Digital I/O, SPI MOSI, PWM capable
D12Digital I/O, SPI MISO
D13Digital I/O, SPI SCK
A0Analog Input, ADC channel 0
A1Analog Input, ADC channel 1
A2Analog Input, ADC channel 2
A3Analog Input, ADC channel 3
A4 (SDA)Analog Input, ADC channel 4, I2C SDA
A5 (SCL)Analog Input, ADC channel 5, I2C SCL
LED_BUILTINOnboard LED, connected to digital pin 13
FPGA_PIN_0 to FPGA_PIN_15General purpose I/O pins for the FPGA
FPGA_PIN_16 to FPGA_PIN_31General purpose I/O pins for the FPGA
FPGA_PIN_32 to FPGA_PIN_47General purpose I/O pins for the FPGA
FPGA_PIN_48 to FPGA_PIN_63General purpose I/O pins for the FPGA
FPGA_PIN_64 to FPGA_PIN_79General purpose I/O pins for the FPGA
FPGA_PIN_80 to FPGA_PIN_95General purpose I/O pins for the FPGA
FPGA_PIN_96 to FPGA_PIN_111General purpose I/O pins for the FPGA
FPGA_PIN_112 to FPGA_PIN_127General purpose I/O pins for the FPGA
FPGA_PIN_128 to FPGA_PIN_131General purpose I/O pins for the FPGA

Wiring & circuit basics

The Arduino MKR Vidor 4000 operates at a logic level of 3.3V. It is crucial to ensure that any external components connected to its digital I/O pins are also rated for 3.3V or are properly level-shifted. Connecting 5V devices directly to the 3.3V GPIO pins can damage the SAMD21 microcontroller. Powering the board can be done via the Micro-USB port, which supplies 5V, or through the VIN pin, also expecting 5V. An onboard voltage regulator will step this down to the 3.3V required by the SAMD21 and other onboard components.

When powering external devices, use the 3V3 pin for low-power 3.3V components or the VIN pin (connected to the 5V USB supply) for devices that require 5V, provided the total current draw does not exceed the capacity of the USB port or power supply. Always include current-limiting resistors when connecting LEDs to prevent damage to both the LED and the microcontroller pin. For example, to light an LED, connect its anode to a digital pin (e.g., D5), then connect the cathode through a resistor (typically 220-330 ohms) to GND.

For sensors or modules that use I2C communication, the SDA and SCL pins are conveniently located on A4 and A5 respectively. For example, to connect an I2C sensor like the BME280, connect its VCC to the 3V3 pin, GND to a GND pin, SDA to A4, and SCL to A5. Ensure the sensor's operating voltage is compatible with 3.3V. The FPGA pins can also be configured to act as I2C interfaces, offering more flexibility if the SAMD21's pins are already in use.

Programming & getting started

The Arduino MKR Vidor 4000 can be programmed using the Arduino IDE. The SAMD21 microcontroller is supported natively, allowing you to write and upload standard Arduino sketches. To program the FPGA, you will typically use Intel's Quartus Prime software, which supports high-level synthesis (HLS) or HDL (Verilog/VHDL) for designing custom logic. The Arduino IDE can be extended to manage FPGA bitstream generation and loading onto the board, often through a specific board manager package. Uploading your first sketch involves selecting the 'Arduino MKR Vidor 4000' from the board menu in the Arduino IDE, connecting the board via USB, and clicking the Upload button.

For more advanced FPGA development, you would directly use Quartus Prime to create your hardware design, compile it into a bitstream, and then use a specific tool or script provided by Arduino (or a third-party integration) to load this bitstream onto the FPGA, often in conjunction with a SAMD21 firmware that interacts with the FPGA logic. This allows for complex hardware acceleration and custom peripherals to be defined and utilized by your embedded system.

Project ideas

FPGA-Accelerated Image ProcessingUse the FPGA to perform real-time image filtering or feature detection on frames captured by a camera connected via an appropriate interface. This project leverages the FPGA's parallel processing power for high-speed visual tasks, learning about hardware acceleration and digital image processing concepts.
Custom High-Speed Data AcquisitionDesign an FPGA module to interface with a fast sensor or analog-to-digital converter (ADC) at rates exceeding the SAMD21's capabilities. The FPGA captures and pre-processes data, sending processed results to the SAMD21 for analysis or transmission. This teaches about high-speed interfaces and custom hardware design.
Soft-Core Processor ImplementationImplement a soft-core processor (like a RISC-V or MicroBlaze) within the FPGA and run a simple operating system or bare-metal application on it, communicating with the SAMD21. This project explores the flexibility of FPGAs for creating custom computing architectures.
Hardware-Accelerated Communication ProtocolDevelop a custom communication protocol or implement a complex standard protocol (e.g., a high-speed serial interface) entirely in the FPGA for maximum efficiency. The SAMD21 then acts as a bridge to standard interfaces like Wi-Fi or Bluetooth. This project focuses on digital logic design and efficient communication.
Real-time Audio ProcessingUse the FPGA to implement digital signal processing (DSP) algorithms for audio effects, filtering, or analysis at high sample rates. The SAMD21 manages audio input/output and user interaction. This project explores DSP concepts and hardware implementation.
FPGA-Based Game ConsoleCreate a simple retro-style video game where the graphics rendering, game logic, and input handling are managed by custom logic implemented in the FPGA. The SAMD21 can manage higher-level game state or network connectivity. This project is a fun way to learn about digital logic, graphics, and system design.

Buying tips & gotchas

When purchasing the Arduino MKR Vidor 4000, be aware that it is a more advanced board and may require familiarity with FPGA development tools in addition to the Arduino IDE. Ensure you have sufficient cooling if running demanding FPGA designs, as they can generate heat. There are no widely known clones or variants of this specific board due to the proprietary nature of the FPGA and its integration, so purchasing from reputable distributors is recommended. Accessories like external cameras, sensors, and displays that can interface with the FPGA's I/O pins will greatly expand your project possibilities.