"); //-->
首先打开软件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
不过我仍然怀疑它的消抖能力。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。