0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【紫光同创国产FPGA教程】【第六章】PDS下按键消抖实验

FPGA技术专栏 来源:芯驿电子科技 作者:芯驿电子科技 2021-02-04 13:24 次阅读

原创声明:

本原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处(alinx.com)。

适用于板卡型号:

PGL22G/PGL12G

1. 文档简介

本文主要讲解按键消抖原理及程序编写,程序实现按键按下后数字加1,并在led出来,通过PDS软件编译调试。

2. 实验环境

3. 实验原理

按键做为基本的人机输入接口,在很多电子设计中都能见到,由于机械特性,在按键按下或松开的时候,按键输入值是有抖动的,无论按下去是多平稳,都难以消除抖动,按键消抖方式有很多,本实验主要是通过FPGA计时来消抖。实验中设计了一个计数器,当按键输入有变化时,计时器清零,否则就累加,直到加到一个预定值(例如10ms),就认为按键稳定,输出按键值,这样就得到以后没有抖动的按键值。由于在很多地方需要用到按键下降沿或上升沿的检测,按键消抖模块直接集成了上升沿和下降沿检测的功能。

o4YBAGAY4guAEo5jAAAVvrZUY3w009.jpg

4. 程序设计

如下图所示,通过按键消抖后,在按键按下时,十进制计数器加1,通过数码管译码扫描后显示出来。

pIYBAGAY4gyABqtsAAAQEYgXsnE414.jpg

按键消抖部分的原理在上节已经讲过,按键消抖部分代码写的非常精炼,阅读起来稍显费解,建议结合仿真波形去读代码。在提供的例程文件下的src文件夹中同时提供了仿真文件key_debounce_tb.v,可以通过添加仿真文件来进行仿真观察代码中信号的变化

信号名称 方向 说明
clk in 时钟输入
rst_n in 异步复位输入,低复位
button_in in 按键输入
button_posedge out 消抖后按键上升沿,高有效,1个时钟周期
button_negedge out 消抖后按键下升沿,高有效,1个时钟周期
button_out out 消抖后按键输出

按键消抖模块(ax_debounce)端口

LED显示部分在本章不做说明,就例程中按键消抖模块“ax_debounce”模块做一些讲解,模块中通过了两级D触发器来寄存键值,只有当键值稳定时才将键值输出。我们可以看到在assign赋值语句中有一条“assign a_reset=(DFF1 ^ DFF2)”,学过数字电路的应该都知道“ ^ ”是异或运算符,运算符两边相同运算结果为0, 不同运算结果为1。在程序中DFF1和DFF2比较运算后的值通过“assign”赋给“a_reset”表示比较锁存键值的前后两级寄存器的值是否一致,只有前后两级寄存器的值一致,也就是a_reset的值为0时才表示当前锁存的键值没有变化。当计数器累加到“TIMER_MAX_VAL”,表示锁存的键值已经稳定可以输出。另外在模块中我们可以看到“{.......}”符号,要注意这可不是大括号,这表示位拼接运算符,其作用是将运算符内的两位,或是多位信号拼接在一起,具体用法请参考例程。

最后,程序中需要说明的是“button_posedge”和“button_negedge”两个输出信号,这是一种常用的上升沿和下降沿的采集方法,其描述的RTL视图如下:

o4YBAGAY4gyATkvyAAAXG_SbSYI531.jpg

当然还有其他的边沿检测电路的描述方法,但是其基本原理都是在逻辑时序电路里先将需要检测的信号作为输入非阻塞赋值给一个自定义寄存器,通过判断前后两级寄存器的值来判断是上升沿或是下降沿,由0 ->1 变化是上升沿,由1 -> 0变化是下降沿;

5. Modelsim仿真

$random生成随机数模拟按键抖动,按下按键对应输出二进制数据加一。按键的按下和释放经消抖后会得到一个稳定的下降沿和上升沿。仿真结果和部分仿真文件如下图所示:

pIYBAGAY4g2Ad0ZaAAB7a0vLSUo341.jpgo4YBAGAY4g2ADswDAAAnAWTR0EI572.jpg

button_negedge为按键经过消抖后按键的下降沿,button_posedge为按键经过消抖后按键的上升沿。

6. 实验现象

开发板上电后下载程序,按下“KEY2”按键,可以看到4个LED会变化,对应二进制数据,按一次加一,如果不经过消抖,是无法实现按一次加一的。

开发板操作

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1592

    文章

    21207

    浏览量

    592136
  • RTL
    RTL
    +关注

    关注

    1

    文章

    372

    浏览量

    58998
  • 按键
    +关注

    关注

    4

    文章

    220

    浏览量

    57321
  • PDS
    PDS
    +关注

    关注

    2

    文章

    28

    浏览量

    15168
  • 紫光同创
    +关注

    关注

    4

    文章

    67

    浏览量

    27230
收藏 人收藏

    评论

    相关推荐

    紫光同创国产FPGA教程】【第三章】按键检测实验

    通过按键检测实验,检测开发板的按键功能是否正常,了解硬件描述语言和FPGA的具体关系,学习PDS View RTL Schematic的使用
    的头像 发表于 02-02 13:22 4097次阅读
    【<b class='flag-5'>紫光</b><b class='flag-5'>同创</b><b class='flag-5'>国产</b><b class='flag-5'>FPGA</b>教程】【第三章】<b class='flag-5'>按键</b>检测<b class='flag-5'>实验</b>

    紫光同创国产FPGA教程】——(PGL22G第一)LED流水灯实验例程

    8 个用户按键(K1~K8),按键低电平有效,但按键时,IO 上的输入电压为低;当没有按按键
    发表于 01-02 18:04

    国产FPGA介绍-紫光同创

    紫光同创紫光集团旗下紫光国微的子公司,成立于2013年,有十余年可编程逻辑器件研发经历,布局覆盖高中低端FPGA产品。 早在2015年,
    发表于 01-24 10:45

    fpga教程之——按键

    电平,这次对按键进行操作则是对FPGA进行输入了。  2. 按键  2.1 按键输入原理  
    发表于 02-27 11:49

    数据采集光盘实例第一第六章

    数据采集光盘实例第一第六章
    发表于 06-28 21:02

    数据采集光盘实例第六章至第十二

    数据采集光盘实例第六章至第十二
    发表于 06-28 21:17

    【ALIENTEK 战舰STM32开发板】STM32开发指南--第六章 跑马灯实验

    第六章 跑马灯实验STM32最简单的外设莫过于IO口的高低电平控制了,本章将通过一个经典的跑马灯程序,带大家开启STM32之旅,通过本章的学习,你将了解到STM32的IO口作为输出使用的方法。在本章
    发表于 01-10 15:50

    求王庆利《单片机设计标准教程》第六章的一个函数!!

    在做一个设计,急需《单片机设计标准教程》里第六章 的I2C总线函数 #include“IIClib.h” 谁有帮忙拍张图片传一
    发表于 05-05 21:20

    《测控电路》习题完整参考答案(第六章

    《测控电路》习题完整参考答案(第六章
    发表于 05-07 11:36

    【视频教程】紫光同创FPGA教程@PDS软件使用流程

    【视频教程】紫光同创FPGA教程@PDS软件使用流程#本视频从新建工程、添加源文件、物理约束、下载配置文件介绍了Pango Design Suite快速入门及基本操作流程,展示Synt
    发表于 06-12 16:58

    从零开始学习紫光同创FPGA——PGL22G开发板之按键(二)

    一、按键 1、实验目的 机械式弹片按键,在按或松开时会有机械抖动,导致在按
    发表于 06-15 14:38

    紫光同创国产FPGA教程】【PGC1/2KG第二】LED 流水灯实验例程

    适用于板卡型号: 紫光同创PGC1/2KG开发平台(盘古1K/2K) 一:盘古1K/2K开发板(紫光同创PGC2KG开发平台)简介 盘古1/2K 开发板是一套基于
    发表于 08-09 11:58

    紫光同创国产FPGA教程】【PGC1/2KG第三】键控彩灯实验例程

    demo源文件) 顶层文件源码 按键控制模块 按键 LED控制模块 实验现象
    发表于 08-09 17:15

    数字信号处理 第六章

    数字信号处理 第六章
    发表于 10-19 09:34 4次下载
    数字信号处理 <b class='flag-5'>第六章</b>

    静噪基础第六章_EMI静噪滤波器

    静噪基础第六章,EMI静噪滤波器
    发表于 01-24 16:25 4次下载