运行一直是错的。。。为啥答案的波形倒计时到8之后突然又成10了啊。。。
`timescale 1ns/1ns

module triffic_light
    (
		input rst_n, //异位复位信号,低电平有效
        input clk, //时钟信号
        input pass_request,
		output wire[7:0]clock,
        output reg red,
		output reg yellow,
		output reg green
    );
    parameter S0 = 'd0;
    parameter S1 = 'd1;
    parameter S2 = 'd2;
    parameter S3 = 'd3;
    reg [5:0] cnt;
    reg [1:0] cstate, nstate;
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            cstate <= S0;
        end
        else begin
            cstate <= nstate;
        end
    end
    always@(*) begin
        case(cstate)
            S0: begin
                nstate = (cnt=='d9)?S1:S0;
            end
            S1: begin
                nstate = (cnt=='d4)?S2:S1;
            end
            S2: begin
                nstate = (cnt=='d59)?S0:S2;
            end
            default: begin
                nstate = S0;
            end
        endcase
    end
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            cnt <= 'd0;
        end
        else begin
            if(pass_request & (cstate==S3) & (cnt>='d10)) begin
                cnt <= 'd10;
            end
            else begin
                if(cstate!=nstate) begin
                    cnt <= 'd0;
                end
                else begin
                    cnt <= cnt + 'd1;
                end
            end
        end
    end
    assign clock = (cstate==S0)?('d10-cnt):((cstate==S1)?('d5-cnt):('d60-cnt));
    always@(posedge clk or negedge rst_n) begin
        if(!rst_n) begin
            {red,yellow,green} <= 'd0;
        end
        else begin
            {red,yellow,green} <= {(cstate==S0),(cstate==S1),(cstate==S2)};
        end
    end
endmodule