欢迎光临散文网 会员登陆 & 注册

HDLBits (118) — 康威的生命游戏 16x16

2022-04-27 23:22 作者:僚机Wingplane  | 我要投稿

本题链接:

https://hdlbits.01xz.net/wiki/Conwaylife

Conway's Game of Life是一个二维单元格自动机。

“游戏”是在一个二维单元格网格上进行的,每个单元格要么是1(活的),要么是0(死的)。每个单元格都会根据其相邻单元格为1的数量更改状态:

  • 0-1 个相邻单元格为1: 单元格变成了0

  • 2 个相邻单元格为1: 单元格的状态不会改变

  • 3 个相邻单元格为1: 单元格变成了1

  • 4 个以上相邻单元格为1: 单元格变成了0

这个游戏是为一个无限网格而设计的。在这个电路中,我们将使用一个16x16的网格。为了让事情变得更有趣,我们将使用一个16x16的环形,其中两边环绕到网格的另一边。例如,角单元(0,0)有8个邻居: (15,1)、(15,0)、(15,15)、(0,1)、(0,15)、(1,1)、(1,0)和(1,15)。16x16的网格由一个长度为256的向量表示,其中每一行的16个单元格由一个子向量表示: q [15:0]是第0行,q [31:16]是第1行,等等(这个工具接受 SystemVerilog,因此如果您愿意,可以使用2D 向量)

  • load: 在下一个时钟沿将数据加载到 q 中,以加载初始状态。

  • q: 游戏的 16x16 当前状态,每个时钟周期更新。

游戏状态应该每时钟周期前进一个时间步。

John Conway,Mathematician和Methive Cellular Automaton游戏的创造者,在2020年4月11日因为Covid-19去世。

题目

提示:

一个易于理解并测试一些边界条件的测试用例是blinker 256'h7。它是第0行第0-2列中的3个单元格。它在一行3个单元格和一列3个单元格(在第1列、第15行、第0行和第1行)之间振荡。

答案

康威生命游戏

康威生命游戏(英语:Conway's Game of Life),又称康威生命棋,是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。

它最初于1970年10月在《科学美国人》杂志上马丁·葛登能的“数学游戏”专栏出现。

生命游戏中,对于任意细胞,规则如下:

  • 每个细胞有两种状态 - 存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动(如图,黑色为存活,白色为死亡)

  • 当前细胞为存活状态时,当周围的存活细胞低于2个时(不包含2个),该细胞变成死亡状态。(模拟生命数量稀少)

  • 当前细胞为存活状态时,当周围有2个或3个存活细胞时,该细胞保持原样。

  • 当前细胞为存活状态时,当周围有超过3个存活细胞时,该细胞变成死亡状态。(模拟生命数量过多)

  • 当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态。(模拟繁殖)

可以把最初的细胞结构定义为种子,当所有在种子中的细胞同时被以上规则处理后,可以得到第一代细胞图。按规则继续处理当前的细胞图,可以得到下一代的细胞图,周而复始。

参考内容:

 康威生命游戏 | 维基百科:

https://zh.wikipedia.org/wiki/康威生命游戏


HDLBits (118) — 康威的生命游戏 16x16的评论 (共 条)

分享到微博请遵守国家法律