Tag Archives: Field-programmable gate array

FPGA’s and their benefits to embedded systems.

This week, among my actual work responsibilities, I started learning about and my mind was partially occupied by thoughts of FPGA’s (or field-programmable gate arrays).

They are a type of chip that is able to be configured (similarly to microcontrollers) to perform simple logic on hundreds of inputs in perfect simultaneity (unlike microcontrollers). Instead of, as we see in the arduino, a single processor, cascading down a set of instructions in sequence, they do a simple task in parallel hundreds of thousands of times a second.
They are essential to applications that require arrays of simple logic gates on huge amounts of input signals. The most common modern use is GPU’s, camera sensors, industrial automation, and advanced scientific calculation.

In my estimation, they would make the project that I am currently working on around 1000% more efficient. An on-chip array of quadrature decoders would be able to take signals from hundreds of rotary encoders on one chip. In contrast, a powerful 32 bit micro-controller like the PJRC Teensy 3.1 can only reliably read at MAX four rotary encoder inputs with far higher latency. For this reason, I am currently forced to use a micro-controller for EACH axis of my pan/tilt/roll controller. The teensy has the added benefit of having libraries for a hardware quadrature encoder, but even with that, it is easily bested by the simple parallel logic gates on an FPGA.

The hobbyist world is almost entirely devoid of FPGA’s (especially in the open source realm) and that is why I am watching this project with great interest.

For now, I must work in cascading algorithms for my microcontroller-based system. However, I may someday be able to port those capabilities over to a much more efficient, low-latency, and compact device.
__________________________

Another application that I foresee FPGA’s being useful in is electronic drumming and triggering of samples. In the electronic drumming world in particular, there has always been a problem with latency. 40 ms may seem like a short amount of time, but it is actually really SLOW if you are talking about musical performance (particularly with drums). 20-40 ms is considered a standard latency for most electronic music applications..and it has always been unacceptable. This has always been my problem with Roland’s V-drums, but a system like this might be able to decrease the latency by a factor of at least 10.