目录

序言

原题传送

题目解释

我的设计


序言

上篇博客:

HDLBits 系列(28)PS/2 mouse protocol(PS/2 packet parser)

只对PS/2 mouse protocol的数据流检测到了之后输出检测到了的标志done,但是没有输出检测数据,这一篇博客接着设计。

原题传送

Fsm ps2data

Now that you have a state machine that will identify three-byte messages in a PS/2 byte stream, add a datapath that will also output the 24-bit (3 byte) message whenever a packet is received (out_bytes[23:16] is the first byte, out_bytes[15:8] is the second byte, etc.).

out_bytes needs to be valid whenever the done signal is asserted. You may output anything at other times (i.e., don't-care).

题目解释

有几个重点是:

done有效的时候要输出接受数据,这就意味着在状态DONE时刻,不能在改变输出数据了,然而,在DONE状态下有可能输入的数据是第一个字节,所以怎么办呢?

我的设计

那就将输入数据和状态延迟一拍吧,在D2状态里面处理,我的设计如下:

module top_module(input clk,input [7:0] in,input reset,    // Synchronous resetoutput [23:0] out_bytes,output done); //reg [1:0] state, next_state;localparam D1 = 0, D2 = 1, D3 = 2, DONE = 3;// State transition logic (combinational)always@(*) begincase(state)D1: beginif(in[3] == 1) next_state = D2;else next_state = D1;endD2: beginnext_state = D3;endD3: beginnext_state = DONE;endDONE: beginif(in[3] == 1) next_state = D2;else next_state = D1;enddefault: beginnext_state = D1;endendcaseendalways@(posedge clk) beginif(reset) state <= D1;else state <= next_state;end// New: Datapath to store incoming bytes.reg [7:0] in_r;reg [1:0] state_r;always@(posedge clk) beginif(reset) begin in_r <= 0;state_r <= D1;endelse beginstate_r <= state; in_r <= in;endendreg [23:0] out_bytes_mid;always@(*) begincase(state)D1: beginif(in[3] == 1) out_bytes_mid[23:16] = in;endD2: beginif(state_r == DONE && in_r[3] == 1) beginout_bytes_mid[15:8] = in;out_bytes_mid[23:16] = in_r;endelse out_bytes_mid[15:8] = in;endD3: beginout_bytes_mid[7:0] = in;endDONE: begin;enddefault: begin;endendcaseendassign out_bytes = (done == 1)? out_bytes_mid:'bx;assign done = (state == DONE)?1:0;endmodule

测试成功。

HDLBits 系列(29)PS/2 mouse protocol(PS/2 packet parser and datapath)相关推荐

  1. HDLBits 系列(28)PS/2 mouse protocol(PS/2 packet parser)

    目录 原题复现 ​ 审题 状态转移图 我的设计 原题复现 原题传送 The PS/2 mouse protocol sends messages that are three bytes long. ...

  2. HDLBits 系列(0)专题目录

    本篇博文是近来总结HDLBits系列的目录,点击蓝色字体即可进入查看具体内容. HDLBits 系列(1)从HDLBits中获取灵感,整顿自己,稳步前行 HDLBits 系列(2)如何避免生成锁存器? ...

  3. HDLBits 系列(8)——Sequential Logic(Finite State Machines(一))

    目录 3.2 Sequential Logic 3.2.5 Finite State Machines 1. Simple FSM 1 (asynchronous reset) 2. Simple F ...

  4. HDLBits-Circuits学习小结(八)有限状态机进阶(Lemmings、Onehot FSM、PS/2 packet parser)

    目录 1 旅鼠游戏 1.1 Lemmings1 1.2 Lemmings2 1.3 Lemmings3 1.4 Lemmings4 2 onehot FSM 3 PS/2 packet parser ...

  5. HDLBits 系列(31)Serial Receiver and Datapath

    目录 序言 原题复现 我的设计 序言 上篇博文: HDLBits 系列(30)Serial Receiver 写了串行接收器如何接收8位串行数据,正确接收8位串行数据后给一个接收完毕标志信号,这篇博文 ...

  6. 春节大礼包!——海多PS游戏下载及PS模拟器EPSXE VGS设置指南

    春节大礼包!--海多PS游戏下载及PS模拟器EPSXE & VGS设置指南 1.运行epsxe 如果你还没有的话,首先你要下载一个(废话-_-b),最新版是1.52(推荐汉化版).一般都是ZI ...

  7. SAP PM入门系列29 - IW65 Display Activities

    SAP PM入门系列29 - IW65 Display Activities 事务代码 IW65是SAP PM模块里的一个标准报表.这个报表用于查询PM 维修通知单里的Activities. 不过,这 ...

  8. #ps –ef_常用Linux中ps命令学习及ps aux与ps -ef的区别

    工作中常用的是 ps aux查找相关程序进程,上次课程中看到别人用的是ps -ef查找程序进程,看看这两者的区别.首先查看man ps的解释: 最后两段表示在系统中查看每个进程的标准语法和BSD风格的 ...

  9. linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下

    linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head linux下获取占用 ...

最新文章

  1. 脉冲神经网络在目标检测的首次尝试,性能堪比CNN | AAAI 2020
  2. C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日
  3. Git 忽略提交 .gitignore
  4. Active Record 数据验证
  5. link2001错误无法解析外部符号metaObject
  6. 取得数组下标_《零基础C++入门教程》——(8)搞定二维数组与循环嵌套
  7. 深度学习笔记--多层感知器以及BP算法
  8. Android P 消息
  9. 置顶信息[置顶] 常用日常英语缩写
  10. VIOS 的一些常用命令
  11. Java实现模拟银行系统
  12. 乌鲁木齐高新区大数据产业首个惠农项目落地
  13. 2021-10-18word2vec训练过程
  14. 【原译】一个可定制的WPF任务对话框
  15. MySQL日期时间函数总结
  16. 重磅丨继人工智能大会后《AIOS链上人工智能白皮书》正式发布,核心应用即将开启
  17. lcd1602显示自己的学号和姓名拼音的c语言程序,LCD1602显示字符.doc
  18. linux安装远程桌面管理工具xrdp
  19. 入门神经网络优化算法(五):一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)
  20. 【windows】关于修改hosts文件的解释,hosts的作用,hosts文件的位置.....

热门文章

  1. document对象详解
  2. deepin linux 命令行_ThinkPad E480安装Manjaro-Deepin备忘录
  3. Ajax全局加载框(Loading效果)的配置
  4. java中关于DecimalFormat四舍五入的用法
  5. 公司内部 action调用持久层规范
  6. php功能与特性,PHP 6将实现的8个特性和功能
  7. lotus php,LotusPhp框架目录_PHP教程
  8. oracle数据库风险链接,数据库的风险主要来源
  9. 监控操作系统和服务器,监控操作系统和服务器
  10. 两个大功率肖特基二极管的V-A特性