奋斗的小孩 发表于 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 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]
查看完整版本: 单独按键消抖