XLR8 is a drop-in replacement for an Arduino Uno with a twist. It is an Arduino-compatible board that uses a Field-Programmable Gate Array (FPGA) as the main processing chip.
The FPGA provides a reconfigurable hardware platform that hosts a soft implementation of an AVR instruction set compatible microcontroller and provides the ability to implement custom logic that can interface directly to the processor.
XLR8 is compatible with the Arduino IDE and can be programmed just like any standard Arduino-compatible board.
Volume production orders have been placed, and a small initial quantity of boards is currently available for purchase through Mouser.
XLR8 was designed from the very beginning to look, feel and act like an Arduino.
Sketches designed to target any of the ATmega328 Arduino-compatible boards will also run on XLR8, and you can still load your code directly to XLR8 via the Arduino IDE.
FPGA Accelerated Processing
An FPGA serves as the nerve center of the XLR8 design hosting the microcontroller core and providing a platform for the hardware-accelerated functional units that enhances XLR8’s performance.
Hardware-accelerated functions run in a fraction of the clock cycles required to execute the same function in software. Shorter times to complete complex tasks in hardware result in more clock cycles available for additional software functions.
The net effect is faster computational speed and overall improved application performance.
An Introduction to Xcelerator Blocks
What’s an Xcelerator Block?
An Xcelerator Block is an optimized hardware implementation of a unique processor intensive function. Since everything needs a cool acronym, we simply refer to one of these blocks as an “XB”.
XLR8 ships with pre-installed XBs that target application-specific behavior. XLR8 can be field-updated to change the XBs implemented on the FPGA.
A list of initial XBs available with XLR8 is provided on the right. Early feedback from developers indicates interest in Xcelerator Blocks targeted toward functions such as:
- Proportional-Integral-Derivative (PID) control
- Event Counters and Timers
- Quadtrature Encoders/Decoders
- Pulse Width Modulation (PWM)
- Multiple UARTS
Alorium will implement future XBs based on feedback from early adopters and new potential customers. If you have an idea for an XB you’d like to see, jump over to the XB Forum and share your thoughts and requests.
The NeoPixel Control XB provides three key improvements for controlling NeoPixel shields, strips, and arrays:
- Data memory is not used for pixel color storage.
- Interrupts are not disabled while updating the pixel array.
- Changing pixel brightness does not corrupt color data.
These improvements open the door to new and enhanced ways of implementing NeoPixels in your projects. In addition, the XLR8 board can drive arrays as large as 1280 pixels!
This XB completely eliminates the “jitter” problem that commonly faces developers using Arduino to control servos for drones, robotic platforms, sensor alignment or other applications. The XLR8 servo control block can be used by simply including a different header file and then leaving the rest of your sketch completely unchanged!
Floating Point Math
Intense mathematical computation is a known challenge for applications using Arduino-compatible solutions. The Floating Point XB provides hardware based floating point math implemented in the FPGA fabric. Functions and operations can be accessed from your sketch by installing our library and using our floating point arithmetic functions.