当前位置: 首页 > news >正文

南京建设网站企业泊头市建设网站

南京建设网站企业,泊头市建设网站,开拓网站建设,装饰设计师培训文章目录 基于FPGA的按键消抖一、按键消抖原理二、按键消抖代码三、仿真代码编写四#xff1a;总结 基于FPGA的按键消抖 一、按键消抖原理 按键抖动#xff1a;按键抖动通常的按键所用开关为机械弹性开关#xff0c;当机械触点断开、闭合时#xff0c;由于机械触点的弹性… 文章目录 基于FPGA的按键消抖一、按键消抖原理二、按键消抖代码三、仿真代码编写四总结 基于FPGA的按键消抖 一、按键消抖原理 按键抖动按键抖动通常的按键所用开关为机械弹性开关当机械触点断开、闭合时由于机械触点的弹性作用一个按键开关在闭合时不会马上稳定地接通在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动。当按下一次按键可能在A点检测到一次低电平在B点检测到一次高电平在C点又检测到一次低电平。同时抖动是随机不可测的。那么按下一次按键抖动可能会误以为按下多次按键。 按键原理图 按键默认为低电平有效高电平无效 1.按键消抖目的消除按键抖动对我们程序的影响。 2.按键消抖解决方案1延迟采样。延迟一定时间取样去除没有抖动时的稳定值 3.按键消抖解决方案2信号变化频率平稳后并且持续20ms则采样。 这里我们采用第二种方式第二种方式相对于第一种方式更加稳定效果也会更好。 二、按键消抖代码 key_debounce.v // ----------------------------------------------------------------------------- // Copyright (c) 2014-2023 All rights reserved // ----------------------------------------------------------------------------- // Author : 辣子鸡味的橘子331197689qq.com // File : key_debounce.v // Create : 2023-07-14 10:36:44 // Revise : 2023-07-14 10:36:44 // Editor : sublime text4, tab size (4) // ----------------------------------------------------------------------------- module key_debounce(input wire clk,input wire rst_n,input wire[3:0] key_in,//四个按键信号输入output reg[3:0] key_out//四个按键信号消抖输出 );parameter TIME_20MS 1000_000; reg[19:0] cnt;//20ms计数器 wire add_cnt;//计数开始 wire ent_cnt;//计数终止 wire nedge;//下降沿检测reg[3:0] key_in_r0;//同步key_in输入信号 reg[3:0] key_in_r1;//延迟一个周期 reg[3:0] key_in_r2;//延迟两个周期reg flag;//消抖开始标志信号//计数器模块当addent满足时开始计数,检测到下降沿重新计数end_ent满足时停止计数消抖完成 always (posedge clk or negedge rst_n) beginif(~rst_n) begincnt20d0;endelse if(add_cnt)beginif(ent_cnt)begincnt20d0;endelse if(nedge)begincnt20d0;endelse begincntcnt1;endendelse begincntcnt;end endassign add_cnt flag;//计数开始条件 assign end_cnt (cnt TIME_20MS - 1)add_cnt;//终止结束条件当满足计时到20ms且满足计时条件时成立//信号延时模块 always (posedge clk or negedge rst_n) beginif(~rst_n) beginkey_in_r04b1111;key_in_r14b1111;key_in_r24b1111;endelse beginkey_in_r0key_in;key_in_r1key_in_r0;key_in_r2key_in_r1;end end//检测下降沿当任意一个按键出现下降沿都会被检测到 assign nedge (~key_in_r1[0]key_in_r2[0])||(~key_in_r1[1]key_in_r2[1])||(~key_in_r1[2]key_in_r2[2])||(~key_in_r1[3]key_in_r2[3]);//消抖开始模块 always (posedge clk or negedge rst_n) beginif(~rst_n) beginflag1b0;endelse if(nedge)begin//当出现下降沿开始消抖flag1b1;endelse if(end_cnt)begin//当end_cnt满足时停止消抖flag1b0;endelse beginflagflag;end end//输出信号赋值模块,当消抖完毕标志按键按下出现一个脉冲信号表示按键按下 always (posedge clk or negedge rst_n) beginif(~rst_n) beginkey_out4b1111;//默认为高电平endelse if(end_cnt)beginkey_outkey_in;//稳定信号赋值endelse beginkey_out4b1111;//其他信号默认为高电平end endendmodule三、仿真代码编写 timescale 1ns/1ns module key_debounce_tb(); reg clk; reg rst_n; reg[3:0] key;wire[3:0] key_r; parameter SYS_CLK 20; parameter TIME 100; always #(SYS_CLK/2) clk ~clk; initial beginclk1b0;rst_n1b0;#(2*SYS_CLK);rst_n1b1;key 4b1111;#(2*SYS_CLK10);repeat (39) beginkey[0] ~key[0];#(2*SYS_CLK);endkey[0] 1b0;#(1100*SYS_CLK);$stop; end key_debounce #(.TIME_20MS(TIME)) inst_key_debounce (.clk (clk),.rst_n (rst_n),.key_in (key),.key_out (key_r));endmodule 仿真时序图 四总结 其实别小看这个按键消抖里面的细节有很多自己之前尝试书写但是却没能达到想要的效果。特别是如何重新计数哪里确实困扰住了我后面重新学习后完成了自己的效果希望对你有所帮助。
http://www.pierceye.com/news/391830/

相关文章:

  • 前端跟后端哪个就业难北京网站建设seo优化
  • 简述网站开发建设的基本流程做一个京东这样的网站需要多少钱
  • 与通信工程专业做项目的网站微信开发显示wordpress
  • 自己做链接网站萍乡做网站哪家好
  • 做网站最适合用多大的图片医院 网站建设 新闻
  • 网站开发职业分析产品展示的手机网站
  • 精通网站建设pdf网上自学电脑课程
  • 一站式网站建设业务沈阳网站建设 熊掌号
  • 58同城网站建设目的劳务公司怎么注册需要什么要求
  • 龙华网站建设设计公司国家中小学智慧教育平台
  • 摄影网站采用照片做宣传_版权费是多少?pythom+网站开发规范
  • 免费制作一个自己的网站吗达内教育口碑怎么样
  • 2015做那个网站能致富网站建设模板ppt模板
  • 网站后台管理系统教程自助网站建设程序
  • 做黑帽需不需要搭建网站没有做等保的网站不能上线对吗
  • 怎么在微信建立公众号郑州专业seo首选
  • 万网网站后台国家域名
  • 怎么做 niche网站临港注册公司优惠政策
  • 做网站开发怎么做网站推广的步骤
  • 网站空间文件删不掉软文免费发布平台
  • 电子商务网站开发教程论文推广app平台有哪些
  • 郑州专业的网站建设优化自己的网站
  • 申请渠道门户网站是什么意思微信公众平台推广网站
  • 公司网站未备案公众号如何推广产品
  • 网站建设服务器环境配置郑州网站建设企业名录
  • e福州官方网站wordpress注册目录
  • 国际外贸网络交易平台网页seo搜索引擎优化
  • 做网做网站建设网站建设图片怎么切
  • 国外数码印花图案设计网站36kr wordpress
  • 上海网站建设设计公司zencart 网站入侵