Circuits--Sequential--Finite6

发布于:2024-05-03 ⋅ 阅读:(33) ⋅ 点赞:(0)

1. Lemmings2

module top_module (
    input clk,
    input areset,
    input bump_left,
    input bump_right,
    input ground,
    output walk_left,
    output walk_right,
    output aaah
);
    parameter left = 2'b0;
    parameter right = 2'b1;
    parameter hleft = 2'b10;
    parameter hright = 2'b11;
    reg[1:0] state;
    reg[1:0] next_state;
    wire[1:0] p;

    assign p = {bump_left,bump_right};

    always @(*) begin
        case(state)
            left: 
                begin
                    if (ground == 1'b0) begin
                        next_state = hleft;
                    end
                    else if ((p == 2'b10)||(p == 2'b11)) begin
                        next_state = right;
                    end
                    else begin
                        next_state = left;
                    end

                end
            right:
                begin
                    if (ground == 1'b0) begin
                        next_state = hright;
                    end
                    else if ((p == 2'b01)||(p == 2'b11)) begin
                        next_state = left;
                    end
                    else begin
                        next_state = right;
                    end
                
                end
            hleft:
                begin
                    if (ground == 1'b0) begin
                        next_state = hleft;
                    end
                    else begin
                        next_state = left;
                    end
                
                end
            hright:
                begin
                    if(ground == 1'b0)
                        next_state = hright;
                	else
                    	next_state = right;
 				end
        endcase
    end

    always @(posedge clk or posedge areset) begin
        if (areset) begin
            state <= left;
        end
        else state <= next_state;
    end

    assign walk_left = (state == left);
    assign walk_right = (state == right);
    assign aaah  =((state == hleft)|(state == hright));

endmodule


网站公告

今日签到

点亮在社区的每一天
去签到