Quarto: A Digital Brain for the Analog World™
The qNimble Quarto is a multi-function data acquisition platform that is easy to use, but incredibly powerful and capable of reading, processing and writing analog data in real-time. Low latency, 1 MSPS, 16 bit-ADC's and DAC's are directly accessible with an blazing-fast 500 MHz CPU dedicated to running your code. The Quarto is Arduino™-compatible, so you can program it in the Arduino IDE, or your favorite C/C++ environment. Designed for low-latency and simplicity, you can build a 100kHz bandwidth PID servo control system or custom digital filters with just a few lines of code. What will you build?
At a glance
- 4 Analog Inputs (±10V, ±5V, ±2.5V, ±1.25V @1MSPS, 16 bit)
- 4 Analog Outputs (±10V, 1MSPS, 16 bit)
- 500 MHz ARM M7 Processor
- 8 GPIO pins, 2 Triggers
- 32 MB RAM, 8 MB Flash
- SD Card Support1
- 100 kHz PID Servo
- <3μs latency from ADC read to DAC updating
- Floating-point math support
- Arduino™ Compatible
- Open Source
How does the qNimble Quarto work?
The Quarto combines four high-speed, low-latency 16-bit DACs and ADCs with a powerful CPU and an FPGA. The FPGA handles all the communication with the DAC and ADC and we created InstaWrite™ to enable the CPU to read from or write to the FPGA immediately. Communication with the ADC and DAC never slows down the CPU. The entire signal chain is designed for low latency (~1μs) to support high-bandwidth servoing and filtering so you can respond to your data quickly. With hardware support for double-precision floating point math, you can do advanced math calculations on your data in real-time.
How does the qNimble Quarto compare to a...
Data-acquisition over USB is simple and often inexpensive. While not universal, these solutions usually have 12-bit or fewer ADC's and DAC's and limited sample rates. But any USB approach will have very high latency and timing jitter. The USB protocol is designed for moderate latency or high throughput, but not both. The round trip time from the device, to your computer over USB and back again can be take many milliseconds. If you just want to generate a low-bandwidth analog output or stream analog data back to the device, this can be a great solution. But if you want to interact with your data quickly, you will need a different approach.
Traditional DAQ approach
A traditional data-acquisition (DAQ) approach has dedicated hardware that either runs on your computer or on a dedicated chassis. Modern computers are amazing, but they are not designed for low-latency (~1us) response times. Even when running a Real-Time OS, getting predictable latency under 10us can be challenging. Additionally, the complexity of running a full operating system adds cost and complexity to these approaches.
When you want the lowest latency connection to an ADC or a DAC, go with an FPGA. It can handle ADC data sampling at 100M samples per second and process the data in well under 100ns. But such power comes with a few drawbacks. In addition to the higher cost of an FPGA, programming one has its own challenges:
- Learning Curve - Programming an FPGA is complex and takes a while to learn. Troubleshooting an FPGA is even harder.
- Iteration Time - Compile times on an FPGA can be tens of minutes or even hours. That really slows down how fast you can try and iterate your ideas.
- Math - Floating point math is very computationally expensive and usually calculations must be done with integers.
If you aren't programming an FPGA, then you are using someone else's FPGA program. This solves many of the above issues, but these approaches tend to be expensive and limit you to the features and functionality they programmed into the FPGA.
The Quarto approach gives you the speed and power of an FPGA without its complexity or expense. You can program your custom code in C++ with the easy-to-use Arduino™ IDE without worrying about FPGA design or avoiding floating point math. Your code is running directly on the CPU (no OS) to maximize simplicity and speed.
- Requires hardware version 3.1 or higher. All Quartos shipped after Febuarary 2022 support the SD card. To find out the hardware version of your Quarto, please run the 'DeviceInfo' example under 'Testing'. The numbers after "qN-101." in the Device ID is the hardware version. So "qN-101.3.1" is hardware version 3.1.↩