What is Puggle?
Puggle is ARM-based, real-time data acquisition and processing tool. It is designed to sense, process, and react to both analog and digital input signals in hard real-time. Puggle is designed for closed-loop electrophysiology applications, but is useful for any project where a hard-real time analog acquisition/signal generation is required (e.g. robotic control loops). Currently, Puggle offers the following features:
- 4X high precision analog to digital conversion at moderate sampling rates (500 kHz aggregate which can be divided up among input channels; 16 bits over ±4.096 volts)
- 4X high precision digital to analog signal generation at moderate sampling rates (500 kHz aggregate which can be divided up among input channels; 16 bits over ±4.096 volts)
- Interface for communicating with Intan bioacquisition chips (www.intantech.com) to add up to 64, 16-bit analog inputs.
- Real-time, unbuffered data collection and processing (worst-case jitter < 50 μs. Latency depends on channel counts and computational complexity of processing task)
- Data streaming to multiple client applications using USB2.0, TCP/IP, or UDP communication protocols
- Modular design. Puggle can be used to record from many different instruments and talk to many different data logging applications. In can also work in concert with the growing ecosystem of ’capes’ build for the Beaglebone.
- A simple and extensible programming interface for customizing real-time data processing.
- Very low cost
Puggle is based around the BeagleBone, a credit-card-sized (8.6 x 5.3 cm) Linux PC, produced by Texas Instruments. The BeagleBone provides the digital interfacing and computational horsepower needed by Puggle to (1) collect, (2) process, and (3) generate signals. It features:
- Processor – 1 GHZ ARM Sitara CPU w/ NEON floating-point accelerator
- Co-processor – 2x 200 MHz MCUs for driving digital buses
- RAM – 512MB DDR3
- Flash eMMC – 2GB, 8Bit
- HS USB 2.0 Client Port – Access to the USB1 Client mode via miniUSB
- HS USB 2.0 Host Port – USB Type A Socket, 500ma LS/FS/HS
- Serial Port – UART0 access via 6 pin header.
- Ethernet – 10/100 RJ45
- Video Out – 16b HDMI w/CEC
Puggle consists of 5 hardware and software modules:
- Puggleboard – A 16-bit analog I/O interface that plugs into the BeagleBone’s expansion headers. This board provides 4 analog inputs and outputs, and an expansion port to drive Intan chips, which can add an additional 64 analog input channels.
- Puggle Driver – Firmware to communicate with the PuggleBoard.
- Puggle Linux – A real-time Linux variant that combines the lightweight Angstrom distribution with the Xenomai real-time development framework.
- Puggle API – Programming interface for designing custom real-time protocols to run on the ARM processor.
- Puggle Streaming Modules – A set of kernel modules for streaming data to a number of host applications (e.g., the Real-Time eXperiment Interface and the OpenEphys GUI)
Puggle is currently in the alpha/prototype phase of development. We plan to have a beta-level prototype by March, 2014. Since Puggle’s full design specification is open-source, feel free to fork it, use it, or modify it in the meantime. And, of course, we are always looking for people willing to help develop Puggle or expand its functionality for particular applications. If you are interesting in helping, have suggestions for the system, or want to beta test Puggle then drop us a line using our contact page.