Welcome to the homepage of Dexterity Dash, a hand-eye coordination tool/game aiming to make training hand-eye coordination and reflexes fun for those suffering from head trauma and brain injury. This engineering project aims to develop a hand-eye coordination game using the DE1-SoC FPGA board, Verilog for coding, and ModelSim for testing. The game enhances users' hand-eye coordination by requiring them to press illuminated buttons in a specific sequence within a time limit to score points.
The primary goal of this project is to create a hand-eye coordination game. The DE1-SoC board, Quartus for Verilog coding, and ModelSim for testing are utilized to implement the game's logic. The game involves pressing one of 8 buttons that light up, and after each correct press, another button lights up. A default timer of 30 seconds challenges users to press as many correct buttons as possible to score the most points.
Using solidworks, I created a comprehensive model of the game controller to ensure that all buttons are non-intersecting and ground clearance as well as screw clearance was accounted for.
Using a Miter Saw, Drill press, and impact driver, we assembled the gameboard according to the Solidworks model.
After the wooden chassis was complete, we installed the buttons and LEDs to complete the mechanical aspect of the gameboard.
Using KiCad I created a schematic of the electrical system that had to be implemented to allow the FPGA to interact with the buttons and switches.
To ensure rapid production and prototyping, I used a breadboard to assemble the circuit show in the schematic, colour coding wires to allow for easy installation, debugging, and removal of wires.
Using Quartus, VSCode and ModelSim, we wrote this game exclusively in Verilog. Our Final code is under DEXTERITYDASH.V, and all other files are drafts and tester code.
Shown below is a block diagram of how all different code modules and programs interact with each other.
Despite our hardware and electrical components being quite complex given the scope of the project, we did not shy away from making our software just as complex, using several features of the DE1-SoC board.
Here is a list of Verilog features we implemented:
- A VGA output and Display showing a welcome screen as well as a max score and max time info screen.
- A Finite State Machine to control the two screens of the VGA
- Onboard FPGA Keys, LEDs, 7-Segment Displays, and GPIO pins
- A binary to decimal and a decimal to hexadecimal converter
- Multiple multi-bit wide registers to store data
- A timer implemented by generating a waveform and using clock crossing.
- Edge Triggered Flipflops to count score
Here is a functional simulation of simulation of our game logic. GPIO_0 is the user input, and when it matches GPIO_1(the signal signifying which button we want to press), 'correctsignal' goes high for an instant and this causes the score counter to increase.
We aimed to keep Dexterity Dash TM very simple as we want to test hand-eye coordination solely, eliminating external factors such as game complexity. To begin the game, the user simply presses the reset button, where they will be shown a timer and their score. The board should have buttons that light up and your job as the user is to press the lit up buttons, if the user presses a lit up button, then they score a point and a new button is lit up. The user must push their hand-eye coordination to score as many points as possible before the timer runs out. This allows them to have personal records to aim to beat, benchmarking their improvement.