Hardware Design
Hardware
The system clock was scaled to construct our own timers.
The ARM Cortex-M3 processor on the SmartFusion board and the APB bus to control the LCD display.
The FPGA hardware interfaced with the N64 controllers (sending request signal and receiving data).
The FPGA generated PWM signals that take signals from N64 controllers as input and control the DC motors (for horizontal movement) and servo motors (for vertical movement).
Laser-photoresistor pairs were used as sensors and interfaced with a circuit that sends logic one voltage to SmartFusion board when something is between the laser and photoresistor. The FABINT was used to deal with the signal inside the SmartFusion board.
N64 Controllers and game control
N64 controllers were used to control the game. Each controller was able to control the horizontal and vertical motion with the joystick. The signals from the controller are sent to the FPGA to produce pulse width modulated signals to the servo motor and DC motor. The primary controller also controls the state of game by creating interrupts (start new game, set maximum score).
Laser-photoresistor Pair and Goals
Using a circuit with the photoresistor, some resistors, a comparator and a potentiometer, we were able to provide a logic one voltage (3.3 V) to SmartFusion board when something is between the photoresistor and the laser, and zero voltage otherwise. This enabled us to sense goals.
LCD Display and Game State
LCD changed using Memory Mapped I/O. When the system is given an interrupt, software figures out what to change the state of the machine to and display it on the LCD.