FPGA PS2协议
VerilogHDL那些事儿_建模篇(黑金FPGA开发板配套教程)
作者:akuei2
说明:参照该书将部分程序验证学习一遍
学习时间:2014年5月3号
主要收获:
1. 对PS2接口有初步了解;
2. 编码键盘和非编码键盘;
3. 通码和断码。
PS2相关知识:
1. PS2接口

2. PS2协议对数据的读取,是"下降沿有效"。数据总共有11位,起始位(1)、数据位(8)、奇偶校验位(1)和停止位(1)。

3. 编码键盘与非编码键盘
编码键盘本身带有实现接口主要功能所需的硬件电路,不仅能自动栓测被按下的键并完成去抖动防串键等功能,而且能提供与被按键功能对应的键码(如ASCⅡ码)送往CPU;非编码键盘只简单的提供按键开关的行列矩阵,有关键的识别,键码的输入与确定,以及去抖动等功能场由软件完成。
4. 通码和断码
①通码:按下某按键;
②断码:释放某按键。
当按下按键"A"的时候,就会每秒产生大约10个通码"0X1C";在释放的时候,就会产生断码"0XF0 0X1C"。
5. RTL原理图

6. 电平检测模块detect_module和PS2解码模块ps2_detect_module
电平检测模块detect_module
module detect_module
(
CLK, RSTn,
PS2_CLK_Pin_In,
H2L_Sig
);
input CLK;
input RSTn;
input PS2_CLK_Pin_In;
output H2L_Sig;
/**************************/
reg H2L_F1;
reg H2L_F2;
always @ ( posedge CLK or negedge RSTn )
if( !RSTn )
begin
H2L_F1 <= 1'b1;
H2L_F2 <= 1'b1;
end
else
begin
H2L_F1 <= PS2_CLK_Pin_In;
H2L_F2 <= H2L_F1;
end
/****************************/
assign H2L_Sig = H2L_F2 & !H2L_F1;
/****************************/
endmodule
PS2解码模块ps2_detect_module
module ps2_decode_module
(
CLK, RSTn,
H2L_Sig, PS2_Data_Pin_In,
PS2_Data, PS2_Done_Sig
);
input CLK;
input RSTn;
input H2L_Sig;
input PS2_Data_Pin_In;
output [7:0]PS2_Data;
output PS2_Done_Sig;
/*******************************/
reg [7:0]rData;
reg [4:0]i;
reg isShift;
reg isDone;
always @ ( posedge CLK or negedge RSTn )
if( !RSTn )
begin
rData <= 8'd0;
i <= 5'd0;
isDone <= 1'b0;
end
else
case( i )
5'd0:
if( H2L_Sig ) i <= i + 1'b1;
4'd1, 4'd2, 4'd3, 4'd4, 4'd5, 4'd6, 4'd7, 4'd8:
if( H2L_Sig ) begin i <= i + 1'b1; rData[ i-1 ] <= PS2_Data_Pin_In; end
5'd9, 5'd10:
if( H2L_Sig ) i <= i + 1'b1;
5'd11:
if( rData == 8'hf0 ) i <= 5'd12;
else i <= 5'd23;
5'd12, 5'd13, 5'd14, 5'd15, 5'd16, 5'd17, 5'd18, 5'd19, 5'd20, 5'd21, 5'd22:
if( H2L_Sig ) i <= i + 1'b1;
5'd23:
begin i <= i + 1'b1; isDone <= 1'b1; end
5'd24:
begin i <= 5'd0; isDone <= 1'b0; end
endcase
/************************************/
assign PS2_Data = rData;
assign PS2_Done_Sig = isDone;
/*************************************/
endmodule
FPGA PS2协议的更多相关文章
- 千兆以太网TCP协议的FPGA实现
转自https://blog.csdn.net/zhipao6108/article/details/82386355 千兆以太网TCP协议的FPGA实现 Lzx 2017/4/20 写在前面,这应该 ...
- 第十六章 IIC协议详解+UART串口读写EEPROM
十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...
- 应聘linux/ARM嵌入式开发岗位
**************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...
- Verilog HDL那些事_建模篇笔记(实验八:键盘解码)
1.PS2接口与协议时序图 对于PS2的接口来说,需要额外关注的是PIN5与PIN1,一个是时钟,一个是数据.PS2协议对数据的移位是“CLOCK下降沿”有效,其CLOCK的频率通常在10KHz左右. ...
- FPGA作为从机与STM32进行SPI协议通信---Verilog实现 [转]
一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...
- FPGA设计千兆以太网MAC(2)——以太网协议及设计规划
上篇该系列博文中通过MDIO接口实现了PHY芯片的状态检测,验证其已处于1000M 全双工工作模式.在设计MAC逻辑之前,要先清楚MAC与PHY之间的接口以及以太网协议细节,这样才能保证网络的兼容性. ...
- 基于FPGA的UART协议实现(通过线性序列机)
//////////////////2018/10/15 更新源代码: 实现uart这东西其实早就写了,不过不太完善,对于一个完美主义者来说,必须解决掉它. 1.什么是UART? 通用异 ...
- SATA主机协议的FPGA实现之物理层设计
SATA主机协议的FPGA实现之物理层设计 接上一篇文章,这里讲解SATA主机协议的物理层的实现过程. 下图是标准SATA协议文档中给出的物理层结构.可以看到它包含控制模块.时钟数据提取单元.同步 ...
- SATA主机协议的FPGA实现之准备工作
SATA主机协议的FPGA实现之准备工作 从2月中旬准备开始,经过3个月的奋战,我的又一个项目--基于FPGA的固态硬盘读写控制电路,已经基本实现.由于实用资料的匮乏,以及项目本身颇具挑战性,这个 ...
随机推荐
- JavaWeb项目问题记录
模板 [遇到的问题] [时间] [原因] [解决方案] [排查思路及方式] 思路: 1) 2) [遇到的问题] 品优购项目中运营商页面查询广告信息是,无法正常查询,错误如下: Failed to lo ...
- 841. Keys and Rooms —— weekly contest 86
题目链接:https://leetcode.com/problems/keys-and-rooms/description/ 简单DFS time:9ms 1 class Solution { 2 p ...
- Ubuntu17.10 React Native 环境搭建
React Native 环境搭建 环境:ubuntu17.10 安装依赖 必须安装的依赖有:Node.React Native 命令行工具以及 JDK 和 Andriod Studio. 安装nod ...
- 左值 lvalue,右值 rvalue 和 移动语义 std::move
参考文章: [1] 基础篇:lvalue,rvalue和move [2] 深入浅出 C++ 右值引用 [3] Modern CPP Tutorial [4] 右值引用与转移语义 刷 Leetcode ...
- linux下的终端利器----tmux
转:tmux 是指通过一个终端登录远程主机并运行后,在其中可以开启多个控制台的终端复用软件.类似GNU Screen,但来自于OpenBSD,采用BSD授权.使用它最直观的好处就是,通过一个终端登录远 ...
- JXLS2.4导出Excel
1.添加依赖:http://mvnrepository.com/artifact/org.jxls <dependency> <groupId>org.jxls< ...
- 02、Spring-HelloWorld
0. 环境准备 1) jar包 jar包我会帮大家准备好的,所以不用担心找不到Jar包 链接:https://pan.baidu.com/s/1JJcYaspK07JL53vU-q-BUQ 提取码: ...
- 即时编译器 (JIT) 详解
最近听我的导师他们讨论Java的即时编译器(JIT),当时并不知道这是啥东西,所以就借着周末的时间,学习了一下! 一.概述 在部分的商用虚拟机(Sun HotSpot)中,Java程序最初是通过解释器 ...
- ATT&CK模型
Credential Dumping(凭证窃取) Dump credentials from LSASS(从LSASS中窃取凭证) 实现原理: This technique injects into ...
- centos8 mysql8遇到的问题
1.装了第一遍,连接没遇到问题,没注意是怎么装的:本机连,外部连都没碰到问题: 遇到了表名大小写的问题,改了配置文件my.cnf或/etc/my.cnf.d/mysql-server.cnf的文件 在 ...