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...