![]() The number of frames to skip is chosen using SW. 60Hz (0 frames skipped), 30Hz (1 frame skipped per frame calculated), 20Hz (2 frames skipped), 15Hz (3 frames skipped), and so on. The control Module allows the rate of calculation to be controlled. This keeps the calculation and VGA in sync. ![]() The control module triggers all of the columns to calculate a row in parallel the moment the VGA module finishes rendering a row. The control module is the only module the columns directly interact with. I also have a larger control module that controls and synchronizes these columns. I picked 8 because it uses the M4K blocks efficiently (one per column), and the X grid location can be easily split into a column reference and location within the column (highest bits and lowest 3 bits, respectively).Įach column contains the logic to do calculations, and a state machine that will calculate a given row when triggered. I split the grid up into columns, 8 cells wide. They can also be made highly parallel using one block per parallel unit: Parallelization High Level Design Memoryĭue to the speed requirements, I choose to use M4K blocks, as they are dual ported (both the VGA and my Hardware can read/write) and fast. The game of life is much more interesting if it is interactive. More on this in the next section.Īlso, user interactivity was a major consideration, but ultimately didn't get implemented due to technical difficulties. My design uses massive parallelization to achieve the required speeds, and is more than capable of faster. 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). However, this poses the first and largest design hurdle: Updating that resolution at that rate requires over 18 million updates per second! This leaves just a few clock cycles per cell for updating. This would be full VGA, and updated as fast as the monitor can display the grid. The main goal of this project was to implement Conway's game of life on a grid of 640x480 cells, running at 60Hz. This project implements Conway's game of life on an Altera Cyclone II FPGA using a DE2 development board, at full VGA resolution. It's a game that highlights the beauty of mathematical patterns and invites players to marvel at the interplay of order and chaos in a virtual world.Conway's game of life is a 2D cellular automaton. While Conway's Game of Life here on SilverGames doesn't involve direct player interaction, it captivates with its simplicity, elegance, and ability to simulate complex behaviors. It's a game of exploration and observation, as players witness the intricate and sometimes unexpected patterns that emerge from simple rules. In Conway's Game of Life, players can observe the evolution of different patterns and experiment with initial configurations to see how they affect the outcome. The game is often used as a tool for studying complex systems and exploring emergent behavior. These rules give rise to fascinating patterns and behaviors that unfold over time. The rules of the game are simple: based on the status of neighboring cells, each cell in the grid will either survive, die, or be born in the next generation. The game is played on a grid of cells, and each cell can be either alive or dead. It is a zero-player game, meaning that the evolution of the game is determined solely by its initial configuration. Conway's Game of Life is a classic cellular automaton and simulation game created by mathematician John Horton Conway.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |