College is a great place for makers, because students have access to equipment, learning resources, mentors, and professors that motivate them to tackle challenging projects. At the end of last semester, we showed you some of our favorite student projects from Professor Bruce Land’s ECE 4760 course at Cornell University’s School of Electrical and Computer Engineering. Now another semester has passed, and with it a whole new crop of great projects that were made using FPGA (Field-Programmable Gate Array) development boards in the ECE 5760 course.
Vector Graphics From a Laser Projector
It’s easy enough to display graphics with a film or LCD projector, because both show an entire frame at once. But it’s harder to draw graphics with a laser, because the laser has to move very quickly. In order for that to work, you have to use mirror galvanometers to translate tiny, fast movements into big movements on the projection surface. That’s exactly what these students did, and they used an FPGA to control the galvos. With that setup, they’re able to take a vector image and project it onto a sheet of paper using a cheap laser pointer.
String Art Generator
We recently covered a very impressive robot that is able to create string art by winding thread between nails going around the circumference of a board. But generating the paths for the thread to follow from an image is extremely resource-intensive and time-consuming task. That’s why these students used an FPGA to make the processing more efficient. In their tests, they found that they were able to generate the string paths 80–100 times more quickly than on a conventional computer.
A vocoder is a device for analyzing and synthesizing the human voice, usually for the purpose of compression for data storage or transmission. To most people, however, the more interesting thing about a vocoder is that it can be used to modify the voice. For example, a vocoder can be used to alter the pitch of speech to disguise your voice. These students used an FPGA to do that in real time, and their vocoder seems to work flawlessly.
Poker is a difficult game to play, and not just because most people have hard time bluffing. A skilled poker player needs to understand the probabilities of getting a card they want, and weigh that against the probabilities of what cards other players likely have. Theoretically, you could count cards to try and figure that out, but it’s nearly impossible in the real world. However, this FPGA is able to do that by running thousands of simulations in a game of Texas Hold ’Em. It determines what the likelihood is that you’ll win the hand, and then you can bet accordingly.
Simulating an FPGA with an FPGA
An FPGA works by allowing you to programmatically design and control a circuit. Because processors are just integrated circuits made up of millions of transistors, you could use an FPGA to simulate a processor — which is what they’re often used for. You’re not just emulating its operation, but actually reproducing the hardware that makes up the processor. That means that the simulated processor running in the FPGA will perform exactly like a real processor would. These students have taken that concept into an existential direction by using an Intel Cyclone5 FPGA to simulate an Xilinx XC6200 FPGA.