Hardware Design

NES8 Controller

To implement the Nintendo controller we had to use a clock divider on the bus clock to generate the latch and pulse singles of a reasonable pulse width. We used a shift register to shift in the data with a ready signal to ensure that the data shifted in was stable. When data was sampled from the PowerPC it only sampled the stable data, thus regardless of it the N8 controller was in the middle of transferring data, only stable data was sampled.

LCD Display

The primary hardware implementation to get the LCD display working was to create memory mapped IO to transfer the data from the PowerPC to the LCD hardware. Whenever the bus wrote to the given address, the data on the write would update the LCD hardware.

Servos

We used three servos in our final design. Two of the servos were used to control the pitch and rotation of the gun, while the third was used to fire the gun. To implement the servos in hardware we just required memory mapped IO. The software would write a the state of the signal pulse to a distinguished address for each servo. This data was then directly placed on the data line out to the servo.