Why Not FPGA?

Why aren't more controls engineers using FPGAs? Sure, they're not easy to program and require specialized skills, but it beats writing VHDL code. The programming tools are improving, but opportunities for improvement still exist.

A software programmer needs to change mentality when dealing with an FPGA. Some FPGA vendors offer different suites of development tools. Other tools are targeted at programmers who are familiar with C, easing the transition for developers accustomed to working in a flexible Windows environment. But you still have to compile the program. This can take a while depending on the program size, and you can’t debug it with breakpoints and markers because it’s a compiled program.

FPGA programming is rather different from configuring an off-the-shelf servo-hydraulic controller, too. For the programmer, the difficulties stem mainly in the constraints of fixed-point math; floating point arithmetic is not available. The implementation of complex algorithms can require significant design effort to ensure accuracy.

No matter which tools you’re going to use, you’re going to need to address training, coding, debugging, validation and reuse. Coding, debugging and validation are all part of the same process, but the tools you use may make each one of these items easy, hard or extremely difficult. One of the biggest challenges to coding applications that are more than simple logic and integer math is dealing with engineering units. The two most common approaches are pre-scaled integer values and fixed-point math. They are really related concepts, but in the first case the programmer must keep track of the resolutions and implied scale factors resulting in code that is often difficult to follow and debug. If you have fixed-point math functions to work with, the code is more legible and easier to conceptualize. You still have to worry about overflows, underflows and ranges.

Even if the tool makes the transition very easy, the implementation behind is far different. So, are you using FPGAs? What are the advantages or drawbacks? Are you still just browsing? What is it that’s holding you back?