实验三:按键消抖

首先将按键消抖功能分成了两个模块,电平检查模块和10ms延迟模块。电平检测模块用来检测按键信号的变化(是否被按下),10ms延迟模块用来稳定电平检查模块的输入,进而稳定按键信号,防止其抖动而产生的信号跳变而影响输出。

设计思路:

    1.当电平检测模块检查到按键被按下(输入由高电平变为低电平),则拉高H2L_Sig电平,然后拉低。

2.10ms延迟模块,检测到H2L_Sig高电平,则对其进行10ms过滤,拉高输出。

3.当按键被释放,电平检测模块会拉高L2H_Sig电平,然后拉低。

4.10ms延迟模块,检测到L2H_Sig高电平,则对其进行10ms过滤,拉低输出。

电平检测模块:

1.需要一个100us的计数器,用来检测电平的输入,当输入电平信号持续时间等于100us,则电平检测模块接收这个信号的输入,然后给出相应的输出信号,这其中需要定义一个使能信号isEn,控制整个电平检测模块的输出,当输入电平信号持续时间满足要求时,isEn信号被置位,电平检测模块输出被使能,由于计数器模块不是用来产生一个固定的时间,在电平检测模块输出被使能的同时,计数器的数值可以不用复位。

2.对电平检测模块进行初始化,由于电平检测模块的功能是监测电平信号的跳变,因此,对于电平的变化需要两个信号来判断。

高电平到低电平:

H2L_F1存储当前输入引脚的电平信号Pin_In;

H2L_F2存储H2L_F1引脚的电平信号,即上一个时间段Pin_In的电平信号。

通过这两个信号(H2L_F1,H2L_F2)的运算,我们得到输入信号由高电平到低电平的跳变情况的计算式,然后直接反应到电平检测模块的输出上。

time

H2L_F1

H2L_F2

H2L_Sig

initial

1

1

0(初始化,输入引脚没有电平变化,则此信号结果为0)

T1

0

1

1(电平从高电平变为低电平,则此信号的结果为1)

T2

0

0

0(输入引脚的电平持续为低电平,输入信号没有从高到低的跳变,则此信号结果为0)

推导得出:H2L_Sig=(!H2L_F1)&H2L_F2;

低电平到高电平:

L2H_F1存储当前输入引脚的电平信号Pin_In;

L2H_F2存储L2H_F1引脚的电平信号,即上一个时间段Pin_In的电平信号。

通过这两个信号(L2H_F1,L2H_F2)的运算,我们得到输入信号由低电平到高电平的跳变情况的计算式,然后直接反应到电平检测模块的输出上。

time

L2H_F1

L2H_F2

L2H_Sig

initial

0

0

0(初始化,输入引脚没有电平变化,则此信号结果为0)

T1

1

0

1(电平从低电平变为高电平,则此信号的结果为1)

T2

1

1

0(输入引脚的电平持续为高电平,输入信号没有从低到高的跳变,则此信号结果为0)

推导得出:L2H_Sig=L2H_F1&(!L2H_F2);

10ms延时模块:

    1.10ms顾名思义需要有10ms的计数模块,计数器模块采用1ms+10ms架构,即先用计数器产生标准的1ms,然后当1ms计数完成后,10ms计数器加1,相当于一个进位。与先前控制LED灯不同的是,此计数模块引入了一个isCount量,用来控制整个计数器的计数。

    2.case结构,本人对于case模块的理解:通常用于多输入模块,需要处理的情况较多,但每种情况的处理方法清晰,固定。在使用case结构的过程中,通常(case0:)作为一个选择项,与菜单类似,它是通往其它case(case1:,case2:,casen:)的入口,同时本人也体会到使用此种结构的好处在于每当执行完其它case(case1:,case2:,casen:),都可以设定case(i),i=0来使其复位,回到最初的选择模式中。

Verilog HDL那些事_建模篇笔记(实验三:按键消抖)的更多相关文章

  1. Verilog HDL那些事_建模篇笔记(实验一,实验二)

    实验一:永远的流水灯 扫描频率配置为100Hz,即是说扫描周期为10ms.这里需要注意的是扫描周期的概念.流水灯嘛,顾名思义,扫描周期指的是流水灯扫一轮所需要的时间.听到说周期,就应该想到在建模的时候 ...

  2. Verilog HDL那些事_建模篇笔记(实验九:VGA驱动)

    1.了解VGA协议 VGA协议有5个输入信号,列同步信号(HSYNC Signal),行同步信号(VSYNC Signal),红-绿-蓝,颜色信号(RGB Signal). 一帧屏幕的显示是由行从上至 ...

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

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

  4. Verilog HDL那些事_建模篇笔记(实验七:数码管电路驱动)

    1.同步动态扫描 多个数码管的显示采用的是同步动态扫描方法,同步动态扫描指的是:行信号和列信号同步扫描,是一种并行操作. 2.数码管驱动电路实现思路      如果要求数码管显示我们想要的数字,首先需 ...

  5. 【黑金教程笔记之004】【建模篇】【Lab 03 消抖模块之一】—笔记

    设计思路: (1)       一旦检测到按键资源按下(从高电平到低电平),“电平检测模块”就会拉高H2L_Sig电平,然后拉低. (2)       “10ms延迟模块”检测到H2L_Sig高电平, ...

  6. 【黑金教程笔记之005】【建模篇】【Lab 04 消抖模块之二】—笔记

    实验四和实验三的区别在于输出.实验三是检测到由高到低的电平变化时就拉高输出,检测到由低到高的电平变化时就拉低输出.而实验四检测到由高到低的电平变化时产生一个100ms的高脉冲.当检测到由低到高的电平变 ...

  7. FPGA学习笔记(八)—— 状态机设计实例之独立按键消抖

    ###### [该随笔中部分内容转载自小梅哥] ######### 独立按键消抖自古以来在单片机和FPGA中都是个不可避免的问题,首先,解释一下什么叫做按键抖动,如图,按键在按下和松开的那个瞬间存在大 ...

  8. 按键消抖-----verilog

    实际系统中常用的按键大部分都是轻触式按键,如下图所示.该按键内部由一个弹簧片和两个固定触点组成,当弹簧片被按下,则两个固定触点接通,按键闭合.弹簧片松开,两个触点断开,按键也就断开了.根据这种按键的机 ...

  9. fpga Verilog hdl 按键消抖 部分程序讲解

    module debounce(clk_in,rst_in,key_in,key_pulse,key_state); input clk_in;//system clock input rst_in; ...

随机推荐

  1. 关于docker容器是怎样建立新的namespace的。

    最近博客收到了一封交流的私信,感谢您的关注:现在就我理解的docker建立容器时namespace的建立问题做一个 个人的回答: 一,从原理角度来讲: docker创建container,说白了就是l ...

  2. 安卓性能测试工具-GT,安测试

    GT: 是腾讯出品的一款APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE,  Integrated  Debug&Test  Environment).利用GT,仅凭一部 ...

  3. ubuntu卸载安装mysql

    安装(转自http://www.cnblogs.com/xz1024/p/5802637.html): deb安装: 一.下载MySQL 到mysql网站下载相应的mysql安装包,我的mysql-s ...

  4. WPF程序如何自定义启动窗口并传参

    首先,找到App.xaml,将Application标签中的StartupUri属性去掉; 然后可以在MainWindow.xaml.cs中重载构造函数,并添加自己想要的参数; 然后在App.xaml ...

  5. linux 下 C语言显示中文

    例如:tset.c int main() { printf("你好,世界\n"); retuen 0; } 编译时应该这样: iconv -f gb2312 -t utf8 tes ...

  6. DotNetBar 第2课,窗口设置 Ribbon Form 样式

    1. 新增 windows 窗体时,选 Ribbon Form 2. 窗体继承 Office2007RibbonForm 3. 设计窗口下面,删除 删除styleManager1  组件 窗口效果如下 ...

  7. maven - Eclipse构建maven项目

    前面的博文已经介绍了如何安装maven,本文将记录如何在Eclipse下构建maven项目. 一.Eclipse maven插件安装 关于安装Eclipse maven插件,网上有很多方法,这里推荐一 ...

  8. 自适应滤波原理及simulink

  9. 关于对CSS尺寸单位'em'的长期误解

    一直以来认为'em'是相对于父元素的字体大小. 直到今天学习移动WEB开发,重新复习css的尺寸大小时,惊奇发现:对em深深的误解了!!! 在CSS官网对em的解释实例是: a. h1{line-he ...

  10. JS对象实现随机满天小星星实例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...