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:
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:
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.
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.
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.
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: