HDLBits刷题记录——Conwaylife

导言

HDLBits网站More circuits中的Conwaylife即Game of life,由数学家John Conway创造。
之所以特别关注到这个题目,是因为某位同学曾拿这个游戏作为一门芯片设计课程的PJ。当时觉得生命游戏在众多坦克大战、走迷宫等小游戏中挺有新意,其实现程度比这个题目本身要复杂很多,比如精美的GUI和复杂的场景。

思路

题目告诉我们,这个16×16的细胞网格是一个toroid,可以理解为网格的四边连在了一起而没有边界。我的思路是将整个toroid展平成一个18×18的平面网格,用二维矩阵的方式来处理它。

  • 16×16的阵列不大不小,一个一个列出元素来还是有些麻烦的。用4×4的小阵列厘清边界关系,尤其是多出来的两行两列的元素是从哪里来的。
  • 扩展后的18×18的阵列与原来16×16阵列中的元素必须正确对应起来,比如扩展后阵列的[1][2]其实是原阵列的[0][1]号元素。

代码

module top_module(
    input clk,
    input load,
    input [255:0] data,
    output [255:0] q ); 
    
    integer i,m,n;
    reg [17:0] g_2d [17:0];
    reg [2:0] sum;
    // extend 16×16 toroid to 18×18 grid
    always@(*) begin
        g_2d

你可能感兴趣的:(verilog)