hdlbits中习题

img

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

img

我的代码和注释掉的代码是什么原因导致结果不一样,但是内在逻辑是一样的呀。


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