Every year, the brilliant students at Cornell University work on some fabulous projects for their ECE 5760. The students were given the responsibility of choosing their project, then designing and building it. Projects were built using the Altera/Terasic DE2 Development and Education board. This year’s projects include: prime number generator and RSA encrypter/decrypter, Conway’s life synthesizer, hand video-tracking virtual piano and drums, finger video-tracking virtual string instrument, and hand video-tracking video game.
Cornell ECE 5760 Fall 2011 Projects
Prime Number Generator and RSA Encrypter/Decrypter
This project implements a prime number generator and RSA encrypter/decrypter on the Altera DE2 FPGA. The project uses the Miller-Rabin primality test to search for prime numbers. The primes are displayed on a VGA monitor as they are generated. The user selects two generated primes that are multiplied to form the RSA public encryption key. The extended Euclidean algorithm is used to generate the encryption exponent and the decryption exponent. The encryption key is used to encrypt a text file on an SD card. The decrypted text is displayed on the VGA screen and written back to the SD card. The decryption key can be used to decrypt the file. The user can also enter the encryption and decryption keys to be used through the console.
Air String is a synthesized string instrument that can be played in real time by waving fingers with bright green color tips in motion of stroking a string in front of a camcorder. The implementation is based on Karplus Strong algorithm. The concept of the project is to provide a user interface similar to that of playing the harp except for the fact that there is no physical instrument in front of the user. Instead, the user’s finger motion in the air is recorded in real time to play virtual strings of different notes.
Game of Life Music Synthesizer
This project combines Conway’s Game of Life with music. The idea was to display the evolving states of the Game of Life and meaningfully map these states to an audio signal in real time. The implementation consisted of a VGA for displaying the cellular automaton, a keyboard for user controls, a pair of speakers for outputing the audio signal and an Altera DE2 Development Board (which contained a Cyclone II FPGA). The interface allowed the user to modify the automaton directly, either by drawing individual cells, dropping in pre-defined objects (i.e. glider) or changing the rate of evolution. Through the keyboard, the user was also able to control the generation of audio by enabling “scan bars” and/or picking preset tone mappings (described in detail later).
Conway’s Game of Life
Conway’s game of life is a 2D cellular automaton. This project implements Conway’s game of life on an Altera Cyclone II FPGA using a DE2 development board, at full VGA resolution. The main goal of this project was to implement Conway’s game of life on a grid of 640×480 cells, running at 60Hz. This would be full VGA, and updated as fast as the monitor can display the grid. Updating full VGA at 60Hz requires over 18 million updates per second. This leaves just a few clock cycles per cell for updating. Given that each cell requires 9 values to calculate it’s next value, even with extreme pipelining serial updating would not be possible (without over-clocking). As a result, the project design uses massive parallelization to achieve the required speeds.
In this project, a system was built for detecting the position of fingers on a sheet of paper using a camera and playing a sound depending on the position. The camera was used to detect the skin and thus track movement of the fingers on the paper. The output of the camera could be seen on the VGA screen. The keyboard for piano and drum was also displayed on the VGA screen. Depending on the hit position of the finger the appropriate sound would then be played using sound synthesis for piano and drum.
Adaptive Noise Cancellation
The purpose of this project was to implement a hardware multi-tap adaptive noise canceller that could adaptively filter out the noise from the contaminated source. The motivation originally came from the paper titled: Adaptive Noise Cancelling: Principles and Applications, which was published in 1975 by Widrow at Standford University. The project experiment setup would be similar to a noise cancelling headphone, which provides high audio quality in noisy environment.
Additively Synthesized Ocarina
This project used a FPGA to emulate ocarina sounds using an additive, direct digital synthesis algorithm. In order to produce an accurate ocarina sound, the spectrum of a real ocarina was analyzed to see the relative amplitudes of each harmonic. This information is then used to create state machines to output sinusoids at each harmonic. The sinusoids were then scaled appropriately and summed together to produce the ocarina sound. A physical ocarina equipped with six push buttons and an active microphone was built for this lab. The push buttons were used to configure which note (pitch) should be played. The microphone measured the intensity of air blown across it to control the volume of the sound.
The project derives ideas from the classic breakout game. In the game, there is a layer of bricks located on the top of the screen, a moveable paddle on the bottom, and a ball travelling across the screen. The objective of the game is to use the paddle to bounce the ball back up every time it falls down so that eventually the ball will break all the bricks. In the project, the game can be controlled with hand motions. Specifically, the player can move his hand left, right, up, or down to control the paddle accordingly. In addition to this, the player is allowed to accelerate or decelerate the ball by moving his hand up or down, respectively.
Ethernet Communication Interface
This project was to design an interface that enabled the FPGA board to communicate with other devices via the on-board Ethernet connection following several established networking protocols. For the project, a software interface was designed to communicate with the board via the Altera Monitor. Through this interface, the board could receive data packets sent over an Ethernet network from an external source. In addition, the board was able to transmit data packets of its own. The networking protocols that the interface was able to successfully implement are the ARP, PING (ICMP), and UDP protocols.
Visual midi Composer
For this project, a visual music composer and player was developed on an Altera DE2 FPGA board. In order to create a fluid user interface some peripherals had to be interfaced with the board, like a Keyboard, VGA display and speakers. With this peripherals the system is able to play music composed by the user and convert it to a Midi file that is stored in the SRAM on the board.