HDLBits刷題記錄 Conwaylife

2021-10-16 13:19:26 字數 1546 閱讀 3871

hdlbits**more circuits中的conwaylife即game of life,由數學家john conway創造。

之所以特別關注到這個題目,是因為某位同學曾拿這個遊戲作為一門晶元設計課程的pj。當時覺得生命遊戲在眾多坦克大戰、走迷宮等小遊戲中挺有新意,其實現程度比這個題目本身要複雜很多,比如精美的gui和複雜的場景。

題目告訴我們,這個16×16的細胞網格是乙個toroid,可以理解為網格的四邊連在了一起而沒有邊界。我的思路是將整個toroid展平成乙個18×18的平面網格,用二維矩陣的方式來處理它。

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[0]

=;g_2d[17]

=;for(i =

1; i <

17; i +=

1) begin //note index starting point

g_2d[i]=;

endend

// judge every cell』s life

always@(posedge clk) begin

if(load) begin

q <= data;

endelse begin

for(m =

0; m <

16; m +=

1) begin: row

for(n =

0; n <

16; n +=

1) begin: col

sum = g_2d[m]

[n]+ g_2d[m]

[n+1

]+ g_2d[m]

[n+2

]+ g_2d[m+1]

[n]+ g_2d[m+1]

[n+2

]+ g_2d[m+2]

[n]+ g_2d[m+2]

[n+1

]+ g_2d[m+2]

[n+2];

case

(sum)

3'b010: q[

16*m+n]

<= q[

16*m+n];3

'b011: q[16*m+n] <= 1'b1;

default

: q[

16*m+n]

<=

1'b0;

endcase

endend

endend

endmodule

本次練習學習或加強的知識點:

OI刷題記錄

2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...

面試刷題記錄

寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...

刷題記錄 2015 11 14

現在每天做的題都記錄一下,免得不知道自己在幹什麼。poj2406 用next陣列的定義求迴圈節 poj3261 字尾陣列 題 spoj705 同上,這題我wa了幾次,結果發現 我以為字串只有大寫字母,其實有小寫。如下 poj2406 author duyixian date 2015 11 14 1...