HDLBits练习——More Circuits

HDLBits练习

Circuits-Sequential Logic-More Circuits

题1:Rule 90

module top_module(input clk,input load,input [511:0] data,output [511:0] q ); integer i;always@(posedge clk)beginif(load)q<=data;else beginq[0]<=q[1]^1'b0;q[511]<=q[510]^1'b0;for(i=1;i<511;i++)beginq[i]<=q[i+1]^q[i-1];endendend           
endmodule

题2:

module top_module(input clk,input load,input [511:0] data,output [511:0] q
); integer i;always@(posedge clk)beginif(load)q<=data;else beginq[0]<=~q[1] & q[0] | q[0];q[511]<=q[511] | q[511] & ~q[510] | ~q[511] & q[510];for(i=1;i<511;i++)beginq[i]<=~q[i+1] & q[i] | q[i] & ~q[i-1] | ~q[i] & q[i-1];endendend
endmodule

题3:Conway’s Game of Life 1616
//16
16的方阵q,q[k]的索引k 按二进制,前4位为行数,后4位为列数

module top_module(input clk,input load,input [255:0] data,output [255:0] q ); integer k;wire [3:0]i,j,i1,i2,j1,j2;wire [2:0] add;always@(posedge clk)beginif(load)q<=data;else beginfor (k=0;k<256;k++)begini=k[7:4];j=k[3:0];if(i==0)begini1=4'd15;i2=4'd1;endelse if(i==15)begini1=4'd14;i2=4'd0;endelse begini1=i-1'b1;i2=i+1'b1;endif(j==15)beginj1=4'd14;j2=4'd0;endelse if(j==0)beginj1=4'd15;j2=4'd1;endelse beginj1=j-1'b1;j2=j+1'b1;endadd=q[{i1,j1}] +q[{i1,j}] +q[{i1,j2}]+q[{i,j1}] +q[{i,j2}]+q[{i2,j1}]+q[{i2,j}]+q[{i2,j2}];case(add)3'd2:q[k]<=q[k];3'd3:q[k]<=1;default:q[k]<=0;endcaseendendend                    
endmodule


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部