导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[wzhauto]请教一个用vhdl编写按键去抖动的问题



No.83582
作者:wzhauto
邮件:wzhauto@126.com
ID:39559
登陆:3次
文章数:2篇
最后登陆IP:202.114.106.32
最后登陆:2005/9/13 11:11:59
注册:2005/8/25 14:40:24
财富:112
发帖时间:2005/9/12 23:00:19
发贴者IP:202.114.106.32
标题:wzhauto:请教一个用vhdl编写按键去抖动的问题
摘要:No.83582请教一个用vhdl编写按键去抖动的问题 
普通的cpu中,直接利用sleep之类的语句就可以直接延时去抖动
但是在cpld中,我却碰到了问题,想请教一下各位
问题如下(使用的芯片是altera公司的max7000s系列芯片,芯片型号为7128slc84):
我的程序中,clk3是按键的输入信号
                 clk2是一个标准的200赫兹输入信号,希望利用这个来计20ms的延时时间

  我希望的判断方法:
      当接受到第一个clk3=1时,延时20ms,延时以后,再判断此时clk3是否仍为1
      如果此时clk3为1,则说明这个脉冲是真脉冲,加counter9
      如果此时clk3不为1,则说明这个脉冲只是按键的毛刺,此时延时用的计数器清零,等待下一个clk3=1,再触发延时用的计数器。


关于这部分的程序如下:
……
architecture rtl of clk_div728 is
   signal   read_key:integer :=0;  
   signal  timer_en:integer :=0 ; 
   signal   counter4:integer:=0;
……
   p2: process(clk2)
        variable counter25:integer range 0 to 63;
  
     begin
          if (clk2'event and clk2='1' and timer_en=1) then  
              counter4  <=counter4+1;   
 elsif (clk2'event and clk2='1' and timer_en=0) then
  counter4  <=0;
 else 
  counter4  <=counter4;
 end if; 

     end process p2;

-----------------------------------------------------------------
 read_key  <=1 when counter4=4 else 0;
---------------------------------------------------------------

p3:process(clk3)

begin
 i ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:13毫秒 最大:78531毫秒 查询6次