Lemmings4

Although Lemmings can walk, fall, and dig, Lemmings aren't invulnerable. If a Lemming falls for too long then hits the ground, it can splatter. In particular, if a Lemming falls for more than 20 clock cycles then hits the ground, it will splatter and cease walking, falling, or digging (all 4 outputs become 0), forever (Or until the FSM gets reset). There is no upper limit on how far a Lemming can fall before hitting the ground. Lemmings only splatter when hitting the ground; they do not splatter in mid-air.

Extend your finite state machine to model this behaviour.

module top_module(
    input clk,
    input areset,    // Freshly brainwashed Lemmings walk left.
    input bump_left,
    input bump_right,
    input ground,
    input dig,
    output walk_left,
    output walk_right,
    output aaah,
    output digging ); 
    
    reg [2:0]state,next_state;
    parameter left=3'd0,right=3'd1,leftfall=3'd2,rightfall=3'd3,leftdig=3'd4,rightdig=3'd5,kaca=3'd6;
    reg [4:0] j;
    
    always@(posedge clk or posedge areset)
        begin
            if(areset)
                state<=left;
            else
                state<=next_state;
        end
     
    always@(posedge clk or posedge areset) begin
        if(areset) begin
            j <= 5'd0;
        end
        else if(j==5'd20)
            j<=j;
        else if((state == leftfall) || (state == rightfall)) begin 
            j <= j + 1'b1;
        end
        else
            j<=5'd0; 
    end
       
    always@(*)
        case(state)
            left:begin
                if(~ground)
                    next_state=leftfall;
                else if(dig)
                    next_state=leftdig;
                else if(bump_left)
                    next_state=right;
                else
                    next_state=state;
            end
            right:begin
                if(~ground)
                    next_state=rightfall;
                else if(dig)
                    next_state=rightdig;
                else if(bump_right)
                    next_state=left;
                else
                    next_state=state;
            end
            leftfall:begin
                if(ground)
                    begin
                        if(j==5'd20)
                            next_state=kaca;
                        else
                            next_state=left;
                    end
                else
                    next_state=state;
            end
                
            rightfall:begin  
                if(ground)
                    begin
                        if(j==5'd20)
                            next_state=kaca;
                        else
                            next_state=right;
                    end
                else
                    next_state=state;
            end
            leftdig:begin
                if(~ground)
                    next_state=leftfall;
                else
                    next_state=state;
            end
            rightdig:begin
                if(~ground)
                    next_state=rightfall;
                else
                    next_state=state;
            end
            kaca:next_state=state;
        endcase
    
    assign walk_left=(state==left);
    assign walk_right=(state==right);
    assign aaah=((state==leftfall)||(state==rightfall));
    assign digging=((state==leftdig)||(state==rightdig));
    
endmodule

不太理解的一点:

always@(posedge clk or posedge areset) begin
        if(areset) begin
            j <= 5'd0;
        end
        else if((state == leftfall) || (state == rightfall)) begin 
            j <= j + 1'b1;
        end
        else
            j<=5'd0; 
    end

如果去掉j==20的时候 j<=j ,在下面的rightfall和leftfall中判断条件改为j>=20,为什么是错误的。求解

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
4S店客户管理小程序-毕业设计,基于微信小程序+SSM+MySql开发,源码+数据库+论文答辩+毕业论文+视频演示 社会的发展和科学技术的进步,互联网技术越来越受欢迎。手机也逐渐受到广大人民群众的喜爱,也逐渐进入了每个用户的使用。手机具有便利性,速度快,效率高,成本低等优点。 因此,构建符合自己要求的操作系统是非常有意义的。 本文从管理员、用户的功能要求出发,4S店客户管理系统中的功能模块主要是实现管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理,用户客户端:首页、车展、新闻头条、我的。门店客户端:首页、车展、新闻头条、我的经过认真细致的研究,精心准备和规划,最后测试成功,系统可以正常使用。分析功能调整与4S店客户管理系统实现的实际需求相结合,讨论了微信开发者技术与后台结合java语言和MySQL数据库开发4S店客户管理系统的使用。 关键字:4S店客户管理系统小程序 微信开发者 Java技术 MySQL数据库 软件的功能: 1、开发实现4S店客户管理系统的整个系统程序; 2、管理员服务端;首页、个人中心、用户管理、门店管理、车展管理、汽车品牌管理、新闻头条管理、预约试驾管理、我的收藏管理、系统管理等。 3、用户客户端:首页、车展、新闻头条、我的 4、门店客户端:首页、车展、新闻头条、我的等相应操作; 5、基础数据管理:实现系统基本信息的添加、修改及删除等操作,并且根据需求进行交流信息的查看及回复相应操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值