module top_module (
input clk,
input L,
input r_in,
input q_in,
output reg Q);
wire d0,d1,d2,q0,q1;
mux m0(.r(r_in),.q(q_in),.l(L),.d(d0));
dff dd0(.d(d0),.clk(clk),.q(q0));
mux m1(.r(r_in),.q(q0),.l(L),.d(d1));
dff dd1(.d(d1),.clk(clk),.q(q1));
mux m2(.r(r_in),.q(q_in^q1),.l(L),.d(d2));
dff dd2(.d(d2),.clk(clk),.q(Q));
endmodule
module mux(input r,q,l,output d);
always@(*)begin
case (l)
0:d=q;
1:d=r;
endcase
end
endmodule
module dff(input d,clk,output q);
always@(posedge clk)begin
q <= d;
end
endmodule
结果与答案有点出入,不知道是哪一步错了。