FPGAs for Scientists and Engineers


I was introduced to Field Programmable Gate Arrays (FPGAs) at NASA/JPL when our research team had to measure the distances between moving optics to sub-nanometer accuracy over distances of many meters. The key to making it happen was a custom-build phase measuring engine made first with Altera and then with Xilinx FPGAs.

At that time (~20 years ago), FPGAs were for labs with big budgets and staff specialized in FPGA coding techniques.

Things have changed. Costs are down to a few dollars per FPGA and coding is far easier with user-friendly Verilog programming environments, freely downloadable from the FPGA manufacturers.

The time has come for FPGAs to be tools for students, scientists and engineers.

I invite you to join me in making practical, high-performance laboratory instruments, customized for your specific needs.

What are FPGAs?

At some point in your life you have probably made a digital circuit on a breadboard like this:

<strong>Breadboard with digital circuits and interconnections.</strong>
Breadboard with digital circuits and interconnections.

The FPGA behaves like a huge breadboard with thousands to millions of these chips, all waiting to be interconnected. You have the power to wire these chips through the use of Verilog, and it's actually fairly easy! Amazing!

<strong>Typical FPGA chip, approximately life-size</strong>
Typical FPGA chip, approximately life-size

(Note that this explanation is about how an FPGA seems to work, to a user like me. But what's actually happening in the chip is a bit different and a fascinating subject.)

What can FPGAs do for you?

Most physics electronic instruments can be made from a combination of ADC + FPGA + DAC, and these days the majority of high-end instruments (e.g. Agilent (now Keysight Technologies), Keithley (now part of Tektronix), Zurich Instruments) are built around FPGAs.

These include:

  • Filters (high-pass, low-pass, bandpass)
  • Signal generators
  • Lock-in amplifiers, phase sensitive detectors
  • Phase detector
  • Demodulator
  • Signal averagers
  • Pulse height, pulse width, pulse delay, multichannel analyzers
  • Sonar, lidar signal processing
  • True RMS voltmeters
  • PID controller
  • Noise cancellation

You're probably not impressed, yet. After all, most or all of these functions can be done with analog electronics (old school) or with computers/microprocessors.

BUT, compared to analog electronics, using an FPGA (+ ADC and/or DAC) delivers amazing frequency and dynamic range. This is explored in depth in the highly recommended The Scientist and Engineer's Guide to Digital Signal Processing.

AND, unlike computers/microprocessors, the sample-to-sample throughput of an FPGA is completely reliable. EVERY SAMPLE will be acquired and processed. There are no interrupts, hiccups to service the mouse or network traffic. It is pure logic, working in lockstep with the clock.

AND, FPGAs generally use a fraction of the power that microprocessors need for equivalent functionality. The GoBoard will run for hours on a nine volt battery.

<strong>FPGA board and DAC powered by 9 Volt battery, reduced to 5 V by a regulator. The GoBoard uses 20 mA, the Pmod DAC3 uses 5 mA.</strong>
FPGA board and DAC powered by 9 Volt battery, reduced to 5 V by a regulator. The GoBoard uses 20 mA, the Pmod DAC3 uses 5 mA.

What can I (Halverson) do for you?

I have had a varied career in research, industry and teaching, but now I have some spare time.

If you are a student (high school, undergrad, graduate) I can help you design and build low-cost equipment for your projects. It doesn't hurt to send an me an email.

If you are a researcher or an engineer working through the inevitable budget cuts, same things as for students.

And I am open to consulting. I would love to play, ahem, work part-time on your interesting projects.

What I need from you is some involvement and recognition. Let's talk.

What's next?

If you haven't played with FPGAs before, visit the NandLand web site. Buy the Go Board and do the tutorials. They are easy and fun.

(The NandLand tutorials were done using Lattice's IceCube software on Windows. I am using the same software, but on Ubuntu Linux. There are certain pros and cons to each environment, but if you use Ubuntu, I can help you get things working.)

Next, check out the projects on this web site. They will illustrate how to create typical lab electronics and give you ideas and confidence to design your own devices.