module top_module (
input clk,
input x,
output z
);
reg [2:0]Q,D;
always@(posedge clk)begin
D[0]<=Q[0]^x;
Q[0]<=D[0];
D[1]<=(~Q[1])&x;
Q[1]<=D[1];
D[2]<=(~Q[2])|x;
Q[2]<=D[2];
end
assign z=~(|Q);
/* reg [2:0] q;
always@(posedge clk)
q <= {x|~q[2],x& ~q[1],x^q[0]};
assign z = ~(|q);*/
endmodule
我的代码和注释掉的代码是什么原因导致结果不一样,但是内在逻辑是一样的呀。
module top_module (
input clk,
input x,
output z
);
reg [2:0]Q=0;
wire [2:0] D;
always@(posedge clk)begin
Q[0]<=D[0];
Q[1]<=D[1];
Q[2]<=D[2];
end
assign z=~(|Q);
assign D[0]=Q[0]^x;
assign D[1]<=(~Q[1])&x;
assign D[2]<=(~Q[2])|x;
endmodule