按键消抖法1:debounce2(格式不同,实质一样)
来源:互联网 发布:dvr监控软件下载 编辑:程序博客网 时间:2024/06/01 22:57
module Debounce #
(parameter KEY_WIDTH = 1,//按键个数
parameter CNT_NUM = 19'd240000 //20ms的计数
)
(
input clk, //system clock
input rst_n, //system reset
input [KEY_WIDTH-1:0] key, //button input,按键输入
output reg [KEY_WIDTH-1:0] key_edge, //按键消抖
output wire[KEY_WIDTH-1:0] key_pulse, //Debounce pulse output ,按键脉冲输出
output reg [KEY_WIDTH-1:0] key_state, //Debounce state output,按键状态输出
output [10:0] empty
);
assign empty = 11'h7ff;
reg [KEY_WIDTH-1:0] key_r,key_r_pre;
always @(posedge clk or negedge rst_n)
if (!rst_n) begin
key_r <= {KEY_WIDTH{1'b1}};
key_r_pre<= {KEY_WIDTH{1'b1}};
end
else begin
key_r <= key;key_r_pre <= key_r;
end
//Detect the edge of key_n
wire key_edge = (key_r == key_r_pre)? 1'b0:1'b1;reg [18:0] cnt;
//Count when a edge of key_n is occured
always @(posedge clk or negedge rst_n)
if (!rst_n) cnt <= 19'd0;
else if(key_edge) cnt <=19'd0;
else cnt <= cnt + 1'b1;
//Sample key_jit when cnt count to CNT_NUM(20ms)
always @(posedge clk or negedge rst_n)
if (!rst_n) key_sec<= {KEY_WIDTH{1'b1}};
else if (cnt == CNT_NUM-1) key_sec<= key;
reg [KEY_WIDTH-1:0] key_sec_pre;
//Register key_jit_r, lock key_jit to next clk
always @(posedge clk or negedge rst_n)
if (!rst_n) key_sec_pre <= {KEY_WIDTH{1'b1}};
else key_sec_pre <= key_sec;
assign key_pulse = key_sec_pre & ( ~key_sec);
always @(posedge clk or negedge rst_n)
if (!rst_n) key_state <= {KEY_WIDTH{1'b1}};
else if(key_pulse) key_state <= key_state ^ key_pulse;// a异或1=~a
else key_state <= key_state;endmodule
阅读全文
0 0
- 按键消抖法1:debounce2(格式不同,实质一样)
- 按键消抖法1:debounce1
- x&(x-1)的实质
- 按键驱动程序(1)
- new Date()不同日期格式结果不同
- navigationBar 与 statusBar 格式 一样
- 不同格式证书导入keystore方法(1)
- H5处理不同支持格式(audio)
- 有时候东西是一样的,内容是一样的,实质是一样的, 只不过改变了表现的方式,就会改善很大效果。
- 判断两个字符串中出现的字符是否完全一样(顺序可以不同)
- 不同的商品,条码一样怎么录入?
- 不同种类代理服务器作用是一样的
- android按键驱动开发实例1(修改一个按键)
- 外部中断(按键1)
- iOS多线程编程和内存管理----Block的实质的研究(1)
- 声卡的操作实质剖析1
- Bytes("ISO8859-1"),"GBK")的实质
- RecyleView显示格式不同
- PX4源码分析7_添加mavlink自定义消息
- 虚析构函数
- css选择器
- FAFU OJ 今年暑假不ac
- Java学习笔记(基础部分)--环境变量的配置
- 按键消抖法1:debounce2(格式不同,实质一样)
- 第八天总结
- 【树形dp】POJ
- Truck History (并查集)
- mysql 备份与恢复
- 夜间模式1
- Struts1和Spring的整合
- POJ 3684 Physics Experiment——弹性碰撞
- 【转】【Unity3D】利用预设、实例化Instantiate和协程完成生成器