ECE 5760: Wireworld and Conway's Game of Life

By Aidan McNay and Thomas Figura

HPS Program Design

For this project, the group wanted to keep as much work as possible onto the FPGA (expecially the mouse interface), only using the HPS when necessary. When completing the project, we identified three things that the HPS should handle:

The first two items are crucial to the end project that we wanted to design (a project that would be able to load and save a Wireworld design). While the third item could have been implemented with the various switches on the DE1-SoC, the group decided it was easier and cleaner to specify update rate through the terminal.

To go implement these three features, 9 PIO ports were added to the system connecting the ARM HPS to the FPGA:

These PIOs can be used to achieve the above goals:

Even though the HPS is now able to access FPGA memory correctly the topic of how to format this data comes into play. To determine how to format the data properly the group looked towards the the Wireworld Processor. We used the same format scheme, for ease of re-using their file: state is stored in a text file with the .wi extension, which uses a special character to denote each one of the four possible states. The four characters determined based from the processor file are:

With this formatting scheme, it was then simple to convert the data from resp_val into the desired character to store in a file, as well as to translate a character into the state value to be put on req_val for writing.