My fellow blogger Hamster's recent experiences in making an FPGA act like an FM radio transmitter remind me of a few stories on EMI (electromagnetic interference) I would like to share with you. (See: FPGA + A Wire = Home-Brewed FM Transmitter.)
I remember the first case of EMI investigation in which I was an unwilling participant. While I was learning my Novice Amateur Radio ticket at College with the Ham Radio Club, I decided to participate in a club outing. The purpose of the outing in theory -- as proposed by our adviser, Dr. Fuersteneu -- was to set an amateur 10GHZ X-band DX record. We had one team head to the top of a mountain peak in the scenic Black Hills, and the other loaded the huge dish and rig in the back of my 4x4 and we headed out of town towards the badlands. We were proud of our Rig -- the Dish had to be 4 feet in diameter and the transmitter was good for about 100mW. This should be good for a decent amount of distance, we thought.
At the first stop we set up and transmitted to the peak. Success! The club's call sign W0VVY chirped out of the high-frequency receiver. Soon after, however, we noticed an armored car rumbling up the interstate towards my truck. Upon checking the map more closely, we realized that we were transmitting our very directional 100mW beam across the flight line at the local military base. They took down the club's call sign from the dish and (likely) my license number. After radioing back and forth a bit, they decided that we were a bunch of amateurs working in a band for amateurs (the X band) and they waved us on. I later discovered that -- via atmospheric ducting phenomenon -- low power VHF / UHF / Microwave signals can go for hundreds or even thousands of miles. This was how the Ham club that beat our distance managed to do so.
My next lesson in EMI involved programmable logic. Two engineers, Scott and Scott, had designed a 4-layer CPU board with 5V logic and a 12MHZ oscillator but with no ground plane. The harmonics interfered with the ATC (air traffic control) radios that were also carried on the aircraft. My assignment was to "fix it."
After some study -- coupled with the realization that whatever I could spend was going to have to cost $999.00 or less, because that was the maximum amount the VP could sign for -- I decided to make it a 6-layer board with ground layers top and bottom to enclose the busses. This meant perfection, or very close to it, on the layout.
I also decided on replacing the "rat's nest" of TTL logic and routes with PLDs (programmable logic devices), which 1) were SMD (surface mount devices) and therefore had less lead inductance to radiate, and 2) captured most signals on the die. Additionally, I added RC snubbers (a device used to suppress, or "snub," some phenomenon, such as voltage transients in electrical systems) on all clock and data lines going off of the board. Finally, I changed the CPU, RAM, and a few other chips to SMD to cut lead inductance. Proper decoupling was added to all components requiring it. All of this resulted in a dramatic improvement to the point that -- with a proper set of back-shells and connectors -- EMI on the unit was really no longer an issue and future complaints from the field were minimized.
Today's FPGAs contain many features to combat EMI, and the basic concept of combining huge sums of logic in a low voltage core helps immensely. EMI is proportional, in part, to the power the component uses. Low voltage helps this as discussed in the articles on low power by my fellow bloggers Paul Dillien and Warren Miller. (See: Power Consumption in FPGAs, Part 1 and Low-Power FPGAs: What Will the Future Look Like?.)
The following formula, in part, defines EMI power:
Additionally, many FPGA families use LVDS and other low voltage differential signaling schemes for off-chip communication. This can further reduce EMI. Furthermore, in the case of single-ended outputs, both slew-rate and drive strength can be set via the bitmap/IO constraints. Beyond that, on-chip PLLs and DLLs allow low-frequency clock oscillators to drive the chip while the internals run at a wide range of higher speeds, thereby avoiding the need for a noisy high-frequency clock oscillator module that also puts noise out on the power bus. Additionally, most FPGAs are available in low lead inductance BGA (ball grid array) packages that further reduce EMI.
Over the years, I have had to address many EMI issues related to programmable devices. What are some of the EMI challenges you face in your designs? And what are some of your favorite FPGA tricks to fight EMI?