always @(posedge clk) begin // 描述当前状态 if (rst == 1'b1) begin status <= 2'b00; endelsebegin status <= nextstatus; end end
always @(*) begin // 描述状态转移 case (status) 2'b00 : nextstatus <= 2'b01; 2'b01 : nextstatus <= 2'b10; 2'b10 : nextstatus <= 2'b00; endcase end
always @(*) begin case (status) 2'b00 : begin an = 3'b001; result = num[3:0]; end 2'b01 : begin an = 3'b010; result = num[7:4]; end 2'b10 : begin an = 3'b100; result = num[11:8]; end endcase end