因为这道题我没看懂他左右中跟下一个值得关系,因此我通过真值表卡诺图的方式建立起逻辑关系式如For循环中所示。
然后由于q[0]和q[511]是特殊情况,因此单独列出来。
q[0]这段语句可以不要,但是q[511]需要保留
module top_module(
input clk,
input load,
input [511:0] data,
output [511:0] q
);
always@(posedge clk)begin
if(load) q<= data;
else begin
q[0]<=q[0];
for(int i =1;i<511;i++)begin
q[i]<=(~q[i-1]&q[i])|(q[i-1]&~q[i])|(q[i-1]&~q[i+1]);
end
q[511]<=(q[511]&~q[510])|(~q[511]&q[510])|q[510];
end
end
endmodule