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协议的更多相关文章

  1. 千兆以太网TCP协议的FPGA实现

    转自https://blog.csdn.net/zhipao6108/article/details/82386355 千兆以太网TCP协议的FPGA实现 Lzx 2017/4/20 写在前面,这应该 ...

  2. 第十六章 IIC协议详解+UART串口读写EEPROM

    十六.IIC协议详解+Uart串口读写EEPROM 本文由杭电网友曾凯峰根据小梅哥FPGA IIC协议基本概念公开课内容整理并最终编写Verilog代码实现使用串口读写EEPROM的功能. 以下为原文 ...

  3. 应聘linux/ARM嵌入式开发岗位

    **************************************************************** 因为发在中华英才和智联招聘没有人采我所以我 在这里发布我的个人简历希望 ...

  4. Verilog HDL那些事_建模篇笔记(实验八:键盘解码)

    1.PS2接口与协议时序图 对于PS2的接口来说,需要额外关注的是PIN5与PIN1,一个是时钟,一个是数据.PS2协议对数据的移位是“CLOCK下降沿”有效,其CLOCK的频率通常在10KHz左右. ...

  5. FPGA作为从机与STM32进行SPI协议通信---Verilog实现 [转]

    一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...

  6. FPGA设计千兆以太网MAC(2)——以太网协议及设计规划

    上篇该系列博文中通过MDIO接口实现了PHY芯片的状态检测,验证其已处于1000M 全双工工作模式.在设计MAC逻辑之前,要先清楚MAC与PHY之间的接口以及以太网协议细节,这样才能保证网络的兼容性. ...

  7. 基于FPGA的UART协议实现(通过线性序列机)

    //////////////////2018/10/15 更新源代码: 实现uart这东西其实早就写了,不过不太完善,对于一个完美主义者来说,必须解决掉它. 1.什么是UART?        通用异 ...

  8. SATA主机协议的FPGA实现之物理层设计

    SATA主机协议的FPGA实现之物理层设计   接上一篇文章,这里讲解SATA主机协议的物理层的实现过程. 下图是标准SATA协议文档中给出的物理层结构.可以看到它包含控制模块.时钟数据提取单元.同步 ...

  9. SATA主机协议的FPGA实现之准备工作

    SATA主机协议的FPGA实现之准备工作   从2月中旬准备开始,经过3个月的奋战,我的又一个项目--基于FPGA的固态硬盘读写控制电路,已经基本实现.由于实用资料的匮乏,以及项目本身颇具挑战性,这个 ...

随机推荐

  1. [LuoguP2147] [SDOI2008]洞穴勘测 (LCT维护连通性)

    题面 传送门:https://www.luogu.org/problemnew/show/P2147 Solution 这题...... 我们可以发现题目要求我们维护一个动态森林,而且只查询连通性.. ...

  2. Photoshop CC 习惯设置

    安装后,一般设置: 1.编辑--首选项--常规 2.一般更改内容为: 性能 内存使用情况在50%-80%之间 暂存盘:除去C盘意外的其他盘 单位和标尺:以px为单位 其他根据喜好设定!

  3. 自己常用的Content-Type几种值用法

    Content-Type 的值类型: application/json:消息主体是序列化后的 JSON 字符串 这里要注意的是 我在使用webapi,前台使用$.ajax的时候 假如我要传递的数据为 ...

  4. Java学习之路(一)——JDK的下载与安装

    (一).JDK是Java开发工具包 下载网址:https://www.oracle.com/java/technologies/javase-downloads.html (二).安装 下载JDK以后 ...

  5. 比特魔方原创,用十分钟在Cocos-BCX上发行了自己的NFT

    比特魔方原创 作者 | 第二个区块 出品 |比特魔方 NFT正在积累越来越多的共识.每看到人们讨论NFT,我隐约就能联想到2019年人们谈论DeFi的时候.隐约让我感到欠缺的是,相对2019年的DeF ...

  6. 你知道MySQL的LRU链表吗?

    相信大家对LRU链表是不陌生的,算是一种基础的数据结构! LRU:Least Recently Used 一.简述传统的LRU链表 LRU:Least Recently Used 相信大家对LRU链表 ...

  7. CSS之background——背景与渐变练习题

    1.单选题 将背景的绘制区域规定到内容框,应使用background-clip属性中的哪个属性值? A content-box B border-box C padding-box D none-bo ...

  8. ES2020 系列:可选链 "?." 为啥出现,我们能用它来干啥?

    可选链 "?." 可选链 ?. 是一种访问嵌套对象属性的安全的方式.即使中间的属性不存在,也不会出现错误. "不存在的属性"的问题 如果你才刚开始读此教程并学习 ...

  9. 《Spring Boot 实战纪实》之需求管理

    目录 前言 (思维篇)人人都是产品经理 1.需求文档 1.1 需求管理 1.2 如何攥写需求文档 1.3 需求关键点文档 2 原型设计 2.1 缺失的逻辑 2.2 让想法跃然纸上 3 开发设计文档 3 ...

  10. HDU100题简要题解(2070~2079)

    HDU2070 Fibbonacci Number 题目链接 Problem Description Your objective for this question is to develop a ...