module top_module (
input clk,
input reset, // Synchronous active-high reset
output [3:1] ena,
output [15:0] q);
assign ena[1]= q[3:0]==4'd9;
assign ena[2]= q[7:4]==4'd9 && ena[1];
assign ena[3]= q[11:8]==4'd9 && ena[2];
always@(posedge clk)begin
if (reset)
q=16'b0;
else begin
if (ena[1]) q[3:0] =0; else q[3:0]=q[3:0]+1;
if (ena[2]) q[7:4] =0; else q[7:4] = q[7:4]+ena[1];
if (ena[3]) q[11:8]=0; else q[11:8] = q[11:8]+ena[2];
if (q[15:12]==4'd9 && ena[3]) q[15:12]=0; else q[15:12] = q[15:12]+ena[3];
end
end
endmodule
ena 一开始写在always里 怎么调都对不上,但其实不影响Q的输出 -