FPGA开发中按键消抖与单脉冲发生器电路_第1页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、fpga开发中按键消抖与单脉冲发生器电路开发中常用到单脉冲发生器。一些文章介绍过产生单脉冲的,产生的单脉冲脉宽和相位都不能与时钟同步,只能用在要求不严格的场合。笔者目前从事的课题中需要一个与时钟周期等宽,相位与时钟周期相同的键控单脉冲发生器。键控单脉冲发生器需要按键产生单脉冲,但大多数带有fpga芯片的开发板提供的是高频时钟脉冲,按键时会存在颤动问题。为此笔者特地设计了按键消抖电路消退颤动,为产生单脉冲提供稳定的按键信号。1 按键消抖电路原理为了使按键消抖电路模块简洁,移植性好,在此用计数器的方式实现按键消抖的功能。计数器模值n按照颤动信号的脉冲宽度和采样脉冲信号clk的周期大小打算。计数模值

2、n=延时脉冲信号采样周期。普通按键颤动时光为510 ms,甚至更长。笔者用的开发板提供的系统时钟为24 mhz,按公式计算,当计数器模值取20位,计数到219即h8 0000时,大约延时22 ms。计数期间认为是按键的颤动信号,不做采样;计数器停止计数,认为采样信号为稳定按键信号。这样就可以把按键时光小于22 ms的颤动信号滤掉。引入一个采样脉冲信号clk,并输入按键信号key。key输入低电平,计数器开头做加法计数,当计数到h8 0000即计数器中最高位q19为1,计数器停止计数,输出q19,作为按键的稳定输出,计数期间q19输出为0;key输入高电平,计数器清零,q19输出为0。所以该电路

3、需按键22 ms才会得到有效信号。2 键控单脉冲发生器电路原理键控单脉冲发生器利用上述电路解决按键消抖问题,得到稳定的信号。用两个d触发器和一个与门产生单脉冲,1所示。d触发器u2a收到稳定信号d1=1后被触发。触发器u2a中的q1端得到与clk同步的正向脉冲。输出q1到d触发器u3a,得到比q1延迟一个时钟周期的的正向脉冲,将q2端输出取反得到一个负向脉冲。q1与qn2的输出作为一个与门的输入,会输出一个脉宽是原时钟周期2倍的单脉冲。为了使得出的单脉冲脉宽与时钟周期相等,相位与时钟周期相同,对图1中电路设计做了改进,2所示。图2中时钟送入d触发器前加了非门,使q1端产生与nclk(clk的反

4、向脉冲信号)同步的正向脉冲,与门输出单脉冲与clk差半个时钟周期,作为d触发器u4a的输入d4,在clk升高沿u4a被触发,使单脉冲脉宽与时钟周期相同,实现了等脉宽。并延迟了半个时钟周期使输出脉冲与时钟周期对应,实现了相位调节。囫囵单脉冲发生器的时序图3所示(图3中的t1,t2是随意键按下与键抬起时刻)。3 基于fpga下的按键消抖计数器和单脉冲发生器的 hdl语言描述图1中的按键消抖计数器电路,其举行描述的verilog hdl语言代码如下:代码中的复位n_rst和按键n_kd都是低电平有效。键控单脉冲发生器的verilog hdl语言代码如下:代码中还用到了d触发器dff,实现这个模块的代码比较容易,此处从略。4 结 语该文中的设计,实现了键控单脉冲发生器,产生脉宽等于时钟脉冲,输出脉冲与时钟周期对应的单脉冲,并解决了按键消抖问题,可以应用到各种需要产生单脉冲的fpga电路设计中。按键消抖电路可自立地应用于其他fpga电路设计中。本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论