集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3910|回复: 9

单独按键消抖

[复制链接]
奋斗的小孩 发表于 2016-7-17 10:50:46 | 显示全部楼层 |阅读模式
module key_filter(clk, rst_n, key_n, click_n);

        parameter MASK_TIME = 100;

        input clk;
        input rst_n;
        input key_n;
        output reg click_n;
       
        localparam s0 = 1'b0;
        localparam s1 = 1'b1;
       
        reg temp;
        reg [31:0] count;
        reg state;
       
        always @ (posedge clk, negedge rst_n)
        begin
                if (!rst_n)
                        begin
                                count <= 0;
                                click_n <= 1;
                                temp <= 1;
                                state <= s0;
                        end
                else
                        case (state)
                                s0        :        if (key_n == temp)
                                                        state <= s0;
                                                else
                                                        begin
                                                                temp <= key_n;
                                                                state <= s1;
                                                        end
                                                       
                                s1        :        if (key_n == temp)
                                                        if (count < MASK_TIME)
                                                                begin
                                                                        count <= count + 1;
                                                                        state <= s1;
                                                                end
                                                        else
                                                                begin
                                                                        click_n <= temp;
                                                                        count <= 0;
                                                                        state <= s0;
                                                                end
                                                else
                                                        begin
                                                                count <= 0;
                                                                temp <= key_n;
                                                                state <= s1;
                                                        end
                        endcase
        end

endmodule
 楼主| 奋斗的小孩 发表于 2016-7-17 10:51:02 | 显示全部楼层
奋斗的小孩
zxopen08 发表于 2016-8-13 17:15:26 | 显示全部楼层
单独按键消抖
Sure 发表于 2016-8-14 16:11:40 | 显示全部楼层
               感谢分享
辉煌 发表于 2016-8-21 11:40:11 | 显示全部楼层
感谢分享         
Esmiamor 发表于 2016-8-21 16:52:34 | 显示全部楼层
             支持。
辉煌 发表于 2016-8-30 09:27:24 | 显示全部楼层
单独按键消抖
4798345 发表于 2017-3-11 09:13:57 | 显示全部楼层
66666666666666666666666666
星坠天际 发表于 2017-3-11 11:41:58 | 显示全部楼层

单独按键消抖
fpga_feixiang 发表于 2023-11-21 14:19:22 | 显示全部楼层
6                        
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-23 11:46 , Processed in 0.063085 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表