module top_module(
input clk,
input load,
input [255:0] data,
output [255:0] q );
wire [3:0]b;
wire [8:0] i;
always@(posedge clk) begin
if(load) q<=data;
else begin
for(i=0;i<=255;i++) begin
//角
if(i==0) b=q[1]+q[16]+q[17]+q[240]+q[241]+q[15]+q[31]+q[255];
else if(i==15) b=q[14]+q[30]+q[31]+q[0]+q[16]+q[255]+q[254]+q[240];
else if(i==240) b=q[224]+q[225]+q[241]+q[255]+q[239]+q[0]+q[1]+q[15];
else if(i==255) b=q[254]+q[239]+q[238]+q[240]+q[224]+q[15]+q[14]+q[0];
//边
else if(i%16==0)
b=q[i-16]+q[i-15]+q[i+1]+q[i+16]+q[i+17]+q[i-1]+q[i+15]+q[i+31];
else if(i<15)
b=q[i-1]+q[i+1]+q[i+15]+q[i+16]+q[i+17]+q[i+240]+q[i+239]+q[i+241];
else if(i>240)
b=q[i-1]+q[i+1]+q[i-15]+q[i-16]+q[i-17]+q[i-240]+q[i-239]+q[i-241];
else if((i+1)%16==0)
b=q[i-17]+q[i-16]+q[i-1]+q[i+16]+q[i+15]+q[i-15]+q[i-31]+q[i+1];
else
//其余
b=q[i-17]+q[i-16]+q[i-15]+q[i-1]+q[i+1]+q[i+15]+q[i+16]+q[i+17];
if(b==0||b==1) q[i]<=0;
else if(b==2) q[i]<=q[i];
else if(b==3) q[i]<=1;
else if(b>=4) q[i]<=0;
end
end
end
endmodule
出现loop循环跳不出的情况,原因是i设置的大小弄错了