HDLBits 系列(29)PS/2 mouse protocol(PS/2 packet parser and datapath)
目录
序言
原题传送
题目解释
我的设计
序言
上篇博客:
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)相关推荐
- HDLBits 系列(28)PS/2 mouse protocol(PS/2 packet parser)
目录 原题复现 审题 状态转移图 我的设计 原题复现 原题传送 The PS/2 mouse protocol sends messages that are three bytes long. ...
- HDLBits 系列(0)专题目录
本篇博文是近来总结HDLBits系列的目录,点击蓝色字体即可进入查看具体内容. HDLBits 系列(1)从HDLBits中获取灵感,整顿自己,稳步前行 HDLBits 系列(2)如何避免生成锁存器? ...
- 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 ...
- 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 ...
- HDLBits 系列(31)Serial Receiver and Datapath
目录 序言 原题复现 我的设计 序言 上篇博文: HDLBits 系列(30)Serial Receiver 写了串行接收器如何接收8位串行数据,正确接收8位串行数据后给一个接收完毕标志信号,这篇博文 ...
- 春节大礼包!——海多PS游戏下载及PS模拟器EPSXE VGS设置指南
春节大礼包!--海多PS游戏下载及PS模拟器EPSXE & VGS设置指南 1.运行epsxe 如果你还没有的话,首先你要下载一个(废话-_-b),最新版是1.52(推荐汉化版).一般都是ZI ...
- SAP PM入门系列29 - IW65 Display Activities
SAP PM入门系列29 - IW65 Display Activities 事务代码 IW65是SAP PM模块里的一个标准报表.这个报表用于查询PM 维修通知单里的Activities. 不过,这 ...
- #ps –ef_常用Linux中ps命令学习及ps aux与ps -ef的区别
工作中常用的是 ps aux查找相关程序进程,上次课程中看到别人用的是ps -ef查找程序进程,看看这两者的区别.首先查看man ps的解释: 最后两段表示在系统中查看每个进程的标准语法和BSD风格的 ...
- 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下获取占用 ...
最新文章
- 脉冲神经网络在目标检测的首次尝试,性能堪比CNN | AAAI 2020
- C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日
- Git 忽略提交 .gitignore
- Active Record 数据验证
- link2001错误无法解析外部符号metaObject
- 取得数组下标_《零基础C++入门教程》——(8)搞定二维数组与循环嵌套
- 深度学习笔记--多层感知器以及BP算法
- Android P 消息
- 置顶信息[置顶] 常用日常英语缩写
- VIOS 的一些常用命令
- Java实现模拟银行系统
- 乌鲁木齐高新区大数据产业首个惠农项目落地
- 2021-10-18word2vec训练过程
- 【原译】一个可定制的WPF任务对话框
- MySQL日期时间函数总结
- 重磅丨继人工智能大会后《AIOS链上人工智能白皮书》正式发布,核心应用即将开启
- lcd1602显示自己的学号和姓名拼音的c语言程序,LCD1602显示字符.doc
- linux安装远程桌面管理工具xrdp
- 入门神经网络优化算法(五):一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)
- 【windows】关于修改hosts文件的解释,hosts的作用,hosts文件的位置.....
热门文章
- document对象详解
- deepin linux 命令行_ThinkPad E480安装Manjaro-Deepin备忘录
- Ajax全局加载框(Loading效果)的配置
- java中关于DecimalFormat四舍五入的用法
- 公司内部 action调用持久层规范
- php功能与特性,PHP 6将实现的8个特性和功能
- lotus php,LotusPhp框架目录_PHP教程
- oracle数据库风险链接,数据库的风险主要来源
- 监控操作系统和服务器,监控操作系统和服务器
- 两个大功率肖特基二极管的V-A特性