新闻  |   论坛  |   博客  |   在线研讨会
关于xilinx官方消抖例程的看法
502593045 | 2011-11-05 18:38:50    阅读:4633   发布文章

 最近开始学习ISE。软件版本ISE Design Suit 13.2,系统XP。

首先打开软件Help->Xilinx on the web->Tutorials,会在软件中出现xilinx的帮助页面。然后下载这个软件的相关手册和例程等资料。

这是一个秒表的实例。其中debounce.v文件是软件实现按键消抖。程序不长,在此贴出:

`timescale 1ns / 1ps

module debounce(

    input sig_in,

    input clk,

    output sig_out

    );

   reg [2:0] q;

 

   always @ (posedge clk)

         q <= {q[1:0], sig_in};

   assign sig_out = q[0] & q[1] & !q[2];

                           

endmodule

 

我用modelsim做了个仿真,如下图:

从图中可以看出,只要在某个clk的上升沿sig_in为低电平,且之后连续有两个clk上升沿检测到sig_in是高电平就被认为是按键按下一次。这个,我觉得是不合理的。因为偶尔一个低电平干扰信号都有可能被认为是按键被按下。一般按键消抖,需要使按键信号保持足够长时间的低电平才算是按键被按下。关于按键消抖网上有许多的例子。

不知道我的想法对不对,贴出来欢迎指正。

 

附上我写的debounce测试文件:
debounce_tb.zip


2011.11.5
话说这个消抖程序居然来自ISE软件的Language Template

不过我仍然怀疑它的消抖能力。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
虾虽在江湖,江湖却没有关于虾的传说!
推荐文章
最近访客