​HDLBits网址:https://hdlbits.01xz.net/wiki/Main_Page

题目

In addition to walking left and right, Lemmings will fall (and presumably go "aaah!") if the ground disappears underneath them.

In addition to walking left and right and changing direction when bumped, when ground=0, the Lemming will fall and say "aaah!". When the ground reappears (ground=1), the Lemming will resume walking in the same direction as before the fall. Being bumped while falling does not affect the walking direction, and being bumped in the same cycle as ground disappears (but not yet falling), or when the ground reappears while still falling, also does not affect the walking direction.

Build a finite state machine that models this behaviour.

Module Declaration

module top_module(input clk,input areset,    // Freshly brainwashed Lemmings walk left.input bump_left,input bump_right,input ground,output walk_left,output walk_right,output aaah );

状态转移图

我的设计

根据题意,left和right的移动和上一题一样,但是除了在向左和向右行走以及在颠簸时改变方向外,当ground= 0时,旅鼠也会掉下来并说“ aaah!”。当地面重新出现时(ground= 1),旅鼠将恢复与跌倒之前相同的方向行走。跌倒时被撞击不会影响步行方向,并且与地面消失(但尚未坠落)的周期相同,或者当地面仍在坠落时重新出现时,也不会影响步行方向。代码如下:

module top_module(    input clk,    input areset,    // Freshly brainwashed Lemmings walk left.    input bump_left,    input bump_right,    input ground,    output walk_left,    output walk_right,    output aaah );    localparam left = 0;    localparam right = 1;    localparam fall_l = 2;    localparam fall_r = 3;        reg[1:0] state, next_state;    reg[2:0] out;        //state    always@(posedge clk or posedge areset) begin        if(areset)            state <= left;        else            state <= next_state;    end        //transition    always@(*)begin        case(state)            left:next_state=ground?(bump_left?right:left):fall_l;            right:next_state=ground?(bump_right?left:right):fall_r;            fall_l:next_state=ground?left:fall_l;            fall_r:next_state=ground?right:fall_r;        endcase    end        //out    always@(posedge clk or posedge areset) begin        if(areset)            out <= 3'b100;        else            case(next_state)                left: out <= 3'b100;                fall_l: out <= 3'b001;                right: out <= 3'b010;                fall_r: out <= 3'b001;            endcase    end        assign {walk_left, walk_right, aaah} = out;    endmodule

微信公众号

建立了一个微信公众号“Andy的ICer之路”,此公众号主要分享数字IC相关的学习经验,做公众号的目的就是记录自己的学习过程,很多东西回过头来可能就忘记了,为了记住知识和分享知识,希望自己可以保持更新,有兴趣的朋友可以关注一下!

Verilog专题(二十三)Lemmings2相关推荐

  1. Verilog专题(十三)计数器的级联实现1000分频的分频器

    HDLBits网址:https://hdlbits.01xz.net/wiki/Main_Page ​ 题目 From a 1000 Hz clock, derive a 1 Hz signal, c ...

  2. spring配置文件_SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件...

    SpringBoot入门建站全系列(二十三)配置文件优先级及自定义配置文件 一.概述 Spring Boot允许多种配置来源,官网是这样说的: Spring Boot使用一种非常特殊的Property ...

  3. (99)利用任务task实现单字节乘法功能,面试必问(二十三)(第20天)

    (99)利用任务task实现单字节乘法功能,面试必问(二十三)(第20天) 1 文章目录 1)文章目录 2)FPGA初级课程介绍 3)FPGA初级课程架构 4)利用任务task实现单字节乘法功能,面试 ...

  4. 云计算设计模式(二十三)——Throttling节流模式

    云计算设计模式(二十三)--Throttling节流模式 控制由应用程序使用,一个单独的租户或整个服务的一个实例的资源的消耗.这样的模式能够同意系统继续执行并满足服务水平协议.即使当添加需求的资源放置 ...

  5. iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3)

    iOS11开发教程(二十三)iOS11应用视图实现按钮的响应(3) 2.使用代码添加按钮实现的响应 使用代码添加的按钮,实现响应需要使用到addTarget(_:action:for:)方法,其语法形 ...

  6. 二十三种设计模式-六大原则

    二十三种设计模式 一.创建型: 单例模式.工厂模式.抽象工厂模式.原型模式.建造者模式: 二.结构型: 代理模式,装饰器模式.适配器模式.外观模式.组合模式.享元模式.桥梁模式: 三.行为型: 策略模 ...

  7. 观察者模式 Observer 发布订阅模式 源 监听 行为型 设计模式(二十三)

    观察者模式 Observer 意图 定义对象一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都得到通知并自动更新. 别名:依赖(Dependents),发布订阅(Publish-Su ...

  8. 结束处理程序——Windows核心编程学习手札之二十三

    结束处理程序 --Windows核心编程学习手札之二十三 使用SEH可以只关注程序要完成任务,而运行中发生的错误,系统将会发现并通知.Windows引入SHE是为了便于操作系统的开发,使用SHE所造成 ...

  9. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  10. 二十三、图的广度优先遍历

    二十三.图的广度优先遍历 文章目录 二十三.图的广度优先遍历 题目描述 解题思路 上机代码 题目描述 程序的输入是无向图的顶点序列和边序列(顶点序列以*为结束标志,边序列以-1,-1为结束标志).程序 ...

最新文章

  1. PMP知识点(二、整合管理)
  2. 关于CKeditor的个性应用设置 转
  3. JavaScript函数实现方式大总结
  4. 实现userdetails_Spring Security使用Hibernate实现自定义UserDetails
  5. MAC PHP7 如何disable xdebug
  6. java抠图边框颜色处理_java 实现抠图(项目应用场景:抠图章)
  7. 使用Delphi创建,解析,操纵XML文档
  8. js为lable和div赋值
  9. iOS NSURLSession 指南
  10. 用MySQL语言创建视图_mysql 创建视图
  11. 关于CUDA,cuDNN,TF,CUDA驱动版本兼容问题
  12. IEEE论文latex模板
  13. Excel数据分析—制作客户画像
  14. codeforces 863B Kayaking
  15. 算24(递归)--算法学习
  16. 更改谷歌浏览器的安装位置(此方法同样适用于把安在C盘的东西移到其它盘)
  17. 拉上谷歌高通 三星围攻苹果
  18. WIN10 64位系统下如何 进行OPC和DCOM配置
  19. 使用HTML5和CSS制作抖音首页
  20. 旧金山市交通系统遭勒索软件感染细节进一步公布

热门文章

  1. 5 Mysql数据保护
  2. linux swift开发环境,Linux平台swift语言开发学习环境搭建
  3. 河道水面漂浮物垃圾识别监测 yolov7
  4. Prometheus(一)——概述、监控体系、生态组件、部署
  5. 读 Linux 像读小说「GitHub 热点速览 v.22.03」
  6. c语言之圆的周长、面积、圆球的体积--改良版
  7. 阿里天池大赛-工业蒸汽预测
  8. 如何使用固定资产管理系统进行固定资产盘点?
  9. Typora基本使用及快捷键
  10. 行车路线(CCF201712-4)